summaryrefslogtreecommitdiff
path: root/guix/profiles.scm
AgeCommit message (Collapse)Author
2023-08-24guix: profiles: Detect TeX Live packages propagated from non-TeX Live inputs.Nicolas Goaziou
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>
2023-08-09guix: profiles: Do not raise error on incomplete TeX Live setups.Nicolas Goaziou
* guix/profiles.scm (texlive-font-maps): Check if TEXLIVE-SCRIPTS is present in the manifest before trying to generate font maps.
2023-07-30guix: profiles: Fix auto-generated file deletion.Nicolas Goaziou
* 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 e43cbeafd1b632f39b08b3644af5230d5350a656.
2023-07-29guix: profiles: Delete generated files.Nicolas Goaziou
* guix/profiles.scm (texlive-font-maps): Delete generated files. Fixes <https://issues.guix.gnu.org/64906>.
2023-07-18gnu: Remove texlive-default-updmap.cfg.Nicolas Goaziou
* 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.
2023-07-18gnu: Externalize libkpathsea in texlive and texlive-bin.Nicolas Goaziou
* 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.
2023-07-18gnu: texlive-bin: Do not install all linked scripts.Nicolas Goaziou
* 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.
2023-07-18gnu: Simplify texlive-default-updmap.cfg.Nicolas Goaziou
* gnu/packages/tex.scm (texlive-default-updmap.cfg): Use TEXLIVE-ORIGIN. (texlive-updmap.cfg): * guix/profiles.scm (texlive-font-maps): Update accordingly.
2023-07-18gnu: Deprecate texlive-base in favor of texlive-scheme-basic.Nicolas Goaziou
* 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.
2023-05-04profiles: 'texlive-font-maps' gracefully handles lack of texlive inputs.Ludovic Courtès
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.
2023-01-30Merge remote-tracking branch 'origin/master' into core-updatesEfraim Flashner
Conflicts: doc/guix.texi gnu/local.mk gnu/packages/admin.scm gnu/packages/base.scm gnu/packages/chromium.scm gnu/packages/compression.scm gnu/packages/databases.scm gnu/packages/diffoscope.scm gnu/packages/freedesktop.scm gnu/packages/gnome.scm gnu/packages/gnupg.scm gnu/packages/guile.scm gnu/packages/inkscape.scm gnu/packages/llvm.scm gnu/packages/openldap.scm gnu/packages/pciutils.scm gnu/packages/ruby.scm gnu/packages/samba.scm gnu/packages/sqlite.scm gnu/packages/statistics.scm gnu/packages/syndication.scm gnu/packages/tex.scm gnu/packages/tls.scm gnu/packages/version-control.scm gnu/packages/xml.scm guix/build-system/copy.scm guix/scripts/home.scm
2022-10-27profiles: info-dir-file: Remove install-info '--silent' option.Maxim Cournoyer
Relates to <https://issues.guix.gnu.org/58821>. Revert 4fef1e850e4872f2bc7c1f0a10cbac176b50895f, 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.
2022-09-01Merge branch 'staging' into core-updatesMarius Bakke
2022-08-31pull: Create a version 3 manifest.Ludovic Courtès
This makes the profile readable by older Guix instances. This is a followup to c9fbd40785a99e13a59d8e530830ce85220a9871. 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.
2022-07-22Merge branch 'staging' into core-updatesMarius Bakke
2022-07-08profiles: Support the creation of profiles with version 3 manifests.Ludovic Courtès
* 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.
2022-07-08profiles: Remove support for reading versions 0 and 1.Ludovic Courtès
Version 2 was introduced in commit dedb17ad010ee9ef67f3f4f3997dd17f226c8090 (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.
2022-07-01profiles: Do not repeat entries in 'manifest' file.Ludovic Courtès
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.
2022-06-25utils: Move switch-symlinks to (guix build utils).Arun Isaac
* guix/utils.scm (switch-symlinks): Move to ... * guix/build/utils.scm (switch-symlinks): ... here. * guix/profiles.scm, guix/scripts/home.scm, guix/scripts/package.scm: Import switch-symlinks from (guix build utils). * guix/scripts/system/reconfigure.scm (switch-system-program): Import (guix build utils) in G-expression.
2022-05-24profiles: 'manifest->gexp' emits 'properties' field only when needed.Ludovic Courtès
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.
2022-03-22profiles: manual-database: Remove GDBM workaround.Maxim Cournoyer
* guix/profiles.scm (manual-database): No longer set the MALLOC_PERTURB_ environment variable.
2022-02-18profiles: 'profile-derivation' rejects unsupported packages.Ludovic Courtès
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.
2022-02-14profiles: texlive-font-maps: Create ls-R file.Ricardo Wurmus
* guix/profiles.scm (texlive-font-maps): Run mktexlsr on resulting tree to provide ls-R file.
2022-02-07guix: Restore profile hook for TeX Live font maps.Ricardo Wurmus
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 04a0b1e09abce99857e7930336421ca6d15ae630 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.
2022-02-02guix system: 'describe' shows the running system, not the current one.Ludovic Courtès
* 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.
2021-11-25profiles: Also handle package objects in GDK-PIXBUF-LOADERS-CACHE-FILE.Maxim Cournoyer
* 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>
2021-11-25profiles: Fix the gdk-pixbuf-loaders-cache-file hook.Maxim Cournoyer
'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.
2021-11-11profiles: Add a gdk-pixbuf-loaders-cache-file hook.Maxim Cournoyer
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.
2021-11-08Merge remote-tracking branch 'origin/master' into core-updates-frozenEfraim Flashner
2021-11-06profiles: Build the man database only if 'man-db' is in the profile.Ludovic Courtès
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.
2021-10-31Merge remote-tracking branch 'origin/master' into core-updates-frozenEfraim Flashner
2021-10-25profiles: Add 'package->development-manifest'.Ludovic Courtès
* guix/profiles.scm (package->development-manifest): New procedure. * guix/scripts/environment.scm (input->manifest-entry) (package-environment-inputs): Remove. * guix/scripts/environment.scm (options/resolve-packages): Use 'package->development-manifest' instead of 'package-environment-inputs'. * tests/profiles.scm ("package->development-manifest"): New test.
2021-07-18Merge branch 'master' into core-updatesLudovic Courtès
2021-06-28guix: Delete duplicates from emacs-load-path.Leo Prikler
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’.
2021-06-19Merge branch 'master' into core-updatesMarius Bakke
Note: this merge actually changes the 'curl' and 'python-attrs' derivations, as part of solving caf4a7a2770ef4d05a6e18f40d602e51da749ddc and 12964df69a99de6190422c752fef65ef813f3b6b 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
2021-06-18profiles: Add "XAUTHORITY" to the precious variables.Ludovic Courtès
Suggested by Maxime Devos <maximedevos@telenet.be>. * guix/profiles.scm (%precious-variables): Add "XAUTHORITY".
2021-06-18profiles: Add 'load-profile'.Ludovic Courtès
* guix/profiles.scm (%precious-variables): New variable. (purify-environment, load-profile): New procedures. * guix/scripts/environment.scm (%precious-variables) (purify-environment, create-environment): Remove. (launch-environment): Call 'load-profile' instead of 'create-environment'. * tests/profiles.scm ("load-profile"): New test.
2021-06-12profiles: Move some of the work to the build side.Ludovic Courtès
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'.
2021-06-06Merge branch 'master' into core-updatesMarius Bakke
Conflicts: gnu/local.mk gnu/packages/algebra.scm gnu/packages/bioinformatics.scm gnu/packages/curl.scm gnu/packages/docbook.scm gnu/packages/emacs-xyz.scm gnu/packages/maths.scm gnu/packages/plotutils.scm gnu/packages/python-web.scm gnu/packages/python-xyz.scm gnu/packages/radio.scm gnu/packages/readline.scm gnu/packages/tls.scm gnu/packages/xml.scm gnu/packages/xorg.scm
2021-06-05profiles: 'check-for-collisions' filters out more non-collisions upfront.Ludovic Courtès
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?.
2021-05-20guix: Build texlive-configuration only when texlive-base is present.Ricardo Wurmus
Fixes <https://bugs.gnu.org/48519>. * guix/profiles.scm (texlive-configuration): Build only if texlive-base is present in the profile's manifest.
2021-05-09Merge branch 'master' into core-updatesMarius Bakke
Conflicts: gnu/local.mk gnu/packages/bioinformatics.scm gnu/packages/django.scm gnu/packages/gtk.scm gnu/packages/llvm.scm gnu/packages/python-web.scm gnu/packages/python.scm gnu/packages/tex.scm guix/build-system/asdf.scm guix/build/emacs-build-system.scm guix/profiles.scm
2021-05-05profiles: texlive-configuration: Handle updmap.cfg conflict.Ricardo Wurmus
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.
2021-05-03profiles: texlive-configuration: Refresh font maps.Ricardo Wurmus
* guix/profiles.scm (texlive-configuration): Run updmap to generate font maps necessary for pdflatex and other tools.
2021-05-01profiles: Add hook for Emacs subdirs.Leo Prikler
* guix/profiles.scm (emacs-subdirs): New variable. (%default-profile-hooks): Add it here. * guix/status.scm (hook-message): Add a message for emacs-subdirs.
2021-03-06Merge branch 'master' into core-updatesChristopher Baines
2021-03-05profiles: 'package->manifest-entry' preserves transformations by default.Ludovic Courtès
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.
2021-02-03Merge branch 'master' into core-updatesChristopher Baines
2021-02-01profiles: Add 'manifest->code'.Ludovic Courtès
* guix/profiles.scm (manifest->code): New procedure. * tests/profiles.scm ("manifest->code, simple") ("manifest->code, simple, versions") ("manifest->code, transformations"): New tests.
2021-01-29gnu: texlive-bin: Enable the use of multiple TeX Live trees.Maxim Cournoyer
Attempting to compose multiple TeX Live trees (such as can happen when using a texlive-union generated package) proved problematic; only the texmf.cnf configuration file from the union would be honored, causing other TeX Live components to be ignored. This change does away with TeX Live unions, instead relying on the default texmf.cnf configuration file provided by the texlive-bin package to honor individual TeX Live trees referred to via the newly introduced GUIX_TEXMF variable, and replacing the texlive-union procedure by texlive-updmap.cfg, to explicit that generating the fonts map configuration is now its sole purpose. * gnu/packages/tex.scm (texlive-bin)[phases]{customize-texmf}: New phase. {postint}: Move the patching of the texmf.cnf file to the new above phase. Patch the updmap.pl script to find its Perl modules. [native-search-paths]: Rename the TEXMF variable to GUIX_TEXMF. Remove the TEXMFCNF variable. * guix/profiles.scm (texlive-configuration): Remove procedure. (%default-profile-hooks)[texlive-configuration]: Unregister hook. (texlive-union): Alias to what has moved to... (texlivke-updmap.cfg): ... here. Update doc. Do not provide a different texmf.cnf configuration. [inherit]: Do not inherit from texlive-base. [build-system]: Switch to the copy-build-system. [arguments]{install-plan}: New argument. [phases]{regenerate-updmap.cfg}: New phase, which keeps only the fonts map generating code from the previous builder code. [inputs]: Remove bash, and move to ... [propagated-inputs]: ... here. [native-inputs]: Remove field, and move the source of the base updmap.cfg file to... [source]: ... here. [synopsis]: Update. [description]: Likewise. [license]: Delete duplicates.