Mk/Uses: Add guile.mk

This patch adds USES=guile[:options], a framework to permit the
concurrent installation of different guile versions, allowing
ports to specify which guile they need.

lang/guile is now a meta-port, installing the default guile version;
guile 3 is now shipped in lang/guile3.

A new port lang/guile-aclocal holds the guile.m4 file from guile3
to permit ports written against guile1 or guile2 to avoid conflicts.

PR:		260960
Reported by:	Martin Neubauer <m.ne@gmx.net>
Approved by:	bofh
Differential Revision:	https://reviews.freebsd.org/D40194
This commit is contained in:
Andrew "RhodiumToad" Gierth 2023-07-28 14:58:44 +02:00 committed by Robert Clausecker
parent 08691f29f5
commit 94218d3a91
26 changed files with 1538 additions and 266 deletions

View File

@ -10,6 +10,15 @@ in the release notes and/or placed into UPDATING.
All ports committers are allowed to commit to this file.
20230728:
AUTHOR: andrew@tao11.riddles.org.uk, fuz@FreeBSD.org
A new uses 'guile' has been added to transparently depend on the
proper variant of guile depending on the default version set by the
user and the demands of the port.
See Mk/Uses/guile.mk for in-depth documentation.
20230722:
AUTHOR: tcberner@FreeBSD.org

1
MOVED
View File

@ -7775,3 +7775,4 @@ games/naev-data||2023-07-15|Remove obsoleted port. Now games/naev installs data
graphics/pecl-imagick-im7|graphics/pecl-imagick|2023-07-19|Merged into master port
x11-toolkits/fox14||2023-07-27|Has expired: Obsolete leaf port, use x11-toolkits/fox(16,17) instead
x11-wm/cage-devel|x11-wm/cage|2023-07-27|Out of date: use x11-wm/cage for now
lang/guile|lang/guile3|2023-07-28|lang/guile is now meta-port for default guile version

263
Mk/Uses/guile.mk Normal file
View File

