From: Rovanion Luckey <rovanion.luckey@gmail.com>
To: "Léo Le Bouter" <lle-bout@zaclys.net>
Cc: 47435@debbugs.gnu.org, Leo Famulari <leo@famulari.name>
Subject: [bug#47435] gnu: mail: Make the sendmail package actually output its binary
Date: Fri, 9 Apr 2021 21:30:49 +0200 [thread overview]
Message-ID: <CAAaf0CBwaTSOZGSam=WHuJKwPhXd6zVBOvKMe94RKd43HpBjag@mail.gmail.com> (raw)
In-Reply-To: <75974c07f11e9e07061c192fe50c8704e4cb4d1c.camel@zaclys.net>
[-- Attachment #1.1: Type: text/plain, Size: 4272 bytes --]
> On the commit message, the convention is that all titles end with a
> period, also all statements in the subtext also end with a period, and
> that the subtext is wrapped to 80 columns (unless links). Look at other
> commit messages for examples.
>
Should be fixed in the attached patch.
> It seems in your latest patches applied on top of master, the
> 'sendmail' package does not build.
>
This too.
> I noticed it builds as a static library:
>
> /gnu/store/vdg98ynngj637sdn1xazgafb8af8fv2j-libmilter-
> 1.0.1/lib/libmilter.so.: ELF 64-bit LSB shared object, x86-64, version
> 1 (SYSV), statically linked, not stripped
>
> Is there any build flag to disable that? If so, I think we probably
> should, for security updates of it's dependencies, but it doesnt look
> like it has any, not even the glibc? Maybe it's not so important here.
>
I thought the patch I pulled in from Debian made it into a shared library.
It brought it from a .a that pymilter would not build against to a .so that
it would build against. This is the first time I build C libraries for
distribution so I have no idea what I'm doing.
I seem to have misplaced my package definition for pymilter when I rebased
on master so I have to confirm again that this libmilter is actually
usable. There was something about the pymilter tests not running IIRC.
> I also noticed that there was a weird naming for the actual so file, it
> ends with a dot '.':
>
I think something somewhere in the build system wants to add a number after
that dot, but that there was no number available so it just added an empty
string after the dot.
$ tree $(./pre-inst-env guix build libmilter)
> /gnu/store/vdg98ynngj637sdn1xazgafb8af8fv2j-libmilter-1.0.1
> ├── include
> │ └── libmilter
> │ ├── mfapi.h
> │ └── mfdef.h
> ├── lib
> │ ├── libmilter.a
> │ ├── libmilter.so -> libmilter.so. <<-- here
> │ └── libmilter.so. <<-- also here
> └── share
> └── doc
> └── libmilter-1.0.1
> └── LICENSE
>
> 6 directories, 6 files
>
> Again it will work anyways I believe, not crucial.
>
> > +(define-public libmilter
> > + (package
> > + (inherit sendmail)
> > + (name "libmilter")
> > + (version "1.0.1")
>
> Where does this version come from?
I think I just took it from Debian for some reason:
https://packages.debian.org/experimental/libmilter1.0.1
> Are you sure about that?
Hard no on that.
> Also do
> note that changing the version field here in libmilter does not change
> the version used in the origin of the inherited package So it's using
> the same sources as sendmail exactly, that's what you want?
>
Yeah, that is what I intended. I intended to only change the metadata
attached to the libmilter package in the Guix package repository.
> > + (arguments
> > + (substitute-keyword-arguments (package-arguments sendmail)
> > + ((#:phases phases)
> > + `(modify-phases ,phases
> > + (replace 'build
> > + (lambda* _
> > + (with-directory-excursion "libmilter"
> > + (invoke "sh" "Build"))
> > + #t))
> > + (delete 'pre-install)
> > + (replace 'install
> > + (lambda* _
> > + (with-directory-excursion "libmilter"
> > + (mkdir-p (string-append (assoc-ref %outputs "out")
> > "/lib"))
> > + (invoke "make" "install"))
> > + #t))))))
> > + (synopsis "Sendmail library for creating mail filters.")))
> > +
>
> I suggest adding a dedicated synopsis and description here, also
> synopsises as I see it should not be sentences and not end with a
> period, descriptions on the other hand should be full sentences, look
> at the other packages for inspiration.
Added a description and removed the period from the synopsis.
I will keep the website as sendmail.org despite the redirect, the patch
will not start with the filename for libmilter. I do not know what to do
about there being no "updater" for sendmail, but then again the last
release was in 2016.
[-- Attachment #1.2: Type: text/html, Size: 6387 bytes --]
[-- Attachment #2: 0003-gnu-sendmail-Update-to-8.16.1.patch --]
[-- Type: text/x-patch, Size: 1136 bytes --]
From 87d1ede0d39dd952f625de63f39df025a4dddbe8 Mon Sep 17 00:00:00 2001
From: Rovanion Luckey <rovanion.luckey@gmail.com>
Date: Mon, 29 Mar 2021 16:04:41 +0200
Subject: [PATCH 3/3] gnu: sendmail: Update to 8.16.1.
* gnu/packages/mail.scm (sendmail): Update to 8.16.1.
---
gnu/packages/mail.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 0a6e710611..5844c94c90 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -2768,7 +2768,7 @@ powerful user customization features.")
(define-public sendmail
(package
(name "sendmail")
- (version "8.15.2")
+ (version "8.16.1")
(source
(origin
(method url-fetch)
@@ -2777,7 +2777,7 @@ powerful user customization features.")
version ".tar.gz"))
(sha256
(base32
- "0fdl9ndmspqspdlmghzxlaqk56j3yajk52d7jxcg21b7sxglpy94"))
+ "1fk49v63w4lrpw4jjzl495vpi02w633vkd9jbwbqcss39gfdb1kq"))
(patches (search-patches "sendmail-libmilter-shared-library.patch"))))
(build-system gnu-build-system)
(arguments
--
2.30.0
[-- Attachment #3: 0002-gnu-Add-libmilter.patch --]
[-- Type: text/x-patch, Size: 1794 bytes --]
From 812b45c66d04648444a9df3944de8e1e94d32180 Mon Sep 17 00:00:00 2001
From: Rovanion Luckey <rovanion.luckey@gmail.com>
Date: Mon, 29 Mar 2021 15:56:25 +0200
Subject: [PATCH 2/3] gnu: Add libmilter.
* gnu/packages/mail.scm (libmilter): New variable. A Sendmail API library for
building mail filters.
---
gnu/packages/mail.scm | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 8cb548044e..0a6e710611 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -2869,6 +2869,32 @@ transfer protocols.")
(license (license:non-copyleft "file://LICENSE"
"See LICENSE in the distribution."))))
+(define-public libmilter
+ (package
+ (inherit sendmail)
+ (name "libmilter")
+ (version "1.0.1")
+ (arguments
+ (substitute-keyword-arguments (package-arguments sendmail)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (replace 'build
+ (lambda* _
+ (with-directory-excursion "libmilter"
+ (invoke "sh" "Build"))
+ #t))
+ (delete 'pre-install)
+ (replace 'install
+ (lambda* _
+ (with-directory-excursion "libmilter"
+ (mkdir-p (string-append (assoc-ref %outputs "out") "/lib"))
+ (invoke "make" "install"))
+ #t))))))
+ (synopsis "Sendmail library for creating mail filters")
+ (description "The Sendmail Mail Filter API (Milter) is designed to allow
+third-party programs access to mail messages as they are being processed in
+order to filter meta-information(headers) and content.")))
+
(define-public sieve-connect
(package
(name "sieve-connect")
--
2.30.0
[-- Attachment #4: 0001-gnu-sendmail-Fix-output-s-directory-structure.patch --]
[-- Type: text/x-patch, Size: 7371 bytes --]
From 0da70d62ffd2e4c4eef3ba0c069a217f78ed97fe Mon Sep 17 00:00:00 2001
From: Rovanion Luckey <rovanion.luckey@gmail.com>
Date: Sat, 27 Mar 2021 18:28:02 +0100
Subject: [PATCH 1/3] gnu: sendmail: Fix output's directory structure.
* gnu/packages/mail.scm (sendmail)[arguments]<#:phases>: Properly specify
output directories in replacement 'configure and 'pre-> install.
---
gnu/packages/mail.scm | 42 ++++++++++----
.../sendmail-libmilter-shared-library.patch | 56 +++++++++++++++++++
2 files changed, 88 insertions(+), 10 deletions(-)
create mode 100644 gnu/packages/patches/sendmail-libmilter-shared-library.patch
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 56fae3fcba..8cb548044e 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -2777,7 +2777,8 @@ powerful user customization features.")
version ".tar.gz"))
(sha256
(base32
- "0fdl9ndmspqspdlmghzxlaqk56j3yajk52d7jxcg21b7sxglpy94"))))
+ "0fdl9ndmspqspdlmghzxlaqk56j3yajk52d7jxcg21b7sxglpy94"))
+ (patches (search-patches "sendmail-libmilter-shared-library.patch"))))
(build-system gnu-build-system)
(arguments
`(#:phases
@@ -2796,23 +2797,44 @@ powerful user customization features.")
(("SHELL=/bin/sh") (string-append "SHELL=" (which "sh"))))
#t))
(replace 'configure
- (lambda _
+ (lambda* (#:key outputs #:allow-other-keys)
;; Render harmless any attempts to chown or chgrp
(substitute* "devtools/bin/install.sh"
(("owner=\\$2") "owner=''")
(("group=\\$2") "group=''"))
- (with-output-to-file "devtools/Site/site.config.m4"
- (lambda ()
- (format #t "
+ (let ((out (assoc-ref outputs "out")))
+ (with-output-to-file "devtools/Site/site.config.m4"
+ (lambda ()
+ ;; See 'devtools/M4/UNIX/defines.m4' for the list of
+ ;; installation directories.
+ (format #t "
define(`confCC', `gcc')
+define(`confAR', `ar')
+define(`confCCOPTS', `-fPIC')
define(`confOPTIMIZE', `-g -O2')
define(`confLIBS', `-lresolv')
define(`confINSTALL', `~a/devtools/bin/install.sh')
define(`confDEPEND_TYPE', `CC-M')
define(`confINST_DEP', `')
-" (getcwd))))
+
+define(`confLIBDIR', `~a/lib/')
+define(`confINCLUDEDIR', `~a/include')
+define(`confHFDIR', `~a/etc/mail')
+define(`confSTDIR', `~a/etc/mail')
+define(`confMBINDIR', `~a/sbin')
+define(`confUBINDIR', `~a/bin')
+define(`confSBINDIR', `~a/sbin')
+define(`confEBINDIR', `~a/libexec')
+define(`confMANROOT', `~a/share/man')~%"
+ (getcwd)
+ out out out out out out out out out))))
+ (substitute* "cf/cf/Makefile"
+ (("^MAILDIR=.*")
+ (string-append "MAILDIR = "
+ (assoc-ref outputs "out")
+ "/etc/mail\n")))
#t))
(replace 'build
(lambda _
@@ -2824,17 +2846,17 @@ define(`confINST_DEP', `')
(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 "/bin"))
+ (mkdir-p (string-append out "/sbin"))
(mkdir-p (string-append out "/etc/mail"))
- (setenv "DESTDIR" out)
+ (mkdir-p (string-append out "/var/spool/mail"))
(with-directory-excursion "cf/cf"
(invoke "sh" "Build" "install-cf"))
#t))))
;; There is no make check. There are some post installation tests, but those
;; require root privileges
#:tests? #f))
- (inputs
+ (native-inputs
`(("m4" ,m4)
("perl" ,perl)))
(home-page "http://sendmail.org")
diff --git a/gnu/packages/patches/sendmail-libmilter-shared-library.patch b/gnu/packages/patches/sendmail-libmilter-shared-library.patch
new file mode 100644
index 0000000000..1e256c59ec
--- /dev/null
+++ b/gnu/packages/patches/sendmail-libmilter-shared-library.patch
@@ -0,0 +1,56 @@
+diff -Nru sendmail-8.14.3.orig/devtools/M4/UNIX/milterlibrary.m4 sendmail-8.14.3/devtools/M4/UNIX/milterlibrary.m4
+--- sendmail-8.14.3.orig/devtools/M4/UNIX/milterlibrary.m4 1970-01-01 01:00:00.000000000 +0100
++++ sendmail-8.14.3/devtools/M4/UNIX/milterlibrary.m4 2009-08-22 21:51:10.000000000 +0200
+@@ -0,0 +1,39 @@
++divert(-1)
++#
++# Copyright (c) 1999-2001 Sendmail, Inc. and its suppliers.
++# All rights reserved.
++#
++# By using this file, you agree to the terms and conditions set
++# forth in the LICENSE file which can be found at the top level of
++# the sendmail distribution.
++#
++#
++# Definitions for Makefile construction for sendmail
++#
++divert(0)dnl
++include(confBUILDTOOLSDIR`/M4/'bldM4_TYPE_DIR`/links.m4')dnl
++define(`confSOEXT', ifdef(`confSOEXT', `confSOEXT', `so'))dnl
++bldLIST_PUSH_ITEM(`bldC_PRODUCTS', bldCURRENT_PRODUCT)dnl
++bldPUSH_TARGET(bldCURRENT_PRODUCT`.'confSOEXT bldCURRENT_PRODUCT`.a')dnl
++bldPUSH_INSTALL_TARGET(`install-'bldCURRENT_PRODUCT)dnl
++bldPUSH_CLEAN_TARGET(bldCURRENT_PRODUCT`-clean')dnl
++
++include(confBUILDTOOLSDIR`/M4/'bldM4_TYPE_DIR`/defines.m4')
++divert(bldTARGETS_SECTION)
++bldCURRENT_PRODUCT`.'confSOEXT: ${BEFORE} ${bldCURRENT_PRODUCT`OBJS'}
++ ${CCLINK} ${LDOPTS_SO} -o bldCURRENT_PRODUCT.confSOEXT ifdef(`confSONAME',`-Wl,confSONAME,bldCURRENT_PRODUCT.confSOEXT.${MILTER_SOVER}') ${bldCURRENT_PRODUCT`OBJS'} -lc ${LIBS}
++bldCURRENT_PRODUCT.a: ${BEFORE} ${bldCURRENT_PRODUCT`OBJS'}
++ ${AR} ${AROPTS} bldCURRENT_PRODUCT.a ${bldCURRENT_PRODUCT`OBJS'}
++ ${RANLIB} ${RANLIBOPTS} bldCURRENT_PRODUCT.a
++ifdef(`bldLINK_SOURCES', `bldMAKE_SOURCE_LINKS(bldLINK_SOURCES)')
++
++install-`'bldCURRENT_PRODUCT: bldCURRENT_PRODUCT.confSOEXT bldCURRENT_PRODUCT.a
++ifdef(`bldINSTALLABLE', ` ifdef(`confMKDIR', `if [ ! -d "${DESTDIR}${bldINSTALL_DIR`'LIBDIR}" ]; then confMKDIR -p "${DESTDIR}${bldINSTALL_DIR`'LIBDIR}"; else :; fi ')
++ ${INSTALL} -c bldCURRENT_PRODUCT.confSOEXT "${DESTDIR}${LIBDIR}/bldCURRENT_PRODUCT.confSOEXT.${MILTER_SOVER}"
++ ${LN} ${LNOPTS} bldCURRENT_PRODUCT.confSOEXT.${MILTER_SOVER} "${DESTDIR}${LIBDIR}/bldCURRENT_PRODUCT.confSOEXT"
++ ${INSTALL} -c -m 644 bldCURRENT_PRODUCT.a "${DESTDIR}${LIBDIR}"')
++
++bldCURRENT_PRODUCT-clean:
++ rm -f ${OBJS} bldCURRENT_PRODUCT.confSOEXT bldCURRENT_PRODUCT.a ${MANPAGES}
++
++divert(0)
++COPTS+= confCCOPTS_SO
+diff -Nru sendmail-8.14.3.orig/libmilter/Makefile.m4 sendmail-8.14.3/libmilter/Makefile.m4
+--- sendmail-8.14.3.orig/libmilter/Makefile.m4 2008-04-08 07:23:44.000000000 +0200
++++ sendmail-8.14.3/libmilter/Makefile.m4 2009-08-22 21:53:35.000000000 +0200
+@@ -9,7 +9,7 @@
+ SMSRCDIR=ifdef(`confSMSRCDIR', `confSMSRCDIR', `${SRCDIR}/sendmail')
+ PREPENDDEF(`confINCDIRS', `-I${SMSRCDIR} ')
+
+-bldPRODUCT_START(`library', `libmilter')
++bldPRODUCT_START(`milterlibrary', `libmilter')
+ define(`bldINSTALLABLE', `true')
+ define(`LIBMILTER_EXTRAS', `errstring.c strl.c')
+ APPENDDEF(`confENVDEF', `-DNOT_SENDMAIL -Dsm_snprintf=snprintf')
--
2.30.0
prev parent reply other threads:[~2021-04-09 19:34 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-27 17:34 [bug#47435] gnu: mail: Make the sendmail package actually output its binary Rovanion Luckey
2021-03-27 18:07 ` Léo Le Bouter via Guix-patches via
2021-03-27 18:22 ` Leo Famulari
2021-03-28 11:57 ` Rovanion Luckey
2021-03-29 14:24 ` Rovanion Luckey
2021-03-30 2:05 ` Léo Le Bouter via Guix-patches via
2021-03-30 2:13 ` Léo Le Bouter via Guix-patches via
2021-04-09 19:30 ` Rovanion Luckey [this message]
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='CAAaf0CBwaTSOZGSam=WHuJKwPhXd6zVBOvKMe94RKd43HpBjag@mail.gmail.com' \
--to=rovanion.luckey@gmail.com \
--cc=47435@debbugs.gnu.org \
--cc=leo@famulari.name \
--cc=lle-bout@zaclys.net \
/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).