From 12d00767f036029f1f5738de644d4972db374f4f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 2 Dec 2024 15:04:46 +0100 Subject: etc: Move manifests to a separate directory. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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 --- etc/manifests/source.scm | 55 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 etc/manifests/source.scm (limited to 'etc/manifests/source.scm') 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 +;;; +;;; 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 . + +;;; 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))) -- cgit v1.2.3