@ -0,0 +1,263 @@
# 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
#
# conflicts add GUILE_NEWER_PKGS to CONFLICTS_BUILD, this tries to
# ensure that non-clean builds of programs that insist on
# using the latest available version (there are a surprising
# number of these) will fail if the selected version is wrong.
#
# noextra don't add _GUILE_EXTRA_LIB_DEPENDS
#
# nopkgconf don't add to PKGCONFIG_PATHS
#
# nocmds don't add GUILE_*CMD* to CONFIGURE_ENV and MAKE_ENV
# (but still define them)
#
# 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)
# GUILE_PREFIX
# GUILE_GLOBAL_SITE_DIR
# GUILE_SITE_DIR
# GUILE_SITE_CCACHE_DIR
# GUILE_DOCS_DIR where to put version-specific docs
# GUILE_EXAMPLES_DIR where to put version-specific examples
# GUILE_INFO_PATH a suitable value for INFO_PATH
#
# (the _DIR vars are relativized and added to PLIST_SUB without the
# _DIR suffix)
#
.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. Allow a list of numeric versions
_GUILE_ARG_VERSIONS:= ${guile_ARGS:M[1-9].[0-9]}
# We anticipate which args will be almost universally required
# and define them negatively. In practice "alias" is needed a lot
# thanks to makefile assumptions, but it's intrusive enough that
# we require it to be stated explicitly.
_GUILE_ARG_NAMES:= flavors build run env alias conflicts \
noextra nopkgconf nocmds
# Define an 0/1 flag for each arg
. for _v in ${_GUILE_ARG_NAMES}
. if ${_v:Mno*}
_GUILE_ARG_${_v:tu:S/^NO//}:=${"${guile_ARGS:M${_v}}":?0:1}
. else
_GUILE_ARG_${_v:tu}:=${"${guile_ARGS:M${_v}}":?1:0}
. endif
. endfor
#
# 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 just 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 (default) 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
# User may have specified this; we must respect that.
. if empty(FLAVOR)
FLAVOR= ${FLAVORS:[1]}
. endif
# Translate the selected (possibly by the user) flavor back to the
# corresponding Guile version.
_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
# Find default version, or highest. (We abuse alphabetic sort here.)
_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. (So
# we discourage the use of GUILE_SFX for anything important.)
#
# GUILE_VER= 3.0 (for example)
# GUILE_SFX= 3
# GUILE_FLAVOR= guile30
#
# GUILE_OTHER/NEWER_PKGS is defined such that it can be placed in
# CONFLICTS_BUILD for ports that use non-overridable version searches.
# This gives a proper diagnostic for non-clean builds.
GUILE_VER= ${_GUILE_CHOSEN_VER}
GUILE_SFX= ${_GUILE_CHOSEN_VER:R}
GUILE_OTHER_PKGS:=${_GUILE_VALID_VERSIONS:@_v@${${_v} != ${_GUILE_CHOSEN_VER}:?guile${_v:R}:}@}
GUILE_NEWER_PKGS:=${_GUILE_VALID_VERSIONS:@_v@${${_v} > ${_GUILE_CHOSEN_VER}:?guile${_v:R}:}@}
. if ${_GUILE_ARG_CONFLICTS}
CONFLICTS_BUILD+=${GUILE_NEWER_PKGS}
. endif
GUILE_PORT= lang/guile${GUILE_SFX}
GUILE_FLAVOR= guile${GUILE_VER:S/.//}
GUILE_PREFIX= ${PREFIX}
GUILE_GLOBAL_SITE_DIR= ${GUILE_PREFIX}/share/guile/site
GUILE_SITE_DIR= ${GUILE_GLOBAL_SITE_DIR}/${GUILE_VER}
GUILE_SITE_CCACHE_DIR= ${GUILE_PREFIX}/lib/guile/${GUILE_VER}/site-ccache
GUILE_DOCS_DIR= ${GUILE_PREFIX}/share/doc/${GUILE_FLAVOR}
GUILE_EXAMPLES_DIR= ${GUILE_PREFIX}/share/examples/${GUILE_FLAVOR}
GUILE_INFO_PATH= share/info/guile${GUILE_SFX}
_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} \
GUILE_SITE=${GUILE_SITE_DIR:S,^${GUILE_PREFIX}/,,} \
GUILE_GLOBAL_SITE=${GUILE_GLOBAL_SITE_DIR:S,^${GUILE_PREFIX}/,,} \
GUILE_SITE_CCACHE=${GUILE_SITE_CCACHE_DIR:S,^${GUILE_PREFIX}/,,} \
GUILE_DOCS=${GUILE_DOCS_DIR:S,^${GUILE_PREFIX}/,,} \
GUILE_EXAMPLES=${GUILE_EXAMPLES_DIR:S,^${GUILE_PREFIX}/,,}
# 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_ARG_EXTRA}
_GUILE_EXTRA_LIB_DEPENDS= ${_GUILE_${GUILE_VER}_EXTRA_LIB_DEPENDS}
. else
_GUILE_EXTRA_LIB_DEPENDS?=
. endif
. if !${_GUILE_ARG_ENV}
. if ${_GUILE_ARG_BUILD}
BUILD_DEPENDS+= ${GUILE_CMD}:${GUILE_PORT}
. endif
. if ${_GUILE_ARG_RUN}
RUN_DEPENDS+= ${GUILE_CMD}:${GUILE_PORT}
. endif
. if !${_GUILE_ARG_BUILD} && !${_GUILE_ARG_RUN}
. 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
. if ${_GUILE_ARG_CMDS}
. if ${_GUILE_ARG_ALIAS}
# If we're doing binary-alias, then only add GUILE itself to the
# environment, not the build-only tools. This helps when dealing with
# broken configure scripts that respect e.g. GUILE_CONFIG but then
# barf on the output if the program name has a suffix.
CONFIGURE_ENV+= GUILE=${GUILE_CMDPATH}
MAKE_ENV+= GUILE=${GUILE_CMDPATH}
. else
CONFIGURE_ENV+= ${GUILE_ENV}
MAKE_ENV+= ${GUILE_ENV}
. endif
. endif # ${_GUILE_ARG_CMDS}
CONFIGURE_ENV+= GUILE_EFFECTIVE_VERSION=${GUILE_VER}
. endif # !${_GUILE_ARG_ENV}
. if ${_GUILE_ARG_ALIAS}
BINARY_ALIAS+= ${_GUILE_CMDNAMES:@t@${t}=${${t:tu:S/-/_/}_CMD}@}
. endif
. if ${_GUILE_ARG_PKGCONF}
GUILE_PKGCONFIG_DIR:= libdata/pkgconfig/guile/${GUILE_VER}
PKGCONFIG_PATHS+= ${LOCALBASE}/${GUILE_PKGCONFIG_DIR}
PLIST_SUB+= GUILE_PKGCONFIG_DIR=${GUILE_PKGCONFIG_DIR}
. endif
.endif

View File

@ -18,7 +18,7 @@ _INCLUDE_BSD_DEFAULT_VERSIONS_MK= yes
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 PYCRYPTOGRAPHY RUBY RUST SAMBA SSL TCLTK VARNISH
. if defined(${lang}_DEFAULT)
@ -59,6 +59,8 @@ GHOSTSCRIPT_DEFAULT?= agpl
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)

View File

@ -129,9 +129,11 @@
SUBDIR += gravity
SUBDIR += groovy
SUBDIR += gscheme
SUBDIR += guile
SUBDIR += guile-aclocal
SUBDIR += guile-meta
SUBDIR += guile1
SUBDIR += guile2
SUBDIR += guile3
SUBDIR += halide
SUBDIR += harec
SUBDIR += haskell-mode.el

View File

@ -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"

View File

@ -1,70 +1,36 @@
PORTNAME= guile
PORTVERSION= 3.0.9
PORTREVISION= 2
PORTNAME= guile-meta
PORTVERSION= 4
CATEGORIES= lang scheme
MASTER_SITES= GNU
MASTER_SITES= # empty
DISTFILES= # empty
EXTRACT_ONLY= # empty
MAINTAINER= bofh@FreeBSD.org
COMMENT= GNU Ubiquitous Intelligent Language for Extension
WWW= https://www.gnu.org/software/guile/
MAINTAINER= andrew@tao11.riddles.org.uk
COMMENT= Meta-port for the Guile interpreter
WWW= http://www.gnu.org/software/guile/
LICENSE= GPLv3 LGPL3
LICENSE_COMB= multi
LICENSE= NA
LICENSE_COMB= single
LICENSE_NAME= Non applicable
LICENSE_TEXT= No licenses are applicable to metaports
LICENSE_PERMS= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
# Currently has linker error in i386. Feel free to add other ARCHS in
# case of failure
NOT_FOR_ARCHS= i386
# no flavors and no version specified, so that we get the default
# version as specified in DEFAULT_VERSIONS.
USES= guile:run
LIB_DEPENDS= libffi.so:devel/libffi \
libgmp.so:math/gmp \
libltdl.so:devel/libltdl \
libunistring.so:devel/libunistring
NO_ARCH= yes
NO_BUILD= yes
USES= charsetfix compiler:c11 cpe gmake iconv libtool \
makeinfo pathfix pkgconfig readline tar:lz
CPE_VENDOR= gnu
USE_LDCONFIG= yes
# We don't provide a pkgconf or similar - this is purely a user
# convenience, and building should always be done against a specific
# version.
PLIST_FILES= bin/guile bin/guild
GNU_CONFIGURE= yes
CONFIGURE_ARGS= --enable-lto=${WITHOUT_LTO:Dno:U${WITH_LTO:Dyes:Uno}}
#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}
do-install:
for prog in guile guild; do \
${LN} -sf $${prog}-${GUILE_VER} \
${STAGEDIR}${PREFIX}/bin/$${prog}; \
done
.include <bsd.port.mk>

View File

@ -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)

