diff --git a/AUTHORS b/AUTHORS index 029ea23b575..a389d07ce48 100644 --- a/AUTHORS +++ b/AUTHORS @@ -319,3 +319,6 @@ Simon Sturmer Joel Brandt Marc Harter Nuno Job +Ben Kelly +Felix Böhm +Gabriel de Perthuis diff --git a/ChangeLog b/ChangeLog index 5bfc242ff75..03a7fdca0bf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,43 @@ -2012.06.25, Version 0.8.0 (stable) +2012.06.29, Version 0.8.1 (stable) + +* V8: upgrade to v3.11.10.12 + +* npm: upgrade to v1.1.33 + - Support for parallel use of the cache folder + - Retry on registry timeouts or network failures (Trent Mick) + - Reduce 'engines' failures to a warning + - Use new zsh completion if aviailable (Jeremy Cantrell) + +* Fix #3577 Un-break require('sys') + +* util: speed up formatting of large arrays/objects (Ben Noordhuis) + +* windows: make fs.realpath(Sync) work with UNC paths (Bert Belder) + +* build: fix --shared-v8 option (Ben Noordhuis) + +* doc: `detached` is a boolean (Andreas Madsen) + +* build: use proper python interpreter (Ben Noordhuis) + +* build: expand ~ in `./configure --prefix=~/a/b/c` (Ben Noordhuis) + +* build: handle CC env var with spaces (Gabriel de Perthuis) + +* build: fix V8 build when compiling with gcc 4.5 (Ben Noordhuis) + +* build: fix --shared-v8 option (Ben Noordhuis) + +* windows msi: Fix icon issue which caused huge file size (Bert Belder) + +* unix: assume that dlopen() may clobber dlerror() (Ben Noordhuis) + +* sunos: fix memory corruption bugs (Ben Noordhuis) + +* windows: better (f)utimes and (f)stat (Bert Belder) + + +2012.06.25, Version 0.8.0 (stable), 8b8a7a7f9b41e74e1e810d0330738ad06fc302ec * V8: upgrade to v3.11.10.10 diff --git a/configure b/configure index 1adfbdfc7ab..d324696f40d 100755 --- a/configure +++ b/configure @@ -65,20 +65,43 @@ parser.add_option("--shared-v8-libname", dest="shared_v8_libname", help="Alternative lib name to link to (default: 'v8')") +parser.add_option("--shared-openssl", + action="store_true", + dest="shared_openssl", + help="Link to a shared OpenSSl DLL instead of static linking") + +parser.add_option("--shared-openssl-includes", + action="store", + dest="shared_openssl_includes", + help="Directory containing OpenSSL header files") + +parser.add_option("--shared-openssl-libpath", + action="store", + dest="shared_openssl_libpath", + help="A directory to search for the shared OpenSSL DLLs") + +parser.add_option("--shared-openssl-libname", + action="store", + dest="shared_openssl_libname", + help="Alternative lib name to link to (default: 'crypto,ssl')") + +# deprecated parser.add_option("--openssl-use-sys", action="store_true", - dest="openssl_use_sys", - help="Use the system OpenSSL instead of one included with Node") + dest="shared_openssl", + help=optparse.SUPPRESS_HELP) +# deprecated parser.add_option("--openssl-includes", action="store", - dest="openssl_includes", - help="A directory to search for the OpenSSL includes") + dest="shared_openssl_includes", + help=optparse.SUPPRESS_HELP) +# deprecated parser.add_option("--openssl-libpath", action="store", - dest="openssl_libpath", - help="A directory to search for the OpenSSL libraries") + dest="shared_openssl_libpath", + help=optparse.SUPPRESS_HELP) parser.add_option("--no-ssl2", action="store_true", @@ -239,22 +262,16 @@ def host_arch(): def target_arch(): return host_arch() + def compiler_version(): - try: - proc = subprocess.Popen(CC.split() + ['-v'], stderr=subprocess.PIPE) - except OSError: - return (False, False, None) - lines = proc.communicate()[1].split('\n') - version_line = None - for i, line in enumerate(lines): - if 'version' in line: - version_line = line - if not version_line: - return (False, False, None) - version = version_line.split("version")[1].strip().split()[0].split(".") - if not version: - return (False, False, None) - return ('LLVM' in version_line, 'clang' in CC, tuple(version)) + proc = subprocess.Popen(CC.split() + ['--version'], stdout=subprocess.PIPE) + is_clang = 'clang' in proc.communicate()[0].split('\n')[0] + + proc = subprocess.Popen(CC.split() + ['-dumpversion'], stdout=subprocess.PIPE) + version = tuple(map(int, proc.communicate()[0].split('.'))) + + return (version, is_clang) + def configure_node(o): # TODO add gdb @@ -265,14 +282,14 @@ def configure_node(o): o['variables']['target_arch'] = options.dest_cpu or target_arch() o['default_configuration'] = 'Debug' if options.debug else 'Release' - is_llvm, is_clang, cc_version = compiler_version() + cc_version, is_clang = compiler_version() - # turn off strict aliasing if gcc >= 4.5.0 && < 4.6.0 unless it's clang + # turn off strict aliasing if gcc < 4.6.0 unless it's llvm-gcc # see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45883 # see http://code.google.com/p/v8/issues/detail?id=884 - no_strict_aliasing = (4,5,0) <= cc_version < (4,6,0) and not is_clang - o['variables']['node_no_strict_aliasing'] = int(no_strict_aliasing) - o['variables']['v8_no_strict_aliasing'] = int(no_strict_aliasing) + no_strict_aliasing = int(not(is_clang or cc_version >= (4,6,0))) + o['variables']['v8_no_strict_aliasing'] = no_strict_aliasing + o['variables']['node_no_strict_aliasing'] = no_strict_aliasing # clang has always supported -fvisibility=hidden, right? if not is_clang and cc_version < (4,0,0): @@ -290,6 +307,8 @@ def configure_node(o): else: o['variables']['node_use_dtrace'] = 'false' + if options.no_ifaddrs: + o['defines'] += ['SUNOS_NO_IFADDRS'] # By default, enable ETW on Windows. if sys.platform.startswith('win32'): @@ -331,35 +350,31 @@ def configure_v8(o): def configure_openssl(o): o['variables']['node_use_openssl'] = b(not options.without_ssl) + o['variables']['node_shared_openssl'] = b(options.shared_openssl) if options.without_ssl: return - if options.no_ifaddrs: - o['defines'] += ['SUNOS_NO_IFADDRS'] - if options.no_ssl2: o['defines'] += ['OPENSSL_NO_SSL2=1'] - if not options.openssl_use_sys: - o['variables']['node_shared_openssl'] = b(False) - else: - out = pkg_config('openssl') - (libs, cflags) = out if out else ('', '') + if options.shared_openssl: + (libs, cflags) = pkg_config('openssl') or ('-lssl -lcrypto', '') - if options.openssl_libpath: - o['libraries'] += ['-L%s' % options.openssl_libpath, '-lssl', '-lcrypto'] + if options.shared_openssl_libpath: + o['libraries'] += ['-L%s' % options.shared_openssl_libpath] + + if options.shared_openssl_libname: + libnames = options.shared_openssl_libname.split(',') + o['libraries'] += ['-l%s' % s for s in libnames] else: o['libraries'] += libs.split() - if options.openssl_includes: - o['include_dirs'] += [options.openssl_includes] + if options.shared_openssl_includes: + o['include_dirs'] += [options.shared_openssl_includes] else: o['cflags'] += cflags.split() - o['variables']['node_shared_openssl'] = b( - libs or cflags or options.openssl_libpath or options.openssl_includes) - output = { 'variables': {}, diff --git a/deps/npm/.npmignore b/deps/npm/.npmignore index 94dc33f0040..b1d9066bde9 100644 --- a/deps/npm/.npmignore +++ b/deps/npm/.npmignore @@ -1,16 +1,16 @@ *.swp -test/bin -test/output.log -test/packages/*/node_modules -test/packages/npm-test-depends-on-spark/which-spark.log -test/packages/test-package/random-data.txt -test/root -node_modules/ronn -node_modules/.bin npm-debug.log -./npmrc -.gitignore -release/ +/test/bin +/test/output.log +/test/packages/*/node_modules +/test/packages/npm-test-depends-on-spark/which-spark.log +/test/packages/test-package/random-data.txt +/test/root +/node_modules/ronn +/node_modules/tap +/node_modules/.bin +/npmrc +/release/ # don't need these in the npm package. html/*.png diff --git a/deps/npm/doc/cli/config.md b/deps/npm/doc/cli/config.md index 505b9bac9ee..537af5ca0ea 100644 --- a/deps/npm/doc/cli/config.md +++ b/deps/npm/doc/cli/config.md @@ -195,6 +195,27 @@ See also the `strict-ssl` config. The location of npm's cache directory. See `npm-cache(1)` +### cache-lock-stale + +* Default: 60000 (1 minute) +* Type: Number + +The number of ms before cache folder lockfiles are considered stale. + +### cache-lock-retries + +* Default: 10 +* Type: Number + +Number of times to retry to acquire a lock on cache folder lockfiles. + +### cache-lock-wait + +* Default: 10000 (10 seconds) +* Type: Number + +Number of ms to wait for cache lock files to expire. + ### cache-max * Default: Infinity @@ -266,6 +287,15 @@ set. The command to run for `npm edit` or `npm config edit`. +### engine-strict + +* Default: false +* Type: Boolean + +If set to true, then npm will stubbornly refuse to install (or even +consider installing) any package that claims to not be compatible with +the current Node.js version. + ### force * Default: false @@ -278,6 +308,38 @@ Makes various commands more forceful. * skips cache when requesting from the registry. * prevents checks against clobbering non-npm files. +### fetch-retries + +* Default: 2 +* Type: Number + +The "retries" config for the `retry` module to use when fetching +packages from the registry. + +### fetch-retry-factor + +* Default: 10 +* Type: Number + +The "factor" config for the `retry` module to use when fetching +packages. + +### fetch-retry-mintimeout + +* Default: 10000 (10 seconds) +* Type: Number + +The "minTimeout" config for the `retry` module to use when fetching +packages. + +### fetch-retry-maxtimeout + +* Default: 60000 (1 minute) +* Type: Number + +The "maxTimeout" config for the `retry` module to use when fetching +packages. + ### git * Default: `"git"` diff --git a/deps/npm/doc/cli/json.md b/deps/npm/doc/cli/json.md index 5f50cd2cfaa..b6bf89ca37f 100644 --- a/deps/npm/doc/cli/json.md +++ b/deps/npm/doc/cli/json.md @@ -453,8 +453,7 @@ Entries in `optionalDependencies` will override entries of the same name in ## engines -You can specify the version of -node that your stuff works on: +You can specify the version of node that your stuff works on: { "engines" : { "node" : ">=0.1.27 <0.1.30" } } @@ -470,6 +469,22 @@ are capable of properly installing your program. For example: { "engines" : { "npm" : "~1.0.20" } } +Note that, unless the user has set the `engine-strict` config flag, this +field is advisory only. + +## engineStrict + +If you are sure that your module will *definitely not* run properly on +versions of Node/npm other than those specified in the `engines` hash, +then you can set `"engineStrict": true` in your package.json file. +This will override the user's `engine-strict` config setting. + +Please do not do this unless you are really very very sure. If your +engines hash is something overly restrictive, you can quite easily and +inadvertently lock yourself into obscurity and prevent your users from +updating to new versions of Node. Consider this choice carefully. If +people abuse it, it will be removed in a future version of npm. + ## os You can specify which operating systems your diff --git a/deps/npm/html/api/bin.html b/deps/npm/html/api/bin.html index 03f32bb284e..4e62af70191 100644 --- a/deps/npm/html/api/bin.html +++ b/deps/npm/html/api/bin.html @@ -19,7 +19,7 @@

DESCRIPTION

This function should not be used programmatically. Instead, just refer to the npm.bin member.

- +