about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorMarie Ramlow <me@nycode.dev>2024-06-11 20:36:24 +0200
committerMarie Ramlow <me@nycode.dev>2024-06-17 09:50:09 +0200
commita5a093288ed7a8cda825912dbbc99f26609d59ed (patch)
tree07392c3eda2c7d01143b5e77d81c37a28dde48a5 /pkgs
parent11eb12b0cafd044ebdfd7353bd1aafb56976b232 (diff)
androidndkPkgs: remove code duplication
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/development/androidndk-pkgs/default.nix74
1 files changed, 9 insertions, 65 deletions
diff --git a/pkgs/development/androidndk-pkgs/default.nix b/pkgs/development/androidndk-pkgs/default.nix
index 8aa7eefe4215e..3e90aefc31f1c 100644
--- a/pkgs/development/androidndk-pkgs/default.nix
+++ b/pkgs/development/androidndk-pkgs/default.nix
@@ -1,41 +1,9 @@
 { lib, androidenv, buildPackages, pkgs, targetPackages
 }:
 
-{
-  "21" =
+let
+  makeNdkPkgs = ndkVersion:
     let
-      ndkVersion = "21.0.6113669";
-
-      buildAndroidComposition = buildPackages.buildPackages.androidenv.composeAndroidPackages {
-        includeNDK = true;
-        inherit ndkVersion;
-      };
-
-      androidComposition = androidenv.composeAndroidPackages {
-        includeNDK = true;
-        inherit ndkVersion;
-      };
-    in
-    import ./androidndk-pkgs.nix {
-      inherit lib;
-      inherit (buildPackages)
-        makeWrapper autoPatchelfHook;
-      inherit (pkgs)
-        stdenv
-        runCommand wrapBintoolsWith wrapCCWith;
-      # buildPackages.foo rather than buildPackages.buildPackages.foo would work,
-      # but for splicing messing up on infinite recursion for the variants we
-      # *dont't* use. Using this workaround, but also making a test to ensure
-      # these two really are the same.
-      buildAndroidndk = buildAndroidComposition.ndk-bundle;
-      androidndk = androidComposition.ndk-bundle;
-      targetAndroidndkPkgs = if targetPackages ? androidndkPkgs_21 then targetPackages.androidndkPkgs_21 else throw "androidndkPkgs_21: no targetPackages, use `buildPackages.androidndkPkgs_21";
-    };
-
-  "23b" =
-    let
-      ndkVersion = "23.1.7779620";
-
       buildAndroidComposition = buildPackages.buildPackages.androidenv.composeAndroidPackages {
         includeNDK = true;
         inherit ndkVersion;
@@ -45,6 +13,7 @@
         includeNDK = true;
         inherit ndkVersion;
       };
+      majorVersion = lib.versions.major ndkVersion;
     in
     import ./androidndk-pkgs.nix {
       inherit lib;
@@ -59,37 +28,12 @@
       # these two really are the same.
       buildAndroidndk = buildAndroidComposition.ndk-bundle;
       androidndk = androidComposition.ndk-bundle;
-      targetAndroidndkPkgs = if targetPackages ? androidndkPkgs_23b then targetPackages.androidndkPkgs_23b else throw "androidndkPkgs_23b: no targetPackages, use `buildPackages.androidndkPkgs_23b";
-    };
-
-  "24" =
-    let
-      ndkVersion = "24.0.8215888";
-
-      buildAndroidComposition = buildPackages.buildPackages.androidenv.composeAndroidPackages {
-        includeNDK = true;
-        inherit ndkVersion;
-      };
-
-      androidComposition = androidenv.composeAndroidPackages {
-        includeNDK = true;
-        inherit ndkVersion;
-      };
-    in
-    import ./androidndk-pkgs.nix {
-      inherit lib;
-      inherit (buildPackages)
-        makeWrapper autoPatchelfHook;
-      inherit (pkgs)
-        stdenv
-        runCommand wrapBintoolsWith wrapCCWith;
-      # buildPackages.foo rather than buildPackages.buildPackages.foo would work,
-      # but for splicing messing up on infinite recursion for the variants we
-      # *dont't* use. Using this workaround, but also making a test to ensure
-      # these two really are the same.
-      buildAndroidndk = buildAndroidComposition.ndk-bundle;
-      androidndk = androidComposition.ndk-bundle;
-      targetAndroidndkPkgs = if targetPackages ? androidndkPkgs_24 then targetPackages.androidndkPkgs_24 else throw "androidndkPkgs_24: no targetPackages, use `buildPackages.androidndkPkgs_24";
+      targetAndroidndkPkgs = if targetPackages ? "androidndkPkgs_${majorVersion}" then targetPackages."androidndkPkgs_${majorVersion}" else throw "androidndkPkgs_${majorVersion}: no targetPackages, use `buildPackages.androidndkPkgs_${majorVersion}";
     };
+in
 
+{
+  "21" = makeNdkPkgs "21.0.6113669";
+  "23b" = makeNdkPkgs "23.1.7779620";
+  "24" = makeNdkPkgs "24.0.8215888";
 }