guix-patches
[Top][All Lists]
Advanced

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

[bug#47495] [PATCH] gnu: vsftpd: Use CentOS version and patches.


From: david larsson
Subject: [bug#47495] [PATCH] gnu: vsftpd: Use CentOS version and patches.
Date: Tue, 30 Mar 2021 20:38:58 +0200

On 2021-03-30 17:32, Tobias Geerinckx-Rice wrote:

As indicated on IRC I've made some changes to the patch, mainly to
avoid hard-coding all patches.  The result is attached.  Let me know
what you think.

It looks great! Especially nice to see that you separated the patch and unpack phases - it looks much better now.


* gnu/packages/ftp.scm (vftpd): Use CentOS version and patches.
  ^^^^

This is what happens when you copy commit messages from git and paste
them right back in :-)  In that case, remove the four leading spaces.

Yep, thats what I did :-) will fix next time!

Reg. why to use the significantly patched CentOS variant (asked in your updated patch's comments): the email passwords thing was a mistake to mention by me in IRC - that feature was probably already there - however, the tlsv1.2 was the main reason for switching to the CentOS version - other features added by the whole patch-set I don't know much about except from glancing over them and it looks mostly like bug and security fixes to me.


+  (let ((version "3.0.3")

I renamed this to UPSTREAM-VERSION, so we can show a more specific
VERSION field in the Guix UI.  What we offer isn't ‘3.0.3’ any more.

Ok, I think I understand.

+        (revision "32")

I subjectively added ‘.el8’ here, mainly to factor it out below.
Neither of us knows what it means, though...

That is fine with me.


+           (add-after 'unpack 'patch-installation-directory
+             (lambda* (#:key outputs #:allow-other-keys)
+               (substitute* "Makefile"
+                 (("/usr") (assoc-ref outputs "out")))
+               #t))

Moved below the redefined 'unpack phase for clarity.

Great! I had in mind to do the same myself, but didn't due to a combination of a lack of Guile/Guix coding skills and time.

+           (replace 'unpack
+             (lambda* (#:key source #:allow-other-keys)
+                 (let ((version "3.0.3")
+                       (revision "32")
+                       (centos-version "8.3.2011"))

OK, so, as mentioned on IRC this can be avoided by quasiquoting
<arguments> (as it already was, here) and using ,version instead.

Quoting is probably the most confusing-yet-basic concept in Scheme.

Looks good to me! I am actually quite familiar with unquoting, including g-exp unquoting things, and I somehow missed that I was in a quasiquote context from after "arguments"... I intend to improve!


+
+ (invoke "7z" "e" source (string-append "-o" "./vsftpd-"
+ version "-"
+ revision ".el8.src.cpio"))
+                   (chdir (string-append "./vsftpd-" version "-"
+                                         revision ".el8.src.cpio"))
+ (invoke "cpio" "-idmv" (string-append "--file=./vsftpd-"
+ version "-"
+ revision ".el8.src.cpio"))
+ (invoke "tar" "xvf" (string-append "./vsftpd-" version ".tar.gz"))

This dance had a few steps too many IMO, so I simplified it.  It's OK
to keep the unpacked steps around during the (short) build process;
they are tiny by today's standards.

Agreed. I was not very happy with this myself. Thanks for fixing!


+                   (let ((patches

I understand the reason for this: the patches need to be applied in
this order, or patching will appear to succeed but result in
unbuildable source.  A simple FIND-FILES is right out.

However, since the order is specified in vsftpd.spec, it's safer,
shorter, and simply more fun to parse it ourselves.

+                     (chdir (string-append "./vsftpd-" version))
+                     (invoke "git" "init" ".")
+ (invoke "git" "config" "user.email" "you@example.com")
+                     (invoke "git" "config" "user.name" "Your Name" )
+                     (invoke "git" "add" ".")
+                     (invoke "git" "commit" "-m" "first")
+ (map (lambda (x) (invoke "git" "am" (string-append "./" x))) patches) + (map (lambda (x) (invoke "rm" (string-append "./" x))) patches)
+                     (invoke "rm" "-rf" "./.git")
+                     (chdir "../")
+ (invoke "mv" (string-append "./vsftpd-" version) "../")
+                     (chdir "../")
+ (invoke "rm" "-rf" (string-append "./vsftpd-" version "-" + revision ".el8.src.cpio"))
+                     (chdir (string-append "./vsftpd-" version)))

You lost me here.  Why all the git?  I removed all mention of git from
the package, since it didn't seem necessary, but please correct me if
needful.

I am, or was, simply unfamiliar with the simplicity of just using "patch". I tried git am which failed and reported errors that was solved by the additional git commands. Your replacement is exactly what I need to learn more about, and looks great, thanks!


+      (native-inputs `(("openssl" ,openssl)
+                       ("linux-pam" ,linux-pam)
+                       ("p7zip" ,p7zip)
+                       ("cpio" ,cpio)
+                       ("git" ,git-minimal)
+                       ("libcap" ,libcap)))

These are *all* new, correct?  I removed git and added them all to the
commit message (check it out).

Yep!


Thanks again for your work!

T G-R

Well..., thank you for your work! You made this patch a lot better! :-)

Best regards,
David Larsson





reply via email to

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