Commit 6a2e303d3a had modified prompt_yes_no to only read a single character,
aiming to ease the user experience. This was, in retrospect, a bad idea, as
it makes user input error more likely and introduces complexity.
This commit reverts to line-oriented input, while preserving the default yes
value so that a user can simply hit 'Enter' at the prompt in place of typing
"yes".
* etc/guix-install.sh (_flush): Delete function.
(prompt_yes_no): Restore line-oriented read. Remove loop. Make anything else
than yes means no. Use Bash features to streamline definition.
Reported-by: Lars-Dominik Braun <lars@6xq.net> and others.
* etc/guix-install.sh (_flush): New function.
(prompt_yes_no): Clear input, then only read the first character, silently.
Add the [Yes/no] string to the message. When a newline is entered by the
user, treat it as the default value, which is "yes".
(chk_gpg_keyring): Remove "(yes/no)" from the prompt message.
(configure_substitute_discovery): Likewise.
(sys_authorize_build_farms): Likewise.
The current move is never correct. It flip-flops between car and cadr for
the destination. Since the position of the destination is not actually a
fixed point in the list of changes, use a more robust method of inferring it.
* etc/snippets/tempel/text-mode (move\ ): Infer source and destination from
washed diffs. Process new module before destination.
* etc/news.scm: Add Portuguese translation of entries about WSL system images
and about Guix System image API documentation.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
* etc/teams.scm (find-teams-by-scope): Differentiate between raw strings
and regexps. Make raw string matches strict.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
Add a scope list to each team. This list defines all the files and
directories that are mentored by the team.
Also add a cc-members command that takes two Git revision strings as input,
add returns the members that should be CC'ed given the files impacted between
the two revisions.
* etc/teams.scm.in (<team>)[scope]: New field.
(team, list-teams): Adapt those procedures.
(find-team-by-scope, diff-revisions): New procedures.
(main): Add a "cc-members" command.
* doc/contributing.texi ("Teams"): Document it.
("Sending a Patch Series"): Adapt it.
The en dash is used to separate pairs of words or numbers. The em dash is the
one used to separate sentences. In addition, in English text we are using the
convention of not separating the dash with spaces.
* etc/news.scm: Change the en dash to em in entry about Emacs native
compilation.
Signed-off-by: Florian Pelz <pelzflorian@pelzflorian.de>
This is consistent with what's done by 'cross-jobs' in (gnu ci).
* etc/release-manifest.scm (%cross-manifest): Remove "x86_64-linux-gnu"
and "i686-linux-gnu" from the list returned by 'targets'.
* etc/snippets/tempel/scheme-mode: New file.
* etc/snippets/tempel/text-mode: New file.
* etc/snippets/scheme-mode: Moved from here...
* etc/snippets/yas/scheme-mode: ... to here.
* etc/snippets/text-mode: Moved from here...
* etc/snippets/yas/text-mode: ... to here.
* doc/contributing.texi ("The Perfect Setup"): Adjust yasnippet setup
accordingly. Add tempel setup.
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
* etc/time-travel-manifest.scm (<guix-instance-compiler>): Use a separate
cache per system so that parallel system evaluations do no step on each
other's toes.
The menu entry reference is kept in English because the manual isn't
translated to Portuguese yet.
* etc/news.scm: Add Portuguese translation of 'guix style -f' entry.
Signed-off-by: Julien Lepiller <julien@lepiller.eu>
* gnu/ci.scm (channel-build-system, channel-source->package): Remove.
* gnu/packages/package-management.scm (channel-source->package): New
procedure, moved from (gnu ci).
* guix/build-system/channel.scm: New file, with code moved from (gnu ci).
* doc/guix.texi (Build Systems): Document it.
This manifest makes it easy to test travels from the current revision
back to the revision of a past Guix release.
Suggested by zimoun <zimon.toutoune@gmail.com>.
* etc/time-travel-manifest.scm: New file.
* Makefile.am (EXTRA_DIST): Add it.
If "$HOME/.guix-home/profile" exists, use it for GUIX_PROFILE instead of
"$HOME/.guix-profile".
* etc/guix-install.sh (sys_create_init_profile): Check for 'guix home'
profile.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
The default values from the XDG base directory specification make little
sense for Guix System, and some scripts in Guix assume that they are not
"empty or unset": for example, see <https://issues.guix.gnu.org/56050>.
On foreign distros, however, omitting the default values is likely to
break software from the distro, perhaps even preventing the desktop
environment from starting. To smooth over the difference, use the
system-wide configuration to ensure the environment variables are always
explicitly set on foreign distros.
* etc/guix-install.sh (sys_create_init_profile): Explicitly initialize
XDG base directory variables.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
We now correctly recognise ‘guix -Abcdef’ as equivalent to ‘guix -f’.
* etc/completion/bash/guix (_guix_is_short_option, guix_is_long_option):
New functions.
(_guix_is_dash_f, _guix_is_dash_l, _guix_is_dash_L, _guix_is_dash_m)
(_guix_is_dash_C, _guix_is_dash_p): Use them.
* etc/committer.scm.in (hunk-types): New variable.
(<hunk>): Rename hunk-definition? getter to 'hunk-type'.
(diff-info): Mute a git warning by separating file names from arguments with
'--'. Rename the 'definitions?' variable to 'type'.
Use the 'addition type when a new package addition is detected, 'removal when
removed else #f.
(add-commit-message): Re-indent.
(remove-commit-message): New procedure.
(main)[definitions]: Make commit message conditional depending on whether it
is an addition or removal.
[changes]: Adjust indentation.
This avoids a naming conflict for 'filter', provided by both (srfi srfi-1)
and (sxml xpath).
* etc/committer.scm.in: Use 'use-modules' instead of 'import', and use a
prefix for the (sxml xpath) module.
(new-sexp): Adjust accordingly.
(change-commit-message): Likewise.
* gnu/ci.scm (%cross-targets): Remove it ...
(cross-jobs): ... and use the targets procedure instead.
* etc/release-manifest.scm: Adapt it.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
Until now, 'current-guix-package' was parameterized in the wrong
context. Thus, 'current-guix' would end up building a variant of the
'guix' package instead of the package returned by
'channel-source->package', which is much less expensive to build.
* etc/system-tests.scm (mparameterize): New macro.
(tests-for-current-guix): Change the 'value' field of each <system-test>
record to parameterize 'current-guix-package' for good.
The current regexp simply matches the first occurence, which more often than
not points to the *previous* variable.
* etc/snippets/text-mode/guix-commit-message-update-package ($1): Restrict
match to beginning of line with optional indentation.
Fixes, for example, "guix import pypi --<TAB>", which would previously
fail to show '--recursive'.
* etc/completion/bash/guix (_guix_complete_option): Fix options
completion for first subcommand.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Using 1eb40a6 was more correct than pragmatic, as those who have upgraded
their own Guix since then will not see the message urging them to upgrade
the Guix they don't know about.
This follows up on commit df830ef91a.
* etc/news.scm: Tie latest news entry to an arbitrary later commit.
This is a follow-up to commit 9fc8ae4171, which
missed two hunks from <https://issues.guix.gnu.org/50363>.
Reported by hackeryarn on #guix.
* .gitattributes, etc/git/gitconfig: New files.
Signed-off-by: Marius Bakke <marius@gnu.org>
* etc/completion/bash/guix
(_guix_complete_available_package_or_store_file): New function.
(_guix_complete): Call it in place of _guix_complete_available_package
after the ‘build’ command.
_guix_complete is always called with a fresh empty array.
* etc/completion/bash/guix (_guix_complete_command)
(_guix_complete_subcommand, _guix_complete_installed_package)
(_guix_complete_option, _guix_complete_pid): Append to $COMPREPLY rather
than re-assigning.
Previously, the script would raise an error if a copyright line was added to a
file in gnu/packages/. With this change, it will amend the previous commit
whenever a copyright line is added, and add the copyright line to the commit.
* etc/committer.scm.in (add-copyright-line): New procedure.
(main): Check if a copyright line was added and call ‘add-copyright-line’ if
necessary.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Allow custom change commit messages by supplying a commit message and
optionally a changelog message as arguments.
* etc/committer.scm.in (break-string-with-newlines)
(custom-commit-message): New procedures.
(main)[change-commit-message*]: New sub-procedure. Use them.
(main): Use it.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Some package definitions use G-expressions (see, e.g., chez-scheme).
Import (guix gexp) such that Guile knows how to read those.
Otherwise, an exception such as the following might be raised:
ERROR: In procedure read:
In procedure scm_lreadr: gnu/services/networking.scm:480:16: Unknown # object: #\~
* etc/committer.scm.in: Import (guix gexp).
Signed-off-by: Ricardo Wurmus <rekado@elephly.net>
Also ensure prompt_yes_no always print the message with a trailing space,
which is more pleasing to the eye.
* etc/guix-daemon.conf.in <--discover=no>: New guix-daemon option.
* etc/guix-daemon.service.in: Likewise.
* etc/init.d/guix-daemon.in: Likewise.
* etc/openrc/guix-daemon.in: Likewise.
* etc/guix-install.sh (configure_substitute_discovery): New procedure.
(sys_enable_guix_daemon): Ask the user whether automatic substitute discovery
should be enabled. Set the '--discover' argument accordingly.
(prompt_yes_no): Add a trailing space to the message.
(sys_authorize_build_farms): Remove trailing space from the message argument.
* NEWS (Distribution): Add news.
If GUIX_PROFILE is exported here, any subsequent
"source /some/other/profile/etc/profile" will set variables pointing to
"$HOME/.guix-profile" instead of pointing to the sourced profile.
* etc/guix-install.sh (sys_create_init_profile): No longer export GUIX_PROFILE.
Adjust to changes in commit aaafd19bd1.
* etc/snippets/scheme-mode/guix-origin: Use ‘hg-file-name’ instead of
‘string-append’ when ‘method’ for origin is ‘hg-fetch’.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Note that there are still plenty of bugs that this series didn't fix,
e.g.:
$ guix time-machine -- system reconf<Tab>
* etc/completion/bash/guix (_guix_complete): Call _guix_complete_option
if the word at point looks like an option.
* etc/completion/bash/guix (_guix_complete_option): Receive two
arguments and complete the second based on the first, instead
of blindly completing the very last word based on the very first
(sub)command.
(_guix_complete): Adjust both calls.
* etc/completion/bash/guix (_guix_is_option): New function.
(_guix_is_command): Remove function to replace it with simple string
comparison…
(_guix_complete): …here. Complete the ‘innermost’ command at point.
* etc/guix-install.sh <FUNCNAME>: Explicitly refer to the first item of the
FUNCNAME array.
(ROOT_HOME): Replace variable by ~root directly; manually expanding it via
echo was not necessary.
(chk_gpg_keyring): Use an if branch for the exit to avoid a warning about
expression precedence.
(chk_term) <ansi_term>: Remove unused variable.
(guix_get_bin) <wget, gpg>: Test the commands directly. Use an array for the
wget arguments, which can then be properly expanded.
(sys_create_store): Disable SC1090 for the source command, as we don't care
about following the sourced script.
<_msg>: Reuse the GUIX_PROFILE variable in the message.
(sys_create_build_user) <getent>: Test the command directly.