From a5a093288ed7a8cda825912dbbc99f26609d59ed Mon Sep 17 00:00:00 2001 From: Marie Ramlow Date: Tue, 11 Jun 2024 20:36:24 +0200 Subject: [PATCH 1/4] androidndkPkgs: remove code duplication --- pkgs/development/androidndk-pkgs/default.nix | 124 +++++-------------- 1 file changed, 34 insertions(+), 90 deletions(-) diff --git a/pkgs/development/androidndk-pkgs/default.nix b/pkgs/development/androidndk-pkgs/default.nix index 8aa7eefe4215..3e90aefc31f1 100644 --- a/pkgs/development/androidndk-pkgs/default.nix +++ b/pkgs/development/androidndk-pkgs/default.nix @@ -1,95 +1,39 @@ { lib, androidenv, buildPackages, pkgs, targetPackages }: +let + makeNdkPkgs = ndkVersion: + let + buildAndroidComposition = buildPackages.buildPackages.androidenv.composeAndroidPackages { + includeNDK = true; + inherit ndkVersion; + }; + + androidComposition = androidenv.composeAndroidPackages { + includeNDK = true; + inherit ndkVersion; + }; + majorVersion = lib.versions.major 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_${majorVersion}" then targetPackages."androidndkPkgs_${majorVersion}" else throw "androidndkPkgs_${majorVersion}: no targetPackages, use `buildPackages.androidndkPkgs_${majorVersion}"; + }; +in + { - "21" = - 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; - }; - - 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_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"; - }; - + "21" = makeNdkPkgs "21.0.6113669"; + "23b" = makeNdkPkgs "23.1.7779620"; + "24" = makeNdkPkgs "24.0.8215888"; } From 561bc6622a5e3951adad63bc92fa81951022f850 Mon Sep 17 00:00:00 2001 From: Marie Ramlow Date: Tue, 11 Jun 2024 20:49:50 +0200 Subject: [PATCH 2/4] androidndkPkgs_25: init at 25.2.9519653 --- pkgs/development/androidndk-pkgs/default.nix | 1 + pkgs/top-level/all-packages.nix | 1 + 2 files changed, 2 insertions(+) diff --git a/pkgs/development/androidndk-pkgs/default.nix b/pkgs/development/androidndk-pkgs/default.nix index 3e90aefc31f1..796aa614eabf 100644 --- a/pkgs/development/androidndk-pkgs/default.nix +++ b/pkgs/development/androidndk-pkgs/default.nix @@ -36,4 +36,5 @@ in "21" = makeNdkPkgs "21.0.6113669"; "23b" = makeNdkPkgs "23.1.7779620"; "24" = makeNdkPkgs "24.0.8215888"; + "25" = makeNdkPkgs "25.2.9519653"; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 38c65b8f36c0..30734bc3534f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4083,6 +4083,7 @@ with pkgs; androidndkPkgs_21 = (callPackage ../development/androidndk-pkgs {})."21"; androidndkPkgs_23b = (callPackage ../development/androidndk-pkgs {})."23b"; androidndkPkgs_24 = (callPackage ../development/androidndk-pkgs {})."24"; + androidndkPkgs_25 = (callPackage ../development/androidndk-pkgs {})."25"; androidsdk = androidenv.androidPkgs.androidsdk; From 13effc435c549edd3cee59ac0c8a97679ce8f4e6 Mon Sep 17 00:00:00 2001 From: Marie Ramlow Date: Tue, 11 Jun 2024 20:49:50 +0200 Subject: [PATCH 3/4] androidndkPkgs_26: init at 26.3.11579264 --- pkgs/development/androidndk-pkgs/default.nix | 1 + pkgs/top-level/all-packages.nix | 1 + 2 files changed, 2 insertions(+) diff --git a/pkgs/development/androidndk-pkgs/default.nix b/pkgs/development/androidndk-pkgs/default.nix index 796aa614eabf..b11776acebf5 100644 --- a/pkgs/development/androidndk-pkgs/default.nix +++ b/pkgs/development/androidndk-pkgs/default.nix @@ -37,4 +37,5 @@ in "23b" = makeNdkPkgs "23.1.7779620"; "24" = makeNdkPkgs "24.0.8215888"; "25" = makeNdkPkgs "25.2.9519653"; + "26" = makeNdkPkgs "26.3.11579264"; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 30734bc3534f..bd01ab46f128 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4084,6 +4084,7 @@ with pkgs; androidndkPkgs_23b = (callPackage ../development/androidndk-pkgs {})."23b"; androidndkPkgs_24 = (callPackage ../development/androidndk-pkgs {})."24"; androidndkPkgs_25 = (callPackage ../development/androidndk-pkgs {})."25"; + androidndkPkgs_26 = (callPackage ../development/androidndk-pkgs {})."26"; androidsdk = androidenv.androidPkgs.androidsdk; From 56d1e7a41bbbd1ce45bb088306c65d6395e552f0 Mon Sep 17 00:00:00 2001 From: Marie Ramlow Date: Tue, 11 Jun 2024 22:18:26 +0200 Subject: [PATCH 4/4] lib.systems.examples: update default android sdk to 33, ndk to 26 --- lib/systems/examples.nix | 12 ++++++------ nixos/doc/manual/release-notes/rl-2411.section.md | 4 ++++ pkgs/top-level/all-packages.nix | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/lib/systems/examples.nix b/lib/systems/examples.nix index 6a9427b2d9de..7e5026674843 100644 --- a/lib/systems/examples.nix +++ b/lib/systems/examples.nix @@ -60,23 +60,23 @@ rec { armv7a-android-prebuilt = { config = "armv7a-unknown-linux-androideabi"; rust.rustcTarget = "armv7-linux-androideabi"; - sdkVer = "28"; - ndkVer = "24"; + sdkVer = "33"; + ndkVer = "26"; useAndroidPrebuilt = true; } // platforms.armv7a-android; aarch64-android-prebuilt = { config = "aarch64-unknown-linux-android"; rust.rustcTarget = "aarch64-linux-android"; - sdkVer = "28"; - ndkVer = "24"; + sdkVer = "33"; + ndkVer = "26"; useAndroidPrebuilt = true; }; aarch64-android = { config = "aarch64-unknown-linux-android"; - sdkVer = "30"; - ndkVer = "24"; + sdkVer = "33"; + ndkVer = "26"; libc = "bionic"; useAndroidPrebuilt = false; useLLVM = true; diff --git a/nixos/doc/manual/release-notes/rl-2411.section.md b/nixos/doc/manual/release-notes/rl-2411.section.md index 889d39974932..95984e46013a 100644 --- a/nixos/doc/manual/release-notes/rl-2411.section.md +++ b/nixos/doc/manual/release-notes/rl-2411.section.md @@ -49,6 +49,10 @@ before changing the package to `pkgs.stalwart-mail` in [`services.stalwart-mail.package`](#opt-services.stalwart-mail.package). +- `androidndkPkgs` has been updated to `androidndkPkgs_26`. + +- Android NDK version 26 and SDK version 33 are now the default versions used for cross compilation to android. + - `haskell.lib.compose.justStaticExecutables` now disallows references to GHC in the output by default, to alert users to closure size issues caused by [#164630](https://github.com/NixOS/nixpkgs/issues/164630). See ["Packaging diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index bd01ab46f128..d1567dade65d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4079,7 +4079,7 @@ with pkgs; androidenv = callPackage ../development/mobile/androidenv { }; - androidndkPkgs = androidndkPkgs_21; + androidndkPkgs = androidndkPkgs_26; androidndkPkgs_21 = (callPackage ../development/androidndk-pkgs {})."21"; androidndkPkgs_23b = (callPackage ../development/androidndk-pkgs {})."23b"; androidndkPkgs_24 = (callPackage ../development/androidndk-pkgs {})."24";