Ricardo Wurmus
80eebee9f7
ui: 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.
2018-12-19 23:46:38 +01:00
Timothy Sample
6616a35202
ui: Report file names in 'system-error' exceptions from 'execlp'.
...
Fixes <https://bugs.gnu.org/33755 >.
* guix/ui.scm (apply-formals): New macro.
(execlp): New error-reporting wrapper.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2018-12-18 16:04:25 +01:00
Ludovic Courtès
d4aa147eec
ui: 'show-what-to-build' reports grafts separately.
...
* guix/ui.scm (graft-derivation?): New procedure.
(show-what-to-build): Distinguish among BUILD derivations that match
'graft-derivation?'. Report them separately.
2018-11-28 10:39:58 +01:00
Ludovic Courtès
dc0f74e5fc
Add (guix status) and use it for pretty colored output.
...
* guix/progress.scm (progress-reporter/trace): New procedure.
(%progress-interval): New variable.
(progress-reporter/file): Use it.
* guix/scripts/build.scm (set-build-options-from-command-line): Pass
#:print-extended-build-trace?.
(%default-options): Add 'print-extended-build-trace?'.
(guix-build): Parameterize CURRENT-TERMINAL-COLUMNS. Use
'build-status-updater'.
* guix/scripts/environment.scm (%default-options): Add
'print-extended-build-trace?'.
(guix-environment): Wrap body in 'with-status-report'.
* guix/scripts/pack.scm (%default-options): Add 'print-build-trace?' and
'print-extended-build-trace?'.
(guix-pack): Wrap body in 'with-status-report'.
* guix/scripts/package.scm (%default-options, guix-package): Likewise.
* guix/scripts/system.scm (%default-options, guix-system): Likewise.
* guix/scripts/pull.scm (%default-options, guix-pull): Likewise.
* guix/scripts/substitute.scm (progress-report-port): Don't call STOP
when TOTAL is zero.
(process-substitution): Add #:print-build-trace? and honor it.
(guix-substitute)[print-build-trace?]: New variable.
Pass #:print-build-trace? to 'process-substitution'.
* guix/status.scm: New file.
* guix/store.scm (set-build-options): Add #:print-extended-build-trace?;
pass it into PAIRS.
(%protocol-version): Bump.
(protocol-version, nix-server-version): New procedures.
(current-store-protocol-version): New variable.
(with-store, build-things): Parameterize it.
* guix/ui.scm (build-output-port): Remove.
(colorize-string): Export.
* po/guix/POTFILES.in: Add guix/status.scm.
* tests/status.scm: New file.
* Makefile.am (SCM_TESTS): Add it.
* nix/libstore/worker-protocol.hh (PROTOCOL_VERSION): Bump to 0x162.
* nix/libstore/build.cc (DerivationGoal::registerOutputs)
(SubstitutionGoal::finished): Print a "@ hash-mismatch" trace before
throwing.
2018-09-27 23:21:53 +02:00
Ricardo Wurmus
f72e5f93b7
ui: Do not filter hash mismatch lines.
...
Reported by Pjotr Prins <pjotr.public12@thebird.nl>.
* guix/ui.scm (build-output-port): Add pattern for hash mismatch error; be
more careful with error messages in verbose mode.
2018-09-11 23:19:42 +02:00
Ricardo Wurmus
15cc7e6adf
ui: Add soft port for styling and filtering build output.
...
* guix/ui.scm (build-output-port): New procedure.
* guix/scripts/package.scm (%default-options): Print build trace.
(guix-package): Use build-output-port.
* guix/scripts/build.scm (guix-build): Use build-output-port.
Co-authored-by: Sahithi Yarlagadda <sahi@swecha.net>
2018-09-09 23:18:21 +02:00
Sahithi Yarlagadda
80ec1b73d2
ui: Add support for colorization.
...
* guix/ui.scm (ansi-color-tables): New variable.
(color, colorize-string): New procedures.
Signed-off-by: Ricardo Wurmus <rekado@elephly.net>
2018-09-09 22:26:54 +02:00
Ludovic Courtès
dc013aff81
ui: Fix typo.
...
* guix/ui.scm (display-profile-content-diff): Fix typo in docstring.
2018-07-11 00:53:04 +02:00
Kyle Meyer
85c3fbf5de
ui: Add -V as short option for --version.
...
* guix/ui.scm (run-guix): Add -V as the short option for --version for
consistency with most commands.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2018-07-07 18:10:31 +02:00
Ludovic Courtès
90b144d22d
ui: Report file names in 'system-error' exceptions from 'delete-file'.
...
* guix/ui.scm (delete-file): New error-reporting wrapper.
2018-07-03 17:50:04 +02:00
Ludovic Courtès
8120b23e51
ui: Make 'check-available-space' public.
...
* guix/ui.scm (check-available-space): Add optional 'directory'
parameter, defaulting to (%store-prefix). Honor it. Make public.
2018-07-03 00:39:10 +02:00
Ludovic Courtès
fd1395c498
ui: Increase relevance score for exact matches.
...
Previously "guix package -s python" would have 'python2-zope-interface' as
its first result (relevance: 10), followed by many other python-*
packages with the same score, while 'python' itself would come
later (relevance: 7).
This change makes 'python' the first result (relevance: 27).
Reported by Gábor Boskovits.
* guix/ui.scm (relevance)[score]: Use 'fold-matches' instead of
'match:count' to counter the number of maches. Give more weight to
exact matches.
2018-06-29 22:56:33 +02:00
Ludovic Courtès
26db747a86
ui: Hint at the installation of locale packages and 'GUIX_LOCPATH'.
...
* guix/ui.scm (install-locale): Hide the "warning: failed to install
locale" on Guile 2.2. Add a hint about 'glibc-utf8-locales' and
'GUIX_LOCPATH'.
2018-06-27 16:58:59 +02:00
Julien Lepiller
af09bed7dc
guix: ui: Allow translation of dates.
...
* guix/ui.scm (display-generation): Allow translation of dates.
The format string will show dates as month day year, but some languages use a
different convention.
2018-06-14 21:53:12 +02:00
Ludovic Courtès
24cb66d18e
ui: Avoid #:select'ing bindings introduced in the latest (guix build utils).
...
This should allow 'guix pull' to complete even when invoked from a Guix
that predates commit 5d669883ec
.
* guix/ui.scm: Use #:hide instead of #:select. This is a followup to
5d669883ec
.
2018-06-09 12:02:28 +02:00
Marius Bakke
12bd588346
Merge branch 'master' into core-updates
2018-05-06 15:56:24 +02:00
Ludovic Courtès
2d2f98efb3
guix build: Nicely report unbound variables with hints.
...
* guix/ui.scm (print-unbound-variable-error): Add "error:" to the
message.
(report-unbound-variable-error): New procedure, with code formerly in
'report-load-error'.
(report-load-error): Use it.
(call-with-unbound-variable-handling): New procedure.
(with-unbound-variable-handling): New macro.
* guix/scripts/build.scm (options->derivations): Wrap body in
'with-unbound-variable-handling'.
* tests/guix-build.sh (GUIX_PACKAGE_PATH): Add test.
2018-05-04 15:07:08 +02:00
Ludovic Courtès
7f2f6a2cb2
ui: Factorize 'last-frame-with-source'.
...
* guix/ui.scm (last-frame-with-source): New procedure.
(load*)[frame-with-source]: Remove.
Use 'last-frame-with-source'.
2018-05-04 12:13:53 +02:00
Mark H Weaver
3d5ad159b3
Merge branch 'master' into core-updates
2018-04-30 04:03:54 -04:00
Ludovic Courtès
6ddb59607b
guix system: Report wrong file system 'device' fields.
...
Previously, if you wrote (device "my-label") without (title 'label),
you'd get:
guix system: error: stat: No such file or directory: "my-label"
Now you get a proper error and a hint.
Reported by Pierre-Antoine Rouby.
* guix/scripts/system.scm (check-file-system-availability)[literal]: New
variable. Loop over LITERAL.
* gnu/system/file-systems.scm (%pseudo-file-system-types): New variable.
* guix/ui.scm (display-hint): Make public.
2018-04-27 18:45:02 +02:00
Mark H Weaver
cbdfa50d9f
utils: invoke: Raise exceptions using SRFI-34 and SRFI-35.
...
* guix/build/utils.scm (&invoke-error): New condition type.
(invoke-error?, invoke-error-program, invoke-error-arguments)
(invoke-error-exit-status, invoke-error-term-signal)
(invoke-error-stop-signal): New exported procedures.
(invoke): Raise exceptions using SRFI-34 and SRFI-35.
* guix/ui.scm (call-with-error-handling): Add a guard clause
for &invoke-error conditions.
2018-03-16 20:02:47 -04:00
Ludovic Courtès
16de45557f
ui: 'display-hint' preserves Texinfo formatting.
...
The previous method would mess up with @example formatting, for
instance.
* guix/ui.scm (display-hint): Parameterize '%text-width' instead of
using 'fill-paragraph'.
2018-03-07 11:22:42 +01:00
Ludovic Courtès
e1ba6d49ea
ui: Display fix hints in the case where we have location info.
...
* guix/ui.scm (call-with-error-handling): Display fix-hints in the
error + message case.
2018-03-07 11:22:42 +01:00
Ludovic Courtès
7949c140b1
ui: 'load*' no longer fails on Guile 2.2.3 upon EACCES or similar.
...
Previously, if ~/.cache was not write-accessible, 'guix' would exit with
code 1 without printing any message. That was because the 'make-stack'
call would fail since the exception (a 'system-error) came from
'compile-file', which was called at a point where TAG wasn't installed
yet. Secondly, to mimick auto-compilation behavior, we just swallow
'system-error raised by 'compile-file'.
Reported by Clément Lassieur.
* guix/ui.scm (load*): Move 'compile-file' call in the dynamic extent of
TAG. Catch 'system-error around it and ignore it.
2018-03-06 10:50:39 +01:00
Ludovic Courtès
f44c7aaccd
ui: Better workaround for lack of '%fresh-auto-compile' on 2.2.3.
...
Fixes <https://bugs.gnu.org/29226 > for the most part.
* guix/ui.scm (load*): Add call to 'compile-file' on 2.2.3.
2018-03-05 10:54:45 +01:00
Ludovic Courtès
92423868bc
ui: Disable '%fresh-auto-compile' only for Guile 2.2.3.
...
Mitigates <https://bugs.gnu.org/29881 >.
Reported by Diego Nicola Barbato <dnbarbato@posteo.de>.
* guix/ui.scm (load*): Unset '%fresh-auto-compile' only on Guile 2.2.3.
2018-01-15 23:29:33 +01:00
Ludovic Courtès
4a8d536ffe
ui: Display hints that come along with '&message' conditions.
...
* guix/ui.scm (call-with-error-handling): Add case for message and
fix-hint?.
2018-01-07 23:46:39 +01:00
Ludovic Courtès
92f36323c4
ui: It's 2018 now!
...
* guix/ui.scm (show-version-and-exit): Change year to 2018.
2018-01-01 18:22:28 +01:00
Ludovic Courtès
399993f804
ui: Non-zero exit for compound '&message' and '&error-location' conditions.
...
* guix/ui.scm (call-with-error-handling): When both 'message?' and
'error-location?' are true, add call to 'exit'.
2017-12-18 17:52:58 +01:00
Ludovic Courtès
3b80b81358
ui: Display hints to resolve profile collisions.
...
Fixes <https://bugs.gnu.org/29255 >.
Reported by Ben Sturmfels <ben@sturm.com.au>.
* guix/ui.scm (display-collision-resolution-hint): New procedure.
(call-with-error-handling): Call it upon '&profile-collistion-error'.
2017-12-10 23:44:58 +01:00
Ludovic Courtès
3fb6464ba4
ui: Tweak conflicting profile entry error message.
...
* guix/ui.scm (call-with-error-handling): Use 'manifest-entry-output*'
when reporting conflicting profile entries.
2017-12-03 23:18:53 +01:00
Ludovic Courtès
e2721a05e7
Do not set '%fresh-auto-compile'.
...
* guix/scripts/offload.scm (build-machines): Comment out
'(set! %fresh-auto-compile #t)' since with Guile 2.2.3 it could lead to
an actual rebuild of everything that gets loaded from there on. See
<https://bugs.gnu.org/29226 >.
* guix/ui.scm (load*): Likewise.
2017-12-01 18:47:34 +01:00
Ludovic Courtès
e42f026eb5
ui: Present 'use-modules' hints with a question mark.
...
Suggested by myglc2 <myglc2@gmail.com>.
* guix/ui.scm (report-load-error): Write "Did you forget" rather than
"Try adding."
2017-11-30 18:14:56 +01:00
Ludovic Courtès
0d2ecf8b50
ui: Avoid "pkg:out" syntax when reporting collisions.
...
* guix/ui.scm (call-with-error-handling)[manifest-entry-output*]: New
procedure. Use it when reporting collisions.
2017-11-28 10:18:40 +01:00
Ludovic Courtès
b5bfa4773d
ui: 'known-variable-definition' protects against module cycles.
...
Fixes <https://bugs.gnu.org/29358 >.
Reported by Marius Bakke <mbakke@fastmail.com>.
* guix/ui.scm (known-variable-definition): Add 'visited' set to guard
against cycles on 2.0.
2017-11-24 18:16:43 +01:00
Ludovic Courtès
304a53f67a
ui: Add source file name to the package search metrics.
...
* guix/ui.scm (%package-metrics): Include 'package-location'. Increase
score of the other fields.
2017-11-16 08:45:15 +01:00
Ludovic Courtès
dc856223f5
ui: Add an 'unbound-variable' exception printer.
...
* guix/ui.scm (print-unbound-variable-error): New variable.
Use it as the 'unbound-variable' printer.
2017-11-09 23:54:47 +01:00
Ludovic Courtès
a2985bb101
ui: Provide hints for unbound-variable errors.
...
* guix/ui.scm (known-variable-definition): New procedure.
(report-load-error): Handle 'unbound-variable'.
2017-11-09 23:54:47 +01:00
Ludovic Courtès
935542fbde
ui: Add 'display-hint'.
...
* guix/ui.scm (known-variable-definition): New procedure.
(report-load-error): Use it.
2017-11-09 23:54:47 +01:00
Ludovic Courtès
23735137eb
ui: Define and honor '&error-location' and '&fix-hint' conditions.
...
* guix/utils.scm (&error-location, &fix-hint): New condition types.
* guix/ui.scm (report-load-error): Handle them.
(call-with-error-handling): Honor '&error-location'.
2017-11-08 22:31:58 +01:00
Ludovic Courtès
37eed374d9
ui: Introduce (guix i18n).
...
* guix/ui.scm (G_, N_, _P, %gettext-domain, %package-text-domain): Move
to...
* guix/i18n.scm: ... here. New file.
2017-11-08 22:31:58 +01:00
Ludovic Courtès
a6e22d8445
ui: Improve reporting of missing closing parentheses.
...
Suggested by Ricardo Wurmus.
Works around <https://bugs.gnu.org/28295 >.
* guix/ui.scm (report-load-error): Add case for 'read-error'.
* tests/guix-system.sh: Test missing-closing-paren errors.
2017-10-10 23:12:03 +02:00
Ludovic Courtès
0649321d91
guix system: Add 'search' command.
...
* guix/scripts/system.scm (resolve-subcommand): New procedure.
(process-command): Handle 'search'.
(guix-system): Likewise.
(show-help): Augment.
* guix/scripts/system/search.scm: New file.
* po/guix/POTFILES.in: Add it.
* Makefile.am (MODULES): Add it.
* guix/ui.scm (%text-width): Export.
* doc/guix.texi (Invoking guix system): Document it.
(Service Types and Services): Mention 'guix system search'.
* tests/guix-system.sh: Test it.
2017-09-16 17:47:46 +02:00
Ludovic Courtès
c7ae219e39
ui: Generalize relevance computation.
...
* guix/ui.scm (relevance, package-relevance): New procedures.
(%package-metrics): New variable.
* guix/scripts/package.scm (find-packages-by-description)[score]
[package-score]: Remove. Use 'package-relevance' instead.
2017-09-16 17:47:45 +02:00
Ludovic Courtès
f0e492f0a5
utils: Factorize XDG directory handling.
...
* guix/ui.scm (config-directory): Remove.
* guix/utils.scm (xdg-directory, config-directory): New procedures.
(cache-directory): Rewrite in terms of 'xdg-directory'.
* guix/scripts/substitute.scm (%narinfo-cache-directory): Pass #:ensure?
#f to 'cache-directory'.
2017-07-28 18:09:43 +02:00
宋文武
dbde386ee3
ui: package->recutlis: Remove duplicated package names in dependencies.
...
* guix/ui.scm (package->recutils): Add call to 'delete-duplicates' in
'dependencies->recutils'.
2017-07-02 13:14:16 +08:00
Ludovic Courtès
a654dc4bcf
profiles: 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.
2017-06-21 11:05:53 +02:00
Ludovic Courtès
f4453df9a5
store: Add an RPC counter.
...
* guix/store.scm (%rpc-calls): New variable.
(show-rpc-profile, record-operation): New procedures.
(operation): Add call to 'record-operation'.
* guix/ui.scm (run-guix-command): Wrap COMMAND-MAIN in 'dynamic-wind'.
Run EXIT-HOOK.
2017-06-16 17:08:22 +02:00
Ludovic Courtès
cbee955901
ui: Remove the empty string from '%load-extensions'.
...
* guix/ui.scm (run-guix): Set %LOAD-EXTENSIONS.
2017-06-15 23:07:47 +02:00
Ludovic Courtès
4ee79f22f5
ui: 'package->recutils' takes #:extra-fields.
...
* guix/ui.scm (package->recutils): Add #:extra-fields and honor it.
2017-06-13 23:22:19 +02:00