Package Details: guile3 3.0.7-1

Git Clone URL: https://aur.archlinux.org/guile3.git (read-only, click to copy)
Package Base: guile3
Description: Portable, embeddable Scheme implementation written in C
Upstream URL: https://www.gnu.org/software/guile/
Licenses: GPL3
Submitter: rosekunkel
Maintainer: lmartinez-mirror
Last Packager: lmartinez-mirror
Votes: 2
Popularity: 0.36
First Submitted: 2020-09-16 06:10
Last Updated: 2021-07-19 06:32

Latest Comments

rosekunkel commented on 2021-05-18 23:26

@halfacanuck - Thanks! The .scm file you're referencing is not incorrectly placed - it's supposed to be there. See

It looks like the error message from ldconfig can be silenced by moving it from /usr/lib to /usr/share/gdb/auto-load/usr/lib

I don't really use this package anymore, so if you'd like to take over as the maintainer I'd appreciate it.

halfacanuck commented on 2021-05-18 02:42

I edited the PKGBUILD to update to the latest version (3.0.7) and to support arch32's "pentium4" architecture, which required a patch to skip a particular test (part of the number-theoretic division section) in numbers.test which fails on 32-bit machines. When I manually do the calculations I see the same results from guile2 and guile3, which leads me to believe the cause of the failure is the test harness itself. I also added a line to delete a .scm file which gets incorrectly placed in /usr/lib and which causes pacman to complain upon installation. (The official package does the same.)

PKGBUILD:

# Maintainer: Rose Kunkel <rose at rosekunkel dot me>
# Contributor: Ross Thomas <halfacanuck at gmail dot com>

pkgname=guile3
_pkgname=guile
pkgver=3.0.7
pkgrel=1
pkgdesc='Portable, embeddable Scheme implementation written in C'
arch=('x86_64' 'pentium4')
url='https://www.gnu.org/software/guile/'
license=('GPL3')
depends=('gmp' 'libltdl' 'ncurses' 'texinfo' 'libunistring' 'gc' 'libffi' 'readline')
source=("https://ftp.gnu.org/pub/gnu/${_pkgname}/${_pkgname}-$pkgver.tar.lz"{,.sig}
        'skip-testing-oom-conditions.patch'
        'skip-weird-number-theoretic-division-test.patch')
sha256sums=('f02166205ced31651d27bd037f947e199a442545ca73f913907c69469ddd7b54'
            'SKIP'
            '2b053f0dafc5c68cc7f186c6252348e92e4b1e0f691e1e6eca7a5101c9b9f78a'
            '049d7a61b0948cc2b6612b73e231682a98046bbfb5fe09e819b8be9f5b0fcfd9')
validpgpkeys=('4FD4D288D445934E0A14F9A5A8803732E4436885') # Andy Wingo

# Running strip can potentially mangle Guile bytecode (.go) files.
# See https://aur.archlinux.org/packages/guile3/#comment-769796
options=('!strip')

function prepare {
  # Disable a test that's known to fail. See
  # https://lists.gnu.org/archive/html/bug-guile/2021-01/msg00001.html
  #
  # Also disable tests which fail on pentium4 due (presumably) to a harness bug.
  # The tests themselves produce the same results as in guile2.
  for fn in *.patch; do
    patch -p1 -d "${_pkgname}-$pkgver" < "$fn"
  done
}

function build {
  cd "${_pkgname}-$pkgver"

  # Install guile as guile3 and info files to /usr/share/info/guile3 so we don't
  # conflict with the official guile package.
  ./configure \
    --prefix=/usr \
    --infodir=/usr/share/info/${pkgname} \
    --program-suffix=3
  make
}

function check {
  cd "${_pkgname}-$pkgver"
  make -k check
}

function package {
  cd "${_pkgname}-$pkgver"
  make DESTDIR="$pkgdir/" install

  # The official guile package deletes this (else pacman complains on install).
  rm "$pkgdir"/usr/lib/libguile-3.?.so.*-gdb.scm

  # The official guile package already provides this file.
  rm "$pkgdir"/usr/share/aclocal/guile.m4
}

Additional patch:

