This fixes <https://issues.guix.gnu.org/65474>.
* guix/profiles.scm (texlive-font-maps): Also check for TeX Live dependencies
in non "texlive-" prefixed packages.
For example, PYTHON-NBCONVERT propagates TeX Live inputs. Those need to be
found out when building ".map"" files.
Co-authored-by: Andreas Enge <andreas@enge.fr>
* guix/profiles.scm (texlive-font-maps): Make sure auto-generated file exists
before deleting it, which is not guaranteed when creating the initial texmf
tree union.
This is a followup to e43cbeafd1.
* gnu/packages/tex.scm (texlive-scripts): Provide "updmap.cfg", along with
other similar files.
(texlive-default-updmap.cfg): Remove variable.
(texlive-updmap.cfg)[source]: Use TEXLIVE-SCRIPTS source.
[arguments]: Use G-expressions. Adapt #:INSTALL-PLAN according to source change.
* guix/profiles.scm (texlive-font-maps): Use "updmap.cfg" provided by
TEXLIVE-SCRIPTS instead of now defunct TEXLIVE-DEFAULT-UPDMAP.CFG.
* gnu/packages/tex.scm (texlive-libkpathsea): New variable.
(texlive-bin): Inherit from above.
[arguments]<#:configure-flags>: Use "--disable-kpathsea",
"--with-system-kpathsea", "--with-kpathsea-includes" and
"--with-kpathsea-lib".
<#:phases>: Remove phases now handled by the package above.
[native-inputs]: Add GROFF-MINIMAL.
[propagated-inputs]: Add TEXLIVE-LIBKPATHSEA.
(texlive-bin-full): New variable.
(texlive-texmf)[build-system]: Use COPY-BUILD-SYSTEM.
[arguments]: Set #:INSTALL-PLAN accordingly. Replace TEXLIVE-BIN with
TEXLIVE-BIN-FULL.
* guix/profiles.scm (texlive-font-maps): Fetch executables from
TEXLIVE-LIBKPATHSEA instead of TEXLIVE-BIN.
* gnu/packages/tex.scm (texlive-scripts): Include only core scripts along with
their man pages and their dependencies. Also patch them for use in Guix.
(texlive-bin): Simplify package.
[inputs]: Remove "texlive-extra-src" and "texlive-scripts" inputs. Remove
labels from other inputs.
[propagated-inputs]: Add TEXLIVE-SCRIPTS.
[arguments]: Use G-expressions.
<#:configure-flags>: Add "--disable-linked-scripts".
<#:phases>: Remove phases relative to scripts.
* guix/profiles.scm (texlive-font-maps): Fetch executables from both
TEXLIVE-SCRIPTS and TEXLIVE-BIN.
* guix/import/texlive.scm (tlpdb-file): Grab file from TEXLIVE-SCRIPTS instead
of TEXLIVE-BIN.
* gnu/packages/tex.scm (texlive-base): Deprecate variable.
(texlive-updmap.cfg): Use default packages from now deprecated TEXLIVE-BASE.
Also remove already implemented TODO.
* doc/build.scm (pdf-manual):
* gnu/packages/statistics.scm: Replace TEXLIVE-BASE with call to
TEXLIVE-UPDMAP.CFG.
* guix/profiles.scm (texlive-font-maps): Trigger TeX Live hook whenever
a texlive package is included in the manifest.
Fixes <https://issues.guix.gnu.org/63043>.
* guix/profiles.scm (texlive-font-maps): Define 'texlive-inputs'.
[build]: Use it.
Return #f when TEXLIVE-INPUTS is empty.
Relates to <https://issues.guix.gnu.org/58821>.
Revert 4fef1e850e, which silenced useful
information such as the following warning:
install-info: warning: no info dir entry in
`/gnu/store/...-rottlog-0.72.2/share/info/rottlog.info.gz'
Rationale: profile hooks output is now hidden by default, and can be made
visible via the --verbosity option.
This makes the profile readable by older Guix instances. This is a
followup to c9fbd40785.
Fixes <https://issues.guix.gnu.org/57306>.
Reported by Arun Isaac <arunisaac@systemreboot.net>.
* guix/profiles.scm (%manifest-format-version): Export.
* guix/scripts/package.scm (build-and-use-profile): Add #:format-version
and pass it to 'profile-derivation'.
* guix/scripts/pull.scm (build-and-install): Pass #:format-version 3.
* guix/profiles.scm (%manifest-format-version): New variable.
(manifest->gexp): Add optional 'format-version' parameter.
[optional, entry->gexp]: Honor it.
(profile-derivation): Add #:format-version parameter and honor it.
(<profile>)[format-version]: New field.
(profile-compiler): Honor it.
* guix/build/profiles.scm (manifest-sexp->inputs+search-paths): Support
both versions 3 and 4. Remove unused 'properties' variable.
* tests/profiles.scm ("profile-derivation format version 3"): New test.
Version 2 was introduced in commit
dedb17ad01 (May 2015), which made it into
Guix 0.9.0.
* guix/profiles.scm (find-package): Remove.
(sexp->manifest)[infer-search-paths]: Remove.
Remove clauses for versions 0 and 1.
Fixes <https://issues.guix.gnu.org/55499>.
Reported by Ricardo Wurmus <rekado@elephly.net>.
With this change, the manifest file created for:
guix install r r-seurat r-cistopic r-monocle3 r-cicero-monocle3 r-assertthat
goes from 5.7M to 176K. Likewise, on this profile, wall-clock time of:
GUIX_PROFILING=gc guix package -I
goes from 0.7s to 0.1s, with heap usage going from 55M to 9M.
* guix/profiles.scm (manifest->gexp)[optional]: New procedure.
[entry->gexp]: Turn into a monadic procedure. Return a 'repeated' sexp
if ENTRY was already visited before.
Adjust caller accordingly. Bump manifest version.
(sexp->manifest)[sexp->manifest-entry]: Turn into a monadic procedure.
Add case for 'repeated' nodes. Add each entry to the current state
vhash.
Add clause for version 4 manifests.
[sexp->manifest-entry/v3]: New procedure, with former
'sexp->manifest-entry' code.
* tests/profiles.scm ("deduplication of repeated entries"): New test.
* guix/build/profiles.scm (manifest-sexp->inputs+search-paths)[let-fields]:
New macro.
Use it. Expect version 4. Add clause for 'repeated' nodes.
Partly fixes <https://issues.guix.gnu.org/55499>.
Reported by Ricardo Wurmus <rekado@elephly.net>.
For a profile built with:
guix install r-seurat r-cistopic r-monocle3 r-cicero-monocle3
this reduces the size of the 'manifest' file from 6.4M to 5.6M (12%).
* guix/profiles.scm (manifest->gexp)[entry->gexp]: When PROPERTIES is
empty, do not emit a 'properties' field.
Previously user-facing commands would happily start building packages
even if they do not support that system. With this change, all the
user-facing commands reject unsupported packages without going further.
* guix/profiles.scm (profile-derivation): Add #:allow-unsupported-packages?.
Define 'check-supported-packages' and honor #:allow-unsupported-packages?.
* tests/guix-pack.sh, tests/guix-package.sh, tests/guix-shell.sh: Ensure
that unsupported packages are rejected.
* tests/guix-system.sh: Pass "--system=armhf-linux" when attempting to
build gnu/system/examples/asus-c201.tmpl.
Long ago we had a profile hook, called “texlive-configuration”, which would
operate on the texlive-* packages that have actually been installed in the
profile, build a union directory, and then install a texmf.cnf file that
declared the prefix of the TeX Live tree to be the union directory. It then
generated font maps based on the fonts that had actually been installed.
This approach had multiple disadvantages, the worst of which was that you
could only really have one TeX Live tree. Commit
04a0b1e09a addressed this, where texmf.cnf was
modified *once* and for all in texlive-bin to reference the GUIX_TEXMF
variable to determine the root of the tree. This made much of
“texlive-configuration” obsolete, because we didn’t need to have any union
directories at all, because we had no need for a customized per-profile
variant of texmf.cnf.
Unfortunately, with the loss of the profile hook we would no longer build font
maps. This patch resurrects the profile hook: we’re again generating font
maps (such as pdftex.map) based on the contents of the profile.
* gnu/packages/tex.scm (texlive-default-updmap.cfg): New variable.
* guix/profiles.scm (texlive-configuration): Rename this...
(texlive-font-maps): ...to this; update to run updmap-sys on the contents of
the profile to generate only font maps.
(%default-profile-hooks): Add texlive-font-maps.
* guix/status.scm (hook-message): Rename unused texlive-configuration to
texlive-font-maps.
* guix/profiles.scm (generation-number): Add optional 'base-profile'
parameter and use it.
* guix/scripts/system.scm (process-command): Add "/run/current-system"
as first argument to 'generation-number'.
* doc/guix.texi (Invoking guix system): Clarify that 'guix system
describe' shows the running system.
* guix/profiles.scm (gdk-pixbuf-loaders-cache-file): Handle both a string or a
package object for GDK-PIXBUF, as these are the two types that can be returned
by MANIFEST-LOOKUP-PACKAGE.
Suggested-by: Ludovic Courtès <ludo@gnu.org>
'guix install' would otherwise fail with a wrong type argument whet attempting
to call the hook.
* guix/profiles.scm (gdk-pixbuf-loaders-cache-file) <file-append>: Replace
with...
<string-append>: ... this, as gdk-pixbuf has already been expanded to a string
at this point.
This paves the way toward properly fixing https://issues.guix.gnu.org/50957.
* guix/profiles.scm (gdk-pixbuf-loaders-cache-file): Add procedure...
(%default-profile-hooks): ... and register it as a profile hook.
* guix/status.scm (hook-message): Register it here too.
This allows us to skip the expensive man-db profile hook in most cases.
Suggested by Liliana Marie Prikler <liliana.prikler@gmail.com>.
* guix/profiles.scm (manual-database/optional): New procedure.
(%default-profile-hooks): Use it instead of 'manual-database'.
* doc/guix.texi (Documentation): Add footnote about 'man -k' database
creation.
It has been reported in IRC, that directories may show up multiple times in
subdirs.el, probably a result of propagation. This can for instance be seen
by ‘guix environment --ad-hoc emacs emacs-guix’, which will generate multiple
references to dash. With this patch only one reference per package is
generated.
* guix/profiles.scm (emacs-subdirs): wrap subdirs added to
‘normal-top-level-add-to-load-path’ in ‘delete-duplictes’.
Note: this merge actually changes the 'curl' and 'python-attrs' derivations,
as part of solving caf4a7a277 and
12964df69a respectively.
4604d43c0e (gnu: gnutls@3.6.16: Fix cross-compilation.) was ignored because it
cannot currently be tested.
Conflicts:
gnu/local.mk
gnu/packages/aidc.scm
gnu/packages/boost.scm
gnu/packages/curl.scm
gnu/packages/nettle.scm
gnu/packages/networking.scm
gnu/packages/python-xyz.scm
gnu/packages/tls.scm
When running:
guix environment --ad-hoc gnome --no-grafts --search-paths
this reduces wall-clock time by ~5%. The number of object cache lookups
goes down from 96K to 89K. (Note that 'gnome' is an interesting example
because it has many propagated inputs, which themselves have propagated
inputs too, which would lead to a long input list and a long manifest in
the 'profile-derivation' gexp.)
* guix/profiles.scm (profile-derivation)[inputs, search-paths]: Remove.
[extra-inputs]: New variable.
[builder]: Adjust call to 'build-profile'.
* guix/build/profiles.scm (manifest-sexp->inputs+search-paths): New
procedure.
(build-profile): Remove 'inputs' parameter; make 'manifest' the 2nd
positional parameter and add #:extra-inputs. Call
'manifest-sexp->inputs+search-paths' to obtain 'inputs' and
'search-paths'.
When running:
GUIX_PROFILING="gc object-cache" ./pre-inst-env \
guix install gnome -p /tmp/sdsdfsd --no-grafts -n
this reduces the number of object cache lookup from 115K to 96K, with a
slight CPU and memory usage reduction as well.
* guix/profiles.scm (check-for-collisions)[candidates]: Exclude entries
if their 'item' fields are eq?.
The profile hook would fail when preparing an environment for a package using
texlive-union, because the union already had a updmap.cfg file.
Reported-by: Lars-Dominik Braun <ldb@leibniz-psychology.org>.
* guix/profiles.scm (texlive-configuration): Delete updmap.cfg if it exists.
* guix/profiles.scm (emacs-subdirs): New variable.
(%default-profile-hooks): Add it here.
* guix/status.scm (hook-message): Add a message for emacs-subdirs.
Previously, transformations applied from a manifest (rather than via
"guix install") would be lost. This change fixes that and simplifies
things.
Reported by zimoun at
<https://lists.gnu.org/archive/html/guix-devel/2021-02/msg00153.html>.
* guix/profiles.scm (default-properties): New procedure.
(package->manifest-entry): Use it for #:properties.
* guix/scripts/pack.scm (guix-pack)[with-transformations]: Remove.
Remove caller.
* guix/scripts/package.scm (transaction-upgrade-entry): Remove calls to
'manifest-entry-with-transformations'.
* tests/guix-package.sh: Add test.
* tests/transformations.scm ("options->transformation + package->manifest-entry"):
New test.