Page MenuHomeFreeBSD

D40194.id122471.diff
No OneTemporary

D40194.id122471.diff

diff --git a/Mk/Uses/guile.mk b/Mk/Uses/guile.mk
new file mode 100644
--- /dev/null
+++ b/Mk/Uses/guile.mk
@@ -0,0 +1,192 @@
+# Provide support for guile
+#
+# MAINTAINER: ports@FreeBSD.org
+# Usage:
+#
+# USES+= guile[:options,...]
+#
+# Options:
+#
+# X.Y specify a Guile version, e.g. 2.2 or 3.0
+#
+# flavors define FLAVOR / FLAVORS as guileX from the allowed versions
+#
+# build add dependency to BUILD_DEPENDS instead of LIB_DEPENDS
+# run add dependency to RUN_DEPENDS instead of LIB_DEPENDS
+#
+# env define only the GUIL[DE]_* vars and add them to PLIST_SUB,
+# do not add dependencies or other global state
+#
+# alias add BINARY_ALIAS for guile tools
+#
+# noextra don't add _GUILE_EXTRA_LIB_DEPENDS
+#
+# nopkgconf don't add to PKGCONFIG_PATHS
+#
+# Variables defined for use by the port:
+#
+# GUILE_VER e.g. 2.2
+# GUILE_SFX e.g. 2 (be careful, consider the possibility of 3.1)
+# GUILE_FLAVOR e.g. guile22
+# GUILE_PORT e.g. lang/guile2
+# GUILE_CMD name of guile binary, e.g. guile-2.2
+# GUILE_*_CMD name of guile-* binary (legacy)
+# GUILD_CMD name of guild binary, e.g. guild-2.2
+# GUIL*_CMDPATH full paths of commands
+# GUILE_PKGCONFIG_DIR directory for version-specific .pc files
+# (relative to PREFIX or LOCALBASE)
+#
+.if !defined(_INCLUDE_USES_GUILE_MK)
+_INCLUDE_USES_GUILE_MK= yes
+
+# When adding a version, please keep the comment in
+# Mk/bsd.default-versions.mk in sync.
+_GUILE_VALID_VERSIONS:= 1.8 2.2 3.0
+. if defined(_GUILE_EXTRA_VER)
+_GUILE_VALID_VERSIONS+= ${_GUILE_EXTRA_VER}
+. endif
+
+_GUILE_DEFAULT_VERSION:= ${GUILE_DEFAULT}
+
+. if ! ${_GUILE_VALID_VERSIONS:M${_GUILE_DEFAULT_VERSION}}
+IGNORE= Invalid default Guile version ${GUILE_DEFAULT}
+. endif
+
+# args
+_GUILE_ARG_VERSIONS:= ${guile_ARGS:M[1-9].[0-9]}
+_GUILE_ARG_FLAVORS:=
+. if ${guile_ARGS:Mflavors}
+_GUILE_ARG_FLAVORS:=yes
+. endif
+
+#
+# Parse ver arguments
+#
+# If multiple versions are specified, we are either doing flavors (in
+# which case we build them all) or we are supposed to pick one, in
+# which case we pick the default version if it was specified, otherwise
+# the highest.
+#
+_GUILE_CHOSEN_VER:=
+_GUILE_REQUESTED_VERS:=
+
+# check args for validity first
+. for _v in ${_GUILE_ARG_VERSIONS}
+. if ! ${_GUILE_VALID_VERSIONS:M${_v}}
+IGNORE= Invalid Guile version ${_v}
+. else
+_GUILE_REQUESTED_VERS+= ${_v}
+. endif
+. endfor
+
+. if ${_GUILE_ARG_FLAVORS}
+
+# default to all versions (unlikely in practice)
+. if empty(_GUILE_REQUESTED_VERS)
+_GUILE_REQUESTED_VERS:= ${_GUILE_VALID_VERSIONS}
+. endif
+
+# Note that we organize the FLAVORS list so that the
+# first one corresponds to the default version.
+. if empty(FLAVORS)
+FLAVORS=${_GUILE_DEFAULT_VERSION:S/.//:S/^/guile/} \
+ ${_GUILE_REQUESTED_VERS:N${_GUILE_DEFAULT_VERSION}:S/.//:S/^/guile/}
+. endif
+. if empty(FLAVOR)
+FLAVOR= ${FLAVORS:[1]}
+. endif
+_GUILE_CHOSEN_VER:= ${FLAVOR:S/^guile//:C/./&./}
+
+. else # !${_GUILE_ARG_FLAVORS}
+
+# default to default version
+. if empty(_GUILE_REQUESTED_VERS)
+_GUILE_REQUESTED_VERS:= ${_GUILE_DEFAULT_VERSION}
+. endif
+
+_GUILE_CHOSEN_VER:= ${_GUILE_REQUESTED_VERS:M${_GUILE_DEFAULT_VERSION}}
+. if empty(_GUILE_CHOSEN_VER)
+_GUILE_CHOSEN_VER:= ${_GUILE_REQUESTED_VERS:O:[-1]}
+. endif
+
+. endif # ${_GUILE_ARG_FLAVORS}
+
+# _GUILE_CHOSEN_VER is now the desired version in all cases.
+#
+# The GUILE_VER / GUILE_SFX here is the existing usage, but if a
+# version 3.1 comes along, that'll all need to be revisited.
+#
+# GUILE_VER= 3.0 (for example)
+# GUILE_SFX= 3
+# GUILE_FLAVOR= guile30
+
+GUILE_VER= ${_GUILE_CHOSEN_VER}
+GUILE_SFX= ${_GUILE_CHOSEN_VER:R}
+
+GUILE_PORT= lang/guile${GUILE_SFX}
+GUILE_FLAVOR= guile${GUILE_VER:S/.//}
+
+_GUILE_CMDNAMES:= guile guile-snarf guile-config guile-tools
+. if ${GUILE_SFX} > 1
+_GUILE_CMDNAMES+= guild
+. endif
+
+. for _c in ${_GUILE_CMDNAMES}
+${_c:S/-/_/:tu}_CMD:= ${_c}-${GUILE_VER}
+${_c:S/-/_/:tu}_CMDPATH:= ${LOCALBASE}/bin/${_c}-${GUILE_VER}
+. endfor
+
+PLIST_SUB+= GUILE_VER=${GUILE_VER} GUILE_SFX=${GUILE_SFX}
+
+# This may reduce the need for BINARY_ALIAS
+GUILE_ENV= ${_GUILE_CMDNAMES:tu:S/-/_/:@t@${t}=${${t}_CMDPATH}@}
+
+# XXX XXX XXX
+#
+# This all assumes that the underlying Guile >= 2 is built with the
+# threading option, which is on by default.
+
+_GUILE_1.8_EXTRA_LIB_DEPENDS= \
+ libgmp.so:math/gmp \
+ libltdl.so:devel/libltdl
+_GUILE_2.2_EXTRA_LIB_DEPENDS= \
+ libgc-threaded.so:devel/boehm-gc-threaded
+_GUILE_3.0_EXTRA_LIB_DEPENDS= \
+ libgc-threaded.so:devel/boehm-gc-threaded
+
+. if ${guile_ARGS:Mnoextra}
+_GUILE_EXTRA_LIB_DEPENDS?=
+. else
+_GUILE_EXTRA_LIB_DEPENDS= ${_GUILE_${GUILE_VER}_EXTRA_LIB_DEPENDS}
+. endif
+
+. if !${guile_ARGS:Menv}
+. if ${guile_ARGS:Mbuild}
+BUILD_DEPENDS+= ${GUILE_CMD}:${GUILE_PORT}
+. endif
+. if ${guile_ARGS:Mrun}
+RUN_DEPENDS+= ${GUILE_CMD}:${GUILE_PORT}
+. endif
+. if !${guile_ARGS:Mbuild} && !${guile_ARGS:Mrun}
+. if ${GUILE_SFX} > 1
+LIB_DEPENDS+= libguile-${GUILE_VER}.so:${GUILE_PORT} ${_GUILE_EXTRA_LIB_DEPENDS}
+. else
+LIB_DEPENDS+= libguile.so:${GUILE_PORT} ${_GUILE_EXTRA_LIB_DEPENDS}
+. endif
+. endif
+. endif
+
+. if ${guile_ARGS:Malias}
+BINARY_ALIAS+= ${_GUILE_CMDNAMES:@t@${t}=${${t:tu:S/-/_/}_CMD}@}
+. else
+CONFIGURE_ENV+= ${GUILE_ENV}
+MAKE_ENV+= ${GUILE_ENV}
+. endif
+
+. if !${guile_ARGS:Mnopkgconf}
+GUILE_PKGCONFIG_DIR:= libdata/pkgconfig/guile/${GUILE_VER}
+PKGCONFIG_PATHS+= ${LOCALBASE}/${GUILE_PKGCONFIG_DIR}
+PLIST_SUB+= GUILE_PKGCONFIG_DIR=${GUILE_PKGCONFIG_DIR}
+. endif
+
+.endif
diff --git a/Mk/Uses/pkgconfig.mk b/Mk/Uses/pkgconfig.mk
--- a/Mk/Uses/pkgconfig.mk
+++ b/Mk/Uses/pkgconfig.mk
@@ -28,4 +28,20 @@
IGNORE= USES=pkgconfig - invalid args: [${pkgconfig_ARGS}] specified
. endif
+_USES_POST+= pkgconfig
+.endif
+
+.if defined(_POSTMKINCLUDED) && !defined(_INCLUDE_USES_PKGCONFIG_POST_MK)
+_INCLUDE_USES_PKGCONFIG_POST_MK=yes
+
+# Provide a cooperative mechanism for managing PKG_CONFIG_PATH.
+. if defined(PKGCONFIG_PATHS)
+. if !${CONFIGURE_ENV:MPKG_CONFIG_PATH=*} && !${MAKE_ENV:MPKG_CONFIG_PATH=*}
+CONFIGURE_ENV+= PKG_CONFIG_PATH=${PKGCONFIG_PATHS:ts:}
+MAKE_ENV+= PKG_CONFIG_PATH=${PKGCONFIG_PATHS:ts:}
+. else
+DEV_WARNING+= "PKGCONFIG_PATHS was ignored due to conflict with CONFIGURE_ENV or MAKE_ENV"
+. endif
+. endif
+
.endif
diff --git a/Mk/bsd.default-versions.mk b/Mk/bsd.default-versions.mk
--- a/Mk/bsd.default-versions.mk
+++ b/Mk/bsd.default-versions.mk
@@ -18,7 +18,7 @@
LOCALBASE?= /usr/local
. for lang in APACHE BDB COROSYNC EMACS FIREBIRD FORTRAN FPC GCC \
- GHOSTSCRIPT GL GO IMAGEMAGICK JAVA LAZARUS LIBRSVG2 LINUX LLVM \
+ GHOSTSCRIPT GL GO GUILE IMAGEMAGICK JAVA LAZARUS LIBRSVG2 LINUX LLVM \
LUA LUAJIT MONO MYSQL NINJA NODEJS OPENLDAP PERL5 PGSQL PHP PYTHON \
PYTHON2 PYTHON3 RUBY RUST SAMBA SSL TCLTK VARNISH
. if defined(${lang}_DEFAULT)
@@ -59,6 +59,8 @@
GL_DEFAULT?= mesa-libs
# Possible values: 1.18, 1.19, 1.20, 1.21-devel
GO_DEFAULT?= 1.20
+# Possible values: 1.8, 2.2, 3.0
+GUILE_DEFAULT?= 2.2
# Possible versions: 6, 7
# Possible flavors: x11, nox11
# (defaults to x11 when not specified)
diff --git a/audio/denemo/Makefile b/audio/denemo/Makefile
--- a/audio/denemo/Makefile
+++ b/audio/denemo/Makefile
@@ -1,6 +1,6 @@
PORTNAME= denemo
PORTVERSION= 2.0.6
-PORTREVISION= 17
+PORTREVISION= 18
CATEGORIES= audio
MASTER_SITES= GNU
@@ -19,7 +19,10 @@
libsndfile.so:audio/libsndfile \
libportaudio.so:audio/portaudio \
librubberband.so:audio/rubberband \
- libguile.so:lang/guile1 \
+ libharfbuzz.so:print/harfbuzz \
+ libfontconfig.so:x11-fonts/fontconfig \
+ libfreetype.so:print/freetype2 \
+ libsamplerate.so:audio/libsamplerate \
libfftw3.so:math/fftw3
RUN_DEPENDS= xdg-open:devel/xdg-utils
@@ -27,8 +30,8 @@
-s '!\(/Clarinet in B\).*\(\.denemo\)$$!\1b\2!p' -xf
USES= bison:alias compiler:c++11-lang desktop-file-utils gettext gmake \
- gnome pkgconfig
-USE_GNOME= intltool librsvg2 libxml2
+ gnome guile:1.8 pkgconfig
+USE_GNOME= cairo intltool librsvg2 libxml2
GNU_CONFIGURE= yes
CONFIGURE_ARGS= --enable-jack \
--disable-alsa \
diff --git a/audio/zplugins-lv2/Makefile b/audio/zplugins-lv2/Makefile
--- a/audio/zplugins-lv2/Makefile
+++ b/audio/zplugins-lv2/Makefile
@@ -15,12 +15,11 @@
BUILD_DEPENDS= lv2>0:audio/lv2 \
bash:shells/bash \
gmake:devel/gmake \
- guile2>0:lang/guile2 \
${LOCALBASE}/lib/libztoolkit.a:x11-toolkits/ztoolkit
LIB_DEPENDS= liblo.so:audio/liblo \
libsndfile.so:audio/libsndfile
-USES= gnome meson pkgconfig xorg
+USES= gnome guile:2.2,build,alias meson pkgconfig xorg
USE_GNOME= cairo glib20 librsvg2
USE_XORG= x11
diff --git a/audio/zrythm/Makefile b/audio/zrythm/Makefile
--- a/audio/zrythm/Makefile
+++ b/audio/zrythm/Makefile
@@ -23,7 +23,6 @@
libcurl.so:ftp/curl \
libfftw3_threads.so:math/fftw3 \
libfftw3f_threads.so:math/fftw3-float \
- libguile-2.2.so:lang/guile2 \
libjack.so:audio/jack \
libjson-glib-1.0.so:devel/json-glib \
liblilv-0.so:audio/lilv \
@@ -48,7 +47,8 @@
RUN_DEPENDS= gsettings-desktop-schemas>=0:devel/gsettings-desktop-schemas \
kf5-breeze-icons>0:x11-themes/kf5-breeze-icons
-USES= compiler:c11 desktop-file-utils gettext-tools gettext-runtime gnome libtool localbase:ldflags \
+USES= compiler:c11 desktop-file-utils gettext-tools gettext-runtime \
+ guile:2.2,alias gnome libtool localbase:ldflags \
meson pkgconfig python:3.5+,build shared-mime-info shebangfix xorg
USE_GITHUB= yes
USE_GNOME= atk cairo gdkpixbuf2 glib20 gtk30 gtksourceview3 libxml2 pango
diff --git a/cad/geda/Makefile b/cad/geda/Makefile
--- a/cad/geda/Makefile
+++ b/cad/geda/Makefile
@@ -12,12 +12,12 @@
LICENSE= GPLv2+
-LIB_DEPENDS= libstroke.so:devel/libstroke \
- libguile.so:lang/guile1
-RUN_DEPENDS= gawk:lang/gawk\
+LIB_DEPENDS= libstroke.so:devel/libstroke
+RUN_DEPENDS= gawk:lang/gawk
-USES= desktop-file-utils gettext gmake gnome libtool pathfix perl5 \
- pkgconfig python:run shared-mime-info shebangfix
+USES= desktop-file-utils gettext gmake gnome guile:1.8 libtool \
+ pathfix perl5 pkgconfig python:run shared-mime-info \
+ shebangfix
SHEBANG_FILES= examples/lightning_detector/bom libgeda/docs/*.dox \
utils/gxyrs/*.pl utils/scripts/* \
utils/docs/*.dox gattrib/docs/*.dox \
diff --git a/cad/lepton-eda/Makefile b/cad/lepton-eda/Makefile
--- a/cad/lepton-eda/Makefile
+++ b/cad/lepton-eda/Makefile
@@ -15,12 +15,10 @@
libfontconfig.so:x11-fonts/fontconfig \
libfreetype.so:print/freetype2 \
libfribidi.so:converters/fribidi \
- libgc-threaded.so:devel/boehm-gc-threaded \
libGLdispatch.so:graphics/libglvnd \
libgmp.so:math/gmp \
libgraphite2.so:graphics/graphite2 \
libgtkextra-x11-3.0.so:x11-toolkits/gtkextra \
- libguile-2.2.so:lang/guile2 \
libharfbuzz.so:print/harfbuzz \
libltdl.so:devel/libltdl \
libpcre.so:devel/pcre \
@@ -29,8 +27,8 @@
libunistring.so:devel/libunistring
USES= desktop-file-utils gettext-tools gnome groff:build \
- iconv:wchar_t libtool localbase makeinfo pathfix perl5 \
- pkgconfig shared-mime-info shebangfix xorg
+ guile:2.2 iconv:wchar_t libtool localbase makeinfo pathfix \
+ perl5 pkgconfig shared-mime-info shebangfix xorg
USE_XORG= pixman x11 xau xcb xcomposite xcursor xdamage xdmcp xext xfixes \
xi xinerama xrandr xrender
USE_GNOME= cairo gdkpixbuf2 gtk20
diff --git a/devel/autogen/Makefile b/devel/autogen/Makefile
--- a/devel/autogen/Makefile
+++ b/devel/autogen/Makefile
@@ -13,10 +13,10 @@
BUILD_DEPENDS= ${RUN_DEPENDS} \
gmktemp:sysutils/coreutils
-LIB_DEPENDS= libguile-2.2.so:lang/guile2
RUN_DEPENDS= bash:shells/bash
-USES= gmake gnome libtool pathfix perl5 pkgconfig shebangfix tar:xz
+USES= gmake gnome guile:2.2 libtool pathfix perl5 pkgconfig \
+ shebangfix tar:xz
USE_GNOME= libxml2
USE_PERL5= build
diff --git a/devel/g-wrap/Makefile b/devel/g-wrap/Makefile
--- a/devel/g-wrap/Makefile
+++ b/devel/g-wrap/Makefile
@@ -1,6 +1,6 @@
PORTNAME= g-wrap
DISTVERSION= 1.9.15
-PORTREVISION= 2
+PORTREVISION= 5
CATEGORIES= devel
MASTER_SITES= SAVANNAH
@@ -10,22 +10,24 @@
LICENSE= LGPL21+
-LIB_DEPENDS= libffi.so:devel/libffi \
- libguile-2.2.so:lang/guile2 \
- libgc-threaded.so:devel/boehm-gc-threaded
-BUILD_DEPENDS= guile2>=2.2:lang/guile2
+LIB_DEPENDS+= libffi.so:devel/libffi
-USES= gmake gnome libtool pkgconfig
+USES= gmake gnome guile:2.2 libtool pkgconfig
USE_GNOME= glib20
USE_LDCONFIG= yes
GNU_CONFIGURE= yes
CONFIGURE_ARGS+=--disable-Werror
+CONFIGURE_ENV+= GUILE_EFFECTIVE_VERSION=${GUILE_VER}
-INFO= g-wrap
-
+MAKE_JOBS_UNSAFE=yes
INSTALL_TARGET= install-strip
-MAKE_JOBS_UNSAFE=yes
+INFO= g-wrap
+
+# DO NOT try and add rules here to strip .go files, no matter how loudly
+# testport / stage-qa shouts at you about it, because .go files (which are
+# compiled bytecode) are not intended to be stripped and doing so causes
+# breakage at run time.
.include <bsd.port.mk>
diff --git a/devel/gdb/Makefile b/devel/gdb/Makefile
--- a/devel/gdb/Makefile
+++ b/devel/gdb/Makefile
@@ -1,6 +1,6 @@
PORTNAME= gdb
DISTVERSION= 13.1
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= devel
MASTER_SITES= GNU
@@ -68,7 +68,7 @@
BUNDLED_READLINE_CONFIGURE_OFF= --with-system-readline
GUILE_CONFIGURE_WITH= guile
-GUILE_LIB_DEPENDS= libguile-2.2.so:lang/guile2
+GUILE_USES= guile:2.2
NLS_USES= gettext-runtime
PORT_READLINE_USES= readline
PORT_ICONV_USES= iconv:wchar_t
@@ -176,6 +176,11 @@
${PYTHON_CMD} -m compileall .)
.endif
+# DO NOT try and add rules here to strip .go files, no matter how loudly
+# testport / stage-qa shouts at you about it, because .go files (which are
+# compiled bytecode) are not intended to be stripped and doing so causes
+# breakage at run time.
+
do-install-GUILE-on:
(cd ${INSTALL_WRKSRC}/gdb ; \
${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} install-guile )
diff --git a/devel/guile-lib/Makefile b/devel/guile-lib/Makefile
--- a/devel/guile-lib/Makefile
+++ b/devel/guile-lib/Makefile
@@ -1,8 +1,9 @@
PORTNAME= guile-lib
PORTVERSION= 0.2.6.1
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= devel scheme
MASTER_SITES= SAVANNAH
+PKGNAMESUFFIX= -${FLAVOR}
MAINTAINER= ports@FreeBSD.org
COMMENT= Repository of useful code written in Guile Scheme
@@ -11,13 +12,26 @@
LICENSE= LGPL3 GPLv3
LICENSE_COMB= multi
-BUILD_DEPENDS= guile2>0:lang/guile2
-RUN_DEPENDS= guile2>0:lang/guile2
+USES= gmake guile:2.2,3.0,flavors,alias pkgconfig
+GNU_CONFIGURE= yes
+CONFIGURE_ARGS+=--with-guile-site
+CONFIGURE_ENV+= GUILE_EFFECTIVE_VERSION=${GUILE_VER}
TEST_TARGET= check
-USES= gmake pkgconfig
-GNU_CONFIGURE= yes
-INFO= guile-library
+INFO= guile-library
+INFO_PATH= share/info/guile${GUILE_SFX}
+
+PLIST_SUB+= SCMDIR=share/guile/site/${GUILE_VER}
+
+# DO NOT try and add rules here to strip .go files, no matter how loudly
+# testport / stage-qa shouts at you about it, because .go files (which are
+# compiled bytecode) are not intended to be stripped and doing so causes
+# breakage at run time.
+
+post-install:
+ ${MKDIR} ${STAGEDIR}${PREFIX}/${GUILE_PKGCONFIG_DIR}
+ ${MV} ${STAGEDIR}${PREFIX}/libdata/pkgconfig/*.pc \
+ ${STAGEDIR}${PREFIX}/${GUILE_PKGCONFIG_DIR}/
.include <bsd.port.mk>
diff --git a/devel/guile-lib/files/patch-configure b/devel/guile-lib/files/patch-configure
new file mode 100644
--- /dev/null
+++ b/devel/guile-lib/files/patch-configure
@@ -0,0 +1,11 @@
+--- configure.orig 2023-05-20 13:27:01 UTC
++++ configure
+@@ -4950,7 +4950,7 @@ fi
+
+
+ if test "x$guile_site" = "xyes"; then
+- SITEDIR="$GUILE_GLOBAL_SITE";
++ SITEDIR="$GUILE_SITE";
+ SITECCACHEDIR="$GUILE_SITE_CCACHE";
+ else
+ SITEDIR="$datadir/guile-lib";
diff --git a/devel/guile-lib/pkg-plist b/devel/guile-lib/pkg-plist
--- a/devel/guile-lib/pkg-plist
+++ b/devel/guile-lib/pkg-plist
@@ -1,61 +1,61 @@
-lib/guile-lib/guile/2.2/site-ccache/apicheck.go
-lib/guile-lib/guile/2.2/site-ccache/compat/guile-2.go
-lib/guile-lib/guile/2.2/site-ccache/config/load.go
-lib/guile-lib/guile/2.2/site-ccache/container/async-queue.go
-lib/guile-lib/guile/2.2/site-ccache/container/delay-tree.go
-lib/guile-lib/guile/2.2/site-ccache/container/nodal-tree.go
-lib/guile-lib/guile/2.2/site-ccache/debugging/assert.go
-lib/guile-lib/guile/2.2/site-ccache/debugging/time.go
-lib/guile-lib/guile/2.2/site-ccache/graph/topological-sort.go
-lib/guile-lib/guile/2.2/site-ccache/htmlprag.go
-lib/guile-lib/guile/2.2/site-ccache/io/string.go
-lib/guile-lib/guile/2.2/site-ccache/logging/logger.go
-lib/guile-lib/guile/2.2/site-ccache/logging/port-log.go
-lib/guile-lib/guile/2.2/site-ccache/logging/rotating-log.go
-lib/guile-lib/guile/2.2/site-ccache/match-bind.go
-lib/guile-lib/guile/2.2/site-ccache/math/minima.go
-lib/guile-lib/guile/2.2/site-ccache/math/primes.go
-lib/guile-lib/guile/2.2/site-ccache/md5.go
-lib/guile-lib/guile/2.2/site-ccache/os/process.go
-lib/guile-lib/guile/2.2/site-ccache/scheme/documentation.go
-lib/guile-lib/guile/2.2/site-ccache/scheme/kwargs.go
-lib/guile-lib/guile/2.2/site-ccache/search/basic.go
-lib/guile-lib/guile/2.2/site-ccache/string/completion.go
-lib/guile-lib/guile/2.2/site-ccache/string/soundex.go
-lib/guile-lib/guile/2.2/site-ccache/string/transform.go
-lib/guile-lib/guile/2.2/site-ccache/string/wrap.go
-lib/guile-lib/guile/2.2/site-ccache/term/ansi-color.go
-lib/guile-lib/guile/2.2/site-ccache/texinfo/nodal-tree.go
-lib/guile-lib/guile/2.2/site-ccache/text/parse-lalr.go
-lib/guile-lib/guile/2.2/site-ccache/unit-test.go
-libdata/pkgconfig/guile-lib-1.0.pc
-%%DATADIR%%/apicheck.scm
-%%DATADIR%%/compat/guile-2.scm
-%%DATADIR%%/config/load.scm
-%%DATADIR%%/container/async-queue.scm
-%%DATADIR%%/container/delay-tree.scm
-%%DATADIR%%/container/nodal-tree.scm
-%%DATADIR%%/debugging/assert.scm
-%%DATADIR%%/debugging/time.scm
-%%DATADIR%%/graph/topological-sort.scm
-%%DATADIR%%/htmlprag.scm
-%%DATADIR%%/io/string.scm
-%%DATADIR%%/logging/logger.scm
-%%DATADIR%%/logging/port-log.scm
-%%DATADIR%%/logging/rotating-log.scm
-%%DATADIR%%/match-bind.scm
-%%DATADIR%%/math/minima.scm
-%%DATADIR%%/math/primes.scm
-%%DATADIR%%/md5.scm
-%%DATADIR%%/os/process.scm
-%%DATADIR%%/scheme/documentation.scm
-%%DATADIR%%/scheme/kwargs.scm
-%%DATADIR%%/search/basic.scm
-%%DATADIR%%/string/completion.scm
-%%DATADIR%%/string/soundex.scm
-%%DATADIR%%/string/transform.scm
-%%DATADIR%%/string/wrap.scm
-%%DATADIR%%/term/ansi-color.scm
-%%DATADIR%%/texinfo/nodal-tree.scm
-%%DATADIR%%/text/parse-lalr.scm
-%%DATADIR%%/unit-test.scm
+lib/guile/%%GUILE_VER%%/site-ccache/apicheck.go
+lib/guile/%%GUILE_VER%%/site-ccache/compat/guile-2.go
+lib/guile/%%GUILE_VER%%/site-ccache/config/load.go
+lib/guile/%%GUILE_VER%%/site-ccache/container/async-queue.go
+lib/guile/%%GUILE_VER%%/site-ccache/container/delay-tree.go
+lib/guile/%%GUILE_VER%%/site-ccache/container/nodal-tree.go
+lib/guile/%%GUILE_VER%%/site-ccache/debugging/assert.go
+lib/guile/%%GUILE_VER%%/site-ccache/debugging/time.go
+lib/guile/%%GUILE_VER%%/site-ccache/graph/topological-sort.go
+lib/guile/%%GUILE_VER%%/site-ccache/htmlprag.go
+lib/guile/%%GUILE_VER%%/site-ccache/io/string.go
+lib/guile/%%GUILE_VER%%/site-ccache/logging/logger.go
+lib/guile/%%GUILE_VER%%/site-ccache/logging/port-log.go
+lib/guile/%%GUILE_VER%%/site-ccache/logging/rotating-log.go
+lib/guile/%%GUILE_VER%%/site-ccache/match-bind.go
+lib/guile/%%GUILE_VER%%/site-ccache/math/minima.go
+lib/guile/%%GUILE_VER%%/site-ccache/math/primes.go
+lib/guile/%%GUILE_VER%%/site-ccache/md5.go
+lib/guile/%%GUILE_VER%%/site-ccache/os/process.go
+lib/guile/%%GUILE_VER%%/site-ccache/scheme/documentation.go
+lib/guile/%%GUILE_VER%%/site-ccache/scheme/kwargs.go
+lib/guile/%%GUILE_VER%%/site-ccache/search/basic.go
+lib/guile/%%GUILE_VER%%/site-ccache/string/completion.go
+lib/guile/%%GUILE_VER%%/site-ccache/string/soundex.go
+lib/guile/%%GUILE_VER%%/site-ccache/string/transform.go
+lib/guile/%%GUILE_VER%%/site-ccache/string/wrap.go
+lib/guile/%%GUILE_VER%%/site-ccache/term/ansi-color.go
+lib/guile/%%GUILE_VER%%/site-ccache/texinfo/nodal-tree.go
+lib/guile/%%GUILE_VER%%/site-ccache/text/parse-lalr.go
+lib/guile/%%GUILE_VER%%/site-ccache/unit-test.go
+%%GUILE_PKGCONFIG_DIR%%/guile-lib-1.0.pc
+%%SCMDIR%%/apicheck.scm
+%%SCMDIR%%/compat/guile-2.scm
+%%SCMDIR%%/config/load.scm
+%%SCMDIR%%/container/async-queue.scm
+%%SCMDIR%%/container/delay-tree.scm
+%%SCMDIR%%/container/nodal-tree.scm
+%%SCMDIR%%/debugging/assert.scm
+%%SCMDIR%%/debugging/time.scm
+%%SCMDIR%%/graph/topological-sort.scm
+%%SCMDIR%%/htmlprag.scm
+%%SCMDIR%%/io/string.scm
+%%SCMDIR%%/logging/logger.scm
+%%SCMDIR%%/logging/port-log.scm
+%%SCMDIR%%/logging/rotating-log.scm
+%%SCMDIR%%/match-bind.scm
+%%SCMDIR%%/math/minima.scm
+%%SCMDIR%%/math/primes.scm
+%%SCMDIR%%/md5.scm
+%%SCMDIR%%/os/process.scm
+%%SCMDIR%%/scheme/documentation.scm
+%%SCMDIR%%/scheme/kwargs.scm
+%%SCMDIR%%/search/basic.scm
+%%SCMDIR%%/string/completion.scm
+%%SCMDIR%%/string/soundex.scm
+%%SCMDIR%%/string/transform.scm
+%%SCMDIR%%/string/wrap.scm
+%%SCMDIR%%/term/ansi-color.scm
+%%SCMDIR%%/texinfo/nodal-tree.scm
+%%SCMDIR%%/text/parse-lalr.scm
+%%SCMDIR%%/unit-test.scm
diff --git a/devel/libmatheval/Makefile b/devel/libmatheval/Makefile
--- a/devel/libmatheval/Makefile
+++ b/devel/libmatheval/Makefile
@@ -12,11 +12,12 @@
LICENSE_FILE= ${WRKSRC}/COPYING
BUILD_DEPENDS= flex>=2.5.39_1:textproc/flex
-LIB_DEPENDS= libguile.so:lang/guile1
-USES= libtool localbase makeinfo pathfix
+USES= guile:1.8 libtool localbase makeinfo \
+ pathfix
GNU_CONFIGURE= yes
-CONFIGURE_ENV= LEXLIB=-lfl MAKEINFO="${MAKEINFO} --no-split"
+CONFIGURE_ENV= LEXLIB=-lfl MAKEINFO="${MAKEINFO} --no-split" \
+ ac_cv_type_scm_t_bits=yes
USE_LDCONFIG= yes
INSTALL_TARGET= install-strip
diff --git a/devel/libruin/Makefile b/devel/libruin/Makefile
--- a/devel/libruin/Makefile
+++ b/devel/libruin/Makefile
@@ -14,14 +14,12 @@
NOT_FOR_ARCHS= mips
NOT_FOR_ARCHS_REASON= glib needs GCC (not available for mips)
-BUILD_DEPENDS= guile-lib>0:devel/guile-lib
-LIB_DEPENDS= libguile-2.2.so:lang/guile2 \
- libgc-threaded.so:devel/boehm-gc-threaded
-RUN_DEPENDS= guile-lib>0:devel/guile-lib
+BUILD_DEPENDS= guile-lib-${GUILE_FLAVOR}>0:devel/guile-lib@${GUILE_FLAVOR}
+RUN_DEPENDS= guile-lib-${GUILE_FLAVOR}>0:devel/guile-lib@${GUILE_FLAVOR}
GNU_CONFIGURE= yes
INSTALL_TARGET= install-strip
-USES= gnome libtool ncurses pkgconfig
+USES= gnome guile:2.2,alias libtool ncurses pkgconfig
USE_GNOME= glib20
USE_LDCONFIG= yes
diff --git a/editors/texmacs/Makefile b/editors/texmacs/Makefile
--- a/editors/texmacs/Makefile
+++ b/editors/texmacs/Makefile
@@ -15,16 +15,14 @@
BROKEN_FreeBSD_13= assigning to 'bool' from incompatible type 'nullptr_t'
BROKEN_FreeBSD_14= assigning to 'bool' from incompatible type 'nullptr_t'
-LIB_DEPENDS= libltdl.so:devel/libltdl \
- libguile.so:lang/guile1 \
- libgmp.so:math/gmp
RUN_DEPENDS= fig2dev:print/transfig
BROKEN_armv6= fails to compile: call to min is ambiguous
BROKEN_armv7= fails to compile: call to min is ambiguous
-USES= cpe desktop-file-utils gmake iconv localbase pkgconfig python \
- shared-mime-info shebangfix tex xorg
+USES= cpe desktop-file-utils gmake guile:1.8,alias iconv \
+ localbase pkgconfig python shared-mime-info shebangfix \
+ tex xorg
USE_TEX= tex:run dvipsk:run
USE_XORG= xext
GNU_CONFIGURE= yes
diff --git a/finance/gnucash/Makefile b/finance/gnucash/Makefile
--- a/finance/gnucash/Makefile
+++ b/finance/gnucash/Makefile
@@ -18,8 +18,6 @@
libfreetype.so:print/freetype2 \
libsecret-1.so:security/libsecret \
libsoup-2.4.so:devel/libsoup \
- libguile-2.2.so:lang/guile2 \
- libgc-threaded.so:devel/boehm-gc-threaded \
libboost_date_time.so:devel/boost-libs \
libicudata.so:devel/icu\
libharfbuzz.so:print/harfbuzz
@@ -29,8 +27,8 @@
p5-LWP-Protocol-https>=0:www/p5-LWP-Protocol-https
USES= cmake:insource compiler:c++11-lib cpe desktop-file-utils \
- gettext-tools gnome libtool localbase perl5 pkgconfig \
- shebangfix tar:bzip2 xorg
+ gettext-tools gnome guile:2.2 libtool localbase perl5 \
+ pkgconfig shebangfix tar:bzip2 xorg
USE_XORG= x11
USE_CXXSTD= c++11
USE_GNOME= cairo gdkpixbuf2 gtk30 intltool libxml2 libxslt
diff --git a/games/aisleriot/Makefile b/games/aisleriot/Makefile
--- a/games/aisleriot/Makefile
+++ b/games/aisleriot/Makefile
@@ -1,6 +1,6 @@
PORTNAME= aisleriot
DISTVERSION= 3.22.25
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= games gnome
DIST_SUBDIR= gnome
@@ -12,16 +12,14 @@
BUILD_DEPENDS= itstool:textproc/itstool \
bash:shells/bash
-LIB_DEPENDS= libguile-2.2.so:lang/guile2 \
- libcanberra.so:audio/libcanberra \
- libcanberra-gtk3.so:audio/libcanberra-gtk3 \
- libgc-threaded.so:devel/boehm-gc-threaded
+LIB_DEPENDS= libcanberra.so:audio/libcanberra \
+ libcanberra-gtk3.so:audio/libcanberra-gtk3
CONFLICTS_INSTALL= sol
PORTSCOUT= limitw:1,even
-USES= desktop-file-utils gettext meson gnome pkgconfig \
- python:build,3.6+ shebangfix xorg
+USES= desktop-file-utils gettext meson gnome guile:2.2 \
+ pkgconfig python:build,3.6+ shebangfix xorg
USE_GITLAB= yes
USE_GNOME= cairo gtk30 intlhack librsvg2 libxml2:build
USE_XORG= x11
diff --git a/games/fmars/Makefile b/games/fmars/Makefile
--- a/games/fmars/Makefile
+++ b/games/fmars/Makefile
@@ -10,9 +10,7 @@
LICENSE= GPLv2
-BUILD_DEPENDS= guile:lang/guile1
-
-USES= gmake tar:bzip2
+USES= gmake guile:1.8,build,alias tar:bzip2
ALL_TARGET= x${PORTNAME}
OPTIONS_DEFINE= DOCS OPTIMIZED_CFLAGS
diff --git a/games/gnubik/Makefile b/games/gnubik/Makefile
--- a/games/gnubik/Makefile
+++ b/games/gnubik/Makefile
@@ -1,6 +1,6 @@
PORTNAME= gnubik
PORTVERSION= 2.4.3
-PORTREVISION= 6
+PORTREVISION= 7
CATEGORIES= games
MASTER_SITES= GNU
@@ -11,11 +11,11 @@
LICENSE= GPLv3+
LICENSE_FILE= ${WRKSRC}/COPYING
-LIB_DEPENDS= libguile-2.2.so:lang/guile2 \
- libgtkglext-x11-1.0.so:x11-toolkits/gtkglext
+LIB_DEPENDS= libgtkglext-x11-1.0.so:x11-toolkits/gtkglext
GNU_CONFIGURE= yes
-USES= compiler:c++11-lang gettext gl gmake gnome localbase pkgconfig
+USES= compiler:c++11-lang gettext gl gmake gnome guile:2.2 \
+ localbase pkgconfig
USE_GNOME= gtk20
USE_GL= gl glu
diff --git a/games/gnurobots/Makefile b/games/gnurobots/Makefile
--- a/games/gnurobots/Makefile
+++ b/games/gnurobots/Makefile
@@ -1,6 +1,6 @@
PORTNAME= gnurobots
PORTVERSION= 1.2.0
-PORTREVISION= 16
+PORTREVISION= 17
CATEGORIES= games
MASTER_SITES= GNU
@@ -11,9 +11,7 @@
LICENSE= GPLv3+
LICENSE_FILE= ${WRKSRC}/COPYING
-LIB_DEPENDS= libguile.so:lang/guile1
-
-USES= autoreconf gnome localbase:ldflags pkgconfig readline
+USES= gnome guile:1.8 localbase:ldflags pkgconfig readline
USE_GNOME= vte
GNU_CONFIGURE= yes
diff --git a/games/gnurobots/files/patch-configure b/games/gnurobots/files/patch-configure
new file mode 100644
--- /dev/null
+++ b/games/gnurobots/files/patch-configure
@@ -0,0 +1,11 @@
+--- configure.orig 2023-05-25 19:00:18 UTC
++++ configure
+@@ -5773,7 +5773,7 @@ _ACEOF
+ fi
+
+
+-CFLAGS="-pedantic-errors -Werror -Wall -g"
++
+
+ ac_config_files="$ac_config_files Makefile contrib/Makefile doc/Makefile include/Makefile xpm/Makefile maps/Makefile scheme/Makefile src/Makefile"
+
diff --git a/games/gnurobots/files/patch-configure.ac b/games/gnurobots/files/patch-configure.ac
deleted file mode 100644
--- a/games/gnurobots/files/patch-configure.ac
+++ /dev/null
@@ -1,11 +0,0 @@
---- configure.ac.orig 2008-08-03 19:48:45 UTC
-+++ configure.ac
-@@ -91,8 +91,6 @@ You need guile 1.8 to build this program.
- dnl Checks for typedefs, structures, and compiler characteristics.
- AC_C_CONST
-
--CFLAGS="-pedantic-errors -Werror -Wall -g"
--
- dnl Done.
- AC_CONFIG_FILES([Makefile
- contrib/Makefile
diff --git a/games/trackballs/Makefile b/games/trackballs/Makefile
--- a/games/trackballs/Makefile
+++ b/games/trackballs/Makefile
@@ -1,5 +1,6 @@
PORTNAME= trackballs
PORTVERSION= 1.3.4
+PORTREVISION= 1
DISTVERSIONPREFIX= v
PORTREVISION= 1
CATEGORIES= games
@@ -11,10 +12,8 @@
LICENSE= GPLv2+ ETHYMONICS
LICENSE_COMB= multi
-LIB_DEPENDS= libguile-2.2.so:lang/guile2 \
- libgc.so:devel/boehm-gc
-
-USES= cmake desktop-file-utils gettext-runtime gl gnome pkgconfig sdl
+USES= cmake desktop-file-utils gettext-runtime gl gnome guile:2.2 \
+ pkgconfig sdl
USE_GL= gl
USE_SDL= image2 mixer2 sdl2 ttf2
diff --git a/graphics/graphviz/Makefile b/graphics/graphviz/Makefile
--- a/graphics/graphviz/Makefile
+++ b/graphics/graphviz/Makefile
@@ -108,8 +108,7 @@
SMYRNA_LIB_DEPENDS= libgtkgl-2.0.so:x11-toolkits/gtkglarea2 \
libgtkglext-x11-1.0.so:x11-toolkits/gtkglext
DEVIL_LIB_DEPENDS= libIL.so:graphics/devil
-GUILE_LIB_DEPENDS= libguile-2.2.so:lang/guile2 \
- libgc-threaded.so:devel/boehm-gc-threaded
+GUILE_USES= guile:2.2
PHP_LIB_DEPENDS= libpcre.so:devel/pcre \
libargon2.so:security/libargon2
GHOSTSCRIPT_LIB_DEPENDS= libgs.so:print/${_GS_PORT}
diff --git a/graphics/guile-cairo/Makefile b/graphics/guile-cairo/Makefile
--- a/graphics/guile-cairo/Makefile
+++ b/graphics/guile-cairo/Makefile
@@ -1,7 +1,9 @@
PORTNAME= guile-cairo
-DISTVERSION= 1.11.1
+DISTVERSION= 1.11.2
+PORTREVISION= 2
CATEGORIES= graphics
MASTER_SITES= SAVANNAH
+PKGNAMESUFFIX= -${FLAVOR}
MAINTAINER= andrew@tao11.riddles.org.uk
COMMENT= Wrapper for using the Cairo graphics library from Guile
@@ -9,21 +11,46 @@
LICENSE= LGPL3+
-LIB_DEPENDS= libguile-2.2.so:lang/guile2 \
- libgc-threaded.so:devel/boehm-gc-threaded
-BUILD_DEPENDS= guile2>=2.2:lang/guile2
-
-USES= gmake gnome libtool pkgconfig
-USE_CSTD= c99
+USES= guile:2.2,3.0,flavors,alias \
+ autoreconf gettext-tools gmake gnome libtool pkgconfig
+guile30_CSTD= c11
+guile22_CSTD= c99
+USE_CSTD= ${${FLAVOR}_CSTD}
USE_GNOME= cairo
USE_LDCONFIG= yes
GNU_CONFIGURE= yes
+CONFIGURE_ARGS+=--includedir='$${prefix}/include/guile/${GUILE_VER}' \
+ --libdir='$${prefix}/lib/guile/${GUILE_VER}/extensions'
+CONFIGURE_ENV+= GUILE_EFFECTIVE_VERSION=${GUILE_VER}
INFO= guile-cairo
INSTALL_TARGET= install-strip
-MAKE_JOBS_UNSAFE=yes
+# Upstream has done almost all of the de-conflicting work, but there is
+# no release at this time. Include their work as a patch, which also
+# covers the code needed by g-golf.
+
+EXTRA_PATCHES= ${PATCHDIR}/extra-patch-upstream-fixes.patch
+
+INFO= guile-cairo
+INFO_PATH= share/info/guile${GUILE_SFX}
+
+post-patch:
+ ${REINPLACE_CMD} \
+ -e '/^objdir=/s:$$(libdir)/:$$(exec_prefix)/lib/:' \
+ ${WRKSRC}/Makefile.am ${WRKSRC}/cairo/Makefile.am
+
+# DO NOT try and add rules here to strip .go files, no matter how loudly
+# testport / stage-qa shouts at you about it, because .go files (which are
+# compiled bytecode) are not intended to be stripped and doing so causes
+# breakage at run time.
+
+post-install:
+ ${MKDIR} ${STAGEDIR}${PREFIX}/${GUILE_PKGCONFIG_DIR}
+ ${MV} ${STAGEDIR}${PREFIX}/lib/guile/${GUILE_VER}/extensions/pkgconfig/*.pc \
+ ${STAGEDIR}${PREFIX}/${GUILE_PKGCONFIG_DIR}/
+ ${RMDIR} ${STAGEDIR}${PREFIX}/lib/guile/${GUILE_VER}/extensions/pkgconfig
.include <bsd.port.mk>
diff --git a/graphics/guile-cairo/files/extra-patch-upstream-fixes.patch b/graphics/guile-cairo/files/extra-patch-upstream-fixes.patch
new file mode 100644
--- /dev/null
+++ b/graphics/guile-cairo/files/extra-patch-upstream-fixes.patch
@@ -0,0 +1,439 @@
+--- Makefile.am
++++ Makefile.am
+@@ -28,9 +28,20 @@ ACLOCAL_AMFLAGS = -I m4
+
+ CLEANFILES = env
+
+-scmdir=$(prefix)/share/guile/site
++GOBJECTS = $(SOURCES:%.scm=%.go)
+
+-scm_DATA = cairo.scm
++moddir=$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)
++objdir=$(libdir)/guile/$(GUILE_EFFECTIVE_VERSION)/site-ccache
++
++nobase_mod_DATA = $(SOURCES) $(NOCOMP_SOURCES)
++nobase_nodist_obj_DATA = $(GOBJECTS)
++
++GUILE_WARNINGS = -Wunbound-variable -Warity-mismatch -Wformat
++SUFFIXES = .scm .go
++.scm.go:
++ $(top_builddir)/env $(GUILD) compile $(GUILE_TARGET) $(GUILE_WARNINGS) -o "$@" "$<"
++
++SOURCES = cairo.scm
+
+ pkgconfigdir = $(libdir)/pkgconfig
+ pkgconfig_DATA = guile-cairo.pc
+--- README
++++ README
+@@ -111,20 +111,7 @@ objects like cairo_font_options_t.
+ Known bugs
+ ==================
+
+-[https://bugs.freedesktop.org/show_bug.cgi?id=30510] Reported by CK Jester-Young
+-
+-The documentation for cairo-pdf-surface-create specifies the arguments as
+-(filename width-in-points height-in-points). In actuality, it's (sx sy
+-[filename]), where an unspecified filename means the output is sent to the
+-current output port.
+-
+-This bug hasn't been fixed because of inability to regenerate the
+-documentation. Any help in this sense is appreciated. Please have a look at
+-
+-- doc/README
+-- commit 8e73e952f8797159719b770fafecbdcb6f87152c
+-- https://lists.gnu.org/archive/html/guile-user/2018-08/msg00117.html
+-
++(Yay?!)
+
+ Copying Guile-Cairo
+ ===================
+--- cairo/Makefile.am
++++ cairo/Makefile.am
+@@ -15,29 +15,26 @@
+ # License along with this program. If not, see
+ # <http://www.gnu.org/licenses/>.
+
+-all-local: config.scm
++moddir=$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)/cairo
++objdir=$(libdir)/guile/$(GUILE_EFFECTIVE_VERSION)/site-ccache/cairo
+
+-lib_builddir = $(shell cd $(top_builddir)/guile-cairo && pwd)
+-docs_builddir = $(shell cd $(top_builddir)/doc && pwd)
++SOURCES = config.scm vector-types.scm
++NOCOMP_SOURCES = cairo-procedures.txt
+
+-moduledir=$(prefix)/share/guile/site/cairo
++GOBJECTS = $(SOURCES:%.scm=%.go)
+
+-module_DATA = vector-types.scm cairo-procedures.txt
++nobase_mod_DATA = $(SOURCES) $(NOCOMP_SOURCES)
++nobase_nodist_obj_DATA = $(GOBJECTS)
+
+-config.scm: Makefile config.scm.in
+- sed -e "s|@cairolibpath\@|$(lib_builddir)/libguile-cairo|" \
+- -e "s|@cairodocumentationpath\@|$(docs_builddir)/cairo-procedures.txt|" \
+- $(srcdir)/config.scm.in > config.scm
++GUILE_WARNINGS = -Wunbound-variable -Warity-mismatch -Wformat
++SUFFIXES = .scm .go
++.scm.go:
++ $(top_builddir)/env $(GUILD) compile $(GUILE_TARGET) $(GUILE_WARNINGS) -o "$@" "$<"
+
+-install-data-local: Makefile config.scm.in
+- $(mkinstalldirs) $(DESTDIR)$(moduledir)
++config.scm: Makefile config.scm.in
+ sed -e "s|@cairolibpath\@|$(libdir)/libguile-cairo|" \
+- -e "s|@cairodocumentationpath\@|$(moduledir)/cairo-procedures.txt|" \
+- $(srcdir)/config.scm.in > $(DESTDIR)$(moduledir)/config.scm
+- chmod 644 $(DESTDIR)$(moduledir)/config.scm
+-
+-uninstall-local:
+- rm -f $(DESTDIR)$(moduledir)/config.scm
++ -e "s|@cairodocumentationpath\@|$(moddir)/cairo-procedures.txt|" \
++ $(srcdir)/config.scm.in > config.scm
+
+ cairo-procedures.txt.update:
+ echo "Generated from upstream documentation; see COPYING.docs for info." \
+@@ -45,6 +42,6 @@ cairo-procedures.txt.update:
+ $(top_srcdir)/doc/docbook-to-guile-doc $(CAIRO_XML_DIR)/*.xml \
+ >> $(srcdir)/cairo-procedures.txt
+
+-CLEANFILES = config.scm
++CLEANFILES = config.scm $(GOBJECTS)
+
+-EXTRA_DIST = config.scm.in $(module_DATA)
++EXTRA_DIST = config.scm.in
+--- configure.ac
++++ configure.ac
+@@ -37,7 +37,7 @@ AM_INIT_AUTOMAKE([1.14 gnu -Wno-portability -Wno-syntax \
+ AM_MAINTAINER_MODE([enable])
+ AM_SILENT_RULES([yes])
+
+-AC_SUBST(VERSION, 1.11.2)
++AC_SUBST(VERSION, 1.12.0)
+
+ AC_ISC_POSIX
+ AC_PROG_CC
+@@ -77,9 +77,15 @@ AC_SUBST(AM_LDFLAGS)
+ # Check for Guile
+ #
+ GUILE_PKG
++GUILE_PROGS
+ GUILE_FLAGS
+ AC_SUBST(GUILE_EFFECTIVE_VERSION)
+
++if test "$cross_compiling" != no; then
++ GUILE_TARGET="--target=$host_alias"
++ AC_SUBST([GUILE_TARGET])
++fi
++
+ PKG_CHECK_MODULES(CAIRO, cairo >= 1.10.0)
+ AC_SUBST(CAIRO_LIBS)
+ AC_SUBST(CAIRO_CFLAGS)
+--- guile-cairo/guile-cairo.c
++++ guile-cairo/guile-cairo.c
+@@ -1,6 +1,9 @@
+ /* guile-cairo
+ * Copyright (C) 2007, 2011, 2012, 2014, 2018, 2020 Andy Wingo <wingo at pobox dot com>
+- *
++ * Copyright (C) 2023 Daniel Llorens <lloda at sarc dot name>
++ * Copyright (C) 2023 Dale Smith <dalepsmith at gmail dot com>
++ * Copyright (C) 2023 David Pirotte <david at altosw dot be>
++
+ * guile-cairo.c: Cairo for Guile
+ *
+ * This library is free software; you can redistribute it and/or modify
+@@ -3523,6 +3526,19 @@ cairo_svg_version_to_string (cairo_svg_version_t version);
+ #endif /* CAIRO_HAS_SVG_SURFACE */
+
+
++SCM_DEFINE_PUBLIC (scm_cairo_context2pointer, "cairo-context->pointer", 1, 0, 0,
++ (SCM scr),
++ "")
++{
++ return scm_from_pointer (scm_to_cairo (scr), NULL);
++}
++
++SCM_DEFINE_PUBLIC (scm_cairo_pointer2context, "cairo-pointer->context", 1, 0, 0,
++ (SCM scr),
++ "")
++{
++ return scm_from_cairo ((cairo_t *) scm_to_pointer (scr));
++}
+
+ void
+ scm_init_cairo (void)
+diff --git m4/guile.m4 m4/guile.m4
+index 57a0868..48642f0 100644
+--- m4/guile.m4
++++ m4/guile.m4
+@@ -17,7 +17,7 @@
+ ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ ## 02110-1301 USA
+
+-# serial 10
++# serial 11
+
+ ## Index
+ ## -----
+@@ -60,7 +60,10 @@
+ # @code{AC_SUBST}.
+ #
+ AC_DEFUN([GUILE_PKG],
+- [PKG_PROG_PKG_CONFIG
++ [AC_REQUIRE([PKG_PROG_PKG_CONFIG])
++ if test "x$PKG_CONFIG" = x; then
++ AC_MSG_ERROR([pkg-config is missing, please install it])
++ fi
+ _guile_versions_to_search="m4_default([$1], [3.0 2.2 2.0])"
+ if test -n "$GUILE_EFFECTIVE_VERSION"; then
+ _guile_tmp=""
+--- tests/unit-tests/Makefile.am
++++ tests/unit-tests/Makefile.am
+@@ -1,5 +1,6 @@
+ # guile-cairo
+ # Copyright (C) 2007,2011 Andy Wingo <wingo@pobox.com>
++# Copyright (C) 2023 David Pirotte <david@altosw.be>
+ #
+ # This program is free software: you can redistribute it and/or modify
+ # it under the terms of the GNU Lesser General Public License as
+@@ -16,7 +17,8 @@
+ # <http://www.gnu.org/licenses/>.
+
+ TESTS= \
+- api-stability.scm \
++ context-pointer.scm \
++ api-stability.scm \
+ version.scm
+
+ TESTS_ENVIRONMENT=\
+--- tests/unit-tests/cairo.api
++++ tests/unit-tests/cairo.api
+@@ -7,14 +7,22 @@
+ cairo-clip-preserve
+ cairo-close-path
+ cairo-content-get-values
++ cairo-context->pointer
+ cairo-copy-clip-rectangle-list
+ cairo-copy-page
+ cairo-copy-path
+ cairo-copy-path-flat
+ cairo-create
+ cairo-curve-to
++ cairo-destroy
++ cairo-device-acquire
++ cairo-device-finish
++ cairo-device-flush
++ cairo-device-get-type
++ cairo-device-release
+ cairo-device-to-user
+ cairo-device-to-user-distance
++ cairo-device-type-get-values
+ cairo-extend-get-values
+ cairo-fill
+ cairo-fill-extents
+@@ -44,6 +52,7 @@
+ cairo-font-type-get-values
+ cairo-font-weight-get-values
+ cairo-format-get-values
++ cairo-format-stride-for-width
+ cairo-get-antialias
+ cairo-get-current-point
+ cairo-get-dash-count
+@@ -67,15 +76,20 @@
+ cairo-glyph:index
+ cairo-glyph:x
+ cairo-glyph:y
++ cairo-has-current-point
+ cairo-hint-metrics-get-values
+ cairo-hint-style-get-values
+ cairo-identity-matrix
+ cairo-image-surface-create
++ cairo-image-surface-create-for-data
+ cairo-image-surface-create-from-png
++ cairo-image-surface-get-data
+ cairo-image-surface-get-format
+ cairo-image-surface-get-height
+ cairo-image-surface-get-stride
+ cairo-image-surface-get-width
++ cairo-image-surface-set-data
++ cairo-in-clip
+ cairo-in-fill
+ cairo-in-stroke
+ cairo-line-cap-get-values
+@@ -86,6 +100,7 @@
+ cairo-make-identity-matrix
+ cairo-make-matrix
+ cairo-make-rectangle
++ cairo-make-rectangle-int
+ cairo-make-rotate-matrix
+ cairo-make-scale-matrix
+ cairo-make-text-extents
+@@ -94,6 +109,8 @@
+ cairo-mask-surface
+ cairo-matrix-invert
+ cairo-matrix-multiply
++ cairo-matrix-rotate
++ cairo-matrix-scale
+ cairo-matrix-transform-distance
+ cairo-matrix-transform-point
+ cairo-matrix-translate
+@@ -104,6 +121,7 @@
+ cairo-paint
+ cairo-paint-with-alpha
+ cairo-path-data-type-get-values
++ cairo-path-extents
+ cairo-path-fold
+ cairo-pattern-add-color-stop-rgb
+ cairo-pattern-add-color-stop-rgba
+@@ -126,22 +144,50 @@
+ cairo-pattern-set-filter
+ cairo-pattern-set-matrix
+ cairo-pattern-type-get-values
++ cairo-pdf-get-versions
++ cairo-pdf-level-get-values
+ cairo-pdf-surface-create
++ cairo-pdf-surface-restrict-to-version
+ cairo-pdf-surface-set-size
++ cairo-pointer->context
+ cairo-pop-group
+ cairo-pop-group-to-source
++ cairo-ps-get-levels
++ cairo-ps-level-get-values
+ cairo-ps-surface-begin-page-setup
+ cairo-ps-surface-begin-setup
+ cairo-ps-surface-create
+ cairo-ps-surface-dsc-comment
++ cairo-ps-surface-get-eps
++ cairo-ps-surface-restrict-to-level
++ cairo-ps-surface-set-eps
+ cairo-ps-surface-set-size
+ cairo-push-group
+ cairo-push-group-with-context
++ cairo-recording-surface-create
++ cairo-recording-surface-ink-extents
+ cairo-rectangle
++ cairo-rectangle-int:height
++ cairo-rectangle-int:width
++ cairo-rectangle-int:x
++ cairo-rectangle-int:y
+ cairo-rectangle:height
+ cairo-rectangle:width
+ cairo-rectangle:x
+ cairo-rectangle:y
++ cairo-region-contains-point
++ cairo-region-contains-rectangle
++ cairo-region-copy
++ cairo-region-create
++ cairo-region-get-extents
++ cairo-region-get-rectangles
++ cairo-region-intersect
++ cairo-region-is-empty
++ cairo-region-overlap-get-values
++ cairo-region-subtract
++ cairo-region-translate
++ cairo-region-union
++ cairo-region-xor
+ cairo-rel-curve-to
+ cairo-rel-line-to
+ cairo-rel-move-to
+@@ -156,9 +202,11 @@
+ cairo-scaled-font-get-font-face
+ cairo-scaled-font-get-font-matrix
+ cairo-scaled-font-get-font-options
++ cairo-scaled-font-get-scale_matrix
+ cairo-scaled-font-get-type
+ cairo-scaled-font-glyph-extents
+ cairo-scaled-font-text-extents
++ cairo-scaled-font-text-to-glyphs
+ cairo-select-font-face
+ cairo-set-antialias
+ cairo-set-dash
+@@ -182,26 +230,38 @@
+ cairo-show-glyphs
+ cairo-show-page
+ cairo-show-text
++ cairo-show-text-glyphs
++ cairo-status-get-values
+ cairo-stroke
+ cairo-stroke-extents
+ cairo-stroke-preserve
+ cairo-subpixel-order-get-values
++ cairo-surface-copy-page
++ cairo-surface-create-for-rectangle
+ cairo-surface-create-similar
++ cairo-surface-destroy
+ cairo-surface-finish
+ cairo-surface-flush
+ cairo-surface-get-content
++ cairo-surface-get-device
+ cairo-surface-get-device-offset
++ cairo-surface-get-fallback-resolution
+ cairo-surface-get-font-options
++ cairo-surface-get-mime-data
+ cairo-surface-get-type
++ cairo-surface-has-show-text-glyphs
+ cairo-surface-mark-dirty
+ cairo-surface-mark-dirty-rectangle
+ cairo-surface-set-device-offset
+ cairo-surface-set-fallback-resolution
++ cairo-surface-set-mime-data
++ cairo-surface-show-page
+ cairo-surface-type-get-values
+ cairo-surface-write-to-png
+ cairo-svg-surface-create
+ cairo-svg-surface-restrict-to-version
+ cairo-svg-version-get-values
++ cairo-text-cluster-flags-get-values
+ cairo-text-extents
+ cairo-text-extents:height
+ cairo-text-extents:width
+@@ -210,8 +270,17 @@
+ cairo-text-extents:y-advance
+ cairo-text-extents:y-bearing
+ cairo-text-path
++ cairo-toy-font-face-create
++ cairo-toy-font-face-get-family
++ cairo-toy-font-face-get-slant
++ cairo-toy-font-face-get-weight
+ cairo-transform
+ cairo-translate
++ cairo-user-font-face-create
++ cairo-user-font-face-set-init-func
++ cairo-user-font-face-set-render-glyph-func
++ cairo-user-font-face-set-text-to-glyphs-func
++ cairo-user-font-face-set-unicode-to-glyph-func
+ cairo-user-to-device
+ cairo-user-to-device-distance
+ cairo-version
+--- /dev/null
++++ tests/unit-tests/context-pointer.scm
+@@ -0,0 +1,29 @@
++;; guile-cairo unit test
++;; Copyright (C) 2023 David Pirotte <david@altosw.be>
++
++;; This program 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.
++;;
++;; This program 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 this program; if not, see <http://www.gnu.org/licenses/>.
++
++(use-modules (unit-test)
++ (oop goops)
++ (cairo))
++
++(define-class <test-context-pointer> (<test-case>))
++
++(define-method (test-context-pointer (self <test-context-pointer>))
++ (let* ((cs (cairo-image-surface-create 'argb32 140 100))
++ (cr (cairo-create cs)))
++ (assert (cairo-context->pointer cr))
++ (assert (cairo-pointer->context (cairo-context->pointer cr)))))
++
++(exit-with-summary (run-all-defined-test-cases))
diff --git a/graphics/guile-cairo/files/patch-guile-cairo.pc.in b/graphics/guile-cairo/files/patch-guile-cairo.pc.in
new file mode 100644
--- /dev/null
+++ b/graphics/guile-cairo/files/patch-guile-cairo.pc.in
@@ -0,0 +1,9 @@
+--- guile-cairo.pc.in.orig 2023-05-21 10:31:12 UTC
++++ guile-cairo.pc.in
+@@ -7,5 +7,5 @@ Name: guile-cairo
+ Description: Cairo binding for Guile Scheme
+ Version: @VERSION@
+ Requires: cairo guile-@GUILE_EFFECTIVE_VERSION@
+-Libs: -L${libdir} -lguile-cairo
++Libs: -L${libdir} -Wl,-rpath=${libdir} -lguile-cairo
+ Cflags: -I${includedir}
diff --git a/graphics/guile-cairo/pkg-plist b/graphics/guile-cairo/pkg-plist
--- a/graphics/guile-cairo/pkg-plist
+++ b/graphics/guile-cairo/pkg-plist
@@ -1,12 +1,15 @@
-include/guile-cairo/guile-cairo-enum-types.h
-include/guile-cairo/guile-cairo-smob-types.h
-include/guile-cairo/guile-cairo-vector-types.h
-include/guile-cairo/guile-cairo.h
-lib/libguile-cairo.so
-lib/libguile-cairo.so.0
-lib/libguile-cairo.so.0.0.0
-libdata/pkgconfig/guile-cairo.pc
-share/guile/site/cairo.scm
-share/guile/site/cairo/cairo-procedures.txt
-share/guile/site/cairo/config.scm
-share/guile/site/cairo/vector-types.scm
+include/guile/%%GUILE_VER%%/guile-cairo/guile-cairo-enum-types.h
+include/guile/%%GUILE_VER%%/guile-cairo/guile-cairo-smob-types.h
+include/guile/%%GUILE_VER%%/guile-cairo/guile-cairo-vector-types.h
+include/guile/%%GUILE_VER%%/guile-cairo/guile-cairo.h
+lib/guile/%%GUILE_VER%%/extensions/libguile-cairo.so
+lib/guile/%%GUILE_VER%%/extensions/libguile-cairo.so.0
+lib/guile/%%GUILE_VER%%/extensions/libguile-cairo.so.0.0.0
+lib/guile/%%GUILE_VER%%/site-ccache/cairo/config.go
+lib/guile/%%GUILE_VER%%/site-ccache/cairo/vector-types.go
+lib/guile/%%GUILE_VER%%/site-ccache/cairo.go
+%%GUILE_PKGCONFIG_DIR%%/guile-cairo.pc
+share/guile/site/%%GUILE_VER%%/cairo.scm
+share/guile/site/%%GUILE_VER%%/cairo/cairo-procedures.txt
+share/guile/site/%%GUILE_VER%%/cairo/config.scm
+share/guile/site/%%GUILE_VER%%/cairo/vector-types.scm
diff --git a/irc/weechat/Makefile b/irc/weechat/Makefile
--- a/irc/weechat/Makefile
+++ b/irc/weechat/Makefile
@@ -53,7 +53,7 @@
CHARSET_IMPLIES= ICONV
DOCS_CMAKE_BOOL= ENABLE_DOC
DOCS_BUILD_DEPENDS= ${LOCALBASE}/bin/asciidoctor:textproc/rubygem-asciidoctor
-GUILE_LIB_DEPENDS= libguile-2.2.so:lang/guile2
+GUILE_USES= guile:2.2
ICONV_USES= iconv
JAVASCRIPT_LIB_DEPENDS= libv8.so:lang/v8
LUA_USES= lua pkgconfig
diff --git a/irc/weechat/pkg-plist b/irc/weechat/pkg-plist
--- a/irc/weechat/pkg-plist
+++ b/irc/weechat/pkg-plist
@@ -35,6 +35,7 @@
%%HEADLESS%%%%MANPAGES%%man/sr/man1/weechat-headless.1.gz
%%ASPELL%%lib/weechat/plugins/spell.so
%%CHARSET%%lib/weechat/plugins/charset.so
+%%GUILE%%lib/weechat/plugins/guile.so
%%JAVASCRIPT%%lib/weechat/plugins/javascript.so
%%LUA%%lib/weechat/plugins/lua.so
%%PERL%%lib/weechat/plugins/perl.so
diff --git a/lang/Makefile b/lang/Makefile
--- a/lang/Makefile
+++ b/lang/Makefile
@@ -127,9 +127,10 @@
SUBDIR += gravity
SUBDIR += groovy
SUBDIR += gscheme
- SUBDIR += guile
+ SUBDIR += guile-aclocal
SUBDIR += guile1
SUBDIR += guile2
+ SUBDIR += guile3
SUBDIR += halide
SUBDIR += harec
SUBDIR += haskell-mode.el
@@ -337,8 +338,6 @@
SUBDIR += sketchy
SUBDIR += slib
SUBDIR += slib-guile
- SUBDIR += slib-guile1
- SUBDIR += slib-guile2
SUBDIR += slisp
SUBDIR += smalltalk
SUBDIR += smlnj
diff --git a/lang/guile-aclocal/Makefile b/lang/guile-aclocal/Makefile
new file mode 100644
--- /dev/null
+++ b/lang/guile-aclocal/Makefile
@@ -0,0 +1,18 @@
+PORTNAME= guile-aclocal
+CATEGORIES= lang scheme
+PKGNAMESUFFIX=
+DISTNAME= guile-${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX}
+
+MASTERDIR= ${.CURDIR}/../guile3
+
+NO_ARCH= yes
+NO_BUILD= yes
+
+PLIST= # disable MASTERDIR's plist
+PLIST_FILES= ${PREFIX}/share/aclocal/guile.m4
+
+do-install:
+ ${MKDIR} ${STAGEDIR}${PREFIX}/share/aclocal/
+ ${INSTALL_DATA} ${WRKSRC}/meta/guile.m4 ${STAGEDIR}${PREFIX}/share/aclocal/
+
+.include "${MASTERDIR}/Makefile"
diff --git a/lang/guile/Makefile b/lang/guile/Makefile
deleted file mode 100644
--- a/lang/guile/Makefile
+++ /dev/null
@@ -1,69 +0,0 @@
-PORTNAME= guile
-PORTVERSION= 3.0.9
-PORTREVISION= 1
-CATEGORIES= lang scheme
-MASTER_SITES= GNU
-
-MAINTAINER= bofh@FreeBSD.org
-COMMENT= GNU Ubiquitous Intelligent Language for Extension
-WWW= https://www.gnu.org/software/guile/
-
-LICENSE= GPLv3 LGPL3
-LICENSE_COMB= multi
-
-# Currently has linker error in i386. Feel free to add other ARCHS in
-# case of failure
-NOT_FOR_ARCHS= i386
-
-LIB_DEPENDS= libffi.so:devel/libffi \
- libgmp.so:math/gmp \
- libltdl.so:devel/libltdl \
- libunistring.so:devel/libunistring
-
-USES= charsetfix compiler:gcc-c++11-lib cpe gmake iconv libtool \
- makeinfo pathfix pkgconfig readline tar:lz
-CPE_VENDOR= gnu
-USE_LDCONFIG= yes
-
-GNU_CONFIGURE= yes
-
-#MAKE_JOBS_UNSAFE= yes
-INSTALL_TARGET= install-strip
-
-CONFLICTS_INSTALL= guile1 guile2
-
-INFO= guile r5rs
-
-PLIST_SUB= GUILE_VER=${PORTVERSION:R}
-
-OPTIONS_DEFINE= NLS THREADS
-OPTIONS_DEFAULT= NLS THREADS
-OPTIONS_SUB= yes
-
-NLS_USES= gettext
-NLS_CONFIGURE_ENABLE= nls
-
-THREADS_LIB_DEPENDS= libgc-threaded.so:devel/boehm-gc-threaded
-THREADS_LIB_DEPENDS_OFF= libgc.so:devel/boehm-gc
-THREADS_CONFIGURE_WITH= threads
-
-.include <bsd.port.options.mk>
-
-.if ${ARCH} == powerpc
-EXTRA_PATCHES= ${FILESDIR}/extra-patch-bootstrap_Makefile.in
-.endif
-
-post-patch:
- @${REINPLACE_CMD} -e 's|-i -e|-i.bak -e|' \
- ${WRKSRC}/libguile/Makefile.in
- @${RM} -r ${WRKSRC}/prebuilt/32-bit-big-endian
-
-post-patch-THREADS-on:
- @${REINPLACE_CMD} -e 's|bdw-gc|bdw-gc-threaded|g' ${WRKSRC}/configure
-
-# Currently guile fails to run if libs are stripped. Will need to debug
-# the case.
-#post-install:
-# @${FIND} ${STAGEDIR}${PREFIX}/lib -name "*.go" | ${XARGS} ${STRIP_CMD}
-
-.include <bsd.port.mk>
diff --git a/lang/guile/files/extra-patch-bootstrap_Makefile.in b/lang/guile/files/extra-patch-bootstrap_Makefile.in
deleted file mode 100644
--- a/lang/guile/files/extra-patch-bootstrap_Makefile.in
+++ /dev/null
@@ -1,11 +0,0 @@
---- bootstrap/Makefile.in.orig 2022-02-02 15:41:58 UTC
-+++ bootstrap/Makefile.in
-@@ -1751,7 +1751,7 @@ top_builddir_absolute = @top_builddir_absolute@
- top_srcdir = @top_srcdir@
- top_srcdir_absolute = @top_srcdir_absolute@
- GUILE_WARNINGS = -W0
--GUILE_OPTIMIZATIONS = -O1
-+GUILE_OPTIMIZATIONS = -O1 -Oresolve-primitives -Ocps
- GOBJECTS = $(SOURCES:%.scm=%.go)
- nobase_noinst_DATA = $(GOBJECTS)
- CLEANFILES = $(GOBJECTS)
diff --git a/lang/guile/files/patch-doc-ref-guile.texi b/lang/guile/files/patch-doc-ref-guile.texi
deleted file mode 100644
--- a/lang/guile/files/patch-doc-ref-guile.texi
+++ /dev/null
@@ -1,10 +0,0 @@
---- doc/ref/guile.texi.orig 2020-05-30 20:06:44 UTC
-+++ doc/ref/guile.texi
-@@ -1,6 +1,7 @@
- \input texinfo
- @c -*-texinfo-*-
- @c %**start of header
-+@documentencoding ISO-8859-1
- @setfilename guile.info
- @documentencoding UTF-8
- @settitle Guile Reference Manual
diff --git a/lang/guile1/Makefile b/lang/guile1/Makefile
--- a/lang/guile1/Makefile
+++ b/lang/guile1/Makefile
@@ -1,5 +1,6 @@
PORTNAME= guile
PORTVERSION= 1.8.8
+PORTREVISION= 1
CATEGORIES= lang scheme
MASTER_SITES= GNU
PKGNAMESUFFIX= 1
@@ -14,41 +15,69 @@
LIB_DEPENDS= libltdl.so:devel/libltdl \
libgmp.so:math/gmp
-USES= autoreconf cpe gmake libtool makeinfo ncurses pathfix
+# We need to pull the aclocal/guile.m4 from guile3 rather than using
+# our own version, in order to avoid conflicts.
+RUN_DEPENDS= guile-aclocal>=3:lang/guile-aclocal
+
+USES= guile:${PORTVERSION:R},env \
+ autoreconf cpe gmake libtool makeinfo ncurses pathfix \
+ readline
CPE_VENDOR= gnu
USE_LDCONFIG= yes
-CONFLICTS_INSTALL= guile2 guile
-
GNU_CONFIGURE= yes
+CONFIGURE_ARGS+=--program-suffix=-${GUILE_VER} \
+ --includedir='$${prefix}/include/guile/${GUILE_VER}/'
+
+INSTALL_TARGET= install-strip
+
CFLAGS+= -fwrapv
CPPFLAGS+= -I${LOCALBASE}/include
LIBS+= -L${LOCALBASE}/lib
-INSTALL_TARGET= install-strip
PORTSCOUT= limit:^1\.
-PLIST_SUB= GUILE_VER=${PORTVERSION:R}
-
-REINPLACE_FILES= libguile/smob.c libguile/filesys.c libguile/gc.c \
- libguile/mallocs.c libguile/eval.c libguile/gc-malloc.c \
- libguile/ports.c libguile/gc-mark.c libguile/gc_os_dep.c
-
INFO= goops guile-tut guile r5rs
+INFO_PATH= share/info/guile${GUILE_SFX}
OPTIONS_DEFINE= NLS
OPTIONS_SUB= yes
-NLS_CONFIGURE_ENABLE= nls
NLS_USES= gettext
NLS_USES_OFF= gettext-tools
+NLS_CONFIGURE_ENABLE= nls
post-extract:
@${FIND} ${WRKSRC}/doc -name "*.info*" -delete
+REINPLACE_FILES_1= libguile/smob.c libguile/filesys.c libguile/gc.c \
+ libguile/mallocs.c libguile/eval.c libguile/gc-malloc.c \
+ libguile/ports.c libguile/gc-mark.c libguile/gc_os_dep.c
+
+REINPLACE_FILES_2= guile-config/guile-config.in
+
+REINPLACE_FILES_3= PROGRAM frisk read-text-outline generate-autoload \
+ scan-api api-diff lint snarf-check-and-output-texi \
+ autofrisk punify snarf-guile-m4-docs display-commentary \
+ read-rfc822 summarize-guile-TODO doc-snarf \
+ read-scheme-source use2dot
+
post-patch:
@cd ${WRKSRC} ; \
- ${REINPLACE_CMD} -e 's|<malloc\.h>|<stdlib.h>|g' ${REINPLACE_FILES}
+ ${REINPLACE_CMD} -e 's|<malloc\.h>|<stdlib.h>|g' ${REINPLACE_FILES_1}
@${REINPLACE_CMD} -e 's|$$(libdir)|$$(libdir)data|g' ${WRKSRC}/Makefile.am
@${TOUCH} ${WRKSRC}/Makefile.in
+ @cd ${WRKSRC} ; \
+ ${REINPLACE_CMD} -e '1s/guile/guile-${GUILE_VER}/' ${REINPLACE_FILES_2}
+ @cd ${WRKSRC}/scripts ; \
+ ${REINPLACE_CMD} -e '1,/!#/s/GUILE-guile/GUILE-guile-${GUILE_VER}/' \
+ ${REINPLACE_FILES_3}
+
+post-install:
+ ${RM} ${STAGEDIR}${PREFIX}/share/aclocal/guile.m4
+ for p in guile guile-tools guile-config guile-snarf; do \
+ ${LN} -s $${p}-${GUILE_VER} ${STAGEDIR}${PREFIX}/bin/$${p}${GUILE_SFX}; \
+ done
+ ${MV} ${STAGEDIR}${PREFIX}/man/man1/guile-${GUILE_VER}.1 \
+ ${STAGEDIR}${PREFIX}/man/man1/guile${GUILE_SFX}.1
.include <bsd.port.mk>
diff --git a/lang/guile1/files/patch-scripts_Makefile.am b/lang/guile1/files/patch-scripts_Makefile.am
new file mode 100644
--- /dev/null
+++ b/lang/guile1/files/patch-scripts_Makefile.am
@@ -0,0 +1,12 @@
+--- scripts/Makefile.am.orig 2023-05-22 16:38:21 UTC
++++ scripts/Makefile.am
+@@ -21,6 +21,9 @@
+
+ AUTOMAKE_OPTIONS = gnu
+
++# prevent program-suffix being used in this dir
++transform=
++
+ # These should be installed and distributed.
+ scripts_sources = \
+ PROGRAM \
diff --git a/lang/guile1/pkg-plist b/lang/guile1/pkg-plist
--- a/lang/guile1/pkg-plist
+++ b/lang/guile1/pkg-plist
@@ -1,115 +1,119 @@
-bin/guile
-bin/guile-config
-bin/guile-snarf
-bin/guile-tools
-include/guile/gh.h
-include/guile/readline.h
-include/guile/srfi/srfi-1.h
-include/guile/srfi/srfi-13.h
-include/guile/srfi/srfi-14.h
-include/guile/srfi/srfi-4.h
-include/guile/srfi/srfi-60.h
-include/libguile.h
-include/libguile/__scm.h
-include/libguile/alist.h
-include/libguile/arbiters.h
-include/libguile/async.h
-include/libguile/backtrace.h
-include/libguile/boolean.h
-include/libguile/chars.h
-include/libguile/continuations.h
-include/libguile/convert.h
-include/libguile/debug-malloc.h
-include/libguile/debug.h
-include/libguile/deprecated.h
-include/libguile/deprecation.h
-include/libguile/discouraged.h
-include/libguile/dynl.h
-include/libguile/dynwind.h
-include/libguile/environments.h
-include/libguile/eq.h
-include/libguile/error.h
-include/libguile/eval.h
-include/libguile/evalext.h
-include/libguile/extensions.h
-include/libguile/feature.h
-include/libguile/filesys.h
-include/libguile/fluids.h
-include/libguile/fports.h
-include/libguile/futures.h
-include/libguile/gc.h
-include/libguile/gdb_interface.h
-include/libguile/gdbint.h
-include/libguile/goops.h
-include/libguile/gsubr.h
-include/libguile/guardians.h
-include/libguile/hash.h
-include/libguile/hashtab.h
-include/libguile/hooks.h
-include/libguile/i18n.h
-include/libguile/init.h
-include/libguile/inline.h
-include/libguile/ioext.h
-include/libguile/iselect.h
-include/libguile/keywords.h
-include/libguile/lang.h
-include/libguile/list.h
-include/libguile/load.h
-include/libguile/macros.h
-include/libguile/mallocs.h
-include/libguile/modules.h
-include/libguile/net_db.h
-include/libguile/null-threads.h
-include/libguile/numbers.h
-include/libguile/objects.h
-include/libguile/objprop.h
-include/libguile/options.h
-include/libguile/pairs.h
-include/libguile/ports.h
-include/libguile/posix.h
-include/libguile/print.h
-include/libguile/procprop.h
-include/libguile/procs.h
-include/libguile/properties.h
-include/libguile/pthread-threads.h
-include/libguile/ramap.h
-include/libguile/random.h
-include/libguile/rdelim.h
-include/libguile/read.h
-include/libguile/regex-posix.h
-include/libguile/root.h
-include/libguile/rw.h
-include/libguile/scmconfig.h
-include/libguile/scmsigs.h
-include/libguile/script.h
-include/libguile/simpos.h
-include/libguile/smob.h
-include/libguile/snarf.h
-include/libguile/socket.h
-include/libguile/sort.h
-include/libguile/srcprop.h
-include/libguile/srfi-13.h
-include/libguile/srfi-14.h
-include/libguile/srfi-4.h
-include/libguile/stackchk.h
-include/libguile/stacks.h
-include/libguile/stime.h
-include/libguile/strings.h
-include/libguile/strorder.h
-include/libguile/strports.h
-include/libguile/struct.h
-include/libguile/symbols.h
-include/libguile/tags.h
-include/libguile/threads.h
-include/libguile/throw.h
-include/libguile/unif.h
-include/libguile/validate.h
-include/libguile/values.h
-include/libguile/variable.h
-include/libguile/vectors.h
-include/libguile/version.h
-include/libguile/vports.h
-include/libguile/weaks.h
+bin/guile-%%GUILE_VER%%
+bin/guile-config-%%GUILE_VER%%
+bin/guile-snarf-%%GUILE_VER%%
+bin/guile-tools-%%GUILE_VER%%
+bin/guile%%GUILE_SFX%%
+bin/guile-config%%GUILE_SFX%%
+bin/guile-snarf%%GUILE_SFX%%
+bin/guile-tools%%GUILE_SFX%%
+include/guile/%%GUILE_VER%%/guile/gh.h
+include/guile/%%GUILE_VER%%/guile/readline.h
+include/guile/%%GUILE_VER%%/guile/srfi/srfi-1.h
+include/guile/%%GUILE_VER%%/guile/srfi/srfi-13.h
+include/guile/%%GUILE_VER%%/guile/srfi/srfi-14.h
+include/guile/%%GUILE_VER%%/guile/srfi/srfi-4.h
+include/guile/%%GUILE_VER%%/guile/srfi/srfi-60.h
+include/guile/%%GUILE_VER%%/libguile.h
+include/guile/%%GUILE_VER%%/libguile/__scm.h
+include/guile/%%GUILE_VER%%/libguile/alist.h
+include/guile/%%GUILE_VER%%/libguile/arbiters.h
+include/guile/%%GUILE_VER%%/libguile/async.h
+include/guile/%%GUILE_VER%%/libguile/backtrace.h
+include/guile/%%GUILE_VER%%/libguile/boolean.h
+include/guile/%%GUILE_VER%%/libguile/chars.h
+include/guile/%%GUILE_VER%%/libguile/continuations.h
+include/guile/%%GUILE_VER%%/libguile/convert.h
+include/guile/%%GUILE_VER%%/libguile/debug-malloc.h
+include/guile/%%GUILE_VER%%/libguile/debug.h
+include/guile/%%GUILE_VER%%/libguile/deprecated.h
+include/guile/%%GUILE_VER%%/libguile/deprecation.h
+include/guile/%%GUILE_VER%%/libguile/discouraged.h
+include/guile/%%GUILE_VER%%/libguile/dynl.h
+include/guile/%%GUILE_VER%%/libguile/dynwind.h
+include/guile/%%GUILE_VER%%/libguile/environments.h
+include/guile/%%GUILE_VER%%/libguile/eq.h
+include/guile/%%GUILE_VER%%/libguile/error.h
+include/guile/%%GUILE_VER%%/libguile/eval.h
+include/guile/%%GUILE_VER%%/libguile/evalext.h
+include/guile/%%GUILE_VER%%/libguile/extensions.h
+include/guile/%%GUILE_VER%%/libguile/feature.h
+include/guile/%%GUILE_VER%%/libguile/filesys.h
+include/guile/%%GUILE_VER%%/libguile/fluids.h
+include/guile/%%GUILE_VER%%/libguile/fports.h
+include/guile/%%GUILE_VER%%/libguile/futures.h
+include/guile/%%GUILE_VER%%/libguile/gc.h
+include/guile/%%GUILE_VER%%/libguile/gdb_interface.h
+include/guile/%%GUILE_VER%%/libguile/gdbint.h
+include/guile/%%GUILE_VER%%/libguile/goops.h
+include/guile/%%GUILE_VER%%/libguile/gsubr.h
+include/guile/%%GUILE_VER%%/libguile/guardians.h
+include/guile/%%GUILE_VER%%/libguile/hash.h
+include/guile/%%GUILE_VER%%/libguile/hashtab.h
+include/guile/%%GUILE_VER%%/libguile/hooks.h
+include/guile/%%GUILE_VER%%/libguile/i18n.h
+include/guile/%%GUILE_VER%%/libguile/init.h
+include/guile/%%GUILE_VER%%/libguile/inline.h
+include/guile/%%GUILE_VER%%/libguile/ioext.h
+include/guile/%%GUILE_VER%%/libguile/iselect.h
+include/guile/%%GUILE_VER%%/libguile/keywords.h
+include/guile/%%GUILE_VER%%/libguile/lang.h
+include/guile/%%GUILE_VER%%/libguile/list.h
+include/guile/%%GUILE_VER%%/libguile/load.h
+include/guile/%%GUILE_VER%%/libguile/macros.h
+include/guile/%%GUILE_VER%%/libguile/mallocs.h
+include/guile/%%GUILE_VER%%/libguile/modules.h
+include/guile/%%GUILE_VER%%/libguile/net_db.h
+include/guile/%%GUILE_VER%%/libguile/null-threads.h
+include/guile/%%GUILE_VER%%/libguile/numbers.h
+include/guile/%%GUILE_VER%%/libguile/objects.h
+include/guile/%%GUILE_VER%%/libguile/objprop.h
+include/guile/%%GUILE_VER%%/libguile/options.h
+include/guile/%%GUILE_VER%%/libguile/pairs.h
+include/guile/%%GUILE_VER%%/libguile/ports.h
+include/guile/%%GUILE_VER%%/libguile/posix.h
+include/guile/%%GUILE_VER%%/libguile/print.h
+include/guile/%%GUILE_VER%%/libguile/procprop.h
+include/guile/%%GUILE_VER%%/libguile/procs.h
+include/guile/%%GUILE_VER%%/libguile/properties.h
+include/guile/%%GUILE_VER%%/libguile/pthread-threads.h
+include/guile/%%GUILE_VER%%/libguile/ramap.h
+include/guile/%%GUILE_VER%%/libguile/random.h
+include/guile/%%GUILE_VER%%/libguile/rdelim.h
+include/guile/%%GUILE_VER%%/libguile/read.h
+include/guile/%%GUILE_VER%%/libguile/regex-posix.h
+include/guile/%%GUILE_VER%%/libguile/root.h
+include/guile/%%GUILE_VER%%/libguile/rw.h
+include/guile/%%GUILE_VER%%/libguile/scmconfig.h
+include/guile/%%GUILE_VER%%/libguile/scmsigs.h
+include/guile/%%GUILE_VER%%/libguile/script.h
+include/guile/%%GUILE_VER%%/libguile/simpos.h
+include/guile/%%GUILE_VER%%/libguile/smob.h
+include/guile/%%GUILE_VER%%/libguile/snarf.h
+include/guile/%%GUILE_VER%%/libguile/socket.h
+include/guile/%%GUILE_VER%%/libguile/sort.h
+include/guile/%%GUILE_VER%%/libguile/srcprop.h
+include/guile/%%GUILE_VER%%/libguile/srfi-13.h
+include/guile/%%GUILE_VER%%/libguile/srfi-14.h
+include/guile/%%GUILE_VER%%/libguile/srfi-4.h
+include/guile/%%GUILE_VER%%/libguile/stackchk.h
+include/guile/%%GUILE_VER%%/libguile/stacks.h
+include/guile/%%GUILE_VER%%/libguile/stime.h
+include/guile/%%GUILE_VER%%/libguile/strings.h
+include/guile/%%GUILE_VER%%/libguile/strorder.h
+include/guile/%%GUILE_VER%%/libguile/strports.h
+include/guile/%%GUILE_VER%%/libguile/struct.h
+include/guile/%%GUILE_VER%%/libguile/symbols.h
+include/guile/%%GUILE_VER%%/libguile/tags.h
+include/guile/%%GUILE_VER%%/libguile/threads.h
+include/guile/%%GUILE_VER%%/libguile/throw.h
+include/guile/%%GUILE_VER%%/libguile/unif.h
+include/guile/%%GUILE_VER%%/libguile/validate.h
+include/guile/%%GUILE_VER%%/libguile/values.h
+include/guile/%%GUILE_VER%%/libguile/variable.h
+include/guile/%%GUILE_VER%%/libguile/vectors.h
+include/guile/%%GUILE_VER%%/libguile/version.h
+include/guile/%%GUILE_VER%%/libguile/vports.h
+include/guile/%%GUILE_VER%%/libguile/weaks.h
lib/libguile-srfi-srfi-1-v-3.a
lib/libguile-srfi-srfi-1-v-3.so
lib/libguile-srfi-srfi-1-v-3.so.3
@@ -135,8 +139,7 @@
lib/libguilereadline-v-17.so.17
lib/libguilereadline-v-17.so.17.0.3
libdata/pkgconfig/guile-1.8.pc
-man/man1/guile.1.gz
-share/aclocal/guile.m4
+man/man1/guile%%GUILE_SFX%%.1.gz
%%DATADIR%%/%%GUILE_VER%%/guile-procedures.txt
%%DATADIR%%/%%GUILE_VER%%/ice-9/and-let-star.scm
%%DATADIR%%/%%GUILE_VER%%/ice-9/boot-9.scm
diff --git a/lang/guile2/Makefile b/lang/guile2/Makefile
--- a/lang/guile2/Makefile
+++ b/lang/guile2/Makefile
@@ -1,6 +1,6 @@
PORTNAME= guile
PORTVERSION= 2.2.7
-PORTREVISION= 3
+PORTREVISION= 5
CATEGORIES= lang scheme
MASTER_SITES= GNU
PKGNAMESUFFIX= 2
@@ -16,51 +16,52 @@
libltdl.so:devel/libltdl \
libunistring.so:devel/libunistring \
libffi.so:devel/libffi
+RUN_DEPENDS= guile-aclocal>=3:lang/guile-aclocal
-USES= charsetfix compiler:c11 cpe gmake iconv libtool makeinfo ncurses pathfix \
- pkgconfig readline tar:lz
-USE_LDCONFIG= yes
-
+USES= guile:${PORTVERSION:R},env \
+ charsetfix compiler:c11 cpe gmake iconv libtool localbase \
+ makeinfo ncurses pathfix pkgconfig readline tar:lz
CPE_VENDOR= gnu
+USE_LDCONFIG= yes
-CONFLICTS_INSTALL= guile guile1 # bin/guild bin/guile bin/guile-config bin/guile-snarf bin/guile-tools
+GNU_CONFIGURE= yes
+CONFIGURE_ARGS= --program-suffix=-${GUILE_VER}
+# eliminate some pointless configure warnings/errors
+CONFIGURE_ENV+= gl_cv_func_working_mktime=yes \
+ ac_cv_header_sys_timeb_h=0
MAKE_JOBS_UNSAFE= yes
-
-GNU_CONFIGURE= yes
-CPPFLAGS+= -I${LOCALBASE}/include
-LIBS+= -L${LOCALBASE}/lib
INSTALL_TARGET= install-strip
INFO= guile r5rs
-
-PLIST_SUB= GUILE_VER=${PORTVERSION:R}
+INFO_PATH= share/info/guile${GUILE_SFX}
OPTIONS_DEFINE= NLS THREADS
OPTIONS_DEFAULT=THREADS
OPTIONS_SUB= yes
-NLS_CONFIGURE_ENABLE= nls
NLS_USES= gettext
+NLS_CONFIGURE_ENABLE= nls
-THREADS_CONFIGURE_WITH= threads
THREADS_LIB_DEPENDS= libgc-threaded.so:devel/boehm-gc-threaded
-THREADS_LIB_DEPENDS_OFF= libgc.so:devel/boehm-gc
-
-REINPLACE_FILES= libguile/smob.c libguile/filesys.c libguile/gc.c \
- libguile/mallocs.c libguile/eval.c \
- libguile/gc-malloc.c libguile/ports.c
+THREADS_LIB_DEPENDS_OFF=libgc.so:devel/boehm-gc
+THREADS_CONFIGURE_ON= --with-bdw-gc=bdw-gc-threaded
+THREADS_CONFIGURE_OFF= --with-bdw-gc=bdw-gc
+THREADS_CONFIGURE_WITH= threads
post-patch:
- @cd ${WRKSRC} ; \
- ${REINPLACE_CMD} -e 's|<malloc\.h>|<stdlib.h>|g' ${REINPLACE_FILES}
- @${REINPLACE_CMD} -e 's|sys/time.h sys/timeb.h|sys/time.h |g' \
- ${WRKSRC}/configure
- @${REINPLACE_CMD} -e 's|-i -e|-i.bak -e|' \
- ${WRKSRC}/libguile/Makefile.in
@${RM} -r ${WRKSRC}/prebuilt/32-bit-big-endian
-post-patch-THREADS-on:
- @${REINPLACE_CMD} -e 's|bdw-gc|bdw-gc-threaded|g' ${WRKSRC}/configure
+# DO NOT try and add rules here to strip .go files, no matter how loudly
+# testport / stage-qa shouts at you about it, because .go files (which are
+# compiled bytecode) are not intended to be stripped and doing so causes
+# breakage at run time.
+
+post-install:
+ for p in guile guild guile-tools guile-config guile-snarf; do \
+ ${LN} -s $${p}-${GUILE_VER} ${STAGEDIR}${PREFIX}/bin/$${p}${GUILE_SFX}; \
+ done
+ ${MV} ${STAGEDIR}${PREFIX}/man/man1/guile-${GUILE_VER}.1 \
+ ${STAGEDIR}${PREFIX}/man/man1/guile${GUILE_SFX}.1
.include <bsd.port.mk>
diff --git a/lang/guile2/files/patch-libguile_Makefile.in b/lang/guile2/files/patch-libguile_Makefile.in
new file mode 100644
--- /dev/null
+++ b/lang/guile2/files/patch-libguile_Makefile.in
@@ -0,0 +1,11 @@
+--- libguile/Makefile.in.orig 2023-05-19 23:42:28 UTC
++++ libguile/Makefile.in
+@@ -2239,7 +2239,7 @@ EXTRA_libguile_@GUILE_EFFECTIVE_VERSION@_la_SOURCES =
+ locale-categories.h
+
+ INSTANTIATE = \
+- $(SED) -i -e 's,[@]pkgdatadir[@],$(pkgdatadir),g' \
++ $(SED) -i.bak -e 's,[@]pkgdatadir[@],$(pkgdatadir),g' \
+ -e 's,[@]pkglibdir[@],$(pkglibdir),g' \
+ -e 's,[@]GUILE_EFFECTIVE_VERSION[@],$(GUILE_EFFECTIVE_VERSION),g'
+
diff --git a/lang/guile2/pkg-plist b/lang/guile2/pkg-plist
--- a/lang/guile2/pkg-plist
+++ b/lang/guile2/pkg-plist
@@ -1,8 +1,13 @@
-bin/guild
-bin/guile
-bin/guile-config
-bin/guile-snarf
-bin/guile-tools
+bin/guild%%GUILE_SFX%%
+bin/guile%%GUILE_SFX%%
+bin/guile-config%%GUILE_SFX%%
+bin/guile-snarf%%GUILE_SFX%%
+bin/guile-tools%%GUILE_SFX%%
+bin/guild-%%GUILE_VER%%
+bin/guile-%%GUILE_VER%%
+bin/guile-config-%%GUILE_VER%%
+bin/guile-snarf-%%GUILE_VER%%
+bin/guile-tools-%%GUILE_VER%%
include/guile/%%GUILE_VER%%/libguile.h
include/guile/%%GUILE_VER%%/libguile/__scm.h
include/guile/%%GUILE_VER%%/libguile/alist.h
@@ -442,8 +447,8 @@
lib/libguile-%%GUILE_VER%%.so.1.4.2
lib/libguile-%%GUILE_VER%%.so.1.4.2-gdb.scm
libdata/pkgconfig/guile-%%GUILE_VER%%.pc
-man/man1/guile.1.gz
-share/aclocal/guile.m4
+man/man1/guile%%GUILE_SFX%%.1.gz
+@comment share/aclocal/guile.m4
%%DATADIR%%/%%GUILE_VER%%/guile-procedures.txt
%%DATADIR%%/%%GUILE_VER%%/ice-9/and-let-star.scm
%%DATADIR%%/%%GUILE_VER%%/ice-9/arrays.scm
diff --git a/lang/guile3/Makefile b/lang/guile3/Makefile
new file mode 100644
--- /dev/null
+++ b/lang/guile3/Makefile
@@ -0,0 +1,101 @@
+PORTNAME?= guile
+PORTVERSION= 3.0.9
+PORTREVISION= 1
+CATEGORIES= lang scheme
+MASTER_SITES= GNU
+PKGNAMESUFFIX?= 3
+
+MAINTAINER= bofh@FreeBSD.org
+COMMENT= GNU Ubiquitous Intelligent Language for Extension
+WWW= https://www.gnu.org/software/guile/
+
+LICENSE= GPLv3 LGPL3
+LICENSE_COMB= multi
+
+USES= tar:lz
+
+# The -aclocal slave port includes this file to get the version,
+# distinfo, etc., but needs none of the definitions. So almost all
+# of the file is inside this .if
+
+.if empty(NO_BUILD)
+
+LIB_DEPENDS= libunistring.so:devel/libunistring \
+ libffi.so:devel/libffi
+
+# the aclocal/guile.m4 from this version is shared with guile2,
+# so it's hived off into a separate port to avoid a conflict.
+RUN_DEPENDS= guile-aclocal>=3:lang/guile-aclocal
+
+USES+= guile:${PORTVERSION:R},env \
+ charsetfix compiler:c11 cpe gmake iconv libtool \
+ makeinfo pathfix pkgconfig readline localbase
+CPE_VENDOR= gnu
+USE_LDCONFIG= yes
+GNU_CONFIGURE= yes
+CONFIGURE_ARGS= --program-suffix=-${GUILE_VER} \
+ --enable-lto=no
+# LTO is unconditionally off here because it fails to build with llvm,
+# fails to build even with gcc on some arches (reported for armv7 in
+# particular), and making it conditional on gcc/arch is trickier than
+# is strictly necessary. LTO_UNSAFE stops the framework from trying to
+# enable it for us if the user asks. Don't re-enable it unless you
+# tested build+run on more than just amd64/arm46.
+LTO_UNSAFE= yes
+
+# eliminate some pointless configure warnings/errors
+CONFIGURE_ENV+= gl_cv_func_working_mktime=yes \
+ ac_cv_header_sys_timeb_h=0
+
+MAKE_JOBS_UNSAFE= yes
+
+INSTALL_TARGET= install-strip
+
+INFO= guile r5rs
+
+INFO_PATH= share/info/guile${GUILE_SFX}
+
+OPTIONS_DEFINE= NLS THREADS MINIGMP
+OPTIONS_DEFAULT=THREADS
+OPTIONS_SUB= yes
+
+MINIGMP_DESC= Use embedded mini-gmp rather than external libgmp
+
+MINIGMP_LIB_DEPENDS_OFF= libgmp.so:math/gmp
+MINIGMP_CONFIGURE_ENABLE= mini-gmp
+
+NLS_USES= gettext
+NLS_CONFIGURE_ENABLE= nls
+
+THREADS_LIB_DEPENDS= libgc-threaded.so:devel/boehm-gc-threaded
+THREADS_LIB_DEPENDS_OFF=libgc.so:devel/boehm-gc
+THREADS_CONFIGURE_ON= --with-bdw-gc=bdw-gc-threaded
+THREADS_CONFIGURE_OFF= --with-bdw-gc=bdw-gc
+THREADS_CONFIGURE_WITH= threads
+
+# Upstream bugfixes: these aren't optional because the release version
+# has a broken (spawn*) function, which breaks guile-config, which
+# breaks builds of some dependent ports.
+
+EXTRA_PATCHES= ${PATCHDIR}/extra-patch-upstream-fixes.patch
+
+# The prebuilt bytecode files are reported not to work on powerpc.
+
+post-patch:
+ @${RM} -r ${WRKSRC}/prebuilt/32-bit-big-endian
+
+# DO NOT try and add rules here to strip .go files, no matter how loudly
+# testport / stage-qa shouts at you about it, because .go files (which are
+# compiled bytecode) are not intended to be stripped and doing so causes
+# breakage at run time.
+
+post-install:
+ for p in guile guild guile-tools guile-config guile-snarf; do \
+ ${LN} -s $${p}-${GUILE_VER} ${STAGEDIR}${PREFIX}/bin/$${p}${GUILE_SFX}; \
+ done
+ ${MV} ${STAGEDIR}${PREFIX}/man/man1/guile-${GUILE_VER}.1 \
+ ${STAGEDIR}${PREFIX}/man/man1/guile${GUILE_SFX}.1
+
+.endif # empty(NO_BUILD)
+
+.include <bsd.port.mk>
diff --git a/lang/guile/distinfo b/lang/guile3/distinfo
rename from lang/guile/distinfo
rename to lang/guile3/distinfo
--- a/lang/guile/distinfo
+++ b/lang/guile3/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1675263283
+TIMESTAMP = 1684250510
SHA256 (guile-3.0.9.tar.lz) = bc0ee0a360fb13919c14eb6e2453319adf1ec998288c993829bcf178fb48cc9a
SIZE (guile-3.0.9.tar.lz) = 5435196
diff --git a/lang/guile3/files/extra-patch-upstream-fixes.patch b/lang/guile3/files/extra-patch-upstream-fixes.patch
new file mode 100644
--- /dev/null
+++ b/lang/guile3/files/extra-patch-upstream-fixes.patch
@@ -0,0 +1,789 @@
+diff --git libguile/hash.c libguile/hash.c
+index c192ac2e5..5abdfe397 100644
+--- libguile/hash.c
++++ libguile/hash.c
+@@ -185,7 +185,7 @@ scm_i_utf8_string_hash (const char *str, size_t len)
+ /* Invalid UTF-8; punt. */
+ return scm_i_string_hash (scm_from_utf8_stringn (str, len));
+
+- length = u8_strnlen (ustr, len);
++ length = u8_mbsnlen (ustr, len);
+
+ /* Set up the internal state. */
+ a = b = c = 0xdeadbeef + ((uint32_t)(length<<2)) + 47;
+diff --git libguile/posix.c libguile/posix.c
+index 0b1fe2637..4cf4ef383 100644
+--- libguile/posix.c
++++ libguile/posix.c
+@@ -1322,41 +1322,38 @@ SCM_DEFINE (scm_fork, "primitive-fork", 0, 0, 0,
+ #undef FUNC_NAME
+ #endif /* HAVE_FORK */
+
+-static void
+-close_inherited_fds_slow (posix_spawn_file_actions_t *actions, int max_fd)
+-{
+- while (--max_fd > 2)
+- posix_spawn_file_actions_addclose (actions, max_fd);
+-}
++#ifdef HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSEFROM_NP
++# define HAVE_ADDCLOSEFROM 1
++#endif
++
++#ifndef HAVE_ADDCLOSEFROM
+
+ static void
+ close_inherited_fds (posix_spawn_file_actions_t *actions, int max_fd)
+ {
+- DIR *dirp;
+- struct dirent *d;
+- int fd;
+-
+- /* Try to use the platform-specific list of open file descriptors, so
+- we don't need to use the brute force approach. */
+- dirp = opendir ("/proc/self/fd");
+-
+- if (dirp == NULL)
+- return close_inherited_fds_slow (actions, max_fd);
+-
+- while ((d = readdir (dirp)) != NULL)
++ while (--max_fd > 2)
+ {
+- fd = atoi (d->d_name);
+-
+- /* Skip "." and "..", garbage entries, stdin/stdout/stderr. */
+- if (fd <= 2)
+- continue;
+-
+- posix_spawn_file_actions_addclose (actions, fd);
++ /* Adding a 'close' action for a file descriptor that is not open
++ causes 'posix_spawn' to fail on GNU/Hurd and on OpenBSD, but
++ not on GNU/Linux: <https://bugs.gnu.org/61095>. Hence this
++ strategy:
++
++ - On GNU/Linux, close every FD, since that's the only
++ race-free way to make sure the child doesn't inherit one.
++ - On other systems, only close FDs currently open in the
++ parent; it works, but it's racy (XXX).
++
++ The only reliable option is 'addclosefrom'. */
++#if ! (defined __GLIBC__ && defined __linux__)
++ int flags = fcntl (max_fd, F_GETFD, NULL);
++ if (flags >= 0)
++#endif
++ posix_spawn_file_actions_addclose (actions, max_fd);
+ }
+-
+- closedir (dirp);
+ }
+
++#endif
++
+ static pid_t
+ do_spawn (char *exec_file, char **exec_argv, char **exec_env,
+ int in, int out, int err, int spawnp)
+@@ -1393,14 +1390,27 @@ do_spawn (char *exec_file, char **exec_argv, char **exec_env,
+ /* Move the fds out of the way, so that duplicate fds or fds equal
+ to 0, 1, 2 don't trample each other */
+
+- posix_spawn_file_actions_adddup2 (&actions, in, fd_slot[0]);
+- posix_spawn_file_actions_adddup2 (&actions, out, fd_slot[1]);
+- posix_spawn_file_actions_adddup2 (&actions, err, fd_slot[2]);
+- posix_spawn_file_actions_adddup2 (&actions, fd_slot[0], 0);
+- posix_spawn_file_actions_adddup2 (&actions, fd_slot[1], 1);
+- posix_spawn_file_actions_adddup2 (&actions, fd_slot[2], 2);
++ int dup2_action_from[] = {in, out, err,
++ fd_slot[0], fd_slot[1], fd_slot[2]};
++ int dup2_action_to [] = {fd_slot[0], fd_slot[1], fd_slot[2],
++ 0, 1, 2};
+
++ errno = 0;
++ for (int i = 0; i < sizeof (dup2_action_from) / sizeof (int); i++)
++ {
++ errno = posix_spawn_file_actions_adddup2 (&actions, dup2_action_from[i],
++ dup2_action_to[i]);
++ if (errno != 0)
++ return -1;
++ }
++
++#ifdef HAVE_ADDCLOSEFROM
++ /* This function appears in glibc 2.34. It's both free from race
++ conditions and more efficient than the alternative. */
++ posix_spawn_file_actions_addclosefrom_np (&actions, 3);
++#else
+ close_inherited_fds (&actions, max_fd);
++#endif
+
+ int res = -1;
+ if (spawnp)
+@@ -1486,12 +1496,20 @@ SCM_DEFINE (scm_spawn_process, "spawn", 2, 0, 1,
+ if (SCM_UNBNDP (err_scm))
+ err_scm = scm_current_error_port ();
+
+-#define FDES_FROM_PORT_OR_INTEGER(obj) \
+- (scm_is_integer (obj) ? scm_to_int (obj) : SCM_FPORT_FDES (obj))
++#define FDES_FROM_PORT_OR_INTEGER(fd, obj, pos) \
++ { \
++ if (scm_is_integer (obj)) \
++ fd = scm_to_int (obj); \
++ else \
++ { \
++ SCM_VALIDATE_OPFPORT (pos, obj); \
++ fd = SCM_FPORT_FDES (obj); \
++ } \
++ }
+
+- in = FDES_FROM_PORT_OR_INTEGER (in_scm);
+- out = FDES_FROM_PORT_OR_INTEGER (out_scm);
+- err = FDES_FROM_PORT_OR_INTEGER (err_scm);
++ FDES_FROM_PORT_OR_INTEGER (in, in_scm, 3);
++ FDES_FROM_PORT_OR_INTEGER (out, out_scm, 4);
++ FDES_FROM_PORT_OR_INTEGER (err, err_scm, 5);
+
+ #undef FDES_FROM_PORT_OR_INTEGER
+
+@@ -1544,10 +1562,22 @@ piped_process (pid_t *pid, SCM prog, SCM args, SCM from, SCM to)
+
+ if (SCM_OPOUTFPORTP ((port = scm_current_error_port ())))
+ err = SCM_FPORT_FDES (port);
+- if (out == -1 && SCM_OPOUTFPORTP ((port = scm_current_output_port ())))
+- out = SCM_FPORT_FDES (port);
+- if (in == -1 && SCM_OPINFPORTP ((port = scm_current_input_port ())))
+- in = SCM_FPORT_FDES (port);
++ else
++ err = open ("/dev/null", O_WRONLY | O_CLOEXEC);
++ if (out == -1)
++ {
++ if (SCM_OPOUTFPORTP ((port = scm_current_output_port ())))
++ out = SCM_FPORT_FDES (port);
++ else
++ out = open ("/dev/null", O_WRONLY | O_CLOEXEC);
++ }
++ if (in == -1)
++ {
++ if (SCM_OPINFPORTP ((port = scm_current_input_port ())))
++ in = SCM_FPORT_FDES (port);
++ else
++ in = open ("/dev/null", O_RDONLY | O_CLOEXEC);
++ }
+ }
+
+ *pid = do_spawn (exec_file, exec_argv, exec_env, in, out, err, 1);
+diff --git libguile/symbols.c libguile/symbols.c
+index 02be7c1c4..086abf585 100644
+--- libguile/symbols.c
++++ libguile/symbols.c
+@@ -239,7 +239,7 @@ static SCM
+ scm_i_str2symbol (SCM str)
+ {
+ SCM symbol;
+- size_t raw_hash = scm_i_string_hash (str);
++ unsigned long raw_hash = scm_i_string_hash (str);
+
+ symbol = lookup_interned_symbol (str, raw_hash);
+ if (scm_is_true (symbol))
+@@ -261,7 +261,7 @@ scm_i_str2symbol (SCM str)
+ static SCM
+ scm_i_str2uninterned_symbol (SCM str)
+ {
+- size_t raw_hash = scm_i_string_hash (str);
++ unsigned long raw_hash = scm_i_string_hash (str);
+
+ return scm_i_make_symbol (str, SCM_I_F_SYMBOL_UNINTERNED, raw_hash);
+ }
+diff --git libguile/vm.c libguile/vm.c
+index b565db970..36138f0d5 100644
+--- libguile/vm.c
++++ libguile/vm.c
+@@ -1,4 +1,4 @@
+-/* Copyright 2001,2009-2015,2017-2020,2022
++/* Copyright 2001,2009-2015,2017-2020,2022-2023
+ Free Software Foundation, Inc.
+
+ This file is part of Guile.
+@@ -451,11 +451,12 @@ define_vm_builtins (void)
+
+ const uint32_t call_with_values_code[] = {
+ SCM_PACK_OP_24 (assert_nargs_ee, 3),
+- SCM_PACK_OP_24 (alloc_frame, 8),
+- SCM_PACK_OP_12_12 (mov, 0, 6),
+- SCM_PACK_OP_24 (call, 7), SCM_PACK_OP_ARG_8_24 (0, 1),
+- SCM_PACK_OP_24 (long_fmov, 0), SCM_PACK_OP_ARG_8_24 (0, 2),
+- SCM_PACK_OP_12_12 (shuffle_down, 7, 1),
++ SCM_PACK_OP_24 (alloc_frame, 6),
++ SCM_PACK_OP_12_12 (mov, 0, 4),
++ SCM_PACK_OP_12_12 (mov, 4, 3),
++ SCM_PACK_OP_24 (call, 5), SCM_PACK_OP_ARG_8_24 (0, 1),
++ SCM_PACK_OP_24 (long_fmov, 0), SCM_PACK_OP_ARG_8_24 (0, 1),
++ SCM_PACK_OP_12_12 (shuffle_down, 5, 1),
+ SCM_PACK_OP_24 (tail_call, 0)
+ };
+
+diff --git module/ice-9/copy-tree.scm module/ice-9/copy-tree.scm
+index e1d91ad9e..004167821 100644
+--- module/ice-9/copy-tree.scm
++++ module/ice-9/copy-tree.scm
+@@ -23,7 +23,6 @@
+
+
+ (define-module (ice-9 copy-tree)
+- #:use-module (ice-9 match)
+ #:use-module (srfi srfi-11)
+ #:replace (copy-tree))
+
+diff --git module/ice-9/eval-string.scm module/ice-9/eval-string.scm
+index 789980938..ea0f17777 100644
+--- module/ice-9/eval-string.scm
++++ module/ice-9/eval-string.scm
+@@ -21,7 +21,6 @@
+ (define-module (ice-9 eval-string)
+ #:use-module (system base compile)
+ #:use-module (system base language)
+- #:use-module (system vm program)
+ #:use-module (system vm loader)
+ #:replace (eval-string))
+
+diff --git module/ice-9/getopt-long.scm module/ice-9/getopt-long.scm
+index 14eaf8e23..18b235390 100644
+--- module/ice-9/getopt-long.scm
++++ module/ice-9/getopt-long.scm
+@@ -161,7 +161,6 @@
+ #:use-module (srfi srfi-9)
+ #:use-module (ice-9 match)
+ #:use-module (ice-9 regex)
+- #:use-module (ice-9 optargs)
+ #:export (getopt-long option-ref))
+
+ (define %program-name (make-fluid "guile"))
+diff --git module/ice-9/poll.scm module/ice-9/poll.scm
+index 57b5047ab..2688270ac 100644
+--- module/ice-9/poll.scm
++++ module/ice-9/poll.scm
+@@ -19,7 +19,6 @@
+
+ (define-module (ice-9 poll)
+ #:use-module (srfi srfi-9)
+- #:use-module (srfi srfi-9 gnu)
+ #:use-module (rnrs bytevectors)
+ #:export (make-empty-poll-set
+ poll-set?
+diff --git module/ice-9/popen.scm module/ice-9/popen.scm
+index e638726a4..957cde0aa 100644
+--- module/ice-9/popen.scm
++++ module/ice-9/popen.scm
+@@ -19,7 +19,6 @@
+ ;;;;
+
+ (define-module (ice-9 popen)
+- #:use-module (rnrs bytevectors)
+ #:use-module (ice-9 binary-ports)
+ #:use-module (ice-9 threads)
+ #:use-module (srfi srfi-1)
+diff --git module/ice-9/sandbox.scm module/ice-9/sandbox.scm
+index fcfc57365..601485cce 100644
+--- module/ice-9/sandbox.scm
++++ module/ice-9/sandbox.scm
+@@ -21,7 +21,6 @@
+ ;;; Code:
+
+ (define-module (ice-9 sandbox)
+- #:use-module (ice-9 control)
+ #:use-module (ice-9 match)
+ #:use-module ((ice-9 threads) #:select (current-thread))
+ #:use-module (system vm vm)
+diff --git module/ice-9/suspendable-ports.scm module/ice-9/suspendable-ports.scm
+index a823f1d37..9fac1df62 100644
+--- module/ice-9/suspendable-ports.scm
++++ module/ice-9/suspendable-ports.scm
+@@ -419,7 +419,7 @@
+ (= (logand u8_2 #xc0) #x80)
+ (case u8_0
+ ((#xe0) (>= u8_1 #xa0))
+- ((#xed) (>= u8_1 #x9f))
++ ((#xed) (<= u8_1 #x9f))
+ (else #t)))
+ (kt (integer->char
+ (logior (ash (logand u8_0 #x0f) 12)
+@@ -436,7 +436,7 @@
+ (= (logand u8_3 #xc0) #x80)
+ (case u8_0
+ ((#xf0) (>= u8_1 #x90))
+- ((#xf4) (>= u8_1 #x8f))
++ ((#xf4) (<= u8_1 #x8f))
+ (else #t)))
+ (kt (integer->char
+ (logior (ash (logand u8_0 #x07) 18)
+@@ -462,7 +462,7 @@
+ ((< buffering 2) 1)
+ ((not (= (logand (ref 1) #xc0) #x80)) 1)
+ ((and (eq? first-byte #xe0) (< (ref 1) #xa0)) 1)
+- ((and (eq? first-byte #xed) (< (ref 1) #x9f)) 1)
++ ((and (eq? first-byte #xed) (> (ref 1) #x9f)) 1)
+ ((< buffering 3) 2)
+ ((not (= (logand (ref 2) #xc0) #x80)) 2)
+ (else 0)))
+@@ -471,7 +471,7 @@
+ ((< buffering 2) 1)
+ ((not (= (logand (ref 1) #xc0) #x80)) 1)
+ ((and (eq? first-byte #xf0) (< (ref 1) #x90)) 1)
+- ((and (eq? first-byte #xf4) (< (ref 1) #x8f)) 1)
++ ((and (eq? first-byte #xf4) (> (ref 1) #x8f)) 1)
+ ((< buffering 3) 2)
+ ((not (= (logand (ref 2) #xc0) #x80)) 2)
+ ((< buffering 4) 3)
+diff --git module/ice-9/threads.scm module/ice-9/threads.scm
+index c42bd266f..5a13cec1d 100644
+--- module/ice-9/threads.scm
++++ module/ice-9/threads.scm
+@@ -31,7 +31,6 @@
+
+ (define-module (ice-9 threads)
+ #:use-module (ice-9 match)
+- #:use-module (ice-9 control)
+ ;; These bindings are marked as #:replace because when deprecated code
+ ;; is enabled, (ice-9 deprecated) also exports these names.
+ ;; (Referencing one of the deprecated names prints a warning directing
+diff --git module/sxml/apply-templates.scm module/sxml/apply-templates.scm
+index 0ee27477c..dd2742397 100644
+--- module/sxml/apply-templates.scm
++++ module/sxml/apply-templates.scm
+@@ -49,9 +49,7 @@
+ ;;; Code:
+
+ (define-module (sxml apply-templates)
+- #:use-module (sxml ssax)
+ #:use-module ((sxml xpath) :hide (filter))
+-
+ #:export (apply-templates))
+
+ (define (apply-templates tree templates)
+diff --git module/sxml/simple.scm module/sxml/simple.scm
+index 703ad9137..57fccbc9c 100644
+--- module/sxml/simple.scm
++++ module/sxml/simple.scm
+@@ -30,7 +30,6 @@
+ #:use-module (sxml ssax)
+ #:use-module (sxml transform)
+ #:use-module (ice-9 match)
+- #:use-module (srfi srfi-13)
+ #:export (xml->sxml sxml->xml sxml->string))
+
+ ;; Helpers from upstream/SSAX.scm.
+diff --git module/system/base/types.scm module/system/base/types.scm
+index b63febff8..7ed038d3a 100644
+--- module/system/base/types.scm
++++ module/system/base/types.scm
+@@ -20,7 +20,6 @@
+ #:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-9)
+ #:use-module (srfi srfi-9 gnu)
+- #:use-module (srfi srfi-11)
+ #:use-module (srfi srfi-26)
+ #:use-module (srfi srfi-60)
+ #:use-module (ice-9 match)
+diff --git module/system/repl/command.scm module/system/repl/command.scm
+index 0024fd165..74187270a 100644
+--- module/system/repl/command.scm
++++ module/system/repl/command.scm
+@@ -20,7 +20,6 @@
+ ;;; Code:
+
+ (define-module (system repl command)
+- #:use-module (system base syntax)
+ #:use-module (system base pmatch)
+ #:autoload (system base compile) (compile-file)
+ #:use-module (system repl common)
+@@ -31,14 +30,12 @@
+ #:use-module (system vm loader)
+ #:use-module (system vm program)
+ #:use-module (system vm trap-state)
+- #:use-module (system vm vm)
+ #:autoload (system base language) (lookup-language language-reader
+ language-title language-name)
+ #:autoload (system vm trace) (call-with-trace)
+ #:use-module (ice-9 format)
+ #:use-module (ice-9 session)
+ #:use-module (ice-9 documentation)
+- #:use-module (ice-9 and-let-star)
+ #:use-module (ice-9 rdelim)
+ #:use-module (ice-9 control)
+ #:use-module ((ice-9 pretty-print) #:select ((pretty-print . pp)))
+diff --git module/system/repl/common.scm module/system/repl/common.scm
+index 8c5426d37..59b5c494a 100644
+--- module/system/repl/common.scm
++++ module/system/repl/common.scm
+@@ -22,8 +22,6 @@
+ #:use-module (system base syntax)
+ #:use-module (system base compile)
+ #:use-module (system base language)
+- #:use-module (system base message)
+- #:use-module (system vm program)
+ #:use-module (system vm loader)
+ #:use-module (ice-9 control)
+ #:use-module (ice-9 copy-tree)
+diff --git module/system/repl/coop-server.scm module/system/repl/coop-server.scm
+index c29bbd645..aaab44f6e 100644
+--- module/system/repl/coop-server.scm
++++ module/system/repl/coop-server.scm
+@@ -21,7 +21,6 @@
+
+ (define-module (system repl coop-server)
+ #:use-module (ice-9 match)
+- #:use-module (ice-9 receive)
+ #:use-module (ice-9 threads)
+ #:use-module (ice-9 q)
+ #:use-module (srfi srfi-9)
+diff --git module/system/repl/debug.scm module/system/repl/debug.scm
+index 383d37921..c83241340 100644
+--- module/system/repl/debug.scm
++++ module/system/repl/debug.scm
+@@ -19,17 +19,11 @@
+ ;;; Code:
+
+ (define-module (system repl debug)
+- #:use-module (system base pmatch)
+ #:use-module (system base syntax)
+- #:use-module (system base language)
+- #:use-module (system vm vm)
+ #:use-module (system vm frame)
+ #:use-module (system vm debug)
+ #:use-module (ice-9 format)
+ #:use-module (ice-9 match)
+- #:use-module (ice-9 rdelim)
+- #:use-module (ice-9 pretty-print)
+- #:use-module ((system vm inspect) #:select ((inspect . %inspect)))
+ #:use-module (system vm program)
+ #:export (<debug>
+ make-debug debug?
+diff --git module/system/repl/error-handling.scm module/system/repl/error-handling.scm
+index 8d5a8a5f0..c12ca6f4a 100644
+--- module/system/repl/error-handling.scm
++++ module/system/repl/error-handling.scm
+@@ -20,7 +20,6 @@
+ ;;; Code:
+
+ (define-module (system repl error-handling)
+- #:use-module (system base pmatch)
+ #:use-module (system vm trap-state)
+ #:use-module (system repl debug)
+ #:use-module (ice-9 format)
+diff --git module/system/repl/repl.scm module/system/repl/repl.scm
+index 5b27125f1..d83d28759 100644
+--- module/system/repl/repl.scm
++++ module/system/repl/repl.scm
+@@ -21,11 +21,7 @@
+ ;;; Code:
+
+ (define-module (system repl repl)
+- #:use-module (system base syntax)
+- #:use-module (system base pmatch)
+- #:use-module (system base compile)
+ #:use-module (system base language)
+- #:use-module (system vm vm)
+ #:use-module (system repl error-handling)
+ #:use-module (system repl common)
+ #:use-module (system repl command)
+diff --git module/system/repl/server.scm module/system/repl/server.scm
+index 7a04affe9..9a8f51c5b 100644
+--- module/system/repl/server.scm
++++ module/system/repl/server.scm
+@@ -27,7 +27,6 @@
+ #:use-module (ice-9 iconv)
+ #:use-module (rnrs bytevectors)
+ #:use-module (ice-9 binary-ports)
+- #:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-26) ; cut
+ #:export (make-tcp-server-socket
+ make-unix-domain-server-socket
+diff --git module/system/vm/assembler.scm module/system/vm/assembler.scm
+index 165976363..33f3018f6 100644
+--- module/system/vm/assembler.scm
++++ module/system/vm/assembler.scm
+@@ -51,12 +51,10 @@
+ #:use-module (system syntax internal)
+ #:use-module (language bytecode)
+ #:use-module (rnrs bytevectors)
+- #:use-module (rnrs bytevectors gnu)
+ #:use-module (ice-9 binary-ports)
+ #:use-module (ice-9 vlist)
+ #:use-module (ice-9 match)
+ #:use-module (srfi srfi-1)
+- #:use-module (srfi srfi-4)
+ #:use-module (srfi srfi-9)
+ #:use-module (srfi srfi-11)
+ #:export (make-assembler
+diff --git module/system/vm/disassembler.scm module/system/vm/disassembler.scm
+index 2c9755ab9..ac1d21639 100644
+--- module/system/vm/disassembler.scm
++++ module/system/vm/disassembler.scm
+@@ -29,9 +29,7 @@
+ #:use-module (rnrs bytevectors)
+ #:use-module (ice-9 format)
+ #:use-module (ice-9 match)
+- #:use-module (ice-9 vlist)
+ #:use-module (srfi srfi-1)
+- #:use-module (srfi srfi-4)
+ #:export (disassemble-program
+ fold-program-code
+ disassemble-image
+diff --git module/system/vm/dwarf.scm module/system/vm/dwarf.scm
+index f3e45c758..587906c9e 100644
+--- module/system/vm/dwarf.scm
++++ module/system/vm/dwarf.scm
+@@ -71,8 +71,6 @@
+
+ (define-module (system vm dwarf)
+ #:use-module (rnrs bytevectors)
+- #:use-module (system foreign)
+- #:use-module (system base target)
+ #:use-module (system vm elf)
+ #:use-module ((srfi srfi-1) #:select (fold))
+ #:use-module (srfi srfi-9)
+diff --git module/system/vm/elf.scm module/system/vm/elf.scm
+index 6ee62f129..8cd142bbe 100644
+--- module/system/vm/elf.scm
++++ module/system/vm/elf.scm
+@@ -36,8 +36,6 @@
+ #:use-module (system foreign)
+ #:use-module (system base target)
+ #:use-module (srfi srfi-9)
+- #:use-module (ice-9 receive)
+- #:use-module (ice-9 vlist)
+ #:export (has-elf-header?
+
+ (make-elf* . make-elf)
+diff --git module/system/vm/frame.scm module/system/vm/frame.scm
+index 6b14fc62a..9218bf3b2 100644
+--- module/system/vm/frame.scm
++++ module/system/vm/frame.scm
+@@ -19,8 +19,6 @@
+ ;;; Code:
+
+ (define-module (system vm frame)
+- #:use-module (system base pmatch)
+- #:use-module (system foreign)
+ #:use-module (system vm program)
+ #:use-module (system vm debug)
+ #:use-module (system vm disassembler)
+diff --git module/system/vm/inspect.scm module/system/vm/inspect.scm
+index 1f6d99d19..4825fa234 100644
+--- module/system/vm/inspect.scm
++++ module/system/vm/inspect.scm
+@@ -19,12 +19,7 @@
+ ;;; Code:
+
+ (define-module (system vm inspect)
+- #:use-module (system base pmatch)
+- #:use-module (system base syntax)
+- #:use-module (system vm vm)
+- #:use-module (system vm frame)
+ #:use-module (system vm disassembler)
+- #:use-module (ice-9 rdelim)
+ #:use-module (ice-9 pretty-print)
+ #:use-module (ice-9 format)
+ #:use-module (system vm program)
+diff --git module/system/vm/linker.scm module/system/vm/linker.scm
+index e126cfb0d..cf213323e 100644
+--- module/system/vm/linker.scm
++++ module/system/vm/linker.scm
+@@ -67,9 +67,7 @@
+ (define-module (system vm linker)
+ #:use-module (rnrs bytevectors)
+ #:use-module (rnrs bytevectors gnu)
+- #:use-module (system foreign)
+ #:use-module (system base target)
+- #:use-module ((srfi srfi-1) #:select (append-map))
+ #:use-module (srfi srfi-9)
+ #:use-module (ice-9 binary-ports)
+ #:use-module (ice-9 receive)
+diff --git module/system/vm/program.scm module/system/vm/program.scm
+index e5dbcc089..4858d5158 100644
+--- module/system/vm/program.scm
++++ module/system/vm/program.scm
+@@ -21,7 +21,6 @@
+ (define-module (system vm program)
+ #:use-module (ice-9 match)
+ #:use-module (system vm debug)
+- #:use-module (rnrs bytevectors)
+ #:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-26)
+ #:export (source:addr source:line source:column source:file
+diff --git module/system/vm/trace.scm module/system/vm/trace.scm
+index 54840d8fd..c1eaffa9c 100644
+--- module/system/vm/trace.scm
++++ module/system/vm/trace.scm
+@@ -19,12 +19,9 @@
+ ;;; Code:
+
+ (define-module (system vm trace)
+- #:use-module (system base syntax)
+ #:use-module (system vm vm)
+ #:use-module (system vm frame)
+- #:use-module (system vm program)
+ #:use-module (system vm traps)
+- #:use-module (rnrs bytevectors)
+ #:use-module (ice-9 format)
+ #:export (trace-calls-in-procedure
+ trace-calls-to-procedure
+diff --git module/system/vm/trap-state.scm module/system/vm/trap-state.scm
+index 464740bcd..ba4cc6b31 100644
+--- module/system/vm/trap-state.scm
++++ module/system/vm/trap-state.scm
+@@ -26,7 +26,6 @@
+ #:use-module (system vm vm)
+ #:use-module (system vm traps)
+ #:use-module (system vm trace)
+- #:use-module (system vm frame)
+ #:use-module (system vm program)
+ #:export (add-trap!
+ list-traps
+diff --git module/system/vm/traps.scm module/system/vm/traps.scm
+index 76be8d7d3..cd0e13cc9 100644
+--- module/system/vm/traps.scm
++++ module/system/vm/traps.scm
+@@ -58,10 +58,8 @@
+ #:use-module (ice-9 match)
+ #:use-module (system vm vm)
+ #:use-module (system vm debug)
+- #:use-module (system vm frame)
+ #:use-module (system vm program)
+ #:use-module (system xref)
+- #:use-module (rnrs bytevectors)
+ #:export (trap-at-procedure-call
+ trap-in-procedure
+ trap-instructions-in-procedure
+diff --git module/system/xref.scm module/system/xref.scm
+index e335f9481..104bf3edf 100644
+--- module/system/xref.scm
++++ module/system/xref.scm
+@@ -17,7 +17,6 @@
+
+
+ (define-module (system xref)
+- #:use-module (system base compile)
+ #:use-module (system vm program)
+ #:use-module (system vm disassembler)
+ #:use-module (ice-9 match)
+diff --git module/texinfo/indexing.scm module/texinfo/indexing.scm
+index d7d10cd69..c77013d7d 100644
+--- module/texinfo/indexing.scm
++++ module/texinfo/indexing.scm
+@@ -29,7 +29,6 @@
+
+ (define-module (texinfo indexing)
+ #:use-module (sxml simple)
+- #:use-module (srfi srfi-13)
+ #:export (stexi-extract-index))
+
+ (define defines
+diff --git module/texinfo/plain-text.scm module/texinfo/plain-text.scm
+index 5ea99c86b..666df74f5 100644
+--- module/texinfo/plain-text.scm
++++ module/texinfo/plain-text.scm
+@@ -26,11 +26,8 @@
+ ;;; Code:
+
+ (define-module (texinfo plain-text)
+- #:use-module (texinfo)
+ #:use-module (texinfo string-utils)
+- #:use-module (sxml transform)
+ #:use-module (srfi srfi-1)
+- #:use-module (srfi srfi-13)
+ #:use-module (ice-9 match)
+ #:export (stexi->plain-text
+ *line-width*))
+diff --git module/texinfo/reflection.scm module/texinfo/reflection.scm
+index 50cb2ab05..4ff11995c 100644
+--- module/texinfo/reflection.scm
++++ module/texinfo/reflection.scm
+@@ -33,10 +33,8 @@
+ #:use-module (oop goops)
+ #:use-module (texinfo)
+ #:use-module (texinfo plain-text)
+- #:use-module (srfi srfi-13)
+ #:use-module (ice-9 session)
+ #:use-module (ice-9 documentation)
+- #:use-module (ice-9 optargs)
+ #:use-module ((sxml transform) #:select (pre-post-order))
+ #:export (module-stexi-documentation
+ script-stexi-documentation
+diff --git module/texinfo/string-utils.scm module/texinfo/string-utils.scm
+index 42074d334..0d2c994d7 100644
+--- module/texinfo/string-utils.scm
++++ module/texinfo/string-utils.scm
+@@ -24,8 +24,6 @@
+ ;;; Code:
+
+ (define-module (texinfo string-utils)
+- #:use-module (srfi srfi-13)
+- #:use-module (srfi srfi-14)
+ #:export (escape-special-chars
+ transform-string
+ expand-tabs
+diff --git module/web/client.scm module/web/client.scm
+index a08c4203c..6c54c5021 100644
+--- module/web/client.scm
++++ module/web/client.scm
+@@ -36,7 +36,6 @@
+ #:use-module (ice-9 binary-ports)
+ #:use-module (ice-9 copy-tree)
+ #:use-module (ice-9 iconv)
+- #:use-module (ice-9 rdelim)
+ #:use-module (web request)
+ #:use-module (web response)
+ #:use-module (web uri)
+@@ -45,8 +44,6 @@
+ #:use-module (srfi srfi-9)
+ #:use-module (srfi srfi-9 gnu)
+ #:use-module (srfi srfi-26)
+- #:use-module ((rnrs io ports)
+- #:prefix rnrs-ports:)
+ #:use-module (ice-9 match)
+ #:autoload (ice-9 ftw) (scandir)
+ #:export (current-http-proxy
+diff --git module/web/http.scm module/web/http.scm
+index 29736f2eb..94f9c7ea8 100644
+--- module/web/http.scm
++++ module/web/http.scm
+@@ -30,7 +30,6 @@
+ ;;; Code:
+
+ (define-module (web http)
+- #:use-module ((srfi srfi-1) #:select (append-map! map!))
+ #:use-module (srfi srfi-9)
+ #:use-module (srfi srfi-19)
+ #:use-module (ice-9 rdelim)
+@@ -39,7 +38,6 @@
+ #:use-module (ice-9 binary-ports)
+ #:use-module (ice-9 textual-ports)
+ #:use-module (ice-9 exceptions)
+- #:use-module (rnrs bytevectors)
+ #:use-module (web uri)
+ #:export (string->header
+ header->string
+diff --git module/web/request.scm module/web/request.scm
+index eea32e9ce..ff4b94485 100644
+--- module/web/request.scm
++++ module/web/request.scm
+@@ -23,7 +23,6 @@
+ #:use-module (rnrs bytevectors)
+ #:use-module (ice-9 binary-ports)
+ #:use-module (ice-9 textual-ports)
+- #:use-module (ice-9 rdelim)
+ #:use-module (srfi srfi-9)
+ #:use-module (web uri)
+ #:use-module (web http)
+diff --git module/web/response.scm module/web/response.scm
+index 06e1c6dc1..4ac4d74ca 100644
+--- module/web/response.scm
++++ module/web/response.scm
+@@ -20,10 +20,8 @@
+ ;;; Code:
+
+ (define-module (web response)
+- #:use-module (rnrs bytevectors)
+ #:use-module (ice-9 binary-ports)
+ #:use-module (ice-9 textual-ports)
+- #:use-module (ice-9 rdelim)
+ #:use-module (ice-9 match)
+ #:use-module (srfi srfi-9)
+ #:use-module (web http)
diff --git a/lang/guile3/files/patch-configure b/lang/guile3/files/patch-configure
new file mode 100644
--- /dev/null
+++ b/lang/guile3/files/patch-configure
@@ -0,0 +1,18 @@
+--- configure.orig 2023-05-25 12:23:46 UTC
++++ configure
+@@ -60073,6 +60073,15 @@ then :
+
+ fi
+
++ac_fn_c_check_func "$LINENO" "posix_spawn_file_actions_addclosefrom_np" "ac_cv_func_posix_spawn_file_actions_addclosefrom_np"
++if test "x$ac_cv_func_posix_spawn_file_actions_addclosefrom_np" = xyes
++then :
++ printf "%s\n" "#define HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSEFROM_NP 1" >>confdefs.h
++
++fi
++
++
++
+
+ # The newlib C library uses _NL_ prefixed locale langinfo constants.
+ ac_fn_check_decl "$LINENO" "_NL_NUMERIC_GROUPING" "ac_cv_have_decl__NL_NUMERIC_GROUPING" "#include <langinfo.h>
diff --git a/lang/guile3/files/patch-libguile_Makefile.in b/lang/guile3/files/patch-libguile_Makefile.in
new file mode 100644
--- /dev/null
+++ b/lang/guile3/files/patch-libguile_Makefile.in
@@ -0,0 +1,20 @@
+--- libguile/Makefile.in.orig 2023-05-16 18:13:33 UTC
++++ libguile/Makefile.in
+@@ -2535,7 +2535,7 @@ EXTRA_libguile_@GUILE_EFFECTIVE_VERSION@_la_SOURCES =
+ mini-gmp.h
+
+ INSTANTIATE = \
+- $(SED) -i -e 's,[@]pkgdatadir[@],$(pkgdatadir),g' \
++ $(SED) -i '' -e 's,[@]pkgdatadir[@],$(pkgdatadir),g' \
+ -e 's,[@]pkglibdir[@],$(pkglibdir),g' \
+ -e 's,[@]GUILE_EFFECTIVE_VERSION[@],$(GUILE_EFFECTIVE_VERSION),g'
+
+@@ -4633,7 +4633,7 @@ uninstall-hook:
+ @MINGW_LIBPATH_FALSE@ @echo ' { "LIBS", "@GUILE_LIBS@" }, \' >> libpath.tmp
+ @MINGW_LIBPATH_FALSE@ @echo ' { "CFLAGS", "@GUILE_CFLAGS@" }, \' >> libpath.tmp
+ @MINGW_LIBPATH_FALSE@ @BUILD_DATE="$${SOURCE_DATE_EPOCH:-`date '+%s'`}" ; \
+-@MINGW_LIBPATH_FALSE@ echo ' { "buildstamp", "'`date -u +'%Y-%m-%d %T' -d @$$BUILD_DATE`'" }, \' >> libpath.tmp
++@MINGW_LIBPATH_FALSE@ echo ' { "buildstamp", "'`date -j -u -f %s $$BUILD_DATE +'%Y-%m-%d %T'`'" }, \' >> libpath.tmp
+ @MINGW_LIBPATH_FALSE@ @echo '}' >> libpath.tmp
+ @MINGW_LIBPATH_FALSE@ $(AM_V_GEN)mv libpath.tmp libpath.h
+
diff --git a/lang/guile3/files/patch-libguile_gen-scmconfig.c b/lang/guile3/files/patch-libguile_gen-scmconfig.c
new file mode 100644
--- /dev/null
+++ b/lang/guile3/files/patch-libguile_gen-scmconfig.c
@@ -0,0 +1,13 @@
+--- libguile/gen-scmconfig.c.orig 2021-03-09 19:24:59 UTC
++++ libguile/gen-scmconfig.c
+@@ -343,6 +343,10 @@ main (int argc, char *argv[])
+ pf ("typedef int scm_t_off;\n");
+ pf ("#define SCM_T_OFF_MAX INT_MAX\n");
+ pf ("#define SCM_T_OFF_MIN INT_MIN\n");
++#elif SIZEOF_OFF_T == SIZEOF_LONG_LONG
++ pf ("typedef long long int scm_t_off;\n");
++ pf ("#define SCM_T_OFF_MAX LLONG_MAX\n");
++ pf ("#define SCM_T_OFF_MIN LLONG_MIN\n");
+ #else
+ pf ("typedef long int scm_t_off;\n");
+ pf ("#define SCM_T_OFF_MAX LONG_MAX\n");
diff --git a/lang/guile/pkg-descr b/lang/guile3/pkg-descr
rename from lang/guile/pkg-descr
rename to lang/guile3/pkg-descr
diff --git a/lang/guile/pkg-plist b/lang/guile3/pkg-plist
rename from lang/guile/pkg-plist
rename to lang/guile3/pkg-plist
--- a/lang/guile/pkg-plist
+++ b/lang/guile3/pkg-plist
@@ -1,8 +1,13 @@
-bin/guild
-bin/guile
-bin/guile-config
-bin/guile-snarf
-bin/guile-tools
+bin/guild%%GUILE_SFX%%
+bin/guile-config%%GUILE_SFX%%
+bin/guile-snarf%%GUILE_SFX%%
+bin/guile-tools%%GUILE_SFX%%
+bin/guile%%GUILE_SFX%%
+bin/guild-%%GUILE_VER%%
+bin/guile-config-%%GUILE_VER%%
+bin/guile-snarf-%%GUILE_VER%%
+bin/guile-tools-%%GUILE_VER%%
+bin/guile-%%GUILE_VER%%
include/guile/%%GUILE_VER%%/libguile.h
include/guile/%%GUILE_VER%%/libguile/__scm.h
include/guile/%%GUILE_VER%%/libguile/alist.h
@@ -130,7 +135,6 @@
include/guile/%%GUILE_VER%%/libguile/weak-table.h
include/guile/%%GUILE_VER%%/libguile/weak-vector.h
include/guile/%%GUILE_VER%%/readline.h
-@comment lib/charset.alias
lib/guile/%%GUILE_VER%%/ccache/ice-9/and-let-star.go
lib/guile/%%GUILE_VER%%/ccache/ice-9/arrays.go
lib/guile/%%GUILE_VER%%/ccache/ice-9/atomic.go
@@ -341,15 +345,12 @@
lib/guile/%%GUILE_VER%%/ccache/scheme/repl.go
lib/guile/%%GUILE_VER%%/ccache/scheme/time.go
lib/guile/%%GUILE_VER%%/ccache/scheme/write.go
-lib/guile/%%GUILE_VER%%/ccache/system/base/optimize.go
-lib/guile/%%GUILE_VER%%/ccache/system/base/types/internal.go
lib/guile/%%GUILE_VER%%/ccache/scripts/api-diff.go
lib/guile/%%GUILE_VER%%/ccache/scripts/autofrisk.go
lib/guile/%%GUILE_VER%%/ccache/scripts/compile.go
lib/guile/%%GUILE_VER%%/ccache/scripts/disassemble.go
lib/guile/%%GUILE_VER%%/ccache/scripts/display-commentary.go
lib/guile/%%GUILE_VER%%/ccache/scripts/doc-snarf.go
-lib/guile/%%GUILE_VER%%/ccache/system/foreign-library.go
lib/guile/%%GUILE_VER%%/ccache/scripts/frisk.go
lib/guile/%%GUILE_VER%%/ccache/scripts/generate-autoload.go
lib/guile/%%GUILE_VER%%/ccache/scripts/help.go
@@ -418,10 +419,13 @@
lib/guile/%%GUILE_VER%%/ccache/system/base/lalr.go
lib/guile/%%GUILE_VER%%/ccache/system/base/language.go
lib/guile/%%GUILE_VER%%/ccache/system/base/message.go
+lib/guile/%%GUILE_VER%%/ccache/system/base/optimize.go
lib/guile/%%GUILE_VER%%/ccache/system/base/pmatch.go
lib/guile/%%GUILE_VER%%/ccache/system/base/syntax.go
lib/guile/%%GUILE_VER%%/ccache/system/base/target.go
lib/guile/%%GUILE_VER%%/ccache/system/base/types.go
+lib/guile/%%GUILE_VER%%/ccache/system/base/types/internal.go
+lib/guile/%%GUILE_VER%%/ccache/system/foreign-library.go
lib/guile/%%GUILE_VER%%/ccache/system/foreign-object.go
lib/guile/%%GUILE_VER%%/ccache/system/foreign.go
lib/guile/%%GUILE_VER%%/ccache/system/repl/command.go
@@ -473,8 +477,8 @@
lib/libguile-%%GUILE_VER%%.so.1.6.0
lib/libguile-%%GUILE_VER%%.so.1.6.0-gdb.scm
libdata/pkgconfig/guile-%%GUILE_VER%%.pc
-man/man1/guile.1.gz
-share/aclocal/guile.m4
+man/man1/guile%%GUILE_SFX%%.1.gz
+@comment share/aclocal/guile.m4
%%DATADIR%%/%%GUILE_VER%%/guile-procedures.txt
%%DATADIR%%/%%GUILE_VER%%/ice-9/and-let-star.scm
%%DATADIR%%/%%GUILE_VER%%/ice-9/arrays.scm
@@ -692,8 +696,6 @@
%%DATADIR%%/%%GUILE_VER%%/scheme/repl.scm
%%DATADIR%%/%%GUILE_VER%%/scheme/time.scm
%%DATADIR%%/%%GUILE_VER%%/scheme/write.scm
-%%DATADIR%%/%%GUILE_VER%%/system/base/optimize.scm
-%%DATADIR%%/%%GUILE_VER%%/system/base/types/internal.scm
%%DATADIR%%/%%GUILE_VER%%/scripts/api-diff.scm
%%DATADIR%%/%%GUILE_VER%%/scripts/autofrisk.scm
%%DATADIR%%/%%GUILE_VER%%/scripts/compile.scm
@@ -778,10 +780,12 @@
%%DATADIR%%/%%GUILE_VER%%/system/base/lalr.upstream.scm
%%DATADIR%%/%%GUILE_VER%%/system/base/language.scm
%%DATADIR%%/%%GUILE_VER%%/system/base/message.scm
+%%DATADIR%%/%%GUILE_VER%%/system/base/optimize.scm
%%DATADIR%%/%%GUILE_VER%%/system/base/pmatch.scm
%%DATADIR%%/%%GUILE_VER%%/system/base/syntax.scm
%%DATADIR%%/%%GUILE_VER%%/system/base/target.scm
%%DATADIR%%/%%GUILE_VER%%/system/base/types.scm
+%%DATADIR%%/%%GUILE_VER%%/system/base/types/internal.scm
%%DATADIR%%/%%GUILE_VER%%/system/foreign-library.scm
%%DATADIR%%/%%GUILE_VER%%/system/foreign-object.scm
%%DATADIR%%/%%GUILE_VER%%/system/foreign.scm
diff --git a/lang/mdk/Makefile b/lang/mdk/Makefile
--- a/lang/mdk/Makefile
+++ b/lang/mdk/Makefile
@@ -22,8 +22,7 @@
OPTIONS_SUB= yes
GUILE_CONFIGURE_WITH= guile
-GUILE_LIB_DEPENDS= libguile-2.2.so:lang/guile2 \
- libgc-threaded.so:devel/boehm-gc-threaded
+GUILE_USES= guile:2.2
NLS_CONFIGURE_ENABLE= nls
diff --git a/lang/slib-guile/Makefile b/lang/slib-guile/Makefile
--- a/lang/slib-guile/Makefile
+++ b/lang/slib-guile/Makefile
@@ -1,21 +1,26 @@
PORTNAME= slib
PORTVERSION= 3b6 # Keep this in sync with lang/slib
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= lang scheme
MASTER_SITES= # empty
-PKGNAMESUFFIX= -guile
+PKGNAMESUFFIX= -${FLAVOR}
DISTFILES= # empty
MAINTAINER= bofh@FreeBSD.org
COMMENT= SLIB installation for Guile
+WWW= https://people.csail.mit.edu/jaffer/SLIB.html
-BUILD_DEPENDS= ${LOCALBASE}/share/slib/require.scm:lang/slib \
- guile:lang/guile
-RUN_DEPENDS:= ${BUILD_DEPENDS}
+BUILD_DEPENDS= ${LOCALBASE}/share/slib/require.scm:lang/slib
+RUN_DEPENDS= ${LOCALBASE}/share/slib/require.scm:lang/slib
+
+USES= guile:1.8,2.2,3.0,flavors,build,run
-SUB_FILES+= pkg-install pkg-deinstall
NO_ARCH= yes
NO_BUILD= yes
NO_INSTALL= yes
+SUB_FILES+= pkg-install pkg-deinstall
+SUB_LIST+= GUILE_VER=${GUILE_VER} \
+ SLIB_INIT=${${GUILE_SFX} >= 2:?guile-2.init:guile.init}
+
.include <bsd.port.mk>
diff --git a/lang/slib-guile/files/pkg-deinstall.in b/lang/slib-guile/files/pkg-deinstall.in
--- a/lang/slib-guile/files/pkg-deinstall.in
+++ b/lang/slib-guile/files/pkg-deinstall.in
@@ -2,7 +2,7 @@
case "$2" in
"POST-DEINSTALL")
- rm -f %%LOCALBASE%%/share/guile/3.0/slib
- rm -f %%LOCALBASE%%/share/guile/3.0/slibcat
+ rm -f %%LOCALBASE%%/share/guile/%%GUILE_VER%%/slib
+ rm -f %%LOCALBASE%%/share/guile/%%GUILE_VER%%/slibcat
;;
esac
diff --git a/lang/slib-guile/files/pkg-install.in b/lang/slib-guile/files/pkg-install.in
--- a/lang/slib-guile/files/pkg-install.in
+++ b/lang/slib-guile/files/pkg-install.in
@@ -2,7 +2,7 @@
case "$2" in
"POST-INSTALL")
- ln -shf %%LOCALBASE%%/share/slib %%LOCALBASE%%/share/guile/3.0/slib
- env GUILE_IMPLEMENTATION_PATH=%%LOCALBASE%%/share/guile/3.0 %%LOCALBASE%%/bin/guile -q --no-auto-compile -l %%LOCALBASE%%/share/slib/guile.init -c "(use-modules (ice-9 slib))(require 'new-catalog)"
+ ln -shf %%LOCALBASE%%/share/slib %%LOCALBASE%%/share/guile/%%GUILE_VER%%/slib
+ env GUILE_IMPLEMENTATION_PATH=%%LOCALBASE%%/share/guile/%%GUILE_VER%% GUILE_AUTO_COMPILE=0 %%LOCALBASE%%/bin/guile-%%GUILE_VER%% -q -l %%LOCALBASE%%/share/slib/%%SLIB_INIT%% -c "(use-modules (ice-9 slib))(require 'new-catalog)"
;;
esac
diff --git a/lang/slib-guile1/Makefile b/lang/slib-guile1/Makefile
deleted file mode 100644
--- a/lang/slib-guile1/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-PORTNAME= slib
-PORTVERSION= 3b6 # Keep this in sync with lang/slib
-CATEGORIES= lang scheme
-MASTER_SITES= # empty
-PKGNAMESUFFIX= -guile1
-DISTFILES= # empty
-
-MAINTAINER= bofh@FreeBSD.org
-COMMENT= SLIB installation for Guile1
-
-BUILD_DEPENDS= ${LOCALBASE}/share/slib/require.scm:lang/slib \
- guile:lang/guile1
-RUN_DEPENDS:= ${BUILD_DEPENDS}
-
-SUB_FILES+= pkg-install pkg-deinstall
-NO_ARCH= yes
-NO_BUILD= yes
-NO_INSTALL= yes
-
-.include <bsd.port.mk>
diff --git a/lang/slib-guile1/files/pkg-deinstall.in b/lang/slib-guile1/files/pkg-deinstall.in
deleted file mode 100644
--- a/lang/slib-guile1/files/pkg-deinstall.in
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-case "$2" in
-"POST-DEINSTALL")
- rm -f %%LOCALBASE%%/share/guile/1.8/slib
- rm -f %%LOCALBASE%%/share/guile/1.8/slibcat
- ;;
-esac
diff --git a/lang/slib-guile1/files/pkg-install.in b/lang/slib-guile1/files/pkg-install.in
deleted file mode 100644
--- a/lang/slib-guile1/files/pkg-install.in
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-case "$2" in
-"POST-INSTALL")
- ln -shf %%LOCALBASE%%/share/slib %%LOCALBASE%%/share/guile/1.8/slib
- env GUILE_IMPLEMENTATION_PATH=%%LOCALBASE%%/share/guile/1.8 %%LOCALBASE%%/bin/guile -q -l %%LOCALBASE%%/share/slib/guile.init -c "(use-modules (ice-9 slib))(require 'new-catalog)"
- ;;
-esac
diff --git a/lang/slib-guile1/pkg-descr b/lang/slib-guile1/pkg-descr
deleted file mode 100644
--- a/lang/slib-guile1/pkg-descr
+++ /dev/null
@@ -1,4 +0,0 @@
-To use the features offered by the SLIB library, add the following
-construct to your programs:
-
- (use-modules (ice-9 slib))
diff --git a/lang/slib-guile2/Makefile b/lang/slib-guile2/Makefile
deleted file mode 100644
--- a/lang/slib-guile2/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-PORTNAME= slib
-PORTVERSION= 3b6 # Keep this in sync with lang/slib
-CATEGORIES= lang scheme
-MASTER_SITES= # empty
-PKGNAMESUFFIX= -guile2
-DISTFILES= # empty
-
-MAINTAINER= bofh@FreeBSD.org
-COMMENT= SLIB installation for Guile
-
-BUILD_DEPENDS= ${LOCALBASE}/share/slib/require.scm:lang/slib \
- guile:lang/guile2
-RUN_DEPENDS:= ${BUILD_DEPENDS}
-
-SUB_FILES+= pkg-install pkg-deinstall
-NO_ARCH= yes
-NO_BUILD= yes
-NO_INSTALL= yes
-
-.include <bsd.port.mk>
diff --git a/lang/slib-guile2/files/pkg-deinstall.in b/lang/slib-guile2/files/pkg-deinstall.in
deleted file mode 100644
--- a/lang/slib-guile2/files/pkg-deinstall.in
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-case "$2" in
-"POST-DEINSTALL")
- rm -f %%LOCALBASE%%/share/guile/2.2/slib
- rm -f %%LOCALBASE%%/share/guile/2.2/slibcat
- ;;
-esac
diff --git a/lang/slib-guile2/files/pkg-install.in b/lang/slib-guile2/files/pkg-install.in
deleted file mode 100644
--- a/lang/slib-guile2/files/pkg-install.in
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-case "$2" in
-"POST-INSTALL")
- ln -shf %%LOCALBASE%%/share/slib %%LOCALBASE%%/share/guile/2.2/slib
- env GUILE_IMPLEMENTATION_PATH=%%LOCALBASE%%/share/guile/2.2 GUILE_AUTO_COMPILE=0 %%LOCALBASE%%/bin/guile -q -l %%LOCALBASE%%/share/slib/guile-2.init -c "(use-modules (ice-9 slib))(require 'new-catalog)"
- ;;
-esac
diff --git a/lang/slib-guile2/pkg-descr b/lang/slib-guile2/pkg-descr
deleted file mode 100644
--- a/lang/slib-guile2/pkg-descr
+++ /dev/null
@@ -1,4 +0,0 @@
-To use the features offered by the SLIB library, add the following
-construct to your programs:
-
- (use-modules (ice-9 slib))
diff --git a/mail/anubis/Makefile b/mail/anubis/Makefile
--- a/mail/anubis/Makefile
+++ b/mail/anubis/Makefile
@@ -1,6 +1,6 @@
PORTNAME= anubis
PORTVERSION= 4.2
-PORTREVISION= 16
+PORTREVISION= 17
CATEGORIES= mail
MASTER_SITES= GNU
@@ -60,9 +60,7 @@
GSASL_LIB_DEPENDS= libgsasl.so:security/libgsasl
GSASL_CONFIGURE_WITH= gsasl
-GUILE_LIB_DEPENDS= libltdl.so:devel/libltdl \
- libguile.so:lang/guile1 \
- libgmp.so:math/gmp
+GUILE_USES= guile:1.8
GUILE_CONFIGURE_WITH= guile
GUILE_PORTEXAMPLES= anubis.scm anubisrc.guile
diff --git a/mail/anubis/files/patch-src_Makefile.am b/mail/anubis/files/patch-src_Makefile.am
--- a/mail/anubis/files/patch-src_Makefile.am
+++ b/mail/anubis/files/patch-src_Makefile.am
@@ -21,3 +21,12 @@
if TLS_COND
TLS_C=tls.c
+@@ -99,7 +99,7 @@ BUILT_SOURCES = env.c
+
+ localedir = $(datadir)/locale
+ DEFS = @DEFS@ -DLOCALEDIR=\"$(localedir)\"
+-AM_CPPFLAGS = @ADD_INCLUDES@ @LIBGNUTLS_INCLUDES@ -I$(top_srcdir)/lib
++AM_CPPFLAGS = @ADD_INCLUDES@ @LIBGNUTLS_INCLUDES@ @GUILE_INCLUDES@ -I$(top_srcdir)/lib
+ SUFFIXES=.opt .c
+
+ .opt.c:
diff --git a/mail/mailutils/Makefile b/mail/mailutils/Makefile
--- a/mail/mailutils/Makefile
+++ b/mail/mailutils/Makefile
@@ -51,8 +51,7 @@
GSSAPI_USES= ssl
GSSAPI_CONFIGURE_WITH= gssapi
-GUILE_LIB_DEPENDS= libguile-2.2.so:lang/guile2 libgmp.so:math/gmp
-GUILE_USES= makeinfo pkgconfig
+GUILE_USES= guile:2.2,alias makeinfo pkgconfig
GUILE_CONFIGURE_WITH= guile
MH_CONFIGURE_ENV= ac_cv_prog_EMACS=no
diff --git a/mail/mu/Makefile b/mail/mu/Makefile
--- a/mail/mu/Makefile
+++ b/mail/mu/Makefile
@@ -1,6 +1,6 @@
PORTNAME= mu
PORTVERSION= 1.8.13
-PORTREVISION= 1
+PORTREVISION= 2
DISTVERSIONPREFIX= v
CATEGORIES= mail
@@ -30,7 +30,7 @@
OPTIONS_DEFAULT= DOCS GUILE
OPTIONS_SUB= yes
-GUILE_LIB_DEPENDS= libguile-3.0.so:lang/guile
+GUILE_USES= guile:3.0
GUILE_USE= ldconfig=yes
GUILE_CONFIGURE_ENABLE= guile
GUILE_INFO= mu-guile
diff --git a/math/drgeo/Makefile b/math/drgeo/Makefile
--- a/math/drgeo/Makefile
+++ b/math/drgeo/Makefile
@@ -1,6 +1,6 @@
PORTNAME= drgeo
PORTVERSION= 1.1.0
-PORTREVISION= 25
+PORTREVISION= 26
CATEGORIES= math
MASTER_SITES= SF/ofset/${PORTNAME}/${PORTVERSION}
@@ -11,10 +11,8 @@
LICENSE= GPLv2+
LICENSE_FILE= ${WRKSRC}/COPYING
-LIB_DEPENDS= libguile.so:lang/guile1
-
-USES= compiler:c++11-lang gettext gmake gnome localbase:ldflags \
- pathfix pkgconfig
+USES= compiler:c++11-lang gettext gmake gnome guile:1.8 \
+ localbase:ldflags pathfix pkgconfig
GNU_CONFIGURE= yes
USE_GNOME= gnomeprefix intlhack libglade2
diff --git a/math/drgeo/files/patch-geo_Makefile.in b/math/drgeo/files/patch-geo_Makefile.in
new file mode 100644
--- /dev/null
+++ b/math/drgeo/files/patch-geo_Makefile.in
@@ -0,0 +1,12 @@
+--- geo/Makefile.in.orig 2023-05-25 10:21:18 UTC
++++ geo/Makefile.in
+@@ -192,7 +192,8 @@ INCLUDES = \
+ -DDRGEO_GLADEDIR=\""$(gladedir)"\" \
+ -DDRGEO_ENCODEDIR=\""$(encodedir)"\" \
+ -I$(includedir) \
+- $(DRGEO_CFLAGS)
++ $(DRGEO_CFLAGS) \
++ $(GUILE_CFLAGS)
+
+
+ noinst_LIBRARIES = libgeo.a
diff --git a/math/nlopt/Makefile b/math/nlopt/Makefile
--- a/math/nlopt/Makefile
+++ b/math/nlopt/Makefile
@@ -1,7 +1,7 @@
PORTNAME= nlopt
DISTVERSIONPREFIX= v
DISTVERSION= 2.7.1
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= math
MAINTAINER= rhurlin@FreeBSD.org
@@ -17,11 +17,10 @@
BUILD_DEPENDS= swig:devel/swig \
${PYNUMPY}
-LIB_DEPENDS= libgmp.so:math/gmp \
- libguile-2.2.so:lang/guile2
RUN_DEPENDS= ${PYNUMPY}
-USES= cmake:testing compiler:features localbase pathfix pkgconfig python
+USES= cmake:testing compiler:features guile:2.2,alias localbase \
+ pathfix pkgconfig python
USE_GITHUB= yes
GH_ACCOUNT= stevengj
diff --git a/net-im/freetalk/Makefile b/net-im/freetalk/Makefile
--- a/net-im/freetalk/Makefile
+++ b/net-im/freetalk/Makefile
@@ -13,12 +13,10 @@
LICENSE_FILE_GFDL= ${WRKSRC}/doc/fdl-1.3.texi
LIB_DEPENDS= libargp.so:devel/argp-standalone \
- libloudmouth-1.so:net-im/loudmouth \
- libguile-2.2.so:lang/guile2 \
- libgc-threaded.so:devel/boehm-gc-threaded
+ libloudmouth-1.so:net-im/loudmouth
-USES= autoreconf gettext-runtime gnome localbase makeinfo \
- ncurses pkgconfig readline
+USES= autoreconf gettext-runtime gnome guile:2.2 localbase \
+ makeinfo ncurses pkgconfig readline
USE_GNOME= glib20
GNU_CONFIGURE= yes
diff --git a/net/gnu-dico/Makefile b/net/gnu-dico/Makefile
--- a/net/gnu-dico/Makefile
+++ b/net/gnu-dico/Makefile
@@ -1,6 +1,6 @@
PORTNAME= dico
PORTVERSION= 2.10
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= net textproc
MASTER_SITES= GNU
PKGNAMEPREFIX= gnu-
@@ -35,8 +35,8 @@
GSASL_LIB_DEPENDS= libgsasl.so:security/libgsasl
GSASL_CONFIGURE_WITH= gsasl
-GUILE_LIB_DEPENDS= libguile-2.2.so:lang/guile2
-GUILE_CONFIGURE_OFF= --without-guile
+GUILE_USES= guile:2.2,alias
+GUILE_CONFIGURE_WITH= guile
LDAP_USES= ldap
LDAP_CONFIGURE_OFF= --without-ldap
diff --git a/net/gnu-radius/Makefile b/net/gnu-radius/Makefile
--- a/net/gnu-radius/Makefile
+++ b/net/gnu-radius/Makefile
@@ -1,6 +1,6 @@
PORTNAME= gnu-radius
PORTVERSION= 1.6.1
-PORTREVISION= 15
+PORTREVISION= 16
CATEGORIES= net
MASTER_SITES= GNU/radius
DISTNAME= radius-${PORTVERSION}
@@ -44,7 +44,7 @@
SNMP_CONFIGURE_ENABLE= snmp
CLIENT_CONFIGURE_ENABLE= client
-CLIENT_LIB_DEPENDS= libguile.so:lang/guile1
+CLIENT_USES= guile:1.8,alias
CLIENT_CONFIGURE_OFF= --without-guile
MYSQL_USES= mysql
MYSQL_CONFIGURE_WITH= mysql
diff --git a/net/serveez/Makefile b/net/serveez/Makefile
--- a/net/serveez/Makefile
+++ b/net/serveez/Makefile
@@ -1,6 +1,6 @@
PORTNAME= serveez
PORTVERSION= 0.2.2
-PORTREVISION= 3
+PORTREVISION= 4
CATEGORIES= net devel
MASTER_SITES= GNU
@@ -14,9 +14,7 @@
BROKEN_FreeBSD_13= ld: error: duplicate symbol: guile_global_error
BROKEN_FreeBSD_14= ld: error: duplicate symbol: guile_global_error
-LIB_DEPENDS= libguile.so:lang/guile1
-
-USES= cpe tar:xz libtool
+USES= cpe guile:1.8 tar:xz libtool
CPE_VENDOR= gnu
GNU_CONFIGURE= yes
CONFIGURE_ARGS= --enable-libserveez-install
diff --git a/print/lilypond-devel/Makefile b/print/lilypond-devel/Makefile
--- a/print/lilypond-devel/Makefile
+++ b/print/lilypond-devel/Makefile
@@ -23,16 +23,13 @@
zip:archivers/zip
LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig \
libfreetype.so:print/freetype2 \
- libgc-threaded.so:devel/boehm-gc-threaded \
- libgmp.so:math/gmp \
- libguile-2.2.so:lang/guile2 \
libharfbuzz.so:print/harfbuzz \
libltdl.so:devel/libltdl
RUN_DEPENDS= ${LOCALBASE}/share/fonts/dejavu/DejaVuSans-Bold.ttf:x11-fonts/dejavu \
mftrace:print/mftrace
USES= bison:build compiler:c++11-lib cpe ghostscript gmake gnome \
- magick:7,build perl5 pkgconfig python:3.5+
+ guile:2.2 magick:7,build perl5 pkgconfig python:3.5+
USE_CXXSTD= c++14
USE_GNOME= pango
USE_PERL5= build
diff --git a/print/lilypond/Makefile b/print/lilypond/Makefile
--- a/print/lilypond/Makefile
+++ b/print/lilypond/Makefile
@@ -22,9 +22,7 @@
zip:archivers/zip
LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig \
libfreetype.so:print/freetype2 \
- libgmp.so:math/gmp \
- libharfbuzz.so:print/harfbuzz \
- libltdl.so:devel/libltdl
+ libharfbuzz.so:print/harfbuzz
RUN_DEPENDS= ${LOCALBASE}/share/fonts/dejavu/DejaVuSans-Bold.ttf:x11-fonts/dejavu \
mftrace:print/mftrace
@@ -40,7 +38,8 @@
CONFIGURE_ENV+= ac_cv_prog_MAKEINFO="${LOCALBASE}/bin/makeinfo" \
FLEX=${FLEX} \
HOME=${WRKDIR} \
- YACC=${YACC}
+ YACC=${YACC} \
+ GUILE_FLAVOR=guile-${GUILE_VER}
MAKEFILE= GNUmakefile
ALL_TARGET= all
@@ -61,10 +60,8 @@
GUILE2_DESC= guile2 instead guile (incurs performance penalty)
URW_DESC= Use bundled URW fonts
-GUILE2_LIB_DEPENDS= libgc-threaded.so:devel/boehm-gc-threaded \
- libguile-2.2.so:lang/guile2
-GUILE2_LIB_DEPENDS_OFF= libguile.so:lang/guile1
-GUILE2_CONFIGURE_ENV= GUILE_FLAVOR=guile-2.2
+GUILE2_USES= guile:2.2
+GUILE2_USES_OFF=guile:1.8
NLS_USES= gettext
NLS_USES_OFF= gettext-tools
diff --git a/science/harminv/Makefile b/science/harminv/Makefile
--- a/science/harminv/Makefile
+++ b/science/harminv/Makefile
@@ -1,6 +1,6 @@
PORTNAME= harminv
PORTVERSION= 1.3.1
-PORTREVISION= 20
+PORTREVISION= 21
CATEGORIES= science
MASTER_SITES= http://ab-initio.mit.edu/harminv/
@@ -8,8 +8,6 @@
COMMENT= Solver of harmonic inversion
WWW= http://ab-initio.mit.edu/wiki/index.php/Harminv
-LIB_DEPENDS= libguile-2.2.so:lang/guile2
-
USES= blaslapack fortran gmake libtool pathfix
GNU_CONFIGURE= yes
USE_GCC= yes
diff --git a/science/libctl/Makefile b/science/libctl/Makefile
--- a/science/libctl/Makefile
+++ b/science/libctl/Makefile
@@ -1,6 +1,6 @@
PORTNAME= libctl
DISTVERSION= 4.5.0
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= science math
MASTER_SITES= https://github.com/NanoComp/libctl/releases/download/v${DISTVERSION}/
@@ -12,10 +12,7 @@
BROKEN_sparc64= does not build
-LIB_DEPENDS= libgc-threaded.so:devel/boehm-gc-threaded \
- libguile-2.2.so:lang/guile2
-
-USES= fortran libtool pkgconfig
+USES= fortran guile:2.2 libtool pkgconfig
GNU_CONFIGURE= yes
CONFIGURE_ARGS= --enable-shared
USE_LDCONFIG= yes
diff --git a/science/mpb/Makefile b/science/mpb/Makefile
--- a/science/mpb/Makefile
+++ b/science/mpb/Makefile
@@ -1,6 +1,6 @@
PORTNAME= mpb
DISTVERSION= 1.11.1
-PORTREVISION= 3
+PORTREVISION= 4
CATEGORIES= science
MASTER_SITES= https://github.com/NanoComp/mpb/releases/download/v${DISTVERSION}/
@@ -14,12 +14,10 @@
# NLOPT should be enabled in science/libctl
LIB_DEPENDS= libctl.so:science/libctl \
libfftw3.so:math/fftw3 \
- libgc-threaded.so:devel/boehm-gc-threaded \
- libguile-2.2.so:lang/guile2 \
libhdf5.so:science/hdf5 \
libnlopt.so:math/nlopt
-USES= fortran libtool pkgconfig readline
+USES= fortran guile:2.2,alias libtool pkgconfig readline
USE_GCC= yes
USE_LDCONFIG= yes
# Do not use --with-mpi, because it is not guaranted
diff --git a/textproc/scss/Makefile b/textproc/scss/Makefile
--- a/textproc/scss/Makefile
+++ b/textproc/scss/Makefile
@@ -12,7 +12,7 @@
LICENSE= GPLv3+
LICENSE_FILE= ${WRKSRC}/COPYING
-RUN_DEPENDS= guile:lang/guile
+USES= guile:run
NO_BUILD= yes
NO_ARCH= yes
diff --git a/textproc/sdom/Makefile b/textproc/sdom/Makefile
--- a/textproc/sdom/Makefile
+++ b/textproc/sdom/Makefile
@@ -11,9 +11,12 @@
LICENSE= GPLv3
LICENSE_FILE= ${WRKSRC}/COPYING
-RUN_DEPENDS= guile-lib>=0:devel/guile-lib
+RUN_DEPENDS= guile-lib-${GUILE_FLAVOR}>=0:devel/guile-lib@${GUILE_FLAVOR}
+
+USES= guile:env
NO_BUILD= yes
+NO_ARCH= yes
INFO= sdom
PLIST_FILES= share/guile/sdom/common.scm \
diff --git a/www/elinks/Makefile b/www/elinks/Makefile
--- a/www/elinks/Makefile
+++ b/www/elinks/Makefile
@@ -46,7 +46,7 @@
NLS_USES= gettext
NLS_MESON_TRUE= nls
-GUILE_LIB_DEPENDS= libguile-3.0.so:lang/guile
+GUILE_USES= guile:3.0
GUILE_MESON_TRUE= guile
LUA_USES= lua:52-53
diff --git a/www/guile-www/Makefile b/www/guile-www/Makefile
--- a/www/guile-www/Makefile
+++ b/www/guile-www/Makefile
@@ -11,7 +11,7 @@
LICENSE= GPLv2
LICENSE_FILE= ${WRKSRC}/COPYING
-RUN_DEPENDS= guile:lang/guile1
+USES= guile:1.8
GNU_CONFIGURE= yes
INFO= guile-www
diff --git a/x11-toolkits/guile-gnome-platform/Makefile b/x11-toolkits/guile-gnome-platform/Makefile
--- a/x11-toolkits/guile-gnome-platform/Makefile
+++ b/x11-toolkits/guile-gnome-platform/Makefile
@@ -10,10 +10,7 @@
LICENSE= GPLv2+
-BUILD_DEPENDS= guile2>=2.2:lang/guile2
-LIB_DEPENDS= libguile-2.2.so:lang/guile2 \
- libgc-threaded.so:devel/boehm-gc-threaded \
- libgwrap-guile-runtime.so:devel/g-wrap \
+LIB_DEPENDS= libgwrap-guile-runtime.so:devel/g-wrap \
libffi.so:devel/libffi
FLAVORS= lite full
@@ -25,11 +22,13 @@
# We don't actually need gettext, but for some incomprehensible reason it
# is the package that installs some basic gnulib autoconf functionality.
-USES= autoreconf gettext-tools gmake gnome libtool pkgconfig
+USES= autoreconf gettext-tools gmake gnome guile:2.2,alias \
+ libtool pkgconfig
USE_GNOME= glib20
USE_LDCONFIG= yes
GNU_CONFIGURE= yes
+CONFIGURE_ENV+= GUILE_EFFECTIVE_VERSION=${GUILE_VER}
MAKE_JOBS_UNSAFE=yes
@@ -58,7 +57,8 @@
ATK_INFO= guile-gnome-atk
# Cairo support depends on a separate module.
-CAIRO_LIB_DEPENDS= libguile-cairo.so:graphics/guile-cairo
+CAIRO_BUILD_DEPENDS= ${LOCALBASE}/lib/guile/${GUILE_VER}/extensions/libguile-cairo.so:graphics/guile-cairo@${GUILE_FLAVOR}
+CAIRO_RUN_DEPENDS= ${LOCALBASE}/lib/guile/${GUILE_VER}/extensions/libguile-cairo.so:graphics/guile-cairo@${GUILE_FLAVOR}
CAIRO_USE= gnome=cairo
CAIRO_CONFIGURE_WITH= cairo
@@ -76,11 +76,13 @@
# These dependencies are brought in from gtk2's pkgconf, but
# not accounted for by Uses/gnome
GTK2_LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig \
- libfreetype.so:print/freetype2
+ libfreetype.so:print/freetype2 \
+ libharfbuzz.so:print/harfbuzz
GTK2_USE= gnome=gtk20,gdkpixbuf2
GTK2_CONFIGURE_WITH= gtk pixbuf
GTK2_INFO= guile-gnome-gtk guile-gnome-gdk
+PANGO_LIB_DEPENDS= libharfbuzz.so:print/harfbuzz
PANGO_USE= gnome=pango
PANGO_CONFIGURE_WITH= pango
PANGO_INFO= guile-gnome-pango
@@ -145,6 +147,11 @@
# components. This doesn't affect the packaging but makes QA testing
# of the options much easier.
+# DO NOT try and add rules here to strip .go files, no matter how loudly
+# testport / stage-qa shouts at you about it, because .go files (which are
+# compiled bytecode) are not intended to be stripped and doing so causes
+# breakage at run time.
+
post-install:
for f in ${INFO_UNUSED}; do \
${RM} ${STAGEDIR}${PREFIX}/${INFO_PATH}/$${f}.info*; \
diff --git a/x11/xbindkeys/Makefile b/x11/xbindkeys/Makefile
--- a/x11/xbindkeys/Makefile
+++ b/x11/xbindkeys/Makefile
@@ -1,6 +1,5 @@
PORTNAME= xbindkeys
-PORTVERSION= 1.8.6
-PORTREVISION= 2
+PORTVERSION= 1.8.7
CATEGORIES= x11
MASTER_SITES= http://www.nongnu.org/xbindkeys/
@@ -22,8 +21,8 @@
TCL_USES= tk
TCL_CONFIGURE_OFF= --disable-tk
TCL_PLIST_FILES= bin/xbindkeys_show man/man1/xbindkeys_show.1.gz
-GUILE_LIB_DEPENDS= libguile.so:lang/guile
-GUILE_CONFIGURE_OFF= --disable-guile
+GUILE_USES= guile:1.8,2.2,3.0 autoreconf gettext-tools pkgconfig
+GUILE_CONFIGURE_ENABLE= guile
post-patch-TCL-on:
@${REINPLACE_CMD} -e 's| wish | ${WISH} |g' ${WRKSRC}/xbindkeys_show
diff --git a/x11/xbindkeys/distinfo b/x11/xbindkeys/distinfo
--- a/x11/xbindkeys/distinfo
+++ b/x11/xbindkeys/distinfo
@@ -1,2 +1,3 @@
-SHA256 (xbindkeys-1.8.6.tar.gz) = 6c0d18be19fc19ab9b4595edf3a23c0a6946c8a5eb5c1bc395471c8f9a710d18
-SIZE (xbindkeys-1.8.6.tar.gz) = 151941
+TIMESTAMP = 1684687370
+SHA256 (xbindkeys-1.8.7.tar.gz) = a29b86a8ec91d4abc83b420e547da27470847d0efe808aa6e75147aa0adb82f2
+SIZE (xbindkeys-1.8.7.tar.gz) = 177532

File Metadata

Mime Type
text/plain
Expires
Wed, Oct 22, 5:17 PM (5 h, 17 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
24061317
Default Alt Text
D40194.id122471.diff (125 KB)

Event Timeline