Subject: Re: bug#43585: Order in manifest and command-line differs

From: zimoun <[email-masked]>
Date: Thu, 24 Sep 2020 16:08:06 +0200

Hi Mathieu,

On Thu, 24 Sep 2020 at 15:08, Mathieu Othacehe <[email-masked]> wrote:

> The order of what appears in "bin" depends on both the name of the
> binaries provided by both packages and also how the "ls" command decides
> to sort its output. I'm not sure that much can be done here.

I have badly worded.  The point is that "diffutils" and "busybox"
provide both the 'diff' binary.  Therefore, depending on the order,
'diff' is provided by one or the other.  Compare:

    guix package -i busybox diffutils -p /tmp/busybox-diffutils
   /tmp/busybox-diffutils/bin/diff

and

    guix package -i diffutils busybox -p /tmp/diffutils-busybox
   /tmp/diffutils-busybox/bin/diff

In the same time, compare the manifest.scm files:

--8<---------------cut here---------------start------------->8---
  ;;; busybox-diffutils.scm
  (specifications->manifest '("busybox" "diffutils"))

  ;;; diffutils-busybox.scm
  (specifications->manifest '("diffutils" "busybox"))
--8<---------------cut here---------------end--------------->8---

then

    guix package -m busybox-diffutils.scm -p /tmp/busybox-diffutils-m
   /tmp/busybox-diffutils-m/bin/diff

and

    guix package -m diffutils-busybox.scm -p /tmp/diffutils-busybox-m
   /tmp/diffutils-busybox-m/bin/diff

Concretely, "guix package" processes command-line arguments from right
to left.  And the manifest.scm file read the list in order (so from
left to right).

All the best,
simon

PS:
For another example not related:

$ guix package --show=diffutils --show=busybox | recsel -C -p name
name: busybox
name: diffutils

and  "guix show" corrects that, processing from left to right.

$ guix show diffutils busybox | recsel -C -p name
name: diffutils
name: busybox