Support JFS!

DoneSubmitted by Tobias Geerinckx-Rice.
Details
2 participants
  • Danny Milosavljevic
  • Tobias Geerinckx-Rice
Owner
unassigned
Severity
normal
T
T
Tobias Geerinckx-Rice wrote on 2 Jan 2020 01:27
(name . Tobias Geerinckx-Rice via Guix-patches via)(address . guix-patches@gnu.org)
87r20ivh15.fsf@nckx
Friends,

These should add JFS root support to Guix System.

There's a system test, which passes, but I need to do some more
testing with external drives &c. when I get home. Help welcome.

Kind regards,

T G-R
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEfo+u0AlEeO9y5k0W2Imw8BjFSTwFAl4NOQYACgkQ2Imw8BjF
STw26xAAtDqT0DcDwpNSpl6Ovoddr5/037O+QTjqqhCY8H9+RkusOMlTsHBIEJAZ
B/ZFOdIjEEStf4mOBOpKypqvCfHCX43zhb6e6G9b4ieb9gsGZVzW13nA/xvzN5Gt
2ZoQKMb1kadnd8nvykAFMPsoWb29pVw7VYMuz1lvpVJnHhRFIyf1Nyn4M5kMTz33
d3FG8dQhQiXaQEomSodrc28LaIHHAbX7O4DC9TQE8T1A7p3Nl8SyAvN3UMk1kkmk
lqOOSNmQrPz4bv4xJvwE9jvRjSqdTgc4yDxLP+0d947FgubWIdrB9MSZCgD+TKYP
gF7r5Y9hfWedXbexAwZ36NMW9WutPQYtb+9Tsv+KhLKmK5MQOMyGMUiyI5BRePNT
XvHlhmUEjEiOB7+5Bq5yUfBOOwme4ZD1XG6j6gklwAjwmfYK34vAHBJv85Qvfnwr
lMgexL7KevaO5nFzjNMxa8E3pVyb1qyzYvFYbfYgCXJLexrpFLao8myLdNg9GWAB
z4RYLjUmsDWkS1tcm8p5KR7WDxHbc0bMo1O5dKtlsLJiEcfeaw/RxmZToY27ptFn
1S0bvdjsj02pct4FbmPcRCu+jyTJ2qhFPj3TcarNtIrWseYzlEgH5DtlfozHNDkq
d9/rhpiVeF2TVgUE4xEbOWxaF346UTJsXshunrr5r2/2+4qIIx4=
=swzi
-----END PGP SIGNATURE-----

T
T
Tobias Geerinckx-Rice wrote on 2 Jan 2020 01:38
[PATCH 1/7] file-systems: Add support for JFS.
(address . 38860@debbugs.gnu.org)
20200102003902.15205-1-me@tobias.gr
* gnu/build/file-systems.scm (%jfs-endianness): New syntax.
(jfs-superblock?, read-jfs-superblock, jfs-superblock-uuid)
(jfs-superblock-volume-name, check-jfs-file-system): New procedures.
(%partition-label-readers, %partition-uuid-readers, check-file-system):
Register them.
---
gnu/build/file-systems.scm | 49 ++++++++++++++++++++++++++++++++++++--
1 file changed, 47 insertions(+), 2 deletions(-)

