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 <[email protected]> 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 [email protected]: uglifyjs is deprecated - use
>> uglify-js instead.
>> npm WARN engine [email protected]: 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
>> [email protected] node_modules/uglifyjs
>> ├── [email protected]
>> ├── [email protected]
>> ├── [email protected]
>> └── [email protected] ([email protected])
>>
>> [email protected] node_modules/less
>> ├── [email protected]
>> ├── [email protected]
>> ├── [email protected]
>> ├── [email protected] ([email protected])
>> ├── [email protected] ([email protected])
>> ├── [email protected] ([email protected])
>> └── [email protected]
>> 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/ftnchkHoldItVi
>> ew.js'
>> Copying '/tmp/ReviewBoardExt/fortinet/static/js/views/sel_rqst_4_det
>> _copy.js'
>> Copying '/tmp/ReviewBoardExt/fortinet/static/js/views/approval_statu
>> s_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/[email protected]'
>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/[email protected]'
>> 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/[email protected]'
>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/shipit-grey.png'
>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/[email protected]'
>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/Up.png'
>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/Bottom.png'
>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/[email protected]'
>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/stop16.png'
>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/[email protected]'
>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/[email protected]'
>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/shipit.png'
>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/[email protected]'
>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/[email protected]'
>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/Down.png'
>> Copying '/tmp/ReviewBoardExt/fortinet/static/images/[email protected]'
>> 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-py
>> 2.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 [email protected].
> 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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to