From aad572a058134a3dd2525ced4229a25061b0d8b9 Mon Sep 17 00:00:00 2001 From: Colin Date: Tue, 7 Feb 2023 09:46:13 +0000 Subject: [PATCH] cross packages: reduce the emulated package set --- hosts/common/cross.nix | 103 ++++++++++++++++++++++++++++++++++------- 1 file changed, 85 insertions(+), 18 deletions(-) diff --git a/hosts/common/cross.nix b/hosts/common/cross.nix index b640f00c..9d62dc9f 100644 --- a/hosts/common/cross.nix +++ b/hosts/common/cross.nix @@ -1,3 +1,7 @@ +# cross compiling +# - for edge-casey things (e.g. `mesonEmulatorHook`, `depsBuildBuild`), see in nixpkgs: +# `git show da9a9a440415b236f22f57ba67a24ab3fb53f595` + { config, lib, pkgs, ... }: let @@ -54,26 +58,26 @@ in cantarell-fonts # python3.10-skia-pathops cdrtools colord - duplicity # python3.10-s3transfer + # duplicity # python3.10-s3transfer evince flakpak fuzzel fwupd-efi fwupd - gcr + gcr_4 # meson ERROR: Program 'gpg2 gpg' not found or not executable gmime # gnome-keyring # gnome-remote-desktop - gnome-tour - # gnustep-base # (used by unar) + # gnome-tour + gnustep # (gnustep.base is used by unar; can't override individual members) gocryptfs # gocryptfs-2.3-go-modules # grpc gst_all_1 # gst_all_1.gst-editing-services gupnp gupnp_1_6 - # gvfs + # gvfs # meson.build:312:2: ERROR: Assert failed: http required but libxml-2.0 not found flatpak - hdf5 + hdf5 # configure: error: cannot run test program while cross compiling http2 ibus kitty @@ -91,9 +95,9 @@ in ostree pam_mount perl # perl5.36.0-Test-utf8 - pipewire + # pipewire psqlodbc - pulseaudio # python3.10-defcon + # pulseaudio # python3.10-defcon # qgnomeplatform # qtbase qt6 # psqlodbc @@ -103,25 +107,88 @@ in squeekboard sysprof tracker-miners # it just can't run tests - twitter-color-emoji # python3.10-defcon - unar # python3.10-psycopg2 - visidata # python3.10-psycopg2 + # twitter-color-emoji # python3.10-defcon + unar # meson.build:52:2: ERROR: Program 'gpg2 gpg' not found or not executable + visidata # python3.10-psycopg2 python3.10-pandas python3.10-h5py vpnc webp-pixbuf-loader xdg-utils # perl5.36.0-File-BaseDir ; - # pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ - # (py-next: py-prev: { - # defcon = py-prev.defcon.override { inherit (prev.emulated) stdenv; }; - # # psycopg2 = py-prev.psycopg2.override { inherit prev.emulated.stdenv; }; - # }) - # ]; + pipewire = prev.pipewire.overrideAttrs (orig: { + # fix `spa/plugins/bluez5/meson.build:41:0: ERROR: Program 'gdbus-codegen' not found or not executable` + nativeBuildInputs = orig.nativeBuildInputs ++ [ prev.glib ]; + }); + pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ + (py-next: py-prev: { + defcon = py-prev.defcon.overridePythonAttrs (orig: { + # TODO: diagnose and upstream + nativeBuildInputs = orig.nativeBuildInputs ++ orig.nativeCheckInputs; + }); + executing = py-prev.executing.overridePythonAttrs (orig: { + # TODO: confirm & upstream + # test has an assertion that < 1s of CPU time elapsed => flakey + disabledTestPaths = orig.disabledTestPaths or [] ++ [ + # "tests/test_main.py::TestStuff::test_many_source_for_filename_calls" + "tests/test_main.py" + ]; + }); + # h5py = py-prev.h5py.overridePythonAttrs (orig: { + # # XXX: can't upstream until its dependency, hdf5, is fixed. that looks TRICKY. + # # - the `setup_configure.py` in h5py tries to dlopen (and call into) the hdf5 lib to query the version and detect features like MPI + # # - it could be patched with ~10 LoC in the HDF5LibWrapper class. + # # + # # expose numpy and hdf5 as available at build time + # nativeBuildInputs = orig.nativeBuildInputs ++ orig.propagatedBuildInputs ++ orig.buildInputs; + # buildInputs = []; + # # HDF5_DIR = "${hdf5}"; + # }); + mutatormath = py-prev.mutatormath.overridePythonAttrs (orig: { + # TODO: diagnose and upstream + nativeBuildInputs = orig.nativeBuildInputs or [] ++ orig.nativeCheckInputs; + }); + pandas = py-prev.pandas.overridePythonAttrs (orig: { + # TODO: upstream + # XXX: we only actually need numpy when building in ~/nixpkgs repo: not sure why we need all the propagatedBuildInputs here. + # nativeBuildInputs = orig.nativeBuildInputs ++ [ py-next.numpy ]; + nativeBuildInputs = orig.nativeBuildInputs ++ orig.propagatedBuildInputs; + }); + psycopg2 = py-prev.psycopg2.overridePythonAttrs (orig: { + # TODO: upstream + # - see: + # """ + # i was able to just add `postgresql` to the `buildInputs` (so that it's in both `buildInputs` and `nativeBuildInputs`): + # it fixed the build for `pkgsCross.aarch64-multiplatform.python310Packages.psycopg2` but not for `armv7l-hf-multiplatform` that this issue description calls out. + # + # also i haven't deployed it yet to make sure this doesn't cause anything funky at runtime though. + # """ + # + # psycopg2 *links* against libpg, so we need the host postgres available at build time! + # present-day nixpkgs only includes it in nativeBuildInputs + buildInputs = orig.buildInputs ++ [ next.postgresql ]; + }); + s3transfer = py-prev.s3transfer.overridePythonAttrs (orig: { + # TODO: this doesn't actually stop the unit tests from running! + # some (or all?) tests fail if the test runner isn't on the same platform as the host (?) + # Bail out! ERROR:../plugins/core.c:221:qemu_plugin_vcpu_init_hook: assertion failed: (success) + # Bail out! ERROR:../accel/tcg/cpu-exec.c:954:cpu_exec: assertion failed: (cpu == current_cpu) + disabledTestPaths = orig.disabledTestPaths ++ [ + # "tests/functional/test_processpool.py::TestProcessPoolDownloader::test_cleans_up_tempfile_on_failure" + "tests/functional/test_processpool.py" + # "tests/unit/test_compat.py::TestBaseManager::test_can_provide_signal_handler_initializers_to_start" + "tests/unit/test_compat.py" + ]; + }); + # skia-pathops + # it tries to call `cc` during the build, but can't find it. + }) + ]; gnome = prev.gnome.overrideScope' (self: super: { inherit (emulated.gnome) gnome-color-manager gnome-keyring - gnome-remote-desktop # TODO: figure out what's asking for this and remove it + # gnome-remote-desktop + gnome-settings-daemon # subprojects/gvc/meson.build:30:0: ERROR: Program 'glib-mkenums mkenums' not found or not executable gnome-user-share mutter ;