summaryrefslogtreecommitdiff
path: root/guix/profiles.scm
Commit message (Collapse)AuthorAge
* utils: Move '&fix-hint' to (guix diagnostics).Ludovic Courtès2020-07-25
| | | | | | | | | | | * guix/utils.scm (&fix-hint): Move to... * guix/diagnostics.scm (&fix-hint): ... here. * gnu.scm: Adjust imports accordingly. * gnu/system/mapped-devices.scm: Likewise. * guix/channels.scm: Likewise. * guix/profiles.scm: Likewise. * guix/scripts/system/reconfigure.scm: Likewise. * guix/ssh.scm: Likewise.
* profiles: 'linux-module-database' hooks gracefully handles module-less kernels.Ludovic Courtès2020-06-18
| | | | | | | | | | Fixes <https://bugs.gnu.org/41924>. * guix/profiles.scm (linux-module-database)[build]: Arrange so 'directory-entries' always returns a list. Add 'match' clause for the empty list. Co-authored-by: Ivan Kozlov <kanichos@yandex.ru>
* profiles: Reindent 'linux-module-database'.Ludovic Courtès2020-06-18
| | | | * guix/profiles.scm (linux-module-database): Reindent.
* lint: Add 'check-for-collisions' checker.Ludovic Courtès2020-06-14
| | | | | | | | | | | | Suggested by Edouard Klein <edk@beaver-labs.com>. * guix/profiles.scm (check-for-collisions): Export. * guix/lint.scm (check-profile-collisions): New procedure. (%local-checkers): Add 'profile-collisions' checker. * tests/lint.scm ("profile-collisions: no warnings") ("profile-collisions: propagated inputs collide") ("profile-collisions: propagated inputs collide, store items"): New tests. * doc/guix.texi (Invoking guix lint): Document it.
* profiles: Fix pathological performance of 'manifest-transitive-entries'.Ludovic Courtès2020-06-14
| | | | | | | | | | | | | | For packages with lots of propagated inputs, 'manifest-transitive-entries', as called from 'check-for-collisions', would exhibit pathological behavior. For example, "guix install cl-ana" wouldn't complete in 1mn; now, it's down to 20s. The issue was that manifest entries would never be 'equal?' due to the delayed field in <manifest-entry>. * guix/profiles.scm (manifest-transitive-entries): Use a vhash instead of a set. Use 'manifest-entry=?' instead of 'equal?' when checking for equality.
* Merge branch 'master' into core-updatesMarius Bakke2020-05-02
|\
| * profiles: Mark manual database as non-substitutable.Ludovic Courtès2020-05-01
| | | | | | | | | | | | | | Fixes <https://bugs.gnu.org/40381>. Reported by pkill9 <pkill9@runbox.com>. * guix/profiles.scm (manual-database): Pass #:substitutable? #f.
* | Merge branch 'master' into core-updatesMarius Bakke2020-04-30
|\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: gnu/local.mk gnu/packages/backup.scm gnu/packages/emacs-xyz.scm gnu/packages/guile.scm gnu/packages/lisp.scm gnu/packages/openldap.scm gnu/packages/package-management.scm gnu/packages/web.scm gnu/packages/xorg.scm
| * profiles: Add lowerable <profile> record type.Ludovic Courtès2020-04-26
| | | | | | | | | | * guix/profiles.scm (<profile>): New record type. * tests/profiles.scm ("<profile>"): New test.
* | Merge branch 'master' into core-updatesMarius Bakke2020-04-23
|\| | | | | | | | | | | | | | | | | | | | | Conflicts: etc/news.scm gnu/local.mk gnu/packages/bootloaders.scm gnu/packages/linphone.scm gnu/packages/linux.scm gnu/packages/tls.scm gnu/system.scm
| * profiles: Add #:name parameter to 'profile-derivation'.Ludovic Courtès2020-04-22
| | | | | | | | | | * guix/profiles.scm (profile-derivation): Add #:name and pass it to 'gexp->derivation'.
* | Merge branch 'master' into core-updatesMarius Bakke2020-04-08
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: etc/news.scm gnu/local.mk gnu/packages/check.scm gnu/packages/cross-base.scm gnu/packages/gimp.scm gnu/packages/java.scm gnu/packages/mail.scm gnu/packages/sdl.scm gnu/packages/texinfo.scm gnu/packages/tls.scm gnu/packages/version-control.scm
| * profiles: Compute manual database entries in parallel.Arne Babenhauserheide2020-03-31
| | | | | | | | | | | | | | | | | | | | | | | | | | This provides a 36% speedup on an SSD and 4 cores for the 1.5K man pages in the manual database derivation of: guix environment --ad-hoc jupyter python-ipython python-ipykernel * guix/profiles.scm (manual-database)[build]: Add 'print-string', 'print', and 'compute-entry'. Change 'compute-entries' to call 'compute-entry' in 'n-par-map'. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
| * guix package: Do not misdiagnose upgrades when there are propagated inputs.Ludovic Courtès2020-03-31
| | | | | | | | | | | | | | | | | | | | | | Fixes <https://bugs.gnu.org/35872>. Reported by Andy Tai <atai@atai.org>. * guix/profiles.scm (list=?, manifest-entry=?): New procedures. * guix/scripts/package.scm (transaction-upgrade-entry): In the '=' case, use 'manifest-entry=?' to determine whether it's an upgrade. * tests/packages.scm ("transaction-upgrade-entry, zero upgrades, propagated inputs"): New test.
| * profiles: 'lower-manifest-entry' recurses on dependencies.Ludovic Courtès2020-03-31
| | | | | | | | | | * guix/profiles.scm (lower-manifest-entry)[recurse]: New procedure. Call it on dependencies and set the 'dependencies' field accordingly.
| * guix package: 'transaction-upgrade-entry' uses 'lower-manifest-entry'.Ludovic Courtès2020-03-31
| | | | | | | | | | | | | | | | * guix/profiles.scm (lower-manifest-entry): Export. * guix/scripts/package.scm (transaction-upgrade-entry)[lower-manifest-entry*] [upgrade]: New procedures. Use 'lower-manifest-entry*' instead of 'package-derivation' to compute the output file name of PKG.
* | Merge branch 'master' into core-updatesMarius Bakke2020-03-30
|\| | | | | | | | | | | | | | | | | | | | | Conflicts: gnu/packages/admin.scm gnu/packages/commencement.scm gnu/packages/guile.scm gnu/packages/linux.scm gnu/packages/package-management.scm gnu/packages/pulseaudio.scm gnu/packages/web.scm
| * profiles: Use 'mapm/accumulate-builds'.Ludovic Courtès2020-03-29
| | | | | | | | | | | | | | * guix/profiles.scm (check-for-collisions): Use 'mapm/accumulate-builds' to lower manifest entries. Call 'foldm' over the already-lowered entries. (profile-derivation): Use 'mapm/accumulate-builds' instead of 'mapm' when calling HOOKS.
* | Merge branch 'master' into core-updatesMarius Bakke2020-03-27
|\| | | | | | | | | | | | | | | | | | | | | | | Conflicts: gnu/packages/icu4c.scm gnu/packages/man.scm gnu/packages/python-xyz.scm guix/scripts/environment.scm guix/scripts/pack.scm guix/scripts/package.scm guix/scripts/pull.scm guix/store.scm
| * profiles: 'profile-derivation' sets a 'type' property.Ludovic Courtès2020-03-26
| | | | | | | | | | * guix/profiles.scm (profile-derivation): Pass #:properties to 'gexp->derivation'.
| * system: Add kernel-loadable-modules to operating-system.Danny Milosavljevic2020-03-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * gnu/system.scm (<operating-system>): Add kernel-loadable-modules. (operating-system-directory-base-entries): Use it. * doc/guix.texi (operating-system Reference): Document KERNEL-LOADABLE-MODULES. * gnu/build/linux-modules.scm (depmod): New procedure. (make-linux-module-directory): New procedure. Export it. * guix/profiles.scm (linux-module-database): New procedure. Export it. * gnu/tests/linux-modules.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. * gnu/packages/linux.scm (make-linux-libre*)[arguments]<#:phases>[install]: Disable depmod. Remove "build" and "source" symlinks. [native-inputs]: Remove kmod.
* | profiles: 'profile-derivation' uses _IOLBF on Guile 2.0 only.Ludovic Courtès2020-03-17
| | | | | | | | | | * guix/profiles.scm (profile-derivation)[builder]: Use _IOLBF on Guile 2.0 only.
* | Merge remote-tracking branch 'master' into core-updates.Mathieu Othacehe2019-12-31
|\|
| * profiles: Fix profile-derivation cross-compilation.Mathieu Othacehe2019-12-29
| | | | | | | | | | | | * guix/store.scm (current-target-system): New exported monadic procedure. * guix/profiles.scm (profile-derivation): Set target at bind time using the above procedure.
| * profiles: Add 'map-manifest-entries'.Ludovic Courtès2019-12-29
| | | | | | | | | | * guix/scripts/pack.scm (map-manifest-entries): Move to... * guix/profiles.scm (map-manifest-entries): ... here.
* | profiles: Fix profile-derivation cross-compilation.Mathieu Othacehe2019-12-26
| | | | | | | | | | | | * guix/store.scm (current-target-system): New exported monadic procedure. * guix/profiles.scm (profile-derivation): Set target at bind time using the above procedure.
* | guix: Fix typo.Efraim Flashner2019-12-15
| | | | | | | | | | | | This is a follow-up to e8cbebb4769328f6ad49a4b5868f9c935e7e5372. * guix/profiles.scm (gtk-im-modules): Corectly refer to gtk+-2 package.
* | gnu: gtk+-2: Split binaries.Julien Lepiller2019-12-14
|/ | | | | | * gnu/packages/gtk.scm (gtk+-2): Add "bin" output. * guix/profiles.scm (gtk-im-modules): Use "bin" output for generating gtk+-2 immodules cache file.
* profiles: Use 'getpwuid' when $USER and $LOGNAME are undefined.Ludovic Courtès2019-12-10
| | | | | | | Reported by YOANN P <yoann_mac_donald@hotmail.com>. * guix/profiles.scm (%profile-directory): Fall back to 'getpwuid' when "USER" and "LOGNAME" are undefined.
* profiles: Add 'concatenate-manifests'.Ludovic Courtès2019-11-22
| | | | | * guix/profiles.scm (concatenate-manifests): New procedure. * tests/profiles.scm ("concatenate-manifests"): New test.
* daemon: Make 'profiles/per-user' non-world-writable.Ludovic Courtès2019-10-16
| | | | | | | | | | | | | | | | | | | | | | | | | | Fixes <https://bugs.gnu.org/37744>. Reported at <https://www.openwall.com/lists/oss-security/2019/10/09/4>. Based on Nix commit 5a303093dcae1e5ce9212616ef18f2ca51020b0d by Eelco Dolstra <edolstra@gmail.com>. * nix/libstore/local-store.cc (LocalStore::LocalStore): Set 'perUserDir' to #o755 instead of #o1777. (LocalStore::createUser): New function. * nix/libstore/local-store.hh (LocalStore): Add it. * nix/libstore/store-api.hh (StoreAPI): Add it. * nix/nix-daemon/nix-daemon.cc (performOp): In 'wopSetOptions', add condition to handle "user-name" property and honor it. (processConnection): Add 'userId' parameter. Call 'store->createUser' when userId is not -1. * guix/profiles.scm (ensure-profile-directory): Note that this is now handled by the daemon. * guix/store.scm (current-user-name): New procedure. (set-build-options): Add #:user-name parameter and pass it to the daemon. * tests/guix-daemon.sh: Test the creation of 'profiles/per-user' when listening on a TCP socket. * tests/store.scm ("profiles/per-user exists and is not writable") ("profiles/per-user/$USER exists"): New tests.
* profiles: Adjust packages->manifest pattern for inferior packages.Kyle Meyer2019-07-03
| | | | | | | | * guix/profiles.scm (packages->manifest): Add package? predicate to `(package output)' pattern to avoid incorrectly matching `(inferior-package output)', which should be handled by a later clause. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* profiles: Add 'generation-profile'.Ludovic Courtès2019-04-10
| | | | | * guix/profiles.scm (%profile-generation-rx): New variable. (generation-profile): New procedure.
* profiles: Raise an error for unmatched patterns.Ludovic Courtès2019-02-07
| | | | | | | | | | | | | | | Previously, "guix package -r something-not-installed" would silently complete. Now an error is raised. * guix/profiles.scm (&unmatched-pattern-error): New condition type. (manifest-matching-entries): Rewrite to raise an error when one of PATTERNS is not matched. * guix/ui.scm (call-with-error-handling): Handle 'unmatched-pattern-error?'. * tests/guix-package.sh: Add test. * tests/profiles.scm ("manifest-matching-entries"): Don't try to remove unmatched pattern. ("manifest-matching-entries, no match"): New test. ("manifest-transaction-effects"): Remove 'remove' field.
* profiles: 'manual-database' hook reports progress.Ludovic Courtès2019-02-01
| | | | | * guix/profiles.scm (manual-database)[build](compute-entries): Write a progress report.
* guix: Add guard to texlive-configuration profile hook.Christopher Baines2019-01-18
| | | | | | | | | It is possible to generate a profile where this hook will crash, as the texmf.cnf file does not exist to be patched by substitute*. A simple example is the profile just containing texlive-fonts-txfonts. * guix/profiles.scm (texlive-configuration): Check that the texmf.cnf file exists before trying to change it.
* guix: Add profile hook to build TeX live configuration.Ricardo Wurmus2019-01-15
| | | | | | * guix/profiles.scm (texlive-configuration): New procedure. (%default-profile-hooks): Add it. * guix/status.scm (hook-message): Handle "texlive-configuration" hook type.
* Use 'mapm' instead of 'sequence' + 'map'.Ludovic Courtès2018-12-19
| | | | | | | | | | | | | Previously we'd use the (sequence M (map P L)) idiom just because 'mapm' was slower (not specialized for the given monad). This is no longer the case since commit dcb95c1fc936d74dfdf84b7e59eff66cb99c5a63. * guix/gexp.scm (lower-inputs): Use (mapm M P L) instead of (sequence M (map P L)). (lower-references, gexp->sexp, imported-files): Likewise. * guix/profiles.scm (profile-derivation): Likewise. * guix/scripts/environment.scm (inputs->requisites): Likewise. * guix/scripts/system.scm (copy-closure): Likewise.
* ui: Report profile hooks separately.Ricardo Wurmus2018-12-19
| | | | | | | | | | | | * guix/ui.scm (profile-hook-derivation?): New procedure. (show-what-to-build): Distinguish among BUILD derivations that match 'profile-hook-derivation?'. Report them separately. * guix/status.scm (hook-message): New procedure. (print-build-event): Display profile hooks with readable hook name. * guix/profiles.scm (info-dir-file, ghc-package-cache-file, ca-certificate-bundle, glib-schemas, gtk-icon-themes, gtk-im-modules, xdg-desktop-database, xdg-mime-database, fonts-dir-file, manual-database): Augment derivation with "type" and "hook" properties.
* profiles: Fix typo in exports.Ludovic Courtès2018-10-26
| | | | * guix/profiles.scm (&profile-collistion-error): Fix typo in export list.
* profiles: 'user-friendly-profile' now recognizes ~/.config/guix/current.Ludovic Courtès2018-10-12
| | | | | * guix/profiles.scm (%known-shorthand-profiles): New variable. (user-friendly-profile): Use it.
* profiles: Generalize 'canonicalize-profile'.Ludovic Courtès2018-10-11
| | | | | * guix/profiles.scm (canonicalize-profile): Rewrite to work with any profile that lives under %PROFILE-DIRECTORY.
* profiles: Add 'ensure-profile-directory'.Ludovic Courtès2018-10-11
| | | | | | | | * guix/scripts/package.scm (ensure-default-profile): Move /var/guix/profiles/per-user handling to... * guix/profiles.scm (ensure-profile-directory): ... here. New procedure. * po/guix/POTFILES.in: Add 'guix/profiles.scm'.
* profiles: Make Geiser happy.Ludovic Courtès2018-10-09
| | | | | * guix/profiles.scm (manual-database)[config.scm]: Use ungexp/quote trick to placate Geiser, which otherwise thinks it's in (guix config).
* profiles: 'packages->manifest' now accepts inferior packages.Ludovic Courtès2018-09-21
| | | | | | | | | * guix/profiles.scm (packages->manifest)[inferiors-loaded?]: New variable. [inferior->entry]: New procedure. Accept inferior packages when INFERIORS-LOADED? is true. * tests/guix-package.sh: Add test using a manifest with an inferior. * tests/inferior.scm ("packages->manifest"): New test.
* guix package: Record package provenance in manifest entries.Ludovic Courtès2018-09-07
| | | | | | | | | * guix/profiles.scm (package->manifest-entry): Add #:properties and honor it. * guix/scripts/package.scm (package-provenance) (package->manifest-entry*): New procedures. (transaction-upgrade-entry, options->installable): Use 'package->manifest-entry*' instead of 'package->manifest-entry'.
* guix package: Use relative symlinks to generations.Ludovic Courtès2018-07-13
| | | | | | | | | | | | Reported by Roel Janssen <roel@gnu.org> at <https://lists.gnu.org/archive/html/guix-devel/2018-07/msg00036.html>. * guix/profiles.scm (switch-to-generation): Use (basename generation) as the symlink target. * guix/scripts/package.scm (build-and-use-profile): Likewise, use (basename name) as the symlink target. * tests/guix-package.sh: Adjust --roll-back test accordingly. Add explicitly test with '-p foo/prof'.
* profiles: Introduce 'profile-search-paths' and use it.Ludovic Courtès2018-07-11
| | | | | | | | | | | | | * guix/profiles.scm (profile-search-paths): New procedure. * guix/scripts/environment.scm (evaluate-search-paths): Remove. (create-environment): Replace 'paths' with 'manifest'. Use 'profile-search-paths' instead of 'evaluate-search-paths'. (show-search-paths): Likewise. (launch-environment): Replace 'paths' with 'manifest'. Make 'pure?' a keyword parameter. (launch-environment/fork, launch-environment/container): Likewise. (guix-environment): Remove 'paths' variable. Adjust callers of the above procedures accordingly.
* profiles: Factorize 'manifest-search-paths'.Ludovic Courtès2018-07-11
| | | | | | * guix/profiles.scm (manifest-search-paths): New procedure. (profile-derivation)[builder]: Use it. * guix/build/profiles.scm (build-etc/profile): Remove $PATH.
* profiles: 'info-dir-file' hook now produces 'dir.LANG' files.Ludovic Courtès2018-07-04
| | | | | | | | | | | Previously, entries for 'guix.fr.info' would end up in 'dir', above the 'guix.info' entries; consequently, running 'info guix' would actually open 'guix.fr.info', which was confusing for non-French readers. * guix/profiles.scm (info-dir-file)[glibc-utf8-locales]: New variable. [build](info-file-language): New procedure. (install-info): Use it, to create 'dir.LANG' files. Set GUIX_LOCPATH.