aboutsummaryrefslogtreecommitdiff
path: root/etc/manifests/source.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2024-12-02 15:04:46 +0100
committerLudovic Courtès <ludo@gnu.org>2024-12-12 23:23:33 +0100
commit12d00767f036029f1f5738de644d4972db374f4f (patch)
tree5ea390393940fde1ad29fadfb0f13a72bf32a042 /etc/manifests/source.scm
parentb8a45bd0473ab2ba9b96b7ef429a557ece9bf06c (diff)
downloadguix-12d00767f036029f1f5738de644d4972db374f4f.tar.gz
guix-12d00767f036029f1f5738de644d4972db374f4f.zip
etc: Move manifests to a separate directory.
* etc/disarchive-manifest.scm, etc/hurd-manifest.scm, etc/kernels-manifest.scm, etc/release-manifest.scm, etc/source-manifest.scm, etc/system-tests.scm, etc/time-travel-manifest.scm, etc/upgrade-manifest.scm: Move to… * etc/manifests: … here, and drop “-manifest” from file name. * Makefile.am (EXTRA_DIST, assert-binaries-available, check-system): Adjust accordingly. Change-Id: Iedee3d0cdd42e72ef8bbf654ea5d3b47dca95874
Diffstat (limited to 'etc/manifests/source.scm')
-rw-r--r--etc/manifests/source.scm55
1 files changed, 55 insertions, 0 deletions
diff --git a/etc/manifests/source.scm b/etc/manifests/source.scm
new file mode 100644
index 0000000000..3e1ae07959
--- /dev/null
+++ b/etc/manifests/source.scm
@@ -0,0 +1,55 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2021, 2024 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix 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.
+;;;
+;;; GNU Guix 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 GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+;;; This file returns a manifest containing origins of all the packages. The
+;;; main purpose is to allow continuous integration services to keep upstream
+;;; source code around. It can also be passed to 'guix weather -m'.
+
+(use-modules (srfi srfi-1) (srfi srfi-26)
+ (ice-9 match) (ice-9 vlist)
+ (guix packages) (guix profiles)
+ (gnu packages))
+
+(define (upstream-origin source)
+ "Return SOURCE without any patches or snippet."
+ (origin (inherit source)
+ (snippet #f) (patches '())))
+
+(define (all-origins)
+ "Return the list of origins referred to by all the packages."
+ (let loop ((packages (all-packages))
+ (origins '())
+ (visited vlist-null))
+ (match packages
+ ((head . tail)
+ (let ((new (remove (cut vhash-assq <> visited)
+ (package-direct-sources head))))
+ (loop tail (append new origins)
+ (fold (cut vhash-consq <> #t <>)
+ visited new))))
+ (()
+ origins))))
+
+;; Return a manifest containing all the origins.
+(manifest (map (lambda (origin)
+ (manifest-entry
+ (name (or (origin-actual-file-name origin)
+ "origin"))
+ (version "0")
+ (item (upstream-origin origin))))
+ (all-origins)))