@@ -5,6 +5,9 @@ PYTHON ?= python
5
5
DESTDIR ?=
6
6
SIGN ?=
7
7
PREFIX ?= /usr/local
8
+ STAGINGSERVER ?= iojs-www
9
+
10
+ OSTYPE := $(shell uname -s | tr '[A-Z]' '[a-z]')
8
11
9
12
# Determine EXEEXT
10
13
EXEEXT := $(shell $(PYTHON ) -c \
@@ -56,15 +59,15 @@ uninstall:
56
59
$(PYTHON ) tools/install.py $@ ' $(DESTDIR)' ' $(PREFIX)'
57
60
58
61
clean :
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 )
60
63
@if [ -d out ]; then find out/ -name ' *.o' -o -name ' *.a' | xargs rm -rf; fi
61
64
-rm -rf node_modules
62
65
63
66
distclean :
64
67
-rm -rf out
65
68
-rm -f config.gypi icu_config.gypi
66
69
-rm -f config.mk
67
- -rm -rf $(NODE_EXE ) $(NODE_G_EXE ) blog.html email.md
70
+ -rm -rf $(NODE_EXE ) $(NODE_G_EXE )
68
71
-rm -rf node_modules
69
72
-rm -rf deps/icu
70
73
-rm -rf deps/icu4c* .tgz deps/icu4c* .zip deps/icu-tmp
@@ -184,14 +187,49 @@ docclean:
184
187
185
188
RAWVER =$(shell $(PYTHON ) tools/getnodeversion.py)
186
189
VERSION =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)
187
200
FULLVERSION =$(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 )
188
225
RELEASE =$(shell sed -ne 's/\#define NODE_VERSION_IS_RELEASE \([01]\) /\1/p' src/node_version.h)
189
226
PLATFORM =$(shell uname | tr '[:upper:]' '[:lower:]')
190
227
NPMVERSION =v$(shell cat deps/npm/package.json | grep '"version"' | sed 's/^[^:]* : "\([^"]* \) ",.*/\1/')
228
+
191
229
ifeq ($(findstring x86_64,$(shell uname -m) ) ,x86_64)
192
230
DESTCPU ?= x64
193
231
else
194
- DESTCPU ?= ia32
232
+ DESTCPU ?= x86
195
233
endif
196
234
ifeq ($(DESTCPU ) ,x64)
197
235
ARCH =x64
@@ -202,26 +240,24 @@ else
202
240
ARCH =x86
203
241
endif
204
242
endif
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
208
247
endif
248
+ ifeq ($(DESTCPU ) ,ia32)
249
+ override DESTCPU =x86
250
+ endif
251
+
209
252
TARNAME =iojs-$(FULLVERSION )
210
253
TARBALL =$(TARNAME ) .tar
211
254
BINARYNAME =$(TARNAME ) -$(PLATFORM ) -$(ARCH )
212
255
BINARYTAR =$(BINARYNAME ) .tar
256
+ # OSX doesn't have xz installed by default, http://macpkg.sourceforge.net/
213
257
XZ =$(shell which xz > /dev/null 2>&1; echo $$? )
214
258
XZ_COMPRESSION ?= 9
215
- PKG =out/ $(TARNAME ) .pkg
259
+ PKG =$(TARNAME ) .pkg
216
260
PACKAGEMAKER ?= /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
-
225
261
PKGDIR =out/dist-osx
226
262
227
263
release-only :
@@ -236,7 +272,7 @@ release-only:
236
272
echo " " >&2 ; \
237
273
exit 1 ; \
238
274
fi
239
- @if [ " $( NIGHTLY ) " != " " -o " $( RELEASE) " = " 1" ]; then \
275
+ @if [ " $( DISTTYPE ) " != " release " -o " $( RELEASE) " = " 1" ]; then \
240
276
exit 0; \
241
277
else \
242
278
echo " " >&2 ; \
@@ -246,29 +282,28 @@ release-only:
246
282
exit 1 ; \
247
283
fi
248
284
249
- pkg : $(PKG )
250
-
251
285
$(PKG ) : release-only
252
286
rm -rf $(PKGDIR )
253
287
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
257
288
$(PYTHON ) ./configure --dest-cpu=x64 --tag=$(TAG )
258
289
$(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
267
295
$(PACKAGEMAKER ) \
268
- --id " org.nodejs.Node " \
296
+ --id " org.iojs.pkg " \
269
297
--doc tools/osx-pkg.pmdoc \
270
298
--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"
272
307
273
308
$(TARBALL ) : release-only $(NODE_EXE ) doc
274
309
git checkout-index -a -f --prefix=$(TARNAME ) /
@@ -291,6 +326,20 @@ endif
291
326
292
327
tar : $(TARBALL )
293
328
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
+
294
343
$(BINARYTAR ) : release-only
295
344
rm -rf $(BINARYNAME )
296
345
rm -rf out/deps out/Release
@@ -309,18 +358,14 @@ endif
309
358
310
359
binary : $(BINARYTAR )
311
360
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
324
369
325
370
haswrk =$(shell which wrk > /dev/null 2>&1; echo $$? )
326
371
wrk :
0 commit comments