Browse Source

build: backport config for new CI infrastructure

PR-URL: https://github.com/nodejs/node/pull/3965
Reviewed-By: Alexis Campailla <orangemocha@nodejs.org>
Reviewed-By: Johan Bergström <bugs@bergstroem.nu>
v0.10
Rod Vagg 9 years ago
parent
commit
268d2b4637
  1. 168
      Makefile
  2. 5
      configure
  3. 24
      src/node_version.h
  4. 18
      tools/msvs/msi/nodemsi.wixproj
  5. 4
      tools/msvs/msi/product.wxs
  6. 2
      tools/osx-codesign.sh
  7. 2
      tools/osx-productsign.sh
  8. 124
      vcbuild.bat

168
Makefile

@ -6,7 +6,11 @@ NINJA ?= ninja
DESTDIR ?= DESTDIR ?=
SIGN ?= SIGN ?=
FLAKY_TESTS ?= run FLAKY_TESTS ?= run
STAGINGSERVER ?= node-www
OSTYPE := $(shell uname -s | tr '[A-Z]' '[a-z]')
# Flags for packaging.
NODE ?= ./node NODE ?= ./node
# Default to verbose builds. # Default to verbose builds.
@ -206,9 +210,45 @@ run-ci:
RAWVER=$(shell $(PYTHON) tools/getnodeversion.py) RAWVER=$(shell $(PYTHON) tools/getnodeversion.py)
VERSION=v$(RAWVER) 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)
NODE_DOC_VERSION=$(VERSION) NODE_DOC_VERSION=$(VERSION)
RELEASE=$(shell $(PYTHON) tools/getnodeisrelease.py) NPMVERSION=v$(shell cat deps/npm/package.json | grep '"version"' | sed 's/^[^:]*: "\([^"]*\)",.*/\1/')
PLATFORM=$(shell uname | tr '[:upper:]' '[:lower:]')
ifeq ($(findstring x86_64,$(shell uname -m)),x86_64) ifeq ($(findstring x86_64,$(shell uname -m)),x86_64)
DESTCPU ?= x64 DESTCPU ?= x64
else else
@ -223,24 +263,21 @@ else
ARCH=x86 ARCH=x86
endif endif
endif endif
TARNAME=node-$(VERSION)
ifdef NIGHTLY
TAG = nightly-$(NIGHTLY)
TARNAME=node-$(VERSION)-$(TAG)
endif
TARBALL=$(TARNAME).tar.gz
BINARYNAME=$(TARNAME)-$(PLATFORM)-$(ARCH)
BINARYTAR=$(BINARYNAME).tar.gz
PKG=out/$(TARNAME).pkg
PACKAGEMAKER ?= /Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker
PKGSRC=nodejs-$(DESTCPU)-$(RAWVER).tgz # enforce "x86" over "ia32" as the generally accepted way of referring to 32-bit intel
ifdef NIGHTLY ifeq ($(ARCH),ia32)
PKGSRC=nodejs-$(DESTCPU)-$(RAWVER)-$(TAG).tgz override ARCH=x86
endif
ifeq ($(DESTCPU),ia32)
override DESTCPU=x86
endif endif
dist: doc $(TARBALL) $(PKG) TARNAME=node-$(FULLVERSION)
TARBALL=$(TARNAME).tar
BINARYNAME=$(TARNAME)-$(OSTYPE)-$(ARCH)
BINARYTAR=$(BINARYNAME).tar
PKG=$(TARNAME).pkg
PACKAGEMAKER ?= /Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker
PKGDIR=out/dist-osx PKGDIR=out/dist-osx
release-only: release-only:
@ -255,27 +292,33 @@ release-only:
echo "" >&2 ; \ echo "" >&2 ; \
exit 1 ; \ exit 1 ; \
fi fi
@if [ "$(NIGHTLY)" != "" -o "$(RELEASE)" = "1" ]; then \ @if [ "$(DISTTYPE)" != "release" -o "$(RELEASE)" = "1" ]; then \
exit 0; \ exit 0; \
else \ else \
echo "" >&2 ; \ echo "" >&2 ; \
echo "#NODE_VERSION_IS_RELEASE is set to $(RELEASE)." >&2 ; \ echo "#NODE_VERSION_IS_RELEASE is set to $(RELEASE)." >&2 ; \
echo "Did you remember to update src/node_version.cc?" >&2 ; \ echo "Did you remember to update src/node_version.h?" >&2 ; \
echo "" >&2 ; \ echo "" >&2 ; \
exit 1 ; \ exit 1 ; \
fi fi
pkg: $(PKG)
$(PKG): release-only $(PKG): release-only
rm -rf $(PKGDIR) rm -rf $(PKGDIR)
rm -rf out/deps out/Release rm -rf out/deps out/Release
$(PYTHON) ./configure --without-snapshot --dest-cpu=ia32 --tag=$(TAG) $(PYTHON) ./configure \
--dest-cpu=ia32 \
--tag=$(TAG) \
--without-snapshot \
$(CONFIG_FLAGS)
$(MAKE) install V=$(V) DESTDIR=$(PKGDIR)/32 $(MAKE) install V=$(V) DESTDIR=$(PKGDIR)/32
rm -rf out/deps out/Release rm -rf out/deps out/Release
$(PYTHON) ./configure --without-snapshot --dest-cpu=x64 --tag=$(TAG) $(PYTHON) ./configure \
--dest-cpu=x64 \
--tag=$(TAG) \
--without-snapshot \
$(CONFIG_FLAGS)
$(MAKE) install V=$(V) DESTDIR=$(PKGDIR) $(MAKE) install V=$(V) DESTDIR=$(PKGDIR)
SIGN="$(APP_SIGN)" PKGDIR="$(PKGDIR)" bash tools/osx-codesign.sh SIGN="$(CODESIGN_CERT)" PKGDIR="$(PKGDIR)" bash tools/osx-codesign.sh
lipo $(PKGDIR)/32/usr/local/bin/node \ lipo $(PKGDIR)/32/usr/local/bin/node \
$(PKGDIR)/usr/local/bin/node \ $(PKGDIR)/usr/local/bin/node \
-output $(PKGDIR)/usr/local/bin/node-universal \ -output $(PKGDIR)/usr/local/bin/node-universal \
@ -286,7 +329,15 @@ $(PKG): release-only
--id "org.nodejs.Node" \ --id "org.nodejs.Node" \
--doc tools/osx-pkg.pmdoc \ --doc tools/osx-pkg.pmdoc \
--out $(PKG) --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 nodejs/$(DISTTYPEDIR)/$(FULLVERSION)"
chmod 664 node-$(FULLVERSION).pkg
scp -p node-$(FULLVERSION).pkg $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION).pkg
ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION).pkg.done"
$(TARBALL): release-only node doc $(TARBALL): release-only node doc
git archive --format=tar --prefix=$(TARNAME)/ HEAD | tar xf - git archive --format=tar --prefix=$(TARNAME)/ HEAD | tar xf -
@ -302,6 +353,39 @@ $(TARBALL): release-only node doc
tar: $(TARBALL) tar: $(TARBALL)
tar-upload: tar
ssh $(STAGINGSERVER) "mkdir -p nodejs/$(DISTTYPEDIR)/$(FULLVERSION)"
chmod 664 node-$(FULLVERSION).tar.gz
scp -p node-$(FULLVERSION).tar.gz $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION).tar.gz
ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION).tar.gz.done"
doc-upload: tar
ssh $(STAGINGSERVER) "mkdir -p nodejs/$(DISTTYPEDIR)/$(FULLVERSION)"
chmod -R ug=rw-x+X,o=r+X out/doc/
scp -pr out/doc/ $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/docs/
ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/docs.done"
$(TARBALL)-headers: config.gypi release-only
$(PYTHON) ./configure \
--prefix=/ \
--dest-cpu=$(DESTCPU) \
--tag=$(TAG) \
$(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)
rm -rf $(TARNAME)
gzip -c -f -9 $(TARNAME)-headers.tar > $(TARNAME)-headers.tar.gz
rm $(TARNAME)-headers.tar
tar-headers: $(TARBALL)-headers
tar-headers-upload: tar-headers
ssh $(STAGINGSERVER) "mkdir -p nodejs/$(DISTTYPEDIR)/$(FULLVERSION)"
chmod 664 $(TARNAME)-headers.tar.gz
scp -p $(TARNAME)-headers.tar.gz $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-headers.tar.gz
ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-headers.tar.gz.done"
$(BINARYTAR): release-only $(BINARYTAR): release-only
rm -rf $(BINARYNAME) rm -rf $(BINARYNAME)
rm -rf out/deps out/Release rm -rf out/deps out/Release
@ -316,6 +400,35 @@ $(BINARYTAR): release-only
binary: $(BINARYTAR) binary: $(BINARYTAR)
binary-upload-arch: binary
ssh $(STAGINGSERVER) "mkdir -p nodejs/$(DISTTYPEDIR)/$(FULLVERSION)"
chmod 664 node-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.gz
scp -p node-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.gz $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.gz
ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.gz.done"
ifeq ($(OSTYPE),darwin)
binary-upload:
$(MAKE) binary-upload-arch \
DESTCPU=ia32 \
ARCH=x86 \
DISTTYPE=$(DISTTYPE) \
DATESTRING=$(DATESTRING) \
COMMIT=$(COMMIT) \
CUSTOMTAG=$(CUSTOMTAG) \
CONFIG_FLAGS=$(CONFIG_FLAGS)
$(MAKE) binary-upload-arch \
DESTCPU=x64 \
ARCH=x64 \
DISTTYPE=$(DISTTYPE) \
DATESTRING=$(DATESTRING) \
COMMIT=$(COMMIT) \
CUSTOMTAG=$(CUSTOMTAG) \
CONFIG_FLAGS=$(CONFIG_FLAGS)
else
binary-upload: binary-upload-arch
endif
$(PKGSRC): release-only $(PKGSRC): release-only
rm -rf dist out rm -rf dist out
$(PYTHON) configure --prefix=/ --without-snapshot \ $(PYTHON) configure --prefix=/ --without-snapshot \
@ -329,11 +442,6 @@ $(PKGSRC): release-only
pkgsrc: $(PKGSRC) pkgsrc: $(PKGSRC)
dist-upload: $(TARBALL) $(PKG)
ssh node@nodejs.org mkdir -p web/nodejs.org/dist/$(VERSION)
scp $(TARBALL) node@nodejs.org:~/web/nodejs.org/dist/$(VERSION)/$(TARBALL)
scp $(PKG) node@nodejs.org:~/web/nodejs.org/dist/$(VERSION)/$(TARNAME).pkg
wrkclean: wrkclean:
$(MAKE) -C tools/wrk/ clean $(MAKE) -C tools/wrk/ clean
rm tools/wrk/wrk rm tools/wrk/wrk

