From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Vong Subject: Re: [PATCH] gnu: Add sendmail Date: Sat, 17 Sep 2016 12:51:20 +0800 Message-ID: <87d1k3t9h3.fsf@gmail.com> References: <1474042893-9690-1-git-send-email-jmd@gnu.org> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:52424) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bl7c8-0004sr-4a for guix-devel@gnu.org; Sat, 17 Sep 2016 00:52:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bl7c4-0000ue-AJ for guix-devel@gnu.org; Sat, 17 Sep 2016 00:52:31 -0400 In-Reply-To: <1474042893-9690-1-git-send-email-jmd@gnu.org> (John Darrington's message of "Fri, 16 Sep 2016 18:21:33 +0200") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: John Darrington Cc: guix-devel@gnu.org 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 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. > + #: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)". > + "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. > + (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. > + (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