-
Notifications
You must be signed in to change notification settings - Fork 165
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
Broken CI on master / conflict with semigroups #4878
Comments
Unfortunately this breakage is caused by |
Thanks for raising this, and apologies for breaking the CI @fingolfin, any chance you can link me to the log showing the failure? |
@james-d-mitchell to be clear I don't think it'd be fair to see that "you" broke the CI. If at all, most like it's my patch for semigroups that's the culprit (but I actually did not yet have time to dig into what exactly is wrong). Also, of course we before broke semigroups, so... Let's not dwell too much on who broken what, just let's find a way out of this :-). So one mistake I made with the package distro was to not also run the GAP test suite. I feel pretty stupid about that in retrospect sigh. Next, I just realized that semigroups doesn't run CI tests against GAP master right now(again, in hindsight, this is pretty obvious, I just didn't reflect up on this), so of course CI tests for my semigroups PR did not test there -- but I did test it locally -- but I only tested that the semigroups test suite passes, not the GAP test suite sigh. Anyway, enough of that. I can reproduce the breakage locally by running the GAP
There are more places with failures, I just selected a few. |
Digging a bit deeper into one of these:
Note that semigroups does not appear in that callstack. But somehow that row vector ended up being immutable when it should be mutable. Weird. |
Binary search finds that if not loading
from semigroups, the error is gone. In fact, only removing the artificial upranking in lines 304 and 310 of that file make the error disappear. |
Weird. Anyone have a theory how and why methods that only trigger for integer matrices could affect the Meataxe dealing with finite field matrices? |
The meataxe calls |
When we did this back in 2015 or so, the reason was that we couldn't make the code for semigroups of matrices over finite fields work using the matrices in the library. There were several reasons for this, perhaps these have disappeared in the meantime, and I'm happy to revisit this. This wasn't an arbitrary weird choice to reimplement things for ourselves, but a thought through workaround for deficiencies in the GAP library approach to matrices (such as them not be associative elements, not being permitted to construct 0-dimensional matrices, there being no means of identifying matrices (i.e. no filter |
Thanks @fingolfin, I appreciate this, didn't think you were blaming me! I'm happy to try and resolve this however makes most sense. |
Looks like this only makes the error disappear in the GAP tests, but breaks the Semigroups tests: https://github.com/semigroups/Semigroups/runs/6173025291?check_suite_focus=true |
OK, so since matrix objects were not yet available,
|
Thanks @hulpke, I think a combination of 3 and 4 is probably the best way forwards. It'd be better for semigroups to use the better code for matrices that GAP provides when they are compatible, and contain less special case code of its own. If there's a pressing need to resolve this very quickly, then we could temporarily do 1), although this might at some point become permanent, and so if possible I'd prefer to try 3 and 4 first. I think the intersection of the library methods and those in Semigroups is limited to integer matrices and matrices over finite fields. Resolving things for integer matrices should be most straightforward because the functionality required and implemented for these in Semigroups is limited. Matrices of finite fields will be more complicated. Is there somewhere I can read about the requirements of |
@james-d-mitchell to learn more about MatrixObj, take a look at Chapter 26 "Vector and Matrix Objects " of the GAP reference manual, and in particular Section 26.13 "Implementing New Vector and Matrix Objects Types". Best to do it in the development version, though, as the manual for 4.11.1 is of course older. At the same time, nothing in there (still!) is 100% settled, simply because not enough practical experience was gathered. What I am trying to say is: if something doesn't seem to make sense or is confusing or not explained well or... don't hesitate to question it. |
Resolved by Semigroups 5. Thanks a million to @james-d-mitchell for investing a lot of work into this! |
A recent package update has broken our CI tests, specifically the
testpackages
jobs. I am looking into figuring out what exactly broke them. Also, the PackageDistro CI will be improved to reduce the likelihood of this happening again, see gap-system/PackageDistro#324The text was updated successfully, but these errors were encountered: