about summary refs log tree commit diff
path: root/pkgs/development/mobile
diff options
context:
space:
mode:
authorJakub Sokołowski <jakub@status.im>2022-12-03 13:29:16 +0100
committerJakub Sokołowski <jakub@status.im>2023-04-06 19:20:56 +0200
commitae08ff7b7172d3d99c95fb94b79489c39b3db78b (patch)
tree9f9279284b3b6e8f1eaa6a39650e60f9452766af /pkgs/development/mobile
parent65277def0f5ba06f8fbcb1c69e64af543d2e4545 (diff)
downloadnixlib-ae08ff7b7172d3d99c95fb94b79489c39b3db78b.tar
nixlib-ae08ff7b7172d3d99c95fb94b79489c39b3db78b.tar.gz
nixlib-ae08ff7b7172d3d99c95fb94b79489c39b3db78b.tar.bz2
nixlib-ae08ff7b7172d3d99c95fb94b79489c39b3db78b.tar.lz
nixlib-ae08ff7b7172d3d99c95fb94b79489c39b3db78b.tar.xz
nixlib-ae08ff7b7172d3d99c95fb94b79489c39b3db78b.tar.zst
nixlib-ae08ff7b7172d3d99c95fb94b79489c39b3db78b.zip
xcodeenv: allow versions higher than specified
Add `allowHigher` option to let higher versions of Xcode.
This is useful when xcodeenv is used for `nix-shell` for developers
and their xcode version might be a bit newer than required one.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
Diffstat (limited to 'pkgs/development/mobile')
-rw-r--r--pkgs/development/mobile/xcodeenv/compose-xcodewrapper.nix19
-rw-r--r--pkgs/development/mobile/xcodeenv/default.nix14
2 files changed, 18 insertions, 15 deletions
diff --git a/pkgs/development/mobile/xcodeenv/compose-xcodewrapper.nix b/pkgs/development/mobile/xcodeenv/compose-xcodewrapper.nix
index 0a469da418a1..fa9e89337615 100644
--- a/pkgs/development/mobile/xcodeenv/compose-xcodewrapper.nix
+++ b/pkgs/development/mobile/xcodeenv/compose-xcodewrapper.nix
@@ -1,10 +1,13 @@
-{stdenv}:
-{version ? "11.1", xcodeBaseDir ? "/Applications/Xcode.app"}:
+{ stdenv, lib }:
+{ version ? "11.1"
+, allowHigher ? false
+, xcodeBaseDir ? "/Applications/Xcode.app" }:
 
 assert stdenv.isDarwin;
 
 stdenv.mkDerivation {
-  name = "xcode-wrapper-"+version;
+  pname = "xcode-wrapper${lib.optionalString allowHigher "-plus"}";
+  inherit version;
   buildCommand = ''
     mkdir -p $out/bin
     cd $out/bin
@@ -24,9 +27,15 @@ stdenv.mkDerivation {
     ln -s "${xcodeBaseDir}/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs"
 
     # Check if we have the xcodebuild version that we want
-    if [ -z "$($out/bin/xcodebuild -version | grep -x 'Xcode ${version}')" ]
+    currVer=$($out/bin/xcodebuild -version | head -n1)
+    ${if allowHigher then ''
+    if [ -z "$(printf '%s\n' "${version}" "$currVer" | sort -V | head -n1)""" != "${version}" ]
+    '' else ''
+    if [ -z "$(echo $currVer | grep -x 'Xcode ${version}')" ]
+    ''}
     then
-        echo "We require xcodebuild version: ${version}"
+        echo "We require xcodebuild version${if allowHigher then " or higher" else ""}: ${version}"
+        echo "Instead what was found: $currVer"
         exit 1
     fi
   '';
diff --git a/pkgs/development/mobile/xcodeenv/default.nix b/pkgs/development/mobile/xcodeenv/default.nix
index 90642ca7d9ac..f63ed63c0479 100644
--- a/pkgs/development/mobile/xcodeenv/default.nix
+++ b/pkgs/development/mobile/xcodeenv/default.nix
@@ -1,15 +1,9 @@
-{ stdenv, lib }:
+{ callPackage }:
 
 rec {
-  composeXcodeWrapper = import ./compose-xcodewrapper.nix {
-    inherit stdenv;
-  };
+  composeXcodeWrapper = callPackage ./compose-xcodewrapper.nix { };
 
-  buildApp = import ./build-app.nix {
-    inherit stdenv lib composeXcodeWrapper;
-  };
+  buildApp = callPackage ./build-app.nix { inherit composeXcodeWrapper; };
 
-  simulateApp = import ./simulate-app.nix {
-    inherit stdenv lib composeXcodeWrapper;
-  };
+  simulateApp = callPackage ./simulate-app.nix { inherit composeXcodeWrapper; };
 }