Thank you very much Christian! I used your patch and can confirm it's working now!
Much appreciated On Tuesday, June 13, 2017 at 4:52:13 PM UTC-7, Christian Hammond wrote: > > The patch here should take care of this problem: > https://reviews.reviewboard.org/r/9014/ > > Christian > > On Tue, Jun 13, 2017 at 4:04 PM, Christian Hammond <[email protected] > <javascript:>> wrote: > >> We don't want to remove them, because it's important to use the ones >> specified by Review Board and not the system-provided ones. >> >> I have a repro case, so I'll dig into this. >> >> Christian >> >> On Tue, Jun 13, 2017 at 12:37 PM, Alexander Galperin < >> [email protected] <javascript:>> wrote: >> >>> 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] <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/> >> > > > > -- > 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.
