From f2a0d74bfb8821b8839df1862786724cc71876d5 Mon Sep 17 00:00:00 2001 From: fosslinux Date: Mon, 10 Apr 2023 15:27:34 +1000 Subject: [PATCH] Update to Guile 3.0.9 This is achieved by transplanting 3.0.7's psyntax-pp.scm into 3.0.9 which works flawlessly. This is required for parallelism, since <3.0.8 is irreproducible when -jN is used. --- parts.rst | 7 +- sysa/SHA256SUMS.pkgs | 4 +- .../guile-3.0.9.sh} | 48 +++++-- .../import-gnulib-3.0.7.sh} | 0 sysc/guile-3.0.9/import-gnulib.sh | 129 ++++++++++++++++++ sysc/{guile-3.0.7 => guile-3.0.9}/sources | 2 + sysc/run2.sh | 2 +- 7 files changed, 176 insertions(+), 16 deletions(-) rename sysc/{guile-3.0.7/guile-3.0.7.sh => guile-3.0.9/guile-3.0.9.sh} (59%) rename sysc/{guile-3.0.7/import-gnulib.sh => guile-3.0.9/import-gnulib-3.0.7.sh} (100%) create mode 100755 sysc/guile-3.0.9/import-gnulib.sh rename sysc/{guile-3.0.7 => guile-3.0.9}/sources (61%) diff --git a/parts.rst b/parts.rst index fd7cf16..fdfb09f 100644 --- a/parts.rst +++ b/parts.rst @@ -965,15 +965,16 @@ boehm-gc 8.0.4 The Boehm-Demers-Weiser conservative garbage collector can be used as a garbage collecting replacement for C malloc or C++ new. -guile 3.0.7 +guile 3.0.9 =========== GNU Ubiquitous Intelligent Language for Extensions (GNU Guile) is the preferred extension language system for the GNU Project and features an implementation of the programming language Scheme. -We use ``guile-psyntax-bootstrapping`` project to bootstrap Guile's ``psyntax.pp`` -without relying on pre-expanded code. +We use ``guile-psyntax-bootstrapping`` project on Guile 3.0.7 to bootstrap +Guile's ``psyntax.pp`` without relying on pre-expanded code. This is then +transplanted into Guile 3.0.9. which 2.21 ========== diff --git a/sysa/SHA256SUMS.pkgs b/sysa/SHA256SUMS.pkgs index ffd410c..a609487 100644 --- a/sysa/SHA256SUMS.pkgs +++ b/sysa/SHA256SUMS.pkgs @@ -9,7 +9,7 @@ d5fcce4baea5e11f983a7e4b7148545ab6720bb4e010898c73387f6711be67f4 autoconf-2.64_ 298dcf17a439adb306237b308e3c4ed3d376cb863ae0f0f08bfdf1f3199a548b autoconf-2.69_0.tar.bz2 8c2401edf1c68910005bbcb8b8e84727a46f7d9643d2ad1267bd0259078dadc4 autoconf-2.71_0.tar.bz2 6ff691e3ddd4f3d1796d28b07a2a96691dbd9801844c99ccbe660da59dabd74b autoconf-archive-2021.02.19_0.tar.bz2 -986995c084f3542b61938d11ddb6f1dc3b33263e4681abdce5ede2b724a1d5ea autogen-5.18.16_0.tar.bz2 +ebd9b5168122561aca6f9c686f97cf1b61b035eccb716f36710efe72aad694f0 autogen-5.18.16_0.tar.bz2 02a426e82a52d4a2cd7e73fe3dc5a2c58b3ed100f24a92c57e42511fd86e247c automake-1.10.3_0.tar.bz2 34925adeaa2876a5e068adeb17b71fe7c7105244c3cb5439d33f7406310674da automake-1.11.2_0.tar.bz2 a7bd12bd0c639783ce1c0e9f640cf004a87460bbda8154bc550c5e6884457b48 automake-1.15.1_0.tar.bz2 @@ -57,7 +57,7 @@ a2301d8dbbfbfcdd18444f01848e8e4366780281009640acbd3af0fab9b11aea gcc-4.7.4_0.ta db3f8088a8aa74a7ff300b45c2070397ed7538fe5cc45480ea968014ccf7bc20 gperf-3.1_0.tar.bz2 67d706423e079a9cd764fd9607027d296c0ff2380c1104006a2230a299eb2c1d grep-2.4_0.tar.bz2 d85cff8f9ff76533287891ec2019416fa585815e514743e5b76efd9f17f5ef5c grep-3.7_0.tar.bz2 -adcd3633d004a608cb36e306dd887d96e2ab77bfc5d5b4d6fa93ccc871ae2285 guile-3.0.7_0.tar.bz2 +b38422d646590600444f0ff12fee6fd738baaf471338aa67899db950d3521127 guile-3.0.9_0.tar.bz2 8d2015b87337abbf287f7a39ee4cf53514120b5d3e90a93fe7d533dcc43f14fa help2man-1.36.4_0.tar.bz2 3f06d1a7f1b1770d4550ff6316c7f06fd26e30bddad7c1b665f1fae80e409c8c kbd-1.15_0.tar.bz2 2a661da13801028f5af98e5d9f6de417c21c90df1bcef4809caf0c2094fdd8f4 kexec-tools-2.0.22_0.tar.bz2 diff --git a/sysc/guile-3.0.7/guile-3.0.7.sh b/sysc/guile-3.0.9/guile-3.0.9.sh similarity index 59% rename from sysc/guile-3.0.7/guile-3.0.7.sh rename to sysc/guile-3.0.9/guile-3.0.9.sh index 053c04c..205af11 100755 --- a/sysc/guile-3.0.7/guile-3.0.7.sh +++ b/sysc/guile-3.0.9/guile-3.0.9.sh @@ -4,17 +4,30 @@ # # SPDX-License-Identifier: GPL-3.0-or-later -src_prepare() { - default +# guile-psyntax-bootstrapping only supports Guile 3.0.7 +# We need Guile 3.0.8 or later in order to have reproducible builds when +# parallelism (-jX) is enabled. +# +# To work around this issue, we; +# 1. run guile-psyntax-bootstrapping on Guile 3.0.7 +# 2. take psyntax-pp.scm from Guile 3.0.7 and transplant into 3.0.9 +# 3. compile guile 3.0.9 +common_prepare() { find . -name '*.info*' -delete - - ../../import-gnulib.sh + rm -r prebuilt/*/ice-9 # Remove buildstamp sed -i "s/\`date -u +'%Y-%m-%d %T'.*\`/1970-01-01 00:00:00/" libguile/Makefile.am autoreconf-2.71 -fi +} + +src_prepare() { + # First, prepare Guile 3.0.7 + cd ../guile-3.0.7 + ../../import-gnulib-3.0.7.sh + common_prepare # pp-syntax bootstrap: remove pre-gen file sha256sum module/ice-9/psyntax-pp.scm | tee psyntax-pp.sha256 @@ -28,19 +41,30 @@ src_prepare() { cp psyntax.scm psyntax-patched.scm patch <../../../guile-psyntax-bootstrapping-guile-3.0.7/stage2.patch cd ../.. + + # Now, Guile 3.0.9 + cd ../guile-3.0.9 + default + ../../import-gnulib.sh + common_prepare } src_configure() { - PKG_CONFIG_PATH="${LIBDIR}/pkgconfig" ./configure \ - --prefix="${PREFIX}" \ - --libdir="${LIBDIR}" \ - --build=i386-unknown-linux-musl \ - --disable-shared \ - --disable-jit + for d in . ../guile-3.0.7; do + pushd "${d}" + PKG_CONFIG_PATH="${LIBDIR}/pkgconfig" ./configure \ + --prefix="${PREFIX}" \ + --libdir="${LIBDIR}" \ + --build=i386-unknown-linux-musl \ + --disable-shared \ + --disable-jit + popd + done } src_compile() { # pp-syntax: rebuild + pushd ../guile-3.0.7 make config.h make libguile/scmconfig.h make .version @@ -56,6 +80,10 @@ src_compile() { # Note that on 32-bit systems psyntax-pp is not identical to the original # and some identifier names are different. + popd + + # Transplant psyntax-pp.scm + cp -f ../guile-3.0.7/module/ice-9/psyntax-pp.scm module/ice-9/ # Now proceed with the build default diff --git a/sysc/guile-3.0.7/import-gnulib.sh b/sysc/guile-3.0.9/import-gnulib-3.0.7.sh similarity index 100% rename from sysc/guile-3.0.7/import-gnulib.sh rename to sysc/guile-3.0.9/import-gnulib-3.0.7.sh diff --git a/sysc/guile-3.0.9/import-gnulib.sh b/sysc/guile-3.0.9/import-gnulib.sh new file mode 100755 index 0000000..095c5f5 --- /dev/null +++ b/sysc/guile-3.0.9/import-gnulib.sh @@ -0,0 +1,129 @@ +#!/bin/sh + +# SPDX-FileCopyrightText: 2023 fosslinux +# +# SPDX-License-Identifier: GPL-3.0-or-later + +../gnulib-356a414e/gnulib-tool --import --local-dir=gnulib-local \ + --lib=libgnu \ + --source-base=lib \ + --m4-base=m4 \ + --doc-base=doc \ + --tests-base=tests \ + --aux-dir=build-aux \ + --lgpl=3 \ + --conditional-dependencies \ + --libtool \ + --macro-prefix=gl \ + --no-vc-files \ + --avoid=lock \ + --avoid=unistr/base \ + --avoid=unistr/u8-mbtouc \ + --avoid=unistr/u8-mbtouc-unsafe \ + --avoid=unistr/u8-mbtoucr \ + --avoid=unistr/u8-prev \ + --avoid=unistr/u8-uctomb \ + --avoid=unitypes \ + accept4 \ + alignof \ + alloca-opt \ + announce-gen \ + autobuild \ + bind \ + byteswap \ + c-strcase \ + canonicalize-lgpl \ + ceil \ + clock-time \ + close \ + connect \ + copysign \ + dirfd \ + dirname-lgpl \ + duplocale \ + environ \ + extensions \ + flexmember \ + flock \ + floor \ + fpieee \ + frexp \ + fstat \ + fsync \ + full-read \ + full-write \ + func \ + gendocs \ + getaddrinfo \ + gethostname \ + getlogin \ + getpeername \ + getsockname \ + getsockopt \ + git-version-gen \ + gitlog-to-changelog \ + gnu-web-doc-update \ + gnupload \ + havelib \ + iconv_open-utf \ + inet_ntop \ + inet_pton \ + isfinite \ + isinf \ + isnan \ + ldexp \ + lib-symbol-versions \ + lib-symbol-visibility \ + libunistring \ + link \ + listen \ + localcharset \ + locale \ + log1p \ + lstat \ + maintainer-makefile \ + malloc-gnu \ + malloca \ + mkdir \ + mkostemp \ + nl_langinfo \ + nproc \ + nstrftime \ + open \ + pipe-posix \ + pipe2 \ + poll \ + posix_spawn \ + posix_spawn_file_actions_addclose \ + posix_spawn_file_actions_adddup2 \ + posix_spawn_file_actions_addopen \ + posix_spawn_file_actions_init \ + posix_spawnp \ + putenv \ + readlink \ + recv \ + recvfrom \ + regex \ + rename \ + rmdir \ + select \ + send \ + sendto \ + setenv \ + setsockopt \ + shutdown \ + socket \ + stat-time \ + stdlib \ + striconveh \ + string \ + sys_select \ + sys_stat \ + time \ + times \ + trunc \ + unistd \ + verify \ + vsnprintf \ + warnings \ + wchar diff --git a/sysc/guile-3.0.7/sources b/sysc/guile-3.0.9/sources similarity index 61% rename from sysc/guile-3.0.7/sources rename to sysc/guile-3.0.9/sources index 2fb53f8..4aebe75 100644 --- a/sysc/guile-3.0.7/sources +++ b/sysc/guile-3.0.9/sources @@ -1,3 +1,5 @@ https://mirrors.kernel.org/gnu/guile/guile-3.0.7.tar.xz f57d86c70620271bfceb7a9be0c81744a033f08adc7ceba832c9917ab3e691b7 +https://mirrors.kernel.org/gnu/guile/guile-3.0.9.tar.xz 1a2625ac72b2366e95792f3fe758fd2df775b4044a90a4a9787326e66c0d750d https://git.savannah.gnu.org/cgit/gnulib.git/snapshot/gnulib-901694b9.tar.gz f9aad85de1f41d57c9368d304020ffbf354a5e56db1297f022c3d12181134e56 +https://git.savannah.gnu.org/cgit/gnulib.git/snapshot/gnulib-356a414e.tar.gz fc9973f1a9243fdc4b98d33d7704f3c71bfdc4c2ef96899b8f28cade7290a714 https://github.com/schierlm/guile-psyntax-bootstrapping/archive/refs/tags/guile-3.0.7.tar.gz 14cda9c416506dfadf60c14fc623ff01ef99b87564a78d0a29c5d17143c97609 diff --git a/sysc/run2.sh b/sysc/run2.sh index 988b992..1b62fe3 100755 --- a/sysc/run2.sh +++ b/sysc/run2.sh @@ -86,7 +86,7 @@ build libatomic_ops-7.6.10 build gc-8.0.4 -build guile-3.0.7 +build guile-3.0.9 build which-2.21