From 5a702240813b172d096961edb4c461973b09998b Mon Sep 17 00:00:00 2001 From: Standa Opichal Date: Tue, 26 Jan 2010 20:48:51 +0100 Subject: [PATCH] Adding OS X .dmg build scripts. Simply place this into the root of your nodejs git working copy and run ./tools/osx-dist.sh. It will create an dist-osx folder which will comprise of the resulting .dmg file (install path is /usr/local/nodejs with symlinks added to /usr/local/bin) along with other files used during its construction. $ ls -1 dist-osx/ nodejs-v0.1.26-11-gcd6397c nodejs-v0.1.26-11-gcd6397c.dmg nodejs-v0.1.26-11-gcd6397c.pkg nodejs-v0.1.26-11-gcd6397c.plist The resulting installed package is going to be visible using the OS X 'pkgutil --packages' command. You can even safely uninstall sudoing 'pkgutil --unlink org.nodejs.NodeJS-...' and subsequently let the system forget about the package being ever seen by 'pkgutil --forget org.nodejs.NodeJS-...'. Here is the current package ID I have installed: $ pkgutil --pkgs | grep node org.nodejs.NodeJS-v0.1.26-11-gcd6397c Use this patch freely without hesitation. Signed-off-by: Standa Opichal --- tools/osx-dist.sh | 23 +++++++++++++ tools/osx-pkg-dmg-create.sh | 65 +++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100755 tools/osx-dist.sh create mode 100755 tools/osx-pkg-dmg-create.sh diff --git a/tools/osx-dist.sh b/tools/osx-dist.sh new file mode 100755 index 0000000000..d139bf4ac6 --- /dev/null +++ b/tools/osx-dist.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +TOOLS=`dirname $0` +ROOT=$TOOLS/.. + +VERSION=`git describe` +CONTENTS=dist-osx/nodejs-$VERSION + +# go build it in the root of the git repository +pushd $ROOT + +./configure --prefix=/usr/local/nodejs +make +make install DESTDIR="$CONTENTS" + +mkdir -p "$CONTENTS/usr/local/bin" +pushd "$CONTENTS/usr/local/bin" +ln -s ../nodejs/bin/* . +popd # $CONTENTS/usr/local/bin + +popd # $ROOT + +"$TOOLS/osx-pkg-dmg-create.sh" "$ROOT/$CONTENTS" NodeJS $VERSION 'org.nodejs' diff --git a/tools/osx-pkg-dmg-create.sh b/tools/osx-pkg-dmg-create.sh new file mode 100755 index 0000000000..e288d8f190 --- /dev/null +++ b/tools/osx-pkg-dmg-create.sh @@ -0,0 +1,65 @@ +#!/bin/bash +# Create a complete OS .dmg file (it needs the Apple Developers Tools installed) +# usage: +# pkg-create.sh +# + +CONTENTS=$1 +shift +NAME=$1 +shift +VERSION=$1 +shift +VENDOR=$1 + +PKGID="$VENDOR.$NAME-$VERSION" + +# unused pkg-info entries so far +# +# CFBundleExecutable +# $NAME +# CFBundleSignature +# ???? + +# +# Need the .plist file in order for the packagemaker to create a package which the +# pkgutil --packages later on would return an entry about. pkgutil can then --unlink +# and --forget about the package nicely. +# +cat > "$CONTENTS.plist" < + + + + CFBundleDevelopmentRegion + en + CFBundleIdentifier + $PKGID + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $NAME + CFBundlePackageType + APPL + CFBundleShortVersionString + $VERSION + CFBundleVersion + $VERSION + + +PINFO + +packagemaker=/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker + +$packagemaker \ + --id "$PKGID" \ + --info "$CONTENTS.plist" \ + --root "$CONTENTS" \ + --target 10.5 \ + --out "$CONTENTS".pkg + +hdiutil create "$CONTENTS.dmg" \ + -format UDZO -ov \ + -volname "$NAME $VERSION" \ + -srcfolder $CONTENTS.pkg +