Subject: [bug#73075] [PATCH 2/2] gnu: gap: Build most packages.

From: Andreas Enge <[email-masked]>
Date: Fri, 6 Sep 2024 18:16:33 +0200

* gnu/packages/algebra.scm (gap)[source]<snippet>: Use a blacklist instead
of a whitelist.
[inputs]: Add inputs required for packages.
[license]: Use gpl3+ for the combined work.
[arguments]<#:phases>: Set CC environment variable.

This change is possible since now all licenses for GAP packages are
properly documented as free. Packages are only excluded if they currently
fail to build, as a reminder for further work.

Change-Id: If68dfc7ce4b73cdeab0d5a31340840dc1aeb48b6
---
 gnu/packages/algebra.scm | 98 ++++++++--------------------------------
 1 file changed, 18 insertions(+), 80 deletions(-)

diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index cdd6113a34..2187cd062d 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -41,6 +41,7 @@ (define-module (gnu packages algebra)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cpp)
+  #:use-module (gnu packages curl)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages fltk)
@@ -52,6 +53,7 @@ (define-module (gnu packages algebra)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages mpi)
   #:use-module (gnu packages multiprecision)
+  #:use-module (gnu packages networking)
   #:use-module (gnu packages ocaml)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -1233,91 +1235,31 @@ (define-public gap
            ;; Delete bundled external libraries.
            (for-each delete-file-recursively
                      '("extern" "hpcgap/extern"))
-           ;; Delete all packages except for a fixed list,
-           ;; given by their names up to version numbers.
+           ;; Delete packages that are known not to build.
+           ;; TODO: Investigate.
            (with-directory-excursion "pkg"
              (for-each delete-file-recursively
-               (lset-difference
-                 (lambda (all keep) (string-prefix? keep all))
-                 (scandir ".")
-                 '("." ".."
-                   ;; Necessary packages.
-                   "gapdoc"
-                   "primgrp"
-                   "smallgrp"   ; artistic2.0
-                   "transgrp"   ; artistic2.0 for data,
-                                ; gpl2 or gpl3 for code
-                   ;; Optional packages.
-                   "4ti2interface"
-                   "alnuth"
-                   "autodoc"
-                   "automata"
-                   "autpgrp"
-                   "cap"
-                   "crime"
-                   "crisp"      ; bsd-2
-                   "ctbllib"    ; gpl3+
-                   "datastructures"
-                   "examplesforhomalg"
-                   "factint"
-                   "fga"
-                   "format"
-                   "gauss"
-                   "gaussforhomalg"
-                   "generalizedmorphismsforcap"
-                   "gradedmodules"
-                   "gradedringforhomalg"
-                   "groupoids"
-                   "guarana"
-                   "homalg"
-                   "homalgtocas"
-                   "idrel"
-                   "images"     ; mpl2.0
-                   "intpic"
-                   "io"         ; gpl3+
-                   "ioforhomalg"
-                   "irredsol"   ; bsd-2
-                   "laguna"
-                   "liering"
-                   "linearalgebraforcap"
-                   "localizeringforhomalg"
-                   "mapclass"
-                   "matricesforhomalg"
-                   "modulepresentationsforcap"
-                   "modules"
-                   "monoidalcategories"
-                   "nconvex"
-                   "nilmat"
-                   "numericalsgps"
-                   "openmath"
-                   "orb"        ; gpl3+
-                   "polenta"
-                   "polycyclic"
-                   "radiroot"
-                   "recog"      ; gpl3+
-                   "repsn"
-                   "resclasses"
-                   "ringsforhomalg"
-                   "sco"
-                   "simpcomp"
-                   "sophus"
-                   "tomlib"
-                   "toolsforhomalg"
-                   "unipot"
-                   "utils"))))))))
+                       '("caratinterface" ; ./configure: /bin/sh: bad interpreter: No such file or directory
+                         "cddinterface" ; configure: error: could not use setoper.h
+                         "normalizinterface" ; tries to download normaliz
+                         "semigroups" ; bundled dependencies
+                         "xgap" ; make: /bin/sh: No such file or directory
+                        )))))))
     (build-system gnu-build-system)
     (inputs
-     (list gmp readline zlib))
+     (list gmp readline zlib
+           curl   ; for the curlinterface package
+           zeromq ; for the zeromqinterface package
+     ))
     (arguments
      `(#:configure-flags
        (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib"))
        #:phases
        (modify-phases %standard-phases
          (add-after 'build 'build-packages
-           ;; Compile all packages that have not been deleted by the
-           ;; code snippet above.
            (lambda _
              (setenv "CONFIG_SHELL" (which "bash"))
+             (setenv "CC" "gcc")
              (with-directory-excursion "pkg"
                (invoke "../bin/BuildPackages.sh"))))
          (add-after 'build-packages 'build-doc
@@ -1339,13 +1281,9 @@ (define-public gap
 a library of thousands of functions implementing algebraic algorithms
 written in the GAP language as well as large data libraries of algebraic
 objects.")
-    ;; Some packages have different licenses (effectively forcing the
-    ;; combined work to be licensed as gpl3+); if this is the case, this
-    ;; is mentioned above next to their name.
-    ;; Some packages have no license mentioned explicitly; supposedly this
-    ;; means that the gpl2+ licence of GAP itself applies, but to be on the
-    ;; safe side, we drop them for now.
-    (license license:gpl2+)))
+    ;; gap itself is gpl2+, but some packages have different licenses.
+    ;; effectively forcing the combined work to be licensed as gpl3+.
+    (license license:gpl3+)))
 
 (define-public spectra
   (package
-- 
2.45.2