Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gtk3: support cross-compilation #148618

Merged
merged 1 commit into from
Apr 29, 2022
Merged

Conversation

Mindavi
Copy link
Contributor

@Mindavi Mindavi commented Dec 4, 2021

Motivation for this change

There are some hacks in here which are not very clean / nice.
In general, this does work fine though.
Installing gtk-query-immodules-3.0 is the worst part of this,
I wish we could avoid that or do something that doesn't make this part of the default closure.

Some tips and tricks would be welcome to make this nicer.

Things done
  • Built on platform(s)
    • x86_64-linux
    • aarch64-linux (cross-compiled)
    • x86_64-darwin
    • aarch64-darwin
  • For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
  • Tested, as applicable:
  • Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
  • Tested basic functionality of all binary files (usually in ./result/bin/)
  • Fits CONTRIBUTING.md.

@Mindavi Mindavi added the 6.topic: cross-compilation Building packages on a different platform than they will be used on label Dec 4, 2021
@NickCao
Copy link
Member

NickCao commented Dec 5, 2021

gobject-introspection seems to be causing the most troubles cross compiling anything gtk related. Dropping that from every rev dep does not seem to be a viable solution to me. Shall we fix that first instead, even at the cost of bringing in qemu-user. My attempt here: NickCao@976dddb

@jtojnar
Copy link
Member

jtojnar commented Dec 5, 2021

@NickCao see also #88222

@NickCao
Copy link
Member

NickCao commented Dec 5, 2021

The upstream pr has been lying around for two months without any progress, maybe we could try to just do it downstream

@Mindavi
Copy link
Contributor Author

Mindavi commented Dec 7, 2021

I'm in favor of making gobject-introspection work. I'm not in favor of emulation. If you want to emulate you can already use qemu-user to emulate a different target. That works already if you like to go that route.

I'm also not a big fan of disabling introspection everywhere, but I don't really know where to start on dissecting gobject-introspection to make this work properly. Disabling introspection is a way to get further without blocking everything on gobject-introspection, so that's what I'm doing.

Of course, some projects have a hard dependency on gobject-introspection, so there will be a point where it's inevitable to get that working.

I'm mainly trying to get as far as possible while avoiding the biggest / hardest blockers, since to me it makes more sense for me to push forward than to block for months on one thing. I like to tackle the small issues more than to tackle the large issues.

We could take that patch downstream, but we do need someone taking responsibility of maintenance, even if it's 'not that big'. I may look into it one day, but I'm not (yet) up for the challenge of getting that to work. Note that just having that patch does not make it magically work, it also needs work in nixpkgs to work properly, have correct setup hooks where needed etc.

However, I'm open for a discussion. It's probably best to have that at 88222.

@ghost
Copy link

ghost commented Mar 29, 2022

So, I heard about this literally minutes after finishing #166219, which does the same thing.

I only looked over this PR briefly, but it looks a lot cleaner than mine. I'm tired, I'll look more closely in the morning.

Maintainers, please merge this (or else my PR, but probably this one). Gtk is the blocker that keeps a ton of stuff from cross-compiling. Even if it isn't pretty it's better than nothing and unblocks work on enabling cross-compilation for all the stuff that depends on gtk.

Copy link
Member

@7c6f434c 7c6f434c left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks reasonable (and safe for non-cross) to me

@ghost
Copy link

ghost commented Mar 29, 2022

So, I heard about this literally minutes after finishing #166219, which does the same thing.

This PR is way cleaner than what I wrote; it was clearly written by somebody who understands the gtk build process better than I do.

Please merge this, or at least mark it not-a-draft, so I can close #166219.

If there is still resistance to merging this, please consider merging the parts that aren't problematic (i.e. everything except introspection-disablement) plus a comment explaining that this is only partial support and perhaps a link to this discussion. It would have saved me a lot of wasted effort struggling with that (*^@!&^!$^ post-install.py script if I had encountered a comment like that or an implementation as elegant as this one.

@ghost
Copy link

ghost commented Mar 29, 2022

Of course, some projects have a hard dependency on gobject-introspection

Is there anything (other than perhaps UI development tools) that absolutely requires the introspection data and won't work at all without it?

My understanding was that pretty much everything will run without the introspection data, but will simply not allow introspection if the introspection data is missing.

