apidoc_sources = $(wildcard doc/api/*.markdown)
apidocs = $(addprefix out/,$(apidoc_sources:.markdown=.html)) \
- $(addprefix out/,$(apidoc_sources:.markdown=.json))
+ $(addprefix out/,$(apidoc_sources:.markdown=.json))
apidoc_dirs = out/doc out/doc/api/ out/doc/api/assets
@if [ "$(shell git status --porcelain | egrep -v '^\?\? ')" = "" ]; then \
exit 0 ; \
else \
- echo "" >&2 ; \
+ echo "" >&2 ; \
echo "The git repository is not clean." >&2 ; \
echo "Please commit changes before building release tarball." >&2 ; \
echo "" >&2 ; \
@if [ "$(DISTTYPE)" != "release" -o "$(RELEASE)" = "1" ]; then \
exit 0; \
else \
- echo "" >&2 ; \
+ echo "" >&2 ; \
echo "#NODE_VERSION_IS_RELEASE is set to $(RELEASE)." >&2 ; \
- echo "Did you remember to update src/node_version.h?" >&2 ; \
- echo "" >&2 ; \
+ echo "Did you remember to update src/node_version.h?" >&2 ; \
+ echo "" >&2 ; \
exit 1 ; \
fi
$(PKG): release-only
rm -rf $(PKGDIR)
rm -rf out/deps out/Release
- $(PYTHON) ./configure --dest-cpu=x64 --tag=$(TAG)
+ $(PYTHON) ./configure \
+ --dest-cpu=x64 \
+ --tag=$(TAG) \
+ --release-urlbase=$(RELEASE_URLBASE) \
+ $(CONFIG_FLAGS)
$(MAKE) install V=$(V) DESTDIR=$(PKGDIR)
SIGN="$(CODESIGN_CERT)" PKGDIR="$(PKGDIR)" bash tools/osx-codesign.sh
cat tools/osx-pkg.pmdoc/index.xml.tmpl \
ssh $(STAGINGSERVER) "touch staging/$(DISTTYPEDIR)/$(FULLVERSION)/doc.done"
$(TARBALL)-headers: config.gypi release-only
- $(PYTHON) ./configure --prefix=/ --dest-cpu=$(DESTCPU) --tag=$(TAG) $(CONFIG_FLAGS)
+ $(PYTHON) ./configure \
+ --prefix=/ \
+ --dest-cpu=$(DESTCPU) \
+ --tag=$(TAG) \
+ --release-urlbase=$(RELEASE_URLBASE) \
+ $(CONFIG_FLAGS)
HEADERS_ONLY=1 $(PYTHON) tools/install.py install '$(TARNAME)' '/'
find $(TARNAME)/ -type l | xargs rm # annoying on windows
tar -cf $(TARNAME)-headers.tar $(TARNAME)
$(BINARYTAR): release-only
rm -rf $(BINARYNAME)
rm -rf out/deps out/Release
- $(PYTHON) ./configure --prefix=/ --dest-cpu=$(DESTCPU) --tag=$(TAG) $(CONFIG_FLAGS)
+ $(PYTHON) ./configure \
+ --prefix=/ \
+ --dest-cpu=$(DESTCPU) \
+ --tag=$(TAG) \
+ --release-urlbase=$(RELEASE_URLBASE) \
+ $(CONFIG_FLAGS)
$(MAKE) install DESTDIR=$(BINARYNAME) V=$(V) PORTABLE=1
cp README.md $(BINARYNAME)
cp LICENSE $(BINARYNAME)
bench: bench-net bench-http bench-fs bench-tls
bench-http-simple:
- benchmark/http_simple_bench.sh
+ benchmark/http_simple_bench.sh
bench-idle:
$(NODE) benchmark/idle_server.js &
dest='tag',
help='custom build tag')
+parser.add_option('--release-urlbase',
+ action='store',
+ dest='release_urlbase',
+ help='Provide a custom URL prefix for the `process.release` properties '
+ '`sourceUrl` and `headersUrl`. When compiling a release build, this '
+ 'will default to https://iojs.org/download/release/')
+
parser.add_option('--v8-options',
action='store',
dest='v8_options',
else:
o['variables']['node_tag'] = ''
+ o['variables']['node_release_urlbase'] = options.release_urlbase or ''
+
if options.v8_options:
o['variables']['node_v8_options'] = options.v8_options.replace('"', '\\"')
target_arch: 'x64',
v8_use_snapshot: 'true' } }
+## process.release
+
+An Object containing metadata related to the current release, including URLs
+for the source tarball and headers-only tarball.
+
+`process.release` contains the following properties:
+
+* `name`: a string with a value that will always be `"io.js"` for io.js.
+* `sourceUrl`: a complete URL pointing to a _.tar.gz_ file containing the
+ source of the current release.
+* `headersUrl`: a complete URL pointing to a _.tar.gz_ file containing only
+ the header files for the current release. This file is significantly smaller
+ than the full source file and can be used for compiling add-ons against
+ io.js.
+* `libUrl`: a complete URL pointing to an _iojs.lib_ file matching the
+ architecture and version of the current release. This file is used for
+ compiling add-ons against io.js. _This property is only present on Windows
+ builds of io.js and will be missing on all other platforms._
+
+e.g.
+
+ { name: 'io.js',
+ sourceUrl: 'https://iojs.org/download/release/v2.3.5/iojs-v2.3.5.tar.gz',
+ headersUrl: 'https://iojs.org/download/release/v2.3.5/iojs-v2.3.5-headers.tar.gz',
+ libUrl: 'https://iojs.org/download/release/v2.3.5/win-x64/iojs.lib' }
+
+In custom builds from non-release versions of the source tree, only the
+`name` property may be present. The additional properties should not be
+relied upon to exist.
+
## process.kill(pid[, signal])
Send a signal to a process. `pid` is the process id and `signal` is the
'src/node_main.cc',
],
}],
+ [ 'node_release_urlbase!=""', {
+ 'defines': [
+ 'NODE_RELEASE_URLBASE="<(node_release_urlbase)"',
+ ]
+ }],
[ 'v8_enable_i18n_support==1', {
'defines': [ 'NODE_HAVE_I18N_SUPPORT=1' ],
'dependencies': [
"platform",
OneByteString(env->isolate(), NODE_PLATFORM));
+ // process.release
+ Local<Object> release = Object::New(env->isolate());
+ READONLY_PROPERTY(process, "release", release);
+ READONLY_PROPERTY(release, "name", OneByteString(env->isolate(), "io.js"));
+
+// if this is a release build and no explicit base has been set
+// substitute the standard release download URL
+#ifndef NODE_RELEASE_URLBASE
+# if NODE_VERSION_IS_RELEASE
+# define NODE_RELEASE_URLBASE "https://iojs.org/download/release/"
+# endif
+#endif
+
+#if defined(NODE_RELEASE_URLBASE)
+# define _RELEASE_URLPFX NODE_RELEASE_URLBASE "v" NODE_VERSION_STRING "/"
+# define _RELEASE_URLFPFX _RELEASE_URLPFX "iojs-v" NODE_VERSION_STRING
+
+ READONLY_PROPERTY(release,
+ "sourceUrl",
+ OneByteString(env->isolate(),
+ _RELEASE_URLFPFX ".tar.gz"));
+ READONLY_PROPERTY(release,
+ "headersUrl",
+ OneByteString(env->isolate(),
+ _RELEASE_URLFPFX "-headers.tar.gz"));
+# ifdef _WIN32
+ READONLY_PROPERTY(release,
+ "libUrl",
+ OneByteString(env->isolate(),
+ _RELEASE_URLPFX "win-" NODE_ARCH "/iojs.lib"));
+# endif
+#endif
+
// process.argv
Local<Array> arguments = Array::New(env->isolate(), argc);
for (int i = 0; i < argc; ++i) {
set noperfctr_msi_arg=
set i18n_arg=
set download_arg=
+set release_urls_arg=
:next-arg
if "%1"=="" goto args-done
if defined nosnapshot set snapshot_arg=--without-snapshot
if defined noetw set noetw_arg=--without-etw& set noetw_msi_arg=/p:NoETW=1
if defined noperfctr set noperfctr_arg=--without-perfctr& set noperfctr_msi_arg=/p:NoPerfCtr=1
+if defined RELEASE_URLBASE set release_urlbase_arg=--release-urlbase=%RELEASE_URLBASE%
if "%i18n_arg%"=="full-icu" set i18n_arg=--with-intl=full-icu
if "%i18n_arg%"=="small-icu" set i18n_arg=--with-intl=small-icu