5
configure

@ -478,6 +478,10 @@ def configure_node(o):
host_arch = host_arch_win() if os.name == 'nt' else host_arch_cc() host_arch = host_arch_win() if os.name == 'nt' else host_arch_cc()
target_arch = options.dest_cpu or host_arch 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']['host_arch'] = host_arch
o['variables']['target_arch'] = target_arch o['variables']['target_arch'] = target_arch
@ -665,7 +669,6 @@ def configure_winsdk(o):
print "ctrpp not found in WinSDK path--using pre-gen files from tools/msvs/genfiles." print "ctrpp not found in WinSDK path--using pre-gen files from tools/msvs/genfiles."
# determine the "flavor" (operating system) we're building for, # determine the "flavor" (operating system) we're building for,
# leveraging gyp's GetFlavor function # leveraging gyp's GetFlavor function
flavor_params = {}; flavor_params = {};

24
src/node_version.h

@ -28,25 +28,31 @@
#define NODE_VERSION_IS_RELEASE 0 #define NODE_VERSION_IS_RELEASE 0
#ifndef NODE_TAG
# define NODE_TAG ""
#endif
#ifndef NODE_STRINGIFY #ifndef NODE_STRINGIFY
#define NODE_STRINGIFY(n) NODE_STRINGIFY_HELPER(n) #define NODE_STRINGIFY(n) NODE_STRINGIFY_HELPER(n)
#define NODE_STRINGIFY_HELPER(n) #n #define NODE_STRINGIFY_HELPER(n) #n
#endif #endif
#if NODE_VERSION_IS_RELEASE #ifndef NODE_TAG
# define NODE_VERSION_STRING NODE_STRINGIFY(NODE_MAJOR_VERSION) "." \ # if NODE_VERSION_IS_RELEASE
# define NODE_TAG ""
# else
# define NODE_TAG "-pre"
# endif
#else
// NODE_TAG is passed without quotes when rc.exe is run from msbuild
# define NODE_EXE_VERSION NODE_STRINGIFY(NODE_MAJOR_VERSION) "." \
NODE_STRINGIFY(NODE_MINOR_VERSION) "." \ NODE_STRINGIFY(NODE_MINOR_VERSION) "." \
NODE_STRINGIFY(NODE_PATCH_VERSION) \ NODE_STRINGIFY(NODE_PATCH_VERSION) \
NODE_TAG NODE_STRINGIFY(NODE_TAG)
#else #endif
# define NODE_VERSION_STRING NODE_STRINGIFY(NODE_MAJOR_VERSION) "." \ # define NODE_VERSION_STRING NODE_STRINGIFY(NODE_MAJOR_VERSION) "." \
NODE_STRINGIFY(NODE_MINOR_VERSION) "." \ NODE_STRINGIFY(NODE_MINOR_VERSION) "." \
NODE_STRINGIFY(NODE_PATCH_VERSION) \ NODE_STRINGIFY(NODE_PATCH_VERSION) \
NODE_TAG "-pre" NODE_TAG
#ifndef NODE_EXE_VERSION
# define NODE_EXE_VERSION NODE_VERSION_STRING
#endif #endif
#define NODE_VERSION "v" NODE_VERSION_STRING #define NODE_VERSION "v" NODE_VERSION_STRING

