* bug#22073: Fwd: search-paths and propagated inputs [not found] ` <87egf7l3fz.fsf@mdc-berlin.de> @ 2015-12-02 8:18 ` Federico Beffa 2015-12-03 18:54 ` Federico Beffa 2015-12-20 11:37 ` Federico Beffa 0 siblings, 2 replies; 6+ messages in thread From: Federico Beffa @ 2015-12-02 8:18 UTC (permalink / raw) To: 22073 Federico Beffa <beffa@ieee.org> writes: > Federico Beffa <beffa@ieee.org> writes: > >> Hi, >> >> the package 'gobject-introspection' declares a >> search-path-specification for the variable GI_TYPELIB_PATH and >> 'matplotlib' uses and propagates said package. I have 'matplotlib' in >> my profile, but "guix package --search-paths" doesn't show anything >> about GI_TYPELIB_PATH. >> >> Is it intentional or an oversight that search-path-specifications of >> propagated-inputs are not considered? Or, am I doing something wrong? >> >> Regards, >> Fede > > Bug or feature? I think it’s a bug. Right now users of matplotlib have to check the sources where it says that GI_TYPELIB_PATH must be set. ~~ Ricardo ^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#22073: Fwd: search-paths and propagated inputs 2015-12-02 8:18 ` bug#22073: Fwd: search-paths and propagated inputs Federico Beffa @ 2015-12-03 18:54 ` Federico Beffa 2015-12-20 12:56 ` Ludovic Courtès 2015-12-20 11:37 ` Federico Beffa 1 sibling, 1 reply; 6+ messages in thread From: Federico Beffa @ 2015-12-03 18:54 UTC (permalink / raw) To: 22073 Looking at my manifest file I see that, e.g., the entry for 'python-matplotlib' lists all recursively propagated dependencies. Differently from this the 'search-paths' entry only lists the entries defined in the package (in this case none), neglecting the search paths in the 'propagated-inputs'. If I understand correctly, this behavior is defined by this function (from guix/profiles.scm): (define* (package->manifest-entry package #:optional output) "Return a manifest entry for the OUTPUT of package PACKAGE. When OUTPUT is omitted or #f, use the first output of PACKAGE." (let ((deps (map (match-lambda ((label package) (gexp-input package)) ((label package output) (gexp-input package output))) (package-transitive-propagated-inputs package)))) (manifest-entry (name (package-name package)) (version (package-version package)) (output (or output (car (package-outputs package)))) (item package) (dependencies (delete-duplicates deps)) (search-paths (package-native-search-paths package))))) To get all the required search paths recursively we should replace the last 'manifest-entry' slot with a call to a function like this: (define (collect-package-search-paths package) (define (collect-search-paths package) (let ((propagated-inputs (package-propagated-inputs package)) (search-paths (package-native-search-paths package))) (append search-paths (append-map (match-lambda ((name pkg . rest) (collect-search-paths pkg)) (_ '())) propagated-inputs)))) (delete-duplicates (collect-search-paths package))) Or, am I missing how this works? Regards, Fede ^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#22073: Fwd: search-paths and propagated inputs 2015-12-03 18:54 ` Federico Beffa @ 2015-12-20 12:56 ` Ludovic Courtès 2015-12-20 16:52 ` Federico Beffa 0 siblings, 1 reply; 6+ messages in thread From: Ludovic Courtès @ 2015-12-20 12:56 UTC (permalink / raw) To: Federico Beffa; +Cc: 22073 [-- Attachment #1: Type: text/plain, Size: 2204 bytes --] Thanks for the heads-up, and sorry for the delay! Federico Beffa <beffa@ieee.org> skribis: > Looking at my manifest file I see that, e.g., the entry for > 'python-matplotlib' lists all recursively propagated > dependencies. Differently from this the 'search-paths' entry only lists > the entries defined in the package (in this case none), neglecting the > search paths in the 'propagated-inputs'. That’s a bug, indeed. > If I understand correctly, this behavior is defined by this function (from > guix/profiles.scm): > > (define* (package->manifest-entry package #:optional output) > "Return a manifest entry for the OUTPUT of package PACKAGE. When OUTPUT is > omitted or #f, use the first output of PACKAGE." > (let ((deps (map (match-lambda > ((label package) > (gexp-input package)) > ((label package output) > (gexp-input package output))) > (package-transitive-propagated-inputs package)))) > (manifest-entry > (name (package-name package)) > (version (package-version package)) > (output (or output (car (package-outputs package)))) > (item package) > (dependencies (delete-duplicates deps)) > (search-paths (package-native-search-paths package))))) > > To get all the required search paths recursively we should replace the > last 'manifest-entry' slot with a call to a function like this: Right. Here’s a variant of what you propose. With that, I get: --8<---------------cut here---------------start------------->8--- $ ./pre-inst-env guix package -i python2-matplotlib -p foo [...] The following environment variable definitions may be needed: export PATH="foo/bin:foo/sbin" export PYTHONPATH="foo/lib/python2.7/site-packages" export GI_TYPELIB_PATH="foo/lib/girepository-1.0" export XDG_DATA_DIRS="foo/share" export GIO_EXTRA_MODULES="foo/lib/gio/modules" --8<---------------cut here---------------end--------------->8--- … which is what we’re expecting, right? If that’s fine with you, I’ll commit this patch along with test cases. Thanks! Ludo’. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: Type: text/x-patch, Size: 1771 bytes --] diff --git a/guix/packages.scm b/guix/packages.scm index 68fb091..7222337 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -89,6 +89,7 @@ package-transitive-target-inputs package-transitive-native-inputs package-transitive-propagated-inputs + package-transitive-native-search-paths package-transitive-supported-systems package-source-derivation package-derivation @@ -632,6 +633,16 @@ for the host system (\"native inputs\"), and not target inputs." recursively." (transitive-inputs (package-propagated-inputs package))) +(define (package-transitive-native-search-paths package) + "Return the list of search paths for PACKAGE and its propagated inputs, +recursively." + (append-map (match-lambda + ((label (? package? p) _ ...) + (package-native-search-paths p)) + (_ + '())) + (package-transitive-propagated-inputs package))) + (define (transitive-input-references alist inputs) "Return a list of (assoc-ref ALIST <label>) for each (<label> <package> . _) in INPUTS and their transitive propagated inputs." diff --git a/guix/profiles.scm b/guix/profiles.scm index ce6b2c4..ce86ff8 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -176,7 +176,7 @@ omitted or #f, use the first output of PACKAGE." (output (or output (car (package-outputs package)))) (item package) (dependencies (delete-duplicates deps)) - (search-paths (package-native-search-paths package))))) + (search-paths (package-transitive-native-search-paths package))))) (define (packages->manifest packages) "Return a list of manifest entries, one for each item listed in PACKAGES. ^ permalink raw reply related [flat|nested] 6+ messages in thread
* bug#22073: Fwd: search-paths and propagated inputs 2015-12-20 12:56 ` Ludovic Courtès @ 2015-12-20 16:52 ` Federico Beffa 2015-12-20 21:35 ` Ludovic Courtès 0 siblings, 1 reply; 6+ messages in thread From: Federico Beffa @ 2015-12-20 16:52 UTC (permalink / raw) To: Ludovic Courtès; +Cc: 22073 On Sun, Dec 20, 2015 at 1:56 PM, Ludovic Courtès <ludo@gnu.org> wrote: >> To get all the required search paths recursively we should replace the >> last 'manifest-entry' slot with a call to a function like this: > > Right. > > Here’s a variant of what you propose. With that, I get: > > --8<---------------cut here---------------start------------->8--- > $ ./pre-inst-env guix package -i python2-matplotlib -p foo > > [...] > > The following environment variable definitions may be needed: > export PATH="foo/bin:foo/sbin" > export PYTHONPATH="foo/lib/python2.7/site-packages" > export GI_TYPELIB_PATH="foo/lib/girepository-1.0" > export XDG_DATA_DIRS="foo/share" > export GIO_EXTRA_MODULES="foo/lib/gio/modules" > --8<---------------cut here---------------end--------------->8--- > > … which is what we’re expecting, right? I think so. > > If that’s fine with you, I’ll commit this patch along with test cases. Sure, thanks for that! Regards, Fede ^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#22073: Fwd: search-paths and propagated inputs 2015-12-20 16:52 ` Federico Beffa @ 2015-12-20 21:35 ` Ludovic Courtès 0 siblings, 0 replies; 6+ messages in thread From: Ludovic Courtès @ 2015-12-20 21:35 UTC (permalink / raw) To: Federico Beffa; +Cc: 22073-done Fixed in ccda8f7, thanks! Ludo’. ^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#22073: Fwd: search-paths and propagated inputs 2015-12-02 8:18 ` bug#22073: Fwd: search-paths and propagated inputs Federico Beffa 2015-12-03 18:54 ` Federico Beffa @ 2015-12-20 11:37 ` Federico Beffa 1 sibling, 0 replies; 6+ messages in thread From: Federico Beffa @ 2015-12-20 11:37 UTC (permalink / raw) To: 22073 Any feedback on this? Thanks, Fede ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-12-20 21:36 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <CAKrPhPNCyeQYGz77g2-Z3rngXaEcUZVe3gTUXrufJDOLTnR9=A@mail.gmail.com> [not found] ` <87egf7l3fz.fsf@mdc-berlin.de> 2015-12-02 8:18 ` bug#22073: Fwd: search-paths and propagated inputs Federico Beffa 2015-12-03 18:54 ` Federico Beffa 2015-12-20 12:56 ` Ludovic Courtès 2015-12-20 16:52 ` Federico Beffa 2015-12-20 21:35 ` Ludovic Courtès 2015-12-20 11:37 ` Federico Beffa
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).