-
Notifications
You must be signed in to change notification settings - Fork 6
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
Rewrite buildsystem using autotools #36
Conversation
1b3f934
to
ba7cd1d
Compare
bd5c13a
to
9d67274
Compare
Question for @DominikBernhardt and @gaehler: when one did just Other than that, this PR is slowly getting close to being ready. Thanks to @DominikBernhardt many of the fixes created while working on this are already merged. Once the current round of PRs is merged (PRs #43, #44, #45, #46), I will probably submit a few more, and then finally this PR should become ready for merging. |
I'm not quite sure about this one and would be interested to hear what @gaehler has to say about this, especially because a main use of Carat is the bundle into the GAP package? |
In my GAP package, I unpack the qcatalog with --exclude=qcatalog/dim6. This seems like a good compromise, as most of the footprint on disk comes from dimension 6. The test files all run without dimension 6. |
f7117c1
to
a9c038f
Compare
@gaehler but Anyway, for now, I changed it to do exactly what the old build system did, namely extract the whole thing when one just does |
There is another question: right now I place all binaries into |
a9c038f
to
5d0a4dd
Compare
There used to be a time when GAP put its binaries into architecture specific subdirectories, and one could install GAP for several architectures in parallel, without duplicating the library and data tables. I tried to match this capability also in CARAT (bin/carat is actually only a link to one of the architecture specific directories, so that test files could remain generic). Since that capability of GAP is gone, there is indeed no need to keep in CARAT. |
Actually, that capability of GAP (to support multiple architectures or in general, build variants, from a single source tree) is not at all gone. It just stopped using a home cooked, brittle, and severely limited mechanism that nobody else used, and which was mostly focused on users of NFS volumes shared between machines with different OSes (something rather rare these days in my experience, although of course ymmv), and switched to mechanisms that are well-supported and well-known elsewhere, namely out-of-tree builds. (Disclaimer: I am heavily biased on this, as I designed and wrote the new build system; that said, I also have 20 years of experience writing and maintaining all kinds of build systems for cross platform software, on multiple operating systems and architectures, so I do think I am qualified to comment on this... ;-). That said, GAP still generates But all this is really irrelevant for the standalone tool Of course I can still rig things so that all binaries end up in |
I was just explaining how this extra architecture directory came about, and already agreed to get rid of it. For the wrong reason, perhaps, but still... |
Regarding the qcatalog, I would then prefer separate archives for dimensions 1-5 and dimension 6, and to unpack only the former by default. When building all packages in the GAP distribution, CARAT gets unpacked for very many user, only few of which actually want to use it. Dimension 6 is another 180 MB, which is not negligible. |
5d0a4dd
to
6c5db47
Compare
I agree with the decision to split the archives into to and only unpacking dimension 1-5 by default. |
64dcb8b
to
5b70972
Compare
320742f
to
9b42de6
Compare
@gaehler indeed you did -- my apologies, I got a bit carried away there :-/. Anyway, I'll make those changes tomorrow. BTW, while I found a couple more crashing bugs, and fixed them, and got the tests squeaky clean in valgrind memcheck, they still fail on Windows: in 32 bit builds the failures are caused by segfaults that I unfortunately can't really explain. In 64 bit mode, it prints messages of the following form (note that I adjusted the message in this PR to get some more insights, namely the value of
|
82f9db8
to
e1e3b35
Compare
From my point of view, this PR is ready to be merged. While I did not yet look into splitting up The main issue then is compatibility with the GAP package
|
e1e3b35
to
10863c3
Compare
I can do the necessary adjustments to caratGAP, which shouldn't be hard. The plan is to provide GMPDIR to CARAT only if GAP uses the GMP bundled with it, or if GAP was configured with some specific GMP. Otherwise, I assume there must be some GMP installed at some standard place, where CARAT's configure can find it. Also, I assume CARAT's configure (or Makefile) will allow me to add some further CFLAGS, if so desired. Regarding your results on Windows, I am a bit puzzled. I compiled the version just before this PR on my Windows 10 notebook without the flag -DDIAG1. On 32bit, all tests pass, and on 64bit, only two commands crash, maybe even for a related reason. So, on Windows there is quite some regression, it seems. |
10863c3
to
7f66ff8
Compare
@gaehler Hmm, that's weird. But I am not sure I quite follow what you are comparing. I can think of the following
From what you write, my understanding is that 4 passes for you in 32bit mode, and "almost" passes in 64 bit mode. Correct? Your PR #29 ostensibly tests 3, except that it's based on an older master. Perhaps you could rebase it so we can see what happens with the AppVeyor 32bit tests then? It would be really interesting for me to know what the outcome of 6 is. Could you perhaps test this? Finally, I actually want to remove all of the |
I should add that for 1. and 5., I am currently seeing identical results, so that doesn't look like a regression to me, more like "setting DIAG1 doesn't matter". But of course that's in conflict with what we see in PR #29, which really puzzles me. |
be22400
to
a341ba5
Compare
Yes, I did variant 4 on my laptop. To test 3, I'd rather make a new PR (one-line change in AppVeyor script), than revive the old PR #29 (which I left just for documentation). 6 would interest me, too, but for this I need some instructions how to check this out to my machine. Regarding m_alloc, I never used it, because I didn't really trust it. Anyway, it's a debugging tool, not for production. It was written with a particular architecture in mind, and certainly would have to be reworked to make it portable. I doubt that this effort would be well invested. |
a341ba5
to
b24306e
Compare
Codecov Report
@@ Coverage Diff @@
## master #36 +/- ##
=========================================
Coverage ? 59.62%
=========================================
Files ? 269
Lines ? 28666
Branches ? 0
=========================================
Hits ? 17091
Misses ? 11575
Partials ? 0
Continue to review full report at Codecov.
|
9d475fd
to
0b96330
Compare
I figured out what caused the regression on Windows: I had to add back the Build times on AppVeyor are higher now, though, because now we actually collect coverage information there, which we did not before due to a buggy/fragile way to add the @gaehler regarding building / testing this PR on your computer: you could clone my fork of carat https://github.com/fingolfin/carat somewhere, and then in there switch to the |
... and I managed to fix the Windows 64 bit issues, thanks to Valgrind! |
I can confirm that on my Windows laptop, PR #36 now passes all tests, both on Win32 and Win64. |
b5637d9
to
b409388
Compare
Shall we merge this now? |
This also addresses issue #35 partially, and fixes a bunch of compiler warnings.
Resolves #30
Closes #31
Closes #29