-
Notifications
You must be signed in to change notification settings - Fork 161
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
Removing prim, small and trans directories #1650
Removing prim, small and trans directories #1650
Conversation
Codecov Report
@@ Coverage Diff @@
## master #1650 +/- ##
==========================================
+ Coverage 63.12% 63.49% +0.36%
==========================================
Files 967 952 -15
Lines 290317 286802 -3515
Branches 12746 12746
==========================================
- Hits 183272 182104 -1168
+ Misses 104243 101898 -2345
+ Partials 2802 2800 -2
|
acfa823
to
63f8b0d
Compare
Should this go into GAP 4.9, GAP 4.10 or GAP 5.0? What is the point of splitting off the primitive groups library and moving it into a package if that package is then still necessary to run GAP? Wouldn't it make sense to use this kind of modularization to reduce the amount of code which is needed by GAP? -- Unlike e.g. GAPDoc, the primitive groups library is rather not a central part of GAP, and there are so many applications of GAP which just don't benefit from it being loaded. Certainly, having PrimGrp not always loaded would require updating package dependencies accordingly. This suggests to perform such change together with splitting off the transitive groups library and the small groups library, and also together with multiple other planned changes with limited backwards compatibility, say for GAP 5.0. |
This is planned to go into 4.9; we decided to make the package required to give package authors time to add this package to their list of dependencies and to not just break packages because we can (the same holds true for the transitive groups and the small groups libraries). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks pretty good to me (only some minor remark/question below), but I have not actually tried to use it.
.appveyor.yml
Outdated
@@ -24,7 +24,7 @@ environment: | |||
# BUILDDIR: build # HPC-GAP only supports kernel extensions for of out-of-tree builds | |||
|
|||
cache: | |||
- bootstrap-pkg-full.tar.gz |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The commit "Use package archives for the master branch for bootstrapping" really should be first in this PR.
Also, what exactly is the difference between those two tarballs? Is bootstrap-pkg-full.tar.gz
th packages from "the last stable release", and packages-master.tar.gz
"the latest versions of packages we have", or what? If so, shouldn't bootstrap-pkg-full.tar.gz
better be called packages-stable.tar.gz
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@fingolfin do you want to squash commits or rebase interactively and reorder them? Commits are atomic and should work in the order you suggest too.
bootstrap-pkg-full.tar.gz
is a symlink pointing to packages-v4.8.8.tar.gz
, so it contains packages from "the last stable release". We also have packages-stable-4.8.tar.gz
which is at this moment same as packages-v4.8.8.tar.gz
.
It may be sensible idea to point bootstrap-pkg-full.tar.gz
to packages-stable-4.8.tar.gz
since we may be able to put there also some package updates which are not yet in the the last stable release.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In addition, packages-master.tar.gz
has some more packages that require GAP 4.9 and not redistributed with GAP 4.8 - at the moment, besides PrimGrp those are crypting, uuid and ZeroMQinterface.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I meant an "interactive rebase": The point is that logically, the commits before the "Use package archives [...]" depend on it (w/o it, their Travis tests would fail).
Makefile.rules
Outdated
PKG_MINIMAL = bootstrap-pkg-minimal.tar.gz | ||
PKG_FULL = bootstrap-pkg-full.tar.gz | ||
PKG_MINIMAL = packages-required-master.tar.gz | ||
PKG_FULL = packages-master.tar.gz |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Huh, wait -- that would then also affect the next stable release -- unless we change it back on the stable branch, or even change it in each release... Is that the plan?
In that case, it might be better to factor out the master
bit into a separate variable, say, PKG_BRANCH
and then do something like this (untested):
PKG_BRANCH = master # change to stable-X.Y in stable branch
PKG_MINIMAL = packages-required-$(PKG_BRANCH).tar.gz
PKG_FULL = packages-$(PKG_BRANCH).tar.gz
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, I consider that change to be temporary, otherwise it will affect the next stable release of GAP 4.9.1 (not of GAP 4.8.9 if it will happen). The idea of
Indeed, I've managed to do it in reverse order because I had all packages locally, and then pushed the whole branch with 4 commits.
28d8298
to
1b0f932
Compare
Shouldn't this also extract the tests for the primitive groups library into package tests? In particular, parts or all of these files:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@alex-konovalov tells me he knows about the tests and plan to migrate them later. While strictly speaking it would be nice to migrate them right away, I of course fully understand this requires yet more work. It is also not strictly necessary. So I don't think we need to hold this PR back for it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why are you removing this function. It got added specifically for the fact that `prim' got moved into a package -- this way library functions that might use the primitive groups library -- e.g. normalizer in S_n -- have a way of testing cleanly whether the library is available, regardless whether it is through a package or other means.
This function is used e.g. in lib/gpprmsya.gi for exactly this purpose.
@hulpke I guess by "this" you mean
and then assigning it to the function that returns Also, there was an outdated comment that If that's OK, would you still like some changes to this PR? |
1b0f932
to
d0fcfd5
Compare
@alex-konovalov I look at this change as not resolving any issue but making it harder to get to a point where GAP could run without the primitive groups library, even if it would mean a loss of much of functionality. (A similar function exists for the transitive groups library and for that I'm going to insist that it remains in the library) |
It came to my mind that one may want to wait and replace all three directories by three new packages in a single PR. This is because at the moment master branch is tested with the set of packages from the latest stable release. If we merge 1650 now, it will use the archive for master branch for all tests. Hence our CI tests will start to fail as soon as e.g. TransGrp will be added to the archive, but there will be no merged PR which makes TransGrp needed to run GAP. Might happen that we will need a "fast-track" PR for that then. But since TransGrp is released and SmallGrp release seems close, might wait indeed. |
@hulpke Thanks. I think with these libraries becoming proper packages the next step would be to use |
What are you using ispackagemarkedforloading for? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I actually agree with @hulpke as I just realized that the latest version of this package is not compatible with master before this PR gets merged, which is extremely annoying - and there seems no good reason for that either.
@ChrisJefferson
It is used in several places (grep in |
@fingolfin I hoped that nobody would find that extremely annoying since the switch to using OK, that's my current plan: I will release new PrimGrp and update this PR to make requested changes. In the same time I will update This may take another week, but now sounds much more concrete and realistic than two weeks ago - I'm sure it will be completed before long, and we will have one more serious TODO less for GAP 4.9 beta. |
@fingolfin by the way, even if I will follow the plan from the previous comment, master branch will still be broken: it has code
This PR removes it. But if one uses the package in the master branch with this code in there, then TestPackageAvailability("primgrp") returns true, the code is not loaded, but the package is not loaded either. Hence tests that require the primitive groups library will break anyway. Same happens with TransGrp. |
I've made the change in gap-packages/primgrp@90f2b1f. This will be in the next release of PrimGrp, after which I will update the PR too. Tests of the master branch will now show diffs if the package is not loaded, but at least there will be no break loop. |
0d99bbe
to
caaae9a
Compare
prim
directory by the PrimGrp package
The next version of this PR also replaces trans by the TransGrp package. It takes into account suggestions by @fingolfin and @hulpke. I am now waiting for @markuspf completing the SmallGrp package, and then pick it up for the redistribution, add it to packages-master.tar.gz, and then remove Note that after this PR, GAP will not start if these will be missing. It will be necessary either to remove pkg directory and call make bootstrap-pkg-full to get the latest collection of GAP packages for the master branch, or to install these packages manually. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is tough to review on the GitHub web interface, since there are 4281 removed files and over 3 million removed lines. But using command line, it seems that, other than the removed data files, just refs in the documentation are adjusted.
So assuming everything else works (if the required packages are present), then I have no objections to this PR.
Note that this PR needs to be rebased. |
dda7242
to
7380904
Compare
@fingolfin thanks - rebased. |
@hulpke you have requested changes - are you happy with the way how it looks now? If so, could you please change the status of your review? |
7380904
to
57cc198
Compare
@hulpke I've discovered that TransGrp breaks CTblLib, because it replaces I've added (Update - this commit was later submitted as a separate PR #1852). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The description of this PR claims "It makes PrimGrp and TransGrp packages needed to run GAP". But that does not seem to be the case (also, smallgrp is missing from that list).
Please update the description of this PR to accurately explain what it contains.
Also, I am not sure we should merge this as-is -- with it, one can load packages that need transgrp but do not yet declare a dependency on it. I thought the plan was to make all three packages required for at least th e4.9 cycle (resp. till all packages which need it declare the dependency explicitly.
@fingolfin Ok, I will update description - it is a relic version from the 1st time this PR was submitted. Also, you do not see that they are made needed since this now has been moved to #1714 where a provisional arrangement has been made to make them needed only if prim/trans/small directories are missing. But now we're removing those directories, so those provisional arrangements may made into firm ones. I will do this here and update the PR. As we figured out, this will help users now having those packages to understand what happened, instead of seeing an unhelpful error. |
57cc198
to
96a4502
Compare
@fingolfin: rebased; issue description updated; provisional code removed. Now three new packages are always needed to run GAP. If any of them is not available, GAP displays a proper error message telling that a package is missing. Commit which adds TRANSDEGREES to obsoletes (used by CTblLib) was moved to #1852 and has been merged there. |
d099e6d
to
c008388
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me now. The only thing I'd consider changing is making the last commit the first; I.e. first stop using trans/prim/small, then remove them.
PR gap-system#1714 added some code needed to load either a new package for a data library, if present, or load the existing prim, small or trans directory otherwise. This code is not needed any more, since we remove prim, trans, and small directories. Also make PrimGrp, SmallGrp and TransGrp packages needed to run GAP. This ensures that a proper error message will be displayed in case any of these packages is missing.
This removes part of the documentation which has been moved to the PrimGrp package.
This removes part of the documentation which has been moved to the TransGrp package.
This removes part of the documentation which has been moved to the SmallGrp package.
c008388
to
f9b9ebd
Compare
@fingolfin: Rebased, reordered as suggested, and also extended with synchronising |
This PR completes the switch from data libraries contained in the
prim
,small
andtrans
directories to the three new packages, called PrimGrp, SmallGrp and TransGrp:This switch consists of two phases.
The first one has been implemented in #1714 and allowed to load either a new package for a data library, if present, or load the existing prim, small or trans directory otherwise.
This PR #1650 implements the 2nd stage. It removes that provisional code, together with removing
prim
,trans
, andsmall
directories and parts of documentation that has been migrated to the packages. It also makes PrimGrp, SmallGrp and TransGrp packages needed to run GAP. This ensures that a proper error message will be displayed in case any of these packages is missing, and that the code that expects the relevant functionality to be available, will still work.Warning: when this PR will be merged, GAP will not start if any of PrimGrp, SmallGrp or TransGrp packages are missing. It will be necessary either to remove
pkg
directory and callmake bootstrap-pkg-full
to get the latest collection of GAP packages for the master branch, or to install these packages manually from the URLs above.Remark 1: I've checked that all latest changes in
prim
directory are already contained in PrimGrp. For the same check for thetrans
directory, see hulpke/transgrp#17. Commit 3d86926 has been applied to SmallGrp in gap-packages/smallgrp@423ee7f.Remark 2: an early version of this PR also removed declaration of (undocumented)
PrimitiveGroupsAvailable
from the library - that change has been later reverted.