diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2013-01-17 14:19:14 +0100 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2013-01-17 14:19:14 +0100 |
commit | 5bb548d2e4c866ce55efdd2e1cee5e9e72863156 (patch) | |
tree | 9276447eeac077bcea3e6013ebb37f7bba642be8 /pkgs/development/mobile | |
parent | b4dd943f1635a7e8d2e440b703fa01c6c2126164 (diff) | |
parent | 3544f3223166583f1e5459822250f1821b258c1e (diff) | |
download | nixlib-5bb548d2e4c866ce55efdd2e1cee5e9e72863156.tar nixlib-5bb548d2e4c866ce55efdd2e1cee5e9e72863156.tar.gz nixlib-5bb548d2e4c866ce55efdd2e1cee5e9e72863156.tar.bz2 nixlib-5bb548d2e4c866ce55efdd2e1cee5e9e72863156.tar.lz nixlib-5bb548d2e4c866ce55efdd2e1cee5e9e72863156.tar.xz nixlib-5bb548d2e4c866ce55efdd2e1cee5e9e72863156.tar.zst nixlib-5bb548d2e4c866ce55efdd2e1cee5e9e72863156.zip |
Merge remote-tracking branch 'origin/master' into stdenv-updates
Diffstat (limited to 'pkgs/development/mobile')
-rw-r--r-- | pkgs/development/mobile/titaniumenv/build-app.nix | 41 | ||||
-rw-r--r-- | pkgs/development/mobile/titaniumenv/titaniumsdk.nix | 3 |
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 ''; } |