Thanks Christian for the quick reply! much appreciated.

It was installed using easy_install under Ubuntu.

On Friday, June 9, 2017 at 5:38:11 PM UTC-7, Christian Hammond wrote:
>
> Hi Kevin,
>
> I actually don't believe this is related in this case. It looks like the 
> extension packaging stage is trying to locate the lessc path relative to 
> Review Board, which is not correct. It should be locating it from the 
> extension package. It sets the path prior to building the extension to the 
> place in your tree, which, based on that output, should be populated...
>
> I have to run right now, but let me play around with this when I get back 
> and see if I can reproduce this.
>
> In the meantime, how do you install Review Board? Are you using 
> easy_install or yum?
>
> Christian
>
> On Fri, Jun 9, 2017 at 5:34 PM, Kevin Yu <sams...@gmail.com <javascript:>> 
> wrote:
>
>> I just saw on 
>> https://www.reviewboard.org/docs/manual/dev/extending/extensions/static-files/,
>>  
>> it says
>>
>> Static bundles are packaged along with your extension automatically. You 
>> don’t have to do anything special. You will, however, need some node.js 
>> <https://nodejs.org/> dependencies in order to package static media 
>> bundles.
>>
>> *If you’re running Review Board 2.5.7+, these dependencies will be 
>> installed for you when you begin to build the package.*
>>
>> *If you’re running an older version, you will need to manually install 
>> them yourself. First, make sure you have a modern version of node.js 
>> installed and then run:*
>>
>> $ sudo npm install -g less uglifyjs
>>
>> I am wondering if this is related...
>>
>> On Friday, June 9, 2017 at 4:41:10 PM UTC-7, Kevin Yu wrote:
>>>
>>> On our server, we had reviewboard core 2.5.6.1 running with our own 
>>> extension. it was all fine until we recently upgraded reviewboard core to 
>>> 2.5.12. After the upgrade, we can't run python setup.py -v build anymore... 
>>> The error is as follows:
>>> devops@Reviewboard-Test-trunk:/tmp/ReviewBoardExt$ python setup.py -v 
>>> build
>>> running build
>>> running build_py
>>> running build_static_files
>>> Installing node packages...
>>> npm http GET https://registry.npmjs.org/uglifyjs/2.4.10
>>> npm http GET https://registry.npmjs.org/less/2.7.1
>>> npm http 304 https://registry.npmjs.org/less/2.7.1
>>> npm http 304 https://registry.npmjs.org/uglifyjs/2.4.10
>>> npm WARN deprecated uglifyjs@2.4.10: uglifyjs is deprecated - use 
>>> uglify-js instead.
>>> npm WARN engine less@2.7.1: wanted: {"node":">=0.12"} (current: 
>>> {"node":"v0.10.25","npm":"1.3.10"})
>>> npm http GET https://registry.npmjs.org/source-map/0.1.34
>>> npm http GET https://registry.npmjs.org/yargs
>>> npm http GET https://registry.npmjs.org/async
>>> npm http GET https://registry.npmjs.org/uglify-to-browserify
>>> npm http 304 https://registry.npmjs.org/source-map/0.1.34
>>> npm http 304 https://registry.npmjs.org/yargs
>>> npm http 304 https://registry.npmjs.org/async
>>> npm http 304 https://registry.npmjs.org/uglify-to-browserify
>>> npm http GET https://registry.npmjs.org/amdefine
>>> npm http 304 https://registry.npmjs.org/amdefine
>>> npm http GET https://registry.npmjs.org/errno
>>> npm http GET https://registry.npmjs.org/graceful-fs
>>> npm http GET https://registry.npmjs.org/image-size
>>> npm http GET https://registry.npmjs.org/mime
>>> npm http GET https://registry.npmjs.org/mkdirp
>>> npm http GET https://registry.npmjs.org/promise
>>> npm http GET https://registry.npmjs.org/source-map
>>> npm http 304 https://registry.npmjs.org/errno
>>> npm http 304 https://registry.npmjs.org/graceful-fs
>>> npm http 304 https://registry.npmjs.org/image-size
>>> npm http 304 https://registry.npmjs.org/mime
>>> npm http 304 https://registry.npmjs.org/promise
>>> npm http 304 https://registry.npmjs.org/source-map
>>> npm http 304 https://registry.npmjs.org/mkdirp
>>> npm http GET https://registry.npmjs.org/prr
>>> npm http 304 https://registry.npmjs.org/prr
>>> npm http GET https://registry.npmjs.org/minimist/0.0.8
>>> npm http 304 https://registry.npmjs.org/minimist/0.0.8
>>> npm http GET https://registry.npmjs.org/asap
>>> npm http 304 https://registry.npmjs.org/asap
>>> uglifyjs@2.4.10 node_modules/uglifyjs
>>> ├── uglify-to-browserify@1.0.2
>>> ├── async@0.2.10
>>> ├── yargs@1.3.3
>>> └── source-map@0.1.34 (amdefine@1.0.1)
>>>
>>> less@2.7.1 node_modules/less
>>> ├── graceful-fs@4.1.11
>>> ├── mime@1.3.6
>>> ├── image-size@0.5.4
>>> ├── errno@0.1.4 (prr@0.0.0)
>>> ├── mkdirp@0.5.1 (minimist@0.0.8)
>>> ├── promise@7.1.1 (asap@2.0.5)
>>> └── source-map@0.5.6
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/css/rev_req_det.less'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/js/views/account_handler.js'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/js/views/branch_builds.js'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/js/views/bootstrap.js'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/js/views/apprreqView.js'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/js/views/test_cvrg_rprt.js'
>>> Copying 
>>> '/tmp/ReviewBoardExt/fortinet/static/js/views/ftnchkHoldItView.js'
>>> Copying 
>>> '/tmp/ReviewBoardExt/fortinet/static/js/views/sel_rqst_4_det_copy.js'
>>> Copying 
>>> '/tmp/ReviewBoardExt/fortinet/static/js/views/approval_status_View.js'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/js/views/dashboard.js'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/js/views/rqst_descr.js'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/js/views/cm_portalView.js'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/Remove.png'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/fortinet.png'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/forti...@2x.png'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/d...@2x.png'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/teamlead.png'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/favicon_notify.png'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/Create.png'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/ftnt.ico'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/u...@2x.png'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/shipit-grey.png'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/teaml...@2x.png'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/Up.png'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/Bottom.png'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/bot...@2x.png'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/stop16.png'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/cre...@2x.png'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/rem...@2x.png'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/shipit.png'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/shi...@2x.png'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/sto...@2x.png'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/Down.png'
>>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/shipit-g...@2x.png'
>>> Traceback (most recent call last):
>>>   File "setup.py", line 27, in <module>
>>>     'evolutions/*.*',
>>>   File 
>>> "/usr/local/lib/python2.7/dist-packages/ReviewBoard-2.5.12-py2.7.egg/reviewboard/extensions/packaging.py",
>>>  
>>> line 48, in setup
>>>     setuptools_setup(**setup_kwargs)
>>>   File "/usr/lib/python2.7/distutils/core.py", line 151, in setup
>>>     dist.run_commands()
>>>   File "/usr/lib/python2.7/distutils/dist.py", line 953, in run_commands
>>>     self.run_command(cmd)
>>>   File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
>>>     cmd_obj.run()
>>>   File "/usr/lib/python2.7/distutils/command/build.py", line 128, in run
>>>     self.run_command(cmd_name)
>>>   File "/usr/lib/python2.7/distutils/cmd.py", line 326, in run_command
>>>     self.distribution.run_command(command)
>>>   File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
>>>     cmd_obj.run()
>>>   File 
>>> "/usr/local/lib/python2.7/dist-packages/Djblets-0.9.7-py2.7.egg/djblets/extensions/packaging.py",
>>>  
>>> line 422, in run
>>>     self.run_command('build_static_files')
>>>   File "/usr/lib/python2.7/distutils/cmd.py", line 326, in run_command
>>>     self.distribution.run_command(command)
>>>   File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
>>>     cmd_obj.run()
>>>   File 
>>> "/usr/local/lib/python2.7/dist-packages/Djblets-0.9.7-py2.7.egg/djblets/extensions/packaging.py",
>>>  
>>> line 290, in run
>>>     self._build_static_media(extension)
>>>   File 
>>> "/usr/local/lib/python2.7/dist-packages/Djblets-0.9.7-py2.7.egg/djblets/extensions/packaging.py",
>>>  
>>> line 360, in _build_static_media
>>>     call_command('collectstatic', interactive=False, verbosity=2)
>>>   File 
>>> "/usr/local/lib/python2.7/dist-packages/Django-1.6.11-py2.7.egg/django/core/management/__init__.py",
>>>  
>>> line 159, in call_command
>>>     return klass.execute(*args, **defaults)
>>>   File 
>>> "/usr/local/lib/python2.7/dist-packages/Django-1.6.11-py2.7.egg/django/core/management/base.py",
>>>  
>>> line 285, in execute
>>>     output = self.handle(*args, **options)
>>>   File 
>>> "/usr/local/lib/python2.7/dist-packages/Django-1.6.11-py2.7.egg/django/core/management/base.py",
>>>  
>>> line 415, in handle
>>>     return self.handle_noargs(**options)
>>>   File 
>>> "/usr/local/lib/python2.7/dist-packages/Django-1.6.11-py2.7.egg/django/contrib/staticfiles/management/commands/collectstatic.py",
>>>  
>>> line 173, in handle_noargs
>>>     collected = self.collect()
>>>   File 
>>> "/usr/local/lib/python2.7/dist-packages/Django-1.6.11-py2.7.egg/django/contrib/staticfiles/management/commands/collectstatic.py",
>>>  
>>> line 119, in collect
>>>     for original_path, processed_path, processed in processor:
>>>   File 
>>> "/usr/local/lib/python2.7/dist-packages/django_pipeline-1.3.27-py2.7.egg/pipeline/storage.py",
>>>  
>>> line 32, in post_process
>>>     packager.pack_stylesheets(package)
>>>   File 
>>> "/usr/local/lib/python2.7/dist-packages/django_pipeline-1.3.27-py2.7.egg/pipeline/packager.py",
>>>  
>>> line 94, in pack_stylesheets
>>>     variant=package.variant, **kwargs)
>>>   File 
>>> "/usr/local/lib/python2.7/dist-packages/django_pipeline-1.3.27-py2.7.egg/pipeline/packager.py",
>>>  
>>> line 103, in pack
>>>     paths = self.compile(package.paths, force=True)
>>>   File 
>>> "/usr/local/lib/python2.7/dist-packages/django_pipeline-1.3.27-py2.7.egg/pipeline/packager.py",
>>>  
>>> line 97, in compile
>>>     return self.compiler.compile(paths, force=force)
>>>   File 
>>> "/usr/local/lib/python2.7/dist-packages/django_pipeline-1.3.27-py2.7.egg/pipeline/compilers/__init__.py",
>>>  
>>> line 55, in compile
>>>     return list(executor.map(_compile, paths))
>>>   File 
>>> "/usr/local/lib/python2.7/dist-packages/futures-3.0.5-py2.7.egg/concurrent/futures/_base.py",
>>>  
>>> line 581, in result_iterator
>>>     yield future.result()
>>>   File 
>>> "/usr/local/lib/python2.7/dist-packages/futures-3.0.5-py2.7.egg/concurrent/futures/_base.py",
>>>  
>>> line 405, in result
>>>     return self.__get_result()
>>>   File 
>>> "/usr/local/lib/python2.7/dist-packages/futures-3.0.5-py2.7.egg/concurrent/futures/thread.py",
>>>  
>>> line 55, in run
>>>     result = self.fn(*self.args, **self.kwargs)
>>>   File 
>>> "/usr/local/lib/python2.7/dist-packages/django_pipeline-1.3.27-py2.7.egg/pipeline/compilers/__init__.py",
>>>  
>>> line 40, in _compile
>>>     outdated=outdated, force=force)
>>>   File 
>>> "/usr/local/lib/python2.7/dist-packages/django_pipeline-1.3.27-py2.7.egg/pipeline/compilers/less.py",
>>>  
>>> line 22, in compile_file
>>>     return self.execute_command(command, cwd=dirname(infile))
>>>   File 
>>> "/usr/local/lib/python2.7/dist-packages/django_pipeline-1.3.27-py2.7.egg/pipeline/compilers/__init__.py",
>>>  
>>> line 99, in execute_command
>>>     raise CompilerError(stderr)
>>> pipeline.exceptions.CompilerError: /bin/sh: 1: 
>>> /usr/local/lib/python2.7/dist-packages/ReviewBoard-2.5.12-py2.7.egg/reviewboard/../node_modules/less/bin/lessc:
>>>  
>>> not found
>>>
>>> The path it tries to find lessc seems wrong as well. the lessc should be 
>>> in /usr/local/bin/lessc.
>>>
>>> Has anyone run into the same issue?
>>>
>> -- 
>> Supercharge your Review Board with Power Pack: 
>> https://www.reviewboard.org/powerpack/
>> Want us to host Review Board for you? Check out RBCommons: 
>> https://rbcommons.com/
>> Happy user? Let us know! https://www.reviewboard.org/users/
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "reviewboard" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to reviewboard...@googlegroups.com <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
>
> -- 
> Christian Hammond
> President/CEO of Beanbag <https://www.beanbaginc.com/>
> Makers of Review Board <https://www.reviewboard.org/>
>

-- 
Supercharge your Review Board with Power Pack: 
https://www.reviewboard.org/powerpack/
Want us to host Review Board for you? Check out RBCommons: 
https://rbcommons.com/
Happy user? Let us know! https://www.reviewboard.org/users/
--- 
You received this message because you are subscribed to the Google Groups 
"reviewboard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to reviewboard+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to