Toggle diff (90 lines)
diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm
index 13c44aa728..9299cc2e4c 100644
--- a/gnu/build/file-systems.scm
+++ b/gnu/build/file-systems.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2016, 2017 David Craven <david@craven.ch>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -294,6 +295,45 @@ string.  Trailing spaces are trimmed."
   (string-trim-right (latin1->string (sub-bytevector sblock 40 32)
                                      (lambda (c) #f)) #\space))
 
+
+;;;
+;;; JFS file systems.
+;;;
+
+;; Taken from <linux-libre>/fs/jfs/jfs_superblock.h.
+
+(define-syntax %jfs-endianness
+  ;; Endianness of JFS file systems.
+  (identifier-syntax (endianness little)))
+
+(define (jfs-superblock? sblock)
+  "Return #t when SBLOCK is a JFS superblock."
+  (bytevector=? (sub-bytevector sblock 0 4)
+                (string->utf8 "JFS1")))
+
+(define (read-jfs-superblock device)
+  "Return the raw contents of DEVICE's JFS superblock as a bytevector, or #f
+if DEVICE does not contain a JFS file system."
+  (read-superblock device 32768 184 jfs-superblock?))
+
+(define (jfs-superblock-uuid sblock)
+  "Return the UUID of JFS superblock SBLOCK as a 16-byte bytevector."
+  (sub-bytevector sblock 136 16))
+
+(define (jfs-superblock-volume-name sblock)
+  "Return the volume name of SBLOCK as a string of at most 16 characters, or
+#f if SBLOCK has no volume name."
+  (null-terminated-latin1->string (sub-bytevector sblock 152 16)))
+
+(define (check-jfs-file-system device)
+  "Return the health of a JFS file system on DEVICE."
+  (match (status:exit-val
+          (system* "jfs_fsck" "-p" "-v" device))
+    (0 'pass)
+    (1 'errors-corrected)
+    (2 'reboot-required)
+    (_ 'fatal-error)))
+
 
 ;;;
 ;;; LUKS encrypted devices.
@@ -420,7 +460,9 @@ partition field reader that returned a value."
         (partition-field-reader read-fat32-superblock
                                 fat32-superblock-volume-name)
         (partition-field-reader read-fat16-superblock
-                                fat16-superblock-volume-name)))
+                                fat16-superblock-volume-name)
+        (partition-field-reader read-jfs-superblock
+                                jfs-superblock-volume-name)))
 
 (define %partition-uuid-readers
   (list (partition-field-reader read-iso9660-superblock
@@ -432,7 +474,9 @@ partition field reader that returned a value."
         (partition-field-reader read-fat32-superblock
                                 fat32-superblock-uuid)
         (partition-field-reader read-fat16-superblock
-                                fat16-superblock-uuid)))
+                                fat16-superblock-uuid)
+        (partition-field-reader read-jfs-superblock
+                                jfs-superblock-uuid)))
 
 (define read-partition-label
   (cut read-partition-field <> %partition-label-readers))
@@ -527,6 +571,7 @@ were found."
      ((string-prefix? "ext" type) check-ext2-file-system)
      ((string-prefix? "btrfs" type) check-btrfs-file-system)
      ((string-suffix? "fat" type) check-fat-file-system)
+     ((string-prefix? "jfs" type) check-jfs-file-system)
      (else #f)))
 
   (if check-procedure
-- 
2.23.0
T
T
Tobias Geerinckx-Rice wrote on 2 Jan 2020 01:38
[PATCH 2/7] uuid: Add support for JFS.
(address . 38860@debbugs.gnu.org)
20200102003902.15205-2-me@tobias.gr
* gnu/system/uuid.scm (string->jfs-uuid): New procedure.
(%uuid-parsers, %uuid-printers): Add ‘jfs’ file system type.
---
gnu/system/uuid.scm | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)

Toggle diff (46 lines)
diff --git a/gnu/system/uuid.scm b/gnu/system/uuid.scm
index e7a3a0439d..225959e2b7 100644
--- a/gnu/system/uuid.scm
+++ b/gnu/system/uuid.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017 Danny Milosavljevic <dannym@scratchpost.org>
+;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -43,6 +44,7 @@
             string->ext4-uuid
             string->btrfs-uuid
             string->fat-uuid
+            string->jfs-uuid
             iso9660-uuid->string
 
             ;; XXX: For lack of a better place.
@@ -202,6 +204,7 @@ ISO9660 UUID representation."
 (define string->ext3-uuid string->dce-uuid)
 (define string->ext4-uuid string->dce-uuid)
 (define string->btrfs-uuid string->dce-uuid)
+(define string->jfs-uuid string->dce-uuid)
 
 (define-syntax vhashq
   (syntax-rules (=>)
@@ -215,13 +218,13 @@ ISO9660 UUID representation."
 
 (define %uuid-parsers
   (vhashq
-   ('dce 'ext2 'ext3 'ext4 'btrfs 'luks => string->dce-uuid)
+   ('dce 'ext2 'ext3 'ext4 'btrfs 'jfs 'luks => string->dce-uuid)
    ('fat32 'fat16 'fat => string->fat-uuid)
    ('iso9660 => string->iso9660-uuid)))
 
 (define %uuid-printers
   (vhashq
-   ('dce 'ext2 'ext3 'ext4 'btrfs 'luks => dce-uuid->string)
+   ('dce 'ext2 'ext3 'ext4 'btrfs 'jfs 'luks => dce-uuid->string)
    ('iso9660 => iso9660-uuid->string)
    ('fat32 'fat16 'fat => fat-uuid->string)))
 
-- 
2.23.0
T
T
Tobias Geerinckx-Rice wrote on 2 Jan 2020 01:38
[PATCH 3/7] gnu: Add jfsutils-static.
(address . 38860@debbugs.gnu.org)
20200102003902.15205-3-me@tobias.gr
gnu/packages/file-systems.scm (jfsutils/static): New public variable.
---
gnu/packages/file-systems.scm | 9 +++++++++
1 file changed, 9 insertions(+)

Toggle diff (22 lines)
diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
index fbf0e2641f..3a8848b3ad 100644
--- a/gnu/packages/file-systems.scm
+++ b/gnu/packages/file-systems.scm
@@ -145,6 +145,15 @@ transaction log.
 @end enumerate\n")
     (license license:gpl3+)))          ; no explicit version given
 
+(define-public jfsutils/static
+  (static-package
+   (package
+     (inherit jfsutils)
+     (name "jfsutils-static")
+     (inputs
+      `(("util-linux:static" ,util-linux "static")
+        ,@(package-inputs jfsutils))))))
+
 (define-public disorderfs
   (package
     (name "disorderfs")
-- 
2.23.0
T
T
Tobias Geerinckx-Rice wrote on 2 Jan 2020 01:38
[PATCH 4/7] gnu: Add jfs_fsck-static.
(address . 38860@debbugs.gnu.org)
20200102003902.15205-4-me@tobias.gr
* gnu/packages/file-systems.scm (jfs_fsck-static): New public variable.
---
gnu/packages/file-systems.scm | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)

Toggle diff (53 lines)
diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
index 3a8848b3ad..a3dc993055 100644
--- a/gnu/packages/file-systems.scm
+++ b/gnu/packages/file-systems.scm
@@ -28,6 +28,7 @@
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system linux-module)
+  #:use-module (guix build-system trivial)
   #:use-module (guix utils)
   #:use-module (gnu packages)
   #:use-module (gnu packages acl)
@@ -154,6 +155,38 @@ transaction log.
       `(("util-linux:static" ,util-linux "static")
         ,@(package-inputs jfsutils))))))
 
+(define-public jfs_fsck/static
+  (package
+    (name "jfs_fsck-static")
+    (version (package-version jfsutils))
+    (source #f)
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils)
+                      (ice-9 ftw)
+                      (srfi srfi-26))
+         (let* ((jfsutils (assoc-ref %build-inputs "jfsutils"))
+                (fsck     "jfs_fsck")
+                (out      (assoc-ref %outputs "out"))
+                (sbin     (string-append out "/sbin")))
+           (mkdir-p sbin)
+           (with-directory-excursion sbin
+             (install-file (string-append jfsutils "/sbin/" fsck)
+                           ".")
+             (remove-store-references fsck)
+             (chmod fsck #o555))
+           #t))))
+    (inputs
+     `(("jfsutils" ,jfsutils/static)))
+    (home-page (package-home-page jfsutils))
+    (synopsis "Statically-linked jfs_fsck command from jfsutils")
+    (description "This package provides statically-linked jfs_fsck command taken
+from the jfsutils package.  It is meant to be used in initrds.")
+    (license (package-license jfsutils))))
+
 (define-public disorderfs
   (package
     (name "disorderfs")
-- 
2.23.0
T
T
Tobias Geerinckx-Rice wrote on 2 Jan 2020 01:39
[PATCH 5/7] linux-initrd: Add support for JFS.
(address . 38860@debbugs.gnu.org)
20200102003902.15205-5-me@tobias.gr
* gnu/system/linux-initrd.scm (file-system-packages): Add jfs_fsck/static.
(file-system-type-modules): Add ‘jfs’ module.
---
gnu/system/linux-initrd.scm | 6 ++++++
1 file changed, 6 insertions(+)

Toggle diff (40 lines)
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm
index 0efb8fb222..dcc9b6b937 100644
--- a/gnu/system/linux-initrd.scm
+++ b/gnu/system/linux-initrd.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2017, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,6 +31,7 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages disk)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages file-systems)
   #:use-module (gnu packages guile)
   #:use-module ((gnu packages xorg)
                 #:select (console-setup xkeyboard-config))
@@ -240,6 +242,9 @@ FILE-SYSTEMS."
           '())
     ,@(if (find (file-system-type-predicate "btrfs") file-systems)
           (list btrfs-progs/static)
+          '())
+    ,@(if (find (file-system-type-predicate "jfs") file-systems)
+          (list jfs_fsck/static)
           '())))
 
 (define-syntax vhash                              ;TODO: factorize
@@ -269,6 +274,7 @@ FILE-SYSTEMS."
                     ("9p" => '("9p" "9pnet_virtio"))
                     ("btrfs" => '("btrfs"))
                     ("iso9660" => '("isofs"))
+                    ("jfs" => '("jfs"))
                     (else '())))
 
 (define (file-system-modules file-systems)
-- 
2.23.0
T
T
Tobias Geerinckx-Rice wrote on 2 Jan 2020 01:39
[PATCH 6/7] tests: install: Test a JFS root file system.
(address . 38860@debbugs.gnu.org)
20200102003902.15205-6-me@tobias.gr
* gnu/tests/install.scm (%jfs-root-os, %jfs-root-installation-script)
(%test-jfs-root-os): New variables.
---
gnu/tests/install.scm | 78 +++++++++++++++++++++++++++++++++++++++++--
1 file changed, 76 insertions(+), 2 deletions(-)

Toggle diff (102 lines)
diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm
index bce4c4b9d4..8842d48df8 100644
--- a/gnu/tests/install.scm
+++ b/gnu/tests/install.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -43,7 +43,8 @@
             %test-separate-home-os
             %test-raid-root-os
             %test-encrypted-root-os
-            %test-btrfs-root-os))
+            %test-btrfs-root-os
+            %test-jfs-root-os))
 
 ;;; Commentary:
 ;;;
@@ -810,4 +811,77 @@ build (current-guix) and then store a couple of full system images.")
                          (command (qemu-command/writable-image image)))
       (run-basic-test %btrfs-root-os command "btrfs-root-os")))))
 
+
+;;;
+;;; JFS root file system.
+;;;
+
+(define-os-with-source (%jfs-root-os %jfs-root-os-source)
+  ;; The OS we want to install.
+  (use-modules (gnu) (gnu tests) (srfi srfi-1))
+
+  (operating-system
+    (host-name "liberigilo")
+    (timezone "Europe/Paris")
+    (locale "en_US.UTF-8")
+
+    (bootloader (bootloader-configuration
+                 (bootloader grub-bootloader)
+                 (target "/dev/vdb")))
+    (kernel-arguments '("console=ttyS0"))
+    (file-systems (cons (file-system
+                          (device (file-system-label "my-root"))
+                          (mount-point "/")
+                          (type "jfs"))
+                        %base-file-systems))
+    (users (cons (user-account
+                  (name "charlie")
+                  (group "users")
+                  (supplementary-groups '("wheel" "audio" "video")))
+                 %base-user-accounts))
+    (services (cons (service marionette-service-type
+                             (marionette-configuration
+                              (imported-modules '((gnu services herd)
+                                                  (guix combinators)))))
+                    %base-services))))
+
+(define %jfs-root-installation-script
+  ;; Shell script of a simple installation.
+  "\
+. /etc/profile
+set -e -x
+guix --version
+
+export GUIX_BUILD_OPTIONS=--no-grafts
+ls -l /run/current-system/gc-roots
+parted --script /dev/vdb mklabel gpt \\
+  mkpart primary ext2 1M 3M \\
+  mkpart primary ext2 3M 2G \\
+  set 1 boot on \\
+  set 1 bios_grub on
+jfs_mkfs -L my-root -q /dev/vdb2
+mount /dev/vdb2 /mnt
+herd start cow-store /mnt
+mkdir /mnt/etc
+cp /etc/target-config.scm /mnt/etc/config.scm
+guix system build /mnt/etc/config.scm
+guix system init /mnt/etc/config.scm /mnt --no-substitutes
+sync
+reboot\n")
+
+(define %test-jfs-root-os
+  (system-test
+   (name "jfs-root-os")
+   (description
+    "Test basic functionality of an OS installed like one would do by hand.
+This test is expensive in terms of CPU and storage usage since we need to
+build (current-guix) and then store a couple of full system images.")
+   (value
+    (mlet* %store-monad ((image   (run-install %jfs-root-os
+                                               %jfs-root-os-source
+                                               #:script
+                                               %jfs-root-installation-script))
+                         (command (qemu-command/writable-image image)))
+      (run-basic-test %jfs-root-os command "jfs-root-os")))))
+
 ;;; install.scm ends here
-- 
2.23.0
T
T
Tobias Geerinckx-Rice wrote on 2 Jan 2020 01:39
[PATCH 7/7] install: Add jfsutils to the installation image.
(address . 38860@debbugs.gnu.org)
20200102003902.15205-7-me@tobias.gr
* gnu/system/install.scm (installation-os)[packages]: Add jfsutils.
---
gnu/system/install.scm | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

Toggle diff (31 lines)
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index 4d1612ac7f..c15c2c7814 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -38,6 +38,7 @@
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bootloaders)
   #:use-module (gnu packages certs)
+  #:use-module (gnu packages file-systems)
   #:use-module (gnu packages fonts)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages guile)
@@ -488,6 +489,7 @@ Access documentation at any time by pressing Alt-F2.\x1b[0m
                      mdadm
                      dosfstools         ;mkfs.fat, for the UEFI boot partition
                      btrfs-progs
+                     jfsutils
                      openssh    ;we already have sshd, having ssh/scp can help
                      wireless-tools iw wpa-supplicant-minimal iproute
                      ;; XXX: We used to have GNU fdisk here, but as of version
-- 
2.23.0
D
D
Danny Milosavljevic wrote on 2 Jan 2020 15:35
Re: [bug#38860] Support JFS!
(name . Tobias Geerinckx-Rice)(address . me@tobias.gr)(address . 38860@debbugs.gnu.org)
20200102153548.6e87bc3c@scratchpost.org
Hi,

I reviewed and tested the patchset and it LGTM!
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAl4N/8QACgkQ5xo1VCww
uqUQKQf/Q446dIR2n+nl4eLkR9+CAma55I+hFZssPyISPi40iArDT631eWS2zdrI
2U77RDHIKqcCxIqTLFm7DHus1A5z9iVxthofFAX+cjp1665OnFTzYC1N48+/eLIB
L27LiI/o+jII532o2nXkJgE+68cGjGYGDagWWFJDLR6sszCPXp9UNLp55Qs/BudO
g7cAHzXNQc30aSX8Uzr2usWeLncgMdPfVMMtZQf13ZAye0K9hTmUqwa3YJqiJXBu
zfI/GVTLg30wXPhoWyis0fuMaEBUYUSBzgz5MGryJCvBUUweCJxuuqo4k4KqxeB7
KSxt+Ydm36hrsaMSIbxDoAS38Mgnsg==
=fl0n
-----END PGP SIGNATURE-----


T
T
Tobias Geerinckx-Rice wrote on 3 Jan 2020 13:56
87o8vk8zrw.fsf@nckx
Danny,

Danny Milosavljevic 写道:
Toggle quote (2 lines)
> I reviewed and tested the patchset and it LGTM!

Thank you very much!

Pushed as b24f561c5efc6cd5afb7afa9d8cf7a1e32dfbb35 &al.

Kind regards,

T G-R
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEfo+u0AlEeO9y5k0W2Imw8BjFSTwFAl4POeMACgkQ2Imw8BjF
STyJ7BAAnATn4HuJUWb5x4cSUsRNPgzsv2SNbHpExkhkSryqoP0H9Bu+w/Rf3oGi
TPZkxlJOaJuKxdFD9zVdddVjv4gyXW7X/p5KoOg/hl1t6Fc3YItVxpCKrgchf98M
Sbrs95zQ1Wk5+KFjoCsz2FHeLPrNsuOQa9kAezmHU/Z8xjBgx8jCBjwZx71RhTQx
69Gac6w3GjDhjwgOLqO74g2FJEW0hgsCu5qzZy+LYi+cXrX0VAjwufhnG0DbA/Ud
B/IbMZ/cLi66DnJoF2hB4Kz80eE1AIW0lMPxisTbKKrjud7nlQFJ40qiIdY290x8
E3w43WpF1Fa9ebkGLnt8vHpuEUQscZCFyJ/s95HyjCQfHPoeV+BKBBLrTN6mcrcP
w5FqHWDhclPDr0wOqfYz5XrpmxVRAyaN+cIDXrRQzJhVG09pUqZsIOP5QYwF2+AD
MWrcens28db2BCaUV1dTd8FGsaTov0fRsQYoZUrds3hY3Y4HqR3+GcUSNgvC26jH
elgJw6QEtdlsPCif/25Gr20RznfuRWJ40M4HcoIh3gFqDXs+RVL3sKjBDBpzPW5I
KJsWMpptOSa1tgKNLLUwLmgt2Dx/MU5LAxfPhghWgMUIjtlhzOOq7W1+Ycp3mIca
RTpJxhLwiDX3RjCwBfyPuc1JxrhPW0cKd2M3w08tmH+5kuRWYU4=
=0kh8
-----END PGP SIGNATURE-----

Closed
?
Your comment

This issue is archived.

To comment on this conversation send email to 38860@debbugs.gnu.org