summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Markmann <tm@ayena.de>2016-06-30 18:46:32 (GMT)
committerTobias Markmann <tm@ayena.de>2016-06-30 18:46:49 (GMT)
commita1be6105b97dddc1e03db0075f6ca3fc47fa8e1d (patch)
tree9abb38c4966a2b7871257b0f2e5df90764ce70c7
parent82dd5a11131b3bd3641316b87aa279d806c970b0 (diff)
downloadswift-a1be6105b97dddc1e03db0075f6ca3fc47fa8e1d.zip
swift-a1be6105b97dddc1e03db0075f6ca3fc47fa8e1d.tar.bz2
Add initial support for code signing on OS X
See DEVELOPMENT.md for instructions. Test-Information: Tested using a self-signed code signing certificate created using Keychain Access.app. Compared the output of 'codesign -vvv -d' on Swift.app with preinstall apps. The output looks much the same except for the signing authority. Change-Id: Idbb3209ad917091c371ced61ec8a77e3e5d18884
-rw-r--r--BuildTools/SCons/SConscript.boot4
-rw-r--r--DEVELOPMENT.md5
-rwxr-xr-xSwift/Packaging/MacOSX/package.sh6
-rw-r--r--Swift/QtUI/SConscript2
4 files changed, 16 insertions, 1 deletions
diff --git a/BuildTools/SCons/SConscript.boot b/BuildTools/SCons/SConscript.boot
index 13a49b8..f845159 100644
--- a/BuildTools/SCons/SConscript.boot
+++ b/BuildTools/SCons/SConscript.boot
@@ -104,6 +104,7 @@ vars.Add(BoolVariable("unbound", "Build bundled ldns and unbound. Use them for D
vars.Add(BoolVariable("check_headers", "Independently build compilation units for all Swiften headers for detecting missing dependencies.", "no"))
vars.Add("win_target_arch", "Target architecture for Windows builds. x86 for 32-bit (default) or x86_64 for 64-bit.", "x86")
vars.Add(BoolVariable("install_git_hooks", "Install git hooks", "true"))
+vars.Add("codesign_identity", "macOS code signing identity to be passed to codesign when building the distribution package. Must match the Commen Name of the Subject of the code signing certificate.", "")
################################################################################
# Set up default build & configure environment
@@ -370,6 +371,9 @@ if env["PLATFORM"] == "hpux" :
# FIXME: Need -AA for linking C++ but not C
#env.Append(LINKFLAGS = ["-AA"])
+# Code signing
+if env["PLATFORM"] == "darwin" :
+ env["CODE_SIGN_IDENTITY"] = env["codesign_identity"]
# Testing
env["TEST_TYPE"] = env["test"]
diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md
index 761fad3..2447853 100644
--- a/DEVELOPMENT.md
+++ b/DEVELOPMENT.md
@@ -35,6 +35,11 @@ Note: The unit and integration tests are build targets. When passing specific bu
### Mac OS X
The Mac OS X package consists of a disk image (.dmg) file containing an independently deployable **Swift.app** application bundle.
+For creating the Mac OS X package, i.e. the disk image, simply call `./scons.sh dist=1`. To additionally code sign the **Swift.app** application
+bundle, append `codesign_identity="Developer ID Application: Something here"` with your developer certificate identity to the `scons` command.
+
+**WARNING: Code signing has not been tested with third-party signed certificates yet!**
+
### Windows
The Windows package consist of a Widnows Installer (.msi) file. This is generated using the Windows Installer XML Toolset.
diff --git a/Swift/Packaging/MacOSX/package.sh b/Swift/Packaging/MacOSX/package.sh
index a13a03c..7a63237 100755
--- a/Swift/Packaging/MacOSX/package.sh
+++ b/Swift/Packaging/MacOSX/package.sh
@@ -4,6 +4,7 @@ APP=$1
TEMPLATE=$2
TARGET=$3
QTDIR=$4
+CODESIGN_IDENTITY=$5
if [[ ! -f "$TEMPLATE" || ! -d "$APP" || ! -d "$QTDIR" || -z "$TARGET" ]]; then
echo "Error"
@@ -30,6 +31,11 @@ rm "$WC_DIR"/`basename $APP`/Contents/PlugIns/bearer/*.dylib
# Remove debugging symbols from the application bundle
rm -rf "$WC_DIR"/`basename $APP`/Contents/MacOS/*.dSYM
+# Codesign the app bundle if requested by caller
+if [ ! -z "$CODESIGN_IDENTITY" ]; then
+ codesign --verbose --force --deep --sign "$CODESIGN_IDENTITY" "$WC_DIR"/`basename $APP`
+fi
+
hdiutil detach "$WC_DIR" -quiet -force
rm -f $TARGET
hdiutil convert "$WC_DMG" -quiet -format UDZO -imagekey zlib-level=9 -o "$TARGET"
diff --git a/Swift/QtUI/SConscript b/Swift/QtUI/SConscript
index 9c3d0af..4b3d716 100644
--- a/Swift/QtUI/SConscript
+++ b/Swift/QtUI/SConscript
@@ -368,7 +368,7 @@ if env["PLATFORM"] == "darwin" :
commonResources[""] = commonResources.get("", []) + ["#/Swift/resources/MacOSX/Swift.icns"]
app = myenv.AppBundle("Swift", version = myenv["SWIFT_VERSION"], resources = commonResources, frameworks = frameworks, handlesXMPPURIs = True)
if env["DIST"] :
- myenv.Command(["#/Packages/Swift/Swift-${SWIFT_VERSION}.dmg"], [app], ["Swift/Packaging/MacOSX/package.sh " + app.path + " Swift/Packaging/MacOSX/Swift.dmg.gz $TARGET $QTDIR"])
+ myenv.Command(["#/Packages/Swift/Swift-${SWIFT_VERSION}.dmg"], [app], ["Swift/Packaging/MacOSX/package.sh " + app.path + " Swift/Packaging/MacOSX/Swift.dmg.gz $TARGET $QTDIR " + "\"$CODE_SIGN_IDENTITY\""])
dsym = myenv.Command(["Swift-${SWIFT_VERSION}.dSYM"], ["Swift"], ["dsymutil -o ${TARGET} ${SOURCE}"])
myenv.Command(["#/Packages/Swift/Swift-${SWIFT_VERSION}.dSYM.zip"], dsym, ["cd ${SOURCE.dir} && zip -r ${TARGET.abspath} ${SOURCE.name}"])