gnuboot/website/configure.ac

202 lines
7.1 KiB
Plaintext
Raw Normal View History

# Copyright (C) 2023 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
AC_INIT([gnuboot],[0.1],[gnuboot@gnu.org])
AM_INIT_AUTOMAKE([foreign])
AC_CONFIG_FILES([Makefile])
website: use Guix v1.4.0. While the website code is separate from the rest, the same rationale than in the commit ada459875cab33c7986726c1647b713f2a45af62 ("Use a released guix revision globally.") applies for using Guix 1.4.0 (having access to the Guix manual for the right Guix version, not needing to run guix pull in some cases). However if we do that we run into an issue where guix fails to find a substitute for pandoc for Guix 1.4.0 for i686-linux. This results in Guix bootstraping ghc and then building pandoc and its dependencies. The ghc bootstrap is extremely long (many hours / few days on a ThinkPad X200, and it takes more than one night inside a VM with 8 cores and 16 GiB of RAM that runs on a KGPE-D16). Not running the ghc tests also doesn't speed up the build enough to be practical. However while the pandoc substitutes are not available on ci.guix.gnu.org, they are available on bordeaux.guix.gnu.org which is also in the default substitute servers. So the workaround is to tell users to make sure to authorize bordeaux.guix.gnu.org and then to force its use if it is authorized. This still enable users to not use substitute (for security reasons) if they want to. To do the detection we use guix repl as the guix command is supposed to be available and it also has access to Guix's guile modules. In addition, running ./autogen.sh && ./configure && make check results in the following error without this commit: guix time-machine --commit= -- shell --system=i686-linux --container --network --emulate-fhs --share=`realpath ../` bash coreutils findutils git grep nss-certs pandoc sed -- ./build.sh guix time-machine: error: Git error: unable to parse OID - too short make: *** [Makefile:696: build] Error 1 This was broken by the commit 07e9cbd12c99e39d0bc0b8449423bd914bb92b10 ("website: properly handle the dot dependency."). However if we bisect it, we instead find that the commit f8874d77803426cc01305e7f895284dbe7caae00 ("website: remove history/git-history.jpg") broke 'make check'. This is because history/git-history.jpg is supposed to be generated but it was included in git in the commit 388c0ef3d09623dd10a4f44f8f610244c3337e4c ("website: add history page of the GNU Boot git repositories.") and so once we starts generating the file again, 'make check' breaks. So we modified the commit 388c0ef3d09623dd10a4f44f8f610244c3337e4c ("website: add history page of the GNU Boot git repositories.") to not add history/git-history.jpg to properly bisect it. Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> neox: fixed typos in message and diff Acked-by: Adrien Bourmault <neox@gnu.org>
2024-11-23 17:04:07 +01:00
# Use the same revision than ../configure.ac
AC_SUBST([GUIX_REVISION], [8e2f32cee982d42a79e53fc1e9aa7b8ff0514714])
AC_SUBST([LIGHTTPD_PORT], [])
AC_SUBST([RSYNC_DESTINATION], [])
AC_SUBST([UNTITLED_PATH], [])
AC_SUBST([UNTITLED_GIT_FOUND], [])
AC_SUBST([WEBSITE_PREFIX], [])
# --enable-guix
AC_ARG_ENABLE(guix,
[AS_HELP_STRING([--enable-guix], [Use guix to run the scripts (default=enabled)])],
[guix=$enableval],
[guix="yes"])
AM_CONDITIONAL( [WANT_GUIX], [test x"$guix" = x"yes"])
# --enable-lighttpd
AC_ARG_ENABLE(lighttpd,
[AS_HELP_STRING([--enable-lighttpd],
[Use lighttpd to run the scripts (default=enabled)])],
[lighttpd=$enableval],
[lighttpd="yes"])
AM_CONDITIONAL( [WANT_LIGHTTPD], [test x"$lighttpd" = x"yes"])
# --with-lighttpd-port
AC_ARG_WITH([lighttpd-port],
[AS_HELP_STRING([--with-lighttpd-port=PORT],
[Use a custom TCP port for lighttpd tests instead of the
default one (8086).])],
[LIGHTTPD_PORT=$withval],
[LIGHTTPD_PORT=8086])
# --with-rsync-destination
AC_ARG_WITH([rsync-destination],
[AS_HELP_STRING([--with-rsync-destination=DESTINATION],
[Use a custom rsync destination (DEST in rsync manual)
instead of the default one
(wwwcvs@gnu.org:/var/www/software/gnuboot).])],
[RSYNC_DESTINATION=$withval],
[RSYNC_DESTINATION=wwwcvs@gnu.org:/var/www/software/gnuboot])
AM_CONDITIONAL( [WANT_UNTITLED_PATH], [test x"$UNTITLED_PATH" != x""])
# --with-untitled-path
AC_ARG_WITH([untitled-path],
[AS_HELP_STRING([--with-untitled-path=PATH],
[Use a local untitled directory from PATH instead of downloading
a specific version from
https://git.sr.ht/~libreboot/untitled .])],
[UNTITLED_PATH=$withval],
[])
AM_CONDITIONAL( [WANT_UNTITLED_PATH], [test x"$UNTITLED_PATH" != x""])
# --with-website-prefix
AC_ARG_WITH([website-prefix],
[AS_HELP_STRING(
[--with-website-prefix=PREFIX],
[By default, the website is to be deployed to
https://www.gnu.org/software/gnuboot/. But if you want to deploy to another
URL like https://mysite.org/test/, you would need to change the website
prefix to /test/ instead of the default one (software/gnuboot).])],
[WEBSITE_PREFIX=$withval],
[WEBSITE_PREFIX=software/gnuboot])
AM_CONDITIONAL( [WANT_UNTITLED_PATH], [test x"$UNTITLED_PATH" != x""])
# Check dependencies
AC_CHECK_PROG([FOUND_AWK], [awk], [awk])
AS_IF([test x"$FOUND_AWK" = x""],
[AC_MSG_ERROR([awk was not found in PATH ($PATH)])])
AC_CHECK_PROG([FOUND_CAT], [cat], [cat])
AS_IF([test x"$FOUND_CAT" = x""],
[AC_MSG_ERROR([cat was not found in PATH ($PATH)])])
AC_CHECK_PROG([FOUND_MKDIR], [mkdir], [mkdir])
AS_IF([test x"$FOUND_MKDIR" = x""],
[AC_MSG_ERROR([mkdir was not found in PATH ($PATH)])])
AC_CHECK_PROG([FOUND_PRINTF], [printf], [printf])
AS_IF([test x"$FOUND_PRINTF" = x""],
[AC_MSG_ERROR([printf was not found in PATH ($PATH)])])
AC_CHECK_PROG([FOUND_REALPATH], [realpath], [realpath])
AS_IF([test x"$FOUND_REALPATH" = x""],
[AC_MSG_ERROR([realpath was not found in PATH ($PATH)])])
AC_CHECK_PROG([FOUND_RM], [rm], [rm])
AS_IF([test x"$FOUND_RM" = x""],
[AC_MSG_ERROR([rm was not found in PATH ($PATH)])])
AC_CHECK_PROG([FOUND_SED], [sed], [sed])
AS_IF([test x"$FOUND_SED" = x""],
[AC_MSG_ERROR([sed was not found in PATH ($PATH)])])
AC_CHECK_PROG([FOUND_TAR], [tar], [tar])
AS_IF([test x"$FOUND_TAR" = x""],
[AC_MSG_ERROR([tar was not found in PATH ($PATH)])])
AS_IF([test x"$guix" = x"yes"],
[AC_CHECK_PROG([FOUND_GUIX], [guix], [guix])
AS_IF([test x"$FOUND_GUIX" = x""],
[AC_MSG_ERROR(
[guix was not found in PATH ($PATH)])])],
[AC_CHECK_PROG([FOUND_CP], [cp], [cp])
AS_IF([test x"$FOUND_CP" = x""],
[AC_MSG_ERROR(
[cp was not found in PATH ($PATH)])])
AC_CHECK_PROG([FOUND_DATE], [date], [date])
AS_IF([test x"$FOUND_DATE" = x""],
[AC_MSG_ERROR(
[date was not found in PATH ($PATH)])])
AC_CHECK_PROG([FOUND_DOT], [dot], [dot])
AS_IF([test x"$FOUND_DOT" = x""],
[AC_MSG_ERROR(
[dot was not found in PATH ($PATH)])])
AC_CHECK_PROG([FOUND_FIND], [find], [find])
AS_IF([test x"$FOUND_FIND" = x""],
[AC_MSG_ERROR(
[find was not found in PATH ($PATH)])])
AC_CHECK_PROG([FOUND_GREP], [grep], [grep])
AS_IF([test x"$FOUND_GREP" = x""],
[AC_MSG_ERROR(
[grep was not found in PATH ($PATH)])])
AC_CHECK_PROG([FOUND_HEAD], [head], [head])
AS_IF([test x"$FOUND_HEAD" = x""],
[AC_MSG_ERROR(
[head was not found in PATH ($PATH)])])
AC_CHECK_PROG([FOUND_GIT], [git], [git])
AS_IF([test x"$FOUND_GIT" = x""],
[AC_MSG_ERROR(
[git was not found in PATH ($PATH)])])
AC_CHECK_PROG([FOUND_GZIP], [gzip], [gzip])
AS_IF([test x"$FOUND_GZIP" = x""],
[AC_MSG_ERROR(
[gzip was not found in PATH ($PATH)])])
AS_IF([test x"$lighttpd" = x"yes"],
[AC_CHECK_PROG([FOUND_LIGHTTPD], [lighttpd], [lighttpd])
AS_IF([test x"$FOUND_LIGHTTPD" = x""],
[AC_MSG_ERROR(
[lighttpd was not found in PATH ($PATH)])])],
[AC_CHECK_PROG([FOUND_FALSE], [false], [false])
AS_IF([test x"$FOUND_FALSE" = x""],
[AC_MSG_ERROR(
[false was not found in PATH ($PATH)])])])
AC_CHECK_PROG([FOUND_PANDOC], [pandoc], [pandoc])
AS_IF([test x"$FOUND_PANDOC" = x""],
[AC_MSG_ERROR(
[pandoc was not found in PATH ($PATH)])])
AC_CHECK_PROG([FOUND_TAIL], [tail], [tail])
AS_IF([test x"$FOUND_TAIL" = x""],
[AC_MSG_ERROR(
[tail was not found in PATH ($PATH)])])
AC_CHECK_PROG([FOUND_TEST], [test], [test])
AS_IF([test x"$FOUND_TEST" = x""],
[AC_MSG_ERROR(
[test was not found in PATH ($PATH)])])])
AC_OUTPUT
AS_ECHO(["Configuration options:"])
AS_ECHO([" LIGHTTPD_PORT: $LIGHTTPD_PORT"])
AS_ECHO([" RSYNC_DESTINATION: $RSYNC_DESTINATION"])
AS_IF([test x"$UNTITLED_PATH" != x""],
[AS_ECHO([" UNTITLED_PATH: $UNTITLED_PATH"])])
AS_ECHO([" WEBSITE_PREFIX: $WEBSITE_PREFIX"])