guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: profile-collisions linter


From: Christopher Baines
Subject: Re: profile-collisions linter
Date: Tue, 29 Dec 2020 22:36:38 +0000
User-agent: mu4e 1.4.13; emacs 27.1

Vincent Legoll <vincent.legoll@gmail.com> writes:

> I'm having a look at the reported profile-collisions
> linter warnings.
>
> See for example:
> http://data.guix.gnu.org/revision/f521104e344ed9bf259a6b821fd0f3080f8ebf6b/package/python-requests/2.20.1?locale=en_US.UTF-8
>
> I'm trying to remove the duplicated propagated-inputs
> entries (from the inherited package) and then
> concatenating the overrides.
>
> I've come with the attached diff, but it's giving me
> headaches.
>
> Anyone can give it a look and tell me what is wrong
> with my coding ?

It's good to fix lint warnings, although I wonder if these could be
addressed by checking if this old version of python-requests is still
necessary to use. Maybe things that use it could be updated, and use the
normal version?

On your code though, I made the following changes to make run at least:

@@ -2455,9 +2455,11 @@ than Python’s urllib2 library.")
     (license license:asl2.0)))
 
 (define (propagated-inputs-filtered overrides old_inputs)
-  (let* ((overrides_names (map caar overrides))
-         (old_inputs_filtered (remove (lambda i (member (caar i) 
overrides_names) old_inputs))))
-    (concatenate '(old_inputs_filtered overrides))))
+  (let* ((overrides_names (map car overrides))
+         (old_inputs_filtered
+          (remove (lambda i (member (caar i) overrides_names))
+                  old_inputs)))
+    (append old_inputs_filtered overrides)))
 
 ;; Some software requires an older version of Requests, notably Docker/Docker
 ;; Compose.
@@ -2471,10 +2473,10 @@ than Python’s urllib2 library.")
                       (base32
                        
"0qzj6cgv3k9wyj7wlxgz7xq0cfg4jbbkfm24pp8dnhczwl31527a"))))
            (propagated-inputs
-             `,@(propagated-inputs-filtered
-               `(("python-urllib3" ,python-urllib3-1.24)
-                 ("python-idna" ,python-idna-2.7))
-               (package-propagated-inputs python-requests)))))
+            (propagated-inputs-filtered
+             `(("python-urllib3" ,python-urllib3-1.24)
+               ("python-idna" ,python-idna-2.7))
+             (package-propagated-inputs python-requests)))))
 
 (define-public python2-requests
   (package-with-python2 python-requests))


Applying your diff, and running make, I see:

  gnu/packages/python-web.scm:2459:30: warning: possibly wrong number of 
arguments to `remove'

It's correct, avoiding long lines might help you spot things like this.

caar needs to be car, that'll access the first element in a list. caar
would only work if the list contains a pair/list as the first element.

Because you wrote (concatenate '(old_inputs_filtered overrides)), note
the ', you're trying to concatenate a list of two symbols. The following
would work (concatenate `(,old_inputs_filtered ,overrides)), but you're
better just using append.

Anyway, I don't think having code is useful here. I'd just copy the two
lines from the above package definition and replace
,@(package-propagated-inputs python-requests). This package definition
doesn't need to dynamically change, so that's fine, and the duplication
is simpler than this code.

Note also that the old urllib3 is built with the normal idna version, so
you'll probably need to do something about that to resolve all of the
propagated-input warnings.

Hope that helps,

Chris

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]