guix-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] gnu: Add sendmail


From: John Darrington
Subject: Re: [PATCH] gnu: Add sendmail
Date: Sat, 17 Sep 2016 10:50:35 +0200
User-agent: Mutt/1.5.23 (2014-03-12)

On Sat, Sep 17, 2016 at 12:51:20PM +0800, Alex Vong wrote:
     Hello,
     
     Thanks for the patch. I do not know how to set up a mail server, so I
     can only comment on generic things. You will have to wait for sysadmin
     to help :)
     
     John Darrington <address@hidden> writes:
     
     > * gnu/packages/mail.scm (sendmail): New variable.
     > ---
     >  gnu/packages/mail.scm | 80 
+++++++++++++++++++++++++++++++++++++++++++++++++++
     >  1 file changed, 80 insertions(+)
     >
     > diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
     > index e344683..aff6a2c 100644
     > --- a/gnu/packages/mail.scm
     > +++ b/gnu/packages/mail.scm
     > @@ -1410,3 +1410,83 @@ provides HTML mail archiving with index, mail 
thread linking,
     >  etc; plus other capabilities including support for MIME and
     >  powerful user customization features.")
     >      (license gpl2+)))
     > +
     > +
     > +(define-public sendmail
     > +  (package
     > +    (name "sendmail")
     > +    (version "8.15.2")
     > +    (source
     > +     (origin
     > +       (method url-fetch)
     > +       (uri (string-append
     > +             "ftp://ftp.sendmail.org/pub/sendmail/sendmail.";
     > +             version ".tar.gz"))
     > +       (sha256
     > +        (base32
     > +         "0fdl9ndmspqspdlmghzxlaqk56j3yajk52d7jxcg21b7sxglpy94"))))
     > +    (build-system gnu-build-system)
     > +    (arguments
     > +     `(#:tests? #f  ; There are no tests
     There is a test/ directory in the tarball which needs seperate
     compilation. The readme in the test/ directory says the test needs root
     privilege, but this is not a problem, since the build daemon has root
     privilege.

They need more than that.  They need the binary to be installed setuid.  So 
these
cannot be run as package tests.  They must be tested after the 
as-yet-to-be-written
service is installed.  But I'll update the comment to make it more clear.
     
     > +       #:phases
     > +       (modify-phases %standard-phases
     > +         (add-before 'build 'replace-/bin/sh
     > +           (lambda _
     > +             (substitute*
     > +                 (append
     > +                  (list "smrsh/smrsh.c" "sendmail/conf.c" 
"contrib/mailprio"
     > +                        "contrib/mmuegel" "devtools/bin/configure.sh")
     > +                  (find-files "." ".*\\.m4")
     > +                  (find-files "." ".*\\.cf"))
     I think this can be simplified to:
     `("smrsh/smrsh.c" "sendmail/conf.c"
        "contrib/mailprio" "contrib/mmuegel"
        "devtools/bin/configure.sh"
        .@(find-files "." ".*\\.m4")
        ,@(find-files "." ".*\\.cf"))
     using the quasi-quote quasi-unquote-splicing notation, which is similar
     to string interpolation in shell "foo bar $(CAR) $(TAR)".

Is that simpler?  It has more characters?
     
     > +                        "contrib/mmuegel" "devtools/bin/configure.sh")
     > +               (("/bin/sh") (which "bash")))
     > +
     > +             (substitute* "devtools/bin/Build"
     > +               (("SHELL=/bin/sh") (string-append "SHELL=" (which 
"bash"))))
     > +             #t))
     I think the `#t' is not neccessary here, since `substitute*' uses
     `substitute', which will either return #t or throw an exception.

WTF??   Didn't you complain earlier this week when I *didn't* put #t in exactly 
this
scenario??
     
     > +         (replace 'configure
     > +           (lambda _
     > +
     > +             ;; Render harmless any attempts to chown or chmod
     > +             (substitute* "devtools/bin/install.sh"
     > +               (("owner=\\$2") "owner=''")
     > +               (("group=\\$2") "group=''"))
     > +
     > +             (with-output-to-file "devtools/Site/site.config.m4"
     > +               (lambda ()
     > +                 (format #t "
     > +define(`confCC', `gcc')
     > +define(`confOPTIMIZE', `-g -O2')
     > +define(`confLIBS', `-lresolv')
     > +define(`confINSTALL', `~a/devtools/bin/install.sh')
     > +define(`confDEPEND_TYPE', `CC-M')
     > +define(`confINST_DEP', `')
     > +" (getcwd))))))
     > +         (replace 'build
     > +           (lambda _
     > +             (system* "sh" "Build")
     I think there is a missing `zero?' here.


Would that make any difference? Since only the last expression would get 
returned from lambda ?
     
     > +             (with-directory-excursion "cf/cf"
     > +               (begin
     > +                 (copy-file "generic-linux.mc" "sendmail.mc")
     > +                 (zero? (system* "sh" "Build" "sendmail.cf"))))))
     > +         (add-before 'install 'pre-install
     > +           (lambda _
     > +             (let ((out (assoc-ref %outputs "out")))
     > +               (mkdir-p (string-append out "/usr/bin"))
     > +               (mkdir-p (string-append out "/usr/sbin"))
     > +               (mkdir-p (string-append out "/etc/mail"))
     > +               (setenv "DESTDIR" out)
     > +               (with-directory-excursion "cf/cf"
     > +                 (zero? (system* "sh" "Build" "install-cf")))))))))
     > +    (inputs
     > +     `(("m4" ,m4)
     > +       ("perl" ,perl)))
     > +    (home-page "http://sendmail.org";)
     > +    (synopsis
     > +     "Highly configurable Mail Transfer Agent (MTA)")
     > +    (description
     > +     "Sendmail is a mail transfer agent (MTA) originally developed by 
Eric
     > +Allman.  It is highly configurable and supports many delivery methods 
and many
     > +transfer protocols.")
     > +    (license (non-copyleft "file://LICENSE"
     > +                           "See LICENSE in the distribution."))))
     > +
     
     Thanks,
     Alex

-- 
Avoid eavesdropping.  Send strong encrypted email.
PGP Public key ID: 1024D/2DE827B3 
fingerprint = 8797 A26D 0854 2EAB 0285  A290 8A67 719C 2DE8 27B3
See http://sks-keyservers.net or any PGP keyserver for public key.

Attachment: signature.asc
Description: Digital signature


reply via email to

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