View File

@ -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

View File

@ -1,6 +1,7 @@
GUILE, GNU's Ubiquitous Intelligent Language for Extension,
is a library that implements the Scheme language plus various
convenient facilities. It's designed so that you can link it
into an application or utility to make it extensible. Our
plan is to link this library into all GNU programs that call for
extensibility.
convenient facilities. See the lang/guile3 port for more detail.
This is a meta port to the Guile interpreter and provides symbolic
links to bin/guile and bin/guild as a convenience to users. Do not
depend on this port.

View File

@ -1,5 +1,6 @@
PORTNAME= guile
PORTVERSION= 1.8.8
PORTREVISION= 1
CATEGORIES= lang scheme
MASTER_SITES= GNU
PKGNAMESUFFIX= 1
@ -14,41 +15,69 @@ LICENSE_FILE= ${WRKSRC}/COPYING.LESSER
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= ${GUILE_INFO_PATH}
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>

View File

@ -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 \

View File

@ -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
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

View File

@ -1,6 +1,6 @@
PORTNAME= guile
PORTVERSION= 2.2.7
PORTREVISION= 3
DISTVERSION= 2.2.7
PORTREVISION= 4
CATEGORIES= lang scheme
MASTER_SITES= GNU
PKGNAMESUFFIX= 2
@ -16,51 +16,52 @@ LIB_DEPENDS= libgmp.so:math/gmp \
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
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
CPE_VENDOR= gnu
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= ${GUILE_INFO_PATH}
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>

