2021-08-05 21:33:18 +00:00
|
|
|
{ lib, stdenv, fetchurl, fetchpatch
|
2021-09-18 10:52:07 +00:00
|
|
|
, cmake, perl, go, python3
|
2021-08-05 21:33:18 +00:00
|
|
|
, protobuf, zlib, gtest, brotli, lz4, zstd, libusb1, pcre2, fmt_7
|
2021-06-04 09:07:49 +00:00
|
|
|
}:
|
|
|
|
|
2021-09-18 10:52:07 +00:00
|
|
|
let
|
|
|
|
pythonEnv = python3.withPackages(ps: [ ps.protobuf ]);
|
|
|
|
in
|
|
|
|
|
2021-06-04 09:07:49 +00:00
|
|
|
stdenv.mkDerivation rec {
|
|
|
|
pname = "android-tools";
|
2022-01-13 20:06:32 +00:00
|
|
|
version = "31.0.3p1";
|
2021-06-04 09:07:49 +00:00
|
|
|
|
|
|
|
src = fetchurl {
|
|
|
|
url = "https://github.com/nmeum/android-tools/releases/download/${version}/android-tools-${version}.tar.xz";
|
2022-01-13 20:06:32 +00:00
|
|
|
sha256 = "1f2svy381r798hjinrc2xiwz13gkkqxfill343zvv8jqkn8rzxhf";
|
2021-06-04 09:07:49 +00:00
|
|
|
};
|
|
|
|
|
2021-08-05 21:33:18 +00:00
|
|
|
patches = [
|
|
|
|
# fmt 8 breaks the build but we can use fmt 7 from Nixpkgs:
|
|
|
|
(fetchpatch {
|
|
|
|
# Vendor google's version of fmtlib
|
|
|
|
url = "https://github.com/nmeum/android-tools/commit/21061c1dfb006c22304053c1f6f9e48ae4cbe25a.patch";
|
|
|
|
sha256 = "17mcsgfc3i8xq4hck0ppnzafh15aljxy7j2q4djcmwnvrkv9kx3s";
|
|
|
|
revert = true;
|
|
|
|
excludes = [ "vendor/fmtlib" ];
|
|
|
|
})
|
2022-10-30 15:09:59 +00:00
|
|
|
./android-tools-kernel-headers-6.0.diff
|
2021-08-05 21:33:18 +00:00
|
|
|
];
|
|
|
|
|
2022-10-30 15:09:59 +00:00
|
|
|
postPatch = lib.optionalString stdenv.isDarwin ''
|
|
|
|
sed -i 's/usb_linux/usb_osx/g' vendor/CMakeLists.{adb,fastboot}.txt
|
|
|
|
sed -i 's/libselinux libsepol/ /g;s#selinux/libselinux/include##g' vendor/CMakeLists.{fastboot,mke2fs}.txt
|
|
|
|
sed -z -i 's/add_library(libselinux.*selinux\/libsepol\/include)//g' vendor/CMakeLists.fastboot.txt
|
|
|
|
sed -i 's/e2fsdroid//g' vendor/CMakeLists.txt
|
|
|
|
sed -z -i 's/add_executable(e2fsdroid.*e2fsprogs\/misc)//g' vendor/CMakeLists.mke2fs.txt
|
|
|
|
'';
|
|
|
|
|
2021-06-04 09:07:49 +00:00
|
|
|
nativeBuildInputs = [ cmake perl go ];
|
2021-08-05 21:33:18 +00:00
|
|
|
buildInputs = [ protobuf zlib gtest brotli lz4 zstd libusb1 pcre2 fmt_7 ];
|
2021-09-18 10:52:07 +00:00
|
|
|
propagatedBuildInputs = [ pythonEnv ];
|
2021-06-04 09:07:49 +00:00
|
|
|
|
|
|
|
# Don't try to fetch any Go modules via the network:
|
|
|
|
GOFLAGS = [ "-mod=vendor" ];
|
|
|
|
|
2022-10-30 15:09:59 +00:00
|
|
|
NIX_CFLAGS_COMPILE = lib.optionals stdenv.isDarwin [
|
|
|
|
"-D_DARWIN_C_SOURCE"
|
|
|
|
];
|
|
|
|
|
|
|
|
NIX_LDFLAGS = lib.optionals stdenv.isDarwin [
|
|
|
|
"-framework CoreFoundation"
|
|
|
|
"-framework IOKit"
|
|
|
|
];
|
|
|
|
|
2021-06-04 09:07:49 +00:00
|
|
|
preConfigure = ''
|
|
|
|
export GOCACHE=$TMPDIR/go-cache
|
|
|
|
'';
|
|
|
|
|
2021-09-18 10:52:07 +00:00
|
|
|
postInstall = ''
|
|
|
|
install -Dm755 ../vendor/avb/avbtool.py -t $out/bin
|
|
|
|
'';
|
|
|
|
|
2021-06-04 09:07:49 +00:00
|
|
|
meta = with lib; {
|
|
|
|
description = "Android SDK platform tools";
|
|
|
|
longDescription = ''
|
|
|
|
Android SDK Platform-Tools is a component for the Android SDK. It
|
|
|
|
includes tools that interface with the Android platform, such as adb and
|
|
|
|
fastboot. These tools are required for Android app development. They're
|
|
|
|
also needed if you want to unlock your device bootloader and flash it
|
|
|
|
with a new system image.
|
|
|
|
Currently the following tools are supported:
|
|
|
|
- adb
|
|
|
|
- fastboot
|
|
|
|
- mke2fs.android (required by fastboot)
|
|
|
|
- simg2img, img2simg, append2simg
|
2022-01-13 20:06:32 +00:00
|
|
|
- lpdump, lpmake, lpadd, lpflash, lpunpack
|
|
|
|
- mkbootimg, unpack_bootimg, repack_bootimg
|
2021-06-04 09:07:49 +00:00
|
|
|
'';
|
|
|
|
# https://developer.android.com/studio/command-line#tools-platform
|
|
|
|
# https://developer.android.com/studio/releases/platform-tools
|
|
|
|
homepage = "https://github.com/nmeum/android-tools";
|
|
|
|
license = with licenses; [ asl20 unicode-dfs-2015 ];
|
2022-10-30 15:09:59 +00:00
|
|
|
platforms = platforms.unix;
|
2021-06-04 09:07:49 +00:00
|
|
|
maintainers = with maintainers; [ primeos ];
|
|
|
|
};
|
|
|
|
}
|