Subject: bug#56539: ‘guix shell -D … --export-manifest’ behaves inconsistently

From: Ludovic Courtès <[email-masked]>
Date: Wed, 13 Jul 2022 16:15:11 +0200

Hi!

I observe the following weird behavior, where the first invocation
wrongfully expands ‘-D gnutls’ into a list of package specs, whereas the
other invocations (only slightly different) lead to calls to
‘package->development-manifest’ as expected:

--8<---------------cut here---------------start------------->8---
$ guix shell -D gnutls [email-masked] automake libtool  --export-manifest
;; What follows is a "manifest" equivalent to the command line you gave.
;; You can store it in a file that you may then pass to any 'guix' command
;; that accepts a '--manifest' (or '-m') option.

(specifications->manifest
  (list "libtool"
        "automake"
        "[email-masked]"
        "net-tools"
        "iproute2"
        "socat"
        "pkg-config"
        "texinfo"
        "which"
        "datefudge"
        "util-linux"
        "[email-masked]"
        "libtasn1"
        "libidn2"
        "nettle"
        "zlib"
        "[email-masked]"
        "tar"
        "gzip"
        "bzip2"
        "xz"
        "[email-masked]"
        "diffutils"
        "patch"
        "findutils"
        "gawk"
        "sed"
        "grep"
        "coreutils"
        "make"
        "bash-minimal"
        "ld-wrapper"
        "binutils"
        "gcc@10"
        "glibc"
        "glibc:static"
        "glibc-utf8-locales"
        "libgc"
        "libunistring"
        "gmp"
        "[email-masked]"))
$ guix shell -D gnutls [email-masked] automake  --export-manifest
;; What follows is a "manifest" equivalent to the command line you gave.
;; You can store it in a file that you may then pass to any 'guix' command
;; that accepts a '--manifest' (or '-m') option.

(concatenate-manifests
  (list (specifications->manifest
          (list "[email-masked]" "automake"))
        (package->development-manifest
          (specification->package "gnutls"))))
$ guix shell -D gnutls autoconf automake libtool  --export-manifest
;; What follows is a "manifest" equivalent to the command line you gave.
;; You can store it in a file that you may then pass to any 'guix' command
;; that accepts a '--manifest' (or '-m') option.

(concatenate-manifests
  (list (specifications->manifest
          (list "autoconf" "automake" "libtool"))
        (package->development-manifest
          (specification->package "gnutls"))))
$ guix describe
Generation 221	Jul 03 2022 23:52:07	(current)
  guix e069de4
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: e069de452a2c923868f5137421b4b6349c38d754
--8<---------------cut here---------------end--------------->8---

Ludo’.