Open wilfwilson opened 5 years ago
Sorry, but I can't really support cygwin, I have no way to test there. PRs are welcome, though.
Thanks for the reply @fingolfin. Beyond playing with AppVeyor (which is not practical) I think the Digraphs and Semigroups developers also don't have a way to test on cygwin (and no knowledge about how to develop for it, either). So perhaps we should either explicitly not support 32-bit cygwin too, or at least see about disabling the functionality in Digraphs that requires IO, when using 32-bit cygwin. (Everything seems to be fine with 64-bit for now). @james-d-mitchell
Just to add that I will consider not supporting 32-bit cygwin by the IO package quite unfortunate - e.g. SCSCP package works under Windows because IO works. I will be happy to help with testing.
@wilfwilson I tried to fix this in 2f86e9d7671b6be47ccbe5e40f8cf0b5f3625eac but can't test it.
Of course it'd be nice if somebody could set up AppVeyor for this repository, or try to make Travis Windows support working (which I never tried)
Thanks @fingolfin, seems like a nice solution, it got rid of some of the failures in tst/bugfix.tst
, but it didn't get everything (from AppVeyor, running IO master tst/testall.g
in GAP master
):
Running IO tests...
┌───────┐ GAP 4.dev of today
│ GAP │ https://www.gap-system.org
└───────┘ Architecture: i686-pc-cygwin-default32-kv7
Configuration: gmp 6.1.2, GASMAN
Loading the library and packages ...
Packages: GAPDoc 1.6.1, PrimGrp 3.3.1, SmallGrp 1.3, TransGrp 2.0.4
Try '??help' for help. See also '?copyright', '?cite' and '?authors'
gap> ─────────────────────────────────────────────────────────────────────────────
Loading IO 4.6.0dev (Bindings for low level C library I/O routines)
by Max Neunhöffer (http://www-groups.mcs.st-and.ac.uk/~neunhoef).
maintained by:
Max Horn (https://www.quendi.de/math).
Homepage: https://gap-packages.github.io/io
Report issues at https://github.com/gap-packages/io/issues
─────────────────────────────────────────────────────────────────────────────
Architecture: i686-pc-cygwin-default32-kv7
testing: /home/appveyor/gap/pkg/io/tst/bugfix.tst
########> Diff in /home/appveyor/gap/pkg/io/tst/bugfix.tst:43
# Input is:
IO_WriteNonBlocking(f, s2, 1, 2^17) - cygwinAdjust;
# Expected output:
131072
# But found:
131071
########
########> Diff in /home/appveyor/gap/pkg/io/tst/bugfix.tst:45
# Input is:
IO_WriteNonBlocking(f, s2, 1, 2^17+1) - cygwinAdjust;
# Expected output:
131073
# But found:
131072
########
156 ms (0 ms GC) and 13.1MB allocated for bugfix.tst
testing: /home/appveyor/gap/pkg/io/tst/children.tst
children.tst
has been running for something like 10 minutes so far.
UPDATE: The tests stopped running! Unsurprisingly (since you didn't touch them), the other test files that failed before still fail.
I feel that 32-bit GAP (at least on Windows) maybe isn't long for this world, what with OSes dropping 32-bit support, so as far as I'm concerned this isn't a priority.
Ah, my "fix" was a bit overeager. If you could try again... ?
Well, what I don't quite get is why it would work in 64 bit Windows?! Because those changes I made are windows specific, not 32 bit windows specific.
You'll be able to see the result here https://ci.appveyor.com/project/wilfwilson/digraphs/builds/25937245. I wasn't looking at the 64-bit bit stuff yesterday, that also seems to have failed. Let's see what happens now.
bugfix.tst
passes, thanks: https://ci.appveyor.com/project/wilfwilson/digraphs/builds/25937355/job/abbwwyykjqs1p4od
testgap
and subsequent files don't, seems to be related to forking. (Also, some of the files take ages to run.)
Yes, forking is super slow, esp. on 64bit windows, because it has to be emulated in a complicated way. See also https://github.com/gap-system/gap/pull/3513.
It's one of the various reasons why I am not a big fan of the idea of "just making io a required package and let's call that our official interface to everything". I really hope that one day, we'll progress beyond POSIX based operating system to something more sane, and wouldn't want to tie GAP closely to that.
I've been tentatively looking into why Digraphs doesn't work properly in cygwin, at least in 32-bit (seems to be okay in 64-bit now). I'm using AppVeyor to experiment with a 32-bit cygwin setup for GAP and Digraphs. A lot of the problems with Digraphs seem to arise when we want to do things with reading from/writing to files, so I thought I would check how the io package behaves on its own. You can see a build of what happens here and the full log is here: LOG: io-tests-in-cygwin-32bit.txt (the build dies after 1 hour without completing).
I'll copy the most relevant parts of the test failures. In
tst/bugfix.tst
, it seems likeIO_WriteLine
is always off by one; and intst/testgap.tst
it looks like something is really wrong; I don't understand it. Perhaps I'm doing something wrong with my setup, but I thought it was worth pointing this out anyway. This uses the GAPmaster
branch....and then lots more errors like this.