From: Liliana Marie Prikler <liliana.prikler@gmail.com>
To: Attila Lendvai <attila@lendvai.name>
Cc: 50878@debbugs.gnu.org
Subject: [bug#50878] [PATCH] union: Resolve collisions by stable-sort'ing them.
Date: Thu, 30 Sep 2021 20:52:30 +0200 [thread overview]
Message-ID: <93c0bb40dcf98c72b896b837b8be6b06f71161bb.camel@gmail.com> (raw)
In-Reply-To: <x6K1iTIy5vDsT_3R2yNaMF5r9W8CbBNsIhom3XkIG8ew8gRzVb97qmLkUdRa20lo9uQq_iGIN5jscojKa1KZPMFLTG952268MSVgdtqYA8U=@lendvai.name>
Hi Attila
Am Donnerstag, den 30.09.2021, 08:10 +0000 schrieb Attila Lendvai:
> > > - (let* ((original-files (list->vector files))
> > > - (count (vector-length original-files))
> > > - (stripped-files (vector-map (lambda (_ el)
> > > - (strip-store-file-name
> > > el))
> > > - original-files))
> > > - (indices (vector-unfold values count)))
> > >
> > > - (stable-sort! indices
> > > - (lambda (a b)
> > > - (string> (vector-ref stripped-files a)
> > > - (vector-ref stripped-files b))))
> > > - (vector-ref original-files (vector-ref indices 0))))
> >
> > Instead of stable-sort!-ing the indices of a vector, what about
> > stable-sort!-ing (map strip-store-file-name original-files) in more
> > or less one go?
>
> the hash also needs to be dropped from the path for sorting to be
> useful, but the return value must be the full path, hence the
> complexity with sorting the indices, pointing both to the full paths
> and the cut parts.
This thing has received some replies already to which I already dropped
a comment, so I'll try not to repeat myself here. If something is
still unclear, go down the sub-thread started by Maxime.
> > I don't think the default collision resolver ought to sort the
> > files.
> >
> > The rationale behind ignoring certain collisions, e.g. icon caches
> > relies on the fact that Guix will use the correct files because
> > they are put first in the manifest. The hooks themselves have no
> > special names that could put them "always first" and profiles are
> > themselves union-built.
> >
> > I do however support the addition of sorting methods as collision
> > resolvers in general and would welcome a way of doing so for
> > profiles
> > pre-hook.
>
> please note that i almost completely lack the knowledge of the
> relevant internals.
>
> with that in mind, do i read you right? this should add a new
> exported resolver funtion, and leave the default one as it was?
Yes, I think that is safer than actually overriding the default for now
at least.
> and use the new resolver somewhere (where?) that will affect only the
> union of profiles, i.e. user visible effecs when installing software?
> (because DIRECTORY-UNION is called in other contexts also?)
>
> thanks for the insights! i'd appreciate a bit more higher level
> guidance, and then i'll resend the patch accordingly.
I must admit, I'm at a loss of knowledge myself here. Perhaps someone
else can jive in and tell you which union-build is done without hooks,
but I fear there might also be none. For now, simply having the
resolver is in my opinion enough if we don't find the right location as
well. We can default it later with "first-come-first-serve" exceptions
where needed.
Cheers
next prev parent reply other threads:[~2021-09-30 19:00 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-28 21:40 [bug#50878] [PATCH] union: Resolve collisions by stable-sort'ing them Attila Lendvai
2021-09-29 13:48 ` Maxime Devos
2021-09-29 16:03 ` Attila Lendvai
2021-09-29 21:00 ` Maxime Devos
2021-09-29 17:42 ` Liliana Marie Prikler
2021-09-30 8:10 ` Attila Lendvai
2021-09-30 8:42 ` Maxime Devos
2021-09-30 14:00 ` Ludovic Courtès
2021-09-30 14:12 ` Attila Lendvai
2021-09-30 15:18 ` Maxime Devos
2021-09-30 18:13 ` Liliana Marie Prikler
2021-09-30 18:52 ` Liliana Marie Prikler [this message]
2021-10-03 12:43 ` [bug#50878] [PATCH 1/4] guix: build: Promote local define-inline to a define-constant util Attila Lendvai
2021-10-03 12:43 ` [bug#50878] [PATCH 2/4] guix: build: Avoid using magic literals in the code for hash length Attila Lendvai
2021-10-03 12:43 ` [bug#50878] [PATCH 3/4] guix: build: Factor out and export default-collision-resolver Attila Lendvai
2021-10-03 12:43 ` [bug#50878] [PATCH 4/4] WIP guix: build: Add resolve-collision/alphanumeric-last for union Attila Lendvai
2021-10-03 12:59 ` [bug#50878] (No Subject) Attila Lendvai
2022-09-02 16:04 ` Liliana Marie Prikler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=93c0bb40dcf98c72b896b837b8be6b06f71161bb.camel@gmail.com \
--to=liliana.prikler@gmail.com \
--cc=50878@debbugs.gnu.org \
--cc=attila@lendvai.name \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.