@@ -5,6 +5,9 @@ PYTHON ?= python
55DESTDIR ?=
66SIGN ?=
77PREFIX ?= /usr/local
8+ STAGINGSERVER ?= iojs-www
9+
10+ OSTYPE := $(shell uname -s | tr '[A-Z]' '[a-z]')
811
912# Determine EXEEXT
1013EXEEXT := $(shell $(PYTHON ) -c \
@@ -56,15 +59,15 @@ uninstall:
5659 $(PYTHON ) tools/install.py $@ ' $(DESTDIR)' ' $(PREFIX)'
5760
5861clean :
59- -rm -rf out/Makefile $(NODE_EXE ) $(NODE_G_EXE ) out/$(BUILDTYPE ) /$(NODE_EXE ) blog.html email.md
62+ -rm -rf out/Makefile $(NODE_EXE ) $(NODE_G_EXE ) out/$(BUILDTYPE ) /$(NODE_EXE )
6063 @if [ -d out ]; then find out/ -name ' *.o' -o -name ' *.a' | xargs rm -rf; fi
6164 -rm -rf node_modules
6265
6366distclean :
6467 -rm -rf out
6568 -rm -f config.gypi icu_config.gypi
6669 -rm -f config.mk
67- -rm -rf $(NODE_EXE ) $(NODE_G_EXE ) blog.html email.md
70+ -rm -rf $(NODE_EXE ) $(NODE_G_EXE )
6871 -rm -rf node_modules
6972 -rm -rf deps/icu
7073 -rm -rf deps/icu4c* .tgz deps/icu4c* .zip deps/icu-tmp
@@ -184,14 +187,49 @@ docclean:
184187
185188RAWVER =$(shell $(PYTHON ) tools/getnodeversion.py)
186189VERSION =v$(RAWVER )
190+
191+ # For nightly builds, you must set DISTTYPE to "nightly", "next-nightly" or
192+ # "custom". For the nightly and next-nightly case, you need to set DATESTRING
193+ # and COMMIT in order to properly name the build.
194+ # For the rc case you need to set CUSTOMTAG to an appropriate CUSTOMTAG number
195+
196+ ifndef DISTTYPE
197+ DISTTYPE =release
198+ endif
199+ ifeq ($(DISTTYPE ) ,release)
187200FULLVERSION =$(VERSION )
201+ else # ifeq ($(DISTTYPE),release)
202+ ifeq ($(DISTTYPE ) ,custom)
203+ ifndef CUSTOMTAG
204+ $(error CUSTOMTAG is not set for DISTTYPE=custom)
205+ endif # ifndef CUSTOMTAG
206+ TAG =$(CUSTOMTAG )
207+ else # ifeq ($(DISTTYPE),custom)
208+ ifndef DATESTRING
209+ $(error DATESTRING is not set for nightly)
210+ endif # ifndef DATESTRING
211+ ifndef COMMIT
212+ $(error COMMIT is not set for nightly)
213+ endif # ifndef COMMIT
214+ ifneq ($(DISTTYPE ) ,nightly)
215+ ifneq ($(DISTTYPE ) ,next-nightly)
216+ $(error DISTTYPE is not release, custom, nightly or next-nightly)
217+ endif # ifneq ($(DISTTYPE),next-nightly)
218+ endif # ifneq ($(DISTTYPE),nightly)
219+ TAG =$(DISTTYPE )$(DATESTRING )$(COMMIT )
220+ endif # ifeq ($(DISTTYPE),custom)
221+ FULLVERSION =$(VERSION ) -$(TAG )
222+ endif # ifeq ($(DISTTYPE),release)
223+
224+ DISTTYPEDIR ?= $(DISTTYPE )
188225RELEASE =$(shell sed -ne 's/\#define NODE_VERSION_IS_RELEASE \([01]\) /\1/p' src/node_version.h)
189226PLATFORM =$(shell uname | tr '[:upper:]' '[:lower:]')
190227NPMVERSION =v$(shell cat deps/npm/package.json | grep '"version"' | sed 's/^[^:]* : "\([^"]* \) ",.*/\1/')
228+
191229ifeq ($(findstring x86_64,$(shell uname -m) ) ,x86_64)
192230DESTCPU ?= x64
193231else
194- DESTCPU ?= ia32
232+ DESTCPU ?= x86
195233endif
196234ifeq ($(DESTCPU ) ,x64)
197235ARCH =x64
@@ -202,26 +240,24 @@ else
202240ARCH =x86
203241endif
204242endif
205- ifdef NIGHTLY
206- TAG = nightly-$(NIGHTLY )
207- FULLVERSION =$(VERSION ) -$(TAG )
243+
244+ # enforce "x86" over "ia32" as the generally accepted way of referring to 32-bit intel
245+ ifeq ($(ARCH ) ,ia32)
246+ override ARCH =x86
208247endif
248+ ifeq ($(DESTCPU ) ,ia32)
249+ override DESTCPU =x86
250+ endif
251+
209252TARNAME =iojs-$(FULLVERSION )
210253TARBALL =$(TARNAME ) .tar
211254BINARYNAME =$(TARNAME ) -$(PLATFORM ) -$(ARCH )
212255BINARYTAR =$(BINARYNAME ) .tar
256+ # OSX doesn't have xz installed by default, http://macpkg.sourceforge.net/
213257XZ =$(shell which xz > /dev/null 2>&1; echo $$? )
214258XZ_COMPRESSION ?= 9
215- PKG =out/ $(TARNAME ) .pkg
259+ PKG =$(TARNAME ) .pkg
216260PACKAGEMAKER ?= /Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker
217-
218- PKGSRC =iojs-$(DESTCPU ) -$(RAWVER ) .tgz
219- ifdef NIGHTLY
220- PKGSRC =iojs-$(DESTCPU ) -$(RAWVER ) -$(TAG ) .tgz
221- endif
222-
223- dist : doc $(TARBALL ) $(PKG )
224-
225261PKGDIR =out/dist-osx
226262
227263release-only :
@@ -236,7 +272,7 @@ release-only:
236272 echo " " >&2 ; \
237273 exit 1 ; \
238274 fi
239- @if [ " $( NIGHTLY ) " != " " -o " $( RELEASE) " = " 1" ]; then \
275+ @if [ " $( DISTTYPE ) " != " release " -o " $( RELEASE) " = " 1" ]; then \
240276 exit 0; \
241277 else \
242278 echo " " >&2 ; \
@@ -246,29 +282,28 @@ release-only:
246282 exit 1 ; \
247283 fi
248284
249- pkg : $(PKG )
250-
251285$(PKG ) : release-only
252286 rm -rf $(PKGDIR )
253287 rm -rf out/deps out/Release
254- $(PYTHON ) ./configure --dest-cpu=ia32 --tag=$(TAG )
255- $(MAKE ) install V=$(V ) DESTDIR=$(PKGDIR ) /32
256- rm -rf out/deps out/Release
257288 $(PYTHON ) ./configure --dest-cpu=x64 --tag=$(TAG )
258289 $(MAKE ) install V=$(V ) DESTDIR=$(PKGDIR )
259- SIGN=" $( APP_SIGN) " PKGDIR=" $( PKGDIR) " bash tools/osx-codesign.sh
260- lipo $(PKGDIR ) /32/usr/local/bin/iojs \
261- $(PKGDIR ) /usr/local/bin/iojs \
262- -output $(PKGDIR ) /usr/local/bin/iojs-universal \
263- -create
264- mv $(PKGDIR ) /usr/local/bin/iojs-universal $(PKGDIR ) /usr/local/bin/iojs
265- rm -rf $(PKGDIR ) /32
266- 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
290+ SIGN=" $( CODESIGN_CERT) " PKGDIR=" $( PKGDIR) " bash tools/osx-codesign.sh
291+ cat tools/osx-pkg.pmdoc/index.xml.tmpl \
292+ | sed -E " s/\\ {iojsversion\\ }/$( FULLVERSION) /g" \
293+ | sed -E " s/\\ {npmversion\\ }/$( NPMVERSION) /g" \
294+ > tools/osx-pkg.pmdoc/index.xml
267295 $(PACKAGEMAKER ) \
268- --id " org.nodejs.Node " \
296+ --id " org.iojs.pkg " \
269297 --doc tools/osx-pkg.pmdoc \
270298 --out $(PKG )
271- SIGN=" $( INT_SIGN) " PKG=" $( PKG) " bash tools/osx-productsign.sh
299+ SIGN=" $( PRODUCTSIGN_CERT) " PKG=" $( PKG) " bash tools/osx-productsign.sh
300+
301+ pkg : $(PKG )
302+
303+ pkg-upload : pkg
304+ ssh $(STAGINGSERVER ) " mkdir -p staging/$( DISTTYPEDIR) /$( FULLVERSION) "
305+ scp -p iojs-$(FULLVERSION ) .pkg $(STAGINGSERVER ) :staging/$(DISTTYPEDIR ) /$(FULLVERSION ) /iojs-$(FULLVERSION ) .pkg
306+ ssh $(STAGINGSERVER ) " touch staging/$( DISTTYPEDIR) /$( FULLVERSION) /iojs-$( FULLVERSION) .pkg.done"
272307
273308$(TARBALL ) : release-only $(NODE_EXE ) doc
274309 git checkout-index -a -f --prefix=$(TARNAME ) /
@@ -291,6 +326,20 @@ endif
291326
292327tar : $(TARBALL )
293328
329+ tar-upload : tar
330+ ssh $(STAGINGSERVER ) " mkdir -p staging/$( DISTTYPEDIR) /$( FULLVERSION) "
331+ scp -p iojs-$(FULLVERSION ) .tar.gz $(STAGINGSERVER ) :staging/$(DISTTYPEDIR ) /$(FULLVERSION ) /iojs-$(FULLVERSION ) .tar.gz
332+ ssh $(STAGINGSERVER ) " touch staging/$( DISTTYPEDIR) /$( FULLVERSION) /iojs-$( FULLVERSION) .tar.gz.done"
333+ ifeq ($(XZ ) , 0)
334+ scp -p iojs-$(FULLVERSION).tar.xz $(STAGINGSERVER):staging/$(DISTTYPEDIR)/$(FULLVERSION)/iojs-$(FULLVERSION).tar.xz
335+ ssh $(STAGINGSERVER) "touch staging/$(DISTTYPEDIR)/$(FULLVERSION)/iojs-$(FULLVERSION).tar.xz.done"
336+ endif
337+
338+ doc-upload : tar
339+ ssh $(STAGINGSERVER ) " mkdir -p staging/$( DISTTYPEDIR) /$( FULLVERSION) "
340+ scp -r out/doc/ $(STAGINGSERVER ) :staging/$(DISTTYPEDIR ) /$(FULLVERSION ) /
341+ ssh $(STAGINGSERVER ) " touch staging/$( DISTTYPEDIR) /$( FULLVERSION) /doc.done"
342+
294343$(BINARYTAR ) : release-only
295344 rm -rf $(BINARYNAME )
296345 rm -rf out/deps out/Release
@@ -309,18 +358,14 @@ endif
309358
310359binary : $(BINARYTAR )
311360
312- $(PKGSRC ) : release-only
313- rm -rf dist out
314- $(PYTHON ) configure --prefix=/ \
315- --dest-cpu=$(DESTCPU ) --tag=$(TAG ) $(CONFIG_FLAGS )
316- $(MAKE ) install DESTDIR=dist
317- (cd dist; find * -type f | sort) > packlist
318- pkg_info -X pkg_install | \
319- egrep ' ^(MACHINE_ARCH|OPSYS|OS_VERSION|PKGTOOLS_VERSION)' > build-info
320- pkg_create -B build-info -c tools/pkgsrc/comment -d tools/pkgsrc/description \
321- -f packlist -I /opt/local -p dist -U $(PKGSRC )
322-
323- pkgsrc : $(PKGSRC )
361+ binary-upload : binary
362+ ssh $(STAGINGSERVER ) " mkdir -p staging/$( DISTTYPEDIR) /$( FULLVERSION) "
363+ scp -p iojs-$(FULLVERSION ) -$(OSTYPE ) -$(ARCH ) .tar.gz $(STAGINGSERVER ) :staging/$(DISTTYPEDIR ) /$(FULLVERSION ) /iojs-$(FULLVERSION ) -$(OSTYPE ) -$(ARCH ) .tar.gz
364+ ssh $(STAGINGSERVER ) " touch staging/$( DISTTYPEDIR) /$( FULLVERSION) /iojs-$( FULLVERSION) -$( OSTYPE) -$( ARCH) .tar.gz.done"
365+ ifeq ($(XZ ) , 0)
366+ scp -p iojs-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.xz $(STAGINGSERVER):staging/$(DISTTYPEDIR)/$(FULLVERSION)/iojs-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.xz
367+ ssh $(STAGINGSERVER) "touch staging/$(DISTTYPEDIR)/$(FULLVERSION)/iojs-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.xz.done"
368+ endif
324369
325370haswrk =$(shell which wrk > /dev/null 2>&1; echo $$? )
326371wrk :
0 commit comments