18
tools/msvs/msi/nodemsi.wixproj

@ -6,7 +6,7 @@
<ProductVersion>3.5</ProductVersion> <ProductVersion>3.5</ProductVersion>
<ProjectGuid>{1d808ff0-b5a9-4be9-859d-b334b6f48be2}</ProjectGuid> <ProjectGuid>{1d808ff0-b5a9-4be9-859d-b334b6f48be2}</ProjectGuid>
<SchemaVersion>2.0</SchemaVersion> <SchemaVersion>2.0</SchemaVersion>
<OutputName>node-v$(NodeVersion)-$(Platform)</OutputName> <OutputName>node-v$(FullVersion)-$(Platform)</OutputName>
<OutputType>Package</OutputType> <OutputType>Package</OutputType>
<EnableProjectHarvesting>True</EnableProjectHarvesting> <EnableProjectHarvesting>True</EnableProjectHarvesting>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath> <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> <NodeVersion Condition=" '$(NodeVersion)' == '' ">0.0.0.0</NodeVersion>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<OutputPath>..\..\..\$(Configuration)\</OutputPath> <OutputPath>..\..\..\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath> <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>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<OutputPath>..\..\..\$(Configuration)\</OutputPath> <OutputPath>..\..\..\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath> <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>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
<OutputPath>..\..\..\$(Configuration)\</OutputPath> <OutputPath>..\..\..\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath> <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> <Cultures>en-US</Cultures>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
<OutputPath>..\..\..\$(Configuration)\</OutputPath> <OutputPath>..\..\..\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath> <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>
<PropertyGroup> <PropertyGroup>
<EnableProjectHarvesting>True</EnableProjectHarvesting> <EnableProjectHarvesting>True</EnableProjectHarvesting>

