From a6b9ebc2fc92a72ca8a1e61e2d321804eec9d738 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 23 Oct 2018 16:50:50 -0500 Subject: gnu: Add Combinatorial BLAS. * gnu/packages/maths.scm (combinatorial-blas): New variable. * gnu/packages/patches/combinatorial-blas-awpm.patch, gnu/packages/patches/combinatorial-blas-io-fix.patch: New files * gnu/local.mk(dist_patch_DATA): Add them. --- gnu/local.mk | 2 ++ 1 file changed, 2 insertions(+) (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index 7500571be8..fb19c1a93c 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -692,6 +692,8 @@ dist_patch_DATA = \ %D%/packages/patches/clucene-pkgconfig.patch \ %D%/packages/patches/clx-remove-demo.patch \ %D%/packages/patches/coda-use-system-libs.patch \ + %D%/packages/patches/combinatorial-blas-awpm.patch \ + %D%/packages/patches/combinatorial-blas-io-fix.patch \ %D%/packages/patches/cool-retro-term-dont-check-uninit-member.patch \ %D%/packages/patches/cool-retro-term-fix-array-size.patch \ %D%/packages/patches/cool-retro-term-memory-leak-1.patch \ -- cgit 1.4.1 From fd3733432b531c7e4ef34f06c896bd27fcafb2f9 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Wed, 24 Oct 2018 12:39:11 -0500 Subject: scotch: Upgrade to 6.0.6. * gnu/packages/maths.scm (scotch): Upgrade to 6.0.6. [source]: Remove patches that have been fixed upstream. [arguments]: Add 'install-metis' phase. [outputs]: New field. (pt-scotch, pt-scotch32)[arguments]: Add 'mpi-setup' phase. Use 'invoke'. * gnu/packages/patches/scotch-graph-diam-64.patch, gnu/packages/patches/scotch-graph-induce-type-64.patch, gnu/packages/patches/scotch-test-threading.patch: Delete files. * gnu/packages/patches/scotch-integer-declarations.patch: New file. * gnu/local.mk (dist_patch_DATA): Adjust as necessary. --- gnu/local.mk | 4 +- gnu/packages/maths.scm | 47 +++++++++++----------- gnu/packages/patches/scotch-graph-diam-64.patch | 27 ------------- .../patches/scotch-graph-induce-type-64.patch | 19 --------- .../patches/scotch-integer-declarations.patch | 37 +++++++++++++++++ gnu/packages/patches/scotch-test-threading.patch | 22 ---------- 6 files changed, 61 insertions(+), 95 deletions(-) delete mode 100644 gnu/packages/patches/scotch-graph-diam-64.patch delete mode 100644 gnu/packages/patches/scotch-graph-induce-type-64.patch create mode 100644 gnu/packages/patches/scotch-integer-declarations.patch delete mode 100644 gnu/packages/patches/scotch-test-threading.patch (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index fb19c1a93c..d3b40b3934 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1219,10 +1219,8 @@ dist_patch_DATA = \ %D%/packages/patches/rust-reproducible-builds.patch \ %D%/packages/patches/rxvt-unicode-escape-sequences.patch \ %D%/packages/patches/scheme48-tests.patch \ - %D%/packages/patches/scotch-test-threading.patch \ %D%/packages/patches/scotch-build-parallelism.patch \ - %D%/packages/patches/scotch-graph-diam-64.patch \ - %D%/packages/patches/scotch-graph-induce-type-64.patch \ + %D%/packages/patches/scotch-integer-declarations.patch \ %D%/packages/patches/scribus-poppler.patch \ %D%/packages/patches/sdl-libx11-1.6.patch \ %D%/packages/patches/seq24-rename-mutex.patch \ diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index b53fa7fad1..648cbfbac7 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -2424,25 +2424,25 @@ implemented in ANSI C, and MPI for communications.") (define-public scotch (package (name "scotch") - (version "6.0.5a") + (version "6.0.6") (source (origin (method url-fetch) (uri (string-append "https://gforge.inria.fr/frs/download.php/" "latestfile/298/scotch_" version ".tar.gz")) (sha256 - (base32 "0vsmgjz8qv80di3ljmc7hbdsizxxxwy2b9rgd2fl1mdc6dgbj8av")) - (patches (search-patches "scotch-test-threading.patch" - "scotch-build-parallelism.patch" - "scotch-graph-induce-type-64.patch" - "scotch-graph-diam-64.patch")))) + (base32 "1ky4k9r6jvajhqaqnnx6h8fkmds2yxgp70dpr1qzwcyhi2nhqvv8")) + (patches (search-patches "scotch-build-parallelism.patch" + "scotch-integer-declarations.patch")))) (build-system gnu-build-system) (inputs `(("zlib" ,zlib) ("flex" ,flex) ("bison" ,bison))) + (outputs '("out" "metis")) (arguments - `(#:phases + `(#:make-flags (list (string-append "prefix=" %output)) + #:phases (modify-phases %standard-phases (add-after 'unpack 'chdir-to-src @@ -2477,7 +2477,7 @@ YACC = bison -pscotchyy -y -b y '("COMMON_FILE_COMPRESS_GZ" "COMMON_PTHREAD" "COMMON_RANDOM_FIXED_SEED" - "INTSIZE64" ;use 'long' instead of 'int' + "INTSIZE64" ;use 'int64_t' ;; Prevents symbolc clashes with libesmumps "SCOTCH_RENAME" ;; XXX: Causes invalid frees in superlu-dist tests @@ -2490,22 +2490,21 @@ YACC = bison -pscotchyy -y -b y (invoke "make" (format #f "-j~a" (parallel-job-count)) "esmumps"))) - (replace - 'install - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (mkdir out) - (invoke "make" - (string-append "prefix=" out) - "install") - ;; esmumps files are not installed with the above - (for-each (lambda (f) - (copy-file f (string-append out "/include/" f))) - (find-files "../include" ".*esmumps.h$")) - (for-each (lambda (f) - (copy-file f (string-append out "/lib/" f))) - (find-files "../lib" "^lib.*esmumps.*")) - #t)))))) + (add-before 'install 'make-install-dirs + (lambda* (#:key outputs #:allow-other-keys) + (mkdir (assoc-ref outputs "out")))) + (add-after 'install 'install-metis + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "metis"))) + (mkdir out) + ;; metis files are not installed with 'make install' + (for-each (lambda (f) + (install-file f (string-append out "/include"))) + (find-files "../include/" ".*metis\\.h")) + (for-each (lambda (f) + (install-file f (string-append out "/lib"))) + (find-files "../lib/" ".*metis\\..*")) + #t)))))) (home-page "http://www.labri.fr/perso/pelegrin/scotch/") (synopsis "Programs and libraries for graph algorithms") (description "SCOTCH is a set of programs and libraries which implement diff --git a/gnu/packages/patches/scotch-graph-diam-64.patch b/gnu/packages/patches/scotch-graph-diam-64.patch deleted file mode 100644 index 2ae31e3c3b..0000000000 --- a/gnu/packages/patches/scotch-graph-diam-64.patch +++ /dev/null @@ -1,27 +0,0 @@ -Fixes test_scotch_graph_diam test with -DINTSIZE64. - -Reported upstream at -https://gforge.inria.fr/tracker/index.php?func=detail&aid=21650&group_id=248&atid=1081 - ---- scotch-6.0.5a/src/libscotch/library.h -+++ scotch-6.0.5a/src/libscotch/library.h -@@ -187,6 +187,7 @@ SCOTCH_Num SCOTCH_graphBase (SCOTCH_Graph * const, const SCO - int SCOTCH_graphCheck (const SCOTCH_Graph * const); - void SCOTCH_graphSize (const SCOTCH_Graph * const, SCOTCH_Num * const, SCOTCH_Num * const); - void SCOTCH_graphData (const SCOTCH_Graph * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num ** const, SCOTCH_Num * const, SCOTCH_Num ** const, SCOTCH_Num ** const); -+SCOTCH_Num SCOTCH_graphDiamPV (SCOTCH_Graph * const); - void SCOTCH_graphStat (const SCOTCH_Graph * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const, SCOTCH_Num * const, SCOTCH_Num * const, SCOTCH_Num * const, double * const, double * const); - int SCOTCH_graphCoarsen (const SCOTCH_Graph * const, const SCOTCH_Num, const double, const SCOTCH_Num, SCOTCH_Graph * const, SCOTCH_Num * const); - int SCOTCH_graphCoarsenMatch (const SCOTCH_Graph * const, SCOTCH_Num * const, const double, const SCOTCH_Num, SCOTCH_Num * const); ---- scotch-6.0.5a/src/libscotch/library_graph_diam.c -+++ scotch-6.0.5a/src/libscotch/library_graph_diam.c -@@ -72,8 +72,7 @@ - - SCOTCH_Num - SCOTCH_graphDiamPV ( --SCOTCH_Graph * const grafptr, --const SCOTCH_Num baseval) -+SCOTCH_Graph * const grafptr) - { - return ((SCOTCH_Num) graphDiamPV ((Graph * const) grafptr)); - } diff --git a/gnu/packages/patches/scotch-graph-induce-type-64.patch b/gnu/packages/patches/scotch-graph-induce-type-64.patch deleted file mode 100644 index d2eee52a7b..0000000000 --- a/gnu/packages/patches/scotch-graph-induce-type-64.patch +++ /dev/null @@ -1,19 +0,0 @@ -Fixes return type of SCOTCH_graphInduceList and SCOTCH_graphInducePart -so that the definition matches with -DINTSIZE64. - -Reported upstream at -https://gforge.inria.fr/tracker/index.php?func=detail&aid=21608&group_id=248&atid=1081 - ---- scotch_6.0.5a/src/libscotch/library.h.orig 2018-02-11 10:52:38.000000000 -0600 -+++ scotch_6.0.5a/src/libscotch/library.h 2018-02-23 16:56:41.000000000 -0600 -@@ -199,8 +199,8 @@ - int SCOTCH_graphGeomSaveChac (const SCOTCH_Graph * const, const SCOTCH_Geom * const, FILE * const, FILE * const, const char * const); - int SCOTCH_graphGeomSaveMmkt (const SCOTCH_Graph * const, const SCOTCH_Geom * const, FILE * const, FILE * const, const char * const); - int SCOTCH_graphGeomSaveScot (const SCOTCH_Graph * const, const SCOTCH_Geom * const, FILE * const, FILE * const, const char * const); --int SCOTCH_graphInduceList (const SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_Num * const, SCOTCH_Graph * const); --int SCOTCH_graphInducePart (const SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_GraphPart2 * const, const SCOTCH_GraphPart2, SCOTCH_Graph * const); -+SCOTCH_Num SCOTCH_graphInduceList (const SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_Num * const, SCOTCH_Graph * const); -+SCOTCH_Num SCOTCH_graphInducePart (const SCOTCH_Graph * const, const SCOTCH_Num, const SCOTCH_GraphPart2 * const, const SCOTCH_GraphPart2, SCOTCH_Graph * const); - - int SCOTCH_graphMapInit (const SCOTCH_Graph * const, SCOTCH_Mapping * const, const SCOTCH_Arch * const, SCOTCH_Num * const); - void SCOTCH_graphMapExit (const SCOTCH_Graph * const, SCOTCH_Mapping * const); diff --git a/gnu/packages/patches/scotch-integer-declarations.patch b/gnu/packages/patches/scotch-integer-declarations.patch new file mode 100644 index 0000000000..978625c1c0 --- /dev/null +++ b/gnu/packages/patches/scotch-integer-declarations.patch @@ -0,0 +1,37 @@ +diff --git a/src/libscotch/library.h b/src/libscotch/library.h +index 1891c19..ecc0533 100644 +--- a/src/libscotch/library.h ++++ b/src/libscotch/library.h +@@ -67,6 +67,8 @@ + + /*+ Integer type. +*/ + ++#include ++ + typedef DUMMYIDX SCOTCH_Idx; + + typedef DUMMYINT SCOTCH_Num; +diff --git a/src/libscotchmetis/library_metis.h b/src/libscotchmetis/library_metis.h +index e6767e1..04e71c3 100644 +--- a/src/libscotchmetis/library_metis.h ++++ b/src/libscotchmetis/library_metis.h +@@ -99,6 +99,7 @@ typedef enum { + */ + + #ifndef SCOTCH_H /* In case "scotch.h" not included before */ ++#include + typedef DUMMYINT SCOTCH_Num; + #endif /* SCOTCH_H */ + +diff --git a/src/libscotchmetis/library_parmetis.h b/src/libscotchmetis/library_parmetis.h +index 6d2f0b0..3c803fc 100644 +--- a/src/libscotchmetis/library_parmetis.h ++++ b/src/libscotchmetis/library_parmetis.h +@@ -106,6 +106,7 @@ typedef enum { + */ + + #ifndef SCOTCH_H /* In case "scotch.h" not included before */ ++#include + typedef DUMMYINT SCOTCH_Num; + #endif /* SCOTCH_H */ + diff --git a/gnu/packages/patches/scotch-test-threading.patch b/gnu/packages/patches/scotch-test-threading.patch deleted file mode 100644 index de8cc49c41..0000000000 --- a/gnu/packages/patches/scotch-test-threading.patch +++ /dev/null @@ -1,22 +0,0 @@ -Fix this test so that it succeeds when the library is not compiled with -SCOTCH_PTHREAD. - ---- scotch_6.0.4/src/check/test_common_thread.c 2014-09-28 11:39:59.000000000 -0500 -+++ scotch_6.0.4/src/check/test_common_thread.c 2015-01-10 00:52:00.076229542 -0600 -@@ -175,14 +175,14 @@ - char * argv[]) - { - TestThreadGroup groudat; --#if ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) -+#if ((defined COMMON_PTHREAD) && (defined SCOTCH_PTHREAD)) - TestThread * restrict thrdtab; - int thrdnbr; - #endif /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */ - - SCOTCH_errorProg (argv[0]); - --#if ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) -+#if ((defined COMMON_PTHREAD) && (defined SCOTCH_PTHREAD)) - thrdnbr = SCOTCH_PTHREAD_NUMBER; - - groudat.redusum = COMPVAL (thrdnbr); -- cgit 1.4.1 From 6161141e9181ca82f151779f8048b28e093a025f Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Wed, 31 Oct 2018 14:58:51 -0500 Subject: superlu-dist: Upgrade to 6.1.0. * gnu/packages/patches/superlu-dist-awpm-grid.patch: New file. * gnu/packages/maths.scm (superlu-dist)[source]: Upgrade to 6.0.0. Remove extraneous 'use-modules' in snippet. [build-system]: Change to cmake-build-system. [propagated-inputs]: Replace pt-scotch with pt-scotch32 to match integer sizes. Add "parmetis" input, from pt-scotch32. Move lapack to ... [inputs]: ...here. Add openblas and combinatorial-blas. [arguments]: Replace 'configure' phase with #:configure-flags. Add 'set-c++-standard' and 'omp-setup' phases. Remove 'create-install-directories, 'check', and 'install' phases, which are now handled by cmake. * gnu/local.mk (dist_patch_DATA): Add patch. --- gnu/local.mk | 1 + gnu/packages/maths.scm | 121 ++++++++-------------- gnu/packages/patches/superlu-dist-awpm-grid.patch | 36 +++++++ 3 files changed, 79 insertions(+), 79 deletions(-) create mode 100644 gnu/packages/patches/superlu-dist-awpm-grid.patch (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index d3b40b3934..c76653b823 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1238,6 +1238,7 @@ dist_patch_DATA = \ %D%/packages/patches/soundtouch-CVE-2018-1000223.patch \ %D%/packages/patches/steghide-fixes.patch \ %D%/packages/patches/streamlink-update-test.patch \ + %D%/packages/patches/superlu-dist-awpm-grid.patch \ %D%/packages/patches/superlu-dist-scotchmetis.patch \ %D%/packages/patches/swig-guile-gc.patch \ %D%/packages/patches/swish-e-search.patch \ diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 648cbfbac7..e2f3d84d09 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -2298,20 +2298,18 @@ also provides threshold-based ILU factorization preconditioners.") (define-public superlu-dist (package (name "superlu-dist") - (version "5.3.0") + (version "6.1.0") (source (origin (method url-fetch) (uri (string-append "http://crd-legacy.lbl.gov/~xiaoye/SuperLU/" "superlu_dist_" version ".tar.gz")) (sha256 - (base32 "0ja5ihqivkda1wd58y4lmzvmwssm9g91f70c5q0fzwhng6580h6y")) + (base32 "0pqgcgh1yxhfzs99fas3mggajzd5wca3nbyp878rziy74gfk03dl")) (modules '((guix build utils))) (snippet ;; Replace the non-free implementation of MC64 with a stub '(begin - (use-modules (ice-9 regex) - (ice-9 rdelim)) (call-with-output-file "SRC/mc64ad_dist.c" (lambda (port) (display " @@ -2327,92 +2325,57 @@ void mc64ad_dist (int *a, int *b, int *c, int *d, int *e, double *f, int *g, abort (); }\n" port))) (substitute* "SRC/util.c" ;adjust default algorithm - (("RowPerm[[:blank:]]*=[[:blank:]]*LargeDiag") - "RowPerm = NOROWPERM")) + (("RowPerm[[:blank:]]*=[[:blank:]]*LargeDiag_MC64;") + ;; TODO: set to "LargeDiag_AWPM" once combinatorial-blas has + ;; general (i.e. non-square) processor-grid support. + "RowPerm = NOROWPERM;")) #t)) - (patches (search-patches "superlu-dist-scotchmetis.patch")))) - (build-system gnu-build-system) + (patches (search-patches "superlu-dist-scotchmetis.patch" + "superlu-dist-awpm-grid.patch")))) + (build-system cmake-build-system) (native-inputs `(("tcsh" ,tcsh))) (inputs - `(("gfortran" ,gfortran))) + `(("gfortran" ,gfortran) + ("blas" ,openblas) + ("lapack" ,lapack) + ("combblas" ,combinatorial-blas))) (propagated-inputs - `(("openmpi" ,openmpi) ;headers include MPI heades - ("lapack" ,lapack) ;required to link with output library - ("pt-scotch" ,pt-scotch))) ;same + `(("mpi" ,openmpi) ;headers include MPI heades + ("parmetis" ,pt-scotch32 "metis") + ("pt-scotch" ,pt-scotch32))) (arguments - `(#:parallel-build? #f ;race conditions using ar + `(#:parallel-tests? #f ;tests use MPI and OpenMP + #:configure-flags (list "-DBUILD_SHARED_LIBS:BOOL=YES" + "-DTPL_ENABLE_COMBBLASLIB=YES" + "-DTPL_BLAS_LIBRARIES=-lopenblas" + "-DTPL_LAPACK_LIBRARIES=-llapack" + (string-append "-DTPL_PARMETIS_LIBRARIES=" + (string-join + '("ptscotchparmetis" "ptscotch" "ptscotcherr" + "scotchmetis" "scotch" "scotcherr") + ";")) + (string-append "-DTPL_PARMETIS_INCLUDE_DIRS=" + (assoc-ref %build-inputs "parmetis") + "/include") + "-DTPL_ENABLE_COMBBLASLIB=ON" + (string-append "-DTPL_COMBBLAS_INCLUDE_DIRS=" + (assoc-ref %build-inputs "combblas") + "/include/CombBLAS;" + (assoc-ref %build-inputs "combblas") + "/include/BipartiteMatchings") + "-DTPL_COMBBLAS_LIBRARIES=CombBLAS") #:phases (modify-phases %standard-phases - (replace 'configure - (lambda* (#:key inputs outputs #:allow-other-keys) - (call-with-output-file "make.inc" - (lambda (port) - (format port " -PLAT = -DSuperLUroot = ~a -DSUPERLULIB = ~a/lib/libsuperlu_dist.a -BLASDEF = -DUSE_VENDOR_BLAS -BLASLIB = -L~a/lib -lblas -PARMETISLIB = -L~a/lib \ - -lptscotchparmetis -lptscotch -lptscotcherr -lptscotcherrexit \ - -lscotch -lscotcherr -lscotcherrexit -METISLIB = -L~:*~a/lib \ - -lscotchmetis -lscotch -lscotcherr -lscotcherrexit -LIBS = $(DSUPERLULIB) $(PARMETISLIB) $(METISLIB) $(BLASLIB) -ARCH = ar -ARCHFLAGS = cr -RANLIB = ranlib -CC = mpicc -PIC = -fPIC -CFLAGS = -O3 -g -DPRNTlevel=0 $(PIC) -NOOPTS = -O0 -g $(PIC) -FORTRAN = mpifort -FFLAGS = -O2 -g $(PIC) -LOADER = $(CC) -CDEFS = -DAdd_" - (getcwd) - (assoc-ref outputs "out") - (assoc-ref inputs "lapack") - (assoc-ref inputs "pt-scotch")))) - #t)) - (add-after 'unpack 'remove-broken-symlinks + (add-before 'configure 'set-c++-standard (lambda _ - (for-each delete-file - (find-files "MAKE_INC" "\\.#make\\..*")) - #t)) - (add-before 'build 'create-install-directories - (lambda* (#:key outputs #:allow-other-keys) - (for-each - (lambda (dir) - (mkdir-p (string-append (assoc-ref outputs "out") - "/" dir))) - '("lib" "include")) - #t)) + (substitute* "CMakeLists.txt" + ;; AWPM headers require C++14 + (("CMAKE_CXX_STANDARD 11") "CMAKE_CXX_STANDARD 14")))) (add-before 'check 'mpi-setup ,%openmpi-setup) - (replace 'check - (lambda _ - (with-directory-excursion "EXAMPLE" - (invoke "mpirun" "-n" "2" - "./pddrive" "-r" "1" "-c" "2" "g20.rua") - (invoke "mpirun" "-n" "2" - "./pzdrive" "-r" "1" "-c" "2" "cg20.cua")) - #t)) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - ;; Library is placed in lib during the build phase. Copy over - ;; headers to include. - (let* ((out (assoc-ref outputs "out")) - (incdir (string-append out "/include"))) - (for-each (lambda (file) - (let ((base (basename file))) - (format #t "installing `~a' to `~a'~%" - base incdir) - (copy-file file - (string-append incdir "/" base)))) - (find-files "SRC" ".*\\.h$"))) - #t))))) + (add-before 'check 'omp-setup + (lambda _ (setenv "OMP_NUM_THREADS" "1") #t))))) (home-page (package-home-page superlu)) (synopsis "Parallel supernodal direct solver") (description diff --git a/gnu/packages/patches/superlu-dist-awpm-grid.patch b/gnu/packages/patches/superlu-dist-awpm-grid.patch new file mode 100644 index 0000000000..d6cb8e521d --- /dev/null +++ b/gnu/packages/patches/superlu-dist-awpm-grid.patch @@ -0,0 +1,36 @@ +Create the CombBLAS::SpParMat with the MPI_Comm from the input 'gridinfo_t'. +This prevents a warning/error from CombBLAS about using MPI_COMM_WORLD. + +--- a/SRC/AWPM_CombBLAS.hpp ++++ b/SRC/AWPM_CombBLAS.hpp +@@ -52,7 +52,7 @@ + { + printf("AWPM only supports square process grid. Retuning without a permutation.\n"); + } +- combblas::SpParMat < int_t, double, combblas::SpDCCols > Adcsc; ++ combblas::SpParMat < int_t, double, combblas::SpDCCols > Adcsc(grid->comm); + std::vector< std::vector < std::tuple > > data(procs); + + /* ------------------------------------------------------------ +@@ -100,11 +100,10 @@ + combblas::AWPM(Adcsc, mateRow2Col, mateCol2Row,true); + + // now gather the matching vector +- MPI_Comm World = mateRow2Col.getcommgrid()->GetWorld(); + int * rdispls = new int[procs]; + int sendcnt = mateRow2Col.LocArrSize(); + int * recvcnt = new int[procs]; +- MPI_Allgather(&sendcnt, 1, MPI_INT, recvcnt, 1, MPI_INT, World); ++ MPI_Allgather(&sendcnt, 1, MPI_INT, recvcnt, 1, MPI_INT, grid->comm); + rdispls[0] = 0; + for(int i=0; i(), ScalePermstruct->perm_r, recvcnt, rdispls, combblas::MPIType(), World); ++ MPI_Allgatherv(senddata, sendcnt, combblas::MPIType(), ScalePermstruct->perm_r, recvcnt, rdispls, combblas::MPIType(), grid->comm); + + delete[] rdispls; + delete[] recvcnt; -- cgit 1.4.1 From dd7bc92afcd4b69849fc55041ac0261315cde2da Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Thu, 3 Jan 2019 21:20:33 +0000 Subject: gnu: linkchecker: Fix most test failures. Add a patch to skip more tests that require the network. Along with some other changes, this gets all but of one of the tests passing. The remaining test is broken due to a problem with the Python package in Guix, which is fixed by [1] which is currently on the core-updates branch. This patch doesn't work on core-updates due to python2-miniboa not being present. 1: d453b0e11d3f001a8160a7d126fdbf40e45d5042 * gnu/packages/python.scm (linkchecker)[source]: Add patch. [native-inputs]: Add more inputs required for the tests. [arguments]: Enable the tests, move the 'check phase after 'install. Test using the installed software, and use py.test. --- gnu/local.mk | 1 + ...-mark-more-tests-that-require-the-network.patch | 182 +++++++++++++++++++++ gnu/packages/web.scm | 29 +++- 3 files changed, 211 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/linkchecker-mark-more-tests-that-require-the-network.patch (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index c76653b823..cb84fc0e81 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1004,6 +1004,7 @@ dist_patch_DATA = \ %D%/packages/patches/lierolibre-newer-libconfig.patch \ %D%/packages/patches/lierolibre-remove-arch-warning.patch \ %D%/packages/patches/lierolibre-try-building-other-arch.patch \ + %D%/packages/patches/linkchecker-mark-more-tests-that-require-the-network.patch \ %D%/packages/patches/linux-pam-no-setfsuid.patch \ %D%/packages/patches/lirc-localstatedir.patch \ %D%/packages/patches/lirc-reproducible-build.patch \ diff --git a/gnu/packages/patches/linkchecker-mark-more-tests-that-require-the-network.patch b/gnu/packages/patches/linkchecker-mark-more-tests-that-require-the-network.patch new file mode 100644 index 0000000000..f3e488cec2 --- /dev/null +++ b/gnu/packages/patches/linkchecker-mark-more-tests-that-require-the-network.patch @@ -0,0 +1,182 @@ +From f24c88a0732024028fffe0372039a847e91722ea Mon Sep 17 00:00:00 2001 +From: Christopher Baines +Date: Tue, 1 Jan 2019 22:36:29 +0000 +Subject: [PATCH] Mark more tests that require the network + +I believe all these tests require the network, at least they seem to +fail if it's I run them without connecting my computer to the web. + +I'm looking at this as part of packaging linkchecker for GNU Guix, +where the package is build and the tests are run in a isolated +environment, intentionally without network access, to avoid issues +with non-reproducible package builds. +--- + tests/checker/test_http.py | 2 ++ + tests/checker/test_http_misc.py | 2 ++ + tests/checker/test_http_redirect.py | 2 ++ + tests/checker/test_httpbin.py | 5 +++++ + tests/checker/test_misc.py | 4 ++++ + tests/checker/test_whitespace.py | 3 +++ + 6 files changed, 18 insertions(+) + +diff --git a/tests/checker/test_http.py b/tests/checker/test_http.py +index e4c1e097..8a8af567 100644 +--- a/tests/checker/test_http.py ++++ b/tests/checker/test_http.py +@@ -20,6 +20,7 @@ + + import pytest + ++from tests import need_network + from .httpserver import HttpServerTest, CookieRedirectHttpRequestHandler + + class TestHttp (HttpServerTest): +@@ -29,6 +30,7 @@ def __init__(self, methodName='runTest'): + super(TestHttp, self).__init__(methodName=methodName) + self.handler = CookieRedirectHttpRequestHandler + ++ @need_network + def test_html (self): + confargs = dict(recursionlevel=1) + self.file_test("http.html", confargs=confargs) +diff --git a/tests/checker/test_http_misc.py b/tests/checker/test_http_misc.py +index 9922d85f..c6b6afdb 100644 +--- a/tests/checker/test_http_misc.py ++++ b/tests/checker/test_http_misc.py +@@ -20,11 +20,13 @@ + import os + import sys + from .httpserver import HttpServerTest ++from tests import need_network + from linkcheck.network import iputil + + class TestHttpMisc (HttpServerTest): + """Test http:// misc link checking.""" + ++ @need_network + def test_html (self): + self.swf_test() + self.obfuscate_test() +diff --git a/tests/checker/test_http_redirect.py b/tests/checker/test_http_redirect.py +index f212d98e..2253a70d 100644 +--- a/tests/checker/test_http_redirect.py ++++ b/tests/checker/test_http_redirect.py +@@ -17,6 +17,7 @@ + """ + Test http checking. + """ ++from tests import need_network + from .httpserver import HttpServerTest, CookieRedirectHttpRequestHandler + + class TestHttpRedirect (HttpServerTest): +@@ -26,6 +27,7 @@ def __init__(self, methodName='runTest'): + super(TestHttpRedirect, self).__init__(methodName=methodName) + self.handler = CookieRedirectHttpRequestHandler + ++ @need_network + def test_redirect (self): + self.redirect1() + self.redirect2() +diff --git a/tests/checker/test_httpbin.py b/tests/checker/test_httpbin.py +index 0319c2f6..4c8fa846 100644 +--- a/tests/checker/test_httpbin.py ++++ b/tests/checker/test_httpbin.py +@@ -18,6 +18,7 @@ + Test http stuff with httpbin.org. + """ + import re ++from tests import need_network + from . import LinkCheckTest + + +@@ -30,6 +31,7 @@ def get_httpbin_url(path): + class TestHttpbin(LinkCheckTest): + """Test http:// link redirection checking.""" + ++ @need_network + def test_http_link(self): + linkurl = u"http://www.example.com" + nlinkurl = self.norm(linkurl) +@@ -48,6 +50,7 @@ def test_http_link(self): + ] + self.direct(url, resultlines, recursionlevel=1) + ++ @need_network + def test_basic_auth(self): + user = u"testuser" + password = u"testpassword" +@@ -67,6 +70,7 @@ def test_basic_auth(self): + ] + self.direct(url, resultlines, confargs=confargs) + ++ @need_network + def test_http_refresh_header(self): + linkurl = u"http://www.example.com" + nlinkurl = self.norm(linkurl) +@@ -85,6 +89,7 @@ def test_http_refresh_header(self): + ] + self.direct(url, resultlines, recursionlevel=1) + ++ @need_network + def test_http_content_location_header(self): + linkurl = u"http://www.example.com" + nlinkurl = self.norm(linkurl) +diff --git a/tests/checker/test_misc.py b/tests/checker/test_misc.py +index 2e4cfd07..f9591f9d 100644 +--- a/tests/checker/test_misc.py ++++ b/tests/checker/test_misc.py +@@ -17,6 +17,7 @@ + """ + Test miscellaneous html tag parsing and URL types + """ ++from tests import need_network + from . import LinkCheckTest + + +@@ -25,15 +26,18 @@ class TestMisc (LinkCheckTest): + Test misc link types. + """ + ++ @need_network + def test_misc (self): + self.file_test("misc.html") + + def test_html5 (self): + self.file_test("html5.html") + ++ @need_network + def test_archive (self): + self.file_test("archive.html") + ++ @need_network + def test_itms_services(self): + url = u"itms-services:?action=download-manifest&url=http://www.example.com/" + resultlines = [ +diff --git a/tests/checker/test_whitespace.py b/tests/checker/test_whitespace.py +index 609c108a..fc2727d6 100644 +--- a/tests/checker/test_whitespace.py ++++ b/tests/checker/test_whitespace.py +@@ -17,6 +17,7 @@ + """ + Test whitespace handling. + """ ++from tests import need_network + from . import LinkCheckTest + + +@@ -25,6 +26,7 @@ class TestWhitespace (LinkCheckTest): + Test whitespace in URLs. + """ + ++ @need_network + def test_leading_whitespace (self): + # Leading whitespace + url = u" http://www.example.org/" +@@ -50,6 +52,7 @@ def test_leading_whitespace (self): + ] + self.direct(url, resultlines) + ++ @need_network + def test_trailing_whitespace (self): + # Trailing whitespace + url = u"http://www.example.org/ " diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index d3693dff05..776027ced7 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -5330,6 +5330,9 @@ Instagram and YouTube.") (uri (git-reference (url "https://github.com/linkchecker/linkchecker") (commit (string-append "v" version)))) + (patches + (search-patches + "linkchecker-mark-more-tests-that-require-the-network.patch")) (file-name (git-file-name name version)) (sha256 (base32 @@ -5339,8 +5342,32 @@ Instagram and YouTube.") `(("python2-dnspython" ,python2-dnspython) ("python2-pyxdg" ,python2-pyxdg) ("python2-requests" ,python2-requests))) + (native-inputs + `(("gettext" ,gettext-minimal) + ("python2-pytest" ,python2-pytest) + ("python2-miniboa" ,python2-miniboa) + ("python2-parameterized" ,python2-parameterized))) (arguments - `(#:python ,python-2)) + `(#:python ,python-2 + #:phases + (modify-phases %standard-phases + ;; Move the 'check phase to after 'install, so that the installed + ;; library can be used + (delete 'check) + (add-after 'install 'check + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + ;; Set PYTHONPATH so that the installed linkchecker is used + (setenv "PYTHONPATH" + (string-append out "/lib/python2.7/site-packages" + ":" + (getenv "PYTHONPATH"))) + ;; Remove this directory to avoid it being used when running + ;; the tests + (delete-file-recursively "linkcheck") + + (invoke "py.test" "tests")) + #t))))) (home-page "https://linkcheck.github.io/linkchecker") (synopsis "Check websites for broken links") (description "LinkChecker is a website validator. It checks for broken -- cgit 1.4.1 From 0791437f972caa7e48de91ad5cb150a614f617c2 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 28 Jan 2019 14:57:10 +0100 Subject: gnu: Move most packages from guile.scm to new module. * gnu/packages/guile.scm (artanis, guildhall, guile-aspell, guile-bash, guile-8sync, guile-daemon, guile-dsv, guile-fibers, guile-syntax-highlight, guile-sjson, guile-colorized, guile-pfds, guile-aa-tree, guile-simple-zmq, jupyter-guile-kernel, guile-sparql, guile-debbugs, guile-email, guile-debbugs-next, guile-newt, guile-mastodon, guile-parted, guile-xosd, guile-dbi, guile-dbd-sqlite3, guile-config, guile-hall, guile-ics, guile-wisp, guile-sly, g-wrap, guile-miniadapton, guile-reader, guile2.2-reader, guile-ncurses, guile-ncurses/gpm, guile-lib, guile2.0-lib, guile2.2-lib, guile-minikanren, guile2.0-minikanren, guile2.2-minikanren, guile-irregex, guile2.0-irregex, guile2.2-irregex, haunt, guile2.0-haunt, guile2.2-haunt, guile-redis, guile2.0-redis, guile2.2-redis, guile-commonmark, guile2.0-commonmark, guile2.2-commonmark, mcron, mcron2): Move these variables from here... * gnu/packages/guile-xyz.scm: ...to this new file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. * gnu/installer.scm, gnu/packages/bioinformatics.scm, gnu/packages/ci.scm, gnu/packages/gtk.scm, gnu/packages/guile.scm, gnu/packages/mail.scm, gnu/packages/package-management.scm, gnu/packages/skribilo.scm, gnu/packages/web.scm, gnu/services/mcron.scm: Update module references. --- gnu/installer.scm | 1 + gnu/local.mk | 1 + gnu/packages/bioinformatics.scm | 1 + gnu/packages/ci.scm | 1 + gnu/packages/gtk.scm | 1 + gnu/packages/guile-xyz.scm | 1841 +++++++++++++++++++++++++++++++++++ gnu/packages/guile.scm | 1784 +-------------------------------- gnu/packages/mail.scm | 1 + gnu/packages/package-management.scm | 1 + gnu/packages/skribilo.scm | 1 + gnu/packages/web.scm | 1 + gnu/services/mcron.scm | 2 +- 12 files changed, 1862 insertions(+), 1774 deletions(-) create mode 100644 gnu/packages/guile-xyz.scm (limited to 'gnu/local.mk') diff --git a/gnu/installer.scm b/gnu/installer.scm index 2ae139b13f..479d940b4a 100644 --- a/gnu/installer.scm +++ b/gnu/installer.scm @@ -31,6 +31,7 @@ #:use-module (gnu packages cryptsetup) #:use-module (gnu packages disk) #:use-module (gnu packages guile) + #:use-module (gnu packages guile-xyz) #:autoload (gnu packages gnupg) (guile-gcrypt) #:use-module (gnu packages iso-codes) #:use-module (gnu packages linux) diff --git a/gnu/local.mk b/gnu/local.mk index cb84fc0e81..629da48e64 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -220,6 +220,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/gtk.scm \ %D%/packages/guile.scm \ %D%/packages/guile-wm.scm \ + %D%/packages/guile-xyz.scm \ %D%/packages/gv.scm \ %D%/packages/gxmessage.scm \ %D%/packages/hardware.scm \ diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 37b00977ba..3ce4e323c4 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -72,6 +72,7 @@ #:use-module (gnu packages graph) #:use-module (gnu packages groff) #:use-module (gnu packages guile) + #:use-module (gnu packages guile-xyz) #:use-module (gnu packages haskell) #:use-module (gnu packages haskell-check) #:use-module (gnu packages haskell-web) diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm index bd4a3d3509..6533fb302d 100644 --- a/gnu/packages/ci.scm +++ b/gnu/packages/ci.scm @@ -32,6 +32,7 @@ #:use-module (gnu packages compression) #:use-module (gnu packages databases) #:use-module (gnu packages guile) + #:use-module (gnu packages guile-xyz) #:use-module (gnu packages gnupg) #:use-module (gnu packages mail) #:use-module (gnu packages package-management) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 22dd54985c..ccb63e71d1 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -74,6 +74,7 @@ #:use-module (gnu packages python) #:use-module (gnu packages python-xyz) #:use-module (gnu packages guile) + #:use-module (gnu packages guile-xyz) #:use-module (gnu packages cups) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm new file mode 100644 index 0000000000..93fa026778 --- /dev/null +++ b/gnu/packages/guile-xyz.scm @@ -0,0 +1,1841 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès +;;; Copyright © 2014, 2015, 2018 Mark H Weaver +;;; Copyright © 2015, 2017 Christopher Allan Webber +;;; Copyright © 2016 Alex Sassmannshausen +;;; Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus +;;; Copyright © 2016 Erik Edrosa +;;; Copyright © 2016 Eraim Flashner +;;; Copyright © 2016, 2017 Alex Kost +;;; Copyright © 2016, 2017 Adonay "adfeno" Felipe Nogueira +;;; Copyright © 2016 Amirouche +;;; Copyright © 2016 Jan Nieuwenhuizen +;;; Copyright © 2017 Andy Wingo +;;; Copyright © 2017 David Thompson +;;; Copyright © 2017, 2018 Mathieu Othacehe +;;; Copyright © 2017 Theodoros Foradis +;;; Copyright © 2017 Nils Gillmann +;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice +;;; Copyright © 2018 Maxim Cournoyer +;;; Copyright © 2018 Arun Isaac +;;; Copyright © 2018 Pierre-Antoine Rouby +;;; Copyright © 2018 Eric Bavier +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages guile-xyz) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (gnu packages) + #:use-module (gnu packages aspell) + #:use-module (gnu packages autotools) + #:use-module (gnu packages base) + #:use-module (gnu packages bash) + #:use-module (gnu packages compression) + #:use-module (gnu packages disk) + #:use-module (gnu packages ed) + #:use-module (gnu packages gawk) + #:use-module (gnu packages gettext) + #:use-module (gnu packages gl) + #:use-module (gnu packages gperf) + #:use-module (gnu packages guile) + #:use-module (gnu packages hurd) + #:use-module (gnu packages image) + #:use-module (gnu packages libffi) + #:use-module (gnu packages libunistring) + #:use-module (gnu packages linux) + #:use-module (gnu packages man) + #:use-module (gnu packages maths) + #:use-module (gnu packages multiprecision) + #:use-module (gnu packages ncurses) + #:use-module (gnu packages networking) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python) + #:use-module (gnu packages readline) + #:use-module (gnu packages sdl) + #:use-module (gnu packages slang) + #:use-module (gnu packages sqlite) + #:use-module (gnu packages texinfo) + #:use-module (gnu packages tls) + #:use-module (gnu packages version-control) + #:use-module (gnu packages xdisorg) + #:use-module (gnu packages xorg) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix git-download) + #:use-module (guix build-system gnu) + #:use-module (guix build-system guile) + #:use-module (guix utils) + #:use-module (ice-9 match) + #:use-module ((srfi srfi-1) #:select (alist-delete))) + +(define-public artanis + (let ((release "0.2.1") + (revision 3)) + (package + (name "artanis") + (version (if (zero? revision) + release + (string-append release "-" + (number->string revision)))) + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/artanis/artanis-" + release ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "041ajcg2pz918kd9iqcj4inpzddc3impvz3r2nhlpbv8zrz011hn")) + (modules '((guix build utils))) + (snippet + '(begin + (delete-file-recursively "artanis/third-party/json.scm") + (delete-file-recursively "artanis/third-party/json") + (substitute* '("artanis/artanis.scm" + "artanis/oht.scm") + (("(#:use-module \\()artanis third-party (json\\))" _ + use-module json) + (string-append use-module json))) + (substitute* "artanis/oht.scm" + (("([[:punct:][:space:]]+)(->json-string)([[:punct:][:space:]]+)" + _ pre json-string post) + (string-append pre + "scm" json-string + post))) + (substitute* "artanis/artanis.scm" + (("[[:punct:][:space:]]+->json-string[[:punct:][:space:]]+") + "")) + #t)))) + (build-system gnu-build-system) + ;; TODO: Add guile-dbi and guile-dbd optional dependencies. + (inputs `(("guile" ,guile-2.2) + ("guile-json" ,guile-json))) + (native-inputs `(("bash" ,bash) ;for the `source' builtin + ("pkgconfig" ,pkg-config) + ("util-linux" ,util-linux))) ;for the `script' command + (arguments + '(#:make-flags + ;; TODO: The documentation must be built with the `docs' target. + (let* ((out (assoc-ref %outputs "out")) + (scm (string-append out "/share/guile/site/2.2")) + (go (string-append out "/lib/guile/2.2/site-ccache"))) + ;; Don't use (%site-dir) for site paths. + (list (string-append "MOD_PATH=" scm) + (string-append "MOD_COMPILED_PATH=" go))) + #:test-target "test" + #:phases + (modify-phases %standard-phases + (add-before 'install 'substitute-root-dir + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "Makefile" ;ignore the execution of bash.bashrc + ((" /etc/bash.bashrc") " /dev/null")) + (substitute* "Makefile" ;set the root of config files to OUT + ((" /etc") (string-append " " out "/etc"))) + (mkdir-p (string-append out "/bin")) ;for the `art' executable + #t))) + (add-after 'install 'wrap-art + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (scm (string-append out "/share/guile/site/2.2")) + (go (string-append out "/lib/guile/2.2/site-ccache"))) + (wrap-program (string-append bin "/art") + `("GUILE_LOAD_PATH" ":" prefix (,scm)) + `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,go))) + #t)))))) + (synopsis "Web application framework written in Guile") + (description "GNU Artanis is a web application framework written in Guile +Scheme. A web application framework (WAF) is a software framework that is +designed to support the development of dynamic websites, web applications, web +services and web resources. The framework aims to alleviate the overhead +associated with common activities performed in web development. Artanis +provides several tools for web development: database access, templating +frameworks, session management, URL-remapping for RESTful, page caching, and +more.") + (home-page "https://www.gnu.org/software/artanis/") + (license (list license:gpl3+ license:lgpl3+))))) ;dual license + +;; There has not been any release yet. +(define-public guildhall + (let ((commit "2fe2cc539f4b811bbcd69e58738db03eb5a2b778") + (revision "1")) + (package + (name "guildhall") + (version (string-append "0-" revision "." (string-take commit 9))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ijp/guildhall.git") + (commit commit))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "115bym7bg66h3gs399yb2vkzc2ygriaqsn4zbrg8f054mgy8wzn1")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; Tests fail without this fix because they try to load the bash + ;; executable as a Scheme file. See bug report at + ;; https://github.com/ijp/guildhall/issues/22 + (add-after 'unpack 'fix-bug-22 + (lambda _ + (substitute* "Makefile.am" + (("TESTS_ENVIRONMENT=.*") + "AM_TESTS_ENVIRONMENT=srcdir=$(abs_top_srcdir)/tests/ +TEST_EXTENSIONS = .scm +SCM_LOG_COMPILER= $(top_builddir)/env $(GUILE) +AM_SCM_LOG_FLAGS = --no-auto-compile -s") + ;; FIXME: one of the database tests fails for unknown + ;; reasons. It does not fail when run outside of Guix. + (("tests/database.scm") "")) + #t))))) + (inputs + `(("guile" ,guile-2.0))) + (native-inputs + `(("zip" ,zip) ; for tests + ("autoconf" ,autoconf) + ("automake" ,automake) + ("texinfo" ,texinfo))) + (synopsis "Package manager for Guile") + (description + "Guildhall is a package manager written for Guile Scheme. A guild is +an association of independent craftspeople. A guildhall is where they meet. +This Guildhall aims to make a virtual space for Guile wizards and journeyfolk +to share code. + +On a practical level, Guildhall lets you share Scheme modules and programs +over the internet, and install code that has been shared by others. Guildhall +can handle dependencies, so when a program requires several libraries, and +each of those has further dependencies, all of the prerequisites for the +program can be installed in one go.") + (home-page "https://github.com/ijp/guildhall") + (license license:gpl3+)))) + +(define-public guile-aspell + (package + (name "guile-aspell") + (version "0.4") + (source (origin + (method url-fetch) + (uri (string-append + "http://lonelycactus.com/tarball/guile_aspell-" + version ".tar.gz")) + (sha256 + (base32 + "0vpk5xj9m9qc702z3khmkwhgpb949qbsyz8kw2qycda6qnxk0077")))) + (build-system gnu-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (add-before 'configure 'set-guilesitedir + (lambda _ + (substitute* "Makefile.in" + (("^guilesitedir =.*$") + "guilesitedir = \ +$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n")) + #t)) + (add-before 'build 'set-libaspell-file-name + (lambda* (#:key inputs #:allow-other-keys) + (let ((aspell (assoc-ref inputs "aspell"))) + (substitute* "aspell.scm" + (("\"libaspell\\.so\"") + (string-append "\"" aspell + "/lib/libaspell\""))) + #t)))))) + (native-inputs `(("pkg-config" ,pkg-config))) + (inputs `(("guile" ,guile-2.2) + ("aspell" ,aspell))) + (home-page "https://github.com/spk121/guile-aspell") + (synopsis "Spell-checking from Guile") + (description + "guile-aspell is a Guile Scheme library for comparing a string against a +dictionary and suggesting spelling corrections.") + (license license:gpl3+))) + +(define-public guile-bash + ;; This project is currently retired. It was initially announced here: + ;; . + (let ((commit "1eabc563ca5692b3e08d84f1f0e6fd2283284469") + (revision "0")) + (package + (name "guile-bash") + (version (string-append "0.1.6-" revision "." (string-take commit 7))) + (home-page + "https://anonscm.debian.org/cgit/users/kaction-guest/retired/dev.guile-bash.git") + (source (origin + (method git-fetch) + (uri (git-reference + (commit commit) + (url home-page))) + (sha256 + (base32 + "097vny990wp2qpjij6a5a5gwc6fxzg5wk56inhy18iki5v6pif1p")) + (file-name (string-append name "-" version "-checkout")))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags + ;; Add -I to match 'bash.pc' of Bash 4.4. + (list (string-append "CPPFLAGS=-I" + (assoc-ref %build-inputs "bash:include") + "/include/bash/include") + + ;; The '.a' file is useless. + "--disable-static" + + ;; Install 'lib/bash' as Bash 4.4 expects. + (string-append "--libdir=" (assoc-ref %outputs "out") + "/lib/bash")))) + (native-inputs `(("pkg-config" ,pkg-config) + ("autoconf" ,autoconf-wrapper) + ("automake" ,automake) + ("libtool" ,libtool) + ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'. + ("gettext" ,gettext-minimal) + + ;; Bash with loadable module support, for the test + ;; suite. + ("bash-full" ,bash))) + (inputs `(("guile" ,guile-2.0) + ("bash:include" ,bash "include"))) + (synopsis "Extend Bash using Guile") + (description + "Guile-Bash provides a shared library and set of Guile modules, +allowing you to extend Bash in Scheme. Scheme interfaces allow you to access +the following aspects of Bash: + +@itemize +@item aliases; +@item setting and getting Bash variables; +@item creating dynamic variables; +@item creating Bash functions with a Scheme implementation; +@item reader macro for output capturing; +@item reader macro for evaluating raw Bash commands. +@end itemize + +To enable it, run: + +@example +enable -f ~/.guix-profile/lib/bash/libguile-bash.so scm +@end example + +and then run @command{scm example.scm}.") + (license license:gpl3+)))) + +(define-public guile-8sync + (package + (name "guile-8sync") + (version "0.4.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/8sync/8sync-" version + ".tar.gz")) + (sha256 + (base32 + "031wm13srak3wsnll7j2mbbi29g1pcm4swdb71ds9yn567pn20qw")))) + (build-system gnu-build-system) + (native-inputs `(("autoconf" ,autoconf) + ("automake" ,automake) + ("guile" ,guile-2.2) + ("pkg-config" ,pkg-config) + ("texinfo" ,texinfo))) + (arguments + `(#:phases (modify-phases %standard-phases + (add-before 'configure 'setenv + (lambda _ + ;; quiet warnings + (setenv "GUILE_AUTO_COMPILE" "0") + #t))))) + (home-page "https://gnu.org/s/8sync/") + (synopsis "Asynchronous actor model library for Guile") + (description + "GNU 8sync (pronounced \"eight-sync\") is an asynchronous programming +library for GNU Guile based on the actor model. + +Note that 8sync is only available for Guile 2.2.") + (license license:lgpl3+))) + +(define-public guile-daemon + (package + (name "guile-daemon") + (version "0.1.2") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/alezost/" name + "/releases/download/v" version + "/" name "-" version ".tar.gz")) + (sha256 + (base32 + "0hh6gq6b6phpxm0b1dkxyzj3f4sxdf7dji63609lzypa5v1ad2gv")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("guile" ,guile-2.2))) + (home-page "https://github.com/alezost/guile-daemon") + (synopsis "Evaluate code in a running Guile process") + (description + "Guile-Daemon is a small Guile program that loads your initial +configuration file, and then reads and evaluates Guile expressions that +you send to a FIFO file.") + (license license:gpl3+))) + +(define-public guile-dsv + (package + (name "guile-dsv") + (version "0.2.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/artyom-poptsov/guile-dsv") + (commit "bdc5267d007478abc20ea96d7c459b7dd9560b3d"))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "1irw6mz8998nwyhzrw9g94jcz60b9zljgqfmipaz1ybn8579qjx0")))) + (build-system gnu-build-system) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("pkg-config" ,pkg-config) + ("texinfo" ,texinfo))) + (inputs `(("guile" ,guile-2.2))) + (propagated-inputs `(("guile-lib" ,guile-lib))) + (arguments + '(#:phases (modify-phases %standard-phases + (add-before 'configure 'set-guilesitedir + (lambda _ + (substitute* "Makefile.in" + (("^guilesitedir =.*$") + "guilesitedir = \ +$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n")) + (substitute* "modules/Makefile.in" + (("^guilesitedir =.*$") + "guilesitedir = \ +$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n")) + (substitute* "modules/dsv/Makefile.in" + (("^guilesitedir =.*$") + "guilesitedir = \ +$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n")) + #t))))) + (home-page "https://github.com/artyom-poptsov/guile-dsv") + (synopsis "DSV module for Guile") + (description + "Guile-DSV is a GNU Guile module for working with the +delimiter-separated values (DSV) data format. Guile-DSV supports the +Unix-style DSV format and RFC 4180 format.") + (license license:gpl3+))) + +(define-public guile-fibers + (package + (name "guile-fibers") + (version "1.0.0") + (source (origin + (method url-fetch) + (uri (string-append "https://wingolog.org/pub/fibers/fibers-" + version ".tar.gz")) + (sha256 + (base32 + "0vjkg72ghgdgphzbjz9ig8al8271rq8974viknb2r1rg4lz92ld0")))) + (build-system gnu-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (add-after 'install 'mode-guile-objects + (lambda* (#:key outputs #:allow-other-keys) + ;; .go files are installed to "lib/guile/X.Y/cache". + ;; This phase moves them to "…/site-ccache". + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib/guile")) + (old (car (find-files lib "^ccache$" + #:directories? #t))) + (new (string-append (dirname old) + "/site-ccache"))) + (rename-file old new) + #t)))))) + (native-inputs + `(("texinfo" ,texinfo) + ("pkg-config" ,pkg-config))) + (inputs + `(("guile" ,guile-2.2))) + (synopsis "Lightweight concurrency facility for Guile") + (description + "Fibers is a Guile library that implements a a lightweight concurrency +facility, inspired by systems like Concurrent ML, Go, and Erlang. A fiber is +like a \"goroutine\" from the Go language: a lightweight thread-like +abstraction. Systems built with Fibers can scale up to millions of concurrent +fibers, tens of thousands of concurrent socket connections, and many parallel +cores. The Fibers library also provides Concurrent ML-like channels for +communication between fibers. + +Note that Fibers makes use of some Guile 2.1/2.2-specific features and +is not available for Guile 2.0.") + (home-page "https://github.com/wingo/fibers") + (license license:lgpl3+))) + +(define-public guile-syntax-highlight + (package + (name "guile-syntax-highlight") + (version "0.1") + (source (origin + (method url-fetch) + (uri (string-append "https://files.dthompson.us/" + "guile-syntax-highlight/" + "guile-syntax-highlight-" + version ".tar.gz")) + (sha256 + (base32 + "1p771kq15x83483m23bhah1sz6vkalg3drm7x279f4j1cxligkzi")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("guile" ,guile-2.2))) + (synopsis "General-purpose syntax highlighter for GNU Guile") + (description "Guile-syntax-highlight is a general-purpose syntax +highlighting library for GNU Guile. It can parse code written in various +programming languages into a simple s-expression that can be converted to +HTML (via SXML) or any other format for rendering.") + (home-page "http://dthompson.us/projects/guile-syntax-highlight.html") + (license license:lgpl3+))) + +(define-public guile-sjson + (package + (name "guile-sjson") + (version "0.2.1") + (source (origin + (method url-fetch) + (uri (string-append "https://dustycloud.org/misc/sjson-" version + ".tar.gz")) + (sha256 + (base32 + "1mzmapln79vv10qxaggz9qwcdbag3jnrj19xx8bgkmxss8h03sv3")))) + (build-system gnu-build-system) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("pkg-config" ,pkg-config))) + (inputs + `(("guile" ,guile-2.2))) + (home-page "https://gitlab.com/dustyweb/guile-sjson") + (synopsis "S-expression based json reader/writer for Guile") + (description "guile-sjson is a json reader/writer for Guile. +It has a nice, simple s-expression based syntax.") + (license license:lgpl3+))) + +(define-public guile-colorized + (package + (name "guile-colorized") + (version "0.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/NalaGinrut/guile-colorized/" + "archive/v" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "16xhc3an6aglnca8xl3mvgi8hsqzqn68vsl5ga4bz8bvbap5fn4p")))) + (build-system guile-build-system) + (native-inputs + `(("guile" ,guile-2.2))) + (home-page "https://github.com/NalaGinrut/guile-colorized") + (synopsis "Colorized REPL for Guile") + (description + "Guile-colorized provides you with a colorized REPL for GNU Guile.") + (license license:gpl3+))) + +(define-public guile-pfds + (package + (name "guile-pfds") + (version "0.3") + (home-page "https://github.com/ijp/pfds") + (source (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (sha256 + (base32 + "19y33wg94pf0n98dkfqd1zbw93fgky4sawxsxl6s3vyqwl0yi5vh")) + (file-name (string-append name "-" version "-checkout")))) + (build-system guile-build-system) + (arguments + '(#:source-directory "src" + #:phases (modify-phases %standard-phases + (add-after 'unpack 'move-files-around + (lambda _ + ;; Move files under a pfds/ directory to reflect the + ;; module hierarchy. + (mkdir-p "src/pfds") + (for-each (lambda (file) + (rename-file file + (string-append "src/pfds/" + file))) + '("bbtrees.sls" + "deques" + "deques.sls" + "dlists.sls" + "fingertrees.sls" + "hamts.sls" + "heaps.sls" + "private" + "psqs.sls" + "queues" + "queues.sls" + "sequences.sls" + "sets.sls")) + + ;; In Guile <= 2.2.4, there's no way to tell 'guild + ;; compile' to accept the ".sls" extension. So... + (for-each (lambda (file) + (rename-file file + (string-append + (string-drop-right file 4) + ".scm"))) + (find-files "." "\\.sls$")) + #t))))) + (native-inputs + `(("guile" ,guile-2.2))) + (synopsis "Purely functional data structures for Guile") + (description + "This package provides purely functional data structures written in R6RS +Scheme and compiled for Guile. It has been tested with Racket, Guile 2, +Vicare Scheme and IronScheme. Right now it contains: + +@itemize +@item queues +@item deques +@item bbtrees +@item sets +@item dlists +@item priority search queues (PSQs) +@item finger trees +@item sequences +@item heaps +@item hash array mapped tries (HAMTs). +@end itemize\n") + (license license:bsd-3))) + +(define-public guile-aa-tree + (package + (name "guile-aa-tree") + (version "3.1.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://savannah/guile-aa-tree/guile-aa-tree-" + version ".tar.gz")) + (sha256 + (base32 + "0044c105r3q9vpl17pv3phl1b79kjm1llhkakqgiasixyav01blh")))) + (build-system guile-build-system) + (native-inputs `(("guile" ,guile-2.2))) + ;; https://savannah.nongnu.org/projects/guile-aa-tree + (home-page "https://qlfiles.net/guile-aa-tree/") + (synopsis "AA tree data structure for Guile") + (description + "This package provides an implementation of @dfn{AA trees}, a +self-balancing binary tree data structure, for Guile. It ensure @math{O(log +n)} worst case performance for core operations. The module provides +non-mutating insert, delete, and search operations, with support for +convenient nested tree operations.") + (license license:gpl3+))) + +(define-public guile-simple-zmq + (let ((commit "68bedb6679716214fb9d3472da57544526f7a618") + (revision "3")) + (package + (name "guile-simple-zmq") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jerry40/guile-simple-zmq") + (commit commit))) + (sha256 + (base32 + "1ad3xg69qqviy1f6dnlw0ysmfdbmp1jq65rfqb8nfd8dsrq2syli")) + (file-name (git-file-name name version)))) + (build-system guile-build-system) + (arguments + `(#:source-directory "src" + #:phases (modify-phases %standard-phases + (add-after 'unpack 'set-libzmq-file-name + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/simple-zmq.scm" + (("\\(dynamic-link \"libzmq\"\\)") + (format #f "(dynamic-link \"~a/lib/libzmq.so\")" + (assoc-ref inputs "zeromq")))) + #t))))) + (native-inputs + `(("guile" ,guile-2.2))) + (inputs + `(("zeromq" ,zeromq))) + (home-page "https://github.com/jerry40/guile-simple-zmq") + (synopsis "Guile wrapper over ZeroMQ library") + (description + "This package provides a Guile programming interface to the ZeroMQ +messaging library.") + (license license:gpl3+)))) + +(define-public jupyter-guile-kernel + (let ((commit "a7db9245a886e104138474df46c3e88b95cff629") + (revision "1")) + (package + (name "jupyter-guile-kernel") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jerry40/guile-kernel") + (commit commit))) + (sha256 + (base32 + "0aj04853bqm47ivfcmrgpb7w3wkis847kc7qrwsa5zcn9h38qh2f")))) + (build-system guile-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (add-after 'unpack 'set-openssl-file-name + (lambda* (#:key inputs #:allow-other-keys) + ;; Record the absolute file name of the 'openssl' + ;; command. + (substitute* "src/hmac.scm" + (("openssl") + (string-append (assoc-ref inputs "openssl") + "/bin/openssl"))) + #t)) + + ;; XXX: The code uses 'include' to include its own source + ;; files, and "-L src" isn't enough in this case. + (add-before 'build 'chdir + (lambda _ (chdir "src") #t)) + (add-after 'build 'chdir-back + (lambda _ (chdir "..") #t)) + + (add-after 'install 'install-kernel + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (json (assoc-ref inputs "guile-json")) + (zmq (assoc-ref inputs "guile-simple-zmq")) + (deps (list json zmq)) + (dir (string-append + out "/share/jupyter/kernels/guile")) + (effective (target-guile-effective-version))) + ;; Install kernel. + (install-file "src/kernel.json" dir) + + ;; Fix hard-coded file name in the kernel. + (substitute* (string-append dir "/kernel.json") + (("/home/.*/guile-jupyter-kernel.scm") + (string-append out "/share/guile/site/" + (target-guile-effective-version) + "/guile-jupyter-kernel.scm")) + (("\"guile\"") + (string-append "\"" (assoc-ref inputs "guile") + "/bin/guile\"")) + (("-s") + ;; Add '-L' and '-C' flags so that the kernel + ;; finds its dependencies. + (let ((-L (map (lambda (item) + (string-append "\"" item + "/share/guile/site/" + effective "\"")) + deps)) + (-C (map (lambda (item) + (string-append "\"" item + "/lib/guile/" + effective + "/site-ccache\"")) + deps))) + (string-append "--no-auto-compile\"" + (string-join -L ", \"-L\", " + 'prefix) + (string-join -C ", \"-C\", " + 'prefix) + ", \"-s")))) + #t)))))) + (inputs + `(("openssl" ,openssl) + ("guile" ,guile-2.2) + ("guile-json" ,guile-json) + ("guile-simple-zmq" ,guile-simple-zmq))) + (synopsis "Guile kernel for the Jupyter Notebook") + (description + "This package provides a Guile 2.x kernel for the Jupyter Notebook. It +allows users to interact with the Guile REPL through Jupyter.") + (home-page "https://github.com/jerry40/guile-kernel") + (license license:gpl3+)))) + +(define-public guile-sparql + (package + (name "guile-sparql") + (version "0.0.7") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/roelj/guile-sparql/releases/download/" + version "/guile-sparql-" version ".tar.gz")) + (sha256 + (base32 "1drnvhsgl0gc5crmb16yyw1j98nkhwwcgssv9vgm36ng43nnzffd")))) + (build-system gnu-build-system) + (arguments `(#:tests? #f)) ; There are no tests. + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("guile" ,guile-2.2))) + (home-page "https://github.com/roelj/guile-sparql") + (synopsis "SPARQL module for Guile") + (description "This package provides the functionality to query a SPARQL +endpoint. Additionally, it provides an interface to write SPARQL queries +using S-expressions.") + (license license:gpl3+))) + +(define-public guile-debbugs + (package + (name "guile-debbugs") + (version "0.0.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/guile-debbugs/guile-debbugs-" + version ".tar.gz")) + (sha256 + (base32 + "16l8910p57im6s3j93xhdaqvgfy6ms5n97177mrch3y961z5hy0i")) + (modules '((guix build utils))) + (snippet + '(substitute* "Makefile.in" + (("^godir = (.*)/ccache" _ prefix) + (string-append "godir = " prefix "/site-ccache")))))) + (build-system gnu-build-system) + (native-inputs + `(("guile" ,guile-2.2) + ("pkg-config" ,pkg-config))) + (home-page "https://savannah.gnu.org/projects/guile-debbugs/") + (synopsis "Guile interface to the Debbugs bug tracking service") + (description + "This package provides a Guile library to communicate with a Debbugs bug +tracker's SOAP service, such as @url{https://bugs.gnu.org}.") + (license license:gpl3+))) + +(define-public guile-email + (let ((commit "fa52eac55e5946db89621a6c583d2aa357864dee") + (revision "1")) + (package + (name "guile-email") + (version (git-version "0.1.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://git.systemreboot.net/guile-email") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1037mbz7qd9bzaqp8ysyhnl9ipd97fmj3b9jr8qfzx9179vvsj63")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("autoconf" ,autoconf) + ("automake" ,automake))) + (inputs + `(("guile" ,guile-2.2))) + (home-page "https://git.systemreboot.net/guile-email") + (synopsis "Guile email parser") + (description "This package provides an email parser written in pure +Guile.") + (license license:agpl3+)))) + +(define-public guile-debbugs-next + (let ((commit "75a331d561c8b6f8efcf16216dab961c17759efe") + (revision "1")) + (package (inherit guile-debbugs) + (name "guile-debbugs") + (version (git-version "0.0.3" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://git.savannah.gnu.org/git/guile-debbugs.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0br3mgbw41bpc9x57jlghl0i8dz9nl63r4wzs5l47aqszf84870y")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("autoconf" ,autoconf) + ("automake" ,automake) + ("texinfo" ,texinfo))) + (inputs + `(("guile" ,guile-2.2) + ("guile-email" ,guile-email)))))) + +;; There has not been any release yet. +(define-public guile-newt + (let ((commit "80c1e9e71945f833386d1632b52573e59325804f") + (revision "4")) + (package + (name "guile-newt") + (version (string-append "0-" revision "." (string-take commit 9))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/mothacehe/guile-newt") + (commit commit))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "1w7qy4dw1f4bx622l6hw8mv49sf1ha8kch8j4nganyk8fj0wn695")))) + (build-system gnu-build-system) + (arguments + '(#:make-flags + '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings + (inputs + `(("guile" ,guile-2.2) + ("newt" ,newt))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("pkg-config" ,pkg-config))) + (synopsis "Guile bindings to Newt") + (description + "This package provides bindings for Newt, a programming library for +color text mode, widget based user interfaces. The bindings are written in pure +Scheme by using Guile’s foreign function interface.") + (home-page "https://gitlab.com/mothacehe/guile-newt") + (license license:gpl3+)))) + +(define-public guile-mastodon + (package + (name "guile-mastodon") + (version "0.0.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://framagit.org/prouby/guile-mastodon.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1vblf3d1bbwna3l09p2ap5y8ycvl549bz6whgk78imyfmn28ygry")))) + (build-system gnu-build-system) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("pkg-config" ,pkg-config))) + (inputs + `(("guile" ,guile-2.2) + ("gnutls" ,gnutls) + ("guile-json" ,guile-json))) + (home-page "https://framagit.org/prouby/guile-mastodon") + (synopsis "Guile Mastodon REST API module") + (description "This package provides Guile modules to access the +@uref{https://docs.joinmastodon.org/api/, REST API of Mastodon}, a federated +microblogging service.") + (license license:gpl3+))) + +;; There has not been any release yet. +(define-public guile-parted + (let ((commit "ea3f1a1f6844775fc59d3078d2a09c62ffb341b8") + (revision "0")) + (package + (name "guile-parted") + (version (string-append "0-" revision "." (string-take commit 9))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/mothacehe/guile-parted") + (commit commit))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "1q7425gpjlwi2wvhzq7kw046yyx7v6j6jyzkd1cr861iz34mjwiq")))) + (build-system gnu-build-system) + (arguments + '(#:make-flags + '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings + (inputs + `(("guile" ,guile-2.2) + ("parted" ,parted))) + (propagated-inputs + `(("guile-bytestructures" ,guile-bytestructures))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("pkg-config" ,pkg-config))) + (synopsis "Guile bindings to GNU Parted") + (description + "This package provides bindings for GNU Parted library, a C library +allowing disk partition tables creation and manipulation. The bindings are +written in pure Scheme by using Guile's foreign function interface.") + (home-page "https://gitlab.com/mothacehe/guile-parted") + (license license:gpl3+)))) + +(define-public guile-xosd + (package + (name "guile-xosd") + (version "0.2.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/alezost/" name + "/releases/download/v" version + "/" name "-" version ".tar.gz")) + (sha256 + (base32 + "1ri5065c16kmgrf2pysn2ymxjqi5302lhpb07wkl1jr75ym8fn8p")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("guile" ,guile-2.2) + ("libx11" ,libx11) + ("libxext" ,libxext) + ("libxinerama" ,libxinerama) + ("xosd" ,xosd))) + (home-page "https://github.com/alezost/guile-xosd") + (synopsis "XOSD bindings for Guile") + (description + "Guile-XOSD provides Guile bindings for @code{libxosd}, +@uref{http://sourceforge.net/projects/libxosd/, the X On Screen Display +library}.") + (license license:gpl3+))) + +(define-public guile-dbi + (package + (name "guile-dbi") + (version "2.1.6") + (source (origin + (method url-fetch) + (uri (string-append + "http://download.gna.org/guile-dbi/guile-dbi-" + version ".tar.gz")) + (sha256 + (base32 + "116njrprhgrsv1qm904sp3b02rq01fx639r433d657gyhw3x159n")))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags + (list (string-append + "--with-guile-site-dir=" %output "/share/guile/site/2.2")) + #:make-flags + (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib:" + (assoc-ref %build-inputs "guile-dbd-sqlite3") "/lib")) + #:phases + (modify-phases %standard-phases + (add-after 'install 'patch-extension-path + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (dbi.scm (string-append + out "/share/guile/site/2.2/dbi/dbi.scm")) + (ext (string-append out "/lib/libguile-dbi"))) + (substitute* dbi.scm (("libguile-dbi") ext)) + #t)))))) + (inputs + `(("guile-dbd-sqlite3" ,guile-dbd-sqlite3))) ; only shared library, no scheme files + (propagated-inputs + `(("guile" ,guile-2.2))) + (synopsis "Guile database abstraction layer") + (home-page "http://home.gna.org/guile-dbi/guile-dbi.html") + (description + "guile-dbi is a library for Guile that provides a convenient interface to +SQL databases. Database programming with guile-dbi is generic in that the same +programming interface is presented regardless of which database system is used. +It currently supports MySQL, Postgres and SQLite3.") + (license license:gpl2+))) + +(define guile-dbi-bootstrap + (package + (inherit guile-dbi) + (name "guile-dbi-bootstrap") + (inputs '()) + (arguments + (substitute-keyword-arguments (package-arguments guile-dbi) + ((#:make-flags _) '(list)))))) + +(define-public guile-dbd-sqlite3 + (package + (name "guile-dbd-sqlite3") + (version "2.1.6") + (source (origin + (method url-fetch) + (uri (string-append + "http://download.gna.org/guile-dbi/guile-dbd-sqlite3-" + version ".tar.gz")) + (sha256 + (base32 + "0rg71jchxd2y8x496s8zmfmikr5g8zxi8zv2ar3f7a23pph92iw2")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("guile-dbi-bootstrap" ,guile-dbi-bootstrap))) ; only required for headers + (inputs + `(("sqlite" ,sqlite) + ("zlib" ,(@ (gnu packages compression) zlib)))) + (synopsis "Guile DBI driver for SQLite") + (home-page "https://github.com/jkalbhenn/guile-dbd-sqlite3") + (description + "guile-dbi is a library for Guile that provides a convenient interface to +SQL databases. This package implements the interface for SQLite.") + (license license:gpl2+))) + +(define-public guile-config + (package + (name "guile-config") + (version "0.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/a-sassmannshausen/guile-config") + (commit "ce12de3f438c6b2b59c43ee21bcd58251835fdf3"))) + (file-name "guile-config-0.3-checkout") + (sha256 (base32 "02zbpin0r9m2vxmr7mv68v3xdn247dcck56kbzjn0gj4c2rhih85")))) + (build-system gnu-build-system) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("pkg-config" ,pkg-config) + ("texinfo" ,texinfo))) + (inputs `(("guile" ,guile-2.2))) + (synopsis + "Guile application configuration parsing library.") + (description + "Guile Config is a library providing a declarative approach to +application configuration specification. The library provides clean +configuration declaration forms, and processors that take care of: +configuration file creation; configuration file parsing; command-line +parameter parsing using getopt-long; basic GNU command-line parameter +generation (--help, --usage, --version); automatic output generation for the +above command-line parameters.") + (home-page + "https://gitlab.com/a-sassmannshausen/guile-config") + (license license:gpl3+))) + +(define-public guile-hall + (package + (name "guile-hall") + (version "0.1.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/a-sassmannshausen/guile-hall") + (commit "7d1094a12fe917209ce5b76c681cc8c862d4c65b"))) + (file-name "guile-hall-0.1.1-checkout") + (sha256 + (base32 + "03kb09cjca98hlbx9mj12mqinzsnnvp6ci6i975n88pjhaxigyp1")))) + (build-system gnu-build-system) + (arguments + `(#:modules + ((ice-9 match) + (ice-9 ftw) + ,@%gnu-build-system-modules) + #:phases + (modify-phases + %standard-phases + (add-after + 'install + 'hall-wrap-binaries + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin/")) + (site (string-append out "/share/guile/site"))) + (match (scandir site) + (("." ".." version) + (let ((modules (string-append site "/" version)) + (compiled-modules + (string-append + out + "/lib/guile/" + version + "/site-ccache"))) + (for-each + (lambda (file) + (wrap-program + (string-append bin file) + `("GUILE_LOAD_PATH" ":" prefix (,modules)) + `("GUILE_LOAD_COMPILED_PATH" + ":" + prefix + (,compiled-modules)))) + ,(list 'list "hall")) + #t))))))))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("pkg-config" ,pkg-config) + ("texinfo" ,texinfo))) + (inputs `(("guile" ,guile-2.2))) + (propagated-inputs + `(("guile-config" ,guile-config))) + (synopsis "Guile project tooling") + (description + "Hall is a command-line application and a set of Guile libraries that +allow you to quickly create and publish Guile projects. It allows you to +transparently support the GNU build system, manage a project hierarchy & +provides tight coupling to Guix.") + (home-page + "https://gitlab.com/a-sassmannshausen/guile-hall") + (license license:gpl3+))) + +(define-public guile-ics + (package + (name "guile-ics") + (version "0.2.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/artyom-poptsov/guile-ics") + (commit (string-append "v" version)))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0qjjvadr7gibdq9jvwkmlkb4afsw9n2shfj9phpiadinxk3p4m2g")))) + (build-system gnu-build-system) + (native-inputs + `(("autoconf" ,autoconf-wrapper) + ("automake" ,automake) + ("texinfo" ,texinfo) + ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'. + ("gettext" ,gettext-minimal) + ("pkg-config" ,pkg-config))) + (inputs `(("guile" ,guile-2.2) ("which" ,which))) + (propagated-inputs `(("guile-lib" ,guile-lib))) + (home-page "https://github.com/artyom-poptsov/guile-ics") + (synopsis "Guile parser library for the iCalendar format") + (description + "Guile-ICS is an iCalendar (RFC5545) format parser library written in +pure Scheme. The library can be used to read and write iCalendar data. + +The library is shipped with documentation in Info format and usage examples.") + (license license:gpl3+))) + +(define-public guile-wisp + (package + (name "guile-wisp") + (version "0.9.9") + (source (origin + (method url-fetch) + (uri (string-append "https://bitbucket.org/ArneBab/" + "wisp/downloads/wisp-" + version ".tar.gz")) + (sha256 + (base32 + "1xa0f0fvcrimqap50azv5872bfx8jbhc6baxa1prpbwcksbh8gdz")))) + (build-system gnu-build-system) + (arguments + `(#:modules ((guix build gnu-build-system) + (guix build utils) + (ice-9 rdelim) + (ice-9 popen)) + #:phases + (modify-phases %standard-phases + (add-before 'configure 'patch-/usr/bin/env + (lambda _ + (substitute* "Makefile.in" + (("/usr/bin/env bash") (which "bash")) + (("\\$\\(GUILE_EFFECTIVE_VERSION\\)/site") + "site/$(GUILE_EFFECTIVE_VERSION)")) ;use the right order + #t)) + ;; auto compilation breaks, but if we set HOME to /tmp, + ;; that works ok + (add-before 'check 'auto-compile-hacky-workaround + (lambda _ (setenv "HOME" "/tmp") #t)) + (add-after 'install 'install-go-files + (lambda* (#:key outputs inputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (effective (read-line + (open-pipe* OPEN_READ + "guile" "-c" + "(display (effective-version))"))) + (module-dir (string-append out "/share/guile/site/" + effective)) + (object-dir (string-append out "/lib/guile/" effective + "/site-ccache")) + (prefix (string-length module-dir))) + ;; compile to the destination + (for-each (lambda (file) + (let* ((base (string-drop (string-drop-right file 4) + prefix)) + (go (string-append object-dir base ".go"))) + (invoke "guild" "compile" "-L" module-dir + file "-o" go))) + (find-files module-dir "\\.scm$")) + #t)))))) + (home-page "https://draketo.de/english/wisp") + (inputs + `(("guile" ,guile-2.2))) + (native-inputs + `(("python" ,python) + ("pkg-config" ,pkg-config))) + (synopsis "Whitespace to lisp syntax for Guile") + (description "Wisp is a syntax for Guile which provides a Python-like +whitespace-significant language. It may be easier on the eyes for some +users and in some situations.") + (license license:gpl3+))) + +(define-public guile-sly + (package + (name "guile-sly") + (version "0.1") + (source (origin + (method url-fetch) + (uri (string-append "https://files.dthompson.us/sly/sly-" + version ".tar.gz")) + (sha256 + (base32 + "1svzlbz2vripmyq2kjh0rig16bsrnbkwbsm558pjln9l65mcl4qq")) + (modules '((guix build utils))) + (snippet + '(begin + (substitute* "configure" + (("_guile_required_version=\"2.0.11\"") + "_guile_required_version=\"2\"") + (("ac_subst_vars='") + "ac_subst_vars='GUILE_EFFECTIVE_VERSION\n")) + (substitute* (find-files "." "Makefile.in") + (("moddir = .*$") + (string-append + "moddir = " + "$(prefix)/share/guile/site/@GUILE_EFFECTIVE_VERSION@\n")) + (("godir = .*$") + (string-append + "godir = " + "$(prefix)/lib/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n"))) + #t)))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags + (list (string-append "--with-libfreeimage-prefix=" + (assoc-ref %build-inputs "freeimage")) + (string-append "--with-libgslcblas-prefix=" + (assoc-ref %build-inputs "gsl"))))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (propagated-inputs + `(("guile-sdl" ,guile-sdl) + ("guile-opengl" ,guile-opengl))) + (inputs + `(("guile" ,guile-2.2) + ("gsl" ,gsl) + ("freeimage" ,freeimage) + ("mesa" ,mesa))) + (synopsis "2D/3D game engine for GNU Guile") + (description "Sly is a 2D/3D game engine written in Guile Scheme. Sly +features a functional reactive programming interface and live coding +capabilities.") + (home-page "https://dthompson.us/projects/sly.html") + (license license:gpl3+))) + +(define-public g-wrap + (package + (name "g-wrap") + (version "1.9.15") + (source (origin + (method url-fetch) + (uri (string-append "mirror://savannah/g-wrap/g-wrap-" + version ".tar.gz")) + (sha256 + (base32 + "0ak0bha37dfpj9kmyw1r8fj8nva639aw5xr66wr5gd3l1rqf5xhg")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (propagated-inputs + `(("guile" ,guile-2.2) + ("guile-lib" ,guile-lib))) + (inputs + `(("libffi" ,libffi))) + (arguments + `(#:configure-flags '("--disable-Werror") + #:phases + (modify-phases %standard-phases + (add-before 'configure 'pre-configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* (find-files "." "^Makefile.in$") + (("guilemoduledir =.*guile/site" all) + (string-append all "/@GUILE_EFFECTIVE_VERSION@"))) + #t)))))) + (synopsis "Generate C bindings for Guile") + (description "G-Wrap is a tool and Guile library for generating function +wrappers for inter-language calls. It currently only supports generating Guile +wrappers for C functions. Given a definition of the types and prototypes for +a given C interface, G-Wrap will automatically generate the C code that +provides access to that interface and its types from the Scheme level.") + (home-page "https://www.nongnu.org/g-wrap/index.html") + (license license:lgpl2.1+))) + +(define-public guile-miniadapton + (let ((commit "1b5749422304567c96ac5367f2221dda9eff5880") + (revision "1")) + (package + (name "guile-miniadapton") + (version (string-append "0-" revision "." (string-take commit 9))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/fisherdj/miniAdapton.git") + (commit commit))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "09q51zkw2fypad5xixskfzw2cjhjgs5cswdp3i7cpp651rb3zndh")))) + (build-system guile-build-system) + (native-inputs + `(("guile" ,guile-2.2))) + (home-page "https://github.com/fisherdj/miniAdapton") + (synopsis "Minimal implementation of incremental computation in Guile +Scheme") + (description "This package provides a complete Scheme implementation of +miniAdapton, which implements the core functionality of the Adapton system for +incremental computation (also known as self-adjusting computation). Like +Adapton, miniAdapton allows programmers to safely combine mutation and +memoization. miniAdapton is built on top of an even simpler system, +microAdapton. Both miniAdapton and microAdapton are designed to be easy to +understand, extend, and port to host languages other than Scheme.") + (license license:expat)))) + +(define-public guile-reader + (package + (name "guile-reader") + (version "0.6.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://savannah/guile-reader/guile-reader-" + version ".tar.gz")) + (sha256 + (base32 + "0592s2s8ampqmqwilc4fvcild6rb9gy79di6vxv5kcdmv23abkgx")))) + (build-system gnu-build-system) + (native-inputs `(("pkgconfig" ,pkg-config) + ("gperf" ,gperf-3.0))) + (inputs `(("guile" ,guile-2.2))) + (synopsis "Framework for building readers for GNU Guile") + (description + "Guile-Reader is a simple framework for building readers for GNU Guile. + +The idea is to make it easy to build procedures that extend Guile’s read +procedure. Readers supporting various syntax variants can easily be written, +possibly by re-using existing “token readers” of a standard Scheme +readers. For example, it is used to implement Skribilo’s R5RS-derived +document syntax. + +Guile-Reader’s approach is similar to Common Lisp’s “read table”, but +hopefully more powerful and flexible (for instance, one may instantiate as +many readers as needed).") + (home-page "https://www.nongnu.org/guile-reader/") + (license license:gpl3+))) + +(define-public guile2.2-reader + (deprecated-package "guile2.2-reader" guile-reader)) + +(define-public guile-ncurses + (package + (name "guile-ncurses") + (version "2.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/guile-ncurses/guile-ncurses-" + version ".tar.gz")) + (sha256 + (base32 + "1wvggbr4xv8idh1hzd8caj4xfp4pln78a7w1wqzd4zgzwmnzxr2f")))) + (build-system gnu-build-system) + (inputs `(("ncurses" ,ncurses) + ("guile" ,guile-2.2))) + (native-inputs `(("pkg-config" ,pkg-config))) + (arguments + '(#:configure-flags (list "--with-ncursesw" ; Unicode support + "--with-gnu-filesystem-hierarchy") + #:phases + (modify-phases %standard-phases + (add-before 'build 'fix-libguile-ncurses-file-name + (lambda* (#:key outputs #:allow-other-keys) + (invoke "make" "install" + "-C" "src/ncurses" + "-j" (number->string + (parallel-job-count))) + (let* ((out (assoc-ref outputs "out")) + (dir "src/ncurses") + (files (find-files dir ".scm"))) + (substitute* files + (("\"libguile-ncurses\"") + (format #f "\"~a/lib/guile/2.2/libguile-ncurses\"" + out))) + #t)))))) + (home-page "https://www.gnu.org/software/guile-ncurses/") + (synopsis "Guile bindings to ncurses") + (description + "guile-ncurses provides Guile language bindings for the ncurses +library.") + (license license:lgpl3+))) + +(define-public guile-ncurses/gpm + (package + (inherit guile-ncurses) + (name "guile-ncurses-with-gpm") + (inputs `(("ncurses" ,ncurses/gpm) + ("guile" ,guile-2.2))))) + +(define-public guile-lib + (package + (name "guile-lib") + (version "0.2.6.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://savannah/guile-lib/guile-lib-" + version ".tar.gz")) + (sha256 + (base32 + "0aizxdif5dpch9cvs8zz5g8ds5s4xhfnwza2il5ji7fv2h7ks7bd")))) + (build-system gnu-build-system) + (arguments + '(#:make-flags + '("GUILE_AUTO_COMPILE=0") ; to prevent guild errors + #:phases + (modify-phases %standard-phases + (add-before 'configure 'patch-module-dir + (lambda _ + (substitute* "src/Makefile.in" + (("^moddir = ([[:graph:]]+)") + "moddir = $(datadir)/guile/site/@GUILE_EFFECTIVE_VERSION@\n") + (("^godir = ([[:graph:]]+)") + "godir = \ +$(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")) + #t))))) + (native-inputs `(("pkg-config" ,pkg-config))) + (inputs `(("guile" ,guile-2.2))) + (home-page "https://www.nongnu.org/guile-lib/") + (synopsis "Collection of useful Guile Scheme modules") + (description + "Guile-Lib is intended as an accumulation place for pure-scheme Guile +modules, allowing for people to cooperate integrating their generic Guile +modules into a coherent library. Think \"a down-scaled, limited-scope CPAN +for Guile\".") + + ;; The whole is under GPLv3+, but some modules are under laxer + ;; distribution terms such as LGPL and public domain. See `COPYING' for + ;; details. + (license license:gpl3+))) + +(define-public guile2.0-lib + (package + (inherit guile-lib) + (name "guile2.0-lib") + (inputs `(("guile" ,guile-2.0))))) + +(define-public guile2.2-lib + (deprecated-package "guile2.2-lib" guile-lib)) + +(define-public guile-minikanren + (package + (name "guile-minikanren") + (version "20150424.e844d85") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ijp/minikanren.git") + (commit "e844d85512f8c055d3f96143ee506007389a25e3"))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0r50jlpzi940jlmxyy3ddqqwmj5r12gb4bcv0ssini9v8km13xz6")))) + (build-system guile-build-system) + (native-inputs + `(("guile" ,guile-2.2))) + (home-page "https://github.com/ijp/minikanren") + (synopsis "MiniKanren declarative logic system, packaged for Guile") + (description + "MiniKanren is a relational programming extension to the Scheme +programming Language, written as a smaller version of Kanren suitable for +pedagogical purposes. It is featured in the book, The Reasoned Schemer, +written by Dan Friedman, William Byrd, and Oleg Kiselyov. + +This is Ian Price's r6rs packaged version of miniKanren, which deviates +slightly from miniKanren mainline. + +See http://minikanren.org/ for more on miniKanren generally.") + (license license:expat))) + +(define-public guile2.0-minikanren + (package + (inherit guile-minikanren) + (name "guile2.0-minikanren") + (native-inputs `(("guile" ,guile-2.0))))) + +(define-public guile2.2-minikanren + (deprecated-package "guile2.2-minikanren" guile-minikanren)) + +(define-public guile-irregex + (package + (name "guile-irregex") + (version "0.9.6") + (source (origin + (method url-fetch) + (uri (string-append + "http://synthcode.com/scheme/irregex/irregex-" + version ".tar.gz")) + (sha256 + (base32 + "1ia3m7dp3lcxa048q0gqbiwwsyvn99baw6xkhb4bhhzn4k7bwyqq")))) + (build-system guile-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (add-after 'unpack 'move-files-around + (lambda _ + ;; Move the relevant source files to src/ and create the + ;; rx/ directory to match the expected module hierarchy. + (mkdir-p "src/rx/source") + (rename-file "irregex-guile.scm" + "src/rx/irregex.scm") + (rename-file "irregex.scm" + "src/rx/source/irregex.scm") + ;; Not really reachable via guile's packaging system, + ;; but nice to have around. + (rename-file "irregex-utils.scm" + "src/rx/source/irregex-utils.scm") + #t))) + #:source-directory "src")) + (native-inputs + `(("guile" ,guile-2.2))) + (home-page "http://synthcode.com/scheme/irregex") + (synopsis "S-expression based regular expressions") + (description + "Irregex is an s-expression based alternative to your classic +string-based regular expressions. It implements SRFI 115 and is deeply +inspired by the SCSH regular expression system.") + (license license:bsd-3))) + +(define-public guile2.0-irregex + (package + (inherit guile-irregex) + (name "guile2.0-irregex") + (native-inputs `(("guile" ,guile-2.0))))) + +(define-public guile2.2-irregex + (deprecated-package "guile2.2-irregex" guile-irregex)) + +(define-public haunt + (package + (name "haunt") + (version "0.2.4") + (source (origin + (method url-fetch) + (uri (string-append "https://files.dthompson.us/haunt/haunt-" + version ".tar.gz")) + (sha256 + (base32 + "056z4znikk83nr5mr0x2ac3iinqbywa2bvb37mhr566a1q50isfc")))) + (build-system gnu-build-system) + (arguments + `(#:modules ((ice-9 match) (ice-9 ftw) + ,@%gnu-build-system-modules) + #:tests? #f ; test suite is non-deterministic :( + #:phases (modify-phases %standard-phases + (add-after 'install 'wrap-haunt + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; Wrap the 'haunt' command to refer to the right + ;; modules. + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (site (string-append + out "/share/guile/site")) + (deps (list (assoc-ref inputs "guile-reader") + (assoc-ref inputs "guile-commonmark")))) + (match (scandir site) + (("." ".." version) + (let ((modules (string-append site "/" version)) + (compiled-modules (string-append + out "/lib/guile/" version + "/site-ccache"))) + (wrap-program (string-append bin "/haunt") + `("GUILE_LOAD_PATH" ":" prefix + (,modules + ,@(map (lambda (dep) + (string-append dep + "/share/guile/site/" + version)) + deps))) + `("GUILE_LOAD_COMPILED_PATH" ":" prefix + (,compiled-modules + ,@(map (lambda (dep) + (string-append dep "/lib/guile/" + version + "/site-ccache")) + deps)))) + #t))))))))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("texinfo" ,texinfo))) + (inputs + `(("guile" ,guile-2.2))) + (propagated-inputs + `(("guile-reader" ,guile-reader) + ("guile-commonmark" ,guile-commonmark))) + (synopsis "Functional static site generator") + (description "Haunt is a static site generator written in Guile +Scheme. Haunt features a functional build system and an extensible +interface for reading articles in any format.") + (home-page "http://haunt.dthompson.us") + (license license:gpl3+))) + +(define-public guile2.0-haunt + (package + (inherit haunt) + (name "guile2.0-haunt") + (inputs `(("guile" ,guile-2.0))))) + +(define-public guile2.2-haunt + (deprecated-package "guile2.2-haunt" haunt)) + +(define-public guile-redis + (package + (name "guile-redis") + (version "1.0.0") + (home-page "https://github.com/aconchillo/guile-redis") + (source (origin + (method url-fetch) + (uri (string-append home-page "/archive/" version ".tar.gz")) + (sha256 + (base32 + "1dp5fmqvma59pvp1nfpq6hqgbmjici8sd1y8llahl87fynw1dvr9")))) + (build-system gnu-build-system) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("pkg-config" ,pkg-config) + ("guile" ,guile-2.2))) + (synopsis "Redis client library for Guile") + (description "Guile-redis provides a Scheme interface to the Redis +key-value cache and store.") + (license license:lgpl3+))) + +(define-public guile2.0-redis + (package + (inherit guile-redis) + (name "guile2.0-redis") + (native-inputs `(("guile" ,guile-2.0) + ,@(alist-delete "guile" + (package-native-inputs guile-redis)))))) + +(define-public guile2.2-redis + (deprecated-package "guile2.2-redis" guile-redis)) + +(define-public guile-commonmark + (package + (name "guile-commonmark") + (version "0.1.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/OrangeShark/" name + "/releases/download/v" version + "/" name "-" version ".tar.gz")) + (sha256 + (base32 + "0kzclwkfijj8xka3g9kfj53y67c34ndfy84swdbw3j7y962ndxq6")) + (modules '((guix build utils))) + (snippet + ;; Install .scm files in the right place (see + ;; .) + '(begin + (substitute* "Makefile.in" + (("^moddir = \\$\\(datadir\\)/share") + "moddir = $(datadir)")) + #t)))) + (build-system gnu-build-system) + (inputs + `(("guile" ,guile-2.2))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (synopsis "CommonMark parser for Guile") + (description + "guile-commonmark is a library for parsing CommonMark, a fully specified +variant of Markdown. The library is written in Guile Scheme and is designed +to transform a CommonMark document to SXML. guile-commonmark tries to closely +follow the @uref{http://commonmark.org/, CommonMark spec}, the main difference +is no support for parsing block and inline level HTML.") + (home-page "https://github.com/OrangeShark/guile-commonmark") + (license license:lgpl3+))) + +(define-public guile2.0-commonmark + (package + (inherit guile-commonmark) + (name "guile2.0-commonmark") + (inputs `(("guile" ,guile-2.0))))) + +(define-public guile2.2-commonmark + (deprecated-package "guile2.2-commonmark" guile-commonmark)) + +(define-public mcron + (package + (name "mcron") + (version "1.1.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/mcron/mcron-" + version ".tar.gz")) + (sha256 + (base32 + "1i9mcp6r6my61zfiydsm3n6my41mwvl7dfala4q29qx0zn1ynlm4")))) + (build-system gnu-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (add-before 'check 'set-timezone + (lambda* (#:key inputs #:allow-other-keys) + ;; 'tests/job-specifier.scm' expects to be running in + ;; UTC-2 or something. + ;; FIXME: This issue is being investigated upstream, for + ;; now we'll just skip the tests (see below): + ;; . + (let ((tzdata (assoc-ref inputs "tzdata"))) + (setenv "TZDIR" + (string-append tzdata + "/share/zoneinfo")) + (setenv "TZ" "UTC-2") + #t))) + (add-before 'check 'adjust-tests + (lambda _ + (substitute* "tests/job-specifier.scm" + ;; (getpw) fails with "entry not found" in the build + ;; environment, so pass an argument. + (("\\(getpw\\)") + "(getpwnam (getuid))") + ;; The build environment lacks an entry for root in + ;; /etc/passwd. + (("\\(getpw 0\\)") + "(getpwnam \"nobody\")") + + ;; FIXME: Skip the 4 faulty tests (see above). + (("\\(test-equal \"next-year\"" all) + (string-append "(test-skip 4)\n" all))) + #t))))) + (native-inputs `(("pkg-config" ,pkg-config) + ("tzdata" ,tzdata-for-tests))) + (inputs `(("ed" ,ed) ("which" ,which) ("guile" ,guile-2.2))) + (home-page "https://www.gnu.org/software/mcron/") + (synopsis "Run jobs at scheduled times") + (description + "GNU Mcron is a complete replacement for Vixie cron. It is used to run +tasks on a schedule, such as every hour or every Monday. Mcron is written in +Guile, so its configuration can be written in Scheme; the original cron +format is also supported.") + (license license:gpl3+))) + +(define-public mcron2 + ;; This was mthl's mcron development branch, and it became mcron 1.1. + (deprecated-package "mcron2" mcron)) diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index 1b1285d32c..09f6676960 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -1,25 +1,20 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès -;;; Copyright © 2014, 2015, 2018 Mark H Weaver +;;; Copyright © 2014 Cyril Roelandt +;;; Copyright © 2014, 2016, 2018 David Thompson +;;; Copyright © 2014, 2017, 2018 Mark H Weaver ;;; Copyright © 2015, 2017 Christopher Allan Webber -;;; Copyright © 2016 Alex Sassmannshausen -;;; Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus -;;; Copyright © 2016 Erik Edrosa -;;; Copyright © 2016 Eraim Flashner -;;; Copyright © 2016, 2017 Alex Kost -;;; Copyright © 2016, 2017 Adonay "adfeno" Felipe Nogueira -;;; Copyright © 2016 Amirouche ;;; Copyright © 2016 Jan Nieuwenhuizen +;;; Copyright © 2016, 2017 Leo Famulari +;;; Copyright © 2016, 2019 Ricardo Wurmus ;;; Copyright © 2017 Andy Wingo -;;; Copyright © 2017 David Thompson -;;; Copyright © 2017, 2018 Mathieu Othacehe -;;; Copyright © 2017 Theodoros Foradis -;;; Copyright © 2017 Nils Gillmann -;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice -;;; Copyright © 2018 Maxim Cournoyer -;;; Copyright © 2018 Arun Isaac -;;; Copyright © 2018 Pierre-Antoine Rouby +;;; Copyright © 2017 Marius Bakke +;;; Copyright © 2017 Mathieu Othacehe +;;; Copyright © 2017 Tobias Geerinckx-Rice +;;; Copyright © 2017, 2018 Amirouche +;;; Copyright © 2018 Danny Milosavljevic ;;; Copyright © 2018 Eric Bavier +;;; Copyright © 2019 Taylan Kammer ;;; ;;; This file is part of GNU Guix. ;;; @@ -39,48 +34,31 @@ (define-module (gnu packages guile) #:use-module ((guix licenses) #:prefix license:) #:use-module (gnu packages) - #:use-module (gnu packages aspell) #:use-module (gnu packages autotools) #:use-module (gnu packages base) #:use-module (gnu packages bash) #:use-module (gnu packages bdw-gc) #:use-module (gnu packages compression) #:use-module (gnu packages dbm) - #:use-module (gnu packages disk) - #:use-module (gnu packages ed) #:use-module (gnu packages flex) #:use-module (gnu packages gawk) #:use-module (gnu packages gettext) - #:use-module (gnu packages gl) - #:use-module (gnu packages gperf) #:use-module (gnu packages hurd) - #:use-module (gnu packages image) #:use-module (gnu packages libffi) #:use-module (gnu packages libunistring) #:use-module (gnu packages linux) #:use-module (gnu packages m4) - #:use-module (gnu packages man) - #:use-module (gnu packages maths) #:use-module (gnu packages multiprecision) - #:use-module (gnu packages ncurses) - #:use-module (gnu packages networking) #:use-module (gnu packages pkg-config) - #:use-module (gnu packages python) #:use-module (gnu packages readline) - #:use-module (gnu packages sdl) - #:use-module (gnu packages slang) #:use-module (gnu packages sqlite) #:use-module (gnu packages texinfo) - #:use-module (gnu packages tls) #:use-module (gnu packages version-control) - #:use-module (gnu packages xdisorg) - #:use-module (gnu packages xorg) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix build-system gnu) #:use-module (guix build-system guile) - #:use-module (guix build-system trivial) #:use-module (guix utils) #:use-module (ice-9 match) #:use-module ((srfi srfi-1) #:prefix srfi-1:)) @@ -457,445 +435,11 @@ GNU@tie{}Guile. Use the @code{(ice-9 readline)} module and call its (files '("lib/guile/2.0/site-ccache" "share/guile/site/2.0"))))))) -;; There has not been any release yet. -(define-public guildhall - (let ((commit "2fe2cc539f4b811bbcd69e58738db03eb5a2b778") - (revision "1")) - (package - (name "guildhall") - (version (string-append "0-" revision "." (string-take commit 9))) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/ijp/guildhall.git") - (commit commit))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "115bym7bg66h3gs399yb2vkzc2ygriaqsn4zbrg8f054mgy8wzn1")))) - (build-system gnu-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - ;; Tests fail without this fix because they try to load the bash - ;; executable as a Scheme file. See bug report at - ;; https://github.com/ijp/guildhall/issues/22 - (add-after 'unpack 'fix-bug-22 - (lambda _ - (substitute* "Makefile.am" - (("TESTS_ENVIRONMENT=.*") - "AM_TESTS_ENVIRONMENT=srcdir=$(abs_top_srcdir)/tests/ -TEST_EXTENSIONS = .scm -SCM_LOG_COMPILER= $(top_builddir)/env $(GUILE) -AM_SCM_LOG_FLAGS = --no-auto-compile -s") - ;; FIXME: one of the database tests fails for unknown - ;; reasons. It does not fail when run outside of Guix. - (("tests/database.scm") "")) - #t))))) - (inputs - `(("guile" ,guile-2.0))) - (native-inputs - `(("zip" ,zip) ; for tests - ("autoconf" ,autoconf) - ("automake" ,automake) - ("texinfo" ,texinfo))) - (synopsis "Package manager for Guile") - (description - "Guildhall is a package manager written for Guile Scheme. A guild is -an association of independent craftspeople. A guildhall is where they meet. -This Guildhall aims to make a virtual space for Guile wizards and journeyfolk -to share code. - -On a practical level, Guildhall lets you share Scheme modules and programs -over the internet, and install code that has been shared by others. Guildhall -can handle dependencies, so when a program requires several libraries, and -each of those has further dependencies, all of the prerequisites for the -program can be installed in one go.") - (home-page "https://github.com/ijp/guildhall") - (license license:gpl3+)))) - ;;; ;;; Extensions. ;;; -(define-public artanis - (let ((release "0.2.1") - (revision 3)) - (package - (name "artanis") - (version (if (zero? revision) - release - (string-append release "-" - (number->string revision)))) - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/artanis/artanis-" - release ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "041ajcg2pz918kd9iqcj4inpzddc3impvz3r2nhlpbv8zrz011hn")) - (modules '((guix build utils))) - (snippet - '(begin - (delete-file-recursively "artanis/third-party/json.scm") - (delete-file-recursively "artanis/third-party/json") - (substitute* '("artanis/artanis.scm" - "artanis/oht.scm") - (("(#:use-module \\()artanis third-party (json\\))" _ - use-module json) - (string-append use-module json))) - (substitute* "artanis/oht.scm" - (("([[:punct:][:space:]]+)(->json-string)([[:punct:][:space:]]+)" - _ pre json-string post) - (string-append pre - "scm" json-string - post))) - (substitute* "artanis/artanis.scm" - (("[[:punct:][:space:]]+->json-string[[:punct:][:space:]]+") - "")) - #t)))) - (build-system gnu-build-system) - ;; TODO: Add guile-dbi and guile-dbd optional dependencies. - (inputs `(("guile" ,guile-2.2) - ("guile-json" ,guile-json))) - (native-inputs `(("bash" ,bash) ;for the `source' builtin - ("pkgconfig" ,pkg-config) - ("util-linux" ,util-linux))) ;for the `script' command - (arguments - '(#:make-flags - ;; TODO: The documentation must be built with the `docs' target. - (let* ((out (assoc-ref %outputs "out")) - (scm (string-append out "/share/guile/site/2.2")) - (go (string-append out "/lib/guile/2.2/site-ccache"))) - ;; Don't use (%site-dir) for site paths. - (list (string-append "MOD_PATH=" scm) - (string-append "MOD_COMPILED_PATH=" go))) - #:test-target "test" - #:phases - (modify-phases %standard-phases - (add-before 'install 'substitute-root-dir - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (substitute* "Makefile" ;ignore the execution of bash.bashrc - ((" /etc/bash.bashrc") " /dev/null")) - (substitute* "Makefile" ;set the root of config files to OUT - ((" /etc") (string-append " " out "/etc"))) - (mkdir-p (string-append out "/bin")) ;for the `art' executable - #t))) - (add-after 'install 'wrap-art - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin")) - (scm (string-append out "/share/guile/site/2.2")) - (go (string-append out "/lib/guile/2.2/site-ccache"))) - (wrap-program (string-append bin "/art") - `("GUILE_LOAD_PATH" ":" prefix (,scm)) - `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,go))) - #t)))))) - (synopsis "Web application framework written in Guile") - (description "GNU Artanis is a web application framework written in Guile -Scheme. A web application framework (WAF) is a software framework that is -designed to support the development of dynamic websites, web applications, web -services and web resources. The framework aims to alleviate the overhead -associated with common activities performed in web development. Artanis -provides several tools for web development: database access, templating -frameworks, session management, URL-remapping for RESTful, page caching, and -more.") - (home-page "https://www.gnu.org/software/artanis/") - (license (list license:gpl3+ license:lgpl3+))))) ;dual license - -(define-public guile-reader - (package - (name "guile-reader") - (version "0.6.2") - (source (origin - (method url-fetch) - (uri (string-append "mirror://savannah/guile-reader/guile-reader-" - version ".tar.gz")) - (sha256 - (base32 - "0592s2s8ampqmqwilc4fvcild6rb9gy79di6vxv5kcdmv23abkgx")))) - (build-system gnu-build-system) - (native-inputs `(("pkgconfig" ,pkg-config) - ("gperf" ,gperf-3.0))) - (inputs `(("guile" ,guile-2.2))) - (synopsis "Framework for building readers for GNU Guile") - (description - "Guile-Reader is a simple framework for building readers for GNU Guile. - -The idea is to make it easy to build procedures that extend Guile’s read -procedure. Readers supporting various syntax variants can easily be written, -possibly by re-using existing “token readers” of a standard Scheme -readers. For example, it is used to implement Skribilo’s R5RS-derived -document syntax. - -Guile-Reader’s approach is similar to Common Lisp’s “read table”, but -hopefully more powerful and flexible (for instance, one may instantiate as -many readers as needed).") - (home-page "https://www.nongnu.org/guile-reader/") - (license license:gpl3+))) - -(define-public guile2.0-reader - (package-for-guile-2.0 guile-reader)) -(define-public guile2.2-reader - (deprecated-package "guile2.2-reader" guile-reader)) - -(define-public guile-ncurses - (package - (name "guile-ncurses") - (version "2.2") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/guile-ncurses/guile-ncurses-" - version ".tar.gz")) - (sha256 - (base32 - "1wvggbr4xv8idh1hzd8caj4xfp4pln78a7w1wqzd4zgzwmnzxr2f")))) - (build-system gnu-build-system) - (inputs `(("ncurses" ,ncurses) - ("guile" ,guile-2.2))) - (native-inputs `(("pkg-config" ,pkg-config))) - (arguments - '(#:configure-flags (list "--with-ncursesw" ; Unicode support - "--with-gnu-filesystem-hierarchy") - #:phases - (modify-phases %standard-phases - (add-before 'build 'fix-libguile-ncurses-file-name - (lambda* (#:key outputs #:allow-other-keys) - (invoke "make" "install" - "-C" "src/ncurses" - "-j" (number->string - (parallel-job-count))) - (let* ((out (assoc-ref outputs "out")) - (dir "src/ncurses") - (files (find-files dir ".scm"))) - (substitute* files - (("\"libguile-ncurses\"") - (format #f "\"~a/lib/guile/2.2/libguile-ncurses\"" - out))) - #t)))))) - (home-page "https://www.gnu.org/software/guile-ncurses/") - (synopsis "Guile bindings to ncurses") - (description - "guile-ncurses provides Guile language bindings for the ncurses -library.") - (license license:lgpl3+))) - -(define-public guile-ncurses/gpm - (package - (inherit guile-ncurses) - (name "guile-ncurses-with-gpm") - (inputs `(("ncurses" ,ncurses/gpm) - ("guile" ,guile-2.2))))) - -(define-public mcron - (package - (name "mcron") - (version "1.1.1") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/mcron/mcron-" - version ".tar.gz")) - (sha256 - (base32 - "1i9mcp6r6my61zfiydsm3n6my41mwvl7dfala4q29qx0zn1ynlm4")))) - (build-system gnu-build-system) - (arguments - '(#:phases (modify-phases %standard-phases - (add-before 'check 'set-timezone - (lambda* (#:key inputs #:allow-other-keys) - ;; 'tests/job-specifier.scm' expects to be running in - ;; UTC-2 or something. - ;; FIXME: This issue is being investigated upstream, for - ;; now we'll just skip the tests (see below): - ;; . - (let ((tzdata (assoc-ref inputs "tzdata"))) - (setenv "TZDIR" - (string-append tzdata - "/share/zoneinfo")) - (setenv "TZ" "UTC-2") - #t))) - (add-before 'check 'adjust-tests - (lambda _ - (substitute* "tests/job-specifier.scm" - ;; (getpw) fails with "entry not found" in the build - ;; environment, so pass an argument. - (("\\(getpw\\)") - "(getpwnam (getuid))") - ;; The build environment lacks an entry for root in - ;; /etc/passwd. - (("\\(getpw 0\\)") - "(getpwnam \"nobody\")") - - ;; FIXME: Skip the 4 faulty tests (see above). - (("\\(test-equal \"next-year\"" all) - (string-append "(test-skip 4)\n" all))) - #t))))) - (native-inputs `(("pkg-config" ,pkg-config) - ("tzdata" ,tzdata-for-tests))) - (inputs `(("ed" ,ed) ("which" ,which) ("guile" ,guile-2.2))) - (home-page "https://www.gnu.org/software/mcron/") - (synopsis "Run jobs at scheduled times") - (description - "GNU Mcron is a complete replacement for Vixie cron. It is used to run -tasks on a schedule, such as every hour or every Monday. Mcron is written in -Guile, so its configuration can be written in Scheme; the original cron -format is also supported.") - (license license:gpl3+))) - -(define-public mcron2 - ;; This was mthl's mcron development branch, and it became mcron 1.1. - (deprecated-package "mcron2" mcron)) - -(define-public guile-hall - (package - (name "guile-hall") - (version "0.1.1") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://gitlab.com/a-sassmannshausen/guile-hall") - (commit "7d1094a12fe917209ce5b76c681cc8c862d4c65b"))) - (file-name "guile-hall-0.1.1-checkout") - (sha256 - (base32 - "03kb09cjca98hlbx9mj12mqinzsnnvp6ci6i975n88pjhaxigyp1")))) - (build-system gnu-build-system) - (arguments - `(#:modules - ((ice-9 match) - (ice-9 ftw) - ,@%gnu-build-system-modules) - #:phases - (modify-phases - %standard-phases - (add-after - 'install - 'hall-wrap-binaries - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin/")) - (site (string-append out "/share/guile/site"))) - (match (scandir site) - (("." ".." version) - (let ((modules (string-append site "/" version)) - (compiled-modules - (string-append - out - "/lib/guile/" - version - "/site-ccache"))) - (for-each - (lambda (file) - (wrap-program - (string-append bin file) - `("GUILE_LOAD_PATH" ":" prefix (,modules)) - `("GUILE_LOAD_COMPILED_PATH" - ":" - prefix - (,compiled-modules)))) - ,(list 'list "hall")) - #t))))))))) - (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("pkg-config" ,pkg-config) - ("texinfo" ,texinfo))) - (inputs `(("guile" ,guile-2.2))) - (propagated-inputs - `(("guile-config" ,guile-config))) - (synopsis "Guile project tooling") - (description - "Hall is a command-line application and a set of Guile libraries that -allow you to quickly create and publish Guile projects. It allows you to -transparently support the GNU build system, manage a project hierarchy & -provides tight coupling to Guix.") - (home-page - "https://gitlab.com/a-sassmannshausen/guile-hall") - (license license:gpl3+))) - -(define-public guile-ics - (package - (name "guile-ics") - (version "0.2.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/artyom-poptsov/guile-ics") - (commit (string-append "v" version)))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "0qjjvadr7gibdq9jvwkmlkb4afsw9n2shfj9phpiadinxk3p4m2g")))) - (build-system gnu-build-system) - (native-inputs - `(("autoconf" ,autoconf-wrapper) - ("automake" ,automake) - ("texinfo" ,texinfo) - ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'. - ("gettext" ,gettext-minimal) - ("pkg-config" ,pkg-config))) - (inputs `(("guile" ,guile-2.2) ("which" ,which))) - (propagated-inputs `(("guile-lib" ,guile-lib))) - (home-page "https://github.com/artyom-poptsov/guile-ics") - (synopsis "Guile parser library for the iCalendar format") - (description - "Guile-ICS is an iCalendar (RFC5545) format parser library written in -pure Scheme. The library can be used to read and write iCalendar data. - -The library is shipped with documentation in Info format and usage examples.") - (license license:gpl3+))) - -(define-public guile-lib - (package - (name "guile-lib") - (version "0.2.6.1") - (source (origin - (method url-fetch) - (uri (string-append "mirror://savannah/guile-lib/guile-lib-" - version ".tar.gz")) - (sha256 - (base32 - "0aizxdif5dpch9cvs8zz5g8ds5s4xhfnwza2il5ji7fv2h7ks7bd")))) - (build-system gnu-build-system) - (arguments - '(#:make-flags - '("GUILE_AUTO_COMPILE=0") ; to prevent guild errors - #:phases - (modify-phases %standard-phases - (add-before 'configure 'patch-module-dir - (lambda _ - (substitute* "src/Makefile.in" - (("^moddir = ([[:graph:]]+)") - "moddir = $(datadir)/guile/site/@GUILE_EFFECTIVE_VERSION@\n") - (("^godir = ([[:graph:]]+)") - "godir = \ -$(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")) - #t))))) - (native-inputs `(("pkg-config" ,pkg-config))) - (inputs `(("guile" ,guile-2.2))) - (home-page "https://www.nongnu.org/guile-lib/") - (synopsis "Collection of useful Guile Scheme modules") - (description - "Guile-Lib is intended as an accumulation place for pure-scheme Guile -modules, allowing for people to cooperate integrating their generic Guile -modules into a coherent library. Think \"a down-scaled, limited-scope CPAN -for Guile\".") - - ;; The whole is under GPLv3+, but some modules are under laxer - ;; distribution terms such as LGPL and public domain. See `COPYING' for - ;; details. - (license license:gpl3+))) - -(define-public guile2.0-lib - (package-for-guile-2.0 guile-lib)) - -(define-public guile2.2-lib - (deprecated-package "guile2.2-lib" guile-lib)) - (define-public guile-json (package (name "guile-json") @@ -947,118 +491,6 @@ specification. These are the main features: (base32 "1yfqscz74i4vxylabd3s9l0wbdp8bg9qxnv1ixdm3b1l7zdx00z3")))))) -(define-public guile-minikanren - (package - (name "guile-minikanren") - (version "20150424.e844d85") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/ijp/minikanren.git") - (commit "e844d85512f8c055d3f96143ee506007389a25e3"))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "0r50jlpzi940jlmxyy3ddqqwmj5r12gb4bcv0ssini9v8km13xz6")))) - (build-system guile-build-system) - (native-inputs - `(("guile" ,guile-2.2))) - (home-page "https://github.com/ijp/minikanren") - (synopsis "MiniKanren declarative logic system, packaged for Guile") - (description - "MiniKanren is a relational programming extension to the Scheme -programming Language, written as a smaller version of Kanren suitable for -pedagogical purposes. It is featured in the book, The Reasoned Schemer, -written by Dan Friedman, William Byrd, and Oleg Kiselyov. - -This is Ian Price's r6rs packaged version of miniKanren, which deviates -slightly from miniKanren mainline. - -See http://minikanren.org/ for more on miniKanren generally.") - (license license:expat))) - -(define-public guile2.0-minikanren - (package-for-guile-2.0 guile-minikanren)) - -(define-public guile2.2-minikanren - (deprecated-package "guile2.2-minikanren" guile-minikanren)) - -(define-public guile-miniadapton - (let ((commit "1b5749422304567c96ac5367f2221dda9eff5880") - (revision "1")) - (package - (name "guile-miniadapton") - (version (string-append "0-" revision "." (string-take commit 9))) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/fisherdj/miniAdapton.git") - (commit commit))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "09q51zkw2fypad5xixskfzw2cjhjgs5cswdp3i7cpp651rb3zndh")))) - (build-system guile-build-system) - (native-inputs - `(("guile" ,guile-2.2))) - (home-page "https://github.com/fisherdj/miniAdapton") - (synopsis "Minimal implementation of incremental computation in Guile -Scheme") - (description "This package provides a complete Scheme implementation of -miniAdapton, which implements the core functionality of the Adapton system for -incremental computation (also known as self-adjusting computation). Like -Adapton, miniAdapton allows programmers to safely combine mutation and -memoization. miniAdapton is built on top of an even simpler system, -microAdapton. Both miniAdapton and microAdapton are designed to be easy to -understand, extend, and port to host languages other than Scheme.") - (license license:expat)))) - -(define-public guile-irregex - (package - (name "guile-irregex") - (version "0.9.6") - (source (origin - (method url-fetch) - (uri (string-append - "http://synthcode.com/scheme/irregex/irregex-" - version ".tar.gz")) - (sha256 - (base32 - "1ia3m7dp3lcxa048q0gqbiwwsyvn99baw6xkhb4bhhzn4k7bwyqq")))) - (build-system guile-build-system) - (arguments - '(#:phases (modify-phases %standard-phases - (add-after 'unpack 'move-files-around - (lambda _ - ;; Move the relevant source files to src/ and create the - ;; rx/ directory to match the expected module hierarchy. - (mkdir-p "src/rx/source") - (rename-file "irregex-guile.scm" - "src/rx/irregex.scm") - (rename-file "irregex.scm" - "src/rx/source/irregex.scm") - ;; Not really reachable via guile's packaging system, - ;; but nice to have around. - (rename-file "irregex-utils.scm" - "src/rx/source/irregex-utils.scm") - #t))) - #:source-directory "src")) - (native-inputs - `(("guile" ,guile-2.2))) - (home-page "http://synthcode.com/scheme/irregex") - (synopsis "S-expression based regular expressions") - (description - "Irregex is an s-expression based alternative to your classic -string-based regular expressions. It implements SRFI 115 and is deeply -inspired by the SCSH regular expression system.") - (license license:bsd-3))) - -(define-public guile2.0-irregex - (package-for-guile-2.0 guile-irregex)) - -(define-public guile2.2-irregex - (deprecated-package "guile2.2-irregex" guile-irregex)) - ;; There are two guile-gdbm packages, one using the FFI and one with ;; direct C bindings, hence the verbose name. @@ -1144,512 +576,6 @@ Guile's foreign function interface.") (define-public guile2.0-sqlite3 (package-for-guile-2.0 guile-sqlite3)) -(define-public haunt - (package - (name "haunt") - (version "0.2.4") - (source (origin - (method url-fetch) - (uri (string-append "https://files.dthompson.us/haunt/haunt-" - version ".tar.gz")) - (sha256 - (base32 - "056z4znikk83nr5mr0x2ac3iinqbywa2bvb37mhr566a1q50isfc")))) - (build-system gnu-build-system) - (arguments - `(#:modules ((ice-9 match) (ice-9 ftw) - ,@%gnu-build-system-modules) - #:tests? #f ; test suite is non-deterministic :( - #:phases (modify-phases %standard-phases - (add-after 'install 'wrap-haunt - (lambda* (#:key inputs outputs #:allow-other-keys) - ;; Wrap the 'haunt' command to refer to the right - ;; modules. - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin")) - (site (string-append - out "/share/guile/site")) - (deps (list (assoc-ref inputs "guile-reader") - (assoc-ref inputs "guile-commonmark")))) - (match (scandir site) - (("." ".." version) - (let ((modules (string-append site "/" version)) - (compiled-modules (string-append - out "/lib/guile/" version - "/site-ccache"))) - (wrap-program (string-append bin "/haunt") - `("GUILE_LOAD_PATH" ":" prefix - (,modules - ,@(map (lambda (dep) - (string-append dep - "/share/guile/site/" - version)) - deps))) - `("GUILE_LOAD_COMPILED_PATH" ":" prefix - (,compiled-modules - ,@(map (lambda (dep) - (string-append dep "/lib/guile/" - version - "/site-ccache")) - deps)))) - #t))))))))) - (native-inputs - `(("pkg-config" ,pkg-config) - ("texinfo" ,texinfo))) - (inputs - `(("guile" ,guile-2.2))) - (propagated-inputs - `(("guile-reader" ,guile-reader) - ("guile-commonmark" ,guile-commonmark))) - (synopsis "Functional static site generator") - (description "Haunt is a static site generator written in Guile -Scheme. Haunt features a functional build system and an extensible -interface for reading articles in any format.") - (home-page "http://haunt.dthompson.us") - (license license:gpl3+))) - -(define-public guile2.0-haunt - (package-for-guile-2.0 - (package (inherit haunt) (name "guile2.0-haunt")))) -(define-public guile2.2-haunt - (deprecated-package "guile2.2-haunt" haunt)) - -(define-public guile-config - (package - (name "guile-config") - (version "0.3") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://gitlab.com/a-sassmannshausen/guile-config") - (commit "ce12de3f438c6b2b59c43ee21bcd58251835fdf3"))) - (file-name "guile-config-0.3-checkout") - (sha256 (base32 "02zbpin0r9m2vxmr7mv68v3xdn247dcck56kbzjn0gj4c2rhih85")))) - (build-system gnu-build-system) - (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("pkg-config" ,pkg-config) - ("texinfo" ,texinfo))) - (inputs `(("guile" ,guile-2.2))) - (synopsis - "Guile application configuration parsing library.") - (description - "Guile Config is a library providing a declarative approach to -application configuration specification. The library provides clean -configuration declaration forms, and processors that take care of: -configuration file creation; configuration file parsing; command-line -parameter parsing using getopt-long; basic GNU command-line parameter -generation (--help, --usage, --version); automatic output generation for the -above command-line parameters.") - (home-page - "https://gitlab.com/a-sassmannshausen/guile-config") - (license license:gpl3+))) - -(define-public guile-redis - (package - (name "guile-redis") - (version "1.0.0") - (home-page "https://github.com/aconchillo/guile-redis") - (source (origin - (method url-fetch) - (uri (string-append home-page "/archive/" version ".tar.gz")) - (sha256 - (base32 - "1dp5fmqvma59pvp1nfpq6hqgbmjici8sd1y8llahl87fynw1dvr9")))) - (build-system gnu-build-system) - (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("pkg-config" ,pkg-config) - ("guile" ,guile-2.2))) - (synopsis "Redis client library for Guile") - (description "Guile-redis provides a Scheme interface to the Redis -key-value cache and store.") - (license license:lgpl3+))) - -(define-public guile2.0-redis - (package-for-guile-2.0 guile-redis)) - -(define-public guile2.2-redis - (deprecated-package "guile2.2-redis" guile-redis)) - -(define-public guile-wisp - (package - (name "guile-wisp") - (version "0.9.9") - (source (origin - (method url-fetch) - (uri (string-append "https://bitbucket.org/ArneBab/" - "wisp/downloads/wisp-" - version ".tar.gz")) - (sha256 - (base32 - "1xa0f0fvcrimqap50azv5872bfx8jbhc6baxa1prpbwcksbh8gdz")))) - (build-system gnu-build-system) - (arguments - `(#:modules ((guix build gnu-build-system) - (guix build utils) - (ice-9 rdelim) - (ice-9 popen)) - #:phases - (modify-phases %standard-phases - (add-before 'configure 'patch-/usr/bin/env - (lambda _ - (substitute* "Makefile.in" - (("/usr/bin/env bash") (which "bash")) - (("\\$\\(GUILE_EFFECTIVE_VERSION\\)/site") - "site/$(GUILE_EFFECTIVE_VERSION)")) ;use the right order - #t)) - ;; auto compilation breaks, but if we set HOME to /tmp, - ;; that works ok - (add-before 'check 'auto-compile-hacky-workaround - (lambda _ (setenv "HOME" "/tmp") #t)) - (add-after 'install 'install-go-files - (lambda* (#:key outputs inputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (effective (read-line - (open-pipe* OPEN_READ - "guile" "-c" - "(display (effective-version))"))) - (module-dir (string-append out "/share/guile/site/" - effective)) - (object-dir (string-append out "/lib/guile/" effective - "/site-ccache")) - (prefix (string-length module-dir))) - ;; compile to the destination - (for-each (lambda (file) - (let* ((base (string-drop (string-drop-right file 4) - prefix)) - (go (string-append object-dir base ".go"))) - (invoke "guild" "compile" "-L" module-dir - file "-o" go))) - (find-files module-dir "\\.scm$")) - #t)))))) - (home-page "https://draketo.de/english/wisp") - (inputs - `(("guile" ,guile-2.2))) - (native-inputs - `(("python" ,python) - ("pkg-config" ,pkg-config))) - (synopsis "Whitespace to lisp syntax for Guile") - (description "Wisp is a syntax for Guile which provides a Python-like -whitespace-significant language. It may be easier on the eyes for some -users and in some situations.") - (license license:gpl3+))) - -(define-public guile-sly - (package - (name "guile-sly") - (version "0.1") - (source (origin - (method url-fetch) - (uri (string-append "https://files.dthompson.us/sly/sly-" - version ".tar.gz")) - (sha256 - (base32 - "1svzlbz2vripmyq2kjh0rig16bsrnbkwbsm558pjln9l65mcl4qq")) - (modules '((guix build utils))) - (snippet - '(begin - (substitute* "configure" - (("_guile_required_version=\"2.0.11\"") - "_guile_required_version=\"2\"") - (("ac_subst_vars='") - "ac_subst_vars='GUILE_EFFECTIVE_VERSION\n")) - (substitute* (find-files "." "Makefile.in") - (("moddir = .*$") - (string-append - "moddir = " - "$(prefix)/share/guile/site/@GUILE_EFFECTIVE_VERSION@\n")) - (("godir = .*$") - (string-append - "godir = " - "$(prefix)/lib/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n"))) - #t)))) - (build-system gnu-build-system) - (arguments - '(#:configure-flags - (list (string-append "--with-libfreeimage-prefix=" - (assoc-ref %build-inputs "freeimage")) - (string-append "--with-libgslcblas-prefix=" - (assoc-ref %build-inputs "gsl"))))) - (native-inputs - `(("pkg-config" ,pkg-config))) - (propagated-inputs - `(("guile-sdl" ,guile-sdl) - ("guile-opengl" ,guile-opengl))) - (inputs - `(("guile" ,guile-2.2) - ("gsl" ,gsl) - ("freeimage" ,freeimage) - ("mesa" ,mesa))) - (synopsis "2D/3D game engine for GNU Guile") - (description "Sly is a 2D/3D game engine written in Guile Scheme. Sly -features a functional reactive programming interface and live coding -capabilities.") - (home-page "https://dthompson.us/projects/sly.html") - (license license:gpl3+))) - -(define-public g-wrap - (package - (name "g-wrap") - (version "1.9.15") - (source (origin - (method url-fetch) - (uri (string-append "mirror://savannah/g-wrap/g-wrap-" - version ".tar.gz")) - (sha256 - (base32 - "0ak0bha37dfpj9kmyw1r8fj8nva639aw5xr66wr5gd3l1rqf5xhg")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config))) - (propagated-inputs - `(("guile" ,guile-2.2) - ("guile-lib" ,guile-lib))) - (inputs - `(("libffi" ,libffi))) - (arguments - `(#:configure-flags '("--disable-Werror") - #:phases - (modify-phases %standard-phases - (add-before 'configure 'pre-configure - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (substitute* (find-files "." "^Makefile.in$") - (("guilemoduledir =.*guile/site" all) - (string-append all "/@GUILE_EFFECTIVE_VERSION@"))) - #t)))))) - (synopsis "Generate C bindings for Guile") - (description "G-Wrap is a tool and Guile library for generating function -wrappers for inter-language calls. It currently only supports generating Guile -wrappers for C functions. Given a definition of the types and prototypes for -a given C interface, G-Wrap will automatically generate the C code that -provides access to that interface and its types from the Scheme level.") - (home-page "https://www.nongnu.org/g-wrap/index.html") - (license license:lgpl2.1+))) - -(define-public guile-dbi - (package - (name "guile-dbi") - (version "2.1.6") - (source (origin - (method url-fetch) - (uri (string-append - "http://download.gna.org/guile-dbi/guile-dbi-" - version ".tar.gz")) - (sha256 - (base32 - "116njrprhgrsv1qm904sp3b02rq01fx639r433d657gyhw3x159n")))) - (build-system gnu-build-system) - (arguments - '(#:configure-flags - (list (string-append - "--with-guile-site-dir=" %output "/share/guile/site/2.2")) - #:make-flags - (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib:" - (assoc-ref %build-inputs "guile-dbd-sqlite3") "/lib")) - #:phases - (modify-phases %standard-phases - (add-after 'install 'patch-extension-path - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (dbi.scm (string-append - out "/share/guile/site/2.2/dbi/dbi.scm")) - (ext (string-append out "/lib/libguile-dbi"))) - (substitute* dbi.scm (("libguile-dbi") ext)) - #t)))))) - (inputs - `(("guile-dbd-sqlite3" ,guile-dbd-sqlite3))) ; only shared library, no scheme files - (propagated-inputs - `(("guile" ,guile-2.2))) - (synopsis "Guile database abstraction layer") - (home-page "http://home.gna.org/guile-dbi/guile-dbi.html") - (description - "guile-dbi is a library for Guile that provides a convenient interface to -SQL databases. Database programming with guile-dbi is generic in that the same -programming interface is presented regardless of which database system is used. -It currently supports MySQL, Postgres and SQLite3.") - (license license:gpl2+))) - -(define guile-dbi-bootstrap - (package - (inherit guile-dbi) - (name "guile-dbi-bootstrap") - (inputs '()) - (arguments - (substitute-keyword-arguments (package-arguments guile-dbi) - ((#:make-flags _) '(list)))))) - -(define-public guile-dbd-sqlite3 - (package - (name "guile-dbd-sqlite3") - (version "2.1.6") - (source (origin - (method url-fetch) - (uri (string-append - "http://download.gna.org/guile-dbi/guile-dbd-sqlite3-" - version ".tar.gz")) - (sha256 - (base32 - "0rg71jchxd2y8x496s8zmfmikr5g8zxi8zv2ar3f7a23pph92iw2")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config) - ("guile-dbi-bootstrap" ,guile-dbi-bootstrap))) ; only required for headers - (inputs - `(("sqlite" ,sqlite) - ("zlib" ,(@ (gnu packages compression) zlib)))) - (synopsis "Guile DBI driver for SQLite") - (home-page "https://github.com/jkalbhenn/guile-dbd-sqlite3") - (description - "guile-dbi is a library for Guile that provides a convenient interface to -SQL databases. This package implements the interface for SQLite.") - (license license:gpl2+))) - -(define-public guile-dsv - (package - (name "guile-dsv") - (version "0.2.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/artyom-poptsov/guile-dsv") - (commit "bdc5267d007478abc20ea96d7c459b7dd9560b3d"))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "1irw6mz8998nwyhzrw9g94jcz60b9zljgqfmipaz1ybn8579qjx0")))) - (build-system gnu-build-system) - (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("pkg-config" ,pkg-config) - ("texinfo" ,texinfo))) - (inputs `(("guile" ,guile-2.2))) - (propagated-inputs `(("guile-lib" ,guile-lib))) - (arguments - '(#:phases (modify-phases %standard-phases - (add-before 'configure 'set-guilesitedir - (lambda _ - (substitute* "Makefile.in" - (("^guilesitedir =.*$") - "guilesitedir = \ -$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n")) - (substitute* "modules/Makefile.in" - (("^guilesitedir =.*$") - "guilesitedir = \ -$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n")) - (substitute* "modules/dsv/Makefile.in" - (("^guilesitedir =.*$") - "guilesitedir = \ -$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n")) - #t))))) - (home-page "https://github.com/artyom-poptsov/guile-dsv") - (synopsis "DSV module for Guile") - (description - "Guile-DSV is a GNU Guile module for working with the -delimiter-separated values (DSV) data format. Guile-DSV supports the -Unix-style DSV format and RFC 4180 format.") - (license license:gpl3+))) - -(define-public guile-xosd - (package - (name "guile-xosd") - (version "0.2.1") - (source (origin - (method url-fetch) - (uri (string-append "https://github.com/alezost/" name - "/releases/download/v" version - "/" name "-" version ".tar.gz")) - (sha256 - (base32 - "1ri5065c16kmgrf2pysn2ymxjqi5302lhpb07wkl1jr75ym8fn8p")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config))) - (inputs - `(("guile" ,guile-2.2) - ("libx11" ,libx11) - ("libxext" ,libxext) - ("libxinerama" ,libxinerama) - ("xosd" ,xosd))) - (home-page "https://github.com/alezost/guile-xosd") - (synopsis "XOSD bindings for Guile") - (description - "Guile-XOSD provides Guile bindings for @code{libxosd}, -@uref{http://sourceforge.net/projects/libxosd/, the X On Screen Display -library}.") - (license license:gpl3+))) - -(define-public guile-daemon - (package - (name "guile-daemon") - (version "0.1.2") - (source (origin - (method url-fetch) - (uri (string-append "https://github.com/alezost/" name - "/releases/download/v" version - "/" name "-" version ".tar.gz")) - (sha256 - (base32 - "0hh6gq6b6phpxm0b1dkxyzj3f4sxdf7dji63609lzypa5v1ad2gv")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config))) - (inputs - `(("guile" ,guile-2.2))) - (home-page "https://github.com/alezost/guile-daemon") - (synopsis "Evaluate code in a running Guile process") - (description - "Guile-Daemon is a small Guile program that loads your initial -configuration file, and then reads and evaluates Guile expressions that -you send to a FIFO file.") - (license license:gpl3+))) - -(define-public guile-commonmark - (package - (name "guile-commonmark") - (version "0.1.1") - (source (origin - (method url-fetch) - (uri (string-append "https://github.com/OrangeShark/" name - "/releases/download/v" version - "/" name "-" version ".tar.gz")) - (sha256 - (base32 - "0kzclwkfijj8xka3g9kfj53y67c34ndfy84swdbw3j7y962ndxq6")) - (modules '((guix build utils))) - (snippet - ;; Install .scm files in the right place (see - ;; .) - '(begin - (substitute* "Makefile.in" - (("^moddir = \\$\\(datadir\\)/share") - "moddir = $(datadir)")) - #t)))) - (build-system gnu-build-system) - (inputs - `(("guile" ,guile-2.2))) - (native-inputs - `(("pkg-config" ,pkg-config))) - (synopsis "CommonMark parser for Guile") - (description - "guile-commonmark is a library for parsing CommonMark, a fully specified -variant of Markdown. The library is written in Guile Scheme and is designed -to transform a CommonMark document to SXML. guile-commonmark tries to closely -follow the @uref{http://commonmark.org/, CommonMark spec}, the main difference -is no support for parsing block and inline level HTML.") - (home-page "https://github.com/OrangeShark/guile-commonmark") - (license license:lgpl3+))) - -(define-public guile2.0-commonmark - (package-for-guile-2.0 guile-commonmark)) -(define-public guile2.2-commonmark - (deprecated-package "guile2.2-commonmark" guile-commonmark)) - (define-public guile-bytestructures (package (name "guile-bytestructures") @@ -1680,194 +606,6 @@ type system, elevating types to first-class status.") (define-public guile2.0-bytestructures (package-for-guile-2.0 guile-bytestructures)) -(define-public guile-aspell - (package - (name "guile-aspell") - (version "0.4") - (source (origin - (method url-fetch) - (uri (string-append - "http://lonelycactus.com/tarball/guile_aspell-" - version ".tar.gz")) - (sha256 - (base32 - "0vpk5xj9m9qc702z3khmkwhgpb949qbsyz8kw2qycda6qnxk0077")))) - (build-system gnu-build-system) - (arguments - '(#:phases (modify-phases %standard-phases - (add-before 'configure 'set-guilesitedir - (lambda _ - (substitute* "Makefile.in" - (("^guilesitedir =.*$") - "guilesitedir = \ -$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n")) - #t)) - (add-before 'build 'set-libaspell-file-name - (lambda* (#:key inputs #:allow-other-keys) - (let ((aspell (assoc-ref inputs "aspell"))) - (substitute* "aspell.scm" - (("\"libaspell\\.so\"") - (string-append "\"" aspell - "/lib/libaspell\""))) - #t)))))) - (native-inputs `(("pkg-config" ,pkg-config))) - (inputs `(("guile" ,guile-2.2) - ("aspell" ,aspell))) - (home-page "https://github.com/spk121/guile-aspell") - (synopsis "Spell-checking from Guile") - (description - "guile-aspell is a Guile Scheme library for comparing a string against a -dictionary and suggesting spelling corrections.") - (license license:gpl3+))) - -(define-public guile-bash - ;; This project is currently retired. It was initially announced here: - ;; . - (let ((commit "1eabc563ca5692b3e08d84f1f0e6fd2283284469") - (revision "0")) - (package - (name "guile-bash") - (version (string-append "0.1.6-" revision "." (string-take commit 7))) - (home-page - "https://anonscm.debian.org/cgit/users/kaction-guest/retired/dev.guile-bash.git") - (source (origin - (method git-fetch) - (uri (git-reference - (commit commit) - (url home-page))) - (sha256 - (base32 - "097vny990wp2qpjij6a5a5gwc6fxzg5wk56inhy18iki5v6pif1p")) - (file-name (string-append name "-" version "-checkout")))) - (build-system gnu-build-system) - (arguments - '(#:configure-flags - ;; Add -I to match 'bash.pc' of Bash 4.4. - (list (string-append "CPPFLAGS=-I" - (assoc-ref %build-inputs "bash:include") - "/include/bash/include") - - ;; The '.a' file is useless. - "--disable-static" - - ;; Install 'lib/bash' as Bash 4.4 expects. - (string-append "--libdir=" (assoc-ref %outputs "out") - "/lib/bash")))) - (native-inputs `(("pkg-config" ,pkg-config) - ("autoconf" ,autoconf-wrapper) - ("automake" ,automake) - ("libtool" ,libtool) - ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'. - ("gettext" ,gettext-minimal) - - ;; Bash with loadable module support, for the test - ;; suite. - ("bash-full" ,bash))) - (inputs `(("guile" ,guile-2.0) - ("bash:include" ,bash "include"))) - (synopsis "Extend Bash using Guile") - (description - "Guile-Bash provides a shared library and set of Guile modules, -allowing you to extend Bash in Scheme. Scheme interfaces allow you to access -the following aspects of Bash: - -@itemize -@item aliases; -@item setting and getting Bash variables; -@item creating dynamic variables; -@item creating Bash functions with a Scheme implementation; -@item reader macro for output capturing; -@item reader macro for evaluating raw Bash commands. -@end itemize - -To enable it, run: - -@example -enable -f ~/.guix-profile/lib/bash/libguile-bash.so scm -@end example - -and then run @command{scm example.scm}.") - (license license:gpl3+)))) - -(define-public guile-8sync - (package - (name "guile-8sync") - (version "0.4.2") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/8sync/8sync-" version - ".tar.gz")) - (sha256 - (base32 - "031wm13srak3wsnll7j2mbbi29g1pcm4swdb71ds9yn567pn20qw")))) - (build-system gnu-build-system) - (native-inputs `(("autoconf" ,autoconf) - ("automake" ,automake) - ("guile" ,guile-2.2) - ("pkg-config" ,pkg-config) - ("texinfo" ,texinfo))) - (arguments - `(#:phases (modify-phases %standard-phases - (add-before 'configure 'setenv - (lambda _ - ;; quiet warnings - (setenv "GUILE_AUTO_COMPILE" "0") - #t))))) - (home-page "https://gnu.org/s/8sync/") - (synopsis "Asynchronous actor model library for Guile") - (description - "GNU 8sync (pronounced \"eight-sync\") is an asynchronous programming -library for GNU Guile based on the actor model. - -Note that 8sync is only available for Guile 2.2.") - (license license:lgpl3+))) - -(define-public guile-fibers - (package - (name "guile-fibers") - (version "1.0.0") - (source (origin - (method url-fetch) - (uri (string-append "https://wingolog.org/pub/fibers/fibers-" - version ".tar.gz")) - (sha256 - (base32 - "0vjkg72ghgdgphzbjz9ig8al8271rq8974viknb2r1rg4lz92ld0")))) - (build-system gnu-build-system) - (arguments - '(#:phases (modify-phases %standard-phases - (add-after 'install 'mode-guile-objects - (lambda* (#:key outputs #:allow-other-keys) - ;; .go files are installed to "lib/guile/X.Y/cache". - ;; This phase moves them to "…/site-ccache". - (let* ((out (assoc-ref outputs "out")) - (lib (string-append out "/lib/guile")) - (old (car (find-files lib "^ccache$" - #:directories? #t))) - (new (string-append (dirname old) - "/site-ccache"))) - (rename-file old new) - #t)))))) - (native-inputs - `(("texinfo" ,texinfo) - ("pkg-config" ,pkg-config))) - (inputs - `(("guile" ,guile-2.2))) - (synopsis "Lightweight concurrency facility for Guile") - (description - "Fibers is a Guile library that implements a a lightweight concurrency -facility, inspired by systems like Concurrent ML, Go, and Erlang. A fiber is -like a \"goroutine\" from the Go language: a lightweight thread-like -abstraction. Systems built with Fibers can scale up to millions of concurrent -fibers, tens of thousands of concurrent socket connections, and many parallel -cores. The Fibers library also provides Concurrent ML-like channels for -communication between fibers. - -Note that Fibers makes use of some Guile 2.1/2.2-specific features and -is not available for Guile 2.0.") - (home-page "https://github.com/wingo/fibers") - (license license:lgpl3+))) - (define-public guile-git (package (name "guile-git") @@ -1901,505 +639,5 @@ manipulate repositories of the Git version control system.") (define-public guile2.0-git (package-for-guile-2.0 guile-git)) -(define-public guile-syntax-highlight - (package - (name "guile-syntax-highlight") - (version "0.1") - (source (origin - (method url-fetch) - (uri (string-append "https://files.dthompson.us/" - "guile-syntax-highlight/" - "guile-syntax-highlight-" - version ".tar.gz")) - (sha256 - (base32 - "1p771kq15x83483m23bhah1sz6vkalg3drm7x279f4j1cxligkzi")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config))) - (inputs - `(("guile" ,guile-2.2))) - (synopsis "General-purpose syntax highlighter for GNU Guile") - (description "Guile-syntax-highlight is a general-purpose syntax -highlighting library for GNU Guile. It can parse code written in various -programming languages into a simple s-expression that can be converted to -HTML (via SXML) or any other format for rendering.") - (home-page "http://dthompson.us/projects/guile-syntax-highlight.html") - (license license:lgpl3+))) - -(define-public guile-sjson - (package - (name "guile-sjson") - (version "0.2.1") - (source (origin - (method url-fetch) - (uri (string-append "https://dustycloud.org/misc/sjson-" version - ".tar.gz")) - (sha256 - (base32 - "1mzmapln79vv10qxaggz9qwcdbag3jnrj19xx8bgkmxss8h03sv3")))) - (build-system gnu-build-system) - (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("pkg-config" ,pkg-config))) - (inputs - `(("guile" ,guile-2.2))) - (home-page "https://gitlab.com/dustyweb/guile-sjson") - (synopsis "S-expression based json reader/writer for Guile") - (description "guile-sjson is a json reader/writer for Guile. -It has a nice, simple s-expression based syntax.") - (license license:lgpl3+))) - -(define-public guile-colorized - (package - (name "guile-colorized") - (version "0.1") - (source (origin - (method url-fetch) - (uri (string-append "https://github.com/NalaGinrut/guile-colorized/" - "archive/v" version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "16xhc3an6aglnca8xl3mvgi8hsqzqn68vsl5ga4bz8bvbap5fn4p")))) - (build-system guile-build-system) - (native-inputs - `(("guile" ,guile-2.2))) - (home-page "https://github.com/NalaGinrut/guile-colorized") - (synopsis "Colorized REPL for Guile") - (description - "Guile-colorized provides you with a colorized REPL for GNU Guile.") - (license license:gpl3+))) - -(define-public guile-pfds - (package - (name "guile-pfds") - (version "0.3") - (home-page "https://github.com/ijp/pfds") - (source (origin - (method git-fetch) - (uri (git-reference - (url home-page) - (commit (string-append "v" version)))) - (sha256 - (base32 - "19y33wg94pf0n98dkfqd1zbw93fgky4sawxsxl6s3vyqwl0yi5vh")) - (file-name (string-append name "-" version "-checkout")))) - (build-system guile-build-system) - (arguments - '(#:source-directory "src" - #:phases (modify-phases %standard-phases - (add-after 'unpack 'move-files-around - (lambda _ - ;; Move files under a pfds/ directory to reflect the - ;; module hierarchy. - (mkdir-p "src/pfds") - (for-each (lambda (file) - (rename-file file - (string-append "src/pfds/" - file))) - '("bbtrees.sls" - "deques" - "deques.sls" - "dlists.sls" - "fingertrees.sls" - "hamts.sls" - "heaps.sls" - "private" - "psqs.sls" - "queues" - "queues.sls" - "sequences.sls" - "sets.sls")) - - ;; In Guile <= 2.2.4, there's no way to tell 'guild - ;; compile' to accept the ".sls" extension. So... - (for-each (lambda (file) - (rename-file file - (string-append - (string-drop-right file 4) - ".scm"))) - (find-files "." "\\.sls$")) - #t))))) - (native-inputs - `(("guile" ,guile-2.2))) - (synopsis "Purely functional data structures for Guile") - (description - "This package provides purely functional data structures written in R6RS -Scheme and compiled for Guile. It has been tested with Racket, Guile 2, -Vicare Scheme and IronScheme. Right now it contains: - -@itemize -@item queues -@item deques -@item bbtrees -@item sets -@item dlists -@item priority search queues (PSQs) -@item finger trees -@item sequences -@item heaps -@item hash array mapped tries (HAMTs). -@end itemize\n") - (license license:bsd-3))) - -(define-public guile-aa-tree - (package - (name "guile-aa-tree") - (version "3.1.1") - (source (origin - (method url-fetch) - (uri (string-append "mirror://savannah/guile-aa-tree/guile-aa-tree-" - version ".tar.gz")) - (sha256 - (base32 - "0044c105r3q9vpl17pv3phl1b79kjm1llhkakqgiasixyav01blh")))) - (build-system guile-build-system) - (native-inputs `(("guile" ,guile-2.2))) - ;; https://savannah.nongnu.org/projects/guile-aa-tree - (home-page "https://qlfiles.net/guile-aa-tree/") - (synopsis "AA tree data structure for Guile") - (description - "This package provides an implementation of @dfn{AA trees}, a -self-balancing binary tree data structure, for Guile. It ensure @math{O(log -n)} worst case performance for core operations. The module provides -non-mutating insert, delete, and search operations, with support for -convenient nested tree operations.") - (license license:gpl3+))) - -(define-public guile-simple-zmq - (let ((commit "68bedb6679716214fb9d3472da57544526f7a618") - (revision "3")) - (package - (name "guile-simple-zmq") - (version (git-version "0.0.0" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/jerry40/guile-simple-zmq") - (commit commit))) - (sha256 - (base32 - "1ad3xg69qqviy1f6dnlw0ysmfdbmp1jq65rfqb8nfd8dsrq2syli")) - (file-name (git-file-name name version)))) - (build-system guile-build-system) - (arguments - `(#:source-directory "src" - #:phases (modify-phases %standard-phases - (add-after 'unpack 'set-libzmq-file-name - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "src/simple-zmq.scm" - (("\\(dynamic-link \"libzmq\"\\)") - (format #f "(dynamic-link \"~a/lib/libzmq.so\")" - (assoc-ref inputs "zeromq")))) - #t))))) - (native-inputs - `(("guile" ,guile-2.2))) - (inputs - `(("zeromq" ,zeromq))) - (home-page "https://github.com/jerry40/guile-simple-zmq") - (synopsis "Guile wrapper over ZeroMQ library") - (description - "This package provides a Guile programming interface to the ZeroMQ -messaging library.") - (license license:gpl3+)))) - -(define-public jupyter-guile-kernel - (let ((commit "a7db9245a886e104138474df46c3e88b95cff629") - (revision "1")) - (package - (name "jupyter-guile-kernel") - (version (git-version "0.0.0" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/jerry40/guile-kernel") - (commit commit))) - (sha256 - (base32 - "0aj04853bqm47ivfcmrgpb7w3wkis847kc7qrwsa5zcn9h38qh2f")))) - (build-system guile-build-system) - (arguments - '(#:phases (modify-phases %standard-phases - (add-after 'unpack 'set-openssl-file-name - (lambda* (#:key inputs #:allow-other-keys) - ;; Record the absolute file name of the 'openssl' - ;; command. - (substitute* "src/hmac.scm" - (("openssl") - (string-append (assoc-ref inputs "openssl") - "/bin/openssl"))) - #t)) - - ;; XXX: The code uses 'include' to include its own source - ;; files, and "-L src" isn't enough in this case. - (add-before 'build 'chdir - (lambda _ (chdir "src") #t)) - (add-after 'build 'chdir-back - (lambda _ (chdir "..") #t)) - - (add-after 'install 'install-kernel - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (json (assoc-ref inputs "guile-json")) - (zmq (assoc-ref inputs "guile-simple-zmq")) - (deps (list json zmq)) - (dir (string-append - out "/share/jupyter/kernels/guile")) - (effective (target-guile-effective-version))) - ;; Install kernel. - (install-file "src/kernel.json" dir) - - ;; Fix hard-coded file name in the kernel. - (substitute* (string-append dir "/kernel.json") - (("/home/.*/guile-jupyter-kernel.scm") - (string-append out "/share/guile/site/" - (target-guile-effective-version) - "/guile-jupyter-kernel.scm")) - (("\"guile\"") - (string-append "\"" (assoc-ref inputs "guile") - "/bin/guile\"")) - (("-s") - ;; Add '-L' and '-C' flags so that the kernel - ;; finds its dependencies. - (let ((-L (map (lambda (item) - (string-append "\"" item - "/share/guile/site/" - effective "\"")) - deps)) - (-C (map (lambda (item) - (string-append "\"" item - "/lib/guile/" - effective - "/site-ccache\"")) - deps))) - (string-append "--no-auto-compile\"" - (string-join -L ", \"-L\", " - 'prefix) - (string-join -C ", \"-C\", " - 'prefix) - ", \"-s")))) - #t)))))) - (inputs - `(("openssl" ,openssl) - ("guile" ,guile-2.2) - ("guile-json" ,guile-json) - ("guile-simple-zmq" ,guile-simple-zmq))) - (synopsis "Guile kernel for the Jupyter Notebook") - (description - "This package provides a Guile 2.x kernel for the Jupyter Notebook. It -allows users to interact with the Guile REPL through Jupyter.") - (home-page "https://github.com/jerry40/guile-kernel") - (license license:gpl3+)))) - -(define-public guile-sparql - (package - (name "guile-sparql") - (version "0.0.7") - (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/roelj/guile-sparql/releases/download/" - version "/guile-sparql-" version ".tar.gz")) - (sha256 - (base32 "1drnvhsgl0gc5crmb16yyw1j98nkhwwcgssv9vgm36ng43nnzffd")))) - (build-system gnu-build-system) - (arguments `(#:tests? #f)) ; There are no tests. - (native-inputs - `(("pkg-config" ,pkg-config))) - (inputs - `(("guile" ,guile-2.2))) - (home-page "https://github.com/roelj/guile-sparql") - (synopsis "SPARQL module for Guile") - (description "This package provides the functionality to query a SPARQL -endpoint. Additionally, it provides an interface to write SPARQL queries -using S-expressions.") - (license license:gpl3+))) - -(define-public guile-debbugs - (package - (name "guile-debbugs") - (version "0.0.2") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/guile-debbugs/guile-debbugs-" - version ".tar.gz")) - (sha256 - (base32 - "16l8910p57im6s3j93xhdaqvgfy6ms5n97177mrch3y961z5hy0i")) - (modules '((guix build utils))) - (snippet - '(substitute* "Makefile.in" - (("^godir = (.*)/ccache" _ prefix) - (string-append "godir = " prefix "/site-ccache")))))) - (build-system gnu-build-system) - (native-inputs - `(("guile" ,guile-2.2) - ("pkg-config" ,pkg-config))) - (home-page "https://savannah.gnu.org/projects/guile-debbugs/") - (synopsis "Guile interface to the Debbugs bug tracking service") - (description - "This package provides a Guile library to communicate with a Debbugs bug -tracker's SOAP service, such as @url{https://bugs.gnu.org}.") - (license license:gpl3+))) - -(define-public guile-email - (let ((commit "fa52eac55e5946db89621a6c583d2aa357864dee") - (revision "1")) - (package - (name "guile-email") - (version (git-version "0.1.0" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://git.systemreboot.net/guile-email") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1037mbz7qd9bzaqp8ysyhnl9ipd97fmj3b9jr8qfzx9179vvsj63")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config) - ("autoconf" ,autoconf) - ("automake" ,automake))) - (inputs - `(("guile" ,guile-2.2))) - (home-page "https://git.systemreboot.net/guile-email") - (synopsis "Guile email parser") - (description "This package provides an email parser written in pure -Guile.") - (license license:agpl3+)))) - -(define-public guile-debbugs-next - (let ((commit "75a331d561c8b6f8efcf16216dab961c17759efe") - (revision "1")) - (package (inherit guile-debbugs) - (name "guile-debbugs") - (version (git-version "0.0.3" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://git.savannah.gnu.org/git/guile-debbugs.git") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0br3mgbw41bpc9x57jlghl0i8dz9nl63r4wzs5l47aqszf84870y")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config) - ("autoconf" ,autoconf) - ("automake" ,automake) - ("texinfo" ,texinfo))) - (inputs - `(("guile" ,guile-2.2) - ("guile-email" ,guile-email)))))) - -;; There has not been any release yet. -(define-public guile-newt - (let ((commit "80c1e9e71945f833386d1632b52573e59325804f") - (revision "4")) - (package - (name "guile-newt") - (version (string-append "0-" revision "." (string-take commit 9))) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://gitlab.com/mothacehe/guile-newt") - (commit commit))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "1w7qy4dw1f4bx622l6hw8mv49sf1ha8kch8j4nganyk8fj0wn695")))) - (build-system gnu-build-system) - (arguments - '(#:make-flags - '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings - (inputs - `(("guile" ,guile-2.2) - ("newt" ,newt))) - (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("pkg-config" ,pkg-config))) - (synopsis "Guile bindings to Newt") - (description - "This package provides bindings for Newt, a programming library for -color text mode, widget based user interfaces. The bindings are written in pure -Scheme by using Guile’s foreign function interface.") - (home-page "https://gitlab.com/mothacehe/guile-newt") - (license license:gpl3+)))) - -(define-public guile-mastodon - (package - (name "guile-mastodon") - (version "0.0.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://framagit.org/prouby/guile-mastodon.git") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1vblf3d1bbwna3l09p2ap5y8ycvl549bz6whgk78imyfmn28ygry")))) - (build-system gnu-build-system) - (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("pkg-config" ,pkg-config))) - (inputs - `(("guile" ,guile-2.2) - ("gnutls" ,gnutls) - ("guile-json" ,guile-json))) - (home-page "https://framagit.org/prouby/guile-mastodon") - (synopsis "Guile Mastodon REST API module") - (description "This package provides Guile modules to access the -@uref{https://docs.joinmastodon.org/api/, REST API of Mastodon}, a federated -microblogging service.") - (license license:gpl3+))) - -;; There has not been any release yet. -(define-public guile-parted - (let ((commit "ea3f1a1f6844775fc59d3078d2a09c62ffb341b8") - (revision "0")) - (package - (name "guile-parted") - (version (string-append "0-" revision "." (string-take commit 9))) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://gitlab.com/mothacehe/guile-parted") - (commit commit))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "1q7425gpjlwi2wvhzq7kw046yyx7v6j6jyzkd1cr861iz34mjwiq")))) - (build-system gnu-build-system) - (arguments - '(#:make-flags - '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings - (inputs - `(("guile" ,guile-2.2) - ("parted" ,parted))) - (propagated-inputs - `(("guile-bytestructures" ,guile-bytestructures))) - (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("pkg-config" ,pkg-config))) - (synopsis "Guile bindings to GNU Parted") - (description - "This package provides bindings for GNU Parted library, a C library -allowing disk partition tables creation and manipulation. The bindings are -written in pure Scheme by using Guile's foreign function interface.") - (home-page "https://gitlab.com/mothacehe/guile-parted") - (license license:gpl3+)))) - ;;; guile.scm ends here diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 5777374582..05607c1593 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -76,6 +76,7 @@ #:use-module (gnu packages gsasl) #:use-module (gnu packages gtk) #:use-module (gnu packages guile) + #:use-module (gnu packages guile-xyz) #:use-module (gnu packages flex) #:use-module (gnu packages kerberos) #:use-module (gnu packages libcanberra) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index f24e64432e..bfce96ff4f 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -52,6 +52,7 @@ #:use-module (gnu packages graphviz) #:use-module (gnu packages gtk) #:use-module (gnu packages guile) + #:use-module (gnu packages guile-xyz) #:use-module (gnu packages linux) #:use-module (gnu packages lisp) #:use-module (gnu packages man) diff --git a/gnu/packages/skribilo.scm b/gnu/packages/skribilo.scm index 12bdd1a2fa..a01633c4b8 100644 --- a/gnu/packages/skribilo.scm +++ b/gnu/packages/skribilo.scm @@ -22,6 +22,7 @@ #:use-module (guix licenses) #:use-module (guix build-system gnu) #:use-module (gnu packages guile) + #:use-module (gnu packages guile-xyz) #:use-module (gnu packages lout) #:use-module (gnu packages pkg-config) #:use-module (gnu packages plotutils) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 776027ced7..c8f9bfd584 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -87,6 +87,7 @@ #:use-module (gnu packages gperf) #:use-module (gnu packages gtk) #:use-module (gnu packages guile) + #:use-module (gnu packages guile-xyz) #:use-module (gnu packages java) #:use-module (gnu packages jemalloc) #:use-module (gnu packages image) diff --git a/gnu/services/mcron.scm b/gnu/services/mcron.scm index e4b652b3d4..1b232b6cba 100644 --- a/gnu/services/mcron.scm +++ b/gnu/services/mcron.scm @@ -20,7 +20,7 @@ #:use-module (gnu services) #:use-module (gnu services base) #:use-module (gnu services shepherd) - #:autoload (gnu packages guile) (mcron) + #:autoload (gnu packages guile-xyz) (mcron) #:use-module (guix deprecation) #:use-module (guix records) #:use-module (guix gexp) -- cgit 1.4.1 From 66abc619d57ddc947399765ddc4ed68759bed3b7 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 28 Jan 2019 23:27:41 +0100 Subject: gnu: Add missing file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add gnu/installer/newt/user.scm. --- gnu/local.mk | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index 629da48e64..7dfaf45b69 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -7,7 +7,7 @@ # Copyright © 2016, 2017, 2018 Kei Kebreau # Copyright © 2016, 2017 Rene Saavedra # Copyright © 2016 Adonay "adfeno" Felipe Nogueira -# Copyright © 2016, 2017, 2018 Ricardo Wurmus +# Copyright © 2016, 2017, 2018, 2019 Ricardo Wurmus # Copyright © 2016 Ben Woodcroft # Copyright © 2016, 2017, 2018, 2019 Alex Vong # Copyright © 2016, 2017 Efraim Flashner @@ -596,6 +596,7 @@ GNU_SYSTEM_MODULES += \ %D%/installer/newt/partition.scm \ %D%/installer/newt/services.scm \ %D%/installer/newt/timezone.scm \ + %D%/installer/newt/user.scm \ %D%/installer/newt/utils.scm \ %D%/installer/newt/welcome.scm \ %D%/installer/newt/wifi.scm -- cgit 1.4.1 From 23c2598233a21699d4b2c6e595d9491a4c981e72 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Tue, 29 Jan 2019 09:47:25 +0200 Subject: gnu: x265: Update to 3.0. * gnu/packages/video.scm (x265): Update to 3.0. [source]: Remove patch. * gnu/packages/patches/x265-detect512-all-arches.patch: Remove file. * gnu/local.mk (dist_patch_DATA): Remove it. --- gnu/local.mk | 1 - .../patches/x265-detect512-all-arches.patch | 37 ---------------------- gnu/packages/video.scm | 7 ++-- 3 files changed, 3 insertions(+), 42 deletions(-) delete mode 100644 gnu/packages/patches/x265-detect512-all-arches.patch (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index 7dfaf45b69..6b649e1f86 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1333,7 +1333,6 @@ dist_patch_DATA = \ %D%/packages/patches/wpa-supplicant-fix-nonce-reuse.patch \ %D%/packages/patches/wpa-supplicant-krack-followups.patch \ %D%/packages/patches/x265-arm-flags.patch \ - %D%/packages/patches/x265-detect512-all-arches.patch \ %D%/packages/patches/xboing-CVE-2004-0149.patch \ %D%/packages/patches/xf86-video-ark-remove-mibstore.patch \ %D%/packages/patches/xf86-video-geode-glibc-2.20.patch \ diff --git a/gnu/packages/patches/x265-detect512-all-arches.patch b/gnu/packages/patches/x265-detect512-all-arches.patch deleted file mode 100644 index 4d39d868fd..0000000000 --- a/gnu/packages/patches/x265-detect512-all-arches.patch +++ /dev/null @@ -1,37 +0,0 @@ -https://sources.debian.org/data/main/x/x265/2.9-3/debian/patches/0003-detect512-is-needed-on-all-architectures.patch - -From: Adam Sampson -Date: Sun, 14 Oct 2018 14:04:18 +0200 -Subject: detect512 is needed on all architectures - ---- - source/common/cpu.cpp | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) - -diff --git a/source/common/cpu.cpp b/source/common/cpu.cpp -index 0681ff5..fa687da 100644 ---- a/source/common/cpu.cpp -+++ b/source/common/cpu.cpp -@@ -110,6 +110,11 @@ const cpu_name_t cpu_names[] = - { "", 0 }, - }; - -+bool detect512() -+{ -+ return(enable512); -+} -+ - #if X265_ARCH_X86 - - extern "C" { -@@ -123,10 +128,6 @@ uint64_t PFX(cpu_xgetbv)(int xcr); - #pragma warning(disable: 4309) // truncation of constant value - #endif - --bool detect512() --{ -- return(enable512); --} - uint32_t cpu_detect(bool benableavx512 ) - { - diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 190a6c9a06..193c979515 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -399,7 +399,7 @@ and creating Matroska files from other media files (@code{mkvmerge}).") (define-public x265 (package (name "x265") - (version "2.9") + (version "3.0") (outputs '("out" "static")) (source (origin @@ -408,9 +408,8 @@ and creating Matroska files from other media files (@code{mkvmerge}).") "x265_" version ".tar.gz")) (sha256 (base32 - "090hp4216isis8q5gb7bwzia8rfyzni54z21jnwm97x3hiy6ibpb")) - (patches (search-patches "x265-arm-flags.patch" - "x265-detect512-all-arches.patch")) + "0qh65wdpasrspkm1y0dlfa123myax568yi0sas0lmg5b1hkgrff5")) + (patches (search-patches "x265-arm-flags.patch")) (modules '((guix build utils))) (snippet '(begin (delete-file-recursively "source/compat/getopt") -- cgit 1.4.1 From 948879eeda8fcacf6bdbf45111941eb5e964156e Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 29 Jan 2019 21:15:36 -0500 Subject: gnu: icecat: Add icecat-source. * gnu/packages/gnuzilla.scm (computed-origin-method): New variable. (%icecat-version, icecat-source): New variables. * gnu/packages/patches/icecat-makeicecat.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. --- gnu/local.mk | 3 +- gnu/packages/gnuzilla.scm | 175 ++++++++++++++++++++++++++- gnu/packages/patches/icecat-makeicecat.patch | 154 +++++++++++++++++++++++ 3 files changed, 330 insertions(+), 2 deletions(-) create mode 100644 gnu/packages/patches/icecat-makeicecat.patch (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index 6b649e1f86..c4b172f90e 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -2,7 +2,7 @@ # Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès # Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Andreas Enge # Copyright © 2016 Mathieu Lirzin -# Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Mark H Weaver +# Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Mark H Weaver # Copyright © 2016 Chris Marusich # Copyright © 2016, 2017, 2018 Kei Kebreau # Copyright © 2016, 2017 Rene Saavedra @@ -886,6 +886,7 @@ dist_patch_DATA = \ %D%/packages/patches/hurd-fix-eth-multiplexer-dependency.patch \ %D%/packages/patches/hplip-remove-imageprocessor.patch \ %D%/packages/patches/hydra-disable-darcs-test.patch \ + %D%/packages/patches/icecat-makeicecat.patch \ %D%/packages/patches/icecat-avoid-bundled-libraries.patch \ %D%/packages/patches/icecat-use-system-graphite2+harfbuzz.patch \ %D%/packages/patches/icecat-use-system-media-libs.patch \ diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 0ef8a91bfa..8f400dc74d 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2015 Andreas Enge ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès -;;; Copyright © 2014, 2015, 2016, 2017, 2018 Mark H Weaver +;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Mark H Weaver ;;; Copyright © 2015 Sou Bunnbu ;;; Copyright © 2016, 2017, 2018 Efraim Flashner ;;; Copyright © 2016 Alex Griffin @@ -33,12 +33,17 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) + #:use-module (guix gexp) + #:use-module (guix store) + #:use-module (guix monads) #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (guix build-system cargo) + #:use-module (gnu packages admin) #:use-module (gnu packages audio) #:use-module (gnu packages autotools) #:use-module (gnu packages base) + #:use-module (gnu packages bash) #:use-module (gnu packages check) #:use-module (gnu packages databases) #:use-module (gnu packages glib) @@ -559,6 +564,174 @@ security standards.") (sha256 (base32 hash)) (file-name file-name))) +(define* (computed-origin-method gexp-promise hash-algo hash + #:optional (name "source") + #:key (system (%current-system)) + (guile (default-guile))) + "Return a derivation that executes the G-expression that results +from forcing GEXP-PROMISE." + (mlet %store-monad ((guile (package->derivation guile system))) + (gexp->derivation (or name "computed-origin") + (force gexp-promise) + #:system system + #:guile-for-build guile))) + +(define %icecat-version "60.5.0-guix1") + +;; 'icecat-source' is a "computed" origin that generates an IceCat tarball +;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat' +;; script from the upstream IceCat project. +(define icecat-source + (let* ((base-version (first (string-split %icecat-version #\-))) + + (major-version (first (string-split base-version #\.))) + (minor-version (second (string-split base-version #\.))) + (sub-version (third (string-split base-version #\.))) + + (upstream-firefox-version (string-append base-version "esr")) + (upstream-firefox-source + (origin + (method url-fetch) + (uri (string-append + "https://ftp.mozilla.org/pub/firefox/releases/" + upstream-firefox-version "/source/" + "firefox-" upstream-firefox-version ".source.tar.xz")) + (sha256 + (base32 + "09a0kk250r03984n1hdwr2rg1vmhi2jkyzzgbbvkf9h9hzp6j7qs")))) + + (upstream-icecat-base-version "60.3.0") ; maybe older than base-version + (upstream-icecat-gnu-version "1") + (upstream-icecat-version (string-append upstream-icecat-base-version + "-gnu" + upstream-icecat-gnu-version)) + (upstream-icecat-source + (origin + (method url-fetch) + (uri (string-append + "mirror://gnu/gnuzilla/" upstream-icecat-base-version + "/icecat-" upstream-icecat-version ".tar.bz2")) + (sha256 + (base32 + "0icnl64nxcyf7dprpdpygxhabsvyhps8c3ixysj9bcdlj9q34ib1")))) + + (gnuzilla-commit (string-append "v" upstream-icecat-base-version)) + (gnuzilla-source + (origin + (method git-fetch) + (uri (git-reference + (url "git://git.savannah.gnu.org/gnuzilla.git") + (commit gnuzilla-commit))) + (file-name (git-file-name "gnuzilla" upstream-icecat-base-version)) + (sha256 + (base32 + "19wal7hkbb4wvk40hs6d7a5paal2bfday08hwssm02srcbv48fj0")))) + + (makeicecat-patch + (local-file (search-patch "icecat-makeicecat.patch")))) + + (origin + (method computed-origin-method) + (file-name (string-append "icecat-" %icecat-version ".tar.xz")) + (sha256 #f) + (uri + (delay + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils)) + (let ((firefox-dir + (string-append "firefox-" #$base-version)) + (icecat-dir + (string-append "icecat-" #$%icecat-version)) + (old-icecat-dir + (string-append "icecat-" #$upstream-icecat-base-version))) + + (mkdir "/tmp/bin") + (set-path-environment-variable + "PATH" '("bin") + (list "/tmp" + #+(canonical-package bash) + #+(canonical-package coreutils) + #+(canonical-package findutils) + #+(canonical-package patch) + #+(canonical-package xz) + #+(canonical-package sed) + #+(canonical-package grep) + #+(canonical-package bzip2) + #+(canonical-package gzip) + #+(canonical-package tar) + #+rename)) + + (symlink #+(file-append rename "/bin/rename") + "/tmp/bin/prename") + + ;; We copy the gnuzilla source directory because it is + ;; read-only in 'gnuzilla-source', and the makeicecat script + ;; uses "cp -a" to copy parts of it and assumes that the + ;; copies will be writable. + (copy-recursively #+gnuzilla-source "/tmp/gnuzilla" + #:log (%make-void-port "w")) + + (with-directory-excursion "/tmp/gnuzilla" + (make-file-writable "makeicecat") + (invoke "patch" "--force" "--no-backup-if-mismatch" + "-p1" "--input" #+makeicecat-patch) + (patch-shebang "makeicecat") + (substitute* "makeicecat" + (("^FFMAJOR=.*") + (string-append "FFMAJOR=" #$major-version "\n")) + (("^FFMINOR=.*") + (string-append "FFMINOR=" #$minor-version "\n")) + (("^FFSUB=.*") + (string-append "FFSUB=" #$sub-version "\n")) + (("^GNUVERSION=.*") + (string-append "GNUVERSION=" + #$upstream-icecat-gnu-version "\n")) + (("^DATA=.*") + "DATA=/tmp/gnuzilla/data\n") + (("^sed .* debian/" all) + (string-append "echo warning: skipped: " all)) + (("^debian/rules " all) + (string-append "echo warning: skipped: " all)) + (("^find extensions/gnu/ ") + "find extensions/gnu/ | sort ") + (("/bin/sed") + #+(file-append (canonical-package sed) "/bin/sed")))) + + (format #t "Unpacking upstream firefox tarball...~%") + (force-output) + (invoke "tar" "xf" #+upstream-firefox-source) + (rename-file firefox-dir icecat-dir) + + (with-directory-excursion icecat-dir + (for-each mkdir-p '("l10n" "debian/config")) + (call-with-output-file "debian/control" (const #t)) + (format #t "Running makeicecat script...~%") + (force-output) + (invoke "bash" "/tmp/gnuzilla/makeicecat") + (for-each delete-file-recursively '("l10n" "debian"))) + + (format #t (string-append "Unpacking l10n/* and debian/* from" + " upstream IceCat tarball...~%")) + (force-output) + (unless (string=? icecat-dir old-icecat-dir) + (symlink icecat-dir old-icecat-dir)) + (invoke "tar" "xf" #+upstream-icecat-source + (string-append old-icecat-dir "/l10n") + (string-append old-icecat-dir "/debian")) + + (format #t (string-append "Packing new IceCat tarball...~%")) + (force-output) + (invoke "tar" "cfa" #$output + ;; avoid non-determinism in the archive + "--mtime=@0" + "--owner=root:0" + "--group=root:0" + "--sort=name" + icecat-dir) + + #t)))))))) + (define-public icecat (package (name "icecat") diff --git a/gnu/packages/patches/icecat-makeicecat.patch b/gnu/packages/patches/icecat-makeicecat.patch new file mode 100644 index 0000000000..2a11bf0b70 --- /dev/null +++ b/gnu/packages/patches/icecat-makeicecat.patch @@ -0,0 +1,154 @@ +Make some of the changes needed to the 'makeicecat' script, to allow it to run +in a snippet without network access. After this patch is applied, some +additional changes will be made using 'substitute*'. + +diff --git a/makeicecat b/makeicecat +index aa46b94..db27a86 100644 +--- a/makeicecat ++++ b/makeicecat +@@ -36,75 +36,75 @@ export DEBFULLNAME="Ruben Rodriguez" + + DATA="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"/data + +-mkdir output +-cd output ++# mkdir output ++# cd output + + ############################################################################### + # Retrieve FF source code + ############################################################################### + +-rm mozilla-esr${FFMAJOR} $SOURCEDIR -rf +- +-wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz +-wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc +-gpg --recv-keys --keyserver keyserver.ubuntu.com 24C6F355 +-gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc +- +-echo Extracting Firefox tarball +-tar -xf firefox-${FFVERSION}esr.source.tar.xz +- +-mv firefox-${FFVERSION} $SOURCEDIR ++# rm mozilla-esr${FFMAJOR} $SOURCEDIR -rf ++# ++# wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz ++# wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc ++# gpg --recv-keys --keyserver keyserver.ubuntu.com 24C6F355 ++# gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc ++# ++# echo Extracting Firefox tarball ++# tar -xf firefox-${FFVERSION}esr.source.tar.xz ++# ++# mv firefox-${FFVERSION} $SOURCEDIR + + ############################################################################### + # Retrieve /debian from Ubuntu + ############################################################################### + +-rm -rf firefox.$CODENAME +-bzr branch https://code.launchpad.net/~mozillateam/firefox/firefox.$CODENAME +-cd firefox.$CODENAME +-bzr revert -r$REVISION +-echo '3.0 (native)' > debian/source/format +- +-for PATCH in ubuntu-bookmarks.patch ubuntu-ua-string-changes.patch unity-menubar.patch ubuntu-search-defaults.patch fix-make-package-tests-without-webrtc.patch revert-upstream-search-engine-changes.patch +-do +- rm debian/patches/$PATCH +- sed "/$PATCH/d" -i debian/patches/series +-done +-sed "/test-/d" -i debian/patches/series +-cd .. +- +-mv firefox.$CODENAME/debian $SOURCEDIR +-rm -rf firefox.$CODENAME ++# rm -rf firefox.$CODENAME ++# bzr branch https://code.launchpad.net/~mozillateam/firefox/firefox.$CODENAME ++# cd firefox.$CODENAME ++# bzr revert -r$REVISION ++# echo '3.0 (native)' > debian/source/format ++# ++# for PATCH in ubuntu-bookmarks.patch ubuntu-ua-string-changes.patch unity-menubar.patch ubuntu-search-defaults.patch fix-make-package-tests-without-webrtc.patch revert-upstream-search-engine-changes.patch ++# do ++# rm debian/patches/$PATCH ++# sed "/$PATCH/d" -i debian/patches/series ++# done ++# sed "/test-/d" -i debian/patches/series ++# cd .. ++# ++# mv firefox.$CODENAME/debian $SOURCEDIR ++# rm -rf firefox.$CODENAME + + ############################################################################### + # Retrieve l10n + ############################################################################### + +-mkdir l10n +-cd l10n +-while read line;do +- line=$(echo $line |cut -d' ' -f1) +- #[ $line = "es-ES" ] || continue # To speed up testing +- [ $line = "en-US" ] && continue +- hg clone https://hg.mozilla.org/l10n-central/$line +- mkdir -p $line/browser/chrome/browser/preferences +- touch $line/browser/chrome/browser/preferences/advanced-scripts.dtd +- rm -rf $line/.hg* +-done < ../$SOURCEDIR/browser/locales/shipped-locales +-cd .. +- +-mv l10n $SOURCEDIR +- +-hg clone http://hg.mozilla.org/l10n/compare-locales/ +-cd compare-locales/ +-hg checkout RELEASE_3_3_0 +-cd .. +-rm compare-locales/.hg* compare-locales/.git* -rf +-mv compare-locales $SOURCEDIR/l10n ++# mkdir l10n ++# cd l10n ++# while read line;do ++# line=$(echo $line |cut -d' ' -f1) ++# #[ $line = "es-ES" ] || continue # To speed up testing ++# [ $line = "en-US" ] && continue ++# hg clone https://hg.mozilla.org/l10n-central/$line ++# mkdir -p $line/browser/chrome/browser/preferences ++# touch $line/browser/chrome/browser/preferences/advanced-scripts.dtd ++# rm -rf $line/.hg* ++# done < ../$SOURCEDIR/browser/locales/shipped-locales ++# cd .. ++# ++# mv l10n $SOURCEDIR ++# ++# hg clone http://hg.mozilla.org/l10n/compare-locales/ ++# cd compare-locales/ ++# hg checkout RELEASE_3_3_0 ++# cd .. ++# rm compare-locales/.hg* compare-locales/.git* -rf ++# mv compare-locales $SOURCEDIR/l10n + + ####################################################### + +-cd $SOURCEDIR ++# cd $SOURCEDIR + + #for patch in $DATA/patches/*; do + # echo Patching with file: $patch +@@ -720,7 +720,7 @@ debian/rules debian/control + touch -d "yesterday" debian/control + debian/rules debian/control + +-echo | dch -b -D stable -v "$ICECATVERSION" "Converted into IceCat (http://www.gnu.org/software/gnuzilla/)" ++# echo | dch -b -D stable -v "$ICECATVERSION" "Converted into IceCat (http://www.gnu.org/software/gnuzilla/)" + sed "1s/firefox/icecat/" -i debian/changelog + + touch configure js/src/configure +@@ -734,6 +734,6 @@ sed 's/777/755/;' -i toolkit/crashreporter/google-breakpad/Makefile.in + /bin/sed 's/chmod a+w/chmod u+w/' -i ./js/src/ctypes/libffi/Makefile.in ./toolkit/crashreporter/google-breakpad/Makefile.in ./toolkit/crashreporter/google-breakpad/src/third_party/glog/Makefile.in || true + + +-cd .. +-echo Packaging tarball +-tar cfj icecat-$ICECATVERSION.tar.bz2 $SOURCEDIR ++# cd .. ++# echo Packaging tarball ++# tar cfj icecat-$ICECATVERSION.tar.bz2 $SOURCEDIR -- cgit 1.4.1 From 11d19ca236c62ffdbb98a3a3580caf09cc37b6de Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Tue, 29 Jan 2019 14:57:29 -0500 Subject: gnu: QEMU: Fix CVE-2018-16872 and CVE-2019-6778. * gnu/packages/patches/qemu-CVE-2018-16872.patch, gnu/packages/patches/qemu-CVE-2019-6778.patch: New files. * gnu/local.mk (dist_patch_DATA): Add them. * gnu/packages/virtualization.scm (qemu)[source]: Use them. --- gnu/local.mk | 2 + gnu/packages/patches/qemu-CVE-2018-16872.patch | 88 ++++++++++++++++++++++++++ gnu/packages/patches/qemu-CVE-2019-6778.patch | 43 +++++++++++++ gnu/packages/virtualization.scm | 2 + 4 files changed, 135 insertions(+) create mode 100644 gnu/packages/patches/qemu-CVE-2018-16872.patch create mode 100644 gnu/packages/patches/qemu-CVE-2019-6778.patch (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index c4b172f90e..459ff17e06 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1186,6 +1186,8 @@ dist_patch_DATA = \ %D%/packages/patches/python-unittest2-remove-argparse.patch \ %D%/packages/patches/python-waitress-fix-tests.patch \ %D%/packages/patches/qemu-glibc-2.27.patch \ + %D%/packages/patches/qemu-CVE-2018-16872.patch \ + %D%/packages/patches/qemu-CVE-2019-6778.patch \ %D%/packages/patches/qt4-ldflags.patch \ %D%/packages/patches/qtbase-use-TZDIR.patch \ %D%/packages/patches/qtscript-disable-tests.patch \ diff --git a/gnu/packages/patches/qemu-CVE-2018-16872.patch b/gnu/packages/patches/qemu-CVE-2018-16872.patch new file mode 100644 index 0000000000..094e823ee4 --- /dev/null +++ b/gnu/packages/patches/qemu-CVE-2018-16872.patch @@ -0,0 +1,88 @@ +Fixes CVE-2018-16872: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-16872 + +Patch copied from upstream source repository: + +https://git.qemu.org/?p=qemu.git;a=commitdiff;h=bab9df35ce73d1c8e19a37e2737717ea1c984dc1 + +From bab9df35ce73d1c8e19a37e2737717ea1c984dc1 Mon Sep 17 00:00:00 2001 +From: Gerd Hoffmann +Date: Thu, 13 Dec 2018 13:25:11 +0100 +Subject: [PATCH] usb-mtp: use O_NOFOLLOW and O_CLOEXEC. + +Open files and directories with O_NOFOLLOW to avoid symlinks attacks. +While being at it also add O_CLOEXEC. + +usb-mtp only handles regular files and directories and ignores +everything else, so users should not see a difference. + +Because qemu ignores symlinks, carrying out a successful symlink attack +requires swapping an existing file or directory below rootdir for a +symlink and winning the race against the inotify notification to qemu. + +Fixes: CVE-2018-16872 +Cc: Prasad J Pandit +Cc: Bandan Das +Reported-by: Michael Hanselmann +Signed-off-by: Gerd Hoffmann +Reviewed-by: Michael Hanselmann +Message-id: 20181213122511.13853-1-kraxel@redhat.com +--- + hw/usb/dev-mtp.c | 13 +++++++++---- + 1 file changed, 9 insertions(+), 4 deletions(-) + +diff --git a/hw/usb/dev-mtp.c b/hw/usb/dev-mtp.c +index 100b7171f4..36c43b8c20 100644 +--- a/hw/usb/dev-mtp.c ++++ b/hw/usb/dev-mtp.c +@@ -653,13 +653,18 @@ static void usb_mtp_object_readdir(MTPState *s, MTPObject *o) + { + struct dirent *entry; + DIR *dir; ++ int fd; + + if (o->have_children) { + return; + } + o->have_children = true; + +- dir = opendir(o->path); ++ fd = open(o->path, O_DIRECTORY | O_CLOEXEC | O_NOFOLLOW); ++ if (fd < 0) { ++ return; ++ } ++ dir = fdopendir(fd); + if (!dir) { + return; + } +@@ -1007,7 +1012,7 @@ static MTPData *usb_mtp_get_object(MTPState *s, MTPControl *c, + + trace_usb_mtp_op_get_object(s->dev.addr, o->handle, o->path); + +- d->fd = open(o->path, O_RDONLY); ++ d->fd = open(o->path, O_RDONLY | O_CLOEXEC | O_NOFOLLOW); + if (d->fd == -1) { + usb_mtp_data_free(d); + return NULL; +@@ -1031,7 +1036,7 @@ static MTPData *usb_mtp_get_partial_object(MTPState *s, MTPControl *c, + c->argv[1], c->argv[2]); + + d = usb_mtp_data_alloc(c); +- d->fd = open(o->path, O_RDONLY); ++ d->fd = open(o->path, O_RDONLY | O_CLOEXEC | O_NOFOLLOW); + if (d->fd == -1) { + usb_mtp_data_free(d); + return NULL; +@@ -1658,7 +1663,7 @@ static void usb_mtp_write_data(MTPState *s) + 0, 0, 0, 0); + goto done; + } +- d->fd = open(path, O_CREAT | O_WRONLY, mask); ++ d->fd = open(path, O_CREAT | O_WRONLY | O_CLOEXEC | O_NOFOLLOW, mask); + if (d->fd == -1) { + usb_mtp_queue_result(s, RES_STORE_FULL, d->trans, + 0, 0, 0, 0); +-- +2.20.1 + diff --git a/gnu/packages/patches/qemu-CVE-2019-6778.patch b/gnu/packages/patches/qemu-CVE-2019-6778.patch new file mode 100644 index 0000000000..315f2922da --- /dev/null +++ b/gnu/packages/patches/qemu-CVE-2019-6778.patch @@ -0,0 +1,43 @@ +Fixes CVE-2019-6778: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6778 + +Patch copied from upstream source repository: + +https://git.qemu.org/?p=qemu.git;a=commitdiff;h=a7104eda7dab99d0cdbd3595c211864cba415905 + +From a7104eda7dab99d0cdbd3595c211864cba415905 Mon Sep 17 00:00:00 2001 +From: Prasad J Pandit +Date: Sun, 13 Jan 2019 23:29:48 +0530 +Subject: [PATCH] slirp: check data length while emulating ident function + +While emulating identification protocol, tcp_emu() does not check +available space in the 'sc_rcv->sb_data' buffer. It could lead to +heap buffer overflow issue. Add check to avoid it. + +Reported-by: Kira <864786842@qq.com> +Signed-off-by: Prasad J Pandit +Signed-off-by: Samuel Thibault +--- + slirp/tcp_subr.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/slirp/tcp_subr.c b/slirp/tcp_subr.c +index 4a9a5b5edc..23a841f26e 100644 +--- a/slirp/tcp_subr.c ++++ b/slirp/tcp_subr.c +@@ -634,6 +634,11 @@ tcp_emu(struct socket *so, struct mbuf *m) + socklen_t addrlen = sizeof(struct sockaddr_in); + struct sbuf *so_rcv = &so->so_rcv; + ++ if (m->m_len > so_rcv->sb_datalen ++ - (so_rcv->sb_wptr - so_rcv->sb_data)) { ++ return 1; ++ } ++ + memcpy(so_rcv->sb_wptr, m->m_data, m->m_len); + so_rcv->sb_wptr += m->m_len; + so_rcv->sb_rptr += m->m_len; +-- +2.20.1 + diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index d178a08413..e98e7eb09e 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -110,6 +110,8 @@ (method url-fetch) (uri (string-append "https://download.qemu.org/qemu-" version ".tar.xz")) + (patches (search-patches "qemu-CVE-2018-16872.patch" + "qemu-CVE-2019-6778.patch")) (sha256 (base32 "1z5bd5nfyjvhfi1s95labc82y4hjdjjkdabw931362ls0zghh1ba")))) -- cgit 1.4.1 From adba64662cb9db3c587e4b146ff31a1dbbc9f265 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Thu, 31 Jan 2019 14:55:22 +0100 Subject: gnu: Add python-cypari2 and python2-cypari2. * gnu/packages/sagemath.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Register new module. --- gnu/local.mk | 3 ++- gnu/packages/sagemath.scm | 60 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/sagemath.scm (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index 459ff17e06..bf2b2cb4e4 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1,6 +1,6 @@ # GNU Guix --- Functional package management for GNU # Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès -# Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Andreas Enge +# Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Andreas Enge # Copyright © 2016 Mathieu Lirzin # Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Mark H Weaver # Copyright © 2016 Chris Marusich @@ -395,6 +395,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/rush.scm \ %D%/packages/rust.scm \ %D%/packages/samba.scm \ + %D%/packages/sagemath.scm \ %D%/packages/sawfish.scm \ %D%/packages/scanner.scm \ %D%/packages/scheme.scm \ diff --git a/gnu/packages/sagemath.scm b/gnu/packages/sagemath.scm new file mode 100644 index 0000000000..dd8c062d31 --- /dev/null +++ b/gnu/packages/sagemath.scm @@ -0,0 +1,60 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2019 Andreas Enge +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages sagemath) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system python) + #:use-module (gnu packages algebra) + #:use-module (gnu packages multiprecision) + #:use-module (gnu packages python) + #:use-module (gnu packages python-xyz)) + + +(define-public python-cypari2 + (package + (name "python-cypari2") + (version "2.0.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "cypari2" version)) + (sha256 + (base32 + "0mghbmilmy34xp1d50xdx76sijqxmpkm2bcgx2v1mdji2ff7n0yc")))) + (build-system python-build-system) + (native-inputs + `(("python-cython" ,python-cython))) + (propagated-inputs + `(("python-cysignals" ,python-cysignals))) + (inputs + `(("gmp" ,gmp) + ("pari-gp", pari-gp))) + (home-page "https://cypari2.readthedocs.io/") + (synopsis + "Python interface to the number theory library libpari") + (description + "Cypari2 provides a Python interface to the number theory library +PARI/GP. It has been spun off from the SageMath mathematics software system, +but it can be used independently.") + (license license:gpl2+))) + +(define-public python2-cypari2 + (package-with-python2 python-cypari2)) + -- cgit 1.4.1 From 39855bfef12c8ab66a29cc7d096c719187c71b56 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Mon, 28 Jan 2019 20:36:21 +0100 Subject: gnu: p11-kit: Update to 0.23.15. * gnu/packages/patches/p11-kit-jks-timestamps.patch: New file. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. * gnu/packages/tls.scm (p11-kit): Update to 0.23.15. [source](patches): New field. --- gnu/local.mk | 1 + gnu/packages/patches/p11-kit-jks-timestamps.patch | 42 +++++++++++++++++++++++ gnu/packages/tls.scm | 5 +-- 3 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 gnu/packages/patches/p11-kit-jks-timestamps.patch (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index bf2b2cb4e4..7481b39007 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1104,6 +1104,7 @@ dist_patch_DATA = \ %D%/packages/patches/osip-CVE-2017-7853.patch \ %D%/packages/patches/ots-no-include-missing-file.patch \ %D%/packages/patches/owncloud-disable-updatecheck.patch \ + %D%/packages/patches/p11-kit-jks-timestamps.patch \ %D%/packages/patches/p7zip-CVE-2016-9296.patch \ %D%/packages/patches/p7zip-CVE-2017-17969.patch \ %D%/packages/patches/p7zip-remove-unused-code.patch \ diff --git a/gnu/packages/patches/p11-kit-jks-timestamps.patch b/gnu/packages/patches/p11-kit-jks-timestamps.patch new file mode 100644 index 0000000000..8cb8ed8684 --- /dev/null +++ b/gnu/packages/patches/p11-kit-jks-timestamps.patch @@ -0,0 +1,42 @@ +Fix test failures induced by setting the SOURCE_DATE_EPOCH variable. + +Taken from upstream: . + +From 2a474e1fe8f4bd8b4ed7622e5cf3b2718a202562 Mon Sep 17 00:00:00 2001 +From: Daiki Ueno +Date: Mon, 28 Jan 2019 13:03:15 +0100 +Subject: [PATCH] extract-jks: Prefer _p11_extract_jks_timestamp to + SOURCE_DATE_EPOCH + +Give _p11_extract_jks_timestamp precedence over SOURCE_DATE_EPOCH so +that the test results are not affected by the envvar settings. +--- + trust/extract-jks.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/trust/extract-jks.c b/trust/extract-jks.c +index ad8dc35..a6f855f 100644 +--- a/trust/extract-jks.c ++++ b/trust/extract-jks.c +@@ -250,7 +250,9 @@ prepare_jks_buffer (p11_enumerate *ex, + * when this was this certificate was added to the keystore, however + * we don't have that information. Java uses time in milliseconds + */ +- { ++ if (_p11_extract_jks_timestamp) ++ now = _p11_extract_jks_timestamp; ++ else { + char *source_date_epoch; + source_date_epoch = secure_getenv ("SOURCE_DATE_EPOCH"); + if (source_date_epoch) { +@@ -276,9 +278,7 @@ prepare_jks_buffer (p11_enumerate *ex, + return false; + } + now = epoch; +- } else if (_p11_extract_jks_timestamp) +- now = _p11_extract_jks_timestamp; +- else ++ } else + now = time (NULL); + } + diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index 864f55b2f8..84f71255fe 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -123,15 +123,16 @@ in intelligent transportation networks.") (define-public p11-kit (package (name "p11-kit") - (version "0.23.14") + (version "0.23.15") (source (origin (method url-fetch) (uri (string-append "https://github.com/p11-glue/p11-kit/releases/" "download/" version "/p11-kit-" version ".tar.gz")) + (patches (search-patches "p11-kit-jks-timestamps.patch")) (sha256 (base32 - "0w0dkq9388grbbn4bv2p55vy1j51f7nd9hzlc9gz4fbm4dnzmf8w")))) + "166pwj00cffv4qq4dvx0k53zka0b0r1fa0whc49007vsqyh3khgp")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) -- cgit 1.4.1