From: Eric Bavier <ericbavier@gmail.com>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: guix-devel@gnu.org
Subject: Re: [PATCH] gnu: refresh: Add --list-upstream-closure option.
Date: Wed, 16 Jul 2014 16:45:45 -0500 [thread overview]
Message-ID: <877g3d3rli.fsf@gmail.com> (raw)
In-Reply-To: <8738e2l3ws.fsf@gnu.org>
Ludovic Courtès writes:
>> For the sake of brevity and human consumption, the option doesn't print
>> *all* upstream packages, just the "top-level" upstream packages,
>> i.e. those whose inputs encompass all other upstream packages.
>
> This looks very useful!
I'm glad.
>
>> I'm not sure that the option name or all the terminology I used is
>> appropriate, so any comments or suggestions are welcome.
>
> The term “upstream” in the context of this command makes me think of
> package maintainers which are considered “upstream” compared to the
> distro.
>
> What about “dependent” instead?
Yes, I like "dependent" better.
>> + (define (package-direct-inputs package)
>> + (append (package-native-inputs package)
>> + (package-inputs package)
>> + (package-propagated-inputs package)))
>> +
>> + (let ((inverse-package-dependency-graph
>
> ‘inverse-dag’ or ‘dag’ is enough for a local var. If needed a comment
> can clarify what it is.
OK
>> + (fold-packages
>> + (lambda (package forest)
>> + (for-each
>> + (lambda (d)
>> + ;; Insert a tree edge from each of package's inputs to package.
>> + (hash-set! forest d
>> + (cons package
>> + (hash-ref forest d '()))))
>> + (map cadr (package-direct-inputs package)))
>> + forest)
>> + (make-hash-table))))
>
> Could you use a vhash here instead of the hash table?
Yes, that shouldn't be a problem. Could I ask why the request?
>> + (map package-full-name
>> + (fold-forest-leaves
>> + cons '()
>> + (lambda (node)
>> + (hash-ref inverse-package-dependency-graph node '()))
>> + packages))))
>
> The function is documented as returning “package specifications” so I’d
> remove ‘map’ from here and move it to the call site.
I'm fine with moving the mapping to the call site. I used "package
specification" here because that term is used elsewhere when talking
about a string like "zlib-1.2.7". I'll change the documentation to be
more clear.
> What about ‘fold-tree’ instead, and change ‘next’ to ‘children’?
>
>> +(define (fold-forest-leaves proc init next roots)
>> + "Like fold-forest, but call (PROC NODE RESULT) only for leaf nodes."
>
> ‘fold-tree-leaves’.
I realize now that the structure isn't necessarily a forest, so yes,
"fold-tree" would be more appropriate.
> Also could you write a few tests for these two?
Sure thing.
> I believe ‘upstream-packages’ (renamed to ‘dependent-packages’?) could
> be moved to (guix packages) and have a few tests as well. That’d be
> great.
>
> WDYT?
Because of the use of 'fold-packages' from (gnu packages), putting
dependent-packages into (guix packages) would cause a circular
dependency. I think I'd also want to make the interface more general if
it were to go somewhere more widely available.
I'll post an updated patch soon.
--
Eric Bavier
Please avoid sending me Word or PowerPoint attachments.
See http://www.gnu.org/philosophy/no-word-attachments.html
next prev parent reply other threads:[~2014-07-16 21:45 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-15 5:19 [PATCH] gnu: refresh: Add --list-upstream-closure option Eric Bavier
2014-07-15 21:15 ` Ludovic Courtès
2014-07-16 21:45 ` Eric Bavier [this message]
2014-07-17 23:20 ` Ludovic Courtès
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=877g3d3rli.fsf@gmail.com \
--to=ericbavier@gmail.com \
--cc=guix-devel@gnu.org \
--cc=ludo@gnu.org \
/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).