diff options
author | Ludovic Courtès <ludo@gnu.org> | 2021-01-27 22:23:19 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2021-02-04 09:23:39 +0100 |
commit | 55daad123e896c0e83361496cf49625289ee3571 (patch) | |
tree | 44eedcc466b3ba3a3af9a25ef1a13c19ebca2a3b | |
parent | 316fc2acbb112bfa572ae30f95a93bcd56621234 (diff) | |
download | guix-55daad123e896c0e83361496cf49625289ee3571.tar guix-55daad123e896c0e83361496cf49625289ee3571.tar.gz |
build: Add '--with-channel-commit' and related configure flags.
Partially fixes <https://bugs.gnu.org/45896>.
* m4/guix.m4 (GUIX_CHANNEL_METADATA): New macro.
* configure.ac: Use it.
* guix/config.scm.in (%channel-metadata): Adjust accordingly.
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | guix/config.scm.in | 20 | ||||
-rw-r--r-- | m4/guix.m4 | 30 |
3 files changed, 47 insertions, 4 deletions
diff --git a/configure.ac b/configure.ac index aa97f67ebe..aa60471143 100644 --- a/configure.ac +++ b/configure.ac @@ -25,6 +25,7 @@ AM_GNU_GETTEXT_VERSION([0.18.1]) GUIX_SYSTEM_TYPE GUIX_ASSERT_SUPPORTED_SYSTEM +GUIX_CHANNEL_METADATA AM_CONDITIONAL([CROSS_COMPILING], [test "x$cross_compiling" = "xyes"]) diff --git a/guix/config.scm.in b/guix/config.scm.in index 223c9eb418..d582d91d74 100644 --- a/guix/config.scm.in +++ b/guix/config.scm.in @@ -61,9 +61,23 @@ (define %channel-metadata ;; When true, this is an sexp containing metadata for the 'guix' channel ;; this file was built from. This is used by (guix describe). - - ;; TODO: Implement 'configure.ac' machinery to initialize it. - #f) + (let ((url @GUIX_CHANNEL_URL@) + (commit @GUIX_CHANNEL_COMMIT@) + (intro @GUIX_CHANNEL_INTRODUCTION@)) + (and url commit + `(repository + (version 0) + (url ,url) + (branch "master") ;XXX: doesn't really matter + (commit ,commit) + (name guix) + ,@(if intro + `((introduction + (channel-introduction + (version 0) + (commit ,(car intro)) + (signer ,(cdr intro))))) + '()))))) (define %storedir "@storedir@") diff --git a/m4/guix.m4 b/m4/guix.m4 index f8eb5aaf51..c1ce0876fa 100644 --- a/m4/guix.m4 +++ b/m4/guix.m4 @@ -1,5 +1,5 @@ dnl GNU Guix --- Functional package management for GNU -dnl Copyright © 2012, 2013, 2014, 2015, 2016, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> +dnl Copyright © 2012, 2013, 2014, 2015, 2016, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> dnl Copyright © 2014 Mark H Weaver <mhw@netris.org> dnl Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> dnl @@ -398,3 +398,31 @@ that of the existing installation '$guix_cv_current_localstatedir']) esac fi fi]) + +dnl GUIX_CHANNEL_METADATA +dnl +dnl Provide the channel metadata for this build. This allows 'guix describe' +dnl to return meaningful data, as it would for a 'guix pull'-provided 'guix'. +dnl The default URL and introduction are taken from (guix channels). +AC_DEFUN([GUIX_CHANNEL_METADATA], [ + AC_ARG_WITH([channel-url], [AS_HELP_STRING([--with-channel-url=URL], + [assert that this is built from the Git repository at URL])], + [guix_channel_url="\"$withval\""], + [guix_channel_url="\"https://git.savannah.gnu.org/git/guix.git\""]) + AC_ARG_WITH([channel-commit], [AS_HELP_STRING([--with-channel-commit=COMMIT], + [assert that this is built from COMMIT])], + [guix_channel_commit="\"$withval\""], + [guix_channel_commit="#f"]) + AC_ARG_WITH([channel-introduction], [AS_HELP_STRING([--with-channel-introduction=COMMIT:FINGERPRINT], + [specify COMMIT and FINGERPRINT as the introduction of this channel])], + [guix_channel_introduction="'(\"`echo $withval | cut -f1 -d:`\" \"`echo $withval | cut -f2 -d:`\")"], + [guix_channel_introduction="'(\"9edb3f66fd807b096b48283debdcddccfea34bad\" . \"BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA\")"]) + + GUIX_CHANNEL_URL="$guix_channel_url" + GUIX_CHANNEL_COMMIT="$guix_channel_commit" + GUIX_CHANNEL_INTRODUCTION="$guix_channel_introduction" + + AC_SUBST([GUIX_CHANNEL_URL]) + AC_SUBST([GUIX_CHANNEL_COMMIT]) + AC_SUBST([GUIX_CHANNEL_INTRODUCTION]) +]) |