pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/devel/guile30-slib



Module Name:    pkgsrc
Committed By:   gdt
Date:           Fri Aug 14 15:15:16 UTC 2026

Modified Files:
        pkgsrc/devel/guile30-slib: Makefile.common PLIST

Log Message:
devel/guile30-slib: Rototill installation comments

Read and explain the contradictory instructions from slib and guile,
and follow guile's instructions.  Explain to future self everything
I'm likely to forget, as guided by what I forgot since I last read
guile-slib several years ago.

Slightly clean up by dropping an environment variable during catalgo
build that is not actually used.

Hoist guile's site dir to variable.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 pkgsrc/devel/guile30-slib/Makefile.common \
    pkgsrc/devel/guile30-slib/PLIST

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/devel/guile30-slib/Makefile.common
diff -u pkgsrc/devel/guile30-slib/Makefile.common:1.1 pkgsrc/devel/guile30-slib/Makefile.common:1.2
--- pkgsrc/devel/guile30-slib/Makefile.common:1.1       Fri Aug 14 00:35:04 2026
+++ pkgsrc/devel/guile30-slib/Makefile.common   Fri Aug 14 15:15:16 2026
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.common,v 1.1 2026/08/14 00:35:04 gdt Exp $
+# $NetBSD: Makefile.common,v 1.2 2026/08/14 15:15:16 gdt Exp $
 
 # This file exists to centralize maintainer documentation as much as logic.
 
