diff options
author | Sandro <sandro.jaeckel@gmail.com> | 2023-05-12 18:51:49 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-12 18:51:49 +0200 |
commit | a5ca94c021c647a96c689beb38e0984b24ecb05d (patch) | |
tree | 61048971ca0b8507ab379bf985ff190016fe6d93 /pkgs/development/mobile | |
parent | 8050cacb9e1520ca3ad0298f6fa9961889b619d1 (diff) | |
parent | 077588ad1a1449554603c226abe1de824923cc38 (diff) |
Merge pull request #227669 from hadilq/androidenv-put-a-much-nicer-error-message-that-includes-the-available-options
androidenv: raise a much nicer error message
Diffstat (limited to 'pkgs/development/mobile')
-rw-r--r-- | pkgs/development/mobile/androidenv/compose-android-packages.nix | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/pkgs/development/mobile/androidenv/compose-android-packages.nix b/pkgs/development/mobile/androidenv/compose-android-packages.nix index 8c24b10093be0..e08c10cc0efd2 100644 --- a/pkgs/development/mobile/androidenv/compose-android-packages.nix +++ b/pkgs/development/mobile/androidenv/compose-android-packages.nix @@ -116,6 +116,7 @@ rec { deployAndroidPackages = callPackage ./deploy-androidpackages.nix { inherit stdenv lib mkLicenses; }; + deployAndroidPackage = ({package, os ? null, buildInputs ? [], patchInstructions ? "", meta ? {}, ...}@args: let extraParams = removeAttrs args [ "package" "os" "buildInputs" "patchInstructions" ]; @@ -127,15 +128,25 @@ rec { } // extraParams )); + # put a much nicer error message that includes the available options. + check-version = packages: package: version: + if lib.hasAttrByPath [ package version ] packages then + packages.${package}.${version} + else + throw '' + The version ${version} is missing in package ${package}. + The only available versions are ${builtins.concatStringsSep ", " (builtins.attrNames packages.${package})}. + ''; + platform-tools = callPackage ./platform-tools.nix { inherit deployAndroidPackage; os = if stdenv.system == "aarch64-darwin" then "macosx" else os; # "macosx" is a universal binary here - package = packages.platform-tools.${platformToolsVersion}; + package = check-version packages "platform-tools" platformToolsVersion; }; tools = callPackage ./tools.nix { inherit deployAndroidPackage os; - package = packages.tools.${toolsVersion}; + package = check-version packages "tools" toolsVersion; postInstall = '' ${linkPlugin { name = "platform-tools"; plugin = platform-tools; }} @@ -152,7 +163,7 @@ rec { build-tools = map (version: callPackage ./build-tools.nix { inherit deployAndroidPackage os; - package = packages.build-tools.${version}; + package = check-version packages "build-tools" version; postInstall = '' ${linkPlugin { name = "tools"; plugin = tools; check = toolsVersion != null; }} @@ -162,7 +173,7 @@ rec { emulator = callPackage ./emulator.nix { inherit deployAndroidPackage os; - package = packages.emulator.${emulatorVersion}; + package = check-version packages "emulator" emulatorVersion; postInstall = '' ${linkSystemImages { images = system-images; check = includeSystemImages; }} @@ -172,14 +183,14 @@ rec { platforms = map (version: deployAndroidPackage { inherit os; - package = packages.platforms.${version}; + package = check-version packages "platforms" version; } ) platformVersions; sources = map (version: deployAndroidPackage { inherit os; - package = packages.sources.${version}; + package = check-version packages "sources" version; } ) platformVersions; @@ -223,7 +234,7 @@ rec { cmake = map (version: callPackage ./cmake.nix { inherit deployAndroidPackage os; - package = packages.cmake.${version}; + package = check-version packages "cmake" version; } ) cmakeVersions; @@ -243,14 +254,14 @@ rec { google-apis = map (version: deployAndroidPackage { inherit os; - package = addons.addons.${version}.google_apis; + package = (check-version addons "addons" version).google_apis; } ) (builtins.filter (platformVersion: platformVersion < "26") platformVersions); # API level 26 and higher include Google APIs by default google-tv-addons = map (version: deployAndroidPackage { inherit os; - package = addons.addons.${version}.google_tv_addon; + package = (check-version addons "addons" version).google_tv_addon; } ) platformVersions; @@ -320,7 +331,7 @@ rec { '' else callPackage ./cmdline-tools.nix { inherit deployAndroidPackage os cmdLineToolsVersion; - package = packages.cmdline-tools.${cmdLineToolsVersion}; + package = check-version packages "cmdline-tools" cmdLineToolsVersion; postInstall = '' # Symlink all requested plugins |