From: Alex Vong <alexvong1995@gmail.com>
To: John Darrington <john@darrington.wattle.id.au>
Cc: guix-devel@gnu.org, John Darrington <jmd@gnu.org>
Subject: Re: [PATCH] gnu: Add sendmail
Date: Sat, 17 Sep 2016 17:38:26 +0800 [thread overview]
Message-ID: <87d1k2c1d9.fsf@gmail.com> (raw)
In-Reply-To: <20160917085035.GA23691@jocasta.intra> (John Darrington's message of "Sat, 17 Sep 2016 10:50:35 +0200")
Hi,
John Darrington <john@darrington.wattle.id.au> writes:
> 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.
>
I see, so this is a circular dependency problem here. The service
depends on this package, but the test depends on the service. Am I
right?
> > + #: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?
>
Hmmm, it is more of a style thing. You can ask how others think about
it.
> > + "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??
>
Yes, I am a different Alex :)
Also, it seems we are not being consistent here, sometimes we put `#t'
after `substitute*', sometimes we don't. Anyone has an idea?
> > + (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 ?
>
You are right. The following should chain things up correctly:
(and (zero? (system* "sh" "Build"))
(with-directory-excursion "cf/cf"
(begin
(copy-file "generic-linux.mc" "sendmail.mc")
(zero? (system* "sh" "Build" "sendmail.cf")))))
> > + (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
next prev parent reply other threads:[~2016-09-17 9:39 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-16 16:21 [PATCH] gnu: Add sendmail John Darrington
2016-09-17 4:51 ` Alex Vong
2016-09-17 8:50 ` John Darrington
2016-09-17 9:03 ` John Darrington
2016-09-17 9:38 ` Alex Vong [this message]
2016-09-17 10:11 ` John Darrington
2016-09-18 19:14 ` Alex Kost
2016-09-24 8:22 ` Alex Vong
2016-09-24 17:50 ` Alex Kost
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87d1k2c1d9.fsf@gmail.com \
--to=alexvong1995@gmail.com \
--cc=guix-devel@gnu.org \
--cc=jmd@gnu.org \
--cc=john@darrington.wattle.id.au \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).