@@ -25,30 +25,77 @@ COMMENT=    SLIB glue files for ${GUILE_VER
 
 DEPENDS+=      slib>=${SLIBVERSION}:../../devel/slib
 
-# Instead, we should construct the catalog at build time and copy it
-# to destdir at install time.
+# \todo Construct the catalog at build time and copy it to destdir at
+# install time.
 NO_BUILD=      yes
 WRKSRC=                ${WRKDIR}
 
-# \todo Explain guile's placement rules.
-INSTALLATION_DIRS=     guile/${GUILE_DIR}/share/guile/site/${GUILE_DIR}
-
-# See ../guile-slib for comments explaining the choice of paths and
-# how this works.
-
-# Create a symlink so guile can find slib, and build the catalog.
-# (The RM commands are superfluous in the normal case, but needed if
-# install fails and one re-runs it.)
+# There are two places where slib installation is explained: slib and guile.
+#
+#   slib:
+#     https://people.csail.mit.edu/jaffer/slib/Installation.html
+#
+#   guile (all 3 have the same content):
+#     3.0      https://doc.guix.gnu.org/guile/latest/en/html_node/SLIB-installation.html
+#     2.2      https://doc.guix.gnu.org/guile/2.2.7/en/html_node/SLIB-installation.html
+#     2.0      https://doc.guix.gnu.org/guile/2.0.14/en/html_node/SLIB-installation.html
+#
+# Note that devel/slib installs slib itself, into
+# ${PREFIX}/share/slib (plus doc and info, not related to guile).
+# This corresponds to steps 1,2 out of 5 in the slib manual.
+# slib then lists steps 3-5:
+#   - Configure the Scheme implementation(s) to locate the SLIB
+#     directory and implementation directories.
+#   - Arrange for each Scheme implementation to load its SLIB
+#     initialization file.
+#   - Build the SLIB catalog for each Scheme implementation.
+# Step 3 is handled with a symlink from guile's site dir to slib.
+# Step 4 is not necessary as (ice-9 slib) is built in to guile.
+# Step 5 is handled by building the catalog into the right location.
+
+# slib says that with modern guile, people wanting to have slib
+# available in guile should invoke guile as
+#    guile -l ${SCHEME_LIBRARY_PATH}guile.init-l ${SCHEME_LIBRARY_PATH}guile.use
+# but notes that guile has a different way.  We reject asking users to
+# invoke guile specially; they should be able to just type
+#   (use-modules (ice-9 slib))
+# in any guile invocation.
+#
+# guile says to either set SCHEME_LIBRARY_PATH in the environment, or
+# symlink slib:
+#   ln -s /usr/local/lib/slib /usr/local/share/guile/3.0/slib
+# (which of course should be ${PREFIX} instead of /usr/local).
+# 
+# SCHEME_LIBARY_PATH is used by slib.  Both slib and guile imply that
+# the value of SCHEME_LIBRARY_PATH should be the pathname where slib
+# is installed, with a trailing /, e.g. `/usr/local/lib/slib/`.  If
+# SCHEME_LIBRARY_PATH is not defined, slib's guile-2.init constructs a
+# path from where guile-2.init was found.  Thus we do nots et
+# SCHEME_LIBRARY_PATH.
+#
+# guile documents that additional scheme files that are not part of
+# guile should be installed in the site directory:
+#   guile -c "(use-modules (ice-9 pretty-print)) (pretty-print (%site-dir))"
+#   "/usr/pkg/guile/3.0/share/guile/site/3.0"
+
+SITE_DIR=              guile/${GUILE_DIR}/share/guile/site/${GUILE_DIR}
+INSTALLATION_DIRS=     ${SITE_DIR}
+
+PRINT_PLIST_AWK+=      { gsub(/^${SITE_DIR:S|/|\\/|g}/, "$${SITE_DIR}"); }
+PLIST_SUBST+=          SITE_DIR=${SITE_DIR}
+
+# Create symlink to slib from SITE_DIR, and build the catalog.
+# The RM commands are superfluous in the normal case, but needed if
+# install fails and one re-runs it.
+# The GUILE_IMPLEMENTATION_PATH setting is necessary so that slib
+# writes the catalog file in the DESTDIR.
 do-install:
-       ${RM} -f ${DESTDIR}${PREFIX}/guile/${GUILE_DIR}/share/guile/site/${GUILE_DIR}/slib
+       ${RM} -f ${DESTDIR}${PREFIX}/${SITE_DIR}/slib
        ${LN} -sf ${PREFIX}/share/slib \
-               ${DESTDIR}${PREFIX}/guile/${GUILE_DIR}/share/guile/site/${GUILE_DIR}/slib
-       ${RM} -f ${DESTDIR}${PREFIX}/guile/${GUILE_DIR}/share/guile/site/${GUILE_DIR}/slibcat
-       cd ${DESTDIR}${PREFIX}/guile/${GUILE_DIR}/share/guile/site/${GUILE_DIR}/slib && \
-               GUILE_LOAD_PATH=${PREFIX}/share \
-               GUILE_IMPLEMENTATION_PATH=${DESTDIR}${PREFIX}/guile/${GUILE_DIR}/share/guile/site/${GUILE_DIR} \
-               ${PREFIX}/guile/${GUILE_DIR}/bin/guile -q -c "(begin (use-modules (ice-9 slib)) (require 'new-catalog))"
-
-PLIST_SUBST+=  GUILE_DIR=${GUILE_DIR}
+               ${DESTDIR}${PREFIX}/${SITE_DIR}/slib
+       ${RM} -f ${DESTDIR}${PREFIX}/${SITE_DIR}/slibcat
+       cd ${DESTDIR}${PREFIX}/${SITE_DIR}/slib && \
+               GUILE_IMPLEMENTATION_PATH=${DESTDIR}${PREFIX}/${SITE_DIR} \
+               ${PREFIX}/guile/${GUILE_DIR}/bin/guile -c "(begin (use-modules (ice-9 slib)) (require 'new-catalog))"
 
 .include "../../lang/${GUILE_VERSION}/buildlink3.mk"
Index: pkgsrc/devel/guile30-slib/PLIST
diff -u pkgsrc/devel/guile30-slib/PLIST:1.1 pkgsrc/devel/guile30-slib/PLIST:1.2
--- pkgsrc/devel/guile30-slib/PLIST:1.1 Mon Mar 14 13:37:32 2022
+++ pkgsrc/devel/guile30-slib/PLIST     Fri Aug 14 15:15:16 2026
@@ -1,3 +1,3 @@
-@comment $NetBSD: PLIST,v 1.1 2022/03/14 13:37:32 wiz Exp $
-guile/${GUILE_DIR}/share/guile/site/${GUILE_DIR}/slib
-guile/${GUILE_DIR}/share/guile/site/${GUILE_DIR}/slibcat
+@comment $NetBSD: PLIST,v 1.2 2026/08/14 15:15:16 gdt Exp $
+${SITE_DIR}/slib
+${SITE_DIR}/slibcat



Home | Main Index | Thread Index | Old Index