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

Enable more packages in the GAP distro CI tests #1122

Open
6 of 23 tasks
lgoettgens opened this issue Jan 13, 2025 · 1 comment
Open
6 of 23 tasks

Enable more packages in the GAP distro CI tests #1122

lgoettgens opened this issue Jan 13, 2025 · 1 comment

Comments

@lgoettgens
Copy link
Member

lgoettgens commented Jan 13, 2025

#1067 added CI tests for all packages in the GAP package distribution (ref. #1065).
However, many packages are still excluded due to various reasons.

The current list and some notes on why they are excluded can be found in https://github.com/oscar-system/GAP.jl/blob/master/.github/workflows/CI-distro.yml#L63-L86.

Missing JLL

Missing Software: GAP

More specifically, it needs a working gap executable in the path, e.g. something created by GAP.create_gap_sh() or a variant thereof.

  • examplesforhomalg
  • localizeringforhomalg
  • ringsforhomalg

Missing Software: Pari

In Oscar we replace the code in alnuth which calls PARI by calls into OSCAR, so we don't want to install PARI with GAP.jl.

However, we could install it just for the CI job on GAP.jl testing GAP packages. Done in PR #1124

  • alnuth
  • guarana
  • polenta
  • radiroot

Missing Software: polymake

For details on getting polymake to work see my comment below.

  • polymaking
  • hap
  • hapcryst

Needs changes in the GAP package

  • autodoc
  • normalizinterface
    • NormalizInterface currently bundles Normaliz 3.9.3 and its test suite is tuned to that, but our JLL builds it against normaliz_jll which has 3.10.2
    • so NormalizInterface should be updated to bundle and use that version of Normaliz.
  • polycyclic
    • test suite currently broken and also disabled by GAP package distribution

Hopeless or irrelevant

  • example
    • no JLL, on purpose, as the kernel extension is just a uselesss toy example
    • it is OK to not test this package
  • itc
    • requires xgap and as such is out of scope
  • xgap
    • requires X Window and needs to start a gap executable in a special mode
    • getting this to work would be a major effort with very few if any people benefiting
    • so we won't package this

Other

  • atlasrep
    • random segfaults during testing
  • guava
    • random test failures in guava-3.19/tst/guava.tst:649: Syntax error: expression expected in /tmp/gaptempfile.i8tlxS:1 GUAVA_TEMP_VAR := � &
  • help
    • test failure in HeLP-4.0/tst/yes_4ti2.tst:39
  • io
  • packagemanager
    • test suite has various failures when run in our context
  • profiling
    • segfaults during testing
@fingolfin
Copy link
Member

To get the GAP package 'polymaking' working (and hence hap, hapcryst) we need access to polymake. This has a JLL and we could use BinaryWrappers.jl. However, this is complicated by the fact that the polymake executable is just a perl script, which begins with #!/usr/bin/env perl. Hence the following doesn't work:

GAP.Globals.POLYMAKE_COMMAND = GapObj(joinpath(polymake_binpath, "polymake"))

... as this ends up trying to use a system install version of Perl (which may not even exist). So we need to use the perl from our Perl_jll. E.g this works to launch polymake:

import Oscar.Polymake: polymake_jll
run(addenv(`$(polymake_jll.Perl_jll.perl()) $(polymake_jll.polymake_path)`,
           polymake_jll.JLLWrappers.LIBPATH_env=>polymake_jll.LIBPATH[]))

But GAP needs a path to an executable and we can't tell it to set environment variables. So we either need to generate our own wrapper shell script; or someone needs to generalize BinaryWrappers to teach it to generate wrappers that set up environment variables based on one JLL (here: polymake_jll), but executes something from another (here: perl from Perl_jll).

Since nobody has request anything using polymaking right now, we'll leave it at that for the moment (ideally any code using it would be rewritten to instead use our Julia-GAP and Julia-polymake bridges instead anyway).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants