summaryrefslogtreecommitdiff
path: root/guix/profiles.scm
AgeCommit message (Expand)Author
2019-04-10profiles: Add 'generation-profile'....* guix/profiles.scm (%profile-generation-rx): New variable. (generation-profile): New procedure. Ludovic Courtès
2019-02-07profiles: Raise an error for unmatched patterns....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. Ludovic Courtès
2019-02-01profiles: 'manual-database' hook reports progress....* guix/profiles.scm (manual-database)[build](compute-entries): Write a progress report. Ludovic Courtès
2019-01-18guix: Add guard to texlive-configuration profile hook....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. Christopher Baines
2019-01-15guix: Add profile hook to build TeX live configuration....* guix/profiles.scm (texlive-configuration): New procedure. (%default-profile-hooks): Add it. * guix/status.scm (hook-message): Handle "texlive-configuration" hook type. Ricardo Wurmus
2018-12-19Use 'mapm' instead of 'sequence' + 'map'....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. Ludovic Courtès
2018-12-19ui: Report profile hooks separately....* 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. Ricardo Wurmus
2018-10-26profiles: Fix typo in exports....* guix/profiles.scm (&profile-collistion-error): Fix typo in export list. Ludovic Courtès
2018-10-12profiles: 'user-friendly-profile' now recognizes ~/.config/guix/current....* guix/profiles.scm (%known-shorthand-profiles): New variable. (user-friendly-profile): Use it. Ludovic Courtès
2018-10-11profiles: Generalize 'canonicalize-profile'....* guix/profiles.scm (canonicalize-profile): Rewrite to work with any profile that lives under %PROFILE-DIRECTORY. Ludovic Courtès
2018-10-11profiles: Add 'ensure-profile-directory'....* 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'. Ludovic Courtès
2018-10-09profiles: Make Geiser happy....* guix/profiles.scm (manual-database)[config.scm]: Use ungexp/quote trick to placate Geiser, which otherwise thinks it's in (guix config). Ludovic Courtès
2018-09-21profiles: 'packages->manifest' now accepts inferior packages....* 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. Ludovic Courtès
2018-09-07guix package: Record package provenance in manifest entries....* 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'. Ludovic Courtès
2018-07-13guix package: Use relative symlinks to generations....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'. Ludovic Courtès
2018-07-11profiles: Introduce 'profile-search-paths' and use it....* 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. Ludovic Courtès
2018-07-11profiles: Factorize 'manifest-search-paths'....* guix/profiles.scm (manifest-search-paths): New procedure. (profile-derivation)[builder]: Use it. * guix/build/profiles.scm (build-etc/profile): Remove $PATH. Ludovic Courtès
2018-07-04profiles: 'info-dir-file' hook now produces 'dir.LANG' files....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. Ludovic Courtès
2018-06-09profiles: Add 'properties' field to manifest entries....* guix/profiles.scm (<manifest-entry>)[properties]: New field. (manifest->gexp)[entry->gexp]: Serialize it. (sexp->manifest)[sexp->manifest-entry]: Deserialize it. Ludovic Courtès
2018-06-09profiles: Add '%current-profile', 'user-friendly-profile', & co....* guix/scripts/package.scm (%user-profile-directory) (%profile-directory, %current-profile, canonicalize-profile) (user-friendly-profile): Move to... * guix/profiles.scm: ... here. Ludovic Courtès
2018-06-01profiles: Use 'with-extensions'....* guix/profiles.scm (manual-database)[build]: Use 'with-extensions'. Remove 'add-to-load-path' call. * guix/man-db.scm: Use (gdbm) the normal way; remove 'module-autoload!' call. Ludovic Courtès
2018-05-21profiles: Add hook to generate "gschemas.compiled"....* guix/profiles.scm (glib-schemas): New procedure. (%default-profile-hooks): Add it. Danny Milosavljevic
2018-05-10profiles: Allow lowerable objects other than packages in <manifest-entry>....* guix/profiles.scm (manifest-lookup-package)[entry-lookup-package]: Add case where 'manifest-entry-item' returns something that's neither a string nor a package. Ludovic Courtès
2018-05-10profiles: Optionally use relative file names for symlink targets....* guix/build/union.scm (symlink-relative): New procedure. * guix/build/profiles.scm: Re-export it. (build-profile): Add #:symlink and pass it to 'union-build'. * guix/profiles.scm (profile-derivation): Add #:relative-symlinks?. Pass #:symlink to 'build-profile'. * tests/profiles.scm ("profile-derivation relative symlinks, one entry") ("profile-derivation relative symlinks, two entries"): New tests. Ludovic Courtès
2018-03-01profiles: 'manifest-add' truly deletes duplicate entries....Fixes <https://bugs.gnu.org/30569>. Reported by Andreas Enge <andreas@enge.fr>. * guix/profiles.scm (manifest-add): Don't append ENTRIES as is. Instead, cons each element of ENTRIES as we fold over it. Remove unneeded ellispes in 'match' patterns. Ludovic Courtès
2017-12-19Merge branch 'master' into core-updatesMarius Bakke
2017-12-17profiles: Use (guix man-db) to create the manual database....Fixes <https://bugs.gnu.org/29654>. Reported by Ruud van Asseldonk <dev+guix@veniogames.com>. This also speeds up database creation compared to "man-db --create" (less than half the time, on a warm cache, for 19k pages.) * guix/man-db.scm: New file. * Makefile.am (MODULES_NOT_COMPILED): Add it. * guix/profiles.scm (manual-database): Rewrite to use (guix man-db). Ludovic Courtès
2017-12-05Merge branch 'master' into core-updatesMarius Bakke
2017-12-03profiles: Really disable deprecation warnings for 'profile-derivation'....This is a followup to 2815fca1423cf72e6f3d0e774f1058bcbf8dfdbf. * guix/profiles.scm (profile-derivation)[builder]: Remove 'debug-disable' call, which was ineffective. Pass #:env-vars to 'gexp->derivation'. Ludovic Courtès
2017-12-03profile: Use _IO* but disable deprecation warning....This fixes a regression introduced in 2f60084f77815f454d1521396c2a383390ea2865, whereby the profile derivation would fail to run on Guile 2.0 (as is the case with "guix package --bootstrap"). Reported by Christopher Baines. * guix/profiles.scm (profile-derivation)[builder]: Use _IO* but add 'debug-disable' call. Ludovic Courtès
2017-12-03profiles: Avoid _IO* in profile builder....* guix/profiles.scm (profile-derivation)[builder]: Avoid the deprecated _IO* constants. Ludovic Courtès
2017-12-03profiles: Do not import the host's srfi-{19,26}.scm files....Previously the "manual-database" derivation would always import the host's srfi-{19,26}.scm files in the build side. In practice this means that different users could get different manual-database.drv depending on the Guile version they're using in the host. For example, the (gnu tests install) tests would fail if the host was running Guile 2.2.3 because the guest is running 2.2.2, and thus has different srfi-{19,26}.scm files. The manual-database.drv would need to be built from source, which would fail because prerequisites were missing. Reported by Mathieu Othacehe <m.othacehe@gmail.com> at <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=29409#96>. * guix/profiles.scm (manual-database): Do not pass #:modules to 'gexp->derivation'. Wrap 'build' gexp in 'with-imported-modules' form. Ludovic Courtès
2017-12-03gnu: glibc: Don't use full version string in locale path....This is a follow-up to commit ee3ebf1a357bd4eb36a2fa1790a7b549cffb305a. Fixes <https://bugs.gnu.org/29537>. * gnu/packages/base.scm (glibc/linux)[version]: Change to 2.26.91-gaaa2eb83b8. [source](uri): Adjust accordingly. [arguments]: Use VERSION-MAJOR+MINOR for locales path. (glibc-locales, glibc-utf8-locales): Likewise. * guix/packages.scm (patch-and-repack): Likewise. * guix/profiles.scm (ca-certificate-bundle, profile-derivation): Likewise. Marius Bakke
2017-08-09profiles: Only check file contents if the file exists....* guix/profiles.scm (fonts-dir-file): Check that files exist before using "empty-file?". Ricardo Wurmus
2017-07-20profiles: Remove workaround for an old Guile 'scandir' bug....* guix/profiles.scm (generation-numbers)[scandir]: Remove. Ludovic Courtès
2017-07-03profiles: xdg-desktop-database: Run the hook when GLib is referenced....This will pull the latest 'desktop-file-utils' package into the profile closure, as the 'xdg-mime-database' hook already does. * guix/profiles.scm (xdg-desktop-database): Run the hook when 'glib' is referenced. 宋文武
2017-06-26profiles: Add 'manifest-transaction-removal-candidate?'....* guix/profiles.scm (manifest-transaction-removal-candidate?): New procedure. * tests/profiles.scm ("manifest-transaction-removal-candidate?"): New test. Ludovic Courtès
2017-06-21environment: Disable profile collision checks....Reported by Efraim Flashner. This is a followup to a654dc4bcf7c8e205bdefa1a1d5f23444dd22778. * guix/profiles.scm (profile-derivation): Add #:allow-collisions? and honor it. * guix/scripts/environment.scm (inputs->profile-derivation): Pass #:allow-collisions? #f to 'profile-derivation'. * tests/guix-environment.sh: Test "guix environment guix". Ludovic Courtès
2017-06-21profiles: Move 'manifest-entry-dependencies' user after definition....Reported by Efraim Flashner. * guix/profiles.scm (manifest-transitive-entries): Move after <manifest-entry> definition. Ludovic Courtès
2017-06-21profiles: Catch and report collisions in the profile....* guix/profiles.scm (&profile-collision-error): New error condition. (manifest-transitive-entries, manifest-entry-lookup, lower-manifest-entry) (check-for-collisions): New procedures. (profile-derivation): Add call to 'check-for-collisions'. * guix/ui.scm (call-with-error-handling): Handle '&profile-collision-error'. * tests/profiles.scm ("collision", "collision of propagated inputs") ("no collision"): New tests. Ludovic Courtès
2017-06-21profiles: Manifest entries keep a reference to their parent entry....* guix/profiles.scm (<manifest-entry>)[parent]: New field. (package->manifest-entry): Add #:parent parameter. Fill out the 'parent' field of <manifest-entry>; pass #:parent in recursive calls. * guix/profiles.scm (sexp->manifest)[sexp->manifest-entry]: New procedure. Use it for version 3. * tests/profiles.scm ("manifest-entry-parent"): New procedure. ("read-manifest")[entry->sexp]: Add 'manifest-entry-parent' to the result. Ludovic Courtès
2017-06-21profiles: Represent propagated inputs as manifest entries....* guix/profiles.scm (package->manifest-entry): Turn DEPS into a list of manifest entries. (manifest->gexp)[entry->gexp]: Call 'entry->gexp' on DEPS. Bump version to 3. (sexp->manifest)[infer-dependency]: New procedure. Use it for versions 1 and 2. Parse version 3. (manifest-inputs)[entry->gexp]: New procedure. Adjust to 'dependencies' being a list of <manifest-entry>. * tests/profiles.scm ("packages->manifest, propagated inputs") ("read-manifest"): New fields. Ludovic Courtès
2017-05-16profiles: Add elapsed time to manual-database hook to output message....* guix/profiles.scm (manual-database): Add elapsed time to manual-database hook to output message. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Maxim Cournoyer
2017-04-05profiles: Generate database file for man pages....The mandb database file (index.db) is used by the "apropos" (whatis) or "man -k" commands. This change introduces a profile hook to generate such database file. * guix/profiles.scm (manual-database): New procedure. (%default-profile-hooks): Add it. Co-authored-by: Ludovic Courtès <ludo@gnu.org> Maxim Cournoyer
2017-03-26profiles: Create fonts.dir/scale for all fonts directories....* guix/profiles.scm (fonts-dir-file): Create fonts.dir/scale files for all fonts directories. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Huang Ying
2017-03-17profiles: Packages in a profile can be cross-compiled....* guix/profiles.scm (profile-derivation): Add #:target parameter; pass it to 'gexp->derivation'. * tests/profiles.scm ("profile-derivation, cross-compilation"): New test. Ludovic Courtès
2017-02-08profiles: gtk-im-modules: Fix for gtk3....Gtk+3 now have multiple outputs, so the gtk-query-immodules-3.0 should be find in output "bin" instead of "out". * guix/profiles.scm (gtk-im-modules): Pass the path of gtk-query-immodules-x.x as 'query' argument to the 'build' procedure. Signed-off-by: 宋文武 <iyzsong@member.fsf.org> Ying Huang
2017-01-16profiles: Export 'ca-certificate-bundle'....* guix/profiles.scm: Export ca-certificate-bundle, such that it can be used in other G-expressions. This is useful where these G-expressions run programs that require a ca-certificate-bundle, e.g. git. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Christopher Baines
2016-12-17profiles: Remove dependency on 'glibc-utf8-locales' for tests....Commit 1af0860e8be81c01ad405c1226d6bc4516e62863 added a mandatory dependency on 'glibc-utf8-locales', which entails long rebuilds for tests. * guix/profiles.scm (profile-derivation): Add #:locales? parameter. Add 'set-utf8-locale' variable. Use it when LOCALES? is true. (link-to-empty-profile): Pass #:locales? #f. * guix/scripts/environment.scm (inputs->profile-derivation): Pass #:locales?. * guix/scripts/package.scm (build-and-use-profile): Likewise. * tests/packages.scm ("--search-paths with pattern"): Pass #:locales? #f. * tests/profiles.scm ("profile-derivation") ("profile-derivation, inputs", "profile-manifest, search-paths") ("etc/profile", "etc/profile when etc/ already exists"): ("etc/profile when etc/ is a symlink"): Likewise. Ludovic Courtès
2016-12-16profiles: Build profiles in a UTF-8 locale....Fixes <http://bugs.gnu.org/25213>. Reported by Christopher Baines <mail@cbaines.net>. * guix/profiles.scm (profile-derivation)[glibc-utf8-locales]: New variable. [builder]: Use it to set 'LOCPATH'. Ludovic Courtès