[PATCH 0/2] Fix more derivation builder gexp issues.

  • Done
  • quality assurance status badge
Details
2 participants
  • Ludovic Courtès
  • Christopher Baines
Owner
unassigned
Submitted by
Christopher Baines
Severity
normal
C
C
Christopher Baines wrote on 10 May 2023 14:26
(address . guix-patches@gnu.org)
87o7ms1if5.fsf@cbaines.net
Christopher Baines (2):
gnu: gcc: Change custom-gcc to use gexp's.
gnu: gcc: Change make-gccgo to use gexp's.

gnu/packages/gcc.scm | 78 ++++++++++++++++++++++----------------------
1 file changed, 39 insertions(+), 39 deletions(-)


base-commit: e0c35d1578c10a8fe27c8372f3a8bb5dd88b01b8
--
2.39.1
C
C
Christopher Baines wrote on 10 May 2023 14:28
[PATCH 1/2] gnu: gcc: Change custom-gcc to use gexp's.
(address . 63416@debbugs.gnu.org)
dd62cec2706aabf66c565abac302e3ba4dc658c4.1683721736.git.mail@cbaines.net
As this seems to be generating broken derivations for i586-gnu otherwise.

* gnu/packages/gcc.scm (custom-gcc): Use gexp's for the generated package
arguments.
---
gnu/packages/gcc.scm | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)

