Great! We'll get this into the next release. Christian
On Wed, Jun 14, 2017 at 11:15 AM, Kevin Yu <[email protected]> wrote: > 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.revie >> wboard.org/r/9014/ >> >> Christian >> >> On Tue, Jun 13, 2017 at 4:04 PM, Christian Hammond < >> [email protected]> 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]> 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/fortin >>>>>>> et/build/node_modules/less/bin/lessc >>>>>>> PIPELINE_UGLIFYJS_BINARY1 = /src2/rb-extension-pack/fortin >>>>>>> et/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/di >>>>>>>> st-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/../no >>>>>>>> de_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_B >>>>>>>>>>>> INARY) >>>>>>>>>>>> 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_mo >>>>>>>>>>>> dules/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_mo >>>>>>>>>>>> dules/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/ugl >>>>>>>>>>>>>>>>>> ify-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/ugl >>>>>>>>>>>>>>>>>> ify-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-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/us >>>>>>>>>>>>>>>>> ers/ >>>>>>>>>>>>>>>>> --- >>>>>>>>>>>>>>>>> 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. >>>> >>> >>> >>> >>> -- >>> 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. > -- 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.
