build: Sign pkg installer for OS X
authorisaacs <i@izs.me>
Thu, 2 Aug 2012 20:35:41 +0000 (13:35 -0700)
committerisaacs <i@izs.me>
Thu, 2 Aug 2012 20:56:50 +0000 (13:56 -0700)
This makes the installer work on Mountain Lion.

Makefile
tools/osx-codesign.sh [new file with mode: 0644]
tools/osx-productsign.sh [new file with mode: 0644]

index 15546d0..19dfa82 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -3,6 +3,7 @@
 BUILDTYPE ?= Release
 PYTHON ?= python
 DESTDIR ?=
+SIGN ?=
 
 # Default to verbose builds.
 # To do quiet/pretty builds, run `make V=` to set V to an empty string,
@@ -210,6 +211,7 @@ $(PKG):
        rm -rf out/deps out/Release
        ./configure --prefix=$(PKGDIR)/usr/local --without-snapshot --dest-cpu=x64
        $(MAKE) install V=$(V)
+       SIGN="$(SIGN)" PKGDIR="$(PKGDIR)" bash tools/osx-codesign.sh
        lipo $(PKGDIR)/32/usr/local/bin/node \
                $(PKGDIR)/usr/local/bin/node \
                -output $(PKGDIR)/usr/local/bin/node-universal \
@@ -217,9 +219,10 @@ $(PKG):
        mv $(PKGDIR)/usr/local/bin/node-universal $(PKGDIR)/usr/local/bin/node
        rm -rf $(PKGDIR)/32
        $(packagemaker) \
-               --id "org.nodejs.NodeJS-$(VERSION)" \
+               --id "org.nodejs.Node" \
                --doc tools/osx-pkg.pmdoc \
                --out $(PKG)
+       SIGN="$(SIGN)" PKG="$(PKG)" bash tools/osx-productsign.sh
 
 $(TARBALL): node doc
        @if [ "$(shell git status --porcelain | egrep -v '^\?\? ')" = "" ]; then \
diff --git a/tools/osx-codesign.sh b/tools/osx-codesign.sh
new file mode 100644 (file)
index 0000000..65a8d48
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+set -x
+set -e
+
+if ! [ -n "$SIGN" ] && [ $STEP -eq 1 ]; 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-productsign.sh b/tools/osx-productsign.sh
new file mode 100644 (file)
index 0000000..4834c9b
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+set -x
+set -e
+
+if ! [ -n "$SIGN" ]; then
+  echo "No SIGN environment var.  Skipping codesign." >&2
+  exit 0
+fi
+
+productsign --sign "$SIGN" "$PKG" "$PKG"-SIGNED
+mv "$PKG"-SIGNED "$PKG"