From 12f3fc333d2341eef1156ba08f709100fa7fb4f6 Mon Sep 17 00:00:00 2001 From: Colin Date: Sat, 1 Apr 2023 23:56:16 +0000 Subject: [PATCH 1/8] nix flake update: nixpkgs 2023-03-31 -> 2023-04-01 --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index dcf5f29e..26d9eeda 100644 --- a/flake.lock +++ b/flake.lock @@ -82,11 +82,11 @@ }, "nixpkgs-unpatched": { "locked": { - "lastModified": 1680285695, - "narHash": "sha256-d09wxcx3uBP10f5/LKKJ3vQqouAGyoaQjyPGwvGZzM0=", + "lastModified": 1680372061, + "narHash": "sha256-+JjtistAuCJJ8n1MEx+afEGdLDGQl/2m92qx8eSrXAM=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d8f8da95a0a67aaa83036bded2ca59b1940816e2", + "rev": "dfe5844bbc18d05cab9453c0aea421d348f0d062", "type": "github" }, "original": { From 396d094520ba5e9d14af7326605464cd644fe265 Mon Sep 17 00:00:00 2001 From: Colin Date: Tue, 4 Apr 2023 23:20:54 +0000 Subject: [PATCH 2/8] sane-scripts: sane-reclaim-disk-space: use nix-store --optimise --- pkgs/sane-scripts/src/sane-reclaim-disk-space | 51 +++++++++++++++---- 1 file changed, 40 insertions(+), 11 deletions(-) diff --git a/pkgs/sane-scripts/src/sane-reclaim-disk-space b/pkgs/sane-scripts/src/sane-reclaim-disk-space index 9857e41a..78f96bde 100755 --- a/pkgs/sane-scripts/src/sane-reclaim-disk-space +++ b/pkgs/sane-scripts/src/sane-reclaim-disk-space @@ -1,23 +1,52 @@ #!/usr/bin/env bash # script to reclaim some hard drive space +# some of this is documented here: +# - set -e -options=$(getopt -l "fast" -o "f" -- "$@") -do_rmlint=true -for arg in $options; do - case $arg in - -f|--fast) - do_rmlint=false - ;; - --) - ;; +options=$(getopt -l "gc,rmlint,all" -- "" "$@") +eval "set -- ${options}" +do_rmlint=false +do_gc=false +while true; do + case "$1" in + (--all) + shift + do_gc=true + do_rmlint=true + ;; + (--gc) + shift + do_gc=true + ;; + (--rmlint) + shift + do_rmlint=true + ;; + (--) + shift + if [ $# -eq 0 ]; then + break + fi + ;; + (*) + echo "invalid arguments" + exit 1 + ;; esac done set -x -# always claim nix garbage -sudo nix-collect-garbage +# scan the store and hard-link identical files +# nix-store --optimise + +if [ $do_gc = true ] +then + # TODO: do we need `sudo` here? + # TODO: `nix-store --gc`? + sudo nix-collect-garbage +fi if [ $do_rmlint = true ] then From f085c1d69166453960c2b587144802bb5fdb1c67 Mon Sep 17 00:00:00 2001 From: Colin Date: Tue, 4 Apr 2023 23:30:27 +0000 Subject: [PATCH 3/8] overlays/disable-flakey-tests.nix: significantly reduce how much we patch nixpkgs this means we can grab from upstream caches more --- flake.lock | 18 +- flake.nix | 2 + hosts/common/cross/default.nix | 2 +- overlays/disable-flakey-tests.nix | 332 +++++++++++++++--------------- 4 files changed, 182 insertions(+), 172 deletions(-) diff --git a/flake.lock b/flake.lock index 26d9eeda..06d16963 100644 --- a/flake.lock +++ b/flake.lock @@ -66,11 +66,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1679748960, - "narHash": "sha256-BP8XcYHyj1NxQi04RpyNW8e7KiXSoI+Fy1tXIK2GfdA=", + "lastModified": 1680390120, + "narHash": "sha256-RyDJcG/7mfimadlo8vO0QjW22mvYH1+cCqMuigUntr8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "da26ae9f6ce2c9ab380c0f394488892616fc5a6a", + "rev": "c1e2efaca8d8a3db6a36f652765d6c6ba7bb8fae", "type": "github" }, "original": { @@ -82,11 +82,11 @@ }, "nixpkgs-unpatched": { "locked": { - "lastModified": 1680372061, - "narHash": "sha256-+JjtistAuCJJ8n1MEx+afEGdLDGQl/2m92qx8eSrXAM=", + "lastModified": 1680415272, + "narHash": "sha256-S2J9n+sSeAAdXWHrz/s9pyS5fhbQilfNqYrs6RCUyN8=", "owner": "nixos", "repo": "nixpkgs", - "rev": "dfe5844bbc18d05cab9453c0aea421d348f0d062", + "rev": "66f60deb8aa348ca81d60d0639ae420c667ff92a", "type": "github" }, "original": { @@ -113,11 +113,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1679993313, - "narHash": "sha256-pfZ/BxJDTifnQBMXg60OhwpJvg96LHvEXGtpHeGcWLM=", + "lastModified": 1680404136, + "narHash": "sha256-06D8HJmRv4DdpEQGblMhx2Vm81SBWM61XBBIx7QQfo0=", "owner": "Mic92", "repo": "sops-nix", - "rev": "5b26523e28989a7f56953b695184070c06335814", + "rev": "b93eb910f768f9788737bfed596a598557e5625d", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 588e129f..fc9a5d6e 100644 --- a/flake.nix +++ b/flake.nix @@ -98,6 +98,7 @@ self.nixosModules.passthru { nixpkgs.overlays = [ + self.overlays.disable-flakey-tests self.overlays.passthru self.overlays.pins self.overlays.pkgs @@ -167,6 +168,7 @@ # N.B.: `nix flake check` requires every overlay to take `final: prev:` at defn site, # hence the weird redundancy. default = final: prev: self.overlays.pkgs final prev; + disable-flakey-tests = final: prev: import ./overlays/disable-flakey-tests.nix final prev; pkgs = final: prev: import ./overlays/pkgs.nix final prev; pins = final: prev: import ./overlays/pins.nix final prev; optimizations = final: prev: import ./overlays/optimizations.nix final prev; diff --git a/hosts/common/cross/default.nix b/hosts/common/cross/default.nix index a17ea63b..8dfe6ae3 100644 --- a/hosts/common/cross/default.nix +++ b/hosts/common/cross/default.nix @@ -90,10 +90,10 @@ let # except for the "cross only" universal overlays which we avoid specifying for non-cross builds # because they don't affect the result -- only the build process -- so we can disable them as an optimization. crossOnlyUniversalOverlays = [ - (import ./../../../overlays/disable-flakey-tests.nix) (import ./../../../overlays/optimizations.nix) ]; universalOverlays = [ + (import ./../../../overlays/disable-flakey-tests.nix) (import ./../../../overlays/pkgs.nix) (import ./../../../overlays/pins.nix) ] ++ crossOnlyUniversalOverlays; diff --git a/overlays/disable-flakey-tests.nix b/overlays/disable-flakey-tests.nix index 235c08c0..214067d6 100644 --- a/overlays/disable-flakey-tests.nix +++ b/overlays/disable-flakey-tests.nix @@ -5,61 +5,61 @@ # - they assume too much about their environment and fail under qemu. # (next: prev: { - ell = prev.ell.overrideAttrs (_upstream: { - # 2023/02/11 - # fixes "TEST FAILED in get_random_return_callback at unit/test-dbus-message-fds.c:278: !l_dbus_message_get_error(message, ((void *)0), ((void *)0))" - # unclear *why* this test fails. - doCheck = false; - }); - fish = prev.fish.overrideAttrs (_upstream: { - # 2023/02/28 - # The following tests FAILED: - # 177 - sigint.fish (Failed) - # 241 - torn_escapes.py (Failed) - doCheck = false; - }); - gjs = prev.gjs.overrideAttrs (_upstream: { - # 2023/01/30: one test times out. probably flakey test that only got built because i patched mesa. - doCheck = false; - }); - gssdp = prev.gssdp.overrideAttrs (_upstream: { - # 2023/02/11 - # fixes "ERROR:../tests/test-regression.c:429:test_ggo_7: assertion failed (error == NULL): Failed to set multicast interfaceProtocol not available (gssdp-error, 1)" - doCheck = false; - }); - gupnp = prev.gupnp.overrideAttrs (_upstream: { - # 2023/02/22 - # fixes "Bail out! ERROR:../tests/test-bugs.c:205:test_bgo_696762: assertion failed (error == NULL): Failed to set multicast interfaceProtocol not available (gssdp-erro>" - doCheck = false; - }); - json-glib = prev.json-glib.overrideAttrs (_upstream: { - # 2023/02/11 - # fixes: "15/15 json-glib:docs / doc-check TIMEOUT 30.52s killed by signal 15 SIGTERM" - doCheck = false; - }); - lapack-reference = prev.lapack-reference.overrideAttrs (_upstream: { - # 2023/02/11: test timeouts - # > The following tests FAILED: - # > 93 - LAPACK-xlintstz_ztest_in (Timeout) - # > 98 - LAPACK-xeigtstz_svd_in (Timeout) - # > 99 - LAPACK-xeigtstz_zec_in (Timeout) - doCheck = false; - }); - libadwaita = prev.libadwaita.overrideAttrs (_upstream: { - # 2023/01/30: one test times out. probably flakey test that only got built because i patched mesa. - doCheck = false; - }); - libsecret = prev.libsecret.overrideAttrs (_upstream: { - # 2023/01/30: one test times out. probably flakey test that only got built because i patched mesa. - doCheck = false; - }); - libuv = prev.libuv.overrideAttrs (_upstream: { - # 2023/02/11 - # 2 tests fail: - # - not ok 261 - tcp_bind6_error_addrinuse - # - not ok 267 - tcp_bind_error_addrinuse_listen - doCheck = false; - }); + # ell = prev.ell.overrideAttrs (_upstream: { + # # 2023/02/11 + # # fixes "TEST FAILED in get_random_return_callback at unit/test-dbus-message-fds.c:278: !l_dbus_message_get_error(message, ((void *)0), ((void *)0))" + # # unclear *why* this test fails. + # doCheck = false; + # }); + # fish = prev.fish.overrideAttrs (_upstream: { + # # 2023/02/28 + # # The following tests FAILED: + # # 177 - sigint.fish (Failed) + # # 241 - torn_escapes.py (Failed) + # doCheck = false; + # }); + # gjs = prev.gjs.overrideAttrs (_upstream: { + # # 2023/01/30: one test times out. probably flakey test that only got built because i patched mesa. + # doCheck = false; + # }); + # gssdp = prev.gssdp.overrideAttrs (_upstream: { + # # 2023/02/11 + # # fixes "ERROR:../tests/test-regression.c:429:test_ggo_7: assertion failed (error == NULL): Failed to set multicast interfaceProtocol not available (gssdp-error, 1)" + # doCheck = false; + # }); + # gupnp = prev.gupnp.overrideAttrs (_upstream: { + # # 2023/02/22 + # # fixes "Bail out! ERROR:../tests/test-bugs.c:205:test_bgo_696762: assertion failed (error == NULL): Failed to set multicast interfaceProtocol not available (gssdp-erro>" + # doCheck = false; + # }); + # json-glib = prev.json-glib.overrideAttrs (_upstream: { + # # 2023/02/11 + # # fixes: "15/15 json-glib:docs / doc-check TIMEOUT 30.52s killed by signal 15 SIGTERM" + # doCheck = false; + # }); + # lapack-reference = prev.lapack-reference.overrideAttrs (_upstream: { + # # 2023/02/11: test timeouts + # # > The following tests FAILED: + # # > 93 - LAPACK-xlintstz_ztest_in (Timeout) + # # > 98 - LAPACK-xeigtstz_svd_in (Timeout) + # # > 99 - LAPACK-xeigtstz_zec_in (Timeout) + # doCheck = false; + # }); + # libadwaita = prev.libadwaita.overrideAttrs (_upstream: { + # # 2023/01/30: one test times out. probably flakey test that only got built because i patched mesa. + # doCheck = false; + # }); + # libsecret = prev.libsecret.overrideAttrs (_upstream: { + # # 2023/01/30: one test times out. probably flakey test that only got built because i patched mesa. + # doCheck = false; + # }); + # libuv = prev.libuv.overrideAttrs (_upstream: { + # # 2023/02/11 + # # 2 tests fail: + # # - not ok 261 - tcp_bind6_error_addrinuse + # # - not ok 267 - tcp_bind_error_addrinuse_listen + # doCheck = false; + # }); libwacom = prev.libwacom.overrideAttrs (_upstream: { # 2023/03/30 # "libwacom:all / pytest TIMEOUT" @@ -67,127 +67,135 @@ mesonFlags = [ "-Dtests=disabled" ]; }); - llvmPackages_12 = - let - tools = prev.llvmPackages_12.tools.extend (self: super: { - libllvm = super.libllvm.overrideAttrs (upstream: { - # 2023/02/21: fix: "FAIL: LLVM-Unit :: ExecutionEngine/MCJIT/./MCJITTests/MCJITTest.return_global (2857 of 42084)" - # - nix log /nix/store/6vydavlxh1gvs0vmrkcx9qp67g3h7kcz-llvm-12.0.1.drv - # - wanted by sequoia, rav1e, rustc-1.66.1 (is this right?) - doCheck = false; - # upstream sets this with `rec`; TODO: have upstream refer to the final overrideAttrs version of the derivation instead of using rec. - cmakeFlags = next.lib.remove "-DLLVM_BUILD_TESTS=ON" upstream.cmakeFlags; - }); - }); - in - # see - # - we copy their strategy / attrset mutilation - prev.llvmPackages_12 // { inherit tools; } // tools; + # llvmPackages_12 = + # let + # tools = prev.llvmPackages_12.tools.extend (self: super: { + # libllvm = super.libllvm.overrideAttrs (upstream: { + # # 2023/02/21: fix: "FAIL: LLVM-Unit :: ExecutionEngine/MCJIT/./MCJITTests/MCJITTest.return_global (2857 of 42084)" + # # - nix log /nix/store/6vydavlxh1gvs0vmrkcx9qp67g3h7kcz-llvm-12.0.1.drv + # # - wanted by sequoia, rav1e, rustc-1.66.1 (is this right?) + # doCheck = false; + # # upstream sets this with `rec`; TODO: have upstream refer to the final overrideAttrs version of the derivation instead of using rec. + # cmakeFlags = next.lib.remove "-DLLVM_BUILD_TESTS=ON" upstream.cmakeFlags; + # }); + # }); + # in + # # see + # # - we copy their strategy / attrset mutilation + # prev.llvmPackages_12 // { inherit tools; } // tools; - llvmPackages_14 = - let - tools = prev.llvmPackages_14.tools.extend (self: super: { - libllvm = super.libllvm.overrideAttrs (upstream: { - # 2023/02/21: fix: "FAIL: LLVM-Unit :: ExecutionEngine/MCJIT/./MCJITTests/MCJITMultipleModuleTest.two_module_global_variables_case (43769 of 46988)" - # - nix log /nix/store/ib2yw6sajnhlmibxkrn7lj7chllbr85h-llvm-14.0.6.drv - # - wanted by clang-11-12-LLVMgold-path, compiler-rt-libc-12.0.1, clang-wrapper-12.0.1 (is this right?) - doCheck = false; - # upstream sets this with `rec`; TODO: have upstream refer to the final overrideAttrs version of the derivation instead of using rec. - cmakeFlags = next.lib.remove "-DLLVM_BUILD_TESTS=ON" upstream.cmakeFlags; - }); - }); - in - # see - # - we copy their strategy / attrset mutilation - prev.llvmPackages_14 // { inherit tools; } // tools; + # llvmPackages_14 = + # let + # tools = prev.llvmPackages_14.tools.extend (self: super: { + # libllvm = super.libllvm.overrideAttrs (upstream: { + # # 2023/02/21: fix: "FAIL: LLVM-Unit :: ExecutionEngine/MCJIT/./MCJITTests/MCJITMultipleModuleTest.two_module_global_variables_case (43769 of 46988)" + # # - nix log /nix/store/ib2yw6sajnhlmibxkrn7lj7chllbr85h-llvm-14.0.6.drv + # # - wanted by clang-11-12-LLVMgold-path, compiler-rt-libc-12.0.1, clang-wrapper-12.0.1 (is this right?) + # doCheck = false; + # # upstream sets this with `rec`; TODO: have upstream refer to the final overrideAttrs version of the derivation instead of using rec. + # cmakeFlags = next.lib.remove "-DLLVM_BUILD_TESTS=ON" upstream.cmakeFlags; + # }); + # }); + # in + # # see + # # - we copy their strategy / attrset mutilation + # prev.llvmPackages_14 // { inherit tools; } // tools; - llvmPackages_15 = - let - tools = prev.llvmPackages_15.tools.extend (self: super: { - libllvm = super.libllvm.override { - # 2023/02/21: fix: "FAIL: LLVM-Unit :: ExecutionEngine/MCJIT/./MCJITTests/..." - # llvm15 passes doCheck as a call arg, so we don't need to set cmakeFlags explicitly as in previous versions - doCheck = false; - }; - }); - in - prev.llvmPackages_15 // { inherit tools; } // tools; + # llvmPackages_15 = + # let + # tools = prev.llvmPackages_15.tools.extend (self: super: { + # libllvm = super.libllvm.override { + # # 2023/02/21: fix: "FAIL: LLVM-Unit :: ExecutionEngine/MCJIT/./MCJITTests/..." + # # llvm15 passes doCheck as a call arg, so we don't need to set cmakeFlags explicitly as in previous versions + # doCheck = false; + # }; + # }); + # in + # prev.llvmPackages_15 // { inherit tools; } // tools; - modemmanager = prev.modemmanager.overrideAttrs (_upstream: { - # 2023/02/25 - # "ERROR:test-modem-helpers.c:257:test_cmgl_response: assertion failed: (list != NULL)" - doCheck = false; - doInstallCheck = false; # tests are run during install check?? - }); + # modemmanager = prev.modemmanager.overrideAttrs (_upstream: { + # # 2023/02/25 + # # "ERROR:test-modem-helpers.c:257:test_cmgl_response: assertion failed: (list != NULL)" + # doCheck = false; + # doInstallCheck = false; # tests are run during install check?? + # }); pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ (py-next: py-prev: { - ipython = py-prev.ipython.overridePythonAttrs (upstream: { - # > FAILED IPython/core/tests/test_debugger.py::test_xmode_skip - pexpect.exceptions.TIMEOUT: Timeout exceeded. - # > FAILED IPython/core/tests/test_debugger.py::test_decorator_skip - pexpect.exceptions.TIMEOUT: Timeout exceeded. - # > FAILED IPython/core/tests/test_debugger.py::test_decorator_skip_disabled - pexpect.exceptions.TIMEOUT: Timeout exceeded. - # > FAILED IPython/core/tests/test_debugger.py::test_decorator_skip_with_breakpoint - pexpect.exceptions.TIMEOUT: Timeout exceeded. - # > FAILED IPython/core/tests/test_debugger.py::test_where_erase_value - pexpect.exceptions.TIMEOUT: Timeout exceeded. - # > FAILED IPython/terminal/tests/test_debug_magic.py::test_debug_magic_passes_through_generators - pexpect.exceptions.TIMEOUT: Timeout exceeded. - # > FAILED IPython/terminal/tests/test_embed.py::test_nest_embed - pexpect.exceptions.TIMEOUT: Timeout exceeded. + # ipython = py-prev.ipython.overridePythonAttrs (upstream: { + # # > FAILED IPython/core/tests/test_debugger.py::test_xmode_skip - pexpect.exceptions.TIMEOUT: Timeout exceeded. + # # > FAILED IPython/core/tests/test_debugger.py::test_decorator_skip - pexpect.exceptions.TIMEOUT: Timeout exceeded. + # # > FAILED IPython/core/tests/test_debugger.py::test_decorator_skip_disabled - pexpect.exceptions.TIMEOUT: Timeout exceeded. + # # > FAILED IPython/core/tests/test_debugger.py::test_decorator_skip_with_breakpoint - pexpect.exceptions.TIMEOUT: Timeout exceeded. + # # > FAILED IPython/core/tests/test_debugger.py::test_where_erase_value - pexpect.exceptions.TIMEOUT: Timeout exceeded. + # # > FAILED IPython/terminal/tests/test_debug_magic.py::test_debug_magic_passes_through_generators - pexpect.exceptions.TIMEOUT: Timeout exceeded. + # # > FAILED IPython/terminal/tests/test_embed.py::test_nest_embed - pexpect.exceptions.TIMEOUT: Timeout exceeded. + # disabledTestPaths = upstream.disabledTestPaths or [] ++ [ + # "IPython/core/tests/test_debugger.py" + # "IPython/terminal/tests/test_debug_magic.py" + # "IPython/terminal/tests/test_embed.py" + # ]; + # }); + pyarrow = py-prev.pyarrow.overridePythonAttrs (upstream: { + # 2023/04/02 + # disabledTests = upstream.disabledTests ++ [ "test_generic_options" ]; disabledTestPaths = upstream.disabledTestPaths or [] ++ [ - "IPython/core/tests/test_debugger.py" - "IPython/terminal/tests/test_debug_magic.py" - "IPython/terminal/tests/test_embed.py" + "pyarrow/tests/test_flight.py" ]; }); - pytest-xdist = py-prev.pytest-xdist.overridePythonAttrs (upstream: { - # 2023/02/19 - # 4 tests fail: - # - FAILED: testing/test_remote.py::TestWorkInteractor::* - execnet.gateway_base.TimeoutError: no item after 10.0 seconds - # doCheck = false; - disabledTestPaths = upstream.disabledTestPaths or [] ++ [ - "testing/test_remote.py" - ]; - # disabledTests = upstream.disabledTests or [] ++ [ - # "test_basic_collect_and_runtests" - # "test_remote_collect_fail" - # "test_remote_collect_skip" - # "test_runtests_all" - # ]; - }); - twisted = py-prev.twisted.overridePythonAttrs (upstream: { - # 2023/02/25 - # ``` - # [ERROR] - # Traceback (most recent call last): - # File "/nix/store/dcnsxrn8rsfk1dghah7md5glbbnfysq3-python3.10-twisted-22.10.0/lib/python3.10/site-packages/twisted/test/test_udp.py", line 645, in test_interface - # self.assertEqual(self.client.transport.getOutgoingInterface(), "0.0.0.0") - # File "/nix/store/dcnsxrn8rsfk1dghah7md5glbbnfysq3-python3.10-twisted-22.10.0/lib/python3.10/site-packages/twisted/internet/udp.py", line 449, in getOutgoingInterface - # i = self.socket.getsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_IF) - # builtins.OSError: [Errno 92] Protocol not available - # - # twisted.test.test_udp.MulticastTests.test_interface - # ``` - postPatch = upstream.postPatch + '' - echo 'MulticastTests.test_interface.skip = "Protocol not available"'>> src/twisted/test/test_udp.py - ''; - }); + # pytest-xdist = py-prev.pytest-xdist.overridePythonAttrs (upstream: { + # # 2023/02/19 + # # 4 tests fail: + # # - FAILED: testing/test_remote.py::TestWorkInteractor::* - execnet.gateway_base.TimeoutError: no item after 10.0 seconds + # # doCheck = false; + # disabledTestPaths = upstream.disabledTestPaths or [] ++ [ + # "testing/test_remote.py" + # ]; + # # disabledTests = upstream.disabledTests or [] ++ [ + # # "test_basic_collect_and_runtests" + # # "test_remote_collect_fail" + # # "test_remote_collect_skip" + # # "test_runtests_all" + # # ]; + # }); + # twisted = py-prev.twisted.overridePythonAttrs (upstream: { + # # 2023/02/25 + # # ``` + # # [ERROR] + # # Traceback (most recent call last): + # # File "/nix/store/dcnsxrn8rsfk1dghah7md5glbbnfysq3-python3.10-twisted-22.10.0/lib/python3.10/site-packages/twisted/test/test_udp.py", line 645, in test_interface + # # self.assertEqual(self.client.transport.getOutgoingInterface(), "0.0.0.0") + # # File "/nix/store/dcnsxrn8rsfk1dghah7md5glbbnfysq3-python3.10-twisted-22.10.0/lib/python3.10/site-packages/twisted/internet/udp.py", line 449, in getOutgoingInterface + # # i = self.socket.getsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_IF) + # # builtins.OSError: [Errno 92] Protocol not available + # # + # # twisted.test.test_udp.MulticastTests.test_interface + # # ``` + # postPatch = upstream.postPatch + '' + # echo 'MulticastTests.test_interface.skip = "Protocol not available"'>> src/twisted/test/test_udp.py + # ''; + # }); }) ]; - strp = prev.srtp.overrideAttrs (_upstream: { - # 2023/02/11 - # roc_driver test times out after 30s - doCheck = false; - }); + + # strp = prev.srtp.overrideAttrs (_upstream: { + # # 2023/02/11 + # # roc_driver test times out after 30s + # doCheck = false; + # }); tracker = prev.tracker.overrideAttrs (_upstream: { # 2023/02/22 # "27/37 tracker:core / service TIMEOUT 60.37s killed by signal 15 SIGTERM" doCheck = false; }); - udisks2 = prev.udisks2.overrideAttrs (_upstream: { - # 2023/02/25 - # "udisks-test:ERROR:test.c:61:on_completed_expect_failure: assertion failed (message == expected_message): ("Command-line `./udisks-test-helper 4' was signaled with signal SIGSEGV (11):\nstdout: `OK, deliberately causing a segfault\n'\nstderr: `qemu: uncaught target signal 11 (Segmentation fault) - core dumped\n'" == "Command-line `./udisks-test-helper 4' was signaled with signal SIGSEGV (11): OK, deliberately causing a segfault\n")" - doCheck = false; - }); - upower = prev.upower.overrideAttrs (_upstream: { - # 2023/02/25 - # "Tests.test_battery_state_guessing TIMEOUT 60.80s killed by signal 15 SIGTERM" - doCheck = false; - }); + # udisks2 = prev.udisks2.overrideAttrs (_upstream: { + # # 2023/02/25 + # # "udisks-test:ERROR:test.c:61:on_completed_expect_failure: assertion failed (message == expected_message): ("Command-line `./udisks-test-helper 4' was signaled with signal SIGSEGV (11):\nstdout: `OK, deliberately causing a segfault\n'\nstderr: `qemu: uncaught target signal 11 (Segmentation fault) - core dumped\n'" == "Command-line `./udisks-test-helper 4' was signaled with signal SIGSEGV (11): OK, deliberately causing a segfault\n")" + # doCheck = false; + # }); + # upower = prev.upower.overrideAttrs (_upstream: { + # # 2023/02/25 + # # "Tests.test_battery_state_guessing TIMEOUT 60.80s killed by signal 15 SIGTERM" + # doCheck = false; + # }); }) From a5841192a2ff612bf9c8910c021c40db3fcd4e94 Mon Sep 17 00:00:00 2001 From: Colin Date: Thu, 6 Apr 2023 06:22:19 +0000 Subject: [PATCH 4/8] cross compilation: support `i2p` --- hosts/common/cross/default.nix | 66 ++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/hosts/common/cross/default.nix b/hosts/common/cross/default.nix index 8dfe6ae3..a8beab7d 100644 --- a/hosts/common/cross/default.nix +++ b/hosts/common/cross/default.nix @@ -394,6 +394,9 @@ in # prev # else # prev.emulated; + useEmulatedStdenv = p: p.override { + inherit (emulated) stdenv; + }; in { # packages which don't cross compile inherit (emulated) @@ -879,6 +882,38 @@ in } super.nautilus; }); + gnome2 = prev.gnome2.overrideScope' (self: super: { + # inherit (emulated.gnome2) + # GConf + # ; + # GConf = ( + # # python3 -> nativeBuildInputs fixes "2to3: command not found" + # # glib.dev in nativeBuildInputs fixes "gconfmarshal.list: command not found" + # # new error: "** (orbit-idl-2): WARNING **: ./GConfX.idl compilation failed" + # addNativeInputs + # [ next.glib.dev ] + # (mvToNativeInputs [ next.python3 ] super.GConf); + # ); + GConf = super.GConf.override { + inherit (emulated) stdenv; + }; + + # gnome_vfs = ( + # # fixes: "configure: error: gconftool-2 executable not found in your path - should be installed with GConf" + # # new error: "configure: error: cannot run test program while cross compiling" + # mvToNativeInputs [ self.GConf ] super.gnome_vfs + # ); + gnome_vfs = useEmulatedStdenv super.gnome_vfs; + libIDL = super.libIDL.override { + # "configure: error: cannot run test program while cross compiling" + inherit (emulated) stdenv; + }; + ORBit2 = super.ORBit2.override { + # "configure: error: Failed to find alignment. Check config.log for details." + inherit (emulated) stdenv; + }; + }); + gocryptfs = prev.gocryptfs.override { # fixes "error: hash mismatch in fixed-output derivation" (vendorSha256) inherit (emulated) buildGoModule; # equivalent to stdenv @@ -964,6 +999,9 @@ in # inherit (emulated) stdenv; # }; + # "setup: line 1595: ant: command not found" + i2p = mvToNativeInputs [ next.ant next.gettext ] prev.i2p; + # ibus = (prev.ibus.override { # # fixes: "configure.ac:152: error: possibly undefined macro: AM_PATH_GLIB_2_0" # inherit (emulated) stdenv; @@ -980,6 +1018,34 @@ in # fixes "./autogen.sh: line 26: gtkdocize: not found" iio-sensor-proxy = mvToNativeInputs [ next.glib next.gtk-doc ] prev.iio-sensor-proxy; + # fixes: "make: gcc: No such file or directory" + java-service-wrapper = useEmulatedStdenv prev.java-service-wrapper; + + javaPackages = prev.javaPackages // { + compiler = prev.javaPackages.compiler // { + adoptopenjdk-8 = prev.javaPackages.compiler.adoptopenjdk-8 // { + # fixes "error: auto-patchelf could not satisfy dependency libgcc_s.so.1 wanted by /nix/store/fvln9pahd3c4ys8xv5c0w91xm2347cvq-adoptopenjdk-hotspot-bin-aarch64-unknown-linux-gnu-8.0.322/jre/lib/aarch64/libsunec.so" + jdk-hotspot = useEmulatedStdenv prev.javaPackages.compiler.adoptopenjdk-8.jdk-hotspot; + }; + openjdk8-bootstrap = useEmulatedStdenv prev.javaPackages.compiler.openjdk8-bootstrap; + # fixes "configure: error: Could not find required tool for WHICH" + openjdk8 = useEmulatedStdenv prev.javaPackages.compiler.openjdk8; + openjdk19 = ( + # fixes "configure: error: Could not find required tool for ZIPEXE" + # new failure: "checking for cc... [not found]" + (mvToNativeInputs + [ next.zip ] + (useEmulatedStdenv prev.javaPackages.compiler.openjdk19) + ).overrideAttrs (_upstream: { + # avoid building `support/demos`, which segfaults + buildFlags = [ "product-images" ]; + doCheck = false; # pre-emptive + }) + ); + # openjdk19 = emulated.javaPackages.compiler.openjdk19; + }; + }; + kitty = prev.kitty.overrideAttrs (upstream: { # fixes: "FileNotFoundError: [Errno 2] No such file or directory: 'pkg-config'" PKGCONFIG_EXE = "${next.buildPackages.pkg-config}/bin/${next.buildPackages.pkg-config.targetPrefix}pkg-config"; From 0596b02f2273882eabdcbe35f16005b42164dafc Mon Sep 17 00:00:00 2001 From: Colin Date: Thu, 6 Apr 2023 06:22:47 +0000 Subject: [PATCH 5/8] enable i2p --- hosts/common/i2p.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/common/i2p.nix b/hosts/common/i2p.nix index 09f6a0a5..9f296934 100644 --- a/hosts/common/i2p.nix +++ b/hosts/common/i2p.nix @@ -1,4 +1,4 @@ { ... }: { - # services.i2p.enable = true; + services.i2p.enable = true; } From 87606214400c499c916dc5ad0525c5fe5c28a5a5 Mon Sep 17 00:00:00 2001 From: Colin Date: Thu, 6 Apr 2023 06:23:27 +0000 Subject: [PATCH 6/8] enable nix's `auto-optimise-store` --- hosts/common/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hosts/common/default.nix b/hosts/common/default.nix index 5b9cd86c..6b3ce5d7 100644 --- a/hosts/common/default.nix +++ b/hosts/common/default.nix @@ -41,6 +41,11 @@ "nixpkgs=${pkgs.path}" "nixpkgs-overlays=${../..}/overlays" ]; + # hardlinks identical files in the nix store to save 25-35% disk space. + # unclear _when_ this occurs. it's not a service. + # does the daemon continually scan the nix store? + # does the builder use some content-addressed db to efficiently dedupe? + nix.settings.auto-optimise-store = true; fonts = { enableDefaultFonts = true; From 2f2c666b0bad6f577cf281062e629109185f0c45 Mon Sep 17 00:00:00 2001 From: Colin Date: Thu, 6 Apr 2023 06:24:01 +0000 Subject: [PATCH 7/8] formatting changes --- hosts/common/default.nix | 1 + hosts/modules/roles/build-machine.nix | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/hosts/common/default.nix b/hosts/common/default.nix index 6b3ce5d7..a03f592e 100644 --- a/hosts/common/default.nix +++ b/hosts/common/default.nix @@ -33,6 +33,7 @@ time.timeZone = "Etc/UTC"; # DST is too confusing for me => use a stable timezone # allow `nix flake ...` command + # TODO: is this still required? nix.extraOptions = '' experimental-features = nix-command flakes ''; diff --git a/hosts/modules/roles/build-machine.nix b/hosts/modules/roles/build-machine.nix index 564faf9c..1e6ff321 100644 --- a/hosts/modules/roles/build-machine.nix +++ b/hosts/modules/roles/build-machine.nix @@ -34,7 +34,11 @@ in # enable cross compilation # TODO: do this via stdenv injection, linking into /run/binfmt the stuff in - boot.binfmt.emulatedSystems = lib.optionals cfg.emulation [ "aarch64-linux" ]; + boot.binfmt.emulatedSystems = lib.optionals cfg.emulation [ + "aarch64-linux" + # "aarch64-darwin" # not supported + # "x86_64-darwin" # not supported + ]; # corresponds to env var: NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM=1 # nixpkgs.config.allowUnsupportedSystem = true; }) From 6407f156b240d2038aac701dd3da834e0d89021e Mon Sep 17 00:00:00 2001 From: Colin Date: Thu, 6 Apr 2023 07:43:22 +0000 Subject: [PATCH 8/8] cross compilation: remove gupnp patch --- hosts/common/cross/default.nix | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/hosts/common/cross/default.nix b/hosts/common/cross/default.nix index a8beab7d..29810528 100644 --- a/hosts/common/cross/default.nix +++ b/hosts/common/cross/default.nix @@ -938,16 +938,6 @@ in buildInputs = lib.remove next.gobject-introspection upstream.buildInputs; strictDeps = true; }); - gupnp_1_6 = prev.gupnp_1_6.overrideAttrs (orig: { - # fixes "subprojects/gi-docgen/meson.build:10:0: ERROR: python3 not found" - # this patch is copied from the default gupnp. - outputs = [ "out" "dev" ] - ++ lib.optionals (prev.stdenv.buildPlatform == prev.stdenv.hostPlatform) [ "devdoc" ]; - mesonFlags = [ - "-Dgtk_doc=${lib.boolToString (prev.stdenv.buildPlatform == prev.stdenv.hostPlatform)}" - "-Dintrospection=${lib.boolToString (prev.stdenv.buildPlatform == prev.stdenv.hostPlatform)}" - ]; - }); gst_all_1 = prev.gst_all_1 // { # gst-editing-services = prev.gst_all_1.gst-editing-services.override {