4
tools/msvs/msi/product.wxs

@ -4,7 +4,7 @@
<?define ProductName = "Node.js" ?> <?define ProductName = "Node.js" ?>
<?define ProductDescription = "Node.js" ?> <?define ProductDescription = "Node.js" ?>
<?define ProductAuthor = "Joyent, Inc. and other Node contributors" ?> <?define ProductAuthor = "Node.js Foundation" ?>
<?define RegistryKeyPath = "SOFTWARE\Node.js" ?> <?define RegistryKeyPath = "SOFTWARE\Node.js" ?>
@ -23,7 +23,7 @@
<Media Id="1" Cabinet="media1.cab" EmbedCab="yes"/> <Media Id="1" Cabinet="media1.cab" EmbedCab="yes"/>
<MajorUpgrade AllowSameVersionUpgrades="yes" <MajorUpgrade AllowSameVersionUpgrades="yes"
DowngradeErrorMessage="A later version of node.js is already installed. Setup will now exit."/> DowngradeErrorMessage="A later version of Node.js is already installed. Setup will now exit."/>
<Icon Id="NodeIcon" SourceFile="$(var.RepoDir)\src\res\node.ico"/> <Icon Id="NodeIcon" SourceFile="$(var.RepoDir)\src\res\node.ico"/>
<Property Id="ARPPRODUCTICON" Value="NodeIcon"/> <Property Id="ARPPRODUCTICON" Value="NodeIcon"/>

