dcodeIO/ClosureCompiler.js

Bundled JRE build error on Ubuntu 12.04

Closed this issue · 10 comments

Error trying to use the bundled JRE on Ubuntu Linux 12.04 with Node 0.8.24 and 0.10.4:

npm http GET https://registry.npmjs.org/closurecompiler
npm http GET https://registry.npmjs.org/send
npm http 200 https://registry.npmjs.org/url
npm http GET https://registry.npmjs.org/url/-/url-0.7.9.tgz
npm http 200 https://registry.npmjs.org/closurecompiler
npm http GET https://registry.npmjs.org/closurecompiler/-/closurecompiler-1.1.0.tgz
npm http 200 https://registry.npmjs.org/url/-/url-0.7.9.tgz
npm WARN package.json url@0.7.9 No README.md file found!
npm http 200 https://registry.npmjs.org/closurecompiler/-/closurecompiler-1.1.0.tgz
npm http 200 https://registry.npmjs.org/send
npm http GET https://registry.npmjs.org/querystring
npm http GET https://registry.npmjs.org/punycode
npm http GET https://registry.npmjs.org/fresh/0.1.0
npm http GET https://registry.npmjs.org/debug
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/mime/1.2.6
npm http 200 https://registry.npmjs.org/querystring
npm http GET https://registry.npmjs.org/sleep
npm http GET https://registry.npmjs.org/closurecompiler-externs
npm http GET https://registry.npmjs.org/tar
npm http GET https://registry.npmjs.org/querystring/-/querystring-0.1.0.tgz
npm http 200 https://registry.npmjs.org/range-parser/0.0.4
npm http 200 https://registry.npmjs.org/punycode
npm http 200 https://registry.npmjs.org/fresh/0.1.0
npm http GET https://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz
npm http GET https://registry.npmjs.org/fresh/-/fresh-0.1.0.tgz
npm http GET https://registry.npmjs.org/punycode/-/punycode-1.0.0.tgz
npm http 200 https://registry.npmjs.org/debug
npm http 304 https://registry.npmjs.org/tar
npm http 200 https://registry.npmjs.org/mime/1.2.6
npm http GET https://registry.npmjs.org/mime/-/mime-1.2.6.tgz
npm http 200 https://registry.npmjs.org/querystring/-/querystring-0.1.0.tgz
npm http 200 https://registry.npmjs.org/closurecompiler-externs
npm http GET https://registry.npmjs.org/closurecompiler-externs/-/closurecompiler-externs-1.0.0.tgz
npm http 200 https://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz
npm http 200 https://registry.npmjs.org/sleep
npm http GET https://registry.npmjs.org/sleep/-/sleep-1.1.0.tgz
npm http 200 https://registry.npmjs.org/fresh/-/fresh-0.1.0.tgz
npm http 200 https://registry.npmjs.org/punycode/-/punycode-1.0.0.tgz
npm http 200 https://registry.npmjs.org/mime/-/mime-1.2.6.tgz
npm http 200 https://registry.npmjs.org/closurecompiler-externs/-/closurecompiler-externs-1.0.0.tgz
npm http 200 https://registry.npmjs.org/sleep/-/sleep-1.1.0.tgz
> sleep@1.1.0 preinstall /var/www/PeerCDN/node_modules/closurecompiler/node_modules/sleep
> node build.js

npm http GET https://registry.npmjs.org/fstream
npm http GET https://registry.npmjs.org/inherits
npm http GET https://registry.npmjs.org/block-stream
npm http 304 https://registry.npmjs.org/fstream
npm http 304 https://registry.npmjs.org/block-stream
npm http 304 https://registry.npmjs.org/inherits
npm http GET https://registry.npmjs.org/rimraf
npm http GET https://registry.npmjs.org/graceful-fs
npm http GET https://registry.npmjs.org/mkdirp
npm http 304 https://registry.npmjs.org/rimraf
npm http GET https://registry.npmjs.org/rimraf/-/rimraf-2.1.4.tgz
npm http 304 https://registry.npmjs.org/graceful-fs
npm http 304 https://registry.npmjs.org/mkdirp
npm http 200 https://registry.npmjs.org/rimraf/-/rimraf-2.1.4.tgz
Nothing to clean (project not configured)
Setting srcdir to                        : /var/www/PeerCDN/node_modules/closurecompiler/node_modules/sleep 
Setting blddir to                        : /var/www/PeerCDN/node_modules/closurecompiler/node_modules/sleep/build 
Checking for program g++ or c++          : /usr/bin/g++ 
Checking for program cpp                 : /usr/bin/cpp 
Checking for program ar                  : /usr/bin/ar 
Checking for program ranlib              : /usr/bin/ranlib 
Checking for g++                         : ok  
Checking for node path                   : not found 
Checking for node prefix                 : ok /usr 
'configure' finished successfully (0.358s)
Waf: Entering directory `/var/www/PeerCDN/node_modules/closurecompiler/node_modules/sleep/build'
[1/2] cxx: sleep.cc -> build/Release/sleep_1.o
[2/2] cxx_link: build/Release/sleep_1.o -> build/Release/sleep.node
Waf: Leaving directory `/var/www/PeerCDN/node_modules/closurecompiler/node_modules/sleep/build'
'build' finished successfully (1.903s)

npm WARN prefer global closurecompiler@1.1.0 should be installed with -g

> closurecompiler@1.1.0 postinstall /var/www/PeerCDN/node_modules/closurecompiler
> npm run-script configure

