Actually,adding pipeline_settings.PIPELINE_LESS_BINARY and
pipeline_settings.PIPELINE_UGLIFYJS_BINARY to packaging.py is not nesessary.
Without these settings the default pipeline setting will be
used,('/usr/bin/env lessc','/usr/bin/env uglifyjs') and it has less and
uglify execs.
so the only need to remove these attributes from ReviewBoard settings.
On Tuesday, June 13, 2017 at 12:19:24 PM UTC-7, Alexander Galperin wrote:
>
> Thank you Christian,
> Definitely these 2 statements are needed. But it still did not worked
> I found that these values overwritten in a loop in the
> packaging.py/_build_static_media(extention),because ReviewBoard settings,
> has attributes PIPELINE_LESS_BINARY and PIPELINE_UGLIFYJS_BINARY:
> from pipeline.conf import settings as pipeline_settings
>
> for key in six.iterkeys(pipeline_settings.__dict__):
> if hasattr(settings, key):
> setattr(pipeline_settings, key, getattr(settings, key))
>
> So, I
> modified
> /usr/local/lib/python2.7/dist-packages/ReviewBoard-2.5.12.dev0-py2.7.egg/reviewboard/settings.py,
>
> by removing these 2 attributes, and it works now:
> # Static media setup
> from reviewboard.staticbundles import PIPELINE_CSS, PIPELINE_JS
>
> NODE_PATH = os.path.join(REVIEWBOARD_ROOT, '..', 'node_modules')
>
> # PIPELINE_LESS_BINARY = os.path.join(NODE_PATH, 'less', 'bin', 'lessc')
> # PIPELINE_UGLIFYJS_BINARY = os.path.join(NODE_PATH, 'uglifyjs', 'bin',
> # 'uglifyjs')
>
>
>
> On Monday, June 12, 2017 at 6:13:39 PM UTC-7, Christian Hammond wrote:
>>
>> I think I see where the problem is. I'm confused as to why I'm not
>> hitting the same failure case, but I honestly don't have a lot of time to
>> dig into it right now.
>>
>> In install_pipeline_deps, try doing:
>>
>> pipeline_settings.LESS_BINARY = \
>> os.path.join(node_modules_dir, 'less', 'bin', 'lessc')
>> pipeline_settings.PIPELINE_LESS_BINARY = \
>> pipeline_settings.LESS_BINARY
>>
>> ...
>>
>> pipeline_settings.UGLIFYJS_BINARY = \
>> os.path.join(node_modules_dir, 'uglifyjs', 'bin',
>> 'uglifyjs')
>> pipeline_settings.PIPELINE_UGLIFYJS_BINARY = \
>> pipeline_settings.UGLIFYJS_BINARY
>>
>>
>> (Adding the second statement in each batch)
>>
>> See if that gets you any further.
>>
>> Christian
>>
>> On Mon, Jun 12, 2017 at 6:03 PM, Alexander Galperin <
>> [email protected]> wrote:
>>
>>> Set in packaging.py:
>>> # Collect and process all static media files.
>>> * print 'PIPELINE_LESS_BINARY1 =
>>> {}'.format(pipeline_settings.LESS_BINARY)*
>>> * print 'PIPELINE_UGLIFYJS_BINARY1 =
>>> {}'.format(pipeline_settings.UGLIFYJS_BINARY)*
>>> call_command('collectstatic', interactive=False, verbosity=2)
>>>
>>> Output is good:
>>> PIPELINE_LESS_BINARY1 =
>>> /src2/rb-extension-pack/fortinet/build/node_modules/less/bin/lessc
>>> PIPELINE_UGLIFYJS_BINARY1 =
>>> /src2/rb-extension-pack/fortinet/build/node_modules/uglifyjs/bin/uglifyjs
>>>
>>>
>>> On Monday, June 12, 2017 at 5:51:13 PM UTC-7, Alexander Galperin wrote:
>>>>
>>>> Set print
>>>> in /usr/local/lib/python2.7/dist-packages/pipeline/compressors/uglifyjs.py:
>>>> class UglifyJSCompressor(SubProcessCompressor):
>>>> def compress_js(self, js):
>>>> *print 'PIPELINE_SETTING_UGLIFYJS_BINARY =
>>>> {}'.format(settings.PIPELINE_UGLIFYJS_BINARY)*
>>>> command = '%s %s' % (settings.PIPELINE_UGLIFYJS_BINARY,
>>>> settings.PIPELINE_UGLIFYJS_ARGUMENTS)
>>>> if self.verbose:
>>>> command += ' --verbose'
>>>> return self.execute_command(command, js)
>>>> output:
>>>> PIPELINE_SETTING_UGLIFYJS_BINARY = /usr/local/lib/python2.7/dist-
>>>> packages/ReviewBoard-2.5.12.dev0-py2.7.egg/reviewboard/../node_modules/
>>>> uglifyjs/bin/uglifyjs
>>>> And it takes from 'settings', which probably is wrong
>>>>
>>>> I will try to stop in call_command
>>>>
>>>>
>>>> On Monday, June 12, 2017 at 5:37:29 PM UTC-7, Christian Hammond wrote:
>>>>>
>>>>> Can you also try placing debugging output right before the
>>>>> "call_command('collectstatic', ...)" command in _build_static_media?
>>>>>
>>>>> Along with this, try printing `command` in pipeline/compilers/less.py
>>>>> (pipeline will be another module in site-packages somewhere, perhaps
>>>>> under
>>>>> a django-pipeline-* directory).
>>>>>
>>>>> Christian
>>>>>
>>>>> On Mon, Jun 12, 2017 at 5:22 PM, Alexander Galperin <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> I've put some print in packaging.py to help debugging. Here's what I
>>>>>> have changed:
>>>>>> def install_pipeline_deps(self, extension, css_bundles, js_bundles):
>>>>>> ...
>>>>>> ...
>>>>>> with open(package_file, 'w') as fp:
>>>>>> fp.write(json.dumps(
>>>>>> {
>>>>>> 'name': '%s-extension' %
>>>>>> os.path.basename(os.getcwd()),
>>>>>> 'private': 'true',
>>>>>> 'devDependencies': {},
>>>>>> 'dependencies': dependencies,
>>>>>> },
>>>>>> indent=2))
>>>>>>
>>>>>> old_cwd = os.getcwd()
>>>>>> os.chdir(build_dir)
>>>>>> * print 'PIPELINE_LESS_BINARY =
>>>>>> {}'.format(pipeline_settings.LESS_BINARY)*
>>>>>> * print 'PIPELINE_UGLIFYJS_BINARY =
>>>>>> {}'.format(pipeline_settings.UGLIFYJS_BINARY)*
>>>>>> self.npm_install()
>>>>>>
>>>>>> And the output is:
>>>>>> PIPELINE_LESS_BINARY = /src2/rb-extension-pack/fortinet/build/
>>>>>> node_modules/less/bin/lessc
>>>>>> PIPELINE_UGLIFYJS_BINARY = /src2/rb-extension-pack/fortinet/build/
>>>>>> node_modules/uglifyjs/bin/uglifyjs
>>>>>>
>>>>>> Also build/node_modules.. created in extention directory, so the path
>>>>>> is correct at this point
>>>>>>
>>>>>> On Monday, June 12, 2017 at 5:17:15 PM UTC-7, Christian Hammond wrote:
>>>>>>>
>>>>>>> Hi Kevin,
>>>>>>>
>>>>>>> printing in settings.py won't tell you anything of value. Those are
>>>>>>> the correct locations at the time that settings.py loaded, but they're
>>>>>>> overridden during the packaging process. The locations mentioned in my
>>>>>>> previous e-mail are where that happens. Solving this will require
>>>>>>> narrowing
>>>>>>> down the locations where the path is correct and where it's incorrect
>>>>>>> in
>>>>>>> that process.
>>>>>>>
>>>>>>> Christian
>>>>>>>
>>>>>>> On Mon, Jun 12, 2017 at 2:49 PM, Kevin Yu <[email protected]> wrote:
>>>>>>>
>>>>>>>> Hi Christian,
>>>>>>>>
>>>>>>>> Thanks for trying out. I also did some debugging to see if I can
>>>>>>>> find any information. I added some print in the settings.py
>>>>>>>>
>>>>>>>> PIPELINE_LESS_BINARY = os.path.join(NODE_PATH, 'less', 'bin',
>>>>>>>> 'lessc')
>>>>>>>> PIPELINE_UGLIFYJS_BINARY = os.path.join(NODE_PATH, 'uglifyjs',
>>>>>>>> 'bin',
>>>>>>>> 'uglifyjs')
>>>>>>>> print 'PIPELINE_UGLIFYJS_BINARY =
>>>>>>>> {}'.format(PIPELINE_UGLIFYJS_BINARY)
>>>>>>>> print 'PIPELINE_LESS_BINARY = {}'.format(PIPELINE_LESS_BINARY)
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> And this is what I see in the log:
>>>>>>>>
>>>>>>>> [Mon Jun 12 14:47:50.821618 2017] [:error] [pid 12918:tid
>>>>>>>> 140227234481920] PIPELINE_UGLIFYJS_BINARY =
>>>>>>>> /usr/local/lib/python2.7/dist-packages/ReviewBoard-2.5.12-py2.7.egg/reviewboard/../node_modules/uglifyjs/bin/uglifyjs
>>>>>>>> [Mon Jun 12 14:47:50.821692 2017] [:error] [pid 12918:tid
>>>>>>>> 140227234481920] PIPELINE_LESS_BINARY =
>>>>>>>> /usr/local/lib/python2.7/dist-packages/ReviewBoard-2.5.12-py2.7.egg/reviewboard/../node_modules/less/bin/lessc
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Saturday, June 10, 2017 at 1:43:26 AM UTC-7, Christian Hammond
>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>> Right. We override this though in djblets/extensions/packaging.py
>>>>>>>>> in install_pipeline_deps(). We compute the path to the extension's
>>>>>>>>> node_modules and its lessc, and we set that in settings.
>>>>>>>>>
>>>>>>>>> I tested locally and it's performing as expected for me. Review
>>>>>>>>> Board's lessc isn't being used, but the extension's is. So
>>>>>>>>> something's
>>>>>>>>> going wrong here with the paths.
>>>>>>>>>
>>>>>>>>> How comfortable are you debugging Python? I'm curious as to
>>>>>>>>> whether pipeline_settings.LESS_BINARY in install_pipeline_deps() is
>>>>>>>>> being
>>>>>>>>> correctly set.
>>>>>>>>>
>>>>>>>>> Christian
>>>>>>>>>
>>>>>>>>> On Fri, Jun 9, 2017 at 5:51 PM, Kevin Yu <[email protected]>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> 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.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> 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.
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> 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.
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> 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.
>>>
>>
>>
>>
>> --
>> 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.