diff options
author | Sander van der Burg <sander@conference-compass.com> | 2013-01-07 16:52:42 +0100 |
---|---|---|
committer | Sander van der Burg <sander@conference-compass.com> | 2013-01-07 16:52:42 +0100 |
commit | 5b0ca88d97d005a73a2be38e7a521af70875a718 (patch) | |
tree | b2eba8467fa5e1ecd1cac6ab8513582651647e44 /pkgs/development | |
parent | a547de1ecb14853487d864f70ad5e6a1cb3ce08d (diff) |
- Added xcodeenv: experimental support to build iOS apps through Nix
- Moved mobile development tools into a separate folder
Diffstat (limited to 'pkgs/development')
-rw-r--r-- | pkgs/development/libraries/apr-util/default.nix | 2 | ||||
-rw-r--r-- | pkgs/development/libraries/v8/default.nix | 7 | ||||
-rw-r--r-- | pkgs/development/mobile/androidenv/addon.xml (renamed from pkgs/development/androidenv/addon.xml) | 0 | ||||
-rw-r--r-- | pkgs/development/mobile/androidenv/addons.nix (renamed from pkgs/development/androidenv/addons.nix) | 0 | ||||
-rw-r--r-- | pkgs/development/mobile/androidenv/androidsdk.nix (renamed from pkgs/development/androidenv/androidsdk.nix) | 0 | ||||
-rw-r--r-- | pkgs/development/mobile/androidenv/build-app.nix (renamed from pkgs/development/androidenv/build-app.nix) | 0 | ||||
-rw-r--r-- | pkgs/development/mobile/androidenv/default.nix (renamed from pkgs/development/androidenv/default.nix) | 0 | ||||
-rw-r--r-- | pkgs/development/mobile/androidenv/emulate-app.nix (renamed from pkgs/development/androidenv/emulate-app.nix) | 0 | ||||
-rwxr-xr-x | pkgs/development/mobile/androidenv/generate-addons.sh (renamed from pkgs/development/androidenv/generate-addons.sh) | 0 | ||||
-rw-r--r-- | pkgs/development/mobile/androidenv/generate-addons.xsl (renamed from pkgs/development/androidenv/generate-addons.xsl) | 0 | ||||
-rwxr-xr-x | pkgs/development/mobile/androidenv/generate-platforms.sh (renamed from pkgs/development/androidenv/generate-platforms.sh) | 0 | ||||
-rw-r--r-- | pkgs/development/mobile/androidenv/generate-platforms.xsl (renamed from pkgs/development/androidenv/generate-platforms.xsl) | 0 | ||||
-rwxr-xr-x | pkgs/development/mobile/androidenv/generate-sysimages.sh (renamed from pkgs/development/androidenv/generate-sysimages.sh) | 0 | ||||
-rw-r--r-- | pkgs/development/mobile/androidenv/generate-sysimages.xsl (renamed from pkgs/development/androidenv/generate-sysimages.xsl) | 0 | ||||
-rw-r--r-- | pkgs/development/mobile/androidenv/platform-tools.nix (renamed from pkgs/development/androidenv/platform-tools.nix) | 0 | ||||
-rw-r--r-- | pkgs/development/mobile/androidenv/platforms-linux.nix (renamed from pkgs/development/androidenv/platforms-linux.nix) | 0 | ||||
-rw-r--r-- | pkgs/development/mobile/androidenv/platforms-macosx.nix (renamed from pkgs/development/androidenv/platforms-macosx.nix) | 0 | ||||
-rw-r--r-- | pkgs/development/mobile/androidenv/repository-7.xml (renamed from pkgs/development/androidenv/repository-7.xml) | 0 | ||||
-rw-r--r-- | pkgs/development/mobile/androidenv/support.nix (renamed from pkgs/development/androidenv/support.nix) | 0 | ||||
-rw-r--r-- | pkgs/development/mobile/androidenv/sysimages.nix (renamed from pkgs/development/androidenv/sysimages.nix) | 0 | ||||
-rw-r--r-- | pkgs/development/mobile/xcodeenv/build-app.nix | 92 | ||||
-rw-r--r-- | pkgs/development/mobile/xcodeenv/default.nix | 15 | ||||
-rw-r--r-- | pkgs/development/mobile/xcodeenv/simulate-app.nix | 17 | ||||
-rw-r--r-- | pkgs/development/mobile/xcodeenv/xcodewrapper.nix | 24 | ||||
-rw-r--r-- | pkgs/development/web/nodejs/default.nix | 15 |
25 files changed, 164 insertions, 8 deletions
diff --git a/pkgs/development/libraries/apr-util/default.nix b/pkgs/development/libraries/apr-util/default.nix index ad02f9b84ccee..be3a83975e5d6 100644 --- a/pkgs/development/libraries/apr-util/default.nix +++ b/pkgs/development/libraries/apr-util/default.nix @@ -1,7 +1,7 @@ { stdenv, fetchurl, apr, expat , sslSupport ? true, openssl , bdbSupport ? false, db4 -, ldapSupport ? true, openldap +, ldapSupport ? false, openldap }: assert sslSupport -> openssl != null; diff --git a/pkgs/development/libraries/v8/default.nix b/pkgs/development/libraries/v8/default.nix index 5cd083a7e3303..34026806a52aa 100644 --- a/pkgs/development/libraries/v8/default.nix +++ b/pkgs/development/libraries/v8/default.nix @@ -18,6 +18,7 @@ stdenv.mkDerivation rec { }; configurePhase = '' + ${stdenv.lib.optionalString (stdenv.system == "x86_64-darwin") "export PATH=/usr/bin:$PATH"} mkdir build/gyp ln -sv ${gyp}/bin/gyp build/gyp/gyp ''; @@ -37,7 +38,11 @@ stdenv.mkDerivation rec { mkdir -p $out/bin mkdir -p $out/lib mv -v out/${arch}.release/d8 $out/bin - mv -v out/${arch}.release/lib.target/libv8.so $out/lib + + ${if stdenv.system == "x86_64-darwin" then + "mv -v out/${arch}.release/libv8.dylib $out/lib" + else + "mv -v out/${arch}.release/lib.target/libv8.so $out/lib"} mv -v include $out/ ''; } diff --git a/pkgs/development/androidenv/addon.xml b/pkgs/development/mobile/androidenv/addon.xml index fb5d324d77891..fb5d324d77891 100644 --- a/pkgs/development/androidenv/addon.xml +++ b/pkgs/development/mobile/androidenv/addon.xml diff --git a/pkgs/development/androidenv/addons.nix b/pkgs/development/mobile/androidenv/addons.nix index f26db5c2cb734..f26db5c2cb734 100644 --- a/pkgs/development/androidenv/addons.nix +++ b/pkgs/development/mobile/androidenv/addons.nix diff --git a/pkgs/development/androidenv/androidsdk.nix b/pkgs/development/mobile/androidenv/androidsdk.nix index e8e1f919fe4e2..e8e1f919fe4e2 100644 --- a/pkgs/development/androidenv/androidsdk.nix +++ b/pkgs/development/mobile/androidenv/androidsdk.nix diff --git a/pkgs/development/androidenv/build-app.nix b/pkgs/development/mobile/androidenv/build-app.nix index 571cd2be62325..571cd2be62325 100644 --- a/pkgs/development/androidenv/build-app.nix +++ b/pkgs/development/mobile/androidenv/build-app.nix diff --git a/pkgs/development/androidenv/default.nix b/pkgs/development/mobile/androidenv/default.nix index a76deb98b6ee5..a76deb98b6ee5 100644 --- a/pkgs/development/androidenv/default.nix +++ b/pkgs/development/mobile/androidenv/default.nix diff --git a/pkgs/development/androidenv/emulate-app.nix b/pkgs/development/mobile/androidenv/emulate-app.nix index 3cbe572380664..3cbe572380664 100644 --- a/pkgs/development/androidenv/emulate-app.nix +++ b/pkgs/development/mobile/androidenv/emulate-app.nix diff --git a/pkgs/development/androidenv/generate-addons.sh b/pkgs/development/mobile/androidenv/generate-addons.sh index 9b2cf34eabcca..9b2cf34eabcca 100755 --- a/pkgs/development/androidenv/generate-addons.sh +++ b/pkgs/development/mobile/androidenv/generate-addons.sh diff --git a/pkgs/development/androidenv/generate-addons.xsl b/pkgs/development/mobile/androidenv/generate-addons.xsl index 0100b980a4ef8..0100b980a4ef8 100644 --- a/pkgs/development/androidenv/generate-addons.xsl +++ b/pkgs/development/mobile/androidenv/generate-addons.xsl diff --git a/pkgs/development/androidenv/generate-platforms.sh b/pkgs/development/mobile/androidenv/generate-platforms.sh index 983d8bde87b94..983d8bde87b94 100755 --- a/pkgs/development/androidenv/generate-platforms.sh +++ b/pkgs/development/mobile/androidenv/generate-platforms.sh diff --git a/pkgs/development/androidenv/generate-platforms.xsl b/pkgs/development/mobile/androidenv/generate-platforms.xsl index 1802ae63efe17..1802ae63efe17 100644 --- a/pkgs/development/androidenv/generate-platforms.xsl +++ b/pkgs/development/mobile/androidenv/generate-platforms.xsl diff --git a/pkgs/development/androidenv/generate-sysimages.sh b/pkgs/development/mobile/androidenv/generate-sysimages.sh index dc28c27f45f0f..dc28c27f45f0f 100755 --- a/pkgs/development/androidenv/generate-sysimages.sh +++ b/pkgs/development/mobile/androidenv/generate-sysimages.sh diff --git a/pkgs/development/androidenv/generate-sysimages.xsl b/pkgs/development/mobile/androidenv/generate-sysimages.xsl index 1224ebbd4e8d9..1224ebbd4e8d9 100644 --- a/pkgs/development/androidenv/generate-sysimages.xsl +++ b/pkgs/development/mobile/androidenv/generate-sysimages.xsl diff --git a/pkgs/development/androidenv/platform-tools.nix b/pkgs/development/mobile/androidenv/platform-tools.nix index 5549960829093..5549960829093 100644 --- a/pkgs/development/androidenv/platform-tools.nix +++ b/pkgs/development/mobile/androidenv/platform-tools.nix diff --git a/pkgs/development/androidenv/platforms-linux.nix b/pkgs/development/mobile/androidenv/platforms-linux.nix index f544fcc08beda..f544fcc08beda 100644 --- a/pkgs/development/androidenv/platforms-linux.nix +++ b/pkgs/development/mobile/androidenv/platforms-linux.nix diff --git a/pkgs/development/androidenv/platforms-macosx.nix b/pkgs/development/mobile/androidenv/platforms-macosx.nix index a1434bbe56c16..a1434bbe56c16 100644 --- a/pkgs/development/androidenv/platforms-macosx.nix +++ b/pkgs/development/mobile/androidenv/platforms-macosx.nix diff --git a/pkgs/development/androidenv/repository-7.xml b/pkgs/development/mobile/androidenv/repository-7.xml index 7bbbaf1e36200..7bbbaf1e36200 100644 --- a/pkgs/development/androidenv/repository-7.xml +++ b/pkgs/development/mobile/androidenv/repository-7.xml diff --git a/pkgs/development/androidenv/support.nix b/pkgs/development/mobile/androidenv/support.nix index 2e9690de7a26f..2e9690de7a26f 100644 --- a/pkgs/development/androidenv/support.nix +++ b/pkgs/development/mobile/androidenv/support.nix diff --git a/pkgs/development/androidenv/sysimages.nix b/pkgs/development/mobile/androidenv/sysimages.nix index b35b429898384..b35b429898384 100644 --- a/pkgs/development/androidenv/sysimages.nix +++ b/pkgs/development/mobile/androidenv/sysimages.nix diff --git a/pkgs/development/mobile/xcodeenv/build-app.nix b/pkgs/development/mobile/xcodeenv/build-app.nix new file mode 100644 index 0000000000000..3ac9e4bb95816 --- /dev/null +++ b/pkgs/development/mobile/xcodeenv/build-app.nix @@ -0,0 +1,92 @@ +{stdenv, xcodewrapper}: +{ name +, src +, target ? null +, configuration ? null +, scheme ? null +, sdk ? null +, arch ? null +, xcodeFlags ? "" +, release ? false +, codeSignIdentity ? null +, certificateFile ? null +, certificatePassword ? null +, provisioningProfile ? null +, generateIPA ? false +, generateXCArchive ? false +}: + +assert release -> codeSignIdentity != null && certificateFile != null && certificatePassword != null && provisioningProfile != null; + +let + # Set some default values here + + _target = if target == null then name else target; + _scheme = if scheme == null then name else scheme; + + _configuration = if configuration == null + then + if release then "Release" else "Debug" + else configuration; + + _arch = if arch == null + then + if release then "armv7" else "i386" + else arch; + + _sdk = if sdk == null + then + if release then "iphoneos6.0" else "iphonesimulator6.0" + else sdk; + + # The following is to prevent repetition + deleteKeychain = "security delete-keychain $keychainName"; +in +stdenv.mkDerivation { + inherit name src; + buildInputs = [ xcodewrapper ]; + buildPhase = '' + ${stdenv.lib.optionalString release '' + export HOME=/Users/$(whoami) + keychainName="$(basename $out)" + + # Create a keychain + security create-keychain -p "" $keychainName + security default-keychain -s $keychainName + security unlock-keychain -p "" $keychainName + + # Import the certificate into the keychain + security import ${certificateFile} -k $keychainName -P "${certificatePassword}" -A + + # Determine provisioning ID + PROVISIONING_PROFILE=$(grep UUID -A1 -a ${provisioningProfile} | grep -o "[-A-Z0-9]\{36\}") + + if [ ! -f "$HOME/Library/MobileDevice/Provisioning Profiles/$PROVISIONING_PROFILE.mobileprovision" ] + then + # Copy provisioning profile into the home directory + mkdir -p "$HOME/Library/MobileDevice/Provisioning Profiles" + cp ${provisioningProfile} "$HOME/Library/MobileDevice/Provisioning Profiles/$PROVISIONING_PROFILE.mobileprovision" + fi + + # Check whether the identity can be found + security find-identity -p codesigning $keychainName + ''} + + # Do the building + xcodebuild -target ${_target} -configuration ${_configuration} -scheme ${_scheme} -sdk ${_sdk} -arch ${_arch} ONLY_ACTIVE_ARCH=NO CONFIGURATION_TEMP_DIR=$TMPDIR CONFIGURATION_BUILD_DIR=$out ${if generateXCArchive then "archive" else ""} ${xcodeFlags} ${if release then ''"CODE_SIGN_IDENTITY=${codeSignIdentity}" PROVISIONING_PROFILE=$PROVISIONING_PROFILE OTHER_CODE_SIGN_FLAGS="--keychain $HOME/Library/Keychains/$keychainName"'' else ""} + + ${stdenv.lib.optionalString release '' + ${stdenv.lib.optionalString generateIPA '' + # Produce an IPA file + xcrun -sdk iphoneos PackageApplication -v $out/*.app -o $out/${name}.ipa + ''} + + # Delete our temp keychain + ${deleteKeychain} + ''} + ''; + + failureHook = stdenv.lib.optionalString release deleteKeychain; + + installPhase = "true"; +} diff --git a/pkgs/development/mobile/xcodeenv/default.nix b/pkgs/development/mobile/xcodeenv/default.nix new file mode 100644 index 0000000000000..7f834688e6361 --- /dev/null +++ b/pkgs/development/mobile/xcodeenv/default.nix @@ -0,0 +1,15 @@ +{stdenv}: + +rec { + xcodewrapper = import ./xcodewrapper.nix { + inherit stdenv; + }; + + buildApp = import ./build-app.nix { + inherit stdenv xcodewrapper; + }; + + simulateApp = import ./simulate-app.nix { + inherit stdenv xcodewrapper; + }; +} diff --git a/pkgs/development/mobile/xcodeenv/simulate-app.nix b/pkgs/development/mobile/xcodeenv/simulate-app.nix new file mode 100644 index 0000000000000..456732abe1f4e --- /dev/null +++ b/pkgs/development/mobile/xcodeenv/simulate-app.nix @@ -0,0 +1,17 @@ +{stdenv, xcodewrapper}: +{name, app, device ? "iPhone", baseDir ? ""}: + +stdenv.mkDerivation { + inherit name; + buildCommand = '' + ensureDir $out/bin + cat > $out/bin/run-test-simulator << "EOF" + #! ${stdenv.shell} -e + + cd ${app}/${baseDir}/${name}.app + "$(readlink "${xcodewrapper}/bin/iPhone Simulator")" -SimulateApplication ./${name} -SimulateDevice '${device}' + EOF + chmod +x $out/bin/run-test-simulator + ''; +} + diff --git a/pkgs/development/mobile/xcodeenv/xcodewrapper.nix b/pkgs/development/mobile/xcodeenv/xcodewrapper.nix new file mode 100644 index 0000000000000..39804b1a248b3 --- /dev/null +++ b/pkgs/development/mobile/xcodeenv/xcodewrapper.nix @@ -0,0 +1,24 @@ +{stdenv}: + +let + version = "4.5.2"; +in +stdenv.mkDerivation { + name = "xcode-wrapper-"+version; + buildCommand = '' + ensureDir $out/bin + cd $out/bin + ln -s /usr/bin/xcode-select + ln -s /usr/bin/xcodebuild + ln -s /usr/bin/xcrun + ln -s /usr/bin/security + ln -s "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone Simulator.app/Contents/MacOS/iPhone Simulator" + + # Check if we have the xcodebuild version that we want + if [ -z "$($out/bin/xcodebuild -version | grep ${version})" ] + then + echo "We require xcodebuild version: ${version}" + exit 1 + fi + ''; +} diff --git a/pkgs/development/web/nodejs/default.nix b/pkgs/development/web/nodejs/default.nix index 48d1c30699327..4e00e39fc3d58 100644 --- a/pkgs/development/web/nodejs/default.nix +++ b/pkgs/development/web/nodejs/default.nix @@ -12,20 +12,23 @@ stdenv.mkDerivation rec { configureFlags = [ "--openssl-includes=${openssl}/include" "--openssl-libpath=${openssl}/lib" - "--shared-v8" - "--shared-v8-includes=${v8}/includes" - "--shared-v8-libpath=${v8}/lib" + #"--shared-v8" + #"--shared-v8-includes=${v8}/includes" + #"--shared-v8-libpath=${v8}/lib" ]; - patches = stdenv.lib.optional stdenv.isDarwin ./no-arch-flag.patch; + #patches = stdenv.lib.optional stdenv.isDarwin ./no-arch-flag.patch; prePatch = '' - sed -e 's|^#!/usr/bin/env python$|#!${python}/bin/python|g' -i tools/{*.py,waf-light,node-waf} configure + sed=$(type -p sed) + export PATH=/usr/bin:$PATH + + $sed -e 's|^#!/usr/bin/env python$|#!${python}/bin/python|g' -i tools/{*.py,waf-light,node-waf} configure ''; postInstall = '' - sed -e 's|^#!/usr/bin/env node$|#!'$out'/bin/node|' -i $out/lib/node_modules/npm/bin/npm-cli.js + $sed -e 's|^#!/usr/bin/env node$|#!'$out'/bin/node|' -i $out/lib/node_modules/npm/bin/npm-cli.js '' + stdenv.lib.optionalString stdenv.isDarwin '' install_name_tool -change libv8.dylib ${v8}/lib/libv8.dylib $out/bin/node ''; |