From: Joe MacDonald <joe@deserted.net>
To: openembedded-devel@lists.openembedded.org
Subject: Re: [meta-networking][PATCH] postfix: add new recipe
Date: Sun, 20 Jul 2014 23:56:57 -0400 [thread overview]
Message-ID: <20140721035656.GD11616@deserted.net> (raw)
In-Reply-To: <1405304835-17224-1-git-send-email-jackie.huang@windriver.com>
[-- Attachment #1: Type: text/plain, Size: 28607 bytes --]
Merged, thanks Jackie.
-J.
[[oe] [meta-networking][PATCH] postfix: add new recipe] On 14.07.13 (Sun 22:27) jackie.huang@windriver.com wrote:
> From: Jackie Huang <jackie.huang@windriver.com>
>
> Postfix is Wietse Venema's mail server that started life at IBM
> research as an alternative to the widely-used Sendmail program.
>
> Postfix attempts to be fast, easy to administer, and secure.
> The outside has a definite Sendmail-ish flavor, but the inside
> is completely different.
>
> Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
> ---
> .../recipes-daemons/postfix/files/install.patch | 66 ++++++
> .../postfix/files/internal_recipient | 1 +
> .../recipes-daemons/postfix/files/main.cf_2.0 | 102 +++++++++
> .../recipes-daemons/postfix/files/makedefs.patch | 116 +++++++++++
> .../recipes-daemons/postfix/files/postfix | 85 ++++++++
> .../postfix/files/postfix-add-db6-support.patch | 26 +++
> .../recipes-daemons/postfix/files/postfix.service | 14 ++
> .../recipes-daemons/postfix/postfix.inc | 230 +++++++++++++++++++++
> .../recipes-daemons/postfix/postfix_2.11.1.bb | 6 +
> 9 files changed, 646 insertions(+)
> create mode 100644 meta-networking/recipes-daemons/postfix/files/install.patch
> create mode 100644 meta-networking/recipes-daemons/postfix/files/internal_recipient
> create mode 100644 meta-networking/recipes-daemons/postfix/files/main.cf_2.0
> create mode 100644 meta-networking/recipes-daemons/postfix/files/makedefs.patch
> create mode 100755 meta-networking/recipes-daemons/postfix/files/postfix
> create mode 100644 meta-networking/recipes-daemons/postfix/files/postfix-add-db6-support.patch
> create mode 100644 meta-networking/recipes-daemons/postfix/files/postfix.service
> create mode 100644 meta-networking/recipes-daemons/postfix/postfix.inc
> create mode 100644 meta-networking/recipes-daemons/postfix/postfix_2.11.1.bb
>
> diff --git a/meta-networking/recipes-daemons/postfix/files/install.patch b/meta-networking/recipes-daemons/postfix/files/install.patch
> new file mode 100644
> index 0000000..a3fe089
> --- /dev/null
> +++ b/meta-networking/recipes-daemons/postfix/files/install.patch
> @@ -0,0 +1,66 @@
> +Change fixed postconf to a variable for cross-compiling
> +
> +Upstreamstatus: Inappropriate [embedded specific]
> +
> +Signed-off-by: Yao Zhao <yao.zhao@windriver.com>
> +---
> +diff --git a/postfix-install b/postfix-install
> +index 49225ac..2e4c292 100644
> +--- a/postfix-install
> ++++ b/postfix-install
> +@@ -201,8 +201,8 @@ test -z "$non_interactive" -a ! -t 0 && {
> + exit 1
> + }
> +
> +-test -x bin/postconf || {
> +- echo $0: Error: no bin/postconf file. Did you forget to run \"make\"? 1>&2
> ++test -x "$POSTCONF" || {
> ++ echo $0: Error: no $POSTCONF file. Did you forget to run \"make\"? 1>&2
> + exit 1
> + }
> +
> +@@ -363,7 +363,7 @@ HTML files. Specify \"no\" if you do not want to install these files."
> +
> + : ${install_root=/}
> + : ${tempdir=`pwd`}
> +-: ${config_directory=`bin/postconf -c conf -h -d config_directory`}
> ++: ${config_directory=`$POSTCONF -c conf -h -d config_directory`}
> +
> + # Find out the location of installed configuration files.
> +
> +@@ -433,7 +433,7 @@ test -f $CONFIG_DIRECTORY/main.cf && {
> + case "$junk" in
> + "") eval unset $name;;
> + esac
> +- eval : \${$name=\`bin/postconf -c $CONFIG_DIRECTORY -h $name\`} ||
> ++ eval : \${$name=\`$POSTCONF -c $CONFIG_DIRECTORY -h $name\`} ||
> + exit 1
> + done
> + }
> +@@ -446,7 +446,7 @@ do
> + case "$junk" in
> + "") eval unset $name;;
> + esac
> +- eval : \${$name=\`bin/postconf -c conf -d -h $name\`} || exit 1
> ++ eval : \${$name=\`$POSTCONF -c conf -d -h $name\`} || exit 1
> + done
> +
> + # Override settings manually.
> +@@ -565,6 +565,8 @@ HTML_DIRECTORY=$install_root$html_directory
> + MANPAGE_DIRECTORY=$install_root$manpage_directory
> + README_DIRECTORY=$install_root$readme_directory
> +
> ++test "x$POSTCONF" != "x" || POSTCONF="bin/postconf"
> ++
> + # Avoid repeated tests for existence of these; default permissions suffice.
> +
> + test -d $DAEMON_DIRECTORY || mkdir -p $DAEMON_DIRECTORY || exit 1
> +@@ -724,7 +726,7 @@ do
> + # Postfix releases, and software should not suddenly be installed in
> + # the wrong place when Postfix is being upgraded.
> +
> +-bin/postconf -c $CONFIG_DIRECTORY -e \
> ++"$POSTCONF" -c $CONFIG_DIRECTORY -e \
> + "daemon_directory = $daemon_directory" \
> + "data_directory = $data_directory" \
> + "command_directory = $command_directory" \
> diff --git a/meta-networking/recipes-daemons/postfix/files/internal_recipient b/meta-networking/recipes-daemons/postfix/files/internal_recipient
> new file mode 100644
> index 0000000..6a8f268
> --- /dev/null
> +++ b/meta-networking/recipes-daemons/postfix/files/internal_recipient
> @@ -0,0 +1 @@
> +root@ permit_mynetworks,reject
> diff --git a/meta-networking/recipes-daemons/postfix/files/main.cf_2.0 b/meta-networking/recipes-daemons/postfix/files/main.cf_2.0
> new file mode 100644
> index 0000000..a128faa
> --- /dev/null
> +++ b/meta-networking/recipes-daemons/postfix/files/main.cf_2.0
> @@ -0,0 +1,102 @@
> +# Configure your domain and accounts
> +#mydomain=sample.com
> +#FQDN from gethostname
> +#myhostname =
> +mydomain=localdomain
> +mydestination = $myhostname, localhost.localdomain localhost
> +mynetworks = 127.0.0.1/8
> +inet_interfaces = 127.0.0.1
> +
> +virtual_mailbox_domains = sample.com, other.net
> +virtual_mailbox_maps = hash:/etc/postfix/virtual
> +virtual_alias_maps = hash:/etc/postfix/virtual_alias
> +
> +alias_maps = hash:/etc/aliases
> +
> +# You'll start with the following lines for maildir storage
> +virtual_mailbox_base = /var/spool/vmail
> +virtual_uid_maps = static:`grep vmail /etc/passwd | cut -d ":" -f 3`
> +virtual_gid_maps = static:`grep vmail /etc/passwd | cut -d ":" -f 4`
> +
> +
> +# You'll start with the following lines for IMAP storage
> +#virtual_transport = lmtp:unix:/var/lib/cyrus/socket/lmtp
> +
> +
> +# General stuff here again
> +config_directory = /etc/postfix
> +sample_directory = /etc/postfix
> +queue_directory = /var/spool/postfix
> +mail_spool_directory = /var/spool/mail
> +readme_directory = no
> +command_directory = /usr/sbin
> +daemon_directory = /usr/libexec/postfix
> +mail_owner = postfix
> +setgid_group = postdrop
> +unknown_local_recipient_reject_code = 450
> +mynetworks_style = host
> +debug_peer_level = 2
> +sendmail_path = /usr/sbin/sendmail
> +newaliases_path = /usr/bin/newaliases
> +mailq_path = /usr/bin/mailq
> +
> +smtpd_data_restrictions =
> + permit_mynetworks,
> + reject_unauth_pipelining,
> + permit
> +
> +smtpd_client_restrictions =
> + permit_mynetworks,
> + # reject_unknown_client, # This can cause a lot of false rejects.
> + reject_invalid_hostname,
> + reject_rbl_client list.dsbl.org,
> + reject_rbl_client sbl.spamhaus.org,
> + reject_rbl_client cbl.abuseat.org,
> + reject_rbl_client dul.dnsbl.sorbs.net,
> + permit
> +
> +smtpd_helo_required = yes
> +smtpd_helo_restrictions =
> + permit_mynetworks,
> + reject_unauth_pipelining,
> + # reject_non_fqdn_hostname, # This can cause a lot of false rejects.
> + # reject_unknown_hostname, # This can cause a lot of false rejects.
> + reject_invalid_hostname,
> + permit
> +
> +smtpd_sender_restrictions =
> + permit_mynetworks,
> + reject_non_fqdn_sender,
> + # check_sender_access hash:/etc/postfix/access_domains,
> + reject_unknown_sender_domain,
> + permit
> +
> +smtpd_recipient_restrictions =
> + permit_mynetworks,
> + permit_sasl_authenticated,
> + reject_unauth_destination,
> +
> + # check_recipient_access pcre:/etc/postfix/recipient_checks.pcre,
> + # check_helo_access pcre:/etc/postfix/helo_checks.pcre,
> +
> + # check_client_access hash:/etc/postfix/maps/access_client,
> + # check_client_access hash:/etc/postfix/maps/exceptions_client,
> + # check_helo_access hash:/etc/postfix/maps/access_helo,
> + # check_helo_access hash:/etc/postfix/maps/verify_helo,
> + # check_sender_access hash:/etc/postfix/maps/access_sender,
> + # check_sender_access hash:/etc/postfix/maps/verify_sender,
> + # check_recipient_access hash:/etc/postfix/maps/access_recipient,
> +
> + # reject_multi_recipient_bounce,
> + reject_non_fqdn_recipient,
> + reject_unknown_recipient_domain,
> + # reject_unlisted_recipient,
> + #check_policy_service unix:private/policy,
> +
> + # check_sender_access hash:/etc/postfix/maps/no_verify_sender,
> + # check_sender_access hash:/etc/postfix/access_domains,
> + # reject_unverified_sender,
> + # reject_unverified_recipient
> + check_recipient_access hash:/etc/postfix/internal_recipient
> +
> +disable_vrfy_command = yes
> diff --git a/meta-networking/recipes-daemons/postfix/files/makedefs.patch b/meta-networking/recipes-daemons/postfix/files/makedefs.patch
> new file mode 100644
> index 0000000..32c31b0
> --- /dev/null
> +++ b/meta-networking/recipes-daemons/postfix/files/makedefs.patch
> @@ -0,0 +1,116 @@
> +1)remove RANLIB, SYSLIBS, AR and get them from env.
> +
> +2)reference sysroot when searching header files
> +3)include sysroot path instead of absolute include path
> +for Linux2 and Linux3 systems.
> +4)for non-native build, search STAGING_BASELIBDIR/LIBDIR
> + native build, search host library path for nsl and resolv library
> + which comes from libc
> +
> +Upstreamstatus: Inappropriate [embedded specific]
> +
> +Signed-off-by: Yao Zhao <yao.zhao@windriver.com>
> +---
> + makedefs | 27 +++++++++++----------------
> + 1 files changed, 11 insertions(+), 16 deletions(-)
> +
> +diff --git a/makedefs b/makedefs
> +index dd5f256..e6fb795 100644
> +--- a/makedefs
> ++++ b/makedefs
> +@@ -87,9 +87,6 @@
> +
> + # Defaults for most sane systems
> +
> +-RANLIB=ranlib
> +-SYSLIBS=
> +-AR=ar
> + ARFL=rv
> +
> + # Ugly function to make our error message more visible among the
> +@@ -293,12 +290,12 @@ case "$SYSTEM.$RELEASE" in
> + case "$CCARGS" in
> + *-DNO_DB*) ;;
> + *-DHAS_DB*) ;;
> +- *) if [ -f /usr/include/db.h ]
> ++ *) if [ -f "$BUILD_SYSROOT"/usr/include/db.h ]
> + then
> + : we are all set
> +- elif [ -f /usr/include/db/db.h ]
> ++ elif [ -f "$BUILD_SYSROOT"/usr/include/db/db.h ]
> + then
> +- CCARGS="$CCARGS -I/usr/include/db"
> ++ CCARGS="$CCARGS -I"$BUILD_SYSROOT"/usr/include/db"
> + else
> + # No, we're not going to try db1 db2 db3 etc.
> + # On a properly installed system, Postfix builds
> +@@ -307,12 +304,12 @@ case "$SYSTEM.$RELEASE" in
> + echo "Install the appropriate db*-devel package first." 1>&2
> + exit 1
> + fi
> +- SYSLIBS="-ldb"
> ++ SYSLIBS="$SYSLIBS -ldb"
> + ;;
> + esac
> + for name in nsl resolv $GDBM_LIBS
> + do
> +- for lib in /usr/lib64 /lib64 /usr/lib /lib
> ++ for lib in $BUILD_SYSROOT_NSL_PATH
> + do
> + test -e $lib/lib$name.a -o -e $lib/lib$name.so && {
> + SYSLIBS="$SYSLIBS -l$name"
> +@@ -332,7 +329,7 @@ case "$SYSTEM.$RELEASE" in
> + if [ `expr "X$CCARGS" : "X.*-DNO_EPOLL"` -gt 0 ]
> + then
> + :
> +- elif [ ! -e /usr/include/sys/epoll.h ]
> ++ elif [ ! -e "$BUILD_SYSROOT"/usr/include/sys/epoll.h ]
> + then
> + echo CCARGS="$CCARGS -DNO_EPOLL"
> + else
> +@@ -356,8 +353,6 @@ int main(int argc, char **argv)
> + }
> + EOF
> + ${CC-gcc} -o makedefs.test makedefs.test.c || exit 1
> +- ./makedefs.test 2>/dev/null ||
> +- CCARGS="$CCARGS -DNO_EPOLL"
> + rm -f makedefs.test makedefs.test.[co]
> + fi;;
> + esac
> +@@ -366,12 +361,12 @@ EOF
> + case "$CCARGS" in
> + *-DNO_DB*) ;;
> + *-DHAS_DB*) ;;
> +- *) if [ -f /usr/include/db.h ]
> ++ *) if [ -f "$BUILD_SYSROOT"/usr/include/db.h ]
> + then
> + : we are all set
> +- elif [ -f /usr/include/db/db.h ]
> ++ elif [ -f "$BUILD_SYSROOT"/usr/include/db/db.h ]
> + then
> +- CCARGS="$CCARGS -I/usr/include/db"
> ++ CCARGS="$CCARGS -I"$BUILD_SYSROOT"/usr/include/db"
> + else
> + # On a properly installed system, Postfix builds
> + # by including <db.h> and by linking with -ldb
> +@@ -379,7 +374,7 @@ EOF
> + echo "Install the appropriate db*-devel package first." 1>&2
> + exit 1
> + fi
> +- SYSLIBS="-ldb"
> ++ SYSLIBS="$SYSLIBS -ldb"
> + ;;
> + esac
> + for name in nsl resolv
> +@@ -415,7 +410,7 @@ EOF
> + esac
> + for name in nsl resolv
> + do
> +- for lib in /usr/lib64 /lib64 /usr/lib /lib
> ++ for lib in $BUILD_SYSROOT_NSL_PATH
> + do
> + test -e $lib/lib$name.a -o -e $lib/lib$name.so && {
> + SYSLIBS="$SYSLIBS -l$name"
> +--
> +1.7.1
> +
> diff --git a/meta-networking/recipes-daemons/postfix/files/postfix b/meta-networking/recipes-daemons/postfix/files/postfix
> new file mode 100755
> index 0000000..7bcc816
> --- /dev/null
> +++ b/meta-networking/recipes-daemons/postfix/files/postfix
> @@ -0,0 +1,85 @@
> +#!/bin/sh
> +
> +success() {
> + echo " Successful"
> + exit 0
> +}
> +
> +fail() {
> + echo " Failed"
> + exit 1
> +
> +}
> +
> +check_return () {
> + local ret="$1"
> +
> + if [ "$ret" = "0" ]; then
> + success
> + else
> + fail
> + fi
> +}
> +
> +PIDFile=/var/spool/postfix/pid/master.pid
> +case "$1" in
> +
> + start)
> + echo -n "Starting Postfix..."
> + if [ ! -e /etc/aliases.db ]; then
> + # The alias database is necessary for postfix to work correctly.
> + echo "Creating aliases database ..."
> + newaliases
> + fi
> + if ! postfix status >/dev/null 2>&1; then
> + postfix start
> + check_return $?
> + else
> + success
> + fi
> + ;;
> +
> + stop)
> + echo -n "Stopping Postfix..."
> + if postfix status >/dev/null 2>&1; then
> + postfix stop
> + check_return $?
> + else
> + success
> + fi
> + ;;
> +
> + reload)
> + echo -n "Reloading Postfix..."
> + if postfix status >/dev/null 2>&1; then
> + postfix reload
> + check_return $?
> + else
> + postfix start
> + check_return $?
> + fi
> + ;;
> +
> + restart)
> + $0 stop
> + sleep 1
> + $0 start
> + ;;
> +
> + status)
> + if postfix status >/dev/null 2>&1; then
> + pid=`sed -e 's/\s//g' $PIDFile`
> + echo "The Postfix mail system is running (PID: $pid)"
> + exit 0
> + else
> + echo "The Postfix mail system is not running"
> + exit 1
> + fi
> + ;;
> +
> + *)
> + echo "Usage: $0 {start|stop|status|reload|restart}"
> + exit 1
> + ;;
> +esac
> +
> diff --git a/meta-networking/recipes-daemons/postfix/files/postfix-add-db6-support.patch b/meta-networking/recipes-daemons/postfix/files/postfix-add-db6-support.patch
> new file mode 100644
> index 0000000..e3e28c8
> --- /dev/null
> +++ b/meta-networking/recipes-daemons/postfix/files/postfix-add-db6-support.patch
> @@ -0,0 +1,26 @@
> +Subject: [PATCH] add db6 support db6
> +
> +Upstream-Status: Backport
> +
> +Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
> +---
> + src/util/dict_db.c | 3 ++-
> + 1 files changed, 2 insertions(+), 1 deletions(-)
> +
> +diff --git a/src/util/dict_db.c b/src/util/dict_db.c
> +index 93ee480..f1ae66b 100644
> +--- a/src/util/dict_db.c
> ++++ b/src/util/dict_db.c
> +@@ -693,7 +693,8 @@ static DICT *dict_db_open(const char *class, const char *path, int open_flags,
> + msg_fatal("set DB cache size %d: %m", dict_db_cache_size);
> + if (type == DB_HASH && db->set_h_nelem(db, DICT_DB_NELM) != 0)
> + msg_fatal("set DB hash element count %d: %m", DICT_DB_NELM);
> +-#if DB_VERSION_MAJOR == 5 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 0)
> ++#if DB_VERSION_MAJOR == 6 || DB_VERSION_MAJOR == 5 || \
> ++ (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 0)
> + if ((errno = db->open(db, 0, db_path, 0, type, db_flags, 0644)) != 0)
> + FREE_RETURN(dict_surrogate(class, path, open_flags, dict_flags,
> + "open database %s: %m", db_path));
> +--
> +1.7.1
> +
> diff --git a/meta-networking/recipes-daemons/postfix/files/postfix.service b/meta-networking/recipes-daemons/postfix/files/postfix.service
> new file mode 100644
> index 0000000..6ea9214
> --- /dev/null
> +++ b/meta-networking/recipes-daemons/postfix/files/postfix.service
> @@ -0,0 +1,14 @@
> +[Unit]
> +Description=Postfix Mail Transport Agent
> +After=syslog.target network.target
> +Conflicts=sendmail.service exim.service
> +
> +[Service]
> +Type=forking
> +PIDFile=/var/spool/postfix/pid/master.pid
> +ExecStart=/usr/sbin/postfix start
> +ExecReload=/usr/sbin/postfix reload
> +ExecStop=/usr/sbin/postfix stop
> +
> +[Install]
> +WantedBy=multi-user.target
> diff --git a/meta-networking/recipes-daemons/postfix/postfix.inc b/meta-networking/recipes-daemons/postfix/postfix.inc
> new file mode 100644
> index 0000000..c58787e
> --- /dev/null
> +++ b/meta-networking/recipes-daemons/postfix/postfix.inc
> @@ -0,0 +1,230 @@
> +SUMMARY = "Postfix Mail Transport Agent"
> +DESCRIPTION = "Postfix is Wietse Venema's mail server that started life at \
> +IBM research as an alternative to the widely-used Sendmail program. \
> +Postfix attempts to be fast, easy to administer, and secure. The outsidei \
> +has a definite Sendmail-ish flavor, but the inside is completely different."
> +
> +HOMEPAGE= "http://www.postfix.org"
> +SECTION = "console/network"
> +DEPENDS = "virtual/db libpcre openssl postfix-native \
> + ${@base_contains('DISTRO_FEATURES', 'ldap', 'openldap', '', d)} \
> + ${@base_contains('DISTRO_FEATURES', 'sasl', 'cyrus-sasl', '', d)} \
> +"
> +DEPENDS_virtclass-native = "virtual/db-native openssl-native libpcre-native"
> +
> +LICENSE = "IPL-1.0"
> +LIC_FILES_CHKSUM = "file://LICENSE;md5=64375f37431336ea1b1b3005fe3fa354"
> +
> +SRC_URI = "ftp://ftp.porcupine.org/mirrors/postfix-release/official/postfix-${PV}.tar.gz \
> + file://makedefs.patch \
> + file://install.patch \
> + file://main.cf_2.0 \
> + file://postfix \
> + file://internal_recipient \
> + file://postfix.service \
> + "
> +
> +S = "${WORKDIR}/postfix-${PV}"
> +
> +BBCLASSEXTEND = "native"
> +
> +inherit update-rc.d useradd update-alternatives systemd
> +
> +INITSCRIPT_NAME = "postfix"
> +INITSCRIPT_PARAMS = "start 58 3 4 5 . stop 13 0 1 6 ."
> +USERADD_PACKAGES = "${PN}"
> +USERADD_PARAM_${PN} = \
> +"-d /var/spool/postfix -r -g postfix --shell /bin/false postfix; \
> + -d /var/spool/vmail -r -u 5000 -g vmail --shell /bin/false vmail \
> +"
> +GROUPADD_PARAM_${PN} = "--system postfix;--system postdrop;-g 5000 --system vmail"
> +
> +export SYSLIBS = "${LDFLAGS}"
> +
> +# CCARGS specifies includes, defines
> +# AUXLIBS specifies libraries
> +# Linux2/Linux3 has HAS_DB defined
> +# makedefs will make CC to be CC+CCARGS
> +
> +# ldap support
> +export CCARGS-ldap = "\
> + ${@base_contains('DISTRO_FEATURES', 'ldap', '-DHAS_LDAP', '', d)}"
> +export AUXLIBS-ldap = "\
> + ${@base_contains('DISTRO_FEATURES', 'ldap', '-lldap -llber', '', d)}"
> +
> +# no native openldap
> +export CCARGS-ldap_virtclass-native = ""
> +export AUXLIBS-ldap_virtclass-native = ""
> +
> +# SASL support -DUSE_LDAP_SASL -DUSE_SASL_AUTH
> +# current openldap didn't enable SASL
> +export CCARGS-sasl = "\
> + ${@base_contains('DISTRO_FEATURES', 'sasl', '-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I=/usr/include/sasl', '', d)}"
> +export AUXLIBS-sasl = "\
> + ${@base_contains('DISTRO_FEATURES', 'sasl', '-lsasl2', '', d)}"
> +export CCARGS-sasl_virtclass-native = ""
> +export AUXLIBS-sasl_virtclass-native = ""
> +
> +# PCRE, TLS support default
> +export CCARGS = "${CFLAGS} -DHAS_PCRE -DUSE_TLS ${CCARGS-ldap} ${CCARGS-sasl}"
> +export AUXLIBS = "-lpcre -lssl -lcrypto ${AUXLIBS-sasl} ${AUXLIBS-ldap}"
> +export POSTCONF = "${STAGING_DIR_NATIVE}${sbindir_native}/postconf"
> +
> +# OPT,DEBUG is aready in CFLAGS
> +# ignore the OPTS="CC=$CC" in Makefile it will not use the CC=$CC $CCARGS
> +EXTRA_OEMAKE += "OPT= DEBUG= OPTS= "
> +
> +do_compile () {
> + unset CFLAGS CPPFLAGS CXXFLAGS
> + local native_build
> +
> + native_build="${@['0', '1'][bb.data.inherits_class('native', d) or bb.data.inherits_class('nativesdk', d)]}"
> +
> + # if not native build, then pass SYSTEM and RELEASE to makedefs
> + if [ "${native_build}" != "1" ]; then
> + # uname -s for target
> + SYSTEM="Linux"
> +
> + # uname -r, use 2.6 as bottomline, even target kernel ver > 2.6
> + RELEASE="2.6.34"
> + sed -i -e \
> + "s:\$(SHELL) makedefs):\$(SHELL) makedefs $SYSTEM $RELEASE):" \
> + ${S}/Makefile.in
> + export BUILD_SYSROOT="${STAGING_DIR_HOST}"
> + export BUILD_SYSROOT_NSL_PATH="${STAGING_BASELIBDIR} \
> + ${STAGING_LIBDIR}"
> + else
> + # native build
> + export BUILD_SYSROOT="${STAGING_DIR_NATIVE}"
> +
> + # ubuntu x86 host: /lib/x86_64-linux-gnu(64) /lib/i386-linux-gnu (32)
> + # on 64 bits, 32 libs in i386-linux-gnu
> + # let makedefs finds nsl and resolv libs, host CC will link
> + # the correct libraries
> + BUILD_SYSROOT_NSL_PATH="$(${CC} -print-search-dirs 2>/dev/null | \
> + sed -n '/^libraries: =/s/libraries: =//p' | \
> + sed -e 's/:/\n/g' | xargs -n1 readlink -f | \
> + grep -v 'gcc\|/[0-9.]\+$' | sort -u)"
> + if [ -z "$BUILD_SYSROOT_NSL_PATH" ]; then
> + BUILD_SYSROOT_NSL_PATH="/usr/lib64 /lib64 \
> + /lib/x86_64-linux-gnu \
> + /usr/lib /lib \
> + /lib/i386-linux-gnu"
> + fi
> + export BUILD_SYSROOT_NSL_PATH
> + fi
> +
> + oe_runmake makefiles
> + oe_runmake
> +}
> +
> +do_install_prepend_virtclass-native() {
> + export POSTCONF="bin/postconf"
> +}
> +
> +SYSTEMD_SERVICE_${PN} = "postfix.service"
> +SYSTEMD_AUTO_ENABLE = "disable"
> +
> +do_install () {
> + sh ./postfix-install 'install_root=${D}' \
> + 'config_directory=${sysconfdir}/postfix' \
> + 'daemon_directory=${exec_prefix}/libexec/postfix' \
> + 'command_directory=${sbindir}' \
> + 'queue_directory=${localstatedir}/spool/postfix' \
> + 'sendmail_path=${sbindir}/sendmail.postfix' \
> + 'newaliases_path=${bindir}/newaliases' \
> + 'mailq_path=${bindir}/mailq' \
> + 'manpage_directory=${mandir}' \
> + 'readme_directory=${datadir}/doc/postfix' \
> + 'data_directory=${localstatedir}/lib/postfix' \
> + -non-interactive
> + rm -rf ${D}${localstatedir}/spool/postfix
> + mv ${D}${sysconfdir}/postfix/main.cf ${D}${sysconfdir}/postfix/sample-main.cf
> + install -d ${D}${sysconfdir}/init.d
> + install -m 644 ${WORKDIR}/main.cf_2.0 ${D}${sysconfdir}/postfix/main.cf
> + install -m 755 ${WORKDIR}/postfix ${D}${sysconfdir}/init.d/postfix
> + install -m 644 ${WORKDIR}/internal_recipient ${D}${sysconfdir}/postfix/internal_recipient
> +
> + install -d ${D}${systemd_unitdir}/system
> + install -m 0644 ${WORKDIR}/postfix.service ${D}${systemd_unitdir}/system
> + sed -i 's,/usr/sbin/,${sbindir}/,g' ${D}${systemd_unitdir}/system/postfix.service
> +
> + install -m 770 -d ${D}${localstatedir}/spool/postfix
> + chown postfix:postfix ${D}${localstatedir}/spool/postfix
> + chown postfix:postfix ${D}${localstatedir}/lib/postfix
> +
> + install -m 2755 -d ${D}${localstatedir}/spool/mail
> + chown postfix:nogroup ${D}${localstatedir}/spool/mail
> + install -m 0755 -d ${D}${localstatedir}/lib/postfix
> + chown postfix:nogroup ${D}${localstatedir}/lib/postfix
> + install -m 0755 -d ${D}${localstatedir}/spool/postfix
> + chown root:postfix ${D}${localstatedir}/spool/postfix
> + install -m 0700 -d ${D}${localstatedir}/spool/postfix/active
> + chown postfix:root ${D}${localstatedir}/spool/postfix/active
> + install -m 0700 -d ${D}${localstatedir}/spool/postfix/bounce
> + chown postfix:root ${D}${localstatedir}/spool/postfix/bounce
> + install -m 0700 -d ${D}${localstatedir}/spool/postfix/corrupt
> + chown postfix:root ${D}${localstatedir}/spool/postfix/corrupt
> + install -m 0700 -d ${D}${localstatedir}/spool/postfix/defer
> + chown postfix:root ${D}${localstatedir}/spool/postfix/defer
> + install -m 0700 -d ${D}${localstatedir}/spool/postfix/deferred
> + chown postfix:root ${D}${localstatedir}/spool/postfix/deferred
> + install -m 0700 -d ${D}${localstatedir}/spool/postfix/flush
> + chown postfix:root ${D}${localstatedir}/spool/postfix/flush
> + install -m 0700 -d ${D}${localstatedir}/spool/postfix/hold
> + chown postfix:root ${D}${localstatedir}/spool/postfix/hold
> + install -m 0700 -d ${D}${localstatedir}/spool/postfix/incoming
> + chown postfix:root ${D}${localstatedir}/spool/postfix/incoming
> + install -m 0700 -d ${D}${localstatedir}/spool/postfix/saved
> + chown postfix:root ${D}${localstatedir}/spool/postfix/saved
> + install -m 0700 -d ${D}${localstatedir}/spool/postfix/trace
> + chown postfix:root ${D}${localstatedir}/spool/postfix/trace
> + install -m 0730 -d ${D}${localstatedir}/spool/postfix/maildrop
> + chown postfix:postdrop ${D}${localstatedir}/spool/postfix/maildrop
> + install -m 0755 -d ${D}${localstatedir}/spool/postfix/pid
> + chown root:root ${D}${localstatedir}/spool/postfix/pid
> + install -m 0700 -d ${D}${localstatedir}/spool/postfix/private
> + chown postfix:root ${D}${localstatedir}/spool/postfix/private
> + install -m 0710 -d ${D}${localstatedir}/spool/postfix/public
> + chown postfix:postdrop ${D}${localstatedir}/spool/postfix/public
> + install -m 0755 -d ${D}${localstatedir}/spool/vmail
> + chown vmail:vmail ${D}${localstatedir}/spool/vmail
> +
> + chown :postdrop ${D}${sbindir}/postqueue
> + chown :postdrop ${D}${sbindir}/postdrop
> + chmod g+s ${D}${sbindir}/postqueue
> + chmod g+s ${D}${sbindir}/postdrop
> +}
> +
> +do_install_append_class-native() {
> + ln -sf ../sbin/sendmail.postfix ${D}${bindir}/newaliases
> + ln -sf ../sbin/sendmail.postfix ${D}${bindir}/mailq
> +}
> +
> +NATIVE_INSTALL_WORKS = "1"
> +
> +ALTERNATIVE_${PN} = "sendmail"
> +ALTERNATIVE_TARGET[sendmail] = "${sbindir}/sendmail.postfix"
> +ALTERNATIVE_LINK_NAME[sendmail] = "${sbindir}/sendmail"
> +ALTERNATIVE_PRIORITY = "120"
> +
> +pkg_postinst_${PN} () {
> + if [ "x$D" = "x" ]; then
> + touch /etc/aliases
> + newaliases
> +
> + # generate virtual_alias, default is hash
> + touch /etc/postfix/virtual_alias
> + postmap /etc/postfix/virtual_alias
> + else
> + touch $D/etc/aliases
> + newaliases -C $D/etc/postfix/main.cf -oA$D/etc/aliases
> + touch $D/etc/postfix/virtual_alias
> + postmap -c $D/etc/postfix $D/etc/postfix/virtual_alias
> + fi
> +}
> +
> +# Exclude .debug directories from the main package
> +FILES_${PN} = "${sysconfdir} ${localstatedir} ${bindir}/* ${sbindir}/* \
> + ${exec_prefix}/libexec/postfix/* ${systemd_unitdir}/*"
> +FILES_${PN}-dbg += "${exec_prefix}/libexec/postfix/.debug"
> diff --git a/meta-networking/recipes-daemons/postfix/postfix_2.11.1.bb b/meta-networking/recipes-daemons/postfix/postfix_2.11.1.bb
> new file mode 100644
> index 0000000..8f237dc
> --- /dev/null
> +++ b/meta-networking/recipes-daemons/postfix/postfix_2.11.1.bb
> @@ -0,0 +1,6 @@
> +require postfix.inc
> +
> +SRC_URI += "file://postfix-add-db6-support.patch"
> +
> +SRC_URI[md5sum] = "56ac1f1a79737c4ac1e24535a122a4a6"
> +SRC_URI[sha256sum] = "487f98a73b95a5799409caf21ec065efea91c1dcdfb84c038a0e3a265d6489e2"
> --
> 2.0.0
>
--
-Joe MacDonald.
:wq
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 205 bytes --]
prev parent reply other threads:[~2014-07-21 3:56 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-14 2:27 [meta-networking][PATCH] postfix: add new recipe jackie.huang
2014-07-21 3:56 ` Joe MacDonald [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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140721035656.GD11616@deserted.net \
--to=joe@deserted.net \
--cc=openembedded-devel@lists.openembedded.org \
/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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.