From: Christina O'Donnell <cdo@mutix.org>
To: Simon Tournier <zimon.toutoune@gmail.com>
Cc: guix-devel <guix-devel@gnu.org>
Subject: Re: Mechanism for helping in multi-channels configuration
Date: Sat, 3 Feb 2024 15:27:26 +0000 [thread overview]
Message-ID: <0109ba4a-f62f-b438-c0ba-f46e66395a7e@mutix.org> (raw)
In-Reply-To: <87v875kf5u.fsf@gmail.com>
Hi Simon,
> The wishlist is: provide a machine-readable description on guix-science
> channel side in order to help in finding the good overlap between
> commits of different channels.
>
> It could be nice if instead of an hard error, “guix pull” could say:
> « the channel ’guix’ needs to be at least at commit 1234abc ».
I was just thinking about these kinds of errors. It would also happen
between
channels when packages are split from a single file (eg. golang.scm to
golang-xyz.scm). Then channels immediately go out of sync as we're doing
continual releases. So, it wouldn't just be for time-machine. It's all a
bit too
fragile for my liking. I assume we won't be to frequent versioned
releases any
time soon..
A sketch of a solution might be:
1. Have a script that scrapes all the define-public symbols in every
file in
every package.
2. Have a script that determines the symbols needed by each file. (Macros
make this more difficult, but.)
3. Have both scripts have an incremental version that runs on diffs (for
performance).
4. Run this for every commit on every branch on every channel caching the
result.
5. Have a CI script keep this updated for new commits.
6. Have a server track incompatibilities.
For example, a 'definition-reference' could look like,
(definition-reference (commit-range start-hash end-hash)
file-path
identifier)
(definition-reference (commit-range "44b340d..." "06dba3b...")
"gnu/packages/golang"
'go-github-com-rs-xid)
Commit ranges makes the size of entries tractable (since package
probably aren't
getting moved / deleted / added very much).
Then use a hash table, (or trie or B+ Tree, or distributed hash table,
etc) to
go from identifier to definition-reference.
You would probably would also want to know commit date so you could
index on it.
That would let you find versions that supplied the identifier that are
as close
as possible chronologically to a particular version of a different channel
Now this isn't perfect (in case anyone was getting that impression ;):
- It won't have any idea about version incompatibilities.
- It couldn't trace renamed variables.
- And probably more.
Might be useful to additionally track package versions, but that might
run into
resource issues.
I'm thinking a Guile daemon backed by SQLite.. What do you think?
Full disclosure: I've got nothing lined up for the summer yet, so I'm on the
prowl for GSoC projects :)
Kind regards,
- Christina
next prev parent reply other threads:[~2024-02-03 15:28 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-03 10:36 Mechanism for helping in multi-channels configuration Simon Tournier
2024-02-03 15:27 ` Christina O'Donnell [this message]
2024-02-15 15:05 ` Simon Tournier
2024-03-18 16:05 ` Mechanism for helping in multi-channels configuration (and Xapian index) Christina O'Donnell
2024-05-06 12:05 ` Simon Tournier
2024-02-06 14:18 ` Mechanism for helping in multi-channels configuration Maxim Cournoyer
2024-02-06 17:08 ` Attila Lendvai
2024-02-06 17:16 ` Attila Lendvai
2024-02-15 21:14 ` Simon Tournier
2024-03-12 12:44 ` Attila Lendvai
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
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0109ba4a-f62f-b438-c0ba-f46e66395a7e@mutix.org \
--to=cdo@mutix.org \
--cc=guix-devel@gnu.org \
--cc=zimon.toutoune@gmail.com \
/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 public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).