lede-packages-rs

git clone git://archive.git.mtrnord.blog/MTRNord/lede-packages-rs.git
Log | Files | Refs | README | LICENSE

Makefile (12432B)


      1 # 
      2 # Copyright (C) 2014-2015 OpenWrt.org
      3 #
      4 # This is free software, licensed under the GNU General Public License v2.
      5 # See /LICENSE for more information.
      6 #
      7 
      8 include $(TOPDIR)/rules.mk
      9 
     10 PKG_NAME:=postfix
     11 PKG_RELEASE:=2
     12 PKG_SOURCE_URL:=ftp://ftp.porcupine.org/mirrors/postfix-release/official/
     13 PKG_VERSION:=3.1.4
     14 PKG_MD5SUM:=878a059d92ee3b093d7d3e97248c915d
     15 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
     16 PKG_MAINTAINER:=Denis Shulyaka <Shulyaka@gmail.com>
     17 PKG_LICENSE:=IPL-1.0
     18 PKG_LICENSE_FILES:=LICENSE
     19 PKG_BUILD_DEPENDS:=+POSTFIX_CDB:tinycdb
     20 
     21 include $(INCLUDE_DIR)/package.mk
     22 
     23 define Package/postfix
     24   SECTION:=mail
     25   CATEGORY:=Mail
     26   TITLE:=Postfix Mail Transmit Agent
     27   URL:=http://www.postfix.org/
     28   DEPENDS:=+POSTFIX_TLS:libopenssl +POSTFIX_SASL:libsasl2 +POSTFIX_LDAP:libopenldap +POSTFIX_DB:libdb47 +POSTFIX_SQLITE:libsqlite3 +POSTFIX_EAI:icu +libpcre
     29 endef
     30 
     31 define Package/postfix/description
     32  Postfix is Wietse Venema's mailer that started life as an alternative to the widely-used Sendmail program. Postfix attempts to be fast, easy to administer, and secure, while at the same time being sendmail compatible enough to not upset existing users. Thus, the outside has a sendmail-ish flavor, but the inside is completely different.
     33 endef
     34 
     35 define Package/postfix/config
     36 	menu "Select postfix build options"
     37 		config POSTFIX_TLS
     38 			bool "TLS support"
     39 			default y
     40 			help
     41 			  Implements TLS support in postfix (using OpenSSL).
     42 		config POSTFIX_SASL
     43 			bool "SASL support"
     44 			default y
     45 			help
     46 			  Implements SASL support in postfix (using Cyrus SASL).
     47 		config POSTFIX_LDAP
     48 			bool "LDAP support"
     49 			default y
     50 			help
     51 			  Implements LDAP support in postfix (using OpenLDAP).
     52 		config POSTFIX_DB
     53 			bool "BerkeleyDB support"
     54 			default n
     55 			help
     56 			  Implements support for btree files using Berkeley DB. Note that hash files support is not compiled into Berkeley DB OpenWRT distribution
     57 		config POSTFIX_CDB
     58 			bool "CDB support"
     59 			default y
     60 			help
     61 			  Implements support for cdb files using tinycdb
     62 		config POSTFIX_SQLITE
     63 			bool "SQLITE support"
     64 			default y
     65 			help
     66 			  Implements support for SQLite3 DB
     67 		config POSTFIX_EAI
     68 			bool "SMTPUTF8 support"
     69 			default n
     70 			help
     71 				Enable Postfix support for Email Address Internationalization
     72 				(EAI) as defined in RFC 6531 (SMTPUTF8 extension), RFC 6532
     73 				(Internationalized email headers) and RFC 6533
     74 				(Internationalized delivery status notifications).
     75 				Since version 3.0, Postfix fully supports UTF-8 email
     76 				addresses and UTF-8 message header values.
     77 	endmenu
     78 endef
     79 
     80 CCARGS=-DNO_NIS
     81 AUXLIBS=-L$(STAGING_DIR)/usr/lib
     82 default_database_type=cdb
     83 
     84 ifdef CONFIG_POSTFIX_TLS
     85   CCARGS+=-DUSE_TLS
     86   AUXLIBS+=-lssl -lcrypto
     87 endif
     88 
     89 ifdef CONFIG_POSTFIX_SASL
     90   CCARGS+=-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I$(STAGING_DIR)/usr/include/sasl
     91   AUXLIBS+=-lsasl2
     92 endif
     93 
     94 ifdef CONFIG_POSTFIX_LDAP
     95   CCARGS+=-DHAS_LDAP
     96   AUXLIBS+=-lldap -llber
     97 endif
     98 
     99 ifdef CONFIG_POSTFIX_CDB
    100   CCARGS+=-DHAS_CDB
    101   AUXLIBS+=-lcdb
    102 endif
    103 
    104 ifdef CONFIG_POSTFIX_DB
    105   AUXLIBS+=-ldb
    106   CCARGS+=-DHAS_DB
    107   ifndef CONFIG_POSTFIX_CDB
    108     default_database_type=btree
    109   endif
    110 else
    111   CCARGS+=-DNO_DB
    112 endif
    113 
    114 ifdef CONFIG_POSTFIX_SQLITE
    115   CCARGS+=-DHAS_SQLITE -I$(STAGING_DIR)/usr/include/
    116   AUXLIBS+=-L$(STAGING_DIR)/usr/lib -lsqlite3 -lpthread
    117 endif
    118 
    119 ifdef CONFIG_POSTFIX_EAI
    120   AUXLIBS+=-licuuc
    121   CCARGS+=-DHAS_EAI
    122   smtputf8_conf = yes
    123 else
    124   CCARGS+=-DNO_EAI
    125   smtputf8_conf = no
    126 endif
    127 
    128 CCARGS+=-DDEF_DB_TYPE=\"$(default_database_type)\"
    129 
    130 config_directory=/etc/postfix# also add this to postfix init file
    131 sample_directory=/etc/postfix
    132 command_directory=/usr/sbin
    133 daemon_directory=/usr/libexec/postfix
    134 data_directory=/usr/var/lib/postfix
    135 queue_directory=/usr/var/spool/postfix
    136 mail_spool_directory=/usr/var/mail
    137 html_directory=no
    138 manpage_directory=no
    139 readme_directory=no
    140 sendmail_path=/usr/sbin/sendmail
    141 newaliases_path=/usr/bin/newaliases
    142 mailq_path=/usr/bin/mailq
    143 shlib_directory=/usr/lib/postfix
    144 meta_directory=/etc/postfix
    145 
    146 ln_suffix=.postfix
    147 ln_old_suffix=.old
    148 
    149 define Package/postfix/conffiles
    150 $(config_directory)/main.cf
    151 $(config_directory)/master.cf
    152 $(config_directory)/aliases
    153 $(config_directory)/virtual
    154 endef
    155 
    156 define Build/Configure
    157 	if [ "$(CONFIG_POSTFIX_DB)" = "" -a "$(CONFIG_POSTFIX_CDB)" = "" ]; then\
    158 	  echo "Build error: You must select at least one of the DB types";\
    159           exit 1;\
    160 	fi
    161 
    162 	cd $(PKG_BUILD_DIR); $(MAKE) makefiles CCARGS='$(CCARGS)' $(TARGET_CONFIGURE_OPTS) AUXLIBS="$(AUXLIBS)"
    163 endef
    164 
    165 # Steps to regenerate files/main.cf.default:
    166 #
    167 # 1. Compile the package with current file
    168 # 2. Execute the following command on target device:
    169 # 	postconf -d > /tmp/main.cf.new
    170 # 3. Transfer /tmp/main.cf.new file to the build system
    171 # 4. Execute the following command:
    172 # 	cat /tmp/main.cf.new | ( echo '# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE'; echo '# TEXT HERE JUST SHOWS DEFAULT SETTINGS BUILT INTO POSTFIX.'; echo '#'; grep -v ^alias_maps\ = |grep -v ^alias_database\ = |grep -v ^command_directory\ = |grep -v ^config_directory\ = |grep -v ^daemon_directory\ = |grep -v ^data_directory\ = |grep -v ^default_database_type\ = |grep -v ^html_directory\ = |grep -v ^mail_spool_directory\ = |grep -v ^mailq_path\ = |grep -v ^manpage_directory\ = |grep -v ^meta_directory\ = |grep -v ^mydomain\ = |grep -v ^myhostname\ = |grep -v ^mynetworks\ = |grep -v ^mynetworks_style\ = |grep -v ^newaliases_path\ = |grep -v ^queue_directory\ = |grep -v ^readme_directory\ = |grep -v ^sample_directory\ = |grep -v ^sendmail_path\ = |grep -v ^shlib_directory\ = |grep -v ^smtputf8_enable\ = |grep -v ^virtual_maps\ = |grep -v ^process_id\ = ) > files/main.cf.default
    173 # 5. Done. Now you can rebuild the package with new main.cf.default.
    174 #
    175 
    176 define Build/Compile
    177 	# Currently postfix has a bug with Makefiles that CCARGS are not passed to the compiler, so we are copying them to CC as a workaround
    178 	cd $(PKG_BUILD_DIR); $(MAKE) $(TARGET_CONFIGURE_OPTS) CC='$(TARGET_CC) $(CCARGS)'
    179 	cp ./files/main.cf.default $(PKG_BUILD_DIR)/conf/main.cf.default
    180 	echo "default_database_type = $(default_database_type)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
    181 	echo "alias_database = $(default_database_type):$(config_directory)/aliases" >> $(PKG_BUILD_DIR)/conf/main.cf.default
    182 	echo "alias_maps = $(default_database_type):$(config_directory)/aliases" >> $(PKG_BUILD_DIR)/conf/main.cf.default
    183 	echo "virtual_maps = $(default_database_type):$(config_directory)/virtual" >> $(PKG_BUILD_DIR)/conf/main.cf.default
    184 	echo "sendmail_path = $(sendmail_path)$(ln_suffix)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
    185 	echo "newaliases_path = $(newaliases_path)$(ln_suffix)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
    186 	echo "mailq_path = $(mailq_path)$(ln_suffix)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
    187 	echo "html_directory = $(html_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
    188 	echo "manpage_directory = $(manpage_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
    189 	echo "sample_directory = $(sample_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
    190 	echo "readme_directory = $(readme_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
    191 	echo "command_directory = $(command_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
    192 	echo "daemon_directory = $(daemon_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
    193 	echo "data_directory = $(data_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
    194 	echo "queue_directory = $(queue_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
    195 	echo "config_directory = $(config_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
    196 	echo "mail_spool_directory = $(mail_spool_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
    197 	echo "shlib_directory = $(shlib_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
    198 	echo "meta_directory = $(meta_directory)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
    199 	echo "smtputf8_enable = $(smtputf8_conf)" >> $(PKG_BUILD_DIR)/conf/main.cf.default
    200 endef
    201 
    202 define Package/postfix/install
    203 	cd $(PKG_BUILD_DIR); $(MAKE) install_root=$(1) command_directory=$(command_directory) daemon_directory=$(daemon_directory) data_directory=$(data_directory) html_directory=$(html_directory) mail_owner=postfix mailq_path=$(mailq_path)$(ln_suffix) manpage_directory=$(manpage_directory) newaliases_path=$(newaliases_path)$(ln_suffix) queue_directory=$(queue_directory) readme_directory=$(readme_directory) sendmail_path=$(sendmail_path)$(ln_suffix) setgid_group=postdrop sample_directory=$(sample_directory) config_directory=$(config_directory) shlib_directory=$(shlib_directory) meta_directory=$(meta_directory) mail_version=$(PKG_VERSION) non-interactive-package
    204 	$(INSTALL_DIR) $(1)$(mail_spool_directory)
    205 	$(INSTALL_DIR) $(1)/etc/init.d/
    206 	$(INSTALL_BIN) ./files/postfix.init $(1)/etc/init.d/postfix
    207 endef
    208 
    209 define Package/postfix/postinst
    210 #!/bin/sh
    211 
    212  if [ -f "$${IPKG_INSTROOT}$(sendmail_path)" -a "$$(readlink "$${IPKG_INSTROOT}$(sendmail_path)")" != "$(sendmail_path)$(ln_suffix)" ]; then
    213   mv "$${IPKG_INSTROOT}$(sendmail_path)" "$${IPKG_INSTROOT}$(sendmail_path)$(ln_old_suffix)"
    214   echo "Warning: $${IPKG_INSTROOT}$(sendmail_path) saved as $${IPKG_INSTROOT}$(sendmail_path)$(ln_old_suffix)"
    215  fi
    216  if [ ! -f "$${IPKG_INSTROOT}$(sendmail_path)" ]; then
    217   ln -s "$${IPKG_INSTROOT}$(sendmail_path)$(ln_suffix)" "$(sendmail_path)"
    218  fi
    219 
    220  if [ -f "$${IPKG_INSTROOT}$(newaliases_path)" -a "$$(readlink "$${IPKG_INSTROOT}$(newaliases_path)")" != "$(newaliases_path)$(ln_suffix)" ]; then
    221   mv "$${IPKG_INSTROOT}$(newaliases_path)" "$${IPKG_INSTROOT}$(newaliases_path)$(ln_old_suffix)"
    222   echo "Warning: $${IPKG_INSTROOT}$(newaliases_path) saved as $${IPKG_INSTROOT}$(newaliases_path)$(ln_old_suffix)"
    223  fi
    224  if [ ! -f "$${IPKG_INSTROOT}$(newaliases_path)" ]; then
    225   ln -s "$${IPKG_INSTROOT}$(newaliases_path)$(ln_suffix)" "$(newaliases_path)"
    226  fi
    227 
    228  if [ -f "$${IPKG_INSTROOT}$(mailq_path)" -a "$$(readlink "$${IPKG_INSTROOT}$(mailq_path)")" != "$(mailq_path)$(ln_suffix)" ]; then
    229   mv "$${IPKG_INSTROOT}$(mailq_path)" "$${IPKG_INSTROOT}$(mailq_path)$(ln_old_suffix)"
    230   echo "Warning: $${IPKG_INSTROOT}$(mailq_path) saved as $${IPKG_INSTROOT}$(mailq_path)$(ln_old_suffix)"
    231  fi
    232  if [ ! -f "$(mailq_path)" ]; then
    233   ln -s "$${IPKG_INSTROOT}$(mailq_path)$(ln_suffix)" "$(mailq_path)"
    234  fi
    235 
    236  grep -qc main\.cf "$${IPKG_INSTROOT}"/etc/sysupgrade.conf >/dev/null || echo "$(config_directory)/main.cf" >> "$${IPKG_INSTROOT}"/etc/sysupgrade.conf
    237  grep -qc master\.cf "$${IPKG_INSTROOT}"/etc/sysupgrade.conf >/dev/null || echo "$(config_directory)/master.cf" >> "$${IPKG_INSTROOT}"/etc/sysupgrade.conf
    238  grep -qc aliases "$${IPKG_INSTROOT}"/etc/sysupgrade.conf >/dev/null || echo "$(config_directory)/aliases" >> "$${IPKG_INSTROOT}"/etc/sysupgrade.conf
    239  grep -qc virtual "$${IPKG_INSTROOT}"/etc/sysupgrade.conf >/dev/null || echo "$(config_directory)/virtual" >> "$${IPKG_INSTROOT}"/etc/sysupgrade.conf
    240 
    241  touch "$${IPKG_INSTROOT}$(config_directory)"/opkg_postinst
    242 
    243  if [ -z "$${IPKG_INSTROOT}" ]; then
    244   ps | grep "postfix/master" | grep -cvq grep >/dev/null && /etc/init.d/postfix restart
    245  fi
    246 
    247 endef
    248 
    249 define Package/postfix/prerm
    250 #!/bin/sh
    251  ps | grep "postfix/master" | grep -cvq grep >/dev/null && postfix stop
    252  /etc/init.d/postfix disable
    253 endef
    254 
    255 define Package/postfix/postrm
    256 #!/bin/sh
    257  rm -f $${IPKG_INSTROOT}$(config_directory)/aliases.cdb $${IPKG_INSTROOT}$(config_directory)/aliases.db $${IPKG_INSTROOT}$(data_directory)/master.lock
    258 
    259  rm -f $${IPKG_INSTROOT}$(config_directory)/virtual.cdb $${IPKG_INSTROOT}$(config_directory)/virtual.db
    260 
    261  rm -f "$${IPKG_INSTROOT}$(sendmail_path)" "$${IPKG_INSTROOT}$(newaliases_path)" "$${IPKG_INSTROOT}$(mailq_path)"
    262 
    263  if [ -f "$${IPKG_INSTROOT}$(sendmail_path)$(ln_old_suffix)" ]; then
    264   mv "$${IPKG_INSTROOT}$(sendmail_path)$(ln_old_suffix)" "$${IPKG_INSTROOT}$(sendmail_path)"
    265   echo "Warning: $${IPKG_INSTROOT}$(sendmail_path) restored from $${IPKG_INSTROOT}$(sendmail_path)$(ln_old_suffix)"
    266  fi
    267  if [ -f "$${IPKG_INSTROOT}$(newaliases_path)$(ln_old_suffix)" ]; then
    268   mv "$${IPKG_INSTROOT}$(newaliases_path)$(ln_old_suffix)" "$${IPKG_INSTROOT}$(newaliases_path)"
    269   echo "Warning: $${IPKG_INSTROOT}$(newaliases_path) restored from $${IPKG_INSTROOT}$(newaliases_path)$(ln_old_suffix)"
    270  fi
    271  if [ -f "$${IPKG_INSTROOT}$(mailq_path)$(ln_old_suffix)" ]; then
    272   mv "$${IPKG_INSTROOT}$(mailq_path)$(ln_old_suffix)" "$${IPKG_INSTROOT}$(mailq_path)"
    273   echo "Warning: $${IPKG_INSTROOT}$(mailq_path) restored from $${IPKG_INSTROOT}$(mailq_path)$(ln_old_suffix)"
    274  fi
    275 endef
    276 
    277 $(eval $(call BuildPackage,postfix))