Skip to content

Commit fbc21f3

Browse files
committed
nix: split out android package
1 parent 34aebe2 commit fbc21f3

2 files changed

Lines changed: 66 additions & 61 deletions

File tree

flake.nix

Lines changed: 3 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,6 @@
2929
rustc = fenixToolchain;
3030
};
3131
manifest = (pkgs.lib.importTOML ./Cargo.toml).package;
32-
androidSdk = android.sdk.${system} (sdkPkgs:
33-
builtins.attrValues {
34-
inherit (sdkPkgs) ndk-27-2-12479018 cmdline-tools-latest;
35-
});
36-
androidNdkRoot = "${androidSdk}/share/android-sdk/ndk/27.2.12479018";
3732

3833
rustSrc = nix-filter.lib {
3934
root = ./.;
@@ -106,64 +101,11 @@
106101
version = manifest.version;
107102
};
108103

109-
androidAttrs = {
110-
armeabi-v7a = {
111-
cc = "armv7a-linux-androideabi21-clang";
112-
rustTarget = "armv7-linux-androideabi";
113-
};
114-
arm64-v8a = {
115-
cc = "aarch64-linux-android21-clang";
116-
rustTarget = "aarch64-linux-android";
117-
};
118-
x86 = {
119-
cc = "i686-linux-android21-clang";
120-
rustTarget = "i686-linux-android";
121-
};
122-
x86_64 = {
123-
cc = "x86_64-linux-android21-clang";
124-
rustTarget = "x86_64-linux-android";
125-
};
104+
mkAndroidRustPackage = pkgs.callPackage ./nix/android-package.nix {
105+
inherit naersk fenixPkgs system rustSrc android;
106+
version = manifest.version;
126107
};
127108

128-
mkAndroidRustPackage = arch: packageName:
129-
let
130-
rustTarget = androidAttrs.${arch}.rustTarget;
131-
toolchain = fenixPkgs.combine [
132-
fenixPkgs.stable.rustc
133-
fenixPkgs.stable.cargo
134-
fenixPkgs.targets.${rustTarget}.stable.rust-std
135-
];
136-
naersk-lib = pkgs.callPackage naersk {
137-
cargo = toolchain;
138-
rustc = toolchain;
139-
};
140-
targetToolchain = "${androidNdkRoot}/toolchains/llvm/prebuilt/linux-x86_64";
141-
targetCcName = androidAttrs.${arch}.cc;
142-
targetCc = "${targetToolchain}/bin/${targetCcName}";
143-
in
144-
naersk-lib.buildPackage rec {
145-
pname = packageName;
146-
cargoBuildOptions = x: x ++ [ "--package" packageName ];
147-
version = manifest.version;
148-
strictDeps = true;
149-
src = rustSrc;
150-
nativeBuildInputs = [
151-
pkgs.perl # Needed to build vendored OpenSSL.
152-
];
153-
auditable = false; # Avoid cargo-auditable failures.
154-
doCheck = false; # Disable test as it requires network access.
155-
156-
CARGO_BUILD_TARGET = rustTarget;
157-
TARGET_CC = "${targetCc}";
158-
CARGO_BUILD_RUSTFLAGS = [
159-
"-C"
160-
"linker=${TARGET_CC}"
161-
];
162-
163-
CC = "${targetCc}";
164-
LD = "${targetCc}";
165-
};
166-
167109
mkAndroidPackages = arch:
168110
let
169111
rpc-server = mkAndroidRustPackage arch "deltachat-rpc-server";

nix/android-package.nix

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
{ pkgs, naersk, fenixPkgs, system, version, rustSrc, android }:
2+
arch: packageName:
3+
let
4+
androidSdk = android.sdk.${system} (sdkPkgs:
5+
builtins.attrValues {
6+
inherit (sdkPkgs) ndk-27-2-12479018 cmdline-tools-latest;
7+
});
8+
androidNdkRoot = "${androidSdk}/share/android-sdk/ndk/27.2.12479018";
9+
androidAttrs = {
10+
armeabi-v7a = {
11+
cc = "armv7a-linux-androideabi21-clang";
12+
rustTarget = "armv7-linux-androideabi";
13+
};
14+
arm64-v8a = {
15+
cc = "aarch64-linux-android21-clang";
16+
rustTarget = "aarch64-linux-android";
17+
};
18+
x86 = {
19+
cc = "i686-linux-android21-clang";
20+
rustTarget = "i686-linux-android";
21+
};
22+
x86_64 = {
23+
cc = "x86_64-linux-android21-clang";
24+
rustTarget = "x86_64-linux-android";
25+
};
26+
};
27+
28+
rustTarget = androidAttrs.${arch}.rustTarget;
29+
toolchain = fenixPkgs.combine [
30+
fenixPkgs.stable.rustc
31+
fenixPkgs.stable.cargo
32+
fenixPkgs.targets.${rustTarget}.stable.rust-std
33+
];
34+
naersk-lib = pkgs.callPackage naersk {
35+
cargo = toolchain;
36+
rustc = toolchain;
37+
};
38+
targetToolchain = "${androidNdkRoot}/toolchains/llvm/prebuilt/linux-x86_64";
39+
targetCcName = androidAttrs.${arch}.cc;
40+
targetCc = "${targetToolchain}/bin/${targetCcName}";
41+
in
42+
naersk-lib.buildPackage rec {
43+
pname = packageName;
44+
cargoBuildOptions = x: x ++ [ "--package" packageName ];
45+
inherit version;
46+
strictDeps = true;
47+
src = rustSrc;
48+
nativeBuildInputs = [
49+
pkgs.perl # Needed to build vendored OpenSSL.
50+
];
51+
auditable = false; # Avoid cargo-auditable failures.
52+
doCheck = false; # Disable test as it requires network access.
53+
54+
CARGO_BUILD_TARGET = rustTarget;
55+
TARGET_CC = "${targetCc}";
56+
CARGO_BUILD_RUSTFLAGS = [
57+
"-C"
58+
"linker=${TARGET_CC}"
59+
];
60+
61+
CC = "${targetCc}";
62+
LD = "${targetCc}";
63+
}

0 commit comments

Comments
 (0)