Looks like the path to the npm_modules are prepopulated based on the
following code in settings.py:
# Static media setup
if RUNNING_TEST:
PIPELINE_COMPILERS = []
else:
PIPELINE_COMPILERS = [
'djblets.pipeline.compilers.es6.ES6Compiler',
'djblets.pipeline.compilers.less.LessCompiler',
]
NODE_PATH = os.path.join(REVIEWBOARD_ROOT, '..', 'node_modules')
On Friday, June 9, 2017 at 5:44:51 PM UTC-7, Kevin Yu wrote:
>
> 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 <[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/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/[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-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 [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.