2
tools/osx-codesign.sh

@ -3,7 +3,7 @@
set -x set -x
set -e set -e
if ! [ -n "$SIGN" ] && [ $STEP -eq 1 ]; then if [ "X$SIGN" == "X" ]; then
echo "No SIGN environment var. Skipping codesign." >&2 echo "No SIGN environment var. Skipping codesign." >&2
exit 0 exit 0
fi fi

2
tools/osx-productsign.sh

@ -3,7 +3,7 @@
set -x set -x
set -e set -e
if ! [ -n "$SIGN" ]; then if [ "X$SIGN" == "X" ]; then
echo "No SIGN environment var. Skipping codesign." >&2 echo "No SIGN environment var. Skipping codesign." >&2
exit 0 exit 0
fi fi

124
vcbuild.bat

@ -13,11 +13,8 @@ if /i "%1"=="/?" goto help
@rem Process arguments. @rem Process arguments.
set config=Release set config=Release
set msiplatform=x86
set target=Build set target=Build
set target_arch=ia32 set target_arch=x86
set debug_arg=
set nosnapshot_arg=
set noprojgen= set noprojgen=
set nobuild= set nobuild=
set nosign= set nosign=
@ -30,20 +27,19 @@ set upload=
set jslint= set jslint=
set buildnodeweak= set buildnodeweak=
set noetw= set noetw=
set noetw_arg=
set noetw_msi_arg= set noetw_msi_arg=
set noperfctr= set noperfctr=
set noperfctr_arg=
set noperfctr_msi_arg= set noperfctr_msi_arg=
set flaky_tests_arg= set flaky_tests_arg=
set configure_flags=
:next-arg :next-arg
if "%1"=="" goto args-done if "%1"=="" goto args-done
if /i "%1"=="debug" set config=Debug&goto arg-ok if /i "%1"=="debug" set config=Debug&goto arg-ok
if /i "%1"=="release" set config=Release&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"=="clean" set target=Clean&goto arg-ok
if /i "%1"=="ia32" 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=ia32&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"=="x64" set target_arch=x64&goto arg-ok
if /i "%1"=="noprojgen" set noprojgen=1&goto arg-ok if /i "%1"=="noprojgen" set noprojgen=1&goto arg-ok
if /i "%1"=="nobuild" set nobuild=1&goto arg-ok if /i "%1"=="nobuild" set nobuild=1&goto arg-ok
@ -75,13 +71,17 @@ shift
goto next-arg goto next-arg
:args-done :args-done
if defined upload goto upload
if "%config%"=="Debug" set debug_arg=--debug if "%config%"=="Debug" set configure_flags=%configure_flags% --debug
if "%target_arch%"=="x64" set msiplatform=x64 if defined nosnapshot set configure_flags=%configure_flags% --without-snapshot
if defined nosnapshot set nosnapshot_arg=--without-snapshot if defined noetw set configure_flags=%configure_flags% --without-etw& set noetw_msi_arg=/p:NoETW=1
if defined noetw set noetw_arg=--without-etw& set noetw_msi_arg=/p:NoETW=1 if defined noperfctr set configure_flags=%configure_flags% --without-perfctr& set noperfctr_msi_arg=/p:NoPerfCtr=1
if defined noperfctr set noperfctr_arg=--without-perfctr& set noperfctr_msi_arg=/p:NoPerfCtr=1
if defined config_flags set configure_flags=%configure_flags% %config_flags%
call :getnodeversion || exit /b 1
@rem Set environment for msbuild
@rem Look for Visual Studio 2015 @rem Look for Visual Studio 2015
echo Looking for Visual Studio 2015 echo Looking for Visual Studio 2015
@ -176,7 +176,8 @@ if defined noprojgen goto msbuild
if defined NIGHTLY set TAG=nightly-%NIGHTLY% if defined NIGHTLY set TAG=nightly-%NIGHTLY%
@rem Generate the VS project. @rem Generate the VS project.
python configure %debug_arg% %nosnapshot_arg% %noetw_arg% %noperfctr_arg% --dest-cpu=%target_arch% --tag=%TAG% echo configure %configure_flags% --dest-cpu=%target_arch% --tag=%TAG%
python configure %configure_flags% --dest-cpu=%target_arch% --tag=%TAG%
if errorlevel 1 goto create-msvs-files-failed if errorlevel 1 goto create-msvs-files-failed
if not exist node.sln goto create-msvs-files-failed if not exist node.sln goto create-msvs-files-failed
echo Project files generated. echo Project files generated.
@ -193,7 +194,7 @@ if errorlevel 1 goto exit
@rem Skip signing if the `nosign` option was specified. @rem Skip signing if the `nosign` option was specified.
if defined nosign goto licensertf if defined nosign goto licensertf
signtool sign /a /d "Node.js" /t http://timestamp.globalsign.com/scripts/timestamp.dll Release\node.exe signtool sign /a /d "node" /t http://timestamp.globalsign.com/scripts/timestamp.dll Release\node.exe
if errorlevel 1 echo Failed to sign exe&goto exit if errorlevel 1 echo Failed to sign exe&goto exit
:licensertf :licensertf
@ -206,20 +207,42 @@ if errorlevel 1 echo Failed to generate license.rtf&goto exit
:msi :msi
@rem Skip msi generation if not requested @rem Skip msi generation if not requested
if not defined msi goto run if not defined msi goto run
call :getnodeversion
if not defined NIGHTLY goto msibuild
set NODE_VERSION=%NODE_VERSION%.%NIGHTLY%
:msibuild :msibuild
echo Building node-%NODE_VERSION% echo Building node-v%FULLVERSION%-%target_arch%.msi
msbuild "%~dp0tools\msvs\msi\nodemsi.sln" /m /t:Clean,Build /p:PlatformToolset=%PLATFORM_TOOLSET% /p:GypMsvsVersion=%GYP_MSVS_VERSION% /p:Configuration=%config% /p:Platform=%msiplatform% /p:NodeVersion=%NODE_VERSION% %noetw_msi_arg% %noperfctr_msi_arg% /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo msbuild "%~dp0tools\msvs\msi\nodemsi.sln" /m /t:Clean,Build /p:PlatformToolset=%PLATFORM_TOOLSET% /p:GypMsvsVersion=%GYP_MSVS_VERSION% /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 errorlevel 1 goto exit
if defined nosign goto run if defined nosign goto upload
signtool sign /a /d "Node.js" /t http://timestamp.globalsign.com/scripts/timestamp.dll Release\node-v%NODE_VERSION%-%msiplatform%.msi signtool sign /a /d "node" /t http://timestamp.globalsign.com/scripts/timestamp.dll node-v%FULLVERSION%-%target_arch%.msi
if errorlevel 1 echo Failed to sign msi&goto exit 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=node-www
if "%target_arch%"=="x64" set staging_dir=nodejs/%DISTTYPEDIR%/v%FULLVERSION%/x64
if "%target_arch%"=="x86" set staging_dir=nodejs/%DISTTYPEDIR%/v%FULLVERSION%/
echo Uploading to %STAGINGSERVER%:%staging_dir%
ssh -F %SSHCONFIG% %STAGINGSERVER% "mkdir -p %staging_dir%"
scp -F %SSHCONFIG% Release\node.exe %STAGINGSERVER%:%staging_dir%/node.exe
scp -F %SSHCONFIG% Release\node.lib %STAGINGSERVER%:%staging_dir%/node.lib
scp -F %SSHCONFIG% Release\node.pdb %STAGINGSERVER%:%staging_dir%/node.pdb
scp -F %SSHCONFIG% Release\node.exp %STAGINGSERVER%:%staging_dir%/node.exp
scp -F %SSHCONFIG% Release\openssl-cli.exe %STAGINGSERVER%:%staging_dir%/openssl-cli.exe
scp -F %SSHCONFIG% Release\openssl-cli.pdb %STAGINGSERVER%:%staging_dir%/openssl-cli.pdb
scp -F %SSHCONFIG% node-v%FULLVERSION%-%target_arch%.msi %STAGINGSERVER%:%staging_dir%/
if "%target_arch%"=="x64" (
ssh -F %SSHCONFIG% %STAGINGSERVER% "touch %staging_dir%.done && chmod -R ug=rw-x+X,o=r+X %staging_dir%*"
)
if "%target_arch%"=="x86" (
ssh -F %SSHCONFIG% %STAGINGSERVER% "touch %staging_dir%/node-v%FULLVERSION%-%target_arch%.msi.done %staging_dir%/node.exe.done %staging_dir%/node.lib.done %staging_dir%/node.pdb.done %staging_dir%/node.exp.done %staging_dir%/openssl-cli.exe.done %staging_dir%/openssl-cli.pdb.done && chmod -R ug=rw-x+X,o=r+X %staging_dir%/node.* %staging_dir%/openssl-cli.* %staging_dir%/node-v%FULLVERSION%-%target_arch%.msi* && chmod -R ug=rw-x+X,o=r+X %staging_dir%"
)
:run :run
@rem Run tests if requested. @rem Run tests if requested.
if "%test%"=="" goto jslint if "%test%"=="" goto jslint
@ -258,17 +281,6 @@ goto jslint
echo Failed to create vc project files. echo Failed to create vc project files.
goto exit goto exit
:upload
echo uploading .exe .msi .pdb to nodejs.org
call :getnodeversion
@echo on
ssh node@nodejs.org mkdir -p web/nodejs.org/dist/v%NODE_VERSION%
scp Release\node.msi node@nodejs.org:~/web/nodejs.org/dist/v%NODE_VERSION%/node-v%NODE_VERSION%.msi
scp Release\node.exe node@nodejs.org:~/web/nodejs.org/dist/v%NODE_VERSION%/node.exe
scp Release\node.pdb node@nodejs.org:~/web/nodejs.org/dist/v%NODE_VERSION%/node.pdb
@echo off
goto exit
:jslint :jslint
if not defined jslint goto exit if not defined jslint goto exit
echo running jslint echo running jslint
@ -295,6 +307,46 @@ rem ***************
:getnodeversion :getnodeversion
set NODE_VERSION= set NODE_VERSION=
set TAG=
set FULLVERSION=
for /F "usebackq tokens=*" %%i in (`python "%~dp0tools\getnodeversion.py"`) do set NODE_VERSION=%%i 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 node.js & exit /b 1 if not defined NODE_VERSION (
echo Cannot determine current version of Node.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 goto :EOF

Loading…
Cancel
Save