diff --git a/CHANGES b/CHANGES index 48f0ce9023cd..3a28ea34e815 100644 --- a/CHANGES +++ b/CHANGES @@ -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 diff --git a/MOVED b/MOVED index 0166d5aaadd1..f478d9d12334 100644 --- a/MOVED +++ b/MOVED @@ -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 diff --git a/Mk/Uses/guile.mk b/Mk/Uses/guile.mk new file mode 100644 index 000000000000..d2822fd1c57d --- /dev/null +++ b/Mk/Uses/guile.mk @@ -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 diff --git a/Mk/bsd.default-versions.mk b/Mk/bsd.default-versions.mk index 86e3f5aac016..5410c4a05322 100644 --- a/Mk/bsd.default-versions.mk +++ b/Mk/bsd.default-versions.mk @@ -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) diff --git a/lang/Makefile b/lang/Makefile index e0eb15a5c98f..441660670e75 100644 --- a/lang/Makefile +++ b/lang/Makefile @@ -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 diff --git a/lang/guile-aclocal/Makefile b/lang/guile-aclocal/Makefile new file mode 100644 index 000000000000..53a119c0317c --- /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 index a263a16fd376..b5a534383e68 100644 --- a/lang/guile/Makefile +++ b/lang/guile/Makefile @@ -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 - -.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 diff --git a/lang/guile/files/extra-patch-bootstrap_Makefile.in b/lang/guile/files/extra-patch-bootstrap_Makefile.in deleted file mode 100644 index b5c56900c963..000000000000 --- 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 index 2551eb4914ee..000000000000 --- 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/guile/pkg-descr b/lang/guile/pkg-descr index 9bde69d6b6d3..a193da7e9d15 100644 --- a/lang/guile/pkg-descr +++ b/lang/guile/pkg-descr @@ -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. diff --git a/lang/guile1/Makefile b/lang/guile1/Makefile index 16d46faaf494..f4b32e378206 100644 --- 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 @@ 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|||g' ${REINPLACE_FILES} + ${REINPLACE_CMD} -e 's|||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 diff --git a/lang/guile1/files/patch-scripts_Makefile.am b/lang/guile1/files/patch-scripts_Makefile.am new file mode 100644 index 000000000000..8b8495e29698 --- /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 index 21a21b732956..02566278242f 100644 --- 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 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 index c2a252891a30..7236fa11e2c1 100644 --- a/lang/guile2/Makefile +++ b/lang/guile2/Makefile @@ -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|||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 diff --git a/lang/guile2/files/patch-libguile_Makefile.in b/lang/guile2/files/patch-libguile_Makefile.in new file mode 100644 index 000000000000..b22b8fb2f711 --- /dev/null +++ b/lang/guile2/files/patch-libguile_Makefile.in @@ -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 + diff --git a/lang/guile2/files/patch-libguile_gen-scmconfig.c b/lang/guile2/files/patch-libguile_gen-scmconfig.c index 15879ac9ecd2..db1dd3fc9113 100644 --- a/lang/guile2/files/patch-libguile_gen-scmconfig.c +++ b/lang/guile2/files/patch-libguile_gen-scmconfig.c @@ -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 #include +@@ -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"); diff --git a/lang/guile2/files/patch-libguile_pthread-threads.h b/lang/guile2/files/patch-libguile_pthread-threads.h index 97eb6e8d8779..907bf2089703 100644 --- a/lang/guile2/files/patch-libguile_pthread-threads.h +++ b/lang/guile2/files/patch-libguile_pthread-threads.h @@ -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 - /* `libgc' defines wrapper procedures for pthread calls. */ + /* Threads diff --git a/lang/guile2/pkg-plist b/lang/guile2/pkg-plist index 134d20a68441..56cf29b70027 100644 --- 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 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 index 000000000000..b1ec1c837217 --- /dev/null +++ b/lang/guile3/Makefile @@ -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 diff --git a/lang/guile/distinfo b/lang/guile3/distinfo similarity index 85% rename from lang/guile/distinfo rename to lang/guile3/distinfo index 9dcb0becc6a8..39f883dc7977 100644 --- 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 index 000000000000..70f724e9c7aa --- /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: . 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 ( + 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 index 000000000000..9225b2f7a720 --- /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 diff --git a/lang/guile3/files/patch-libguile_Makefile.in b/lang/guile3/files/patch-libguile_Makefile.in new file mode 100644 index 000000000000..f47c1871ad0d --- /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 index 000000000000..88080e540e4f --- /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/guile3/pkg-descr b/lang/guile3/pkg-descr new file mode 100644 index 000000000000..9bde69d6b6d3 --- /dev/null +++ b/lang/guile3/pkg-descr @@ -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. diff --git a/lang/guile/pkg-plist b/lang/guile3/pkg-plist similarity index 99% rename from lang/guile/pkg-plist rename to lang/guile3/pkg-plist index f8c33187f021..572571eaa753 100644 --- 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-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