diff options
-rw-r--r-- | Makefile | 131 | ||||
-rwxr-xr-x | configure | 6 | ||||
-rw-r--r-- | node.gyp | 5 | ||||
-rw-r--r-- | src/node_version.h | 15 | ||||
-rw-r--r-- | tools/msvs/msi/nodemsi.wixproj | 18 | ||||
-rwxr-xr-x | tools/msvs/msi/product.wxs | 4 | ||||
-rw-r--r-- | tools/osx-codesign.sh | 3 | ||||
-rw-r--r-- | tools/osx-pkg.pmdoc/01local.xml | 26 | ||||
-rw-r--r-- | tools/osx-pkg.pmdoc/02npm.xml | 25 | ||||
-rw-r--r-- | tools/osx-pkg.pmdoc/index.xml.tmpl | 42 | ||||
-rw-r--r-- | tools/osx-productsign.sh | 2 | ||||
-rw-r--r-- | vcbuild.bat | 93 |
12 files changed, 281 insertions, 89 deletions
@@ -5,6 +5,9 @@ PYTHON ?= python DESTDIR ?= SIGN ?= PREFIX ?= /usr/local +STAGINGSERVER ?= iojs-www + +OSTYPE := $(shell uname -s | tr '[A-Z]' '[a-z]') # Determine EXEEXT EXEEXT := $(shell $(PYTHON) -c \ @@ -56,7 +59,7 @@ uninstall: $(PYTHON) tools/install.py $@ '$(DESTDIR)' '$(PREFIX)' clean: - -rm -rf out/Makefile $(NODE_EXE) $(NODE_G_EXE) out/$(BUILDTYPE)/$(NODE_EXE) blog.html email.md + -rm -rf out/Makefile $(NODE_EXE) $(NODE_G_EXE) out/$(BUILDTYPE)/$(NODE_EXE) @if [ -d out ]; then find out/ -name '*.o' -o -name '*.a' | xargs rm -rf; fi -rm -rf node_modules @@ -64,7 +67,7 @@ distclean: -rm -rf out -rm -f config.gypi icu_config.gypi -rm -f config.mk - -rm -rf $(NODE_EXE) $(NODE_G_EXE) blog.html email.md + -rm -rf $(NODE_EXE) $(NODE_G_EXE) -rm -rf node_modules -rm -rf deps/icu -rm -rf deps/icu4c*.tgz deps/icu4c*.zip deps/icu-tmp @@ -184,14 +187,49 @@ docclean: RAWVER=$(shell $(PYTHON) tools/getnodeversion.py) VERSION=v$(RAWVER) + +# For nightly builds, you must set DISTTYPE to "nightly", "next-nightly" or +# "custom". For the nightly and next-nightly case, you need to set DATESTRING +# and COMMIT in order to properly name the build. +# For the rc case you need to set CUSTOMTAG to an appropriate CUSTOMTAG number + +ifndef DISTTYPE +DISTTYPE=release +endif +ifeq ($(DISTTYPE),release) FULLVERSION=$(VERSION) +else # ifeq ($(DISTTYPE),release) +ifeq ($(DISTTYPE),custom) +ifndef CUSTOMTAG +$(error CUSTOMTAG is not set for DISTTYPE=custom) +endif # ifndef CUSTOMTAG +TAG=$(CUSTOMTAG) +else # ifeq ($(DISTTYPE),custom) +ifndef DATESTRING +$(error DATESTRING is not set for nightly) +endif # ifndef DATESTRING +ifndef COMMIT +$(error COMMIT is not set for nightly) +endif # ifndef COMMIT +ifneq ($(DISTTYPE),nightly) +ifneq ($(DISTTYPE),next-nightly) +$(error DISTTYPE is not release, custom, nightly or next-nightly) +endif # ifneq ($(DISTTYPE),next-nightly) +endif # ifneq ($(DISTTYPE),nightly) +TAG=$(DISTTYPE)$(DATESTRING)$(COMMIT) +endif # ifeq ($(DISTTYPE),custom) +FULLVERSION=$(VERSION)-$(TAG) +endif # ifeq ($(DISTTYPE),release) + +DISTTYPEDIR ?= $(DISTTYPE) RELEASE=$(shell sed -ne 's/\#define NODE_VERSION_IS_RELEASE \([01]\)/\1/p' src/node_version.h) PLATFORM=$(shell uname | tr '[:upper:]' '[:lower:]') NPMVERSION=v$(shell cat deps/npm/package.json | grep '"version"' | sed 's/^[^:]*: "\([^"]*\)",.*/\1/') + ifeq ($(findstring x86_64,$(shell uname -m)),x86_64) DESTCPU ?= x64 else -DESTCPU ?= ia32 +DESTCPU ?= x86 endif ifeq ($(DESTCPU),x64) ARCH=x64 @@ -202,26 +240,24 @@ else ARCH=x86 endif endif -ifdef NIGHTLY -TAG = nightly-$(NIGHTLY) -FULLVERSION=$(VERSION)-$(TAG) + +# enforce "x86" over "ia32" as the generally accepted way of referring to 32-bit intel +ifeq ($(ARCH),ia32) +override ARCH=x86 endif +ifeq ($(DESTCPU),ia32) +override DESTCPU=x86 +endif + TARNAME=iojs-$(FULLVERSION) TARBALL=$(TARNAME).tar BINARYNAME=$(TARNAME)-$(PLATFORM)-$(ARCH) BINARYTAR=$(BINARYNAME).tar +# OSX doesn't have xz installed by default, http://macpkg.sourceforge.net/ XZ=$(shell which xz > /dev/null 2>&1; echo $$?) XZ_COMPRESSION ?= 9 -PKG=out/$(TARNAME).pkg +PKG=$(TARNAME).pkg PACKAGEMAKER ?= /Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker - -PKGSRC=iojs-$(DESTCPU)-$(RAWVER).tgz -ifdef NIGHTLY -PKGSRC=iojs-$(DESTCPU)-$(RAWVER)-$(TAG).tgz -endif - -dist: doc $(TARBALL) $(PKG) - PKGDIR=out/dist-osx release-only: @@ -236,7 +272,7 @@ release-only: echo "" >&2 ; \ exit 1 ; \ fi - @if [ "$(NIGHTLY)" != "" -o "$(RELEASE)" = "1" ]; then \ + @if [ "$(DISTTYPE)" != "release" -o "$(RELEASE)" = "1" ]; then \ exit 0; \ else \ echo "" >&2 ; \ @@ -246,29 +282,28 @@ release-only: exit 1 ; \ fi -pkg: $(PKG) - $(PKG): release-only rm -rf $(PKGDIR) rm -rf out/deps out/Release - $(PYTHON) ./configure --dest-cpu=ia32 --tag=$(TAG) - $(MAKE) install V=$(V) DESTDIR=$(PKGDIR)/32 - rm -rf out/deps out/Release $(PYTHON) ./configure --dest-cpu=x64 --tag=$(TAG) $(MAKE) install V=$(V) DESTDIR=$(PKGDIR) - SIGN="$(APP_SIGN)" PKGDIR="$(PKGDIR)" bash tools/osx-codesign.sh - lipo $(PKGDIR)/32/usr/local/bin/iojs \ - $(PKGDIR)/usr/local/bin/iojs \ - -output $(PKGDIR)/usr/local/bin/iojs-universal \ - -create - mv $(PKGDIR)/usr/local/bin/iojs-universal $(PKGDIR)/usr/local/bin/iojs - rm -rf $(PKGDIR)/32 - cat tools/osx-pkg.pmdoc/index.xml.tmpl | sed -e 's|__iojsversion__|'$(FULLVERSION)'|g' | sed -e 's|__npmversion__|'$(NPMVERSION)'|g' > tools/osx-pkg.pmdoc/index.xml + SIGN="$(CODESIGN_CERT)" PKGDIR="$(PKGDIR)" bash tools/osx-codesign.sh + cat tools/osx-pkg.pmdoc/index.xml.tmpl \ + | sed -E "s/\\{iojsversion\\}/$(FULLVERSION)/g" \ + | sed -E "s/\\{npmversion\\}/$(NPMVERSION)/g" \ + > tools/osx-pkg.pmdoc/index.xml $(PACKAGEMAKER) \ - --id "org.nodejs.Node" \ + --id "org.iojs.pkg" \ --doc tools/osx-pkg.pmdoc \ --out $(PKG) - SIGN="$(INT_SIGN)" PKG="$(PKG)" bash tools/osx-productsign.sh + SIGN="$(PRODUCTSIGN_CERT)" PKG="$(PKG)" bash tools/osx-productsign.sh + +pkg: $(PKG) + +pkg-upload: pkg + ssh $(STAGINGSERVER) "mkdir -p staging/$(DISTTYPEDIR)/$(FULLVERSION)" + scp -p iojs-$(FULLVERSION).pkg $(STAGINGSERVER):staging/$(DISTTYPEDIR)/$(FULLVERSION)/iojs-$(FULLVERSION).pkg + ssh $(STAGINGSERVER) "touch staging/$(DISTTYPEDIR)/$(FULLVERSION)/iojs-$(FULLVERSION).pkg.done" $(TARBALL): release-only $(NODE_EXE) doc git checkout-index -a -f --prefix=$(TARNAME)/ @@ -291,6 +326,20 @@ endif tar: $(TARBALL) +tar-upload: tar + ssh $(STAGINGSERVER) "mkdir -p staging/$(DISTTYPEDIR)/$(FULLVERSION)" + scp -p iojs-$(FULLVERSION).tar.gz $(STAGINGSERVER):staging/$(DISTTYPEDIR)/$(FULLVERSION)/iojs-$(FULLVERSION).tar.gz + ssh $(STAGINGSERVER) "touch staging/$(DISTTYPEDIR)/$(FULLVERSION)/iojs-$(FULLVERSION).tar.gz.done" +ifeq ($(XZ), 0) + scp -p iojs-$(FULLVERSION).tar.xz $(STAGINGSERVER):staging/$(DISTTYPEDIR)/$(FULLVERSION)/iojs-$(FULLVERSION).tar.xz + ssh $(STAGINGSERVER) "touch staging/$(DISTTYPEDIR)/$(FULLVERSION)/iojs-$(FULLVERSION).tar.xz.done" +endif + +doc-upload: tar + ssh $(STAGINGSERVER) "mkdir -p staging/$(DISTTYPEDIR)/$(FULLVERSION)" + scp -r out/doc/ $(STAGINGSERVER):staging/$(DISTTYPEDIR)/$(FULLVERSION)/ + ssh $(STAGINGSERVER) "touch staging/$(DISTTYPEDIR)/$(FULLVERSION)/doc.done" + $(BINARYTAR): release-only rm -rf $(BINARYNAME) rm -rf out/deps out/Release @@ -309,18 +358,14 @@ endif binary: $(BINARYTAR) -$(PKGSRC): release-only - rm -rf dist out - $(PYTHON) configure --prefix=/ \ - --dest-cpu=$(DESTCPU) --tag=$(TAG) $(CONFIG_FLAGS) - $(MAKE) install DESTDIR=dist - (cd dist; find * -type f | sort) > packlist - pkg_info -X pkg_install | \ - egrep '^(MACHINE_ARCH|OPSYS|OS_VERSION|PKGTOOLS_VERSION)' > build-info - pkg_create -B build-info -c tools/pkgsrc/comment -d tools/pkgsrc/description \ - -f packlist -I /opt/local -p dist -U $(PKGSRC) - -pkgsrc: $(PKGSRC) +binary-upload: binary + ssh $(STAGINGSERVER) "mkdir -p staging/$(DISTTYPEDIR)/$(FULLVERSION)" + scp -p iojs-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.gz $(STAGINGSERVER):staging/$(DISTTYPEDIR)/$(FULLVERSION)/iojs-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.gz + ssh $(STAGINGSERVER) "touch staging/$(DISTTYPEDIR)/$(FULLVERSION)/iojs-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.gz.done" +ifeq ($(XZ), 0) + scp -p iojs-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.xz $(STAGINGSERVER):staging/$(DISTTYPEDIR)/$(FULLVERSION)/iojs-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.xz + ssh $(STAGINGSERVER) "touch staging/$(DISTTYPEDIR)/$(FULLVERSION)/iojs-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.xz.done" +endif haswrk=$(shell which wrk > /dev/null 2>&1; echo $$?) wrk: @@ -26,7 +26,7 @@ import nodedownload parser = optparse.OptionParser() valid_os = ('win', 'mac', 'solaris', 'freebsd', 'openbsd', 'linux', 'android') -valid_arch = ('arm', 'arm64', 'ia32', 'mips', 'mipsel', 'x32', 'x64') +valid_arch = ('arm', 'arm64', 'ia32', 'mips', 'mipsel', 'x32', 'x64', 'x86') valid_arm_float_abi = ('soft', 'softfp', 'hard') valid_mips_arch = ('loongson', 'r1', 'r2', 'r6', 'rx') valid_mips_fpu = ('fp32', 'fp64', 'fpxx') @@ -607,6 +607,10 @@ def configure_node(o): host_arch = host_arch_win() if os.name == 'nt' else host_arch_cc() target_arch = options.dest_cpu or host_arch + # ia32 is preferred by the build tools (GYP) over x86 even if we prefer the latter + # the Makefile resets this to x86 afterward + if target_arch == 'x86': + target_arch = 'ia32' o['variables']['host_arch'] = host_arch o['variables']['target_arch'] = target_arch @@ -184,12 +184,15 @@ 'defines': [ 'NODE_ARCH="<(target_arch)"', 'NODE_PLATFORM="<(OS)"', - 'NODE_TAG="<(node_tag)"', 'NODE_V8_OPTIONS="<(node_v8_options)"', 'NODE_WANT_INTERNALS=1', ], + 'conditions': [ + [ 'node_tag!=""', { + 'defines': [ 'NODE_TAG="<(node_tag)"' ], + }], # No node_main.cc for anything except executable [ 'node_target_type!="executable"', { 'sources!': [ diff --git a/src/node_version.h b/src/node_version.h index 5601174a21..196d49be17 100644 --- a/src/node_version.h +++ b/src/node_version.h @@ -12,23 +12,18 @@ #define NODE_STRINGIFY_HELPER(n) #n #endif -#if NODE_VERSION_IS_RELEASE -# ifndef NODE_TAG +#ifndef NODE_TAG +# if NODE_VERSION_IS_RELEASE # define NODE_TAG "" -# endif -# define NODE_VERSION_STRING NODE_STRINGIFY(NODE_MAJOR_VERSION) "." \ - NODE_STRINGIFY(NODE_MINOR_VERSION) "." \ - NODE_STRINGIFY(NODE_PATCH_VERSION) \ - NODE_TAG -#else -# ifndef NODE_TAG +# else # define NODE_TAG "-pre" # endif +#endif + # define NODE_VERSION_STRING NODE_STRINGIFY(NODE_MAJOR_VERSION) "." \ NODE_STRINGIFY(NODE_MINOR_VERSION) "." \ NODE_STRINGIFY(NODE_PATCH_VERSION) \ NODE_TAG -#endif #define NODE_VERSION "v" NODE_VERSION_STRING diff --git a/tools/msvs/msi/nodemsi.wixproj b/tools/msvs/msi/nodemsi.wixproj index 4ca4d55682..03192bb1bc 100644 --- a/tools/msvs/msi/nodemsi.wixproj +++ b/tools/msvs/msi/nodemsi.wixproj @@ -6,7 +6,7 @@ <ProductVersion>3.5</ProductVersion> <ProjectGuid>{1d808ff0-b5a9-4be9-859d-b334b6f48be2}</ProjectGuid> <SchemaVersion>2.0</SchemaVersion> - <OutputName>iojs-v$(NodeVersion)-$(Platform)</OutputName> + <OutputName>iojs-v$(FullVersion)-$(Platform)</OutputName> <OutputType>Package</OutputType> <EnableProjectHarvesting>True</EnableProjectHarvesting> <WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath> @@ -14,25 +14,25 @@ <NodeVersion Condition=" '$(NodeVersion)' == '' ">0.0.0.0</NodeVersion> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> - <OutputPath>..\..\..\$(Configuration)\</OutputPath> + <OutputPath>..\..\..\</OutputPath> <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath> - <DefineConstants>Debug;ProductVersion=$(NodeVersion);NoETW=$(NoETW);NoPerfCtr=$(NoPerfCtr);NpmSourceDir=..\..\..\deps\npm\;ProgramFilesFolderId=ProgramFilesFolder</DefineConstants> + <DefineConstants>Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NoETW=$(NoETW);NoPerfCtr=$(NoPerfCtr);NpmSourceDir=..\..\..\deps\npm\;ProgramFilesFolderId=ProgramFilesFolder</DefineConstants> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> - <OutputPath>..\..\..\$(Configuration)\</OutputPath> + <OutputPath>..\..\..\</OutputPath> <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath> - <DefineConstants>Debug;ProductVersion=$(NodeVersion);NoETW=$(NoETW);NoPerfCtr=$(NoPerfCtr);NpmSourceDir=..\..\..\deps\npm\;ProgramFilesFolderId=ProgramFilesFolder</DefineConstants> + <DefineConstants>Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NoETW=$(NoETW);NoPerfCtr=$(NoPerfCtr);NpmSourceDir=..\..\..\deps\npm\;ProgramFilesFolderId=ProgramFilesFolder</DefineConstants> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> - <OutputPath>..\..\..\$(Configuration)\</OutputPath> + <OutputPath>..\..\..\</OutputPath> <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath> - <DefineConstants>Debug;ProductVersion=$(NodeVersion);NoETW=$(NoETW);NoPerfCtr=$(NoPerfCtr);NpmSourceDir=..\..\..\deps\npm\;ProgramFilesFolderId=ProgramFiles64Folder</DefineConstants> + <DefineConstants>Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NoETW=$(NoETW);NoPerfCtr=$(NoPerfCtr);NpmSourceDir=..\..\..\deps\npm\;ProgramFilesFolderId=ProgramFiles64Folder</DefineConstants> <Cultures>en-US</Cultures> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> - <OutputPath>..\..\..\$(Configuration)\</OutputPath> + <OutputPath>..\..\..\</OutputPath> <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath> - <DefineConstants>Debug;ProductVersion=$(NodeVersion);NoETW=$(NoETW);NoPerfCtr=$(NoPerfCtr);NpmSourceDir=..\..\..\deps\npm\;ProgramFilesFolderId=ProgramFiles64Folder</DefineConstants> + <DefineConstants>Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NoETW=$(NoETW);NoPerfCtr=$(NoPerfCtr);NpmSourceDir=..\..\..\deps\npm\;ProgramFilesFolderId=ProgramFiles64Folder</DefineConstants> </PropertyGroup> <PropertyGroup> <EnableProjectHarvesting>True</EnableProjectHarvesting> diff --git a/tools/msvs/msi/product.wxs b/tools/msvs/msi/product.wxs index 6ba74cb450..c90f77ce54 100755 --- a/tools/msvs/msi/product.wxs +++ b/tools/msvs/msi/product.wxs @@ -85,7 +85,7 @@ <Feature Level="1" Id="DocumentationShortcuts" Title="Online documentation shortcuts" - Description="Add start menu entries that link the the online documentation for io.js $(var.ProductVersion) and the io.js website."> + Description="Add start menu entries that link the the online documentation for io.js v$(var.FullVersion) and the io.js website."> <ComponentRef Id="DocumentationShortcuts"/> </Feature> @@ -225,7 +225,7 @@ Type="url"/> <util:InternetShortcut Id="DocsShortcut" Name="io.js documentation" - Target="https://iojs.org/dist/v$(var.ProductVersion)/doc/api/" + Target="https://iojs.org/download/$(var.DistTypeDir)/v$(var.FullVersion)/doc/api/" Type="url"/> </Component> </DirectoryRef> diff --git a/tools/osx-codesign.sh b/tools/osx-codesign.sh index 65a8d48b8a..5c2d1aff34 100644 --- a/tools/osx-codesign.sh +++ b/tools/osx-codesign.sh @@ -3,10 +3,9 @@ set -x set -e -if ! [ -n "$SIGN" ] && [ $STEP -eq 1 ]; then +if [ "X$SIGN" == "X" ]; then echo "No SIGN environment var. Skipping codesign." >&2 exit 0 fi codesign -s "$SIGN" "$PKGDIR"/usr/local/bin/node -codesign -s "$SIGN" "$PKGDIR"/32/usr/local/bin/node diff --git a/tools/osx-pkg.pmdoc/01local.xml b/tools/osx-pkg.pmdoc/01local.xml index 1d99404e49..4b09310659 100644 --- a/tools/osx-pkg.pmdoc/01local.xml +++ b/tools/osx-pkg.pmdoc/01local.xml @@ -1 +1,25 @@ -<pkgref spec="1.12" uuid="053587FE-BDF3-4EF5-815D-281427431048"><config><identifier>org.iojs.pkg</identifier><version>1.0</version><description></description><post-install type="none"/><requireAuthorization/><installFrom relative="true" mod="true">../out/dist-osx/usr/local/</installFrom><installTo mod="true" relocatable="true">/usr/local</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installTo.isRelativeType</mod><mod>installTo</mod><mod>locationType</mod><mod>relocatable</mod><mod>installFrom.path</mod><mod>installTo.isAbsoluteType</mod><mod>identifier</mod><mod>parent</mod><mod>installTo.path</mod><mod>installFrom.isRelativeType</mod></config></pkgref> +<pkgref spec="1.12" uuid="053587FE-BDF3-4EF5-815D-281427431048"> + <config> + <identifier>org.iojs.iojs.pkg</identifier> + <version>1.0</version> + <description></description> + <post-install type="none"/> + <requireAuthorization/> + <installFrom relative="true" mod="true">../out/dist-osx/usr/local/</installFrom> + <installTo mod="true" relocatable="true">/usr/local</installTo> + <flags> + <followSymbolicLinks/> + </flags> + <packageStore type="internal"></packageStore> + <mod>installTo.isRelativeType</mod> + <mod>installTo</mod> + <mod>locationType</mod> + <mod>relocatable</mod> + <mod>installFrom.path</mod> + <mod>installTo.isAbsoluteType</mod> + <mod>identifier</mod> + <mod>parent</mod> + <mod>installTo.path</mod> + <mod>installFrom.isRelativeType</mod> + </config> +</pkgref> diff --git a/tools/osx-pkg.pmdoc/02npm.xml b/tools/osx-pkg.pmdoc/02npm.xml index 06360b5df9..b9c82e9d95 100644 --- a/tools/osx-pkg.pmdoc/02npm.xml +++ b/tools/osx-pkg.pmdoc/02npm.xml @@ -1 +1,24 @@ -<pkgref spec="1.12" uuid="DF0233A3-6B5D-4FBF-8048-8FC57F42278F"><config><identifier>org.iojs.npm.pkg</identifier><version>1.0</version><description></description><post-install type="none"/><requireAuthorization/><installFrom relative="true">../deps/npm</installFrom><installTo mod="true">/usr/local/lib/node_modules/npm</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>installTo.path</mod><mod>installFrom.isRelativeType</mod><mod>installTo</mod><mod>scripts.postinstall.isRelativeType</mod><mod>parent</mod><mod>installTo.isAbsoluteType</mod></config><scripts><postinstall relative="true" mod="true">osx-pkg-postinstall.sh</postinstall></scripts></pkgref> +<pkgref spec="1.12" uuid="DF0233A3-6B5D-4FBF-8048-8FC57F42278F"> + <config> + <identifier>org.iojs.npm.pkg</identifier> + <version>1.0</version> + <description></description> + <post-install type="none"/> + <requireAuthorization/> + <installFrom relative="true">../deps/npm</installFrom> + <installTo mod="true">/usr/local/lib/node_modules/npm</installTo> + <flags> + <followSymbolicLinks/> + </flags> + <packageStore type="internal"></packageStore> + <mod>installTo.path</mod> + <mod>installFrom.isRelativeType</mod> + <mod>installTo</mod> + <mod>scripts.postinstall.isRelativeType</mod> + <mod>parent</mod> + <mod>installTo.isAbsoluteType</mod> + </config> + <scripts> + <postinstall relative="true" mod="true">osx-pkg-postinstall.sh</postinstall> + </scripts> +</pkgref> diff --git a/tools/osx-pkg.pmdoc/index.xml.tmpl b/tools/osx-pkg.pmdoc/index.xml.tmpl index 7376a9d376..1be73d27bc 100644 --- a/tools/osx-pkg.pmdoc/index.xml.tmpl +++ b/tools/osx-pkg.pmdoc/index.xml.tmpl @@ -1,9 +1,35 @@ -<pkmkdoc spec="1.12"><properties><title>io.js</title><build>/Users/iojs/Desktop/iojs.pkg</build><organization>org.iojs</organization><userSees ui="both"/><min-target os="3"/><domain system="true"/></properties><distribution><versions min-spec="1.000000"/><scripts></scripts></distribution><contents><choice title="io.js" id="choice3" starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.iojs.pkg"/></choice><choice title="npm" id="choice4" starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="org.iojs.npm.pkg"/></choice></contents><resources bg-scale="none" bg-align="topleft"><locale lang="en"><resource relative="true" mod="true" type="background">../doc/osx_installer_logo.png</resource><resource relative="true" mod="true" type="license">../LICENSE</resource><resource mime-type="text/rtf" kind="embedded" type="welcome"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +<pkmkdoc spec="1.12"> + <properties> + <title>io.js</title> + <build>/Users/iojs/Desktop/iojs.pkg</build> + <organization>org.iojs</organization> + <userSees ui="both"/> + <min-target os="3"/> + <domain system="true"/> + </properties> + <distribution> + <versions min-spec="1.000000"/> + <scripts></scripts> + </distribution> + <contents> + <choice title="io.js" id="choice1" starts_selected="true" starts_enabled="true" starts_hidden="false"> + <pkgref id="org.iojs.iojs.pkg"/> + </choice> + <choice title="npm" id="choice2" starts_selected="true" starts_enabled="true" starts_hidden="false"> + <pkgref id="org.iojs.npm.pkg"/> + </choice> + </contents> + <resources bg-scale="none" bg-align="topleft"> + <locale lang="en"> + <resource relative="true" mod="true" type="background">../doc/osx_installer_logo.png</resource> + <resource relative="true" mod="true" type="license">../LICENSE</resource> + <resource mime-type="text/rtf" kind="embedded" type="welcome"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 {\fonttbl\f0\fnil\fcharset0 LucidaGrande;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural -\f0\fs26 \cf0 This package will install io.js __iojsversion__ and npm __npmversion__ into /usr/local/. The binary /usr/local/bin/iojs will also be symlinked as /usr/local/bin/node.}]]></resource><resource mime-type="text/rtf" kind="embedded" type="conclusion"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +\f0\fs26 \cf0 This package will install io.js {iojsversion} and npm {npmversion} into /usr/local/. The binary /usr/local/bin/iojs will also be symlinked as /usr/local/bin/node.}]]></resource> + <resource mime-type="text/rtf" kind="embedded" type="conclusion"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 {\fonttbl\f0\fnil\fcharset0 LucidaGrande;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural @@ -18,4 +44,14 @@ npm was installed at\ \ /usr/local/bin/npm\ \ -Make sure that /usr/local/bin is in your $PATH.}]]></resource></locale></resources><flags/><item type="file">01local.xml</item><item type="file">02npm.xml</item><mod>properties.title</mod><mod>properties.userDomain</mod><mod>properties.anywhereDomain</mod><mod>properties.systemDomain</mod></pkmkdoc> +Make sure that /usr/local/bin is in your $PATH.}]]></resource> + </locale> + </resources> + <flags/> + <item type="file">01local.xml</item> + <item type="file">02npm.xml</item> + <mod>properties.title</mod> + <mod>properties.userDomain</mod> + <mod>properties.anywhereDomain</mod> + <mod>properties.systemDomain</mod> +</pkmkdoc> diff --git a/tools/osx-productsign.sh b/tools/osx-productsign.sh index 4834c9bbb8..491e3fde62 100644 --- a/tools/osx-productsign.sh +++ b/tools/osx-productsign.sh @@ -3,7 +3,7 @@ set -x set -e -if ! [ -n "$SIGN" ]; then +if [ "X$SIGN" == "X" ]; then echo "No SIGN environment var. Skipping codesign." >&2 exit 0 fi diff --git a/vcbuild.bat b/vcbuild.bat index 9c6af480ed..7fab85c85a 100644 --- a/vcbuild.bat +++ b/vcbuild.bat @@ -13,9 +13,8 @@ if /i "%1"=="/?" goto help @rem Process arguments. set config=Release -set msiplatform=x86 set target=Build -set target_arch=ia32 +set target_arch=x86 set debug_arg= set snapshot_arg= set noprojgen= @@ -24,6 +23,7 @@ set nosign= set nosnapshot= set test_args= set msi= +set upload= set licensertf= set jslint= set buildnodeweak= @@ -41,8 +41,8 @@ if "%1"=="" goto args-done if /i "%1"=="debug" set config=Debug&goto arg-ok if /i "%1"=="release" set config=Release&goto arg-ok if /i "%1"=="clean" set target=Clean&goto arg-ok -if /i "%1"=="ia32" set target_arch=ia32&goto arg-ok -if /i "%1"=="x86" set target_arch=ia32&goto arg-ok +if /i "%1"=="ia32" set target_arch=x86&goto arg-ok +if /i "%1"=="x86" set target_arch=x86&goto arg-ok if /i "%1"=="x64" set target_arch=x64&goto arg-ok if /i "%1"=="noprojgen" set noprojgen=1&goto arg-ok if /i "%1"=="nobuild" set nobuild=1&goto arg-ok @@ -61,6 +61,7 @@ if /i "%1"=="test-pummel" set test_args=%test_args% pummel&goto arg-ok if /i "%1"=="test-all" set test_args=%test_args% sequential parallel message gc internet pummel&set buildnodeweak=1&set jslint=1&goto arg-ok if /i "%1"=="jslint" set jslint=1&goto arg-ok if /i "%1"=="msi" set msi=1&set licensertf=1&goto arg-ok +if /i "%1"=="upload" set upload=1&goto arg-ok if /i "%1"=="small-icu" set i18n_arg=%1&goto arg-ok if /i "%1"=="full-icu" set i18n_arg=%1&goto arg-ok if /i "%1"=="intl-none" set i18n_arg=%1&goto arg-ok @@ -75,7 +76,6 @@ goto next-arg :args-done if "%config%"=="Debug" set debug_arg=--debug -if "%target_arch%"=="x64" set msiplatform=x64 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 @@ -84,9 +84,21 @@ if "%i18n_arg%"=="full-icu" set i18n_arg=--with-intl=full-icu if "%i18n_arg%"=="small-icu" set i18n_arg=--with-intl=small-icu if "%i18n_arg%"=="intl-none" set i18n_arg=--with-intl=none -if defined NIGHTLY set TAG=nightly-%NIGHTLY% +call :getnodeversion || exit /b 1 @rem Set environment for msbuild +:project-gen +@rem Skip project generation if requested. +if defined noprojgen goto msbuild + +@rem Generate the VS project. +SETLOCAL + if defined VS100COMNTOOLS call "%VS100COMNTOOLS%\VCVarsQueryRegistry.bat" + python configure %download_arg% %i18n_arg% %debug_arg% %snapshot_arg% %noetw_arg% %noperfctr_arg% --dest-cpu=%target_arch% --tag=%TAG% + if errorlevel 1 goto create-msvs-files-failed + if not exist node.sln goto create-msvs-files-failed + echo Project files generated. +ENDLOCAL @rem Look for Visual Studio 2015 if not defined VS140COMNTOOLS goto vc-set-2013 @@ -152,20 +164,31 @@ if errorlevel 1 echo Failed to generate license.rtf&goto exit :msi @rem Skip msi generation if not requested if not defined msi goto run -call :getnodeversion - -if not defined NIGHTLY goto msibuild -set NODE_VERSION=%NODE_VERSION%.%NIGHTLY% :msibuild -echo Building iojs-%NODE_VERSION% -msbuild "%~dp0tools\msvs\msi\nodemsi.sln" /m /t:Clean,Build /p:Configuration=%config% /p:Platform=%msiplatform% /p:NodeVersion=%NODE_VERSION% %noetw_msi_arg% %noperfctr_msi_arg% /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo +echo Building iojs-v%FULLVERSION%-%target_arch%.msi +msbuild "%~dp0tools\msvs\msi\nodemsi.sln" /m /t:Clean,Build /p:Configuration=%config% /p:Platform=%target_arch% /p:NodeVersion=%NODE_VERSION% /p:FullVersion=%FULLVERSION% /p:DistTypeDir=%DISTTYPEDIR% %noetw_msi_arg% %noperfctr_msi_arg% /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo if errorlevel 1 goto exit -if defined nosign goto run -signtool sign /a /d "io.js" /t http://timestamp.globalsign.com/scripts/timestamp.dll Release\iojs-v%NODE_VERSION%-%msiplatform%.msi +if defined nosign goto upload +signtool sign /a /d "io.js" /t http://timestamp.globalsign.com/scripts/timestamp.dll iojs-v%FULLVERSION%-%target_arch%.msi if errorlevel 1 echo Failed to sign msi&goto exit +:upload +@rem Skip upload if not requested +if not defined upload goto run + +if not defined SSHCONFIG ( + echo SSHCONFIG is not set for upload + exit /b 1 +) +if not defined STAGINGSERVER set STAGINGSERVER=iojs-www +ssh -F %SSHCONFIG% %STAGINGSERVER% "mkdir -p staging/%DISTTYPEDIR%/v%FULLVERSION%/win-%target_arch%" +scp -F %SSHCONFIG% Release\iojs.exe %STAGINGSERVER%:staging/%DISTTYPEDIR%/v%FULLVERSION%/win-%target_arch%/iojs.exe +scp -F %SSHCONFIG% Release\iojs.lib %STAGINGSERVER%:staging/%DISTTYPEDIR%/v%FULLVERSION%/win-%target_arch%/iojs.lib +scp -F %SSHCONFIG% iojs-v%FULLVERSION%-%target_arch%.msi %STAGINGSERVER%:staging/%DISTTYPEDIR%/v%FULLVERSION%/ +ssh -F %SSHCONFIG% %STAGINGSERVER% "touch staging/%DISTTYPEDIR%/v%FULLVERSION%/iojs-v%FULLVERSION%-%target_arch%.msi.done staging/%DISTTYPEDIR%/v%FULLVERSION%/win-%target_arch%.done" + :run @rem Run tests if requested. @@ -218,6 +241,46 @@ rem *************** :getnodeversion set NODE_VERSION= +set TAG= +set FULLVERSION= + for /F "usebackq tokens=*" %%i in (`python "%~dp0tools\getnodeversion.py"`) do set NODE_VERSION=%%i -if not defined NODE_VERSION echo Cannot determine current version of io.js & exit /b 1 +if not defined NODE_VERSION ( + echo Cannot determine current version of io.js + exit /b 1 +) + +if not defined DISTTYPE set DISTTYPE=release +if "%DISTTYPE%"=="release" ( + set FULLVERSION=%NODE_VERSION% + goto exit +) +if "%DISTTYPE%"=="custom" ( + if not defined CUSTOMTAG ( + echo "CUSTOMTAG is not set for DISTTYPE=custom" + exit /b 1 + ) + set TAG=%CUSTOMTAG% +) +if not "%DISTTYPE%"=="custom" ( + if not defined DATESTRING ( + echo "DATESTRING is not set for nightly" + exit /b 1 + ) + if not defined COMMIT ( + echo "COMMIT is not set for nightly" + exit /b 1 + ) + if not "%DISTTYPE%"=="nightly" ( + if not "%DISTTYPE%"=="next-nightly" ( + echo "DISTTYPE is not release, custom, nightly or next-nightly" + exit /b 1 + ) + ) + set TAG=%DISTTYPE%%DATESTRING%%COMMIT% +) +set FULLVERSION=%NODE_VERSION%-%TAG% + +:exit +if not defined DISTTYPEDIR set DISTTYPEDIR=%DISTTYPE% goto :EOF |