From abf6896aaf4611492cbccfc8c9d7b872e7ee364b Mon Sep 17 00:00:00 2001 From: Sander van der Burg Date: Wed, 15 Jan 2014 13:37:40 +0100 Subject: [PATCH] Added testcases for signed Android and iOS apps --- .../mobile/titaniumenv/build-app.nix | 6 +- .../mobile/titaniumenv/examples/default.nix | 91 ++++++++++++------ .../examples/kitchensink/default.nix | 46 ++++++--- .../examples/kitchensink/generatekeystore.sh | 10 ++ .../titaniumenv/examples/kitchensink/keystore | Bin 0 -> 1315 bytes .../mobile/titaniumenv/titaniumsdk.nix | 25 ++++- 6 files changed, 128 insertions(+), 50 deletions(-) create mode 100755 pkgs/development/mobile/titaniumenv/examples/kitchensink/generatekeystore.sh create mode 100644 pkgs/development/mobile/titaniumenv/examples/kitchensink/keystore diff --git a/pkgs/development/mobile/titaniumenv/build-app.nix b/pkgs/development/mobile/titaniumenv/build-app.nix index 5dd11454661..83f66af18da 100644 --- a/pkgs/development/mobile/titaniumenv/build-app.nix +++ b/pkgs/development/mobile/titaniumenv/build-app.nix @@ -56,7 +56,7 @@ stdenv.mkDerivation { cp ${iosMobileProvisioningProfile} "$HOME/Library/MobileDevice/Provisioning Profiles/$provisioningId.mobileprovision" fi - ${titaniumsdk}/mobilesdk/*/*/iphone/builder.py distribute 6.0 $(pwd) ${appId} "${_appName}" "$provisioningId" "${iosCertificateName}" $out universal "$HOME/Library/Keychains/$keychainName" + ${titaniumsdk}/mobilesdk/*/*/iphone/builder.py distribute 7.0 $(pwd) ${appId} "${_appName}" "$provisioningId" "${iosCertificateName}" $out universal "$HOME/Library/Keychains/$keychainName" # Remove our generated keychain @@ -84,7 +84,7 @@ stdenv.mkDerivation { cp ${iosMobileProvisioningProfile} "$HOME/Library/MobileDevice/Provisioning Profiles/$provisioningId.mobileprovision" fi - ${titaniumsdk}/mobilesdk/*/*/iphone/builder.py adhoc 6.0 $(pwd) ${appId} "${_appName}" "$provisioningId" "${iosCertificateName}" universal "$HOME/Library/Keychains/$keychainName" + ${titaniumsdk}/mobilesdk/*/*/iphone/builder.py adhoc 7.0 $(pwd) ${appId} "${_appName}" "$provisioningId" "${iosCertificateName}" universal "$HOME/Library/Keychains/$keychainName" # Remove our generated keychain @@ -99,7 +99,7 @@ stdenv.mkDerivation { cp -av * $out cd $out - ${titaniumsdk}/mobilesdk/*/*/iphone/builder.py build 6.0 $(pwd) ${appId} "${_appName}" universal + ${titaniumsdk}/mobilesdk/*/*/iphone/builder.py build 7.0 $(pwd) ${appId} "${_appName}" universal '' else throw "Target: ${target} is not supported!"} diff --git a/pkgs/development/mobile/titaniumenv/examples/default.nix b/pkgs/development/mobile/titaniumenv/examples/default.nix index b82d7e0ee58..e955a1d8865 100644 --- a/pkgs/development/mobile/titaniumenv/examples/default.nix +++ b/pkgs/development/mobile/titaniumenv/examples/default.nix @@ -1,53 +1,90 @@ { nixpkgs ? , systems ? [ "x86_64-linux" "x86_64-darwin" ] , xcodeVersion ? "5.0" +, rename ? false +, newBundleId ? "com.example.kitchensink", iosMobileProvisioningProfile ? null, iosCertificate ? null, iosCertificateName ? "Example", iosCertificatePassword ? "" }: let pkgs = import nixpkgs {}; in rec { - kitchensink_android = pkgs.lib.genAttrs systems (system: + kitchensink_android_debug = pkgs.lib.genAttrs systems (system: let pkgs = import nixpkgs { inherit system; }; in - import ./kitchensink { - inherit (pkgs) fetchgit; - titaniumenv = pkgs.titaniumenv.override { inherit xcodeVersion; }; - target = "android"; - }); + import ./kitchensink { + inherit (pkgs) fetchgit; + titaniumenv = pkgs.titaniumenv.override { inherit xcodeVersion; }; + target = "android"; + }); - emulate_kitchensink = pkgs.lib.genAttrs systems (system: + kitchensink_android_release = pkgs.lib.genAttrs systems (system: let pkgs = import nixpkgs { inherit system; }; in - import ./emulate-kitchensink { - inherit (pkgs) androidenv; - kitchensink = builtins.getAttr system kitchensink_android; - }); + import ./kitchensink { + inherit (pkgs) fetchgit; + titaniumenv = pkgs.titaniumenv.override { inherit xcodeVersion; }; + target = "android"; + release = true; + }); + + emulate_kitchensink_debug = pkgs.lib.genAttrs systems (system: + let + pkgs = import nixpkgs { inherit system; }; + in + import ./emulate-kitchensink { + inherit (pkgs) androidenv; + kitchensink = builtins.getAttr system kitchensink_android_debug; + }); + + emulate_kitchensink_release = pkgs.lib.genAttrs systems (system: + let + pkgs = import nixpkgs { inherit system; }; + in + import ./emulate-kitchensink { + inherit (pkgs) androidenv; + kitchensink = builtins.getAttr system kitchensink_android_release; + }); } // (if builtins.elem "x86_64-darwin" systems then let pkgs = import nixpkgs { system = "x86_64-darwin"; }; in rec { - kitchensink_iphone = import ./kitchensink { - inherit (pkgs) fetchgit; + kitchensink_ios_development = import ./kitchensink { + inherit (pkgs) fetchgit; + titaniumenv = pkgs.titaniumenv.override { inherit xcodeVersion; }; + target = "iphone"; + }; + + simulate_kitchensink_iphone = import ./simulate-kitchensink { + inherit (pkgs) stdenv; + xcodeenv = pkgs.xcodeenv.override { version = xcodeVersion; }; + kitchensink = kitchensink_ios_development; + device = "iPhone"; + }; + + simulate_kitchensink_ipad = import ./simulate-kitchensink { + inherit (pkgs) stdenv; + xcodeenv = pkgs.xcodeenv.override { version = xcodeVersion; }; + kitchensink = kitchensink_ios_development; + device = "iPad"; + }; +} else {}) // (if rename then + let + pkgs = import nixpkgs { system = "x86_64-darwin"; }; + in + { + kitchensink_ipa = import ./kitchensink { + inherit (pkgs) stdenv fetchgit; titaniumenv = pkgs.titaniumenv.override { inherit xcodeVersion; }; target = "iphone"; + release = true; + rename = true; + inherit newBundleId iosMobileProvisioningProfile iosCertificate iosCertificateName iosCertificatePassword; }; - - simulate_kitchensink_iphone = import ./simulate-kitchensink { - inherit (pkgs) stdenv; - xcodeenv = pkgs.xcodeenv.override { version = xcodeVersion; }; - kitchensink = kitchensink_iphone; - device = "iPhone"; - }; + } - simulate_kitchensink_ipad = import ./simulate-kitchensink { - inherit (pkgs) stdenv; - xcodeenv = pkgs.xcodeenv.override { version = xcodeVersion; }; - kitchensink = kitchensink_iphone; - device = "iPad"; - }; -} else {}) +else {}) diff --git a/pkgs/development/mobile/titaniumenv/examples/kitchensink/default.nix b/pkgs/development/mobile/titaniumenv/examples/kitchensink/default.nix index 17834c7fe58..001b91f551d 100644 --- a/pkgs/development/mobile/titaniumenv/examples/kitchensink/default.nix +++ b/pkgs/development/mobile/titaniumenv/examples/kitchensink/default.nix @@ -1,25 +1,41 @@ -{titaniumenv, fetchgit, target, androidPlatformVersions ? [ "11" ]}: +{ titaniumenv, fetchgit, target, androidPlatformVersions ? [ "11" ], release ? false +, rename ? false, stdenv ? null, newBundleId ? null, iosMobileProvisioningProfile ? null, iosCertificate ? null, iosCertificateName ? null, iosCertificatePassword ? null +}: -titaniumenv.buildApp { - name = "KitchenSink-${target}"; - appName = "KitchenSink"; - appId = "com.appcelerator.kitchensink"; +assert rename -> (stdenv != null && newBundleId != null && iosMobileProvisioningProfile != null && iosCertificate != null && iosCertificateName != null && iosCertificatePassword != null); + +let src = fetchgit { url = https://github.com/appcelerator/KitchenSink.git; rev = "d9f39950c0137a1dd67c925ef9e8046a9f0644ff"; sha256 = "0aj42ac262hw9n9blzhfibg61kkbp3wky69rp2yhd11vwjlcq1qc"; }; - inherit target androidPlatformVersions; + # Rename the bundle id to something else + renamedSrc = stdenv.mkDerivation { + name = "KitchenSink-renamedsrc"; + inherit src; + buildPhase = '' + sed -i -e "s|com.appcelerator.kitchensink|${newBundleId}|" tiapp.xml + sed -i -e "s|com.appcelerator.kitchensink|${newBundleId}|" manifest + ''; + installPhase = '' + mkdir -p $out + mv * $out + ''; + }; +in +titaniumenv.buildApp { + name = "KitchenSink-${target}-${if release then "release" else "debug"}"; + appName = "KitchenSink"; + appId = if rename then newBundleId else "com.appcelerator.kitchensink"; + src = if rename then renamedSrc else src; - /*release = true; - androidKeyStore = /home/sander/keystore; - androidKeyAlias = "sander"; - androidKeyStorePassword = "foobar";*/ + inherit target androidPlatformVersions release; - /*release = true; - iosMobileProvisioningProfile = /Users/sander/Downloads/profile.mobileprovision; - iosCertificateName = "My Company"; - iosCertificate = /Users/sander/Downloads/c.p12; - iosCertificatePassword = "";*/ + androidKeyStore = ./keystore; + androidKeyAlias = "myfirstapp"; + androidKeyStorePassword = "mykeystore"; + + inherit iosMobileProvisioningProfile iosCertificate iosCertificateName iosCertificatePassword; } diff --git a/pkgs/development/mobile/titaniumenv/examples/kitchensink/generatekeystore.sh b/pkgs/development/mobile/titaniumenv/examples/kitchensink/generatekeystore.sh new file mode 100755 index 00000000000..57451e8a507 --- /dev/null +++ b/pkgs/development/mobile/titaniumenv/examples/kitchensink/generatekeystore.sh @@ -0,0 +1,10 @@ +#!/bin/sh -e + +( echo "John Doe" + echo "My Company" + echo "My Organization" + echo "My City" + echo "My State" + echo "US" + echo "yes" +) | keytool --genkeypair --alias myfirstapp --keystore ./keystore --storepass mykeystore diff --git a/pkgs/development/mobile/titaniumenv/examples/kitchensink/keystore b/pkgs/development/mobile/titaniumenv/examples/kitchensink/keystore new file mode 100644 index 0000000000000000000000000000000000000000..ee0a9c7989badede112afd57b011d1d53206425b GIT binary patch literal 1315 zcmezO_TO6u1_mYu1_nkj=E|*1%PcA`Nh~N}U|@9aGkPZGYU91qmZWr0|J9S~S;fLt;eb*}E*fgAO#JFsH{hPU6_$9yAt4!w?n*YkYSi*T6 zw;il`$8Y7fd`HV+wlh99n|Y^*M4mW5+b92D1AmyY=P8+W^CxKLEPu!~h2N*OTKu<} zUY^)Hh%z2BF z4()KBJS9ikf1j6cd*b2^|86ejyq&LJ_0x}GZer`fWu?b&P8HnU^lo1w|HH%CxgyE8 zOpk2YXumtc>Fzq4`EnV%7scQ9;t*n7z+`Wo=J`bDSzfBkmQuMdYqfLg5}WzfhVFdP z(A_8fZ^N>yHCDCm6SEnoE&BSc!^W}UOv}QnM?U|W-nHr7iDfx?4}LH24qP?U{r>r5 zTZIL7&2zfUEZnvFWslSXSM%51&aNL~rM$d3e{uY@WHp$2x3a-DzzZBztPy&q29^vA z%$^2K%&rDa%*+dznHZUvSjsDm*$lYZ*tOa`&RMW9voaWz7;+nMvN4CUun9AT1{(?* z@PjxU!W_Pp3c)3bC8>r227DkPc42nkN(JZ4l1f7f12K>YmoUF?rGkG^dSYH?RbokI zex9MQfgnhRTbK)^Hb1u@F|QJ4CbKYySAIsGf=hm?ft)z6p^1T^p^1TkiIJg26qsuQ z=MIponizK&G%@PHf``$diBX=Zv610#eQ={}sgP#SeXlusZ=O8=Cb&Jw=DiEUVLAJT zZGmc;uCWeEfxjbddn11BKl*i-!MD@1LvyY-S~tj=+HZ6MH!u=sa<}1i)-ybe$y*AtS-swH7W6XAh@2s4%e)lh{ zS4}^|eYkDeo6-X#!~1q!iS&O~$S%;>u*FlXQ2B+AhM4g7^PEOKCzd_55v%GBsp-{t zuy~!E_U2`!6Z00=bN^B_P5Ssdsftm>`plA#`&I-_=v>i!|6$bA`D~NA)8ZPcLse54 zeXReT_tau;Y-Iqs7(uh-46c)_@u<@wz#<3;RC`VJa9 zaPiy6Gxf?`kouQ(zT^J&g|)AI&;RGzed%8x->>*dMQ5g*zx2t;@Y+YMvNu0;_gg-8 z`uIxhT;Okq1~uDVGn-beI{)(Uz2bGpuG(yhc builder.py <