* git guix checkout automation for contributors
@ 2022-09-25 14:06 Danny Milosavljevic
2022-09-25 15:04 ` Danny Milosavljevic
2022-10-01 17:18 ` Ludovic Courtès
0 siblings, 2 replies; 10+ messages in thread
From: Danny Milosavljevic @ 2022-09-25 14:06 UTC (permalink / raw)
To: Guix-devel
[-- Attachment #1: Type: text/plain, Size: 2076 bytes --]
Hi,
So there were some comments on https://news.ycombinator.com/item?id=32960308
about getting started with contributing to Guix.
It turns out that the barrier of entry for editing existing packages is
kinda high (I tried it myself--putting myself into the mindset of a
beginner).
For example:
(1) Install the guix system
(2) Log in as regular user
(3) guix edit nano
(4) It opens a file from /gnu/store that you cannot edit.
Uhh. That's... not ideal. Maybe instead error out with a hint on what you need
to do in order to provide a local checkout? Or do we want viewing to work?
Ok, so let's say we are a little more knowledgeable:
(1) Install the guix system
(2) Log in as regular user
(3a) if [ ! -d src ]
then
mkdir src
cd src
else
cd src
fi \
&& if [ ! -d guix ]
then
git clone --depth=1 https://git.savannah.gnu.org/git/guix.git guix
else
(cd guix && git pull --rebase)
fi \
&& cd guix \
&& guix shell -C -D guix -- ./bootstrap \
&& guix shell -C -D guix -- ./configure --localstatedir=/var --disable-daemon \
&& guix shell -C -D guix -- make -j5 \ <--- takes forever to build
&& ./pre-inst-env guix edit nano \
&& git add gnu/packages/*.scm
Ok, that worked.
But there are a lot of ways that can be done wrong.
Weird way it can be done wrong:
(1) install the guix system
(2) log in as regular user
(3b) git clone --depth=1 https://git.savannah.gnu.org/git/guix.git guix \
&& cd guix \
&& guix shell -C -D guix -- ./bootstrap \
&& guix shell -C -D guix -- ./configure --localstatedir=/var --disable-daemon \
&& ./pre-inst-env guix edit nano
It will open the file in /gnu/store . WTF? I'm pretty sure that that's a bug.
./pre-inst-env does exist--but it does some weird things if you don't
compile beforehand.
Also, can we put a variant of (3a) into a command "guix prepare-edit" or
something?
It has always bothered me how manual and magical-commandy it is otherwise
(what you actually need to do also changed over the years--not good).
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: git guix checkout automation for contributors
2022-09-25 14:06 git guix checkout automation for contributors Danny Milosavljevic
@ 2022-09-25 15:04 ` Danny Milosavljevic
2022-09-25 16:36 ` Maxime Devos
2022-10-01 17:18 ` Ludovic Courtès
1 sibling, 1 reply; 10+ messages in thread
From: Danny Milosavljevic @ 2022-09-25 15:04 UTC (permalink / raw)
To: Guix-devel
[-- Attachment #1: Type: text/plain, Size: 1526 bytes --]
Also, this doesn't work:
On Sun, 25 Sep 2022 16:06:06 +0200
Danny Milosavljevic <dannym@scratchpost.org> wrote:
(1) install the guix system
(2) log in as regular user
(3c) git clone --depth=1 https://git.savannah.gnu.org/git/guix.git guix \
&& cd guix \
&& guix shell
Even after doing
echo /home/dannym/....../guix >> /home/dannym/.config/guix/shell-authorized-directories
I get:
guix shell: loading environment from '/home/dannym/backup/g1/guix/guix.scm'...
Backtrace:
14 (primitive-load "/home/dannym/.config/guix/current/bin/?")
In guix/ui.scm:
2263:7 13 (run-guix . _)
2226:10 12 (run-guix-command _ . _)
In ice-9/boot-9.scm:
1752:10 11 (with-exception-handler _ _ #:unwind? _ # _)
1752:10 10 (with-exception-handler _ _ #:unwind? _ # _)
In guix/store.scm:
656:37 9 (thunk)
1295:8 8 (call-with-build-handler #<procedure 7fd26be46e40 at g?> ?)
In guix/status.scm:
815:4 7 (call-with-status-report _ _)
In guix/scripts/environment.scm:
320:4 6 (_)
In srfi/srfi-1.scm:
673:15 5 (append-map _ _ . _)
586:29 4 (map1 _)
586:17 3 (map1 ((load package "/home/dannym/backup/g1/guix/?") ?))
In guix/scripts/environment.scm:
306:4 2 (packages->outputs _ _)
In ice-9/boot-9.scm:
1685:16 1 (raise-exception _ #:continuable? _)
1685:16 0 (raise-exception _ #:continuable? _)
ice-9/boot-9.scm:1685:16: In procedure raise-exception:
Throw to key `match-error' with args `("match" "no matching pattern" #<unspecified>)'.
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: git guix checkout automation for contributors
2022-09-25 15:04 ` Danny Milosavljevic
@ 2022-09-25 16:36 ` Maxime Devos
0 siblings, 0 replies; 10+ messages in thread
From: Maxime Devos @ 2022-09-25 16:36 UTC (permalink / raw)
To: Danny Milosavljevic, Guix-devel
[-- Attachment #1.1.1: Type: text/plain, Size: 2583 bytes --]
On 25-09-2022 17:04, Danny Milosavljevic wrote:
> Also, this doesn't work:
>
> On Sun, 25 Sep 2022 16:06:06 +0200
> Danny Milosavljevic<dannym@scratchpost.org> wrote:
>
> (1) install the guix system
> (2) log in as regular user
> (3c) git clone --depth=1https://git.savannah.gnu.org/git/guix.git guix \
> && cd guix \
> && guix shell
This issue had been reported in <https://issues.guix.gnu.org/50960#13>:
Liliana Marie Prikler wrote:
> What would happen on the top-level of the Guix source tree or deep
> inside the tree of a guile package that deals with manifests, that
> aren't necessarily related to Guix? I think we should try searching
> for something less ambiguous first (".guix-shell/manifest" perhaps?)
> and maybe also provide further options after manifest.scm (e.g. build-
> aux/guix.scm or etc/guix.scm)
This issue was considered unlikely:
Ludovic Courtès wrote:
> You mean a directory that contains a file named ‘guix.scm’ or
> ‘manifest.scm’ but that happens to do something completely unrelated?
>
> We can never rule this out, but I’d say it’s unlikely (these two
> conventions are rather well established) and it’s up to the user to pay
> attention.
>
> WDYT?
Later shown to be incorrect on the top-level of the Guix source tree
more explicitly:
Maxime Devos wrote:
> Guix itself doesn't follow this convention: the guix source tree has an unrelated
> "guix.scm" file, that doesn't evaluate to a package. I'd expect that running
> "guix shell" within the guix source tree would be equivalent to
> "guix environment guix", but currently this doesn't seem to be the case.
As such, it was proposed to leave out auto-detection of ‘guix.scm’:
Liliana Marie Prikler wrote: > Leaving out the auto-detection of
‘guix.scm’ and ‘manifest.scm’ for now
> is a good idea, given that Guix itself would be an edge-case for that.
> [ proposed alternative solution ]
It was agreed that auto-detection fails here:
Ludovic Courtès wrote:
>> Guix itself doesn't follow this convention: the guix source tree has an unrelated
>> "guix.scm" file, that doesn't evaluate to a package.
>
> Indeed, but that’s because Guix predates the convention. :-)
>
> Toggle quote (4 lines)
>> I'd expect that running "guix shell" within the guix source tree would
>> be equivalent to "guix environment guix", but currently this doesn't
>> seem to be the case.
>
> Right, it would fail poorly in this particular case.
... and then ignored, AFAICT.
Greetings,
Maxime.
[-- Attachment #1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 929 bytes --]
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 236 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: git guix checkout automation for contributors
[not found] <mailman.14689.1664114844.1079.guix-devel@gnu.org>
@ 2022-09-25 21:40 ` kiasoc5
2022-09-26 10:55 ` zimoun
0 siblings, 1 reply; 10+ messages in thread
From: kiasoc5 @ 2022-09-25 21:40 UTC (permalink / raw)
To: guix-devel, Danny Milosavljevic
Isn't there a checkout cache in ~/.cache/guix? Can guix edit be pointed
to the git repo in the cache as opposed to the system's?
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: git guix checkout automation for contributors
2022-09-25 21:40 ` kiasoc5
@ 2022-09-26 10:55 ` zimoun
2022-09-26 20:37 ` Josselin Poiret
0 siblings, 1 reply; 10+ messages in thread
From: zimoun @ 2022-09-26 10:55 UTC (permalink / raw)
To: kiasoc5, guix-devel, Danny Milosavljevic; +Cc: Josselin Poiret
Hi,
On dim., 25 sept. 2022 at 21:40, kiasoc5 <kiasoc5@disroot.org> wrote:
> Isn't there a checkout cache in ~/.cache/guix? Can guix edit be pointed
> to the git repo in the cache as opposed to the system's?
This checkout* is used by “guix time-machine” and it does not always
point to what “guix describe” returns. Modulo this minor warning
(easily fixable by moving HEAD to the correct commit), it appears to me
a good idea to rely on it for easing some contributions.
*checkout:
~/.cache/guix/checkouts/pjmkglp4t7znuugeurpurzikxq3tnlaywmisyr27shj7apsnalwq/
For instance,
--8<---------------cut here---------------start------------->8---
$ guix describe
Generation 9 août 31 2022 14:51:40 (current)
guix 23152ff
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: master
commit: 23152ff70f0ed4966d8207846f54c793d7cb4f86
$ git -C /home/simon/.cache/guix/checkouts/pjmkglp4t7znuugeurpurzikxq3tnlaywmisyr27shj7apsnalwq/ log -1 --oneline
2e8b4f9bfa (HEAD -> master) installer: Exit console-services page with abort-to-prompt.
$ guix time-machine --url=file:///home/simon/.cache/guix/checkouts/pjmkglp4t7znuugeurpurzikxq3tnlaywmisyr27shj7apsnalwq/ -- describe
guix 2e8b4f9
repository URL: https://git.savannah.gnu.org/git/guix.git
commit: 2e8b4f9bfa00489fd3acff305837a79af236e183
--8<---------------cut here---------------end--------------->8---
When running “guix time-machine” (inferiors), all the machinery
“./bootstrap && ./configure --localstatevar=/var && make” is
transparently done. We discussed that at the 10 Years event with
Josselin.
Therefore, we could imagine something similar for helping people to
contribute:
1. use (test?) unmerged patches
2. update and/or create new patches
Cheers,
simon
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: git guix checkout automation for contributors
2022-09-26 10:55 ` zimoun
@ 2022-09-26 20:37 ` Josselin Poiret
2022-09-27 8:38 ` zimoun
0 siblings, 1 reply; 10+ messages in thread
From: Josselin Poiret @ 2022-09-26 20:37 UTC (permalink / raw)
To: zimoun, kiasoc5, guix-devel, Danny Milosavljevic
Hello everyone,
zimoun <zimon.toutoune@gmail.com> writes:
> Hi,
>
> On dim., 25 sept. 2022 at 21:40, kiasoc5 <kiasoc5@disroot.org> wrote:
>> Isn't there a checkout cache in ~/.cache/guix? Can guix edit be pointed
>> to the git repo in the cache as opposed to the system's?
>
> This checkout* is used by “guix time-machine” and it does not always
> point to what “guix describe” returns. Modulo this minor warning
> (easily fixable by moving HEAD to the correct commit), it appears to me
> a good idea to rely on it for easing some contributions.
It would be a good idea to reuse the cache, however I don't think that
edits should be made directly there. Maybe we could either suggest or
provide a command that would copy the git repository there to another
place.
> When running “guix time-machine” (inferiors), all the machinery
> “./bootstrap && ./configure --localstatevar=/var && make” is
> transparently done. We discussed that at the 10 Years event with
> Josselin.
Yes! Although FTR none of bootstrap, configure or make are actually run
when using time-machine, it's a totally different way of building :).
The upshot is that we could even provide a flag like `guix time-machine
--issue=NNNNN` that would provide the corresponding guix branch at
https://git.guix-patches.cbaines.net/guix-patches/, and benefit from the
built substitutes if there are. It would need some more formal URL and
discussion around this feature, but everything's in place for it to
happen.
> Therefore, we could imagine something similar for helping people to
> contribute:
>
> 1. use (test?) unmerged patches
> 2. update and/or create new patches
I think the second part would need a bit of work though, refer to Chris'
mail [1] for what would need to be done (namely, making `git send-email`
easier and refactoring the contribution guidelines).
[1] 87a66wfzeh.fsf@cbaines.net
https://yhetil.org/guix-devel/87a66wfzeh.fsf@cbaines.net
Best,
--
Josselin Poiret
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: git guix checkout automation for contributors
2022-09-26 20:37 ` Josselin Poiret
@ 2022-09-27 8:38 ` zimoun
0 siblings, 0 replies; 10+ messages in thread
From: zimoun @ 2022-09-27 8:38 UTC (permalink / raw)
To: Josselin Poiret, kiasoc5, guix-devel, Danny Milosavljevic
Hi,
On Mon, 26 Sep 2022 at 22:37, Josselin Poiret <dev@jpoiret.xyz> wrote:
>> When running “guix time-machine” (inferiors), all the machinery
>> “./bootstrap && ./configure --localstatevar=/var && make” is
>> transparently done. We discussed that at the 10 Years event with
>> Josselin.
>
> Yes! Although FTR none of bootstrap, configure or make are actually run
> when using time-machine, it's a totally different way of building :).
Yeah, I simplified since it is somehow a detail. :-) Interested reader
can read Josselin’s explanations [1] about the differences.
1: <https://yhetil.org/guix/87let6roxo.fsf@jpoiret.xyz>
> The upshot is that we could even provide a flag like `guix time-machine
> --issue=NNNNN` that would provide the corresponding guix branch at
> https://git.guix-patches.cbaines.net/guix-patches/, and benefit from the
> built substitutes if there are. It would need some more formal URL and
> discussion around this feature, but everything's in place for it to
> happen.
Well, I think it would be better to have another subcommand. There is a
“guix review” draft somewhere but I do not currently find it.
It could be nice to see if it already just work using ’guix time-machine
-C channels.scm’ where the file channels.scm points to some QA.
>> Therefore, we could imagine something similar for helping people to
>> contribute:
>>
>> 1. use (test?) unmerged patches
>> 2. update and/or create new patches
>
> I think the second part would need a bit of work though, refer to Chris'
> mail [1] for what would need to be done (namely, making `git send-email`
> easier and refactoring the contribution guidelines).
I do not think git-send-email is the major roadblock here. From what I
have seen two steps appear more difficult for infrequent contributors:
a) commit message
b) correct format-patch
About a) it could be nice to have a tool roughly checking. For
instance, we have Emacs yasnippets for adding packages; we could imagine
a tool that check is the commit message respect some standards; at least
help to detect many common “mistakes“.
About b), from the feedback I get, people used to Merge/Pull Request do
not get at first why this step is required; since they usually git-pull
and send a request. Then, many patches do not contain some base-commit
information because people miss the option --base; implicitly
self-contained with MR/PR. Idem the missing --reroll-count.
Cheers,
simon
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: git guix checkout automation for contributors
2022-09-25 14:06 git guix checkout automation for contributors Danny Milosavljevic
2022-09-25 15:04 ` Danny Milosavljevic
@ 2022-10-01 17:18 ` Ludovic Courtès
2022-10-05 3:18 ` Maxim Cournoyer
2022-11-02 18:41 ` zimoun
1 sibling, 2 replies; 10+ messages in thread
From: Ludovic Courtès @ 2022-10-01 17:18 UTC (permalink / raw)
To: Danny Milosavljevic; +Cc: Guix-devel
Hi!
Danny Milosavljevic <dannym@scratchpost.org> skribis:
> (1) Install the guix system
> (2) Log in as regular user
> (3) guix edit nano
> (4) It opens a file from /gnu/store that you cannot edit.
At one point, I thought we could have, say:
guix edit --clone PKG
It would close the channel containing PKG, open the file that defines
it, and then tell you to run “guix build -L … PKG” to test your changes.
All this would be relatively easy to implement, but it has one downside:
it doesn’t work for the ‘guix’ channel.
Perhaps we could make it work for the ‘guix’ channel if we arrange so
that “guix build -L … PKG” doesn’t end up loading all the local
uncompiled guix/*.scm modules.
Thoughts?
Ludo’.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: git guix checkout automation for contributors
2022-10-01 17:18 ` Ludovic Courtès
@ 2022-10-05 3:18 ` Maxim Cournoyer
2022-11-02 18:41 ` zimoun
1 sibling, 0 replies; 10+ messages in thread
From: Maxim Cournoyer @ 2022-10-05 3:18 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: Danny Milosavljevic, Guix-devel
Hi,
Ludovic Courtès <ludo@gnu.org> writes:
> Hi!
>
> Danny Milosavljevic <dannym@scratchpost.org> skribis:
>
>> (1) Install the guix system
>> (2) Log in as regular user
>> (3) guix edit nano
>> (4) It opens a file from /gnu/store that you cannot edit.
>
> At one point, I thought we could have, say:
>
> guix edit --clone PKG
>
> It would close the channel containing PKG, open the file that defines
> it, and then tell you to run “guix build -L … PKG” to test your changes.
>
> All this would be relatively easy to implement, but it has one downside:
> it doesn’t work for the ‘guix’ channel.
>
> Perhaps we could make it work for the ‘guix’ channel if we arrange so
> that “guix build -L … PKG” doesn’t end up loading all the local
> uncompiled guix/*.scm modules.
>
> Thoughts?
Interesting ideas.
If we decide to implement this, it should work from day one with the
Guix channel, as that's the main use case I believe.
--
Thanks,
Maxim
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: git guix checkout automation for contributors
2022-10-01 17:18 ` Ludovic Courtès
2022-10-05 3:18 ` Maxim Cournoyer
@ 2022-11-02 18:41 ` zimoun
1 sibling, 0 replies; 10+ messages in thread
From: zimoun @ 2022-11-02 18:41 UTC (permalink / raw)
To: Ludovic Courtès, Danny Milosavljevic; +Cc: Guix-devel
Hi,
I am late to the party. :-)
On Sat, 01 Oct 2022 at 19:18, Ludovic Courtès <ludo@gnu.org> wrote:
> Danny Milosavljevic <dannym@scratchpost.org> skribis:
>
>> (1) Install the guix system
>> (2) Log in as regular user
>> (3) guix edit nano
>> (4) It opens a file from /gnu/store that you cannot edit.
>
> At one point, I thought we could have, say:
>
> guix edit --clone PKG
>
> It would close the channel containing PKG, open the file that defines
> it, and then tell you to run “guix build -L … PKG” to test your changes.
>
> All this would be relatively easy to implement, but it has one downside:
> it doesn’t work for the ‘guix’ channel.
>
> Perhaps we could make it work for the ‘guix’ channel if we arrange so
> that “guix build -L … PKG” doesn’t end up loading all the local
> uncompiled guix/*.scm modules.
Well, does it need to be a Git clone? Or can it just be a simple copy?
Because using a simple copy, we could imagine,
guix edit --from=PKG --to=DIRECTORY
that extracts the PKG package definition, filling the required
’#:use-module’s and so ready for “guix build -L DIRECTORY PKG”.
On the other hand, a Git clone would allow to prepare a patch almost
ready for submission.
Cheers,
simon
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2022-11-02 18:42 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-09-25 14:06 git guix checkout automation for contributors Danny Milosavljevic
2022-09-25 15:04 ` Danny Milosavljevic
2022-09-25 16:36 ` Maxime Devos
2022-10-01 17:18 ` Ludovic Courtès
2022-10-05 3:18 ` Maxim Cournoyer
2022-11-02 18:41 ` zimoun
[not found] <mailman.14689.1664114844.1079.guix-devel@gnu.org>
2022-09-25 21:40 ` kiasoc5
2022-09-26 10:55 ` zimoun
2022-09-26 20:37 ` Josselin Poiret
2022-09-27 8:38 ` zimoun
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).