flare-signal-nixified: cross-compile without emulation

This commit is contained in:
Colin 2023-12-06 19:25:09 +00:00
parent 9da604c0af
commit abc0ac88d3
4 changed files with 2050 additions and 3034 deletions

View File

@ -690,17 +690,16 @@ in with final; {
};
});
flare-signal-nixified = prev.flare-signal-nixified.override {
# N.B. blueprint-compiler is in nativeBuildInputs.
# the trick here is to force the aarch64 versions to be used during build (via emulation).
# blueprint-compiler override shared with tangram.
blueprint-compiler = buildInQemu {} (blueprint-compiler.overrideAttrs (_: {
# default is to propagate gobject-introspection *as a buildInput*, when it's supposed to be native.
propagatedBuildInputs = [];
# "Namespace Gtk not available"
doCheck = false;
}));
};
flare-signal-nixified = cantBinfmt ((prev.flare-signal-nixified.override {
crateOverrideFn = cantBinfmt;
}).overrideAttrs (upstream: {
# blueprint-compiler runs on the build machine, but tries to load gobject-introspection types meant for the host.
postPatch = (upstream.postPatch or "") + ''
substituteInPlace data/resources/meson.build --replace \
"find_program('blueprint-compiler')" \
"'env', 'GI_TYPELIB_PATH=${buildPackages.gdk-pixbuf.out}/lib/girepository-1.0:${buildPackages.harfbuzz.out}/lib/girepository-1.0:${buildPackages.gtk4.out}/lib/girepository-1.0:${buildPackages.graphene}/lib/girepository-1.0:${buildPackages.libadwaita}/lib/girepository-1.0:${buildPackages.pango.out}/lib/girepository-1.0', find_program('blueprint-compiler')"
'';
}));
# 2023/07/31: upstreaming is blocked on ostree dep
# needs binfmt: "./configure: line 17437: /nix/store/j2afjl8psjlk5cz23n45w5x8wkks2rkl-bubblewrap-aarch64-unknown-linux-gnu-0.8.0/bin/bwrap: cannot execute binary file: Exec format error"

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +1,14 @@
{
"blurhash 0.1.1 (git+https://github.com/marc0x1/blurhash-rs?branch=pixbuf-patch#c07c0cbcd29b2277e8c1d0f6ae07b2e0fad1ed52)": "082jv82hsyjpng4idwn120hd7hcyln92n47m056fl2pn6b6nrfj8",
"curve25519-dalek 3.2.1 (git+https://github.com/Schmiddiii/curve25519-dalek?rev=1b9f81352bb659999a46af961f069d635ca432d3#1b9f81352bb659999a46af961f069d635ca432d3)": "0bdwcgski8gv1qig2qqpfcq572qdg8lk96cflv0x5lkngy3524fj",
"libsignal-protocol 0.1.0 (git+https://github.com/signalapp/libsignal?tag=v0.28.1#86b2fcc427bf32530866f4e30b18707c1f3682f7)": "1las4cjr94ghvwyif7sk4l7g7mk237h9a6czwv5517jr6ccjn32m",
"libsignal-service 0.1.0 (git+https://github.com/whisperfish/libsignal-service-rs?rev=8789920#87899201123b8095cd0f30317620a6d5b7fd652b)": "0cc1wz9j39faqz92brdydi4lv7dhds4j5fn0nrv1c6mgyhhg9rnn",
"libsignal-service-hyper 0.1.0 (git+https://github.com/whisperfish/libsignal-service-rs?rev=8789920#87899201123b8095cd0f30317620a6d5b7fd652b)": "0cc1wz9j39faqz92brdydi4lv7dhds4j5fn0nrv1c6mgyhhg9rnn",
"poksho 0.7.0 (git+https://github.com/signalapp/libsignal?tag=v0.28.1#86b2fcc427bf32530866f4e30b18707c1f3682f7)": "1las4cjr94ghvwyif7sk4l7g7mk237h9a6czwv5517jr6ccjn32m",
"presage 0.6.0-dev (git+https://github.com/MarcusGrass/presage?rev=d6d8fff#d6d8fff5f5e6429e6fe9d3c6d388323d094fdab6)": "029n526y3i7vz3nlwwcycrkdxyrb1csha6y6c807mj7qgw30laz2",
"presage-store-sled 0.6.0-dev (git+https://github.com/MarcusGrass/presage?rev=d6d8fff#d6d8fff5f5e6429e6fe9d3c6d388323d094fdab6)": "029n526y3i7vz3nlwwcycrkdxyrb1csha6y6c807mj7qgw30laz2",
"signal-crypto 0.1.0 (git+https://github.com/signalapp/libsignal?tag=v0.28.1#86b2fcc427bf32530866f4e30b18707c1f3682f7)": "1las4cjr94ghvwyif7sk4l7g7mk237h9a6czwv5517jr6ccjn32m",
"zkcredential 0.1.0 (git+https://github.com/signalapp/libsignal?tag=v0.28.1#86b2fcc427bf32530866f4e30b18707c1f3682f7)": "1las4cjr94ghvwyif7sk4l7g7mk237h9a6czwv5517jr6ccjn32m",
"zkgroup 0.9.0 (git+https://github.com/signalapp/libsignal?tag=v0.28.1#86b2fcc427bf32530866f4e30b18707c1f3682f7)": "1las4cjr94ghvwyif7sk4l7g7mk237h9a6czwv5517jr6ccjn32m"
"curve25519-dalek 4.0.0 (git+https://github.com/signalapp/curve25519-dalek?tag=signal-curve25519-4.0.0#463e5c7cba32561ffee8a281c4455ff3c25660d4)": "0baapyz09niwn0l64sy5cq1nc9jqsyn78wp7zw893g4mfxhyyi99",
"curve25519-dalek-derive 0.1.0 (git+https://github.com/signalapp/curve25519-dalek?tag=signal-curve25519-4.0.0#463e5c7cba32561ffee8a281c4455ff3c25660d4)": "0baapyz09niwn0l64sy5cq1nc9jqsyn78wp7zw893g4mfxhyyi99",
"libsignal-protocol 0.1.0 (git+https://github.com/signalapp/libsignal?tag=v0.32.0#72f046fe19a5eac22c7abcf9917956f240759364)": "00w7wbw7rw1lvjzpsw3v0fv7ixshpg7dj6dw2qwmdbk8p8xwjahl",
"libsignal-service 0.1.0 (git+https://github.com/whisperfish/libsignal-service-rs?rev=6fc62c8#6fc62c8c67817886560dd2eb99ab5e90f451bd67)": "12ycij5a92y152hnw8l7isxw64hlfbpwk4sj7ih0247m0k96bx77",
"libsignal-service-hyper 0.1.0 (git+https://github.com/whisperfish/libsignal-service-rs?rev=6fc62c8#6fc62c8c67817886560dd2eb99ab5e90f451bd67)": "12ycij5a92y152hnw8l7isxw64hlfbpwk4sj7ih0247m0k96bx77",
"poksho 0.7.0 (git+https://github.com/signalapp/libsignal?tag=v0.32.0#72f046fe19a5eac22c7abcf9917956f240759364)": "00w7wbw7rw1lvjzpsw3v0fv7ixshpg7dj6dw2qwmdbk8p8xwjahl",
"presage 0.6.0-dev (git+https://github.com/Schmiddiii/presage?rev=af72b474099361c68f09aff38182eb26d7c8ca86#af72b474099361c68f09aff38182eb26d7c8ca86)": "1000034fv2cg8dvhzsmxx61lvc7llqi73832vrf7wfc79yj47q8z",
"presage-store-cipher 0.1.0 (git+https://github.com/Schmiddiii/presage?rev=af72b474099361c68f09aff38182eb26d7c8ca86#af72b474099361c68f09aff38182eb26d7c8ca86)": "1000034fv2cg8dvhzsmxx61lvc7llqi73832vrf7wfc79yj47q8z",
"presage-store-sled 0.6.0-dev (git+https://github.com/Schmiddiii/presage?rev=af72b474099361c68f09aff38182eb26d7c8ca86#af72b474099361c68f09aff38182eb26d7c8ca86)": "1000034fv2cg8dvhzsmxx61lvc7llqi73832vrf7wfc79yj47q8z",
"signal-crypto 0.1.0 (git+https://github.com/signalapp/libsignal?tag=v0.32.0#72f046fe19a5eac22c7abcf9917956f240759364)": "00w7wbw7rw1lvjzpsw3v0fv7ixshpg7dj6dw2qwmdbk8p8xwjahl",
"zkcredential 0.1.0 (git+https://github.com/signalapp/libsignal?tag=v0.32.0#72f046fe19a5eac22c7abcf9917956f240759364)": "00w7wbw7rw1lvjzpsw3v0fv7ixshpg7dj6dw2qwmdbk8p8xwjahl",
"zkgroup 0.9.0 (git+https://github.com/signalapp/libsignal?tag=v0.32.0#72f046fe19a5eac22c7abcf9917956f240759364)": "00w7wbw7rw1lvjzpsw3v0fv7ixshpg7dj6dw2qwmdbk8p8xwjahl"
}