> closurecompiler@1.1.0 configure /var/www/PeerCDN/node_modules/closurecompiler
> node scripts/configure.js

Configuring ClosureCompiler.js 1.1.0 ...

  Downloading http://closure-compiler.googlecode.com/files/compiler-latest.tar.gz ...
  | 0 / 5 mb
  | 1 / 5 mb
  | 2 / 5 mb
  | 3 / 5 mb
  | 4 / 5 mb
  | 5 / 5 mb
  ��� Download complete: /var/www/PeerCDN/node_modules/closurecompiler/compiler/compiler.tar.gz (5 mb)

  Unpacking /var/www/PeerCDN/node_modules/closurecompiler/compiler/compiler.tar.gz ...
  | compiler.jar
  | COPYING
  | README
  ��� Unpack complete.

  Configuring JRE ...
  ��� Global Java not found, we need to download the bundled JRE ...
    Downloading http://bundled-openjdk-jre.googlecode.com/files/OpenJDK-JRE-7u6_24.tar.gz ...
    | 0 / 43 mb
    | 1 / 43 mb
    | 2 / 43 mb
    | 3 / 43 mb
    | 4 / 43 mb
    | 5 / 43 mb
    | 6 / 43 mb
    | 7 / 43 mb
    | 8 / 43 mb
    | 9 / 43 mb
    | 10 / 43 mb
    | 11 / 43 mb
    | 12 / 43 mb
    | 13 / 43 mb
    | 14 / 43 mb
    | 15 / 43 mb
    | 16 / 43 mb
    | 17 / 43 mb
    | 18 / 43 mb
    | 19 / 43 mb
    | 20 / 43 mb
    | 21 / 43 mb
    | 22 / 43 mb
    | 23 / 43 mb
    | 24 / 43 mb
    | 25 / 43 mb
    | 26 / 43 mb
    | 27 / 43 mb
    | 28 / 43 mb
    | 29 / 43 mb
    | 30 / 43 mb
    | 31 / 43 mb
    | 32 / 43 mb
    | 33 / 43 mb
    | 34 / 43 mb
    | 35 / 43 mb
    | 36 / 43 mb
    | 37 / 43 mb
    | 38 / 43 mb
    | 39 / 43 mb
    | 40 / 43 mb
    | 41 / 43 mb
    | 42 / 43 mb
    | 43 / 43 mb
    ��� Download complete: /var/www/PeerCDN/node_modules/closurecompiler/jre/jre.tar.gz (43 mb)

      Unpacking /var/www/PeerCDN/node_modules/closurecompiler/jre/jre.tar.gz ...
      | ASSEMBLY_EXCEPTION
      | bin_linux/
      | bin_linux/java
==========TRUNCATED==========
      | THIRD_PARTY_README
      ��� Unpack complete.

  Configuring bundled JRE for platform 'linux' ...
  | 0755 /var/www/PeerCDN/node_modules/closurecompiler/jre
  | /var/www/PeerCDN/node_modules/closurecompiler/jre/bin_linux -> /var/www/PeerCDN/node_modules/closurecompiler/jre/bin
  | 0755 /var/www/PeerCDN/node_modules/closurecompiler/jre/bin/java
  Complete.

  Testing bundled Java ...
  | exec /var/www/PeerCDN/node_modules/closurecompiler/jre/bin/java
  ��� Failed to call bundled java, trying global java instead ...
    | exec java

    ��� Failed to call global Java.

  ��� Unfortunately, ClosureCompiler.js could not be configured.
    See: https://github.com/dcodeIO/ClosureCompiler.js (create an issue maybe)

Thank you for submitting this! Can you try calling /var/www/PeerCDN/node_modules/closurecompiler/jre/bin/java manually to see what it actually does?

node_modules/closurecompiler/jre/bin/java doesn't exist! I think that after npm sees that the install script failed, it removes the whole node_modules/closurecompiler folder.

Yes, this might be. Maybe you can try this:
Download http://bundled-openjdk-jre.googlecode.com/files/OpenJDK-JRE-7u6_24.tar.gz and unpack
Rename bin_linux to bin, execute chmod 755 bin/java
Run ./bin/java

If you just want to make it work, you can also install Java on your machine so that a global Java is available. which is recommended, e.g. apt-get install openjdk-6-jre

As far as I can tell this is an error on the bundled JRE side, which is available only in ia32. I will look into this!

I followed your steps to manually download and run the JRE, and I get this error:

./bin/java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory

Also, my system is ia32, so that can't be the issue!

I was able to get it working by installing openjdk-7-jre, so no worries. I just thought it would be cleaner if my app could work with a simple npm install instead of requiring a system-wide JRE installation.

Yes, of course that's the expected behaviour. I will further investigate this issue on my Debian machines.

Thanks for the continued help. 👍

I've updated the package to 1.1.1 which now uses a platform specific JRE. However, I am not sure if this will fix the issue as it seems to be a linking error. I'd appreciate if you could test it :)

Will test this as soon as I get a chance.

Feross
feross.org

On Mon, Apr 22, 2013 at 4:40 AM, dcode notifications@github.com wrote:

I've updated the package to 1.1.1 which now uses a platform specific JRE.
However, I am not sure if this will fix the issue as it seems to be a
linking error. I'd appreciate if you could test it :)


Reply to this email directly or view it on GitHubhttps://github.com//issues/1#issuecomment-16779568
.

Just tested this out and it works now! Thanks 👍