summaryrefslogtreecommitdiffstats
path: root/pkgs/development
diff options
context:
space:
mode:
authorSander van der Burg <sander@conference-compass.com>2013-01-16 17:09:08 +0100
committerSander van der Burg <sander@conference-compass.com>2013-01-16 17:09:08 +0100
commit729a112f726177a2f663d13d6e5ed7e4fdfe256a (patch)
tree9620058de1a2deeaed4ecf807dd24d7e32a15ce3 /pkgs/development
parentf1531391c0a6cc25cb40b1c7fe054a825c20c0ff (diff)
Implemented iosDistribute flag, that allows someone to build iPhone distribution builds
Diffstat (limited to 'pkgs/development')
-rw-r--r--pkgs/development/mobile/titaniumenv/build-app.nix41
-rw-r--r--pkgs/development/mobile/titaniumenv/titaniumsdk.nix3
2 files changed, 39 insertions, 5 deletions
diff --git a/pkgs/development/mobile/titaniumenv/build-app.nix b/pkgs/development/mobile/titaniumenv/build-app.nix
index 0fd4929bda76..5a06e809c3d3 100644
--- a/pkgs/development/mobile/titaniumenv/build-app.nix
+++ b/pkgs/development/mobile/titaniumenv/build-app.nix
@@ -1,7 +1,7 @@
{stdenv, androidsdk, titaniumsdk, xcodewrapper}:
{ appId, name, src, target, androidPlatformVersions ? [ "8" ]
, release ? false, androidKeyStore ? null, androidKeyAlias ? null, androidKeyStorePassword ? null
-, iosKeyFile ? null, iosCertificateName ? null, iosCertificate ? null, iosCertificatePassword ? null
+, iosKeyFile ? null, iosCertificateName ? null, iosCertificate ? null, iosCertificatePassword ? null, iosDistribute ? false
}:
assert (release && target == "android") -> androidKeyStore != null && androidKeyAlias != null && androidKeyStorePassword != null;
@@ -12,6 +12,8 @@ let
platformVersions = androidPlatformVersions;
useGoogleAPIs = true;
};
+
+ deleteKeychain = "security delete-keychain $keychainName";
in
stdenv.mkDerivation {
inherit name src;
@@ -30,8 +32,7 @@ stdenv.mkDerivation {
"${titaniumsdk}/mobilesdk/*/*/android/builder.py build ${name} ${androidsdkComposition}/libexec/android-sdk-* $(pwd) ${appId}"
else if target == "iphone" then
- if release then
- ''
+ if iosDistribute then ''
export HOME=/Users/$(whoami)
export keychainName=$(basename $out)
@@ -51,11 +52,39 @@ stdenv.mkDerivation {
cp ${iosKeyFile} "$HOME/Library/MobileDevice/Provisioning Profiles/$provisioningId.mobileprovision"
fi
- ${titaniumsdk}/mobilesdk/*/*/iphone/builder.py adhoc 6.0 $(pwd) ${appId} ${name} "$provisioningId" "${iosCertificateName}" universal "$HOME/Library/Keychains/$keychainName"
+ ${titaniumsdk}/mobilesdk/*/*/iphone/builder.py distribute 6.0 $(pwd) ${appId} ${name} "$provisioningId" "${iosCertificateName}" $out universal "$HOME/Library/Keychains/$keychainName"
# Remove our generated keychain
- security delete-keychain $keychainName
+ ${deleteKeychain}
+ ''
+ else
+ if release then
+ ''
+ export HOME=/Users/$(whoami)
+ export keychainName=$(basename $out)
+
+ # Create a keychain with the component hash name (should always be unique)
+ security create-keychain -p "" $keychainName
+ security default-keychain -s $keychainName
+ security unlock-keychain -p "" $keychainName
+ security import ${iosCertificate} -k $keychainName -P "${iosCertificatePassword}" -A
+
+ provisioningId=$(grep UUID -A1 -a ${iosKeyFile} | grep -o "[-A-Z0-9]\{36\}")
+
+ # Ensure that the requested provisioning profile can be found
+
+ if [ ! -f "$HOME/Library/MobileDevice/Provisioning Profiles" ]
+ then
+ mkdir -p "$HOME/Library/MobileDevice/Provisioning Profiles"
+ cp ${iosKeyFile} "$HOME/Library/MobileDevice/Provisioning Profiles/$provisioningId.mobileprovision"
+ fi
+
+ ${titaniumsdk}/mobilesdk/*/*/iphone/builder.py adhoc 6.0 $(pwd) ${appId} ${name} "$provisioningId" "${iosCertificateName}" universal "$HOME/Library/Keychains/$keychainName"
+
+ # Remove our generated keychain
+
+ ${deleteKeychain}
''
else
''
@@ -84,4 +113,6 @@ stdenv.mkDerivation {
else if target == "iphone" then ""
else throw "Target: ${target} is not supported!"}
'';
+
+ failureHook = stdenv.lib.optionalString (release && target == "iphone") deleteKeychain;
}
diff --git a/pkgs/development/mobile/titaniumenv/titaniumsdk.nix b/pkgs/development/mobile/titaniumenv/titaniumsdk.nix
index 5e1943b1bdc0..d3831a9c2bea 100644
--- a/pkgs/development/mobile/titaniumenv/titaniumsdk.nix
+++ b/pkgs/development/mobile/titaniumenv/titaniumsdk.nix
@@ -53,5 +53,8 @@ stdenv.mkDerivation {
--prefix PYTHONPATH : ${python.modules.sqlite3}/lib/python*/site-packages \
--prefix PATH : ${jdk}/bin \
--prefix JAVA_HOME : ${jdk}
+ '' + stdenv.lib.optionalString (stdenv.system == "x86_64-darwin") ''
+ # 'ditto' utility is needed to copy stuff to the Xcode organizer. Dirty, but this allows it to work.
+ sed -i -e "s|ditto|/usr/bin/ditto|g" $out/mobilesdk/osx/*/iphone/builder.py
'';
}