--- a/test-suite/tests/numbers.test 2019-05-23 09:09:45.000000000 -0500
+++ b/test-suite/tests/numbers.test 2021-05-17 15:27:48.775328293 -0500
@@ -5324,7 +5324,11 @@
              (for `((25 ,(* 3/2 big) 130.0 15/7
                         0 0.0 -0.0 +inf.0 -inf.0 +nan.0))  ;; numerators
                   (lambda (n)
-                    (test+/- n d))))))
+           ;; While Guile 3 produces the same results as Guile 2 for
+           ;; numerator 130.0 and denominator 10/7, the tests fail
+           ;; on i386--probably a bug in the test harness itself.
+           (unless (and (= n 130.0) (= d 10/7))
+                      (test+/- n d)))))))

     (with-test-prefix "divide by zero"
       (for `((0 0.0 -0.0))  ;; denominators

One enhancement that would make sense is only to patch numbers.test when the architecture is 32-bit.

rosekunkel commented on 2021-01-10 08:02

I updated to Guile 3.0.5 and removed the conflict with guile from the official repositories - the binary is now called guile3. To view the documentation use info /usr/share/info/guile3/dir; if anyone has a more seamless solution for installing multiple versions of the same info manual, let me know.

felipebalbi commented on 2021-01-09 12:45

One thing that I noticed too is that with kernel 5.10.5, make check fails:

error: interrupted by the user
allocate_stack failed: Cannot allocate memory
allocate_stack failed: Cannot allocate memory
allocate_stack failed: Cannot allocate memory
allocate_stack failed: Cannot allocate memory
allocate_stack failed: Cannot allocate memory
GC Warning: Failed to expand heap by 134348800 bytes
GC Warning: Failed to expand heap by 134217728 bytes
GC Warning: Out of Memory! Heap size: 2 MiB. Returning NULL!
error creating finalization thread: Cannot allocate memory
mmap(PROT_NONE) failed
make[5]: *** [Makefile:2653: check-TESTS] Error 1
make[4]: *** [Makefile:2780: check-am] Error 2
make[3]: *** [Makefile:2782: check] Error 2
make[2]: *** [Makefile:1882: check-recursive] Error 1
make[1]: *** [Makefile:1849: check-recursive] Error 1
make: *** [Makefile:2242: check] Error 2

Disabling make check generates a working package. However, the package still fails to install, even with --program-suffix because info pages would be overwritten:

guile3: /usr/share/aclocal/guile.m4 exists in filesystem (owned by guile)
guile3: /usr/share/info/guile.info-1.gz exists in filesystem (owned by guile)
guile3: /usr/share/info/guile.info-10.gz exists in filesystem (owned by guile)
guile3: /usr/share/info/guile.info-2.gz exists in filesystem (owned by guile)
guile3: /usr/share/info/guile.info-3.gz exists in filesystem (owned by guile)
guile3: /usr/share/info/guile.info-4.gz exists in filesystem (owned by guile)
guile3: /usr/share/info/guile.info-5.gz exists in filesystem (owned by guile)
guile3: /usr/share/info/guile.info-6.gz exists in filesystem (owned by guile)
guile3: /usr/share/info/guile.info-7.gz exists in filesystem (owned by guile)
guile3: /usr/share/info/guile.info-8.gz exists in filesystem (owned by guile)
guile3: /usr/share/info/guile.info-9.gz exists in filesystem (owned by guile)
guile3: /usr/share/info/guile.info.gz exists in filesystem (owned by guile)
guile3: /usr/share/info/r5rs.info.gz exists in filesystem (owned by guile)

felipebalbi commented on 2021-01-09 12:36

And here's a patch bumping version to 3.0.5:

From 0751947eb853adaa6f5360ac33766252d09dd1e7 Mon Sep 17 00:00:00 2001
From: Felipe Balbi <felipe@balbi.sh>
Date: Sat, 9 Jan 2021 13:02:33 +0200
Subject: [PATCH] Bump to 3.0.5

Signed-off-by: Felipe Balbi <felipe@balbi.sh>
---
 .SRCINFO | 12 ++++++------
 PKGBUILD |  8 ++++----
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/.SRCINFO b/.SRCINFO
index ea6512b5c11a..d0e190dda597 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
 pkgbase = guile3
    pkgdesc = Portable, embeddable Scheme implementation written in C
-   pkgver = 3.0.4
-   pkgrel = 2
+   pkgver = 3.0.5
+   pkgrel = 1
    url = https://www.gnu.org/software/guile/
    arch = x86_64
    license = GPL3
@@ -15,10 +15,10 @@ pkgbase = guile3
    depends = readline
    provides = guile
    conflicts = guile
-   source = https://ftp.gnu.org/pub/gnu/guile/guile-3.0.4.tar.lz
-   source = https://ftp.gnu.org/pub/gnu/guile/guile-3.0.4.tar.lz.sig
-   validpgpkeys = 3CE464558A84FDC69DB40CFB090B11993D9AEBB5
-   sha256sums = f2b0b66fd72bc24df76856e1549bf327c025b8a5d5fa3cb1696327c5941c89c4
+   source = https://ftp.gnu.org/pub/gnu/guile/guile-3.0.5.tar.lz
+   source = https://ftp.gnu.org/pub/gnu/guile/guile-3.0.5.tar.lz.sig
+   validpgpkeys = 4FD4D288D445934E0A14F9A5A8803732E4436885
+   sha256sums = a484eeffbd4d655b0c05b1382df8d40f1e561f7e71b963065762f6a6a497c675
    sha256sums = SKIP

 pkgname = guile3
diff --git a/PKGBUILD b/PKGBUILD
index 1d0c50c78686..2bb96d5c2f19 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -2,8 +2,8 @@

 pkgname=guile3
 _pkgname=guile
-pkgver=3.0.4
-pkgrel=2
+pkgver=3.0.5
+pkgrel=1
 pkgdesc='Portable, embeddable Scheme implementation written in C'
 arch=('x86_64')
 url='https://www.gnu.org/software/guile/'
@@ -12,9 +12,9 @@ depends=('gmp' 'libltdl' 'ncurses' 'texinfo' 'libunistring' 'gc' 'libffi' 'readl
 conflicts=("${_pkgname}")
 provides=("${_pkgname}")
 source=("https://ftp.gnu.org/pub/gnu/${_pkgname}/${_pkgname}-$pkgver.tar.lz"{,.sig})
-sha256sums=('f2b0b66fd72bc24df76856e1549bf327c025b8a5d5fa3cb1696327c5941c89c4'
+sha256sums=('a484eeffbd4d655b0c05b1382df8d40f1e561f7e71b963065762f6a6a497c675'
             'SKIP')
-validpgpkeys=('3CE464558A84FDC69DB40CFB090B11993D9AEBB5') # Ludovic Courtès
+validpgpkeys=('4FD4D288D445934E0A14F9A5A8803732E4436885') # Ludovic Courtès

 function build {
   cd "${_pkgname}-$pkgver"
--
2.30.0

felipebalbi commented on 2021-01-09 08:46

Here's a patch which adds --program-suffix

From c6713a07b790ea74b5f65011aa8b7e22db490d2e Mon Sep 17 00:00:00 2001
From: Felipe Balbi <felipe@balbi.sh>
Date: Sat, 9 Jan 2021 10:42:36 +0200
Subject: [PATCH] Add program-suffix

Signed-off-by: Felipe Balbi <felipe@balbi.sh>
---
 .SRCINFO | 2 +-
 PKGBUILD | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/.SRCINFO b/.SRCINFO
index 0ab8a2bc19f1..ea6512b5c11a 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
 pkgbase = guile3
    pkgdesc = Portable, embeddable Scheme implementation written in C
    pkgver = 3.0.4
-   pkgrel = 1
+   pkgrel = 2
    url = https://www.gnu.org/software/guile/
    arch = x86_64
    license = GPL3
diff --git a/PKGBUILD b/PKGBUILD
index 586f434a5383..1d0c50c78686 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -3,7 +3,7 @@
 pkgname=guile3
 _pkgname=guile
 pkgver=3.0.4
-pkgrel=1
+pkgrel=2
 pkgdesc='Portable, embeddable Scheme implementation written in C'
 arch=('x86_64')
 url='https://www.gnu.org/software/guile/'
@@ -18,7 +18,7 @@ validpgpkeys=('3CE464558A84FDC69DB40CFB090B11993D9AEBB5') # Ludovic Courtès

 function build {
   cd "${_pkgname}-$pkgver"
-  ./configure --prefix=/usr
+  ./configure --prefix=/usr --program-suffix=3.0
   make
 }

--
2.30.0

felipebalbi commented on 2021-01-09 08:12

Guile 3.0.5 has been released. Could you also bump the version of the package while adding --program-suffix option?

thanks

Nemo commented on 2021-01-02 16:14

As @erkin said, the install breaks when guile2.2 is present, is it possible to update the install ? Thanks.

erkin commented on 2020-10-10 23:09

Conflicting with guile2.2 whilst providing guile breaks make (and other programs that depend on Guile 2.2). You should add --program-suffix=3.0 to ./configure arguments to allow the user to have both.

Also you should disable the strip option in the PKGBUILD. strip(1) usually errors out and refuses to strip .go files but it can potentially mangle them, as they are ELF files. (This happened with Chez and Loko in the past.) Right now it only causes a harmless ldconfig error for libguile3.0.