aboutsummaryrefslogtree
summaryrefslogtreecommitdiff
path: root/html
diff options
context:
space:
mode:
authorWojtek Kosior <koszko@koszko.org>2022-02-09 17:09:13 +0100
committerWojtek Kosior <koszko@koszko.org>2022-02-09 18:00:16 +0100
commit1c65dd5ca24052ccf9a92939eecd0966c9635c50 (patch)
tree7575157ccd729b4ad79f6c04501023ccb0532a63 /html
parent830d22d8931a4e5f0606d401f24d7cd937f8697e (diff)
downloadbrowser-extension-1c65dd5ca24052ccf9a92939eecd0966c9635c50.tar.gz
browser-extension-1c65dd5ca24052ccf9a92939eecd0966c9635c50.zip
adapt to changes in file path format
From now on we assume Hydrilla serves file contents at 'file/sha256/<hash>' instead of 'file/sha256-<hash>'. With this commit we also stop using the "hash_key" property internally.
Diffstat (limited to 'html')
-rw-r--r--html/install.js30
-rw-r--r--html/item_preview.js2
-rw-r--r--html/payload_create.js11
3 files changed, 20 insertions, 23 deletions
diff --git a/html/install.js b/html/install.js
index e972924..68033bc 100644
--- a/html/install.js
+++ b/html/install.js
@@ -49,7 +49,7 @@
#FROM html/DOM_helpers.js IMPORT clone_template, Showable
#FROM common/entities.js IMPORT item_id_string, version_string, get_files, \
is_valid_version
-#FROM common/misc.js IMPORT sha256_async AS sha256
+#FROM common/misc.js IMPORT sha256_async AS compute_sha256
const coll = new Intl.Collator();
@@ -134,7 +134,7 @@ function InstallView(tab_id, on_view_show, on_view_hide) {
/* Make a link to view a file from the repository. */
const make_file_link = (preview_ctx, file_ref) => {
const a = document.createElement("a");
- a.href = `${this.repo_url}file/${file_ref.hash_key}`;
+ a.href = `${this.repo_url}file/sha256/${file_ref.sha256}`;
a.innerText = file_ref.file;
return a;
@@ -213,10 +213,6 @@ function InstallView(tab_id, on_view_show, on_view_hide) {
const files = response.json.source_copyright
.concat(item_type === "resource" ? response.json.scripts : []);
- for (const file of files) {
- file.hash_key = `sha256-${file.sha256}`;
- delete file.sha256;
- }
if (item_type === "mapping") {
for (const res_ref of Object.values(response.json.payloads))
@@ -294,7 +290,7 @@ function InstallView(tab_id, on_view_show, on_view_hide) {
dialog.close(this.dialog_ctx);
}
- const process_file = async (work, hash_key) => {
+ const process_file = async (work, sha256) => {
if (!work.is_ok)
return;
@@ -302,7 +298,7 @@ function InstallView(tab_id, on_view_show, on_view_hide) {
try {
var file_uses = await haketilodb.idb_get(work.file_uses_transaction,
- "file_uses", hash_key);
+ "file_uses", sha256);
if (!work.is_ok)
return;
} catch(e) {
@@ -311,7 +307,7 @@ function InstallView(tab_id, on_view_show, on_view_hide) {
}
if (!file_uses) {
- const url = `${this.repo_url}file/${hash_key}`;
+ const url = `${this.repo_url}file/sha256/${sha256}`;
try {
var response = await fetch(url);
@@ -336,15 +332,15 @@ function InstallView(tab_id, on_view_show, on_view_hide) {
return work.err(e, msg);
}
- const digest = await sha256(text);
+ const digest = await compute_sha256(text);
if (!work.is_ok)
return;
- if (`sha256-${digest}` !== hash_key) {
+ if (digest !== sha256) {
const msg = `${url} served a file with different SHA256 cryptographic sum :(`;
return work.err(null, msg);
}
- work.result.push([hash_key, text]);
+ work.result.push([sha256, text]);
}
if (--work.waiting === 0)
@@ -359,9 +355,9 @@ function InstallView(tab_id, on_view_show, on_view_hide) {
for (const item_def of item_defs) {
for (const file of get_files(item_def)) {
- if (!processed_files.has(file.hash_key)) {
- processed_files.add(file.hash_key);
- process_file(work, file.hash_key);
+ if (!processed_files.has(file.sha256)) {
+ processed_files.add(file.sha256);
+ process_file(work, file.sha256);
}
}
}
@@ -379,13 +375,13 @@ function InstallView(tab_id, on_view_show, on_view_hide) {
try {
var files = (await get_missing_files(item_defs))
- .reduce((ac, [hk, txt]) => Object.assign(ac, {[hk]: txt}), {});
+ .reduce((ac, [h, txt]) => Object.assign(ac, {[h]: txt}), {});
} catch(e) {
var dialog_prom = dialog.error(this.dialog_ctx, e);
}
if (files !== undefined) {
- const data = {files};
+ const data = {file: {sha256: files}};
const names = [["mappings", "mapping"], ["resources", "resource"]];
for (const [set_name, type] of names) {
diff --git a/html/item_preview.js b/html/item_preview.js
index c55183c..bd4fd68 100644
--- a/html/item_preview.js
+++ b/html/item_preview.js
@@ -63,7 +63,7 @@ const file_preview_link = browser.runtime.getURL("html/file_preview.html");
*/
function make_file_link(preview_object, file_ref) {
const a = document.createElement("a");
- a.href = `${file_preview_link}#${file_ref.hash_key}`;
+ a.href = `${file_preview_link}#${file_ref.sha256}`;
a.innerText = file_ref.file;
a.target = "_blank";
return a;
diff --git a/html/payload_create.js b/html/payload_create.js
index 8828809..7782299 100644
--- a/html/payload_create.js
+++ b/html/payload_create.js
@@ -45,7 +45,7 @@
#IMPORT common/indexeddb.js AS haketilodb
#FROM html/DOM_helpers.js IMPORT clone_template
-#FROM common/sha256.js IMPORT sha256
+#FROM common/sha256.js IMPORT sha256 AS compute_sha256
#FROM common/patterns.js IMPORT validate_normalize_url_pattern, \
patterns_doc_url
@@ -94,7 +94,7 @@ function collect_form_data(form_ctx)
const script = form_ctx.script.value;
if (!script)
throw "The 'script' field is required!";
- const hash_key = `sha256-${sha256(script)}`;
+ const sha256 = compute_sha256(script);
const resource = {
source_name: identifier,
@@ -106,7 +106,7 @@ function collect_form_data(form_ctx)
version: [1],
description,
dependencies: [],
- scripts: [{file: "payload.js", hash_key}]
+ scripts: [{file: "payload.js", sha256}]
};
const mapping = {
@@ -121,7 +121,7 @@ function collect_form_data(form_ctx)
payloads
};
- return {identifier, resource, mapping, files: {[hash_key]: script}};
+ return {identifier, resource, mapping, files_by_sha256: {[sha256]: script}};
}
function clear_form(form_ctx)
@@ -137,7 +137,8 @@ async function save_payload(saving)
{
const db = await haketilodb.get();
const tx_starter = haketilodb.start_items_transaction;
- const tx_ctx = await tx_starter(["resource", "mapping"], saving.files);
+ const files = {sha256: saving.files_by_sha256};
+ const tx_ctx = await tx_starter(["resource", "mapping"], files);
for (const type of ["resource", "mapping"]) {
if (!saving[`override_${type}`] &&
-build (lambda _ ;; Don't change the ownership of any file at this time. (substitute* '("daemons/Makefile" "utils/Makefile") (("-o root -m 4755") "")) #t)) (add-after 'unpack 'create-runsystem (lambda _ ;; XXX Work towards having startup.c invoke the Guile rc (delete-file "daemons/runsystem.sh") (with-output-to-file "daemons/runsystem.sh" (lambda _ (display "#! /bin/bash # XXX Guile needs pipe support for its finalizer thread, to start. # Remove this script when Linux and the Hurd have xattr patches. PATH=@PATH@ fsck --yes --force / fsysopts / --writable # Note: this /hurd/ gets substituted settrans --create /servers/socket/1 /hurd/pflocal # parse multiboot arguments for i in \"$@\"; do case $i in (gnu.system=*) system=${i#gnu.system=} ;; esac done echo Starting ${system}/rc... exec ${system}/rc \"$@\" "))))) (add-before 'build 'set-file-names (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (bash (assoc-ref inputs "bash-minimal")) (coreutils (assoc-ref inputs "coreutils")) (sed (assoc-ref inputs "sed")) (grep (assoc-ref inputs "grep")) (util-linux (assoc-ref inputs "util-linux"))) (substitute* '("daemons/runttys.c" "daemons/getty.c" "utils/login.c") (("/bin/login") (string-append out "/bin/login")) (("/bin/bash") (string-append bash "/bin/bash"))) (substitute* '("startup/startup.c" "config/ttys") (("/libexec/") (string-append out "/libexec/"))) (substitute* '("utils/uptime.sh") (("/bin/w") (string-append out "/bin/w"))) ;; Upon first boot the /hurd symlink does not exist; it is ;; created during activation: Hard-code the .../hurd store file ;; name. (substitute* '("boot/boot.c" "daemons/console-run.c" "startup/startup.c") (("/hurd/") (string-append out "/hurd/"))) (substitute* '("libdiskfs/boot-start.c" "libdiskfs/opts-std-startup.c") (("_HURD_STARTUP") (string-append "\"" out "/hurd/startup\""))) (substitute* '("daemons/runsystem.sh" "utils/fakeroot.sh" "utils/remap.sh" "sutils/MAKEDEV.sh" "sutils/losetup.sh") (("^PATH=.*") (string-append "PATH=" out "/bin" ":" out "/sbin" ":" coreutils "/bin" ":" grep "/bin" ":" sed "/bin" ":" util-linux "/sbin\n")) (("/sbin/") (string-append out "/sbin/")) (("/libexec/") (string-append out "/libexec/")) (("/hurd/") (string-append out "/hurd/"))) #t))) (add-after 'patch-shebangs 'patch-libexec-shebangs (lambda* (#:key inputs outputs #:allow-other-keys) ;; XXX: Since the 'patch-shebangs' phase doesn't traverse ;; /libexec, do it here. (let* ((out (assoc-ref outputs "out")) (bash (assoc-ref inputs "bash-minimal")) (path (list (string-append bash "/bin")))) (for-each (lambda (file) (patch-shebang file path)) (find-files (string-append out "/libexec"))) #t))) (add-after 'build 'build-libdde-linux (lambda* (#:key inputs native-inputs #:allow-other-keys) (invoke (string-append (assoc-ref (or native-inputs inputs) "make") "/bin/make") ;; XXX There can be a race condition because subdirs ;; aren't interdependent targets in the Makefile. "-j1" "-C" "libdde_linux26" (string-append "SHELL=" (assoc-ref (or native-inputs inputs) "bash") "/bin/bash") (string-append "CC=" ,(cc-for-target)) "ARCH=x86"))) (add-after 'install 'install-goodies (lambda* (#:key inputs native-inputs outputs #:allow-other-keys) ;; Install additional goodies. ;; TODO: Build & install *.msgids for rpctrace. (let* ((out (assoc-ref outputs "out")) (datadir (string-append out "/share/hurd"))) ;; Install libdde_linux26. (invoke (string-append (assoc-ref (or native-inputs inputs) "make") "/bin/make") "-C" "libdde_linux26" "install" (string-append "SHELL=" (assoc-ref (or native-inputs inputs) "bash") "/bin/bash") (string-append "INSTALLDIR=" out "/share/libdde_linux26/build/include") "ARCH=x86") ;; Install the fancy UTF-8 motd. (mkdir-p (string-append out "/etc")) (copy-file "console/motd.UTF8" (string-append out "/etc/motd")) ;; Install the BDF font for use by the console client. (copy-file (assoc-ref inputs "unifont") "unifont.gz") (invoke "gunzip" "unifont.gz") (mkdir-p datadir) (copy-file "unifont" (string-append datadir "/vga-system.bdf")) #t)))) #:configure-flags ,#~(list (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib") "--enable-static-progs=ext2fs,iso9660fs,rumpdisk,pci-arbiter,acpi" "--disable-ncursesw" "--without-libbz2" "--without-libz" ;; This is needed to pass the configure check for ;; clnt_create "ac_func_search_save_LIBS=-ltirpc" "ac_cv_search_clnt_create=false" "CFLAGS=-fcommon"))) (build-system gnu-build-system) (inputs `(("libgcrypt" ,libgcrypt) ;for /hurd/random ("libdaemon" ,libdaemon) ;for /bin/console --daemonize ("unifont" ,unifont) ("libpciaccess" ,libpciaccess-0.17) ;need libpciaccess > 0.16 ;; For NFS support ("libtirpc" ,libtirpc/hurd) ;; Tools for the /libexec/* scripts. ("bash-minimal" ,bash-minimal) ("coreutils" ,coreutils) ("sed" ,sed) ("grep" ,grep) ("util-linux" ,util-linux "static") ;libuuid.a, for parted ("parted" ,parted) ;for rumpdisk ("rumpkernel" ,rumpkernel))) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) ("libgcrypt" ,libgcrypt) ;for 'libgcrypt-config' ("mig" , (if (%current-target-system) (cross-mig (%current-target-system)) mig)) ("pkg-config" ,pkg-config) ("perl" ,perl) ("texinfo" ,texinfo-4) ("dde-sources" ,dde-sources))) (supported-systems %hurd-systems) (home-page "https://www.gnu.org/software/hurd/hurd.html") (synopsis "The kernel servers for the GNU operating system") (description "The Hurd is the kernel for the GNU system, a replacement and augmentation of standard Unix kernels. It is a collection of protocols for system interaction (file systems, networks, authentication), and servers implementing them.") (license gpl2+))) (define-public netdde (let ((commit "e67c284ac113d939b10b4578334f27dab29d5b08") (revision "2")) (package (name "netdde") ;; The version prefix corresponds to the version of Linux from which the ;; drivers were taken. (version (git-version "2.6.32.65" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://git.savannah.gnu.org/git/hurd/incubator.git") (commit commit))) (patches (list (search-patch "netdde-build-fix.patch"))) (sha256 (base32 "0vnkls7sr7srzib5mnw6gybzl5qa8c5a4zf3h08w6gdr7zqbndh0")) (file-name (git-file-name name commit)))) (build-system gnu-build-system) (arguments `(#:tests? #f ;no "check" target #:make-flags (list (string-append "SHELL=" (search-input-file %build-inputs "/bin/bash")) "PKGDIR=libdde_linux26" (string-append "CC=" ,(cc-for-target)) "ARCH=x86") #:configure-flags ,#~(list (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib")) #:phases (modify-phases %standard-phases (delete 'configure) (add-after 'unpack 'prepare-dde (lambda* (#:key native-inputs inputs #:allow-other-keys) (for-each make-file-writable (find-files ".")) (let ((dde (assoc-ref (or native-inputs inputs) "dde-sources"))) (for-each (lambda (dir) (copy-recursively (string-append dde "/" dir ) dir)) '("libdde_linux26" "libddekit"))) (substitute* "libdde_linux26/mk/rel2abs.sh" (("/bin/bash") (which "bash"))))) (add-after 'patch-generated-file-shebangs 'build-libdde-linux26 (lambda* (#:key make-flags #:allow-other-keys) (with-directory-excursion "libdde_linux26" (apply invoke "make" (delete "PKGDIR=libdde_linux26" make-flags))))) (add-after 'build-libdde-linux26 'convert (lambda* (#:key make-flags #:allow-other-keys) (apply invoke "make" "convert" make-flags))) (replace 'build (lambda* (#:key make-flags #:allow-other-keys) (apply invoke "make" ,(string-append "LINK_PROGRAM=" (cc-for-target)) make-flags) ;; This hack to build netdde.static was found in ;; https://salsa.debian.org/hurd-team/netdde/-/blob/b539b2ad7a171371f140c3da58cce33f1a91ac12/debian/rules (delete-file "Makefile.inc") (apply invoke "make" ,(string-append "LINK_PROGRAM=" (cc-for-target) " -static") "TARGET=netdde.static" make-flags))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let ((hurd (string-append (assoc-ref outputs "out") "/hurd"))) (install-file "netdde" hurd) (install-file "netdde.static" hurd))))))) (inputs (list hurd libpciaccess-0.17 zlib `(,zlib "static"))) (native-inputs `(("coreutils" ,coreutils) ("gawk" ,gawk) ("grep" ,grep) ("perl" ,perl) ("sed" ,sed) ("dde-sources" ,dde-sources))) (supported-systems %hurd-systems) (home-page "https://www.gnu.org/software/hurd/hurd.html") (synopsis "Linux network drivers glued by the DDE layer") (description "This package provides Linux 2.6 network drivers that can be embedded in userland processes thanks to the DDE layer.") ;; Some drivers are dually licensed with the options being GPLv2 or one ;; of MPL/Expat/BSD-3 (dependent on the driver). (license gpl2)))) (define-public rumpkernel (let ((commit "81043d42fabda9baed7ac9ca36e3f3f5ed11ba81") (revision "3")) (package (name "rumpkernel") (version (git-version "0-20211031" revision commit)) ;; This uses the Debian Salsa rumpkernel package git as upstream as that ;; is where development happens. Once things have stabilized, upstream ;; may change to the NetBSD git from where Debian takes their snapshots. (source (origin (method git-fetch) (uri (git-reference (url "https://salsa.debian.org/hurd-team/rumpkernel.git") (commit commit))) (sha256 (base32 "0fv0k52qqcg3nq9012hibgsamvsd7mnvn2ikdasmzjhsp8qh5q3r")) (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments (list #:tests? #f #:modules '((srfi srfi-26) (ice-9 rdelim) (guix build utils) (guix build gnu-build-system)) ;; As we are using the Debian package as upstream, we follow their ;; build: ;; * apply patches in debian/patches taken from the ;; debian/patches/series file ;; * for the configure, make, and install stages, follow ;; the code in debian/rules ;; The Debian patchset includes a cross build feature that we ;; use with two differences ;; * Debian uses a multiarch toolchain ;; * we use cross-mig #:phases #~(modify-phases %standard-phases (add-after 'unpack 'apply-patches (lambda* (#:key target #:allow-other-keys) (let* ((patch-directory "debian/patches/") (series (string-append patch-directory "series")) (text (with-input-from-file series read-string)) (lines (string-split (string-trim-right text) #\newline)) (patches (filter (negate (cute string-prefix? "#" <>)) lines)) (patch-files (map (cute string-append patch-directory <>) patches))) (for-each (cute invoke "patch" "--force" "-p1" "-i" <>) patch-files) ;; Somewhere in the build.sh/make process MIG is not being ;; exported, apparently. (let* ((prefix (if (not target) "" (string-append target "-"))) (mig (string-append prefix "mig"))) (substitute* "pci-userspace/src-gnu/Makefile.inc" (("MIG=mig") (string-append "MIG=" mig))))))) (add-before 'configure 'setenv (lambda* (#:key build target #:allow-other-keys) (define (noisy-setenv name value) (setenv name value) (format (current-error-port) "set ~a=~s\n" name value)) (noisy-setenv "HOST_CC" "gcc") (let* ((prefix (if (not target) "" (string-append target "-")))) (noisy-setenv "TARGET_AR" (string-append prefix "ar")) (noisy-setenv "TARGET_CC" (string-append prefix "gcc")) (noisy-setenv "TARGET_CXX" (string-append prefix "g++")) (noisy-setenv "TARGET_LD" (string-append prefix "ld")) (noisy-setenv "TARGET_MIG" (string-append prefix "mig")) (noisy-setenv "TARGET_NM" (string-append prefix "nm")) (noisy-setenv "MIG" (string-append prefix "mig"))) (setenv "PAWD" "pwd") (for-each (cute noisy-setenv <> "") '("_GCC_CRTENDS" "_GCC_CRTEND" "_GCC_CRTBEGINS" "_GCC_CRTBEGIN" "_GCC_CRTI" "_GCC_CRTN")))) (replace 'configure (lambda args (let ((configure (assoc-ref %standard-phases 'configure))) (with-directory-excursion "buildrump.sh/src/lib/librumpuser" (apply configure args))))) ;; The build has three toplevel entry points ;; * buildrump.sh/src/build.sh: create a NetBSD-compatible ;; toolchain and supports cross-compiling ;; * buildrump.sh/src/lib/librumpuser: the librump* libraries ;; * pci-userspace/src-gnu: the librumpdev_pci* libraries (replace 'build (lambda* (#:key parallel-build? #:allow-other-keys) (let* ((jobs (if parallel-build? (parallel-job-count) 1)) (host-cpu #$(match (or (%current-target-system) (%current-system)) ((? target-x86-32?) "i386") ((? target-x86-64?) "amd64") (_ "unknown"))) (toprump (string-append (getcwd) "/buildrump.sh/src/sys/rump")) (rump-make (string-append (getcwd) "/buildrump.sh/src/obj/tooldir/bin/nbmake-" host-cpu))) (mkdir "obj") (with-directory-excursion "buildrump.sh/src" (invoke "sh" "build.sh" "-V" "TOOLS_BUILDRUMP=yes" "-V" "MKBINUTILS=no" "-V" "MKGDB=no" "-V" "MKGROFF=no" "-V" (string-append "TOPRUMP=" toprump) "-V" "BUILDRUMP_CPPFLAGS=-Wno-error=stringop-overread" "-V" "RUMPUSER_EXTERNAL_DPLIBS=pthread" "-V" (string-append "CPPFLAGS=" " -I../../obj/destdir." host-cpu "/usr/include" " -D_FILE_OFFSET_BITS=64" " -DRUMP_REGISTER_T=int" " -DRUMPUSER_CONFIG=yes" " -DNO_PCI_MSI_MSIX=yes" " -DNUSB_DMA=1") "-V" (string-append "CWARNFLAGS=" " -Wno-error=maybe-uninitialized" " -Wno-error=address-of-packed-member" " -Wno-error=unused-variable" " -Wno-error=stack-protector" " -Wno-error=array-parameter" " -Wno-error=array-bounds" " -Wno-error=stringop-overflow") "-V" "LIBCRTBEGIN=" "-V" "LIBCRTEND=" "-V" "LIBCRT0=" "-V" "LIBCRTI=" "-V" "_GCC_CRTENDS=" "-V" "_GCC_CRTEND=" "-V" "_GCC_CRTBEGINS=" "-V" "_GCC_CRTBEGIN=" "-V" "_GCC_CRTI=" "-V" "_GCC_CRTN=" "-U" "-u" "-T" "./obj/tooldir" "-m" host-cpu "-j" (number->string jobs) "tools" "rump")) (with-directory-excursion "buildrump.sh/src/lib/librumpuser" (setenv "RUMPRUN" "true") (invoke rump-make "dependall")) (with-directory-excursion "pci-userspace/src-gnu" (invoke rump-make "dependall"))))) (replace 'install (lambda _ (define (install-file file target) (let ((dest (string-append target (basename file)))) (format (current-output-port) "`~a' -> `~a'~%" file dest) (mkdir-p (dirname dest)) ;; Some libraries are duplicated/copied around in the ;; build system, do not fail trying to install one ;; a second time. (if (file-exists? dest) (format (current-error-port) "warning: skipping: ~a\n" file) (let ((stat (lstat file))) (case (stat:type stat) ((symlink) (let ((target (readlink file))) (symlink target dest))) (else (copy-file file dest))))))) (let ((header (string-append #$output "/include/rump")) (lib (string-append #$output "/lib/"))) (mkdir-p header) (copy-recursively "buildrump.sh/src/sys/rump/include/rump" header) (mkdir-p lib) (for-each (cute install-file <> lib) (append (find-files "buildrump.sh/src" "librump.*[.](a|so.*)") (find-files "obj" "librump.*[.](a|so.*)"))))))))) (inputs (list gnumach-headers libpciaccess-0.17)) (native-inputs (list autoconf automake libgcrypt (if (%current-target-system) (cross-mig (%current-target-system)) mig) zlib)) (supported-systems %hurd-systems) (home-page "https://wiki.netbsd.org/rumpkernel") (synopsis "NetBSD as rumpkernel for the GNU/Hurd") (description "This package provides NetBSD as rumpkernel for the GNU/Hurd, so that the Hurd may be installed on iron. Using this rumpkernel package, the hurd package's rumpdisk can be built which provides the pci.arbiter and rumpdisk servers.") (license ;; The NetBSD rumpkernel code is a big hodgepodge of softwares many of ;; which have their own different licensing terms, see also ;; https://salsa.debian.org/hurd-team/rumpkernel/-/blob/master/debian/copyright (list asl2.0 boost1.0 bsd-2 bsd-3 bsd-4 cddl1.0 expat gpl1 gpl2+ gpl3+ isc lgpl2.0+ public-domain (@ (guix licenses) zlib) (non-copyleft "file://src/lib/libc/hash/hashhl.c" "See debian/copyright in the distribution."))))))