guix package: Try $LOGNAME in addition to $USER.
Fixes <http://bugs.gnu.org/17946>.
Notoriously, cron jobs may set LOGNAME only and not USER. See
e.g. crontab(5) under Debian 7 (wheezy).
* guix/scripts/package.scm (%profile-directory)
(guix-package): Also try LOGNAME if USER is unset.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
guix package: Do the right thing for '-p ~/.guix-profile'.
Fixes <http://bugs.gnu.org/17939>.
Reported by Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>.
* guix/scripts/package.scm (canonicalize-profile): New procedure.
(%options): Use it for --profile.
* tests/guix-package.sh: Add test.
system: Install /var/guix/profiles/system-1-link on new systems.
* guix/build/install.scm (directives): Add /var/guix/profiles/system.
(populate-root-file-system): Add 'system' parameter. Create
/var/guix/profiles/system-1-link.
* guix/scripts/system.scm (install): Pass OS-DIR to
'populate-root-file-system'.
* guix/build/vm.scm (initialize-root-partition): Add #:system-directory
parameter, and pass it to 'populate-root-file-system'.
(initialize-hard-disk): Add #:system-directory parameter, and pass it
to 'initialize-root-partition'.
* gnu/system/vm.scm (qemu-image): Add #:os-derivation parameter and pass
it to 'initialize-hard-disk'.
(system-disk-image, system-qemu-image,
system-qemu-image/shared-store): Pass #:os-derivation to 'qemu-image.
guix system: Add 'reconfigure' action.
* guix/scripts/system.scm (%system-profile): New variable.
(switch-to-system, previous-grub-entries): New procedures.
(unless-file-not-found): New macro.
(show-help): Add 'reconfigure'.
(guix-system): Handle it.
* gnu/system.scm: Export 'operating-system-activation-script'.
* doc/guix.texi (Invoking guix system): Document it.
guix {system,offload}: Improve reporting of syntax errors.
* guix/scripts/system.scm (read-operating-system) <catch handler>: Add
case for 'syntax-error'. Correct message for default case.
* guix/scripts/offload.scm (build-machines) <catch handler>: Add case
for 'syntax-error'.
* tests/guix-system.sh: New file.
* Makefile.am (SH_TESTS): Add it.
guix system: Gracefully handle 'install-grub' errors.
* guix/scripts/system.scm (install): Wrap 'install-grub' call in
'false-if-exception'. This is a followup to 641f9a2a.
Merge branch 'core-updates'
substitute-binary: Warn about uninitialized ACL.
* guix/scripts/substitute-binary.scm (guix-substitute-binary): Call
'check-acl-initialized'.
(check-acl-initialized): Don't rely on 'equal?' to compare keys.
Instead, convert keys to strings.
guix system: 'init' makes sure the target store directory exists.
* guix/scripts/system.scm (install): Before calling 'copy-closure', make
sure directory (%store-prefix) under TARGET exists.
substitute-binary: Avoid the term "narinfo" in user messages.
* guix/scripts/substitute-binary.scm (assert-valid-narinfo): Change
message to avoid the term "narinfo".
Merge branch 'master' into core-updates
guix build: Allow gexps to be passed to '-e'.
* guix/ui.scm (%guix-user-module): New variable.
(read/eval): Pass it as the second argument to 'eval'.
* guix/scripts/build.scm (options/resolve-packages): Add case for
'gexp?'.
* tests/guix-build.sh: Add tests.
* doc/guix.texi (Invoking guix build): Document '-e gexp'.
guxi build: Allow gexps to be passed to '-e'.
* guix/ui.scm (%guix-user-module): New variable.
(read/eval): Pass it as the second argument to 'eval'.
* guix/scripts/build.scm (options/resolve-packages): Add case for
'gexp?'.
* tests/guix-build.sh: Add tests.
* doc/guix.texi (Invoking guix build): Document '-e gexp'.
Separate package description translations from string translations.
* po/packages/LINGUAS, po/packages/Makevars, po/packages/POTFILES.in:
New files.
* po/guix/Makevars (DOMAIN): Change to "guix".
(XGETTEXT_OPTIONS): Remove "--keyword=synopsis --keyword=description".
* po/guix/POTFILES.in: Remove gnu/packages/*.scm.
* configure.ac: Change to gettext 0.18.3. Produce
po/packages/Makefile.in.
* Makefile.am (SUBDIRS): Add po/packages.
* guix/ui.scm (%package-text-domain): New variable.
(P_): New procedure.
(package->recutils): Use 'P_' instead of '_'.
* guix/scripts/package.scm (find-packages-by-description): Use 'P_'
instead of 'gettext'.
guix build: Only 'guix build' sets #:print-build-trace.
This makes 'guix package' et al. slightly less verbose, by not emitting
"@ substituter-started" lines and similar.
* guix/scripts/build.scm (set-build-options-from-command-line): Pass
#:print-build-trace.
(%default-options): Add 'print-build-trace?'.
Merge branch 'master' into core-updates
guix system: Add 'disk-image' action.
* guix/scripts/system.scm (show-help): Add 'disk-image'.
(guix-system)[parse-options]: Support 'disk-image' action.
[option-arguments]: Likewise.
Handle the 'disk-image' action.
* doc/guix.texi (Invoking guix system): Document 'disk-image'.
guix system: Check whether we are installing to /.
* guix/scripts/system.scm (install): Check whether TARGET is / and warn.
guix system: Factorize out closure copy.
* guix/scripts/system.scm (copy-closure): New procedure.
(install): Use it.
guix system: 'guix system init' installs GRUB by default.
* guix/scripts/system.scm (install): Add #:grub?, #:grub.cfg, and
#:device parameters; honor them.
(show-help): Document '--no-grub'.
(%options): Add '--no-grub'.
(%default-options): Add 'install-grub?'.
(guix-system): Honor 'install-grub?' option from OPTS. Adjust
'install' call accordingly.
* doc/guix.texi (Invoking guix system): Document '--no-grub'.
guix system: Add 'init' sub-command.
* guix/scripts/system.scm (install): New procedure.
(guix-system)[parse-option]: Remove check for extraneous arguments.
[match-pair, option-arguments]: New procedures.
Use 'option-arguments'. Honor 'init'.
(show-help): Document 'init'.
* doc/guix.texi (Invoking guix system): Document 'init'.