#166199 will make sure the introspection libraries (but not the generated data) are available, so builds shouldn't fail due to gobject-introspection being missing.

@jtojnar
Copy link
Member

jtojnar commented Mar 29, 2022

The introspection data are required for bindings such as pygobject, gjs (at runtime) or gtk-rs (build time). In fact this is the main reason gobject-introspection was created.

@ghost
Copy link

ghost commented Mar 29, 2022

The introspection data are required for bindings such as pygobject, gjs (at runtime) or gtk-rs (build time). In fact this is the main reason gobject-introspection was created.

Ah, okay, I see.

The upstream pr has been lying around for two months without any progress, maybe we could try to just do it downstream

Do you have a link for this? Mainly wondering: did somebody actually submit code to fix this to upstream and they're just sitting on it? In that case, isn't that sort of one of the major use cases that fetchpatch is intended for? Couldn't we point fetchpatch at that submitted-but-not-merged patch in the upstream code review system?

If the "upstream pr" is just a bug report and there's no implementation on the horizon, I could probably implement the "use qemu to generate the introspection data" approach. I got pretty good at doing qemu-in-nixexprs here and you can do some pretty slick stuff like 9pfs-mounting the host /nix/store (read-only) inside the guest.

The main thing I'd need is a reliable way of automatically calculating a qemu-compatible kernel derivation from a hostPlatform.

@jtojnar
Copy link
Member

jtojnar commented Mar 29, 2022

The downstream work is in #88222, upstream in https://gitlab.gnome.org/GNOME/gobject-introspection/-/merge_requests/224. The main obstacle is that everyone upstream is spread far too thin and there are often more pressing tasks than cross-compilation work.

@Mindavi Mindavi changed the base branch from master to staging April 28, 2022 17:52
@Mindavi
Copy link
Contributor Author

Mindavi commented Apr 28, 2022

Rebased on staging, gonna try and cross-compile gtk3. Mostly expecting that to work. If all goes well, I'd like to merge this. Any last objections here?

Edit: failed to build because the patch doesn't apply anymore, will have to look into that.

Edit 2: caused by this patch to gtk3: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/4379, hopefully that means we can drop the whole patch here.

I dropped all the ugly patches and applied a small patch to test cross-compilation of libhandy (which depends on gtk3):

