diff --git a/.github/workflows/deltachat-rpc-server.yml b/.github/workflows/deltachat-rpc-server.yml index e3bb4f023..1076c7508 100644 --- a/.github/workflows/deltachat-rpc-server.yml +++ b/.github/workflows/deltachat-rpc-server.yml @@ -248,6 +248,10 @@ jobs: cp result/*.whl dist/ nix build .#deltachat-rpc-server-win32-wheel cp result/*.whl dist/ + nix build .#deltachat-rpc-server-arm64-v8a-android-wheel + cp result/*.whl dist/ + nix build .#deltachat-rpc-server-armeabi-v7a-android-wheel + cp result/*.whl dist/ nix build .#deltachat-rpc-server-source cp result/*.tar.gz dist/ python3 scripts/wheel-rpc-server.py x86_64-darwin bin/deltachat-rpc-server-x86_64-macos diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index fd459dd93..509a1ade8 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -55,7 +55,9 @@ jobs: - deltachat-rpc-server-aarch64-linux - deltachat-rpc-server-aarch64-linux-wheel - deltachat-rpc-server-arm64-v8a-android + - deltachat-rpc-server-arm64-v8a-android-wheel - deltachat-rpc-server-armeabi-v7a-android + - deltachat-rpc-server-armeabi-v7a-android-wheel - deltachat-rpc-server-armv6l-linux - deltachat-rpc-server-armv6l-linux-wheel - deltachat-rpc-server-armv7l-linux diff --git a/flake.nix b/flake.nix index 24538f190..a30ce4472 100644 --- a/flake.nix +++ b/flake.nix @@ -309,10 +309,41 @@ LD = "${targetCc}"; }; - mkAndroidPackages = arch: { - "deltachat-rpc-server-${arch}-android" = mkAndroidRustPackage arch "deltachat-rpc-server"; - "deltachat-repl-${arch}-android" = mkAndroidRustPackage arch "deltachat-repl"; - }; + mkAndroidPackages = arch: + let + rpc-server = mkAndroidRustPackage arch "deltachat-rpc-server"; + in + { + "deltachat-rpc-server-${arch}-android" = rpc-server; + "deltachat-repl-${arch}-android" = mkAndroidRustPackage arch "deltachat-repl"; + "deltachat-rpc-server-${arch}-android-wheel" = + pkgs.stdenv.mkDerivation { + pname = "deltachat-rpc-server-${arch}-android-wheel"; + version = manifest.version; + src = nix-filter.lib { + root = ./.; + include = [ + "scripts/wheel-rpc-server.py" + "deltachat-rpc-server/README.md" + "LICENSE" + "Cargo.toml" + ]; + }; + nativeBuildInputs = [ + pkgs.python3 + pkgs.python3Packages.wheel + ]; + buildInputs = [ + rpc-server + ]; + buildPhase = '' + mkdir tmp + cp ${rpc-server}/bin/deltachat-rpc-server tmp/deltachat-rpc-server + python3 scripts/wheel-rpc-server.py ${arch}-android tmp/deltachat-rpc-server + ''; + installPhase = ''mkdir -p $out; cp -av deltachat_rpc_server-*.whl $out''; + }; + }; mkRustPackages = arch: let diff --git a/scripts/wheel-rpc-server.py b/scripts/wheel-rpc-server.py index 6ac1ee621..4118ec411 100755 --- a/scripts/wheel-rpc-server.py +++ b/scripts/wheel-rpc-server.py @@ -154,6 +154,8 @@ arch2tags = { "armv6l-linux": "linux_armv6l", "aarch64-linux": "manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64", "i686-linux": "manylinux_2_12_i686.manylinux2010_i686.musllinux_1_1_i686", + "arm64-v8a-android": "android_21_arm64_v8a", + "armeabi-v7a-android": "android_21_armeabi_v7a", "win64": "win_amd64", "win32": "win32", # macOS versions for platform compatibility tags are taken from https://doc.rust-lang.org/rustc/platform-support.html