# SPDX-FileCopyrightText: 2022 Andrius Štikonas # SPDX-FileCopyrightText: 2021 Michael Schierl # SPDX-FileCopyrightText: 2022 Samuel Tyler # # SPDX-License-Identifier: GPL-3.0-or-later # 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.11 # 3. compile guile 3.0.11 common_prepare() { find . -name '*.info*' -delete for f in doc/ref/*.{pdf,eps}; do rm "$f" touch "$f" done rm -r prebuilt/*/ice-9 rm libguile/c-tokenize.c libguile/vm-operations.h # 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 pushd ../guile-3.0.7 rm libguile/srfi-14.i.c pushd libguile mv ../../UnicodeData-13.0.0.txt UnicodeData.txt # Automatically indents the code by default. # We don't need that and don't have the program. sed -i '/indent /d' unidata_to_charset.pl perl unidata_to_charset.pl popd ../../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 rm module/ice-9/psyntax-pp.scm ## now let us prepare to rebuild it echo '(primitive-load-path "psyntax-bootstrap/allsteps")' > module/ice-9/psyntax-pp.scm mkdir -p module/psyntax-bootstrap cp ../guile-psyntax-bootstrapping-guile-3.0.7/psyntax-bootstrap/*.scm module/psyntax-bootstrap pushd module/ice-9 cp psyntax.scm psyntax-patched.scm patch <../../../guile-psyntax-bootstrapping-guile-3.0.7/stage2.patch popd popd # Now, main version default ../../import-gnulib.sh common_prepare } src_configure() { for d in . ../guile-3.0.7; do pushd "${d}" PKG_CONFIG_PATH="${LIBDIR}/pkgconfig" ./configure \ --prefix="${PREFIX}" \ --libdir="${LIBDIR}" \ --build="${TARGET}" \ --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 make -C lib all make -C meta all make -C libguile all make -C module ice-9/psyntax-pp.scm.gen # 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 }