diff --git a/pkgs/development/libraries/libhandy/default.nix b/pkgs/development/libraries/libhandy/default.nix
index 38e540efd4e..e9367f30af3 100644
--- a/pkgs/development/libraries/libhandy/default.nix
+++ b/pkgs/development/libraries/libhandy/default.nix
@@ -31,6 +31,7 @@ stdenv.mkDerivation rec {
   outputs = [
     "out"
     "dev"
+  ] ++ lib.optionals (stdenv.buildPlatform == stdenv.hostPlatform) [
     "devdoc"
   ] ++ lib.optionals enableGlade [
     "glade"
@@ -69,8 +70,9 @@ stdenv.mkDerivation rec {
   ];
 
   mesonFlags = [
-    "-Dgtk_doc=true"
+    "-Dgtk_doc=${lib.boolToString (stdenv.buildPlatform == stdenv.hostPlatform)}"
     "-Dglade_catalog=${if enableGlade then "enabled" else "disabled"}"
+    "-Dintrospection=${if (stdenv.buildPlatform == stdenv.hostPlatform) then "enabled" else "disabled"}"
   ];
 
   # Uses define_variable in pkg-config, but we still need it to use the glade output

Which builds fine.

I think this is a good start for better gtk3 cross support. We may have to do something about that post-install script that's now not executed anymore though.

@Mindavi
Copy link
Contributor Author

Mindavi commented Apr 28, 2022

Cleaned this up a lot, hopefully this is actually enough to get it to run properly too.

@piegamesde
Copy link
Member

Everything builds now except gtk3 itself

[43/1189] Generating demos/icon-browser/iconbrowser_resources_c with a custom command
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH
[44/1189] Generating demos/icon-browser/iconbrowser_resources_h with a custom command
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH
[45/1189] Generating demos/widget-factory/widgetfactory_resources_h with a custom command
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH
[46/1189] Generating demos/gtk-demo/gtkdemo_resources_c with a custom command
FAILED: demos/gtk-demo/gtkdemo_resources.c 
/nix/store/9z1jyg7z3sp9gp7b78asc1l0lkl0q6cj-glib-2.72.1-dev/bin/glib-compile-resources ../demos/gtk-demo/demo.gresource.xml --sourcedir ../demos/gtk-demo/. --sourcedir ../demos/gtk-demo --internal --generate --target demos/gtk-demo/gtkdemo_resources.c --dependency-file demos/gtk-demo/gtkdemo_resources.c.d
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH

(glib-compile-resources:2637110): GLib-GIO-CRITICAL **: 21:54:21.509: g_subprocess_wait: assertion 'G_IS_SUBPROCESS (subprocess)' failed

(glib-compile-resources:2637110): GLib-GObject-CRITICAL **: 21:54:21.509: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
../demos/gtk-demo/demo.gresource.xml: Failed to close file descriptor for child process (Operation not permitted).
[47/1189] Generating demos/gtk-demo/gtkdemo_resources_h with a custom command
FAILED: demos/gtk-demo/gtkdemo_resources.h 
/nix/store/9z1jyg7z3sp9gp7b78asc1l0lkl0q6cj-glib-2.72.1-dev/bin/glib-compile-resources ../demos/gtk-demo/demo.gresource.xml --sourcedir ../demos/gtk-demo/. --sourcedir ../demos/gtk-demo --internal --generate --target demos/gtk-demo/gtkdemo_resources.h
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH

(glib-compile-resources:2637111): GLib-GIO-CRITICAL **: 21:54:21.511: g_subprocess_wait: assertion 'G_IS_SUBPROCESS (subprocess)' failed

(glib-compile-resources:2637111): GLib-GObject-CRITICAL **: 21:54:21.511: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
../demos/gtk-demo/demo.gresource.xml: Failed to close file descriptor for child process (Operation not permitted).
[48/1189] Generating examples/application2/exampleapp2 resources_c with a custom command
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH
[49/1189] Generating examples/application5/gsettings-compile-examples_application5 with a custom command
[50/1189] Generating examples/application6/gsettings-compile-examples_application6 with a custom command
[51/1189] Generating examples/application6/exampleapp6 resources_c with a custom command
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH
[52/1189] Generating examples/application8/gsettings-compile-examples_application8 with a custom command
[53/1189] Generating examples/application2/exampleapp2 resources_h with a custom command
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH
[54/1189] Generating examples/application6/exampleapp6 resources_h with a custom command
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH
[55/1189] Generating examples/application7/exampleapp7 resources_c with a custom command
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH
[56/1189] Generating examples/application8/exampleapp8 resources_c with a custom command
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH
[57/1189] Generating examples/application3/exampleapp3 resources_c with a custom command
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH
[58/1189] Generating examples/application3/exampleapp3 resources_h with a custom command
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH
[59/1189] Generating examples/application10/exampleapp10 resources_h with a custom command
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH
[60/1189] Generating examples/application5/exampleapp5 resources_c with a custom command
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH
[61/1189] Generating examples/bp/bloatpad resources_h with a custom command
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH
[62/1189] Generating examples/application4/exampleapp4 resources_h with a custom command
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH
[63/1189] Generating examples/application5/exampleapp5 resources_h with a custom command
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH
[64/1189] Generating examples/application9/gsettings-compile-examples_application9 with a custom command
[65/1189] Generating examples/application10/gsettings-compile-examples_application10 with a custom command
[66/1189] Generating examples/bp/bloatpad resources_c with a custom command
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH
[67/1189] Generating examples/application4/exampleapp4 resources_c with a custom command
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH
[68/1189] Generating examples/application8/exampleapp8 resources_h with a custom command
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH
[69/1189] Generating po/ast/LC_MESSAGES/gtk30-ast.mo with a custom command
[70/1189] Generating examples/application7/exampleapp7 resources_h with a custom command
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH
[71/1189] Generating examples/application9/exampleapp9 resources_h with a custom command
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH
[72/1189] Generating examples/application9/exampleapp9 resources_c with a custom command
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH
[73/1189] Generating po/az_IR/LC_MESSAGES/gtk30-az_IR.mo with a custom command
[74/1189] Generating examples/application10/exampleapp10 resources_c with a custom command
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH
[75/1189] Generating po/ang/LC_MESSAGES/gtk30-ang.mo with a custom command
[76/1189] Generating po/en/LC_MESSAGES/gtk30-en.mo with a custom command
[77/1189] Generating po/az/LC_MESSAGES/gtk30-az.mo with a custom command
[78/1189] Generating po/bg/LC_MESSAGES/gtk30-bg.mo with a custom command
[79/1189] Generating po/en_CA/LC_MESSAGES/gtk30-en_CA.mo with a custom command
[80/1189] Generating po/be@latin/LC_MESSAGES/gtk30-be@latin.mo with a custom command
[81/1189] Generating gdk/broadway/clienthtml.h with a custom command
[82/1189] Generating po/ca@valencia/LC_MESSAGES/gtk30-ca@valencia.mo with a custom command
[83/1189] Generating po/ar/LC_MESSAGES/gtk30-ar.mo with a custom command
[84/1189] Generating demos/gtk-demo/gtk3 demo header with a custom command
[85/1189] Generating po/dz/LC_MESSAGES/gtk30-dz.mo with a custom command
[86/1189] Generating po/am/LC_MESSAGES/gtk30-am.mo with a custom command
[87/1189] Generating po/as/LC_MESSAGES/gtk30-as.mo with a custom command
[88/1189] Generating po/bs/LC_MESSAGES/gtk30-bs.mo with a custom command
[89/1189] Generating po/crh/LC_MESSAGES/gtk30-crh.mo with a custom command
[90/1189] Generating po/an/LC_MESSAGES/gtk30-an.mo with a custom command
[91/1189] Generating gdk/gdkmarshalers_c with a custom command
INFO: Reading ../gdk/gdkmarshalers.list...
[92/1189] Generating po/bn_IN/LC_MESSAGES/gtk30-bn_IN.mo with a custom command
[93/1189] Generating po/br/LC_MESSAGES/gtk30-br.mo with a custom command
[94/1189] Generating po/bn/LC_MESSAGES/gtk30-bn.mo with a custom command
[95/1189] Generating gdk/gdkmarshalers_h with a custom command
INFO: Reading ../gdk/gdkmarshalers.list...
[96/1189] Generating po/cy/LC_MESSAGES/gtk30-cy.mo with a custom command
[97/1189] Generating gtk/gtkmarshalers_h with a custom command
INFO: Reading ../gtk/gtkmarshalers.list...
[98/1189] Generating po/ckb/LC_MESSAGES/gtk30-ckb.mo with a custom command
[99/1189] Generating po/de/LC_MESSAGES/gtk30-de.mo with a custom command
[100/1189] Generating po/af/LC_MESSAGES/gtk30-af.mo with a custom command
[101/1189] Generating po/be/LC_MESSAGES/gtk30-be.mo with a custom command
[102/1189] Generating po/ca/LC_MESSAGES/gtk30-ca.mo with a custom command
[103/1189] Generating po/cs/LC_MESSAGES/gtk30-cs.mo with a custom command
[104/1189] Generating po/da/LC_MESSAGES/gtk30-da.mo with a custom command
[105/1189] Generating demos/widget-factory/widgetfactory_resources_c with a custom command
xml-stripblanks preprocessing requested, but XMLLINT is not set, and xmllint is not in PATH
[106/1189] Generating po/el/LC_MESSAGES/gtk30-el.mo with a custom command
[107/1189] Generating gtk/gtkmarshalers_c with a custom command
INFO: Reading ../gtk/gtkmarshalers.list...
[108/1189] Generating gtk/gtkdbusgenerated.c with a custom command
[109/1189] Generating gtk/gtkdbusgenerated.h with a custom command
[110/1189] Generating gdk/broadway/broadwayjs.h with a custom command
[111/1189] Generating gtk/theme/Adwaita/Adwaita with a custom command
[112/1189] Generating gtk/theme/Adwaita/Adwaita-dark with a custom command
[113/1189] Generating gtk/theme/HighContrast/HighContrast with a custom command
[114/1189] Generating gtk/theme/HighContrast/HighContrast-inverse with a custom command
[115/1189] Generating gtk/gtkprivatetypebuiltins.h with a custom command (wrapped by meson to capture output)
[116/1189] Generating gdk/gdkenumtypes.h with a custom command (wrapped by meson to capture output)
[117/1189] Generating gtk/gtktypebuiltins.h with a custom command (wrapped by meson to capture output)
ninja: build stopped: subcommand failed.
builder for '/nix/store/600r4z4bkw94xcxkhcv6gg0fh5nxdv21-gtk+3-aarch64-unknown-linux-gnu-3.24.33.drv' failed with exit code 1

@Mindavi
Copy link
Contributor Author

Mindavi commented Apr 28, 2022

Let me try a rebuild, for me the build works fine...

Still builds fine for me.

@ghost ghost mentioned this pull request Apr 28, 2022
14 tasks
@ghost
Copy link

ghost commented Apr 28, 2022

87d34a6 plus this plus #170826

nix@moore:/nix/nixpkgs$ uname -a
Linux moore 5.10.10+ #1 SMP Sun Jan 31 16:08:49 PST 2021 x86_64 GNU/Linux
nix@moore:/nix/nixpkgs$ nix-build . -A pkgsCross.aarch64-multiplatform.gtk3
/nix/store/yhyz45f6wg61rz4bpg99qjfqi6qbg9ig-gtk+3-aarch64-unknown-linux-gnu-3.24.33

Copy link
Member

@piegamesde piegamesde left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Builds for me too. The above was an issue with my builder.

@ghost
Copy link

ghost commented Apr 28, 2022

Builds for me too. The above was an issue with my builder.

(Resolved) @piegamesde, @Mindavi didn't you have trouble cross-compiling `harfbuzz` without disabling the docs (i.e. https://github.com//pull/170826)?

Also:

$ uname -m
ppc64le
$ nix-build . -A pkgsCross.aarch64-multiplatform.gtk3
/nix/store/5z6kr9xz8z7p3g5ykq551aip0ivnlv8s-gtk+3-aarch64-unknown-linux-gnu-3.24.33

Excellent, my dream of using my huge powerpc64le machine to do mass-rebuilds of my slow fanless laptop draws nearer...

I really hope this PR gets merged.

@piegamesde
Copy link
Member

Maybe you are building for a different target platform? I've only tested aarch64-multiplatform so far

@ghost

This comment was marked as resolved.

@ghost
Copy link

ghost commented Apr 29, 2022

@ofborg build pkgsCross.aarch64-multiplatform.gtk3

@ghost
Copy link

ghost commented Apr 29, 2022

Something unrelated to this PR went wrong deep within python3.9-pytest-xdist which prevented the full build of pkgsCross.aarch64-multiplatform.gtk3 on x86_64-linux from finishing (raw log -- warning: 100mbytes). But it's not due to this PR.

(Resolved)
/build/pytest-xdist-2.5.0/testing/acceptance_test.py:974: Failed
----------------------------- Captured stdout call -----------------------------
============================= test session starts ==============================
platform linux -- Python 3.9.12, pytest-7.1.1, pluggy-1.0.0
rootdir: /build/pytest-of-nixbld/pytest-0/popen-gw4/test_max_worker_restart_tests_queued0
plugins: xdist-2.5.0, forked-1.4.0
gw0 I / gw1 I
gw0 [10] / gw1 [10]

[gw0] node down: Not properly terminated
F
replacing crashed worker gw0
[gw1] node down: Not properly terminated
F
replacing crashed worker gw1
[gw2] node down: Not properly terminated
F
replacing crashed worker gw2
[gw4] node down: Not properly terminated
F
maximum crashed workers reached: 3
[gw3] node down: Not properly terminated
F
maximum crashed workers reached: 3

=================================== FAILURES ===================================
___________________ test_max_worker_restart_tests_queued.py ____________________
[gw0] linux -- Python 3.9.12 /nix/store/mv3sk3ml4fn29b7ihj593nc4lakdpkdn-python3-3.9.12/bin/python3.9
worker 'gw0' crashed while running 'test_max_worker_restart_tests_queued.py::test[1]'
___________________ test_max_worker_restart_tests_queued.py ____________________
[gw1] linux -- Python 3.9.12 /nix/store/mv3sk3ml4fn29b7ihj593nc4lakdpkdn-python3-3.9.12/bin/python3.9
worker 'gw1' crashed while running 'test_max_worker_restart_tests_queued.py::test[0]'
___________________ test_max_worker_restart_tests_queued.py ____________________
[gw2] linux -- Python 3.9.12 /nix/store/mv3sk3ml4fn29b7ihj593nc4lakdpkdn-python3-3.9.12/bin/python3.9
worker 'gw2' crashed while running 'test_max_worker_restart_tests_queued.py::test[4]'
___________________ test_max_worker_restart_tests_queued.py ____________________
[gw4] linux -- Python 3.9.12 /nix/store/mv3sk3ml4fn29b7ihj593nc4lakdpkdn-python3-3.9.12/bin/python3.9
worker 'gw4' crashed while running 'test_max_worker_restart_tests_queued.py::test[3]'
___________________ test_max_worker_restart_tests_queued.py ____________________
[gw3] linux -- Python 3.9.12 /nix/store/mv3sk3ml4fn29b7ihj593nc4lakdpkdn-python3-3.9.12/bin/python3.9
worker 'gw3' crashed while running 'test_max_worker_restart_tests_queued.py::test[8]'
================== xdist: maximum crashed workers reached: 3 ===================
=========================== short test summary info ============================
FAILED test_max_worker_restart_tests_queued.py::test[1]
FAILED test_max_worker_restart_tests_queued.py::test[0]
FAILED test_max_worker_restart_tests_queued.py::test[4]
FAILED test_max_worker_restart_tests_queued.py::test[3]
FAILED test_max_worker_restart_tests_queued.py::test[8]
============================== 5 failed in 6.82s ===============================
checking whether ungetc works on arbitrary bytes... guessing yes
=========================== short test summary info ============================
SKIPPED [1] testing/acceptance_test.py:774: pytest 7.1.1 does not have the pytest_warning_captured hook.
SKIPPED [1] ../../nix/store/gq9kdplsyskdwlvg5ljnw38xk42aynm0-python3.9-pytest-7.1.1/lib/python3.9/site-packages/_pytest/config/__init__.py:1498: no 'gspecs' option \
found
XFAIL testing/acceptance_test.py::test_session_hooks
  reason: [NOTRUN] works if run outside test suite
XFAIL testing/acceptance_test.py::TestDistEach::test_simple_diffoutput
  reason: [NOTRUN] other python versions might not have pytest installed
XFAIL testing/acceptance_test.py::test_terminate_on_hangingnode
XFAIL testing/test_dsession.py::TestDistReporter::test_rsync_printing
XFAIL testing/test_dsession.py::test_pytest_issue419
  duplicate test ids not supported yet
XFAIL testing/test_looponfail.py::TestLooponFailing::test_looponfail_removed_test
  broken by pytest 3.1+
XFAIL testing/test_workermanage.py::TestNodeManager::test_rsync_roots_no_roots
  reason: [NOTRUN]
XFAIL testing/test_remote.py::TestWorkerInteractor::test_happy_run_events_converted
  reason: implement a simple test for event production
XFAIL testing/acceptance_test.py::TestNodeFailure::test_each_multiple
  #20: xdist race condition on node restart
XFAIL testing/test_remote.py::test_remoteinitconfig
  #59
FAILED testing/acceptance_test.py::TestNodeFailure::test_max_worker_restart_tests_queued
============ 1 failed, 145 passed, 2 skipped, 10 xfailed in 22.49s =============
builder for '/nix/store/s0l7qzhxp03baj0shd390sq13qmvck97-python3.9-pytest-xdist-2.5.0.drv' failed with exit code 1

I've closed #170826, I guess it is unnecessary. There must be a commit somewhere in staging (but not in master as of 87d34a6 four days ago) that resolves the issue I encountered. Edit: there was; it's #168753 as explained here

@piegamesde
Copy link
Member

Maybe this is due to a change introduced to staging after this commit? Because at least I am building the commit itself, but I think ofBorg is doing a rebase first?

If that is the case, I suggest merging as is and then do fixup PRs.

@Mindavi
Copy link
Contributor Author

Mindavi commented Apr 29, 2022

Let's do that, may also be a flaky test, will be unrelated regardless.

@Mindavi Mindavi merged commit d7a7842 into NixOS:staging Apr 29, 2022
@Mindavi Mindavi deleted the gtk3/cross-compile branch April 29, 2022 10:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants