Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion pkgs/development/mobile/androidenv/compose-android-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,19 @@ let
] ++ extraLicenses);
in
rec {
deployAndroidPackage = callPackage ./deploy-androidpackage.nix {
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" ];
in
deployAndroidPackages ({
inherit os buildInputs meta;
packages = [ package ];
patchesInstructions = { "${package.name}" = patchInstructions; };
} // extraParams
));

platform-tools = callPackage ./platform-tools.nix {
inherit deployAndroidPackage;
Expand Down
46 changes: 0 additions & 46 deletions pkgs/development/mobile/androidenv/deploy-androidpackage.nix

This file was deleted.

57 changes: 57 additions & 0 deletions pkgs/development/mobile/androidenv/deploy-androidpackages.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
{stdenv, lib, unzip, mkLicenses}:
{packages, os ? null, nativeBuildInputs ? [], buildInputs ? [], patchesInstructions ? {}, meta ? {}, ...}@args:

let
extraParams = removeAttrs args [ "packages" "os" "buildInputs" "nativeBuildInputs" "patchesInstructions" ];
sortedPackages = builtins.sort (x: y: builtins.lessThan x.name y.name) packages;
in
stdenv.mkDerivation ({
inherit buildInputs;
pname = lib.concatMapStringsSep "-" (package: package.name) sortedPackages;
version = lib.concatMapStringsSep "-" (package: package.revision) sortedPackages;
src = map (package:
if os != null && builtins.hasAttr os package.archives then package.archives.${os} else package.archives.all
) packages;
nativeBuildInputs = [ unzip ] ++ nativeBuildInputs;
preferLocalBuild = true;

unpackPhase = ''
buildDir=$PWD
i=0
for srcArchive in $src; do
extractedZip="extractedzip-$i"
i=$((i+1))
cd "$buildDir"
mkdir "$extractedZip"
cd "$extractedZip"
unpackFile "$srcArchive"
done
'';

installPhase = lib.concatStrings (lib.imap0 (i: package: ''
cd $buildDir/extractedzip-${toString i}

# Most Android Zip packages have a root folder, but some don't. We unpack
# the zip file in a folder and we try to discover whether it has a single root
# folder. If this is the case, we adjust the current working folder.
if [ "$(find . -mindepth 1 -maxdepth 1 -type d | wc -l)" -eq 1 ]; then
cd "$(find . -mindepth 1 -maxdepth 1 -type d)"
fi
extractedZip="$PWD"

packageBaseDir=$out/libexec/android-sdk/${package.path}
mkdir -p $packageBaseDir
cd $packageBaseDir
cp -a $extractedZip/* .
${patchesInstructions.${package.name}}
'') packages);

# Some executables that have been patched with patchelf may not work any longer after they have been stripped.
dontStrip = true;
dontPatchELF = true;
dontAutoPatchelf = true;

meta = {
description = lib.concatMapStringsSep "\n" (package: package.displayName) packages;
} // meta;
} // extraParams)
4 changes: 2 additions & 2 deletions pkgs/development/mobile/androidenv/examples/shell.nix
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@
sha256 = "1wg61h4gndm3vcprdcg7rc4s1v3jkm5xd7lw8r2f67w502y94gcy";
}),
pkgs ? import nixpkgsSource {
config.allowUnfree = true;
config.allowUnfree = true;
},
*/

# If you want to use the in-tree version of nixpkgs:
pkgs ? import ../../../../.. {
config.allowUnfree = true;
config.allowUnfree = true;
},

config ? pkgs.config
Expand Down