View File

@ -6,6 +6,7 @@
{ lib
, appstream-glib
, blueprint-compiler
, buildPackages
, defaultCrateOverrides
, desktop-file-utils
, fetchFromGitLab
@ -28,6 +29,7 @@
, stdenv
, wrapGAppsHook4
, writeText
, crateOverrideFn ? x: x
}:
let
extraCrateOverrides = {
@ -37,7 +39,11 @@ let
domain = "gitlab.com";
owner = "schmiddi-on-mobile";
repo = "flare";
rev = "0.10.1-beta.4";
hash = "sha256-SkHARJ4V8t4dXITH+V36RIfPrWL5Bdju1gahCS2aiWo=";
# flare/Cargo.nix version compatibility:
# - flare 0.10.1-beta.5: errors with curve25519_dalek_backend stuff
# - flare tip (49060eee): same errors as 0.10.1-beta.2
# - flare 0.10.1-beta.2: requires gtk 4.11, not yet in nixpkgs
# - <https://github.com/NixOS/nixpkgs/pull/247766>
@ -68,8 +74,8 @@ let
# hash = "sha256-xkTM8Jeyb89ZUo2lFKNm8HlTe8BTlO/flZmENRfDEm4=";
# rev = "0.10.1-beta.1";
# hash = "sha256-nUR3jnbjMJvI3XbguFLz5yQL3SAXzLkdVwXyhcMeZoc=";
rev = "0.10.0";
hash = "sha256-+9zpYW9xjLe78c2GRL6raFDR5g+R/JWxQzU/ZS+5JtY=";
# rev = "0.10.0";
# hash = "sha256-+9zpYW9xjLe78c2GRL6raFDR5g+R/JWxQzU/ZS+5JtY=";
# rev = "0.9.3";
# hash = "sha256-bTR3Jzzy8dVdBJ4Mo2PYstEnNzBVwiWE8hRBnJ7pJSs=";
# rev = "0.9.2";
@ -191,19 +197,19 @@ let
'';
installPhase = "ninjaInstallPhase";
};
gdk-pixbuf-sys = attrs: attrs // {
nativeBuildInputs = [ pkg-config ];
buildInputs = [ gdk-pixbuf ];
};
gdk4-x11-sys = attrs: attrs // {
nativeBuildInputs = [ pkg-config ];
buildInputs = [ gtk4 ]; # depends on "gtk4_x11"
};
gdk4-wayland-sys = attrs: attrs // {
nativeBuildInputs = [ pkg-config ];
buildInputs = [ gtk4 ]; # depends on "gtk4_wayland"
};
gdk4-x11-sys = attrs: attrs // {
nativeBuildInputs = [ pkg-config ];
buildInputs = [ gtk4 ]; # depends on "gtk4_x11"
};
gio-sys = attrs: attrs // {
nativeBuildInputs = [ pkg-config ];
buildInputs = [ glib ];
@ -216,6 +222,13 @@ let
nativeBuildInputs = [ pkg-config ];
buildInputs = [ libadwaita ];
};
ring = attrs: attrs // {
# CARGO_MANIFEST_LINKS = "ring_core_0_17_5";
postPatch = (attrs.postPatch or "") + ''
substituteInPlace build.rs --replace \
'links = std::env::var("CARGO_MANIFEST_LINKS").unwrap();' 'links = "ring_core_0_17_5".to_string();'
'';
};
sourceview5-sys = attrs: attrs // {
nativeBuildInputs = [ pkg-config ];
buildInputs = [ gtksourceview5 ];
@ -240,8 +253,24 @@ let
cargoNix = import ./Cargo.nix {
inherit pkgs;
release = false;
rootFeatures = [ ]; #< avoids --cfg feature="default", simplifying the rustc CLI so that i can pass it around easier
defaultCrateOverrides = defaultCrateOverrides';
};
in cargoNix.workspaceMembers.flare.build
builtCrates = cargoNix.internal.builtRustCratesWithFeatures {
packageId = "flare";
features = [];
buildRustCrateForPkgsFunc = pkgs: crateArgs: let
crateDeriv = (pkgs.buildRustCrate.override {
defaultCrateOverrides = defaultCrateOverrides';
}) crateArgs;
in
crateOverrideFn crateDeriv;
crateConfigs = cargoNix.internal.crates;
runTests = false;
};
in builtCrates.crates.flare.overrideAttrs (super: {
passthru = (super.passthru or {}) // {
inherit (builtCrates) crates;
};
})