From 8b2b027df9198cb5b22505813ada0c5e199929ed Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Tue, 31 Aug 2021 11:22:43 -0400 Subject: gnu: Add linux-libre 5.14.1. * gnu/packages/linux.scm (linux-libre-5.14-version, deblob-scripts-5.14, linux-libre-5.14-pristine-source, linux-libre-5.14-source, linux-libre-headers-5.14, linux-libre-5.14): New variables. * gnu/packages/aux-files/linux-libre/5.14-arm.conf, gnu/packages/aux-files/linux-libre/5.14-arm64.conf, gnu/packages/aux-files/linux-libre/5.14-i686.conf, gnu/packages/aux-files/linux-libre/5.14-x86_64.conf: New files. * Makefile.am (AUX_FILES): Add them. --- Makefile.am | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'Makefile.am') diff --git a/Makefile.am b/Makefile.am index 3c79760734..dd40a5ad9c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -370,6 +370,10 @@ AUX_FILES = \ gnu/packages/aux-files/chromium/master-preferences.json \ gnu/packages/aux-files/emacs/guix-emacs.el \ gnu/packages/aux-files/guix.vim \ + gnu/packages/aux-files/linux-libre/5.14-arm.conf \ + gnu/packages/aux-files/linux-libre/5.14-arm64.conf \ + gnu/packages/aux-files/linux-libre/5.14-i686.conf \ + gnu/packages/aux-files/linux-libre/5.14-x86_64.conf \ gnu/packages/aux-files/linux-libre/5.13-arm.conf \ gnu/packages/aux-files/linux-libre/5.13-arm64.conf \ gnu/packages/aux-files/linux-libre/5.13-i686.conf \ -- cgit v1.2.3 From 3b758dd22d691964ebbc0ce9521508fbc397263a Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 13 Sep 2021 15:24:57 +0200 Subject: etc: Add 'source-manifest.scm'. * etc/source-manifest.scm: New file. * Makefile.am (EXTRA_DIST): Add it. --- Makefile.am | 1 + etc/source-manifest.scm | 66 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 etc/source-manifest.scm (limited to 'Makefile.am') diff --git a/Makefile.am b/Makefile.am index dd40a5ad9c..c3244b944f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -627,6 +627,7 @@ EXTRA_DIST += \ etc/guix-install.sh \ etc/news.scm \ etc/release-manifest.scm \ + etc/source-manifest.scm \ etc/system-tests.scm \ etc/historical-authorizations \ build-aux/build-self.scm \ diff --git a/etc/source-manifest.scm b/etc/source-manifest.scm new file mode 100644 index 0000000000..f96a5da6f7 --- /dev/null +++ b/etc/source-manifest.scm @@ -0,0 +1,66 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2021 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 (all-packages) + "Return the list of all the packages, public or private, omitting only +superseded packages." + (fold-packages (lambda (package lst) + (match (package-replacement package) + (#f (cons package lst)) + (replacement + (append (list replacement package) lst)))) + '() + #:select? (negate package-superseded))) + +(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 From 98712c14fe3517a48603a12eb2e64db305a54fe5 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 14 Sep 2021 10:28:30 +0200 Subject: etc: Add 'disarchive-manifest.scm'. * etc/disarchive-manifest.scm: New file. * Makefile.am (EXTRA_DIST): Add it. --- Makefile.am | 1 + etc/disarchive-manifest.scm | 112 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 etc/disarchive-manifest.scm (limited to 'Makefile.am') diff --git a/Makefile.am b/Makefile.am index c3244b944f..299bc0f7fb 100644 --- a/Makefile.am +++ b/Makefile.am @@ -624,6 +624,7 @@ EXTRA_DIST += \ .guix-authorizations \ .guix-channel \ scripts/guix.in \ + etc/disarchive-manifest.scm \ etc/guix-install.sh \ etc/news.scm \ etc/release-manifest.scm \ diff --git a/etc/disarchive-manifest.scm b/etc/disarchive-manifest.scm new file mode 100644 index 0000000000..5cc59f5e2a --- /dev/null +++ b/etc/disarchive-manifest.scm @@ -0,0 +1,112 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2021 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 that builds a directory containing Disarchive +;;; metadata for all the tarballs packages refer to. + +(use-modules (srfi srfi-1) (ice-9 match) + (guix packages) (guix gexp) (guix profiles) + (guix base16) + (gnu packages)) + +(include "source-manifest.scm") + +(define (tarball-origin? origin) + (match (origin-actual-file-name origin) + (#f #f) + ((? string? file) + ;; As of version 0.2.1, Disarchive can only deal with raw tarballs and + ;; gzip-compressed tarballs. + (and (origin-hash origin) + (or (string-suffix? ".tar.gz" file) + (string-suffix? ".tgz" file) + (string-suffix? ".tar" file)))))) + +(define (origin->disarchive origin) + "Return a directory containing Disarchive metadata for ORIGIN, a tarball, or +an empty directory if ORIGIN could not be disassembled." + (define file-name + (let ((hash (origin-hash origin))) + (string-append (symbol->string (content-hash-algorithm hash)) + "/" + (bytevector->base16-string + (content-hash-value hash))))) + + (define disarchive + (specification->package "disarchive")) + + (define build + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils) + (srfi srfi-34)) + + (define tarball + #+(upstream-origin origin)) + + (define file-name + (string-append #$output "/" #$file-name)) + + (define profile + #+(profile (content (packages->manifest (list disarchive))))) + + (mkdir-p (dirname file-name)) + (setenv "PATH" (string-append profile "/bin")) + (setenv "GUILE_LOAD_PATH" + (string-append profile "/share/guile/site/" + (effective-version))) + (setenv "GUILE_LOAD_COMPILED_PATH" + (string-append profile "/lib/guile/" (effective-version) + "/site-ccache")) + + (guard (c ((invoke-error? c) + ;; Sometimes Disarchive fails with "could not find Gzip + ;; compressor". When that happens, produce an empty + ;; directory instead of failing. + (report-invoke-error c) + (delete-file file-name))) + (with-output-to-file file-name + (lambda () + ;; Disarchive records the tarball name in its output. Thus, + ;; strip the hash from TARBALL. + (let ((short-name (strip-store-file-name tarball))) + (symlink tarball short-name) + (invoke "disarchive" "disassemble" short-name)))))))) + + (computed-file (match (origin-actual-file-name origin) + ((? string? str) (string-append str ".dis")) + (#f "anonymous-tarball.dis")) + build)) + +(define (disarchive-collection origins) + "Return a directory containing all the Disarchive metadata for ORIGINS." + (directory-union "disarchive-collection" + (filter-map (lambda (origin) + (and (tarball-origin? origin) + (origin->disarchive origin))) + origins) + #:copy? #t)) + + +;; The manifest containing Disarchive data. +(let ((origins (all-origins))) + (manifest + (list (manifest-entry + (name "disarchive-collection") + (version (length origins)) + (item (disarchive-collection origins)))))) -- cgit v1.2.3