0
0
Fork 0
mirror of https://github.com/NixOS/nixpkgs.git synced 2025-07-13 21:50:33 +03:00

treewide: Rename android sdkVer and ndkVer

`sdkVer` conflicts with the old `sdkVer`(now `darwinSdkVersion` but that still uses `sdkVer` if set) used by darwin

This shouldn't be an issue but due to `pkgs/development/interpreters/python/cpython/default.nix`
running `lib.filterAttrs (n: v: ! lib.isDerivation v && n != "passthruFun")` on it's inputs (2 of them are darwin only)
the `throw "Unsupported sdk...` in `pkgs/top-level/darwin-packages.nix` will be triggered.

After this change `pkgsCross.armv7a-android-prebuilt.python3.pythonOnBuildForHost` won't fail with
`error: Unsupported sdk: 33`

Issue was bisected to 3cb23cec23
This commit is contained in:
Artturin 2024-07-25 18:53:17 +03:00
parent 5f2a6de6f9
commit 1144d46f95
4 changed files with 14 additions and 16 deletions

View file

@ -60,23 +60,21 @@ rec {
armv7a-android-prebuilt = { armv7a-android-prebuilt = {
config = "armv7a-unknown-linux-androideabi"; config = "armv7a-unknown-linux-androideabi";
rust.rustcTarget = "armv7-linux-androideabi"; rust.rustcTarget = "armv7-linux-androideabi";
sdkVer = "33";
ndkVer = "26";
useAndroidPrebuilt = true; useAndroidPrebuilt = true;
} // platforms.armv7a-android; } // platforms.armv7a-android;
aarch64-android-prebuilt = { aarch64-android-prebuilt = {
config = "aarch64-unknown-linux-android"; config = "aarch64-unknown-linux-android";
rust.rustcTarget = "aarch64-linux-android"; rust.rustcTarget = "aarch64-linux-android";
sdkVer = "33"; androidSdkVersion = "33";
ndkVer = "26"; androidNdkVersion = "26";
useAndroidPrebuilt = true; useAndroidPrebuilt = true;
}; };
aarch64-android = { aarch64-android = {
config = "aarch64-unknown-linux-android"; config = "aarch64-unknown-linux-android";
sdkVer = "33"; androidSdkVersion = "33";
ndkVer = "26"; androidNdkVersion = "26";
libc = "bionic"; libc = "bionic";
useAndroidPrebuilt = false; useAndroidPrebuilt = false;
useLLVM = true; useLLVM = true;

View file

@ -44,7 +44,7 @@ let
buildInfo = ndkBuildInfoFun stdenv.buildPlatform; buildInfo = ndkBuildInfoFun stdenv.buildPlatform;
targetInfo = ndkTargetInfoFun stdenv.targetPlatform; targetInfo = ndkTargetInfoFun stdenv.targetPlatform;
inherit (stdenv.targetPlatform) sdkVer; androidSdkVersion = if (stdenv.targetPlatform ? androidSdkVersion && stdenv.targetPlatform.androidSdkVersion != null) then stdenv.targetPlatform.androidSdkVersion else (throw "`androidSdkVersion` is not set during the importing of nixpkgs");
suffixSalt = lib.replaceStrings ["-" "."] ["_" "_"] stdenv.targetPlatform.config; suffixSalt = lib.replaceStrings ["-" "."] ["_" "_"] stdenv.targetPlatform.config;
# targetInfo.triple is what Google thinks the toolchain should be, this is a little # targetInfo.triple is what Google thinks the toolchain should be, this is a little
@ -77,8 +77,8 @@ rec {
cp -r ${androidndk}/libexec/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/${buildInfo.double} $out/toolchain cp -r ${androidndk}/libexec/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/${buildInfo.double} $out/toolchain
find $out/toolchain -type d -exec chmod 777 {} \; find $out/toolchain -type d -exec chmod 777 {} \;
if [ ! -d $out/toolchain/sysroot/usr/lib/${targetInfo.triple}/${sdkVer} ]; then if [ ! -d $out/toolchain/sysroot/usr/lib/${targetInfo.triple}/${androidSdkVersion} ]; then
echo "NDK does not contain libraries for SDK version ${sdkVer}"; echo "NDK does not contain libraries for SDK version ${androidSdkVersion}";
exit 1 exit 1
fi fi
@ -86,8 +86,8 @@ rec {
ln -s $out/toolchain/sysroot/usr/lib/${targetInfo.triple}/*.so $out/lib/ ln -s $out/toolchain/sysroot/usr/lib/${targetInfo.triple}/*.so $out/lib/
ln -s $out/toolchain/sysroot/usr/lib/${targetInfo.triple}/*.a $out/lib/ ln -s $out/toolchain/sysroot/usr/lib/${targetInfo.triple}/*.a $out/lib/
chmod +w $out/lib/* chmod +w $out/lib/*
ln -s $out/toolchain/sysroot/usr/lib/${targetInfo.triple}/${sdkVer}/*.so $out/lib/ ln -s $out/toolchain/sysroot/usr/lib/${targetInfo.triple}/${androidSdkVersion}/*.so $out/lib/
ln -s $out/toolchain/sysroot/usr/lib/${targetInfo.triple}/${sdkVer}/*.o $out/lib/ ln -s $out/toolchain/sysroot/usr/lib/${targetInfo.triple}/${androidSdkVersion}/*.o $out/lib/
echo "INPUT(-lc++_static)" > $out/lib/libc++.a echo "INPUT(-lc++_static)" > $out/lib/libc++.a
@ -130,7 +130,7 @@ rec {
bintools = binutils; bintools = binutils;
libc = targetAndroidndkPkgs.libraries; libc = targetAndroidndkPkgs.libraries;
extraBuildCommands = '' extraBuildCommands = ''
echo "-D__ANDROID_API__=${stdenv.targetPlatform.sdkVer}" >> $out/nix-support/cc-cflags echo "-D__ANDROID_API__=${stdenv.targetPlatform.androidSdkVersion}" >> $out/nix-support/cc-cflags
# Android needs executables linked with -pie since version 5.0 # Android needs executables linked with -pie since version 5.0
# Use -fPIC for compilation, and link with -pie if no -shared flag used in ldflags # Use -fPIC for compilation, and link with -pie if no -shared flag used in ldflags
echo "-target ${targetInfo.triple} -fPIC" >> $out/nix-support/cc-cflags echo "-target ${targetInfo.triple} -fPIC" >> $out/nix-support/cc-cflags
@ -151,9 +151,9 @@ rec {
# cross-compiling packages to wrap incorrectly wrap binaries we don't include # cross-compiling packages to wrap incorrectly wrap binaries we don't include
# anyways. # anyways.
libraries = runCommand "bionic-prebuilt" {} '' libraries = runCommand "bionic-prebuilt" {} ''
lpath=${buildAndroidndk}/libexec/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/${buildInfo.double}/sysroot/usr/lib/${targetInfo.triple}/${sdkVer} lpath=${buildAndroidndk}/libexec/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/${buildInfo.double}/sysroot/usr/lib/${targetInfo.triple}/${androidSdkVersion}
if [ ! -d $lpath ]; then if [ ! -d $lpath ]; then
echo "NDK does not contain libraries for SDK version ${sdkVer} <$lpath>" echo "NDK does not contain libraries for SDK version ${androidSdkVersion} <$lpath>"
exit 1 exit 1
fi fi
mkdir -p $out/lib mkdir -p $out/lib

View file

@ -64,7 +64,7 @@ in lib.init bootStages ++ [
cc = if crossSystem.useiOSPrebuilt or false cc = if crossSystem.useiOSPrebuilt or false
then buildPackages.darwin.iosSdkPkgs.clang then buildPackages.darwin.iosSdkPkgs.clang
else if crossSystem.useAndroidPrebuilt or false else if crossSystem.useAndroidPrebuilt or false
then buildPackages."androidndkPkgs_${crossSystem.ndkVer}".clang then buildPackages."androidndkPkgs_${crossSystem.androidNdkVersion}".clang
else if targetPlatform.isGhcjs else if targetPlatform.isGhcjs
# Need to use `throw` so tryEval for splicing works, ugh. Using # Need to use `throw` so tryEval for splicing works, ugh. Using
# `null` or skipping the attribute would cause an eval failure # `null` or skipping the attribute would cause an eval failure

View file

@ -19857,7 +19857,7 @@ with pkgs;
# TODO(@Ericson2314): Build bionic libc from source # TODO(@Ericson2314): Build bionic libc from source
bionic = if stdenv.hostPlatform.useAndroidPrebuilt bionic = if stdenv.hostPlatform.useAndroidPrebuilt
then pkgs."androidndkPkgs_${stdenv.hostPlatform.ndkVer}".libraries then pkgs."androidndkPkgs_${stdenv.hostPlatform.androidNdkVer}".libraries
else callPackage ../os-specific/linux/bionic-prebuilt { }; else callPackage ../os-specific/linux/bionic-prebuilt { };
boolstuff = callPackage ../development/libraries/boolstuff { }; boolstuff = callPackage ../development/libraries/boolstuff { };