Fil-C on Nix

Filnix wiki

mbrock/filnix

tests/gtkmm.nix

gtkmm runtime checks on a Broadway display; see gtkmm/gtkmm*-runtime.cc.

λpkgs, pkgsFilc, major
let
8gtkmm=
if major ≡ 3 then pkgsFilc.gtkmm3 else pkgsFilc.gtkmm4
9gtk=
if major ≡ 3 then pkgsFilc.gtk3 else pkgsFilc.gtk4
10module=
if major ≡ 3 then "gtkmm-3.0" else "gtkmm-4.0"
11server=
if major ≡ 3 then "broadwayd" else "gtk4-broadwayd"
in
pkgsFilc.stdenv.mkDerivation
14name=
"filc-gtkmm${toStringmajor}-runtime-check"
15dontUnpack=
true
16nativeBuildInputs=
pkgs.pkg-config
17buildInputs=
18FONTCONFIG_FILE=
pkgs.makeFontsConffontDirectories = pkgs.dejavu_fonts;
21buildPhase=
$CXX -std=c++17 ${./gtkmm}/gtkmm${toStringmajor}-runtime.cc \
$(pkg-config --cflags --libs ${module}) -o gtkmm-check
export XDG_RUNTIME_DIR="$TMPDIR/runtime" XDG_CACHE_HOME="$TMPDIR/cache"
mkdir -m 700 "$XDG_RUNTIME_DIR" "$XDG_CACHE_HOME"
export GDK_BACKEND=broadway BROADWAY_DISPLAY=:5 GTK_A11Y=none NO_AT_BRIDGE=1
${gtk.out}/bin/${server} :5 > broadway.log 2>&1 &
server_pid=$!
trap 'kill "$server_pid" 2>/dev/null || true' EXIT
for attempt in $(seq 1 100); do
status=0
./gtkmm-check > result && break || status=$?
if [ "$status" != 77 ] || ! kill -0 "$server_pid"; then
cat broadway.log
exit 1
fi
sleep 0.1
done
test "$status" = 0
cat result
42installPhase=
''cp result "$out"''