--- Begin Message ---
Subject: |
[PATCH] build-system/gnu: Fix compress-documentation phase |
Date: |
Thu, 04 May 2017 00:53:24 -0700 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) |
Hello Guix!
This patch fixes a small defect in compress-documentation phase of our
gnu-build-system. The phase could create dangling manual
page symlinks in the case those were recursive.
One package which exhibited the issue is Gimp; you might have noticed
the `find-files' error message when the manual page database gets
created on a profile generation as a consequence of that.
Here's the Gimp example in some more details:
* The manual pages under share/man/man1 before the documentation is
compressed:
gimp.1 -> gimp-2.8.1
gimp-2.8.1
gimp-console.1 -> gimp-console-2.8.1
gimp-console-2.8.1 -> gimp-2.8.1
gimptool-2.0.1
* After the documentation is compressed:
gimp.1 -> gimp-2.8.1.gz
gimp-2.8.1.gz
gimp-console.1 -> gimp-console-2.8.1.gz
gimp-console-2.8.1 -> gimp-2.8.1.gz
gimptool-2.0.1.gz
We can see that the gimp-console.1 link now points to an unexisting
file. To correct the problem, a `points-to-symbolic-link?' predicate is
added and its negation is used to filter out the links which shouldn't
be retargetted.
I didn't test this by rebuilding the world; rather, I exercised the
`compress-documentation' function at the REPL, feeding it a copied gimp
derivation output as it appeared before the problematic
compress-documentation phase.
It should be applied to core-updates since it triggers a rebuild of all
the packages using the GNU build system.
Maxim
0001-build-system-gnu-Fix-compress-documentation-phase.patch
Description: Text Data
signature.asc
Description: PGP signature
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#26771: [PATCH] build-system/gnu: Fix compress-documentation phase |
Date: |
Tue, 30 May 2017 21:59:10 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) |
Hi Maxim,
Maxim Cournoyer <address@hidden> skribis:
> This patch fixes a small defect in compress-documentation phase of our
> gnu-build-system. The phase could create dangling manual
> page symlinks in the case those were recursive.
>
> One package which exhibited the issue is Gimp; you might have noticed
> the `find-files' error message when the manual page database gets
> created on a profile generation as a consequence of that.
>
> Here's the Gimp example in some more details:
>
> * The manual pages under share/man/man1 before the documentation is
> compressed:
>
> gimp.1 -> gimp-2.8.1
> gimp-2.8.1
> gimp-console.1 -> gimp-console-2.8.1
> gimp-console-2.8.1 -> gimp-2.8.1
> gimptool-2.0.1
>
> * After the documentation is compressed:
>
> gimp.1 -> gimp-2.8.1.gz
> gimp-2.8.1.gz
> gimp-console.1 -> gimp-console-2.8.1.gz
> gimp-console-2.8.1 -> gimp-2.8.1.gz
> gimptool-2.0.1.gz
>
> We can see that the gimp-console.1 link now points to an unexisting
> file. To correct the problem, a `points-to-symbolic-link?' predicate is
> added and its negation is used to filter out the links which shouldn't
> be retargetted.
>
> I didn't test this by rebuilding the world; rather, I exercised the
> `compress-documentation' function at the REPL, feeding it a copied gimp
> derivation output as it appeared before the problematic
> compress-documentation phase.
Thanks for the detailed analysis and patch!
> From 81b5ade74a7debbde30a98ac5dc884844f6dfeb7 Mon Sep 17 00:00:00 2001
> From: Maxim Cournoyer <address@hidden>
> Date: Tue, 25 Apr 2017 01:46:05 +0900
> Subject: [PATCH] build-system/gnu: Fix compress-documentation phase
>
> The compress-documentation phase was breaking recursive symbolic links used
> for manuals, which was made visible by the `find-files' call in the recently
> added `manual-database' profile hook.
>
> * guix/build/gnu-build-system.scm (retarget-symblink)[link]: Rename to
> `symbolic-link' (`link' is a Guile function).
> (points-to-symbolic-link?): Add predicate.
> (maybe-compress-directory): Rename `symlinks' to `symbolic-links', use
> `points-to-symbolic-link?' to filter out symbolic links which shouldn't be
> retargetted and re-order the calls to `retarget-symlink' and
> `documentation-compressor'.
I pushed it as facac292808d11d5e6ea528cc7dbe93595f62c9b, where I removed
the “symbolic-link” renames, which I thought were unnecessary and
unrelated.
Apologies for the delay!
Ludo’.
--- End Message ---