mirror of
https://github.com/chatmail/core.git
synced 2026-05-14 20:36:30 +03:00
build(nix): add outputs for Android binaries
Using NDK 24 because NDK 23 does not have getauxval() function.
This commit is contained in:
137
flake.lock
generated
137
flake.lock
generated
@@ -1,8 +1,50 @@
|
|||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
|
"android": {
|
||||||
|
"inputs": {
|
||||||
|
"devshell": "devshell",
|
||||||
|
"flake-utils": "flake-utils_2",
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1710633978,
|
||||||
|
"narHash": "sha256-yemnwSvW7cdWtXGpivFA5jDO35rGPs6fqxlQ4l6ODXs=",
|
||||||
|
"owner": "tadfisher",
|
||||||
|
"repo": "android-nixpkgs",
|
||||||
|
"rev": "e91fb3d8517538e5ad9b422c9a4f604b56008a9e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tadfisher",
|
||||||
|
"repo": "android-nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"devshell": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": [
|
||||||
|
"android",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1708939976,
|
||||||
|
"narHash": "sha256-O5+nFozxz2Vubpdl1YZtPrilcIXPcRAjqNdNE8oCRoA=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "devshell",
|
||||||
|
"rev": "5ddecd67edbd568ebe0a55905273e56cc82aabe3",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "devshell",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"fenix": {
|
"fenix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"rust-analyzer-src": "rust-analyzer-src"
|
"rust-analyzer-src": "rust-analyzer-src"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
@@ -23,6 +65,42 @@
|
|||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1701680307,
|
||||||
|
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_2": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709126324,
|
||||||
|
"narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "d465f4819400de7c8d874d50b982301f28a84605",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_3": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_3"
|
||||||
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1710146030,
|
"lastModified": 1710146030,
|
||||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||||
@@ -39,7 +117,7 @@
|
|||||||
},
|
},
|
||||||
"naersk": {
|
"naersk": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_2"
|
"nixpkgs": "nixpkgs_3"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1698420672,
|
"lastModified": 1698420672,
|
||||||
@@ -71,6 +149,22 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709237383,
|
||||||
|
"narHash": "sha256-cy6ArO4k5qTx+l5o+0mL9f5fa86tYUX3ozE1S+Txlds=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "1536926ef5621b09bba54035ae2bb6d806d72ac8",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1710631334,
|
"lastModified": 1710631334,
|
||||||
"narHash": "sha256-rL5LSYd85kplL5othxK5lmAtjyMOBg390sGBTb3LRMM=",
|
"narHash": "sha256-rL5LSYd85kplL5othxK5lmAtjyMOBg390sGBTb3LRMM=",
|
||||||
@@ -86,7 +180,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1710765496,
|
"lastModified": 1710765496,
|
||||||
"narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=",
|
"narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=",
|
||||||
@@ -100,7 +194,7 @@
|
|||||||
"type": "indirect"
|
"type": "indirect"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"nixpkgs_4": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1710631334,
|
"lastModified": 1710631334,
|
||||||
"narHash": "sha256-rL5LSYd85kplL5othxK5lmAtjyMOBg390sGBTb3LRMM=",
|
"narHash": "sha256-rL5LSYd85kplL5othxK5lmAtjyMOBg390sGBTb3LRMM=",
|
||||||
@@ -118,11 +212,12 @@
|
|||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"android": "android",
|
||||||
"fenix": "fenix",
|
"fenix": "fenix",
|
||||||
"flake-utils": "flake-utils",
|
"flake-utils": "flake-utils_3",
|
||||||
"naersk": "naersk",
|
"naersk": "naersk",
|
||||||
"nix-filter": "nix-filter",
|
"nix-filter": "nix-filter",
|
||||||
"nixpkgs": "nixpkgs_3"
|
"nixpkgs": "nixpkgs_4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rust-analyzer-src": {
|
"rust-analyzer-src": {
|
||||||
@@ -156,6 +251,36 @@
|
|||||||
"repo": "default",
|
"repo": "default",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"systems_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|||||||
79
flake.nix
79
flake.nix
@@ -6,8 +6,9 @@
|
|||||||
naersk.url = "github:nix-community/naersk";
|
naersk.url = "github:nix-community/naersk";
|
||||||
nix-filter.url = "github:numtide/nix-filter";
|
nix-filter.url = "github:numtide/nix-filter";
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
android.url = "github:tadfisher/android-nixpkgs";
|
||||||
};
|
};
|
||||||
outputs = { self, nixpkgs, flake-utils, nix-filter, naersk, fenix }:
|
outputs = { self, nixpkgs, flake-utils, nix-filter, naersk, fenix, android }:
|
||||||
flake-utils.lib.eachDefaultSystem (system:
|
flake-utils.lib.eachDefaultSystem (system:
|
||||||
let
|
let
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
@@ -15,6 +16,11 @@
|
|||||||
fenixPkgs = fenix.packages.${system};
|
fenixPkgs = fenix.packages.${system};
|
||||||
naersk' = pkgs.callPackage naersk { };
|
naersk' = pkgs.callPackage naersk { };
|
||||||
manifest = (pkgs.lib.importTOML ./Cargo.toml).package;
|
manifest = (pkgs.lib.importTOML ./Cargo.toml).package;
|
||||||
|
androidSdk = android.sdk.${system} (sdkPkgs:
|
||||||
|
builtins.attrValues {
|
||||||
|
inherit (sdkPkgs) ndk-24-0-8215888 cmdline-tools-latest;
|
||||||
|
});
|
||||||
|
androidNdkRoot = "${androidSdk}/share/android-sdk/ndk/24.0.8215888";
|
||||||
|
|
||||||
rustSrc = nix-filter.lib {
|
rustSrc = nix-filter.lib {
|
||||||
root = ./.;
|
root = ./.;
|
||||||
@@ -251,6 +257,71 @@
|
|||||||
LD = "${pkgsCross.stdenv.cc}/bin/${pkgsCross.stdenv.cc.targetPrefix}cc";
|
LD = "${pkgsCross.stdenv.cc}/bin/${pkgsCross.stdenv.cc.targetPrefix}cc";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
androidAttrs = {
|
||||||
|
armeabi-v7a = {
|
||||||
|
cc = "armv7a-linux-androideabi19-clang";
|
||||||
|
rustTarget = "armv7-linux-androideabi";
|
||||||
|
};
|
||||||
|
arm64-v8a = {
|
||||||
|
cc = "aarch64-linux-android21-clang";
|
||||||
|
rustTarget = "aarch64-linux-android";
|
||||||
|
};
|
||||||
|
x86 = {
|
||||||
|
cc = "i686-linux-android19-clang";
|
||||||
|
rustTarget = "i686-linux-android";
|
||||||
|
};
|
||||||
|
x86_64 = {
|
||||||
|
cc = "x86_64-linux-android21-clang";
|
||||||
|
rustTarget = "x86_64-linux-android";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
mkAndroidRustPackage = arch: packageName:
|
||||||
|
let
|
||||||
|
rustTarget = androidAttrs.${arch}.rustTarget;
|
||||||
|
in
|
||||||
|
let
|
||||||
|
toolchain = fenixPkgs.combine [
|
||||||
|
fenixPkgs.stable.rustc
|
||||||
|
fenixPkgs.stable.cargo
|
||||||
|
fenixPkgs.targets.${rustTarget}.stable.rust-std
|
||||||
|
];
|
||||||
|
naersk-lib = pkgs.callPackage naersk {
|
||||||
|
cargo = toolchain;
|
||||||
|
rustc = toolchain;
|
||||||
|
};
|
||||||
|
targetToolchain = "${androidNdkRoot}/toolchains/llvm/prebuilt/linux-x86_64";
|
||||||
|
targetCcName = androidAttrs.${arch}.cc;
|
||||||
|
targetCc = "${targetToolchain}/bin/${targetCcName}";
|
||||||
|
in
|
||||||
|
naersk-lib.buildPackage rec {
|
||||||
|
pname = packageName;
|
||||||
|
cargoBuildOptions = x: x ++ [ "--package" packageName ];
|
||||||
|
version = manifest.version;
|
||||||
|
strictDeps = true;
|
||||||
|
src = rustSrc;
|
||||||
|
nativeBuildInputs = [
|
||||||
|
pkgs.perl # Needed to build vendored OpenSSL.
|
||||||
|
];
|
||||||
|
auditable = false; # Avoid cargo-auditable failures.
|
||||||
|
doCheck = false; # Disable test as it requires network access.
|
||||||
|
|
||||||
|
CARGO_BUILD_TARGET = rustTarget;
|
||||||
|
TARGET_CC = "${targetCc}";
|
||||||
|
CARGO_BUILD_RUSTFLAGS = [
|
||||||
|
"-C"
|
||||||
|
"linker=${TARGET_CC}"
|
||||||
|
];
|
||||||
|
|
||||||
|
CC = "${targetCc}";
|
||||||
|
LD = "${targetCc}";
|
||||||
|
};
|
||||||
|
|
||||||
|
mkAndroidPackages = arch: {
|
||||||
|
"deltachat-rpc-server-${arch}-android" = mkAndroidRustPackage arch "deltachat-rpc-server";
|
||||||
|
"deltachat-repl-${arch}-android" = mkAndroidRustPackage arch "deltachat-repl";
|
||||||
|
};
|
||||||
|
|
||||||
mkRustPackages = arch:
|
mkRustPackages = arch:
|
||||||
let
|
let
|
||||||
rpc-server = mkCrossRustPackage arch "deltachat-rpc-server";
|
rpc-server = mkCrossRustPackage arch "deltachat-rpc-server";
|
||||||
@@ -295,7 +366,11 @@
|
|||||||
mkRustPackages "i686-linux" //
|
mkRustPackages "i686-linux" //
|
||||||
mkRustPackages "x86_64-linux" //
|
mkRustPackages "x86_64-linux" //
|
||||||
mkRustPackages "armv7l-linux" //
|
mkRustPackages "armv7l-linux" //
|
||||||
mkRustPackages "armv6l-linux" // rec {
|
mkRustPackages "armv6l-linux" //
|
||||||
|
mkAndroidPackages "armeabi-v7a" //
|
||||||
|
mkAndroidPackages "arm64-v8a" //
|
||||||
|
mkAndroidPackages "x86" //
|
||||||
|
mkAndroidPackages "x86_64" // rec {
|
||||||
# Run with `nix run .#deltachat-repl foo.db`.
|
# Run with `nix run .#deltachat-repl foo.db`.
|
||||||
deltachat-repl = mkRustPackage "deltachat-repl";
|
deltachat-repl = mkRustPackage "deltachat-repl";
|
||||||
deltachat-rpc-server = mkRustPackage "deltachat-rpc-server";
|
deltachat-rpc-server = mkRustPackage "deltachat-rpc-server";
|
||||||
|
|||||||
Reference in New Issue
Block a user