View File

@ -0,0 +1,20 @@
--- 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'
@@ -4256,7 +4256,7 @@ libpath.h: $(srcdir)/Makefile.in $(top_builddir)/conf
@echo ' { "LIBS", "@GUILE_LIBS@" }, \' >> libpath.tmp
@echo ' { "CFLAGS", "@GUILE_CFLAGS@" }, \' >> libpath.tmp
@BUILD_DATE="$${SOURCE_DATE_EPOCH:-`date '+%s'`}" ; \
- echo ' { "buildstamp", "'`date -u +'%Y-%m-%d %T' -d @$$BUILD_DATE`'" }, \' >> libpath.tmp
+ echo ' { "buildstamp", "'`date -j -u -f %s $$BUILD_DATE +'%Y-%m-%d %T'`'" }, \' >> libpath.tmp
@echo '}' >> libpath.tmp
$(AM_V_GEN)mv libpath.tmp libpath.h

View File

@ -1,4 +1,4 @@
--- libguile/gen-scmconfig.c.orig 2014-03-16 22:43:13 UTC
--- libguile/gen-scmconfig.c.orig 2016-06-17 09:37:10 UTC
+++ libguile/gen-scmconfig.c
@@ -138,6 +138,7 @@
@ -8,3 +8,14 @@
#include <stdio.h>
#include <string.h>
@@ -382,6 +383,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");

View File

@ -1,4 +1,4 @@
--- libguile/pthread-threads.h.orig 2012-07-02 09:28:13 UTC
--- libguile/pthread-threads.h.orig 2011-11-22 10:55:14 UTC
+++ libguile/pthread-threads.h
@@ -27,6 +27,9 @@
*/
@ -9,4 +9,4 @@
+#endif
#include <sched.h>
/* `libgc' defines wrapper procedures for pthread calls. */
/* Threads

View File

@ -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
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

100
lang/guile3/Makefile Normal file
View File

@ -0,0 +1,100 @@
PORTNAME?= guile
PORTVERSION= 3.0.9
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= ${GUILE_INFO_PATH}
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>

View File

@ -1,3 +1,3 @@
TIMESTAMP = 1675263283
TIMESTAMP = 1684250510
SHA256 (guile-3.0.9.tar.lz) = bc0ee0a360fb13919c14eb6e2453319adf1ec998288c993829bcf178fb48cc9a
SIZE (guile-3.0.9.tar.lz) = 5435196

View File

@ -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)

View File

@ -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>

View File

@ -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

View File

@ -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");

6
lang/guile3/pkg-descr Normal file
View File

@ -0,0 +1,6 @@
GUILE, GNU's Ubiquitous Intelligent Language for Extension,
is a library that implements the Scheme language plus various
convenient facilities. It's designed so that you can link it
into an application or utility to make it extensible. Our
plan is to link this library into all GNU programs that call for
extensibility.

View File

@ -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-set.h
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/read.go
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/compile.go
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
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 @@ share/aclocal/guile.m4
%%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 @@ share/aclocal/guile.m4
%%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