# # xbs-compatible wrapper Makefile for mailman # PROJECT=mailman VERSION=2.1.14 SHELL := /bin/sh # Sane defaults, which are typically overridden on the command line. # RC_ARCHS= VARDIR=/private/var SHAREDIR=/usr/share # Configuration values we customize # SRC_DIR=$(PROJECT)-$(VERSION) TAR_FILE=$(PROJECT)-$(VERSION).tgz STRIP_FLAGS=-S HTTP_DIR=/usr/share/httpd/icons COMMON_DIR=/System/Library/ServerSetup/CommonExtras DOC_DIR=/Library/Documentation/Services/mailman OPEN_SRC_INFO_DIR=/Mailman.OpenSourceInfo SETUP_SRC_DIR=/Mailman.Setup BIN_DIR=/Mailman.Bin PATCH_DIR=/Mailman.Patch EXTRAS=/Mailman.Extras BUILD_DIR=/Build HTTPD2_CONF_DIR=$(shell /usr/sbin/apxs -q SYSCONFDIR) WEBAPP_DIR=$(HTTPD2_CONF_DIR)/webapps DSYMUTIL=/usr/bin/dsymutil README_FILES=FAQ NEWS README README-I18N.en README.CONTRIB README.NETSCAPE README.USERAGENT INSTALL_FLAGS = DESTDIR="$(DSTROOT)" BI_RC_CFLAGS="$(RC_CFLAGS)" OPT='-mdynamic-no-pic' INSTALL='/usr/bin/install -g 78' DIRSETGID=: INSTALL_PREFIX = "$(SHAREDIR)/$(PROJECT)" MAILMAN_CONFIG = \ --prefix=/usr/share/mailman \ --localstatedir="$(VARDIR)/$(PROJECT)" \ --with-var-prefix="$(VARDIR)/$(PROJECT)" \ --with-mail-gid=_mailman \ --with-cgi-gid=_www \ --without-permcheck # These includes provide the proper paths to system utilities # include $(MAKEFILEPATH)/pb_makefiles/platform.make include $(MAKEFILEPATH)/pb_makefiles/commands-$(OS).make default:: build_mm install :: patch_mm configure_mm build_mm install-strip install-extras install-startup install-readmes install-group clean_up clean : clean_src installhdrs : @echo "No headers to install" installsrc : [ ! -d "$(SRCROOT)/$(PROJECT)" ] && mkdir -p "$(SRCROOT)/$(PROJECT)" tar cf - . | (cd "$(SRCROOT)" ; tar xfp -) find "$(SRCROOT)" -type d -name CVS -print0 | xargs -0 rm -rf clean_src : $(_v) if [ -e "$(OBJROOT)$(BUILD_DIR)/$(SRC_DIR)/Makefile" ]; then\ $(_v) ($(CD) "$(OBJROOT)$(BUILD_DIR)/$(SRC_DIR)" && make distclean)\ fi clean_up : $(_v) if [ -d "$(OBJROOT)$(BUILD_DIR)/$(SRC_DIR)" ]; then\ $(_v) ($(RM) -rf "$(OBJROOT)$(BUILD_DIR)/$(SRC_DIR)")\ fi patch_mm : $(OBJROOT)$(BUILD_DIR) $(_v) ($(CD) "$(OBJROOT)$(BUILD_DIR)" && \ /usr/bin/gnutar -xzvpf "$(SRCROOT)/$(BIN_DIR)/$(TAR_FILE)") $(_v) ($(CD) "$(OBJROOT)$(BUILD_DIR)/$(SRC_DIR)" && \ /usr/bin/patch -p1 < "$(SRCROOT)/$(PATCH_DIR)/CVE-2011-0707.diff") $(_v) ($(CD) "$(OBJROOT)$(BUILD_DIR)/$(SRC_DIR)" && \ /usr/bin/patch -p1 < "$(SRCROOT)/$(PATCH_DIR)/apple-mods.diff") configure_mm : @echo "--- Configuring $(PROJECT): Version: $(VERSION)" @echo "Configuring $(PROJECT)..." $(_v) if [ ! -e "$(OBJROOT)$(BUILD_DIR)/$(SRC_DIR)/Makefile" ]; then\ $(_v) ($(CD) "$(OBJROOT)$(BUILD_DIR)/$(SRC_DIR)" && ./configure $(MAILMAN_CONFIG))\ fi @echo "--- Configuring $(PROJECT) complete ---" build_mm : @echo "--- Building $(PROJECT)" @echo "Configuring $(PROJECT)..." $(_v) if [ ! -e "$(OBJROOT)$(BUILD_DIR)/$(SRC_DIR)/Makefile" ]; then\ $(_v) ($(CD) "$(OBJROOT)$(BUILD_DIR)/$(SRC_DIR)" && ./configure $(MAILMAN_CONFIG))\ fi $(_v) ($(CD) "$(OBJROOT)$(BUILD_DIR)/$(SRC_DIR)" && make $(INSTALL_FLAGS) ) $(_v) ($(CD) "$(OBJROOT)$(BUILD_DIR)/$(SRC_DIR)" && make $(INSTALL_FLAGS) install) @echo "--- Building $(PROJECT) complete ---" # Custom configuration: # install-strip : @echo "---- Stripping binaries..." $(_v) for file in $(DSTROOT)$(INSTALL_PREFIX)/cgi-bin/*;\ do \ echo "Processing $${file##*/} (from $${file})"; \ if [ ! -e "$(SYMROOT)/$${file##*/}" ]; then \ echo " $(CP) $${file} $(SYMROOT)"; \ $(CP) $${file} $(SYMROOT); \ fi; \ if [ -e "$(SYMROOT)/$${file##*/}.dSYM" ]; then \ echo "...odd, dSYM already exists."; \ else \ echo " $(DSYMUTIL) --out=$(SYMROOT)/$${file##*/}.dSYM $${file}";\ $(DSYMUTIL) --out=$(SYMROOT)/$${file##*/}.dSYM $${file};\ fi; \ $(STRIP) -S $${file}; \ done $(_v) for file in $(DSTROOT)$(INSTALL_PREFIX)/mail/*;\ do \ echo "Processing $${file##*/} (from $${file})"; \ if [ ! -e "$(SYMROOT)/$${file##*/}" ]; then \ echo " $(CP) $${file} $(SYMROOT)"; \ $(CP) $${file} $(SYMROOT); \ fi; \ if [ -e "$(SYMROOT)/$${file##*/}.dSYM" ]; then \ echo "...odd, dSYM already exists."; \ else \ echo " $(DSYMUTIL) --out=$(SYMROOT)/$${file##*/}.dSYM $${file}";\ $(DSYMUTIL) --out=$(SYMROOT)/$${file##*/}.dSYM $${file};\ fi; \ $(STRIP) -S $${file}; \ done @echo "---- Stripping binaries complete..." install-extras : $(DSTROOT)$(HTTP_DIR) $(DSTROOT)$(COMMON_DIR) @echo "---- Installing extras..." $(_v) install -d -m 755 $(DSTROOT)/usr/local/OpenSourceVersions $(_v) install -d -m 755 $(DSTROOT)/usr/local/OpenSourceLicenses $(_v) install -m 0444 $(SRCROOT)/$(OPEN_SRC_INFO_DIR)/mailman.plist $(DSTROOT)/usr/local/OpenSourceVersions $(_v) install -m 0444 $(SRCROOT)/$(OPEN_SRC_INFO_DIR)/mailman.txt $(DSTROOT)/usr/local/OpenSourceLicenses $(_v) install -m 0755 $(SRCROOT)/$(EXTRAS)/get_list_info $(DSTROOT)/usr/share/mailman/bin/get_list_info $(_v) install -m 0755 $(SRCROOT)/$(EXTRAS)/apple_config_list $(DSTROOT)/usr/share/mailman/bin/apple_config_list $(_v) $(CP) -p "$(DSTROOT)$(INSTALL_PREFIX)"/icons/* "$(DSTROOT)$(HTTP_DIR)" $(CHGRP) -R wheel "$(DSTROOT)$(HTTP_DIR)" $(_v) install -d -m 755 $(DSTROOT)$(WEBAPP_DIR) $(_v) install -m 0444 $(SRCROOT)/$(EXTRAS)/com.apple.webapp.mailman.plist $(DSTROOT)$(WEBAPP_DIR) $(_v) install -m 0644 $(SRCROOT)/$(EXTRAS)/httpd_mailman.conf $(DSTROOT)$(HTTPD2_CONF_DIR) $(_v) install -m 0444 $(SRCROOT)/$(EXTRAS)/httpd_mailman.conf $(DSTROOT)$(HTTPD2_CONF_DIR)/httpd_mailman.conf.default $(_v) install -m 0755 "$(SRCROOT)/$(SETUP_SRC_DIR)/SetupScript" "$(DSTROOT)$(COMMON_DIR)/SetupMailman.sh" @echo "MTA = 'Postfix'" >> "$(DSTROOT)$(INSTALL_PREFIX)/Mailman/mm_cfg.py.dist" $(_v) $(RM) "$(DSTROOT)$(INSTALL_PREFIX)/Mailman/mm_cfg.py" @echo "---- Installing extras complete ---" install-readmes : $(DSTROOT)$(DOC_DIR) @echo "---- Installing Read Me files..." $(_v) for file in $(README_FILES); \ do \ $(_v) $(CP) "$(OBJROOT)$(BUILD_DIR)/$(SRC_DIR)/$$file" "$(DSTROOT)$(DOC_DIR)"; \ done @echo "---- Installing Read Me files complete ---" install-startup : @echo "---- Installing Startup Item..." $(_v) install -d -m 755 $(DSTROOT)/System/Library/LaunchDaemons $(_v) install -m 0644 $(SRCROOT)/Mailman.LaunchDaemons/org.list.mailmanctl.plist \ $(DSTROOT)/System/Library/LaunchDaemons/org.list.mailmanctl.plist @echo "--- Installing Startup Item complete ---" install-group : @echo "---- Setting file permissions..." $(_v) $(CHOWN) -R root:mailman "$(DSTROOT)/usr/share/mailman" $(_v) $(CHOWN) -R root:mailman "$(DSTROOT)/private/var/mailman/archives" $(_v) $(CHOWN) -R root:mailman "$(DSTROOT)/private/var/mailman/data" $(_v) $(CHOWN) -R root:mailman "$(DSTROOT)/private/var/mailman/lists" $(_v) $(CHOWN) -R root:mailman "$(DSTROOT)/private/var/mailman/locks" $(_v) $(CHOWN) -R root:mailman "$(DSTROOT)/private/var/mailman/logs" $(_v) $(CHOWN) -R root:mailman "$(DSTROOT)/private/var/mailman/qfiles" $(_v) $(CHOWN) -R root:mailman "$(DSTROOT)/private/var/mailman/spam" $(_v) $(CD) "$(DSTROOT)/usr/share/mailman/templates" && /bin/ls | xargs chmod 0775 $(_v) $(CD) "$(DSTROOT)/usr/share/mailman/messages" && /bin/ls | xargs chmod 0775 $(_v) chmod 0775 "$(DSTROOT)/private/var/mailman" $(_v) chmod 0775 "$(DSTROOT)/usr/share/mailman" $(_v) chmod 02755 "$(DSTROOT)/usr/share/mailman/cgi-bin/admin" $(_v) chmod 02755 "$(DSTROOT)/usr/share/mailman/cgi-bin/admindb" $(_v) chmod 02755 "$(DSTROOT)/usr/share/mailman/cgi-bin/confirm" $(_v) chmod 02755 "$(DSTROOT)/usr/share/mailman/cgi-bin/create" $(_v) chmod 02755 "$(DSTROOT)/usr/share/mailman/cgi-bin/edithtml" $(_v) chmod 02755 "$(DSTROOT)/usr/share/mailman/cgi-bin/listinfo" $(_v) chmod 02755 "$(DSTROOT)/usr/share/mailman/cgi-bin/options" $(_v) chmod 02755 "$(DSTROOT)/usr/share/mailman/cgi-bin/private" $(_v) chmod 02755 "$(DSTROOT)/usr/share/mailman/cgi-bin/rmlist" $(_v) chmod 02755 "$(DSTROOT)/usr/share/mailman/cgi-bin/roster" $(_v) chmod 02755 "$(DSTROOT)/usr/share/mailman/cgi-bin/subscribe" $(_v) chmod 02755 "$(DSTROOT)/usr/share/mailman/mail/mailman" $(_v) chmod 0755 "$(DSTROOT)/usr/share/mailman/messages/"* $(_v) chmod 0755 "$(DSTROOT)/usr/share/mailman/messages/gl/LC_MESSAGES" $(_v) chmod 0755 "$(DSTROOT)/usr/share/mailman/messages/he/LC_MESSAGES" $(_v) chmod 0755 "$(DSTROOT)/usr/share/mailman/messages/sk/LC_MESSAGES" $(_v) chmod 0755 "$(DSTROOT)/usr/share/mailman/templates/"* @echo "---- Setting file permissions complete ---" .PHONY: clean installhdrs installsrc build install $(OBJROOT)$(BUILD_DIR) : $(_v) $(MKDIRS) $@ $(DSTROOT) : $(_v) $(MKDIRS) $@ $(DSTROOT)$(HTTP_DIR) : $(_v) $(MKDIRS) $@ $(DSTROOT)$(COMMON_DIR) : $(_v) $(MKDIRS) $@ $(DSTROOT)$(DOC_DIR) : $(_v) $(MKDIRS) $@