Toggle diff (38 lines)
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 47fb443155..2bd4cad6ec 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -1043,18 +1043,18 @@ (define* (custom-gcc gcc name languages
(srfi srfi-26)
(ice-9 regex)))
((#:configure-flags flags)
- `(cons (string-append "--enable-languages="
- ,(string-join languages ","))
- (remove (cut string-match "--enable-languages.*" <>)
- ,flags)))
+ #~(cons (string-append "--enable-languages="
+ ,(string-join languages ","))
+ (remove (cut string-match "--enable-languages.*" <>)
+ #$flags)))
((#:phases phases)
- `(modify-phases ,phases
- (add-after 'install 'remove-broken-or-conflicting-files
- (lambda* (#:key outputs #:allow-other-keys)
- (for-each
- delete-file
- (find-files (string-append (assoc-ref outputs "out") "/bin")
- ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|lto)(-.*)?$"))))))))))
+ #~(modify-phases #$phases
+ (add-after 'install 'remove-broken-or-conflicting-files
+ (lambda* (#:key outputs #:allow-other-keys)
+ (for-each
+ delete-file
+ (find-files (string-append (assoc-ref outputs "out") "/bin")
+ ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|lto)(-.*)?$"))))))))))
(define %generic-search-paths
;; This is the language-neutral search path for GCC. Entries in $CPATH are

base-commit: e0c35d1578c10a8fe27c8372f3a8bb5dd88b01b8
--
2.39.1
C
C
Christopher Baines wrote on 10 May 2023 14:28
[PATCH 2/2] gnu: gcc: Change make-gccgo to use gexp's.
(address . 63416@debbugs.gnu.org)
4d9416d0128dde7952b8126b3f3b0d5f9472d024.1683721736.git.mail@cbaines.net
As otherwise this seems to generate broken derivations for i586-gnu.

* gnu/packages/gcc.scm (make-gccgo): Use gexp's for the package arguments.
---
gnu/packages/gcc.scm | 56 ++++++++++++++++++++++----------------------
1 file changed, 28 insertions(+), 28 deletions(-)

Toggle diff (69 lines)
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 2bd4cad6ec..38884678e0 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -1156,34 +1156,34 @@ (define (make-gccgo gcc)
(arguments
(substitute-keyword-arguments (package-arguments gccgo)
((#:phases phases)
- `(modify-phases ,phases
- (add-after 'install 'wrap-go-with-tool-path
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (exedir (string-append out "/libexec/gcc"))
- (tooldir (dirname (car (find-files exedir "^cgo$")))))
- (wrap-program (string-append out "/bin/go")
- `("GCCGOTOOLDIR" =
- (,(string-append "${GCCGOTOOLDIR:-" tooldir "}")))
- `("GOROOT" =
- (,(string-append "${GOROOT:-" out "}")))))))
- (add-before 'configure 'fix-gotools-runpath
- (lambda _
- (substitute* "gotools/Makefile.in"
- (("AM_LDFLAGS =" all)
- (string-append all " -Wl,-rpath=$(libdir) ")))))
- (add-before 'configure 'remove-tool-reference-from-libgo
- (lambda _
- (substitute* "libgo/Makefile.in"
- (("(GccgoToolDir = \\\")[^\\\"]+" _ start)
- (string-append start "/nonexistent"))
- ,@(if (version>=? (package-version gccgo) "12.0")
- '((("(defaultGOROOT = `)[^`]+" _ start)
- (string-append start "/nonexistent")))
- '((("(DefaultGoroot = \\\")[^\\\"]+" _ start)
- (string-append start "/nonexistent"))))
- (("(defaultGOROOTValue.*?return `)[^`]+" _ start)
- (string-append start "/nonexistent"))))))))))))
+ #~(modify-phases #$phases
+ (add-after 'install 'wrap-go-with-tool-path
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (exedir (string-append out "/libexec/gcc"))
+ (tooldir (dirname (car (find-files exedir "^cgo$")))))
+ (wrap-program (string-append out "/bin/go")
+ `("GCCGOTOOLDIR" =
+ (,(string-append "${GCCGOTOOLDIR:-" tooldir "}")))
+ `("GOROOT" =
+ (,(string-append "${GOROOT:-" out "}")))))))
+ (add-before 'configure 'fix-gotools-runpath
+ (lambda _
+ (substitute* "gotools/Makefile.in"
+ (("AM_LDFLAGS =" all)
+ (string-append all " -Wl,-rpath=$(libdir) ")))))
+ (add-before 'configure 'remove-tool-reference-from-libgo
+ (lambda _
+ (substitute* "libgo/Makefile.in"
+ (("(GccgoToolDir = \\\")[^\\\"]+" _ start)
+ (string-append start "/nonexistent"))
+ ,@(if (version>=? (package-version gccgo) "12.0")
+ '((("(defaultGOROOT = `)[^`]+" _ start)
+ (string-append start "/nonexistent")))
+ '((("(DefaultGoroot = \\\")[^\\\"]+" _ start)
+ (string-append start "/nonexistent"))))
+ (("(defaultGOROOTValue.*?return `)[^`]+" _ start)
+ (string-append start "/nonexistent"))))))))))))
(define-public gccgo-4.9
(custom-gcc (package
--
2.39.1
L
L
Ludovic Courtès wrote on 11 May 2023 12:44
Re: bug#63416: [PATCH 0/2] Fix more derivation builder gexp issues.
(name . Christopher Baines)(address . mail@cbaines.net)(address . 63416@debbugs.gnu.org)
87fs835eqn.fsf_-_@gnu.org
Hi,

Christopher Baines <mail@cbaines.net> skribis:

Toggle quote (2 lines)
> As this seems to be generating broken derivations for i586-gnu otherwise.

“Seems” isn’t confidence-inspiring. ;-)

Here’s one:

Toggle snippet (8 lines)
$ ./pre-inst-env guix build gccgo -s i586-gnu -d
/gnu/store/yzlmgxq20bk9xcbksi7q1f839056wzhr-gccgo-12.3.0.drv
$ guix gc --references /gnu/store/yzlmgxq20bk9xcbksi7q1f839056wzhr-gccgo-12.3.0.drv |grep builder
/gnu/store/jizw9gjvzb21jm7q7xlm71pw6fr24hhv-gccgo-12.3.0-builder
$ grep -q '#<' /gnu/store/jizw9gjvzb21jm7q7xlm71pw6fr24hhv-gccgo-12.3.0-builder ; echo $?
0

Toggle quote (3 lines)
> * gnu/packages/gcc.scm (custom-gcc): Use gexp's for the generated package
> arguments.

[...]

Toggle quote (5 lines)
> As otherwise this seems to generate broken derivations for i586-gnu.
>
> * gnu/packages/gcc.scm (make-gccgo): Use gexp's for the package arguments.


[...]

Toggle quote (8 lines)
> +++ b/gnu/packages/gcc.scm
> @@ -1156,34 +1156,34 @@ (define (make-gccgo gcc)
> (arguments
> (substitute-keyword-arguments (package-arguments gccgo)
> ((#:phases phases)
> - `(modify-phases ,phases
> - (add-after 'install 'wrap-go-with-tool-path

If ‘phases’ might be a gexp, then this should be a gexp as well.

Put differently, if one of the gcc* packages starts using gexps, then
all those that inherit from it should switch as well.

Since ‘gcc-11’ uses gexps (only when targeting the Hurd), all the other
ones should use gexps. That probably includes all those in gcc.scm and
all those in commencement.scm.

Ludo’.
C
C
Christopher Baines wrote on 11 May 2023 16:54
[PATCH v2 2/2] gnu: gcc: Change make-gccgo to use gexp's.
(address . 63416@debbugs.gnu.org)
de83ece2d58d7f55c28b2e74c46e252b94b66086.1683816850.git.mail@cbaines.net
As otherwise this seems to generate broken derivations for i586-gnu.

* gnu/packages/gcc.scm (make-gccgo): Use gexp's for the package arguments.
---
gnu/packages/gcc.scm | 56 ++++++++++++++++++++++----------------------
1 file changed, 28 insertions(+), 28 deletions(-)

Toggle diff (69 lines)
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 1db37529f7..1b444c2b02 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -1156,34 +1156,34 @@ (define (make-gccgo gcc)
(arguments
(substitute-keyword-arguments (package-arguments gccgo)
((#:phases phases)
- `(modify-phases ,phases
- (add-after 'install 'wrap-go-with-tool-path
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (exedir (string-append out "/libexec/gcc"))
- (tooldir (dirname (car (find-files exedir "^cgo$")))))
- (wrap-program (string-append out "/bin/go")
- `("GCCGOTOOLDIR" =
- (,(string-append "${GCCGOTOOLDIR:-" tooldir "}")))
- `("GOROOT" =
- (,(string-append "${GOROOT:-" out "}")))))))
- (add-before 'configure 'fix-gotools-runpath
- (lambda _
- (substitute* "gotools/Makefile.in"
- (("AM_LDFLAGS =" all)
- (string-append all " -Wl,-rpath=$(libdir) ")))))
- (add-before 'configure 'remove-tool-reference-from-libgo
- (lambda _
- (substitute* "libgo/Makefile.in"
- (("(GccgoToolDir = \\\")[^\\\"]+" _ start)
- (string-append start "/nonexistent"))
- ,@(if (version>=? (package-version gccgo) "12.0")
- '((("(defaultGOROOT = `)[^`]+" _ start)
- (string-append start "/nonexistent")))
- '((("(DefaultGoroot = \\\")[^\\\"]+" _ start)
- (string-append start "/nonexistent"))))
- (("(defaultGOROOTValue.*?return `)[^`]+" _ start)
- (string-append start "/nonexistent"))))))))))))
+ #~(modify-phases #$phases
+ (add-after 'install 'wrap-go-with-tool-path
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (exedir (string-append out "/libexec/gcc"))
+ (tooldir (dirname (car (find-files exedir "^cgo$")))))
+ (wrap-program (string-append out "/bin/go")
+ `("GCCGOTOOLDIR" =
+ (,(string-append "${GCCGOTOOLDIR:-" tooldir "}")))
+ `("GOROOT" =
+ (,(string-append "${GOROOT:-" out "}")))))))
+ (add-before 'configure 'fix-gotools-runpath
+ (lambda _
+ (substitute* "gotools/Makefile.in"
+ (("AM_LDFLAGS =" all)
+ (string-append all " -Wl,-rpath=$(libdir) ")))))
+ (add-before 'configure 'remove-tool-reference-from-libgo
+ (lambda _
+ (substitute* "libgo/Makefile.in"
+ (("(GccgoToolDir = \\\")[^\\\"]+" _ start)
+ (string-append start "/nonexistent"))
+ #$@(if (version>=? (package-version gccgo) "12.0")
+ '((("(defaultGOROOT = `)[^`]+" _ start)
+ (string-append start "/nonexistent")))
+ '((("(DefaultGoroot = \\\")[^\\\"]+" _ start)
+ (string-append start "/nonexistent"))))
+ (("(defaultGOROOTValue.*?return `)[^`]+" _ start)
+ (string-append start "/nonexistent"))))))))))))
(define-public gccgo-4.9
(custom-gcc (package
--
2.39.1
C
C
Christopher Baines wrote on 11 May 2023 16:54
[PATCH v2 1/2] gnu: gcc: Change custom-gcc to use gexp's.
(address . 63416@debbugs.gnu.org)
0c9c655159c65003e63d7ddc9f69a87608ae7ccd.1683816850.git.mail@cbaines.net
As this seems to be generating broken derivations for i586-gnu otherwise.

* gnu/packages/gcc.scm (custom-gcc): Use gexp's for the generated package
arguments.
---
gnu/packages/gcc.scm | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)

Toggle diff (38 lines)
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 47fb443155..1db37529f7 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -1043,18 +1043,18 @@ (define* (custom-gcc gcc name languages
(srfi srfi-26)
(ice-9 regex)))
((#:configure-flags flags)
- `(cons (string-append "--enable-languages="
- ,(string-join languages ","))
- (remove (cut string-match "--enable-languages.*" <>)
- ,flags)))
+ #~(cons (string-append "--enable-languages="
+ #$(string-join languages ","))
+ (remove (cut string-match "--enable-languages.*" <>)
+ #$flags)))
((#:phases phases)
- `(modify-phases ,phases
- (add-after 'install 'remove-broken-or-conflicting-files
- (lambda* (#:key outputs #:allow-other-keys)
- (for-each
- delete-file
- (find-files (string-append (assoc-ref outputs "out") "/bin")
- ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|lto)(-.*)?$"))))))))))
+ #~(modify-phases #$phases
+ (add-after 'install 'remove-broken-or-conflicting-files
+ (lambda* (#:key outputs #:allow-other-keys)
+ (for-each
+ delete-file
+ (find-files (string-append (assoc-ref outputs "out") "/bin")
+ ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|lto)(-.*)?$"))))))))))
(define %generic-search-paths
;; This is the language-neutral search path for GCC. Entries in $CPATH are

base-commit: 4557c83a7d9df6edc9dd3b7b2a53e1a0ec3e6e34
--
2.39.1
C
C
Christopher Baines wrote on 11 May 2023 16:57
Re: bug#63416: [PATCH 0/2] Fix more derivation builder gexp issues.
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 63416@debbugs.gnu.org)
87h6sizzgp.fsf@cbaines.net
Ludovic Courtès <ludo@gnu.org> writes:

Toggle quote (44 lines)
> Christopher Baines <mail@cbaines.net> skribis:
>
>> As this seems to be generating broken derivations for i586-gnu otherwise.
>
> “Seems” isn’t confidence-inspiring. ;-)
>
> Here’s one:
>
> $ ./pre-inst-env guix build gccgo -s i586-gnu -d
> /gnu/store/yzlmgxq20bk9xcbksi7q1f839056wzhr-gccgo-12.3.0.drv
> $ guix gc --references /gnu/store/yzlmgxq20bk9xcbksi7q1f839056wzhr-gccgo-12.3.0.drv |grep builder
> /gnu/store/jizw9gjvzb21jm7q7xlm71pw6fr24hhv-gccgo-12.3.0-builder
> $ grep -q '#<' /gnu/store/jizw9gjvzb21jm7q7xlm71pw6fr24hhv-gccgo-12.3.0-builder ; echo $?
> 0
>
>> * gnu/packages/gcc.scm (custom-gcc): Use gexp's for the generated package
>> arguments.
>
> [...]
>
>> As otherwise this seems to generate broken derivations for i586-gnu.
>>
>> * gnu/packages/gcc.scm (make-gccgo): Use gexp's for the package arguments.
>
>
> [...]
>
>> +++ b/gnu/packages/gcc.scm
>> @@ -1156,34 +1156,34 @@ (define (make-gccgo gcc)
>> (arguments
>> (substitute-keyword-arguments (package-arguments gccgo)
>> ((#:phases phases)
>> - `(modify-phases ,phases
>> - (add-after 'install 'wrap-go-with-tool-path
>
> If ‘phases’ might be a gexp, then this should be a gexp as well.
>
> Put differently, if one of the gcc* packages starts using gexps, then
> all those that inherit from it should switch as well.
>
> Since ‘gcc-11’ uses gexps (only when targeting the Hurd), all the other
> ones should use gexps. That probably includes all those in gcc.scm and
> all those in commencement.scm.

Yep, I think these changes were sufficient, but I missed replacing a few
unquote bits with ungexp, so as QA shows this affected a bunch of
derivations for all systems.

I've fixed those bits now and sent a v2.
-----BEGIN PGP SIGNATURE-----

iQKlBAEBCgCPFiEEPonu50WOcg2XVOCyXiijOwuE9XcFAmRdArZfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcRHG1haWxAY2Jh
aW5lcy5uZXQACgkQXiijOwuE9Xd/OQ//fpydlrGI/TnXajhiHhaNyad4/nAfztae
Ggirl1ATCy4eljL92k4f5ceFkXsATN52fEUXIhvczkVO1HlwHi6nrv070N8+O2SO
5qjcpP8aZrufx0DuZlZAETYGmCxw6LZWKxBBFyf+Xe0pXawmboUq4RfKAzch7fF6
lc3yJC/ZvMuLs7BzfdSirefJBZOxrLXEMD7+kkfl9+aTHbo3e/COsjMlVwJ6kJ4Z
KvXrWwUS/eQ6YtBtjsHlyWEuGktU9HkqIR1dkcXkgce0FjHXwDmQsp1MYlZ1D4h6
+qaunKOFps07m3IT1+p9OpSEiUNG4PKI8jkAC3CHtEG6Abt09XK+wNGEY1G6cY7h
keHTpcHDXVep5cCILx7qLdd7scFO4H9mhjPEQUJyJIlRTbmXUagGk/QnvQOa6oaI
AjNI91x5rcHlf+ru+/Fy6Z3vBpTJGWne3NMVSt6wS9h+WamOuTjbECpPb24uipzL
Ubm0zXJAMrJgCe8EiGOjSNPIcQc0KZw/3DF6GpsjPXFFnxsYqNNIFu8oyfsbD3ua
g8+uc58FFeylNYHCXcaBCMliylXpD+374zXRCWO90JKawblbnwuf9xY/5PyDviMq
L8qYgMUsu7+6FAKyJt6Z/23uEClrQEJCw5pzUxTSkVRZSLp54OOOfaR0IC7aP9lC
XgPpGCccC4I=
=GH1z
-----END PGP SIGNATURE-----

C
C
Christopher Baines wrote on 15 May 2023 10:51
(address . 63416-done@debbugs.gnu.org)
87ednif03s.fsf@cbaines.net
Christopher Baines <mail@cbaines.net> writes:

Toggle quote (52 lines)
> Ludovic Courtès <ludo@gnu.org> writes:
>
>> Christopher Baines <mail@cbaines.net> skribis:
>>
>>> As this seems to be generating broken derivations for i586-gnu otherwise.
>>
>> “Seems” isn’t confidence-inspiring. ;-)
>>
>> Here’s one:
>>
>> $ ./pre-inst-env guix build gccgo -s i586-gnu -d
>> /gnu/store/yzlmgxq20bk9xcbksi7q1f839056wzhr-gccgo-12.3.0.drv
>> $ guix gc --references /gnu/store/yzlmgxq20bk9xcbksi7q1f839056wzhr-gccgo-12.3.0.drv |grep builder
>> /gnu/store/jizw9gjvzb21jm7q7xlm71pw6fr24hhv-gccgo-12.3.0-builder
>> $ grep -q '#<' /gnu/store/jizw9gjvzb21jm7q7xlm71pw6fr24hhv-gccgo-12.3.0-builder ; echo $?
>> 0
>>
>>> * gnu/packages/gcc.scm (custom-gcc): Use gexp's for the generated package
>>> arguments.
>>
>> [...]
>>
>>> As otherwise this seems to generate broken derivations for i586-gnu.
>>>
>>> * gnu/packages/gcc.scm (make-gccgo): Use gexp's for the package arguments.
>>
>>
>> [...]
>>
>>> +++ b/gnu/packages/gcc.scm
>>> @@ -1156,34 +1156,34 @@ (define (make-gccgo gcc)
>>> (arguments
>>> (substitute-keyword-arguments (package-arguments gccgo)
>>> ((#:phases phases)
>>> - `(modify-phases ,phases
>>> - (add-after 'install 'wrap-go-with-tool-path
>>
>> If ‘phases’ might be a gexp, then this should be a gexp as well.
>>
>> Put differently, if one of the gcc* packages starts using gexps, then
>> all those that inherit from it should switch as well.
>>
>> Since ‘gcc-11’ uses gexps (only when targeting the Hurd), all the other
>> ones should use gexps. That probably includes all those in gcc.scm and
>> all those in commencement.scm.
>
> Yep, I think these changes were sufficient, but I missed replacing a few
> unquote bits with ungexp, so as QA shows this affected a bunch of
> derivations for all systems.
>
> I've fixed those bits now and sent a v2.

v2 looked good in QA, so I pushed this to master as
70986f052a2b60ccb5f3bd5da520f9cdf5ea60ad.
-----BEGIN PGP SIGNATURE-----

iQKlBAEBCgCPFiEEPonu50WOcg2XVOCyXiijOwuE9XcFAmRh8rdfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcRHG1haWxAY2Jh
aW5lcy5uZXQACgkQXiijOwuE9XcclA//fyBBHLcYnyZTYgeOEutnDZGjbzxC9B3O
1o70dDoH+aZhb5DsYckh1Be120m5/EKfB7AHYpJ4R3KQIOce67Jgm/eQ9HujW0A4
987azQVmWdKlrt6eM55YTGfSe2trpUGsCbuCdBdxFlfUlgbCzmWCiIsVcrqwSDrU
rhvYv27s7vfAURsEZUyPGeheZIPbrnlLbotD86qyeM+oVwQnHxrQ3XdK75wzzqkD
R65aFP4MBNKQcKSP8rc9MzkC1J5OAyi5kqQBZcziuoclfspMhzU/MCvBwMW0QGZH
Z2zLoogWRm9NKmm0VrcMpRR/DkkXq2j+NTxnIgPCvuFxlRP5hGiwgDQuEN+csKLb
YWEwdYBSW5nYWmD3Ksyj8vljoXQOrnnfm/HO0gcMcMj7Xo98NHHqqz7byBzAVBRH
XN+tyDlU8VcRIYPrtV8Sj9Qwr4ZwmdKnnurDgqMwMh3ae2PUSwxPNOGliwZjexuV
4UZcREMibPDvbmYm2riXYbqatlSgnI459kJY5cv+cRLW+7XaC53pX78GY5zsRQmt
7fZPaxz0xHi68InBxpBVO5Q98VrYUFkXixkMYE19kGYv6J+zedaQtRmvLR5kMvvx
qzypVWDf82aoEuqoMq8rG5Nxs8FSA7T8DHgURgtME1V1YIORTFdDP2B4RSJ4k/pD
rosOIl8Nwi4=
=DCcu
-----END PGP SIGNATURE-----

Closed
?