Radix cross Linux

The main Radix cross Linux repository contains the build scripts of packages, which have the most complete and common functionality for desktop machines

452 Commits   2 Branches   1 Tag
   169         kx 
   169         kx # daemon - https://libslack.org/daemon
   169         kx #
   169         kx # Copyright (C) 1999-2004, 2010, 2020-2023 raf <raf@raf.org>
   169         kx #
   169         kx # This program is free software; you can redistribute it and/or modify
   169         kx # it under the terms of the GNU General Public License as published by
   169         kx # the Free Software Foundation; either version 2 of the License, or
   169         kx # (at your option) any later version.
   169         kx #
   169         kx # This program is distributed in the hope that it will be useful,
   169         kx # but WITHOUT ANY WARRANTY; without even the implied warranty of
   169         kx # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   169         kx # GNU General Public License for more details.
   169         kx #
   169         kx # You should have received a copy of the GNU General Public License
   169         kx # along with this program; if not, see <https://www.gnu.org/licenses/>.
   169         kx #
   169         kx # 20230824 raf <raf@raf.org>
   169         kx #
   169         kx 
   169         kx ifneq ($(DAEMON_TARGET),./$(DAEMON_NAME))
   169         kx 
   169         kx .PHONY: $(DAEMON_NAME)
   169         kx 
   169         kx $(DAEMON_NAME): $(DAEMON_TARGET)
   169         kx 
   169         kx endif
   169         kx 
   169         kx $(DAEMON_TARGET): $(DAEMON_OFILES) $(DAEMON_SUBTARGETS)
   169         kx 	$(CC) -o $(DAEMON_TARGET) $(DAEMON_OFILES) $(DAEMON_LDFLAGS)
   169         kx 
   169         kx .PHONY: man-daemon html-daemon
   169         kx 
   169         kx man-daemon: $(DAEMON_MANFILES)
   169         kx 
   169         kx html-daemon: $(DAEMON_HTMLFILES)
   169         kx 
   169         kx .PHONY: install-daemon install-daemon-bin install-daemon-man install-daemon-html install-daemon-conf
   169         kx 
   169         kx install-daemon: install-daemon-bin install-daemon-man
   169         kx 
   169         kx install-daemon-bin:
   169         kx 	mkdir -p $(DESTDIR)$(APP_INSDIR)
   169         kx 	install -m 755 $(DAEMON_TARGET) $(DESTDIR)$(APP_INSDIR)
   169         kx 
   169         kx install-daemon-man: man-daemon
   169         kx 	@mkdir -p $(DESTDIR)$(APP_MANDIR); \
   169         kx 	install -m 644 $(DAEMON_MANFILES) $(DESTDIR)$(APP_MANDIR); \
   169         kx 	mkdir -p $(DESTDIR)$(FMT_MANDIR); \
   169         kx 	rm -f $(DESTDIR)$(FMT_MANDIR)/$(notdir $(DAEMON_MANLINK)); \
   169         kx 	ln -s ../man$(APP_MANSECT)/$(notdir $(DAEMON_MANFILES)) $(DESTDIR)$(FMT_MANDIR)/$(notdir $(DAEMON_MANLINK))
   169         kx 
   169         kx install-daemon-html: html-daemon
   169         kx 	@mkdir -p $(DESTDIR)$(DAEMON_HTMLDIR); \
   169         kx 	install -m 644 $(DAEMON_HTMLFILES) $(DESTDIR)$(DAEMON_HTMLDIR)
   169         kx 
   169         kx install-daemon-conf: $(DAEMON_SRCDIR)/$(DAEMON_CONFFILE)
   169         kx 	@mkdir -p $(DESTDIR)$(DAEMON_CONF_INSDIR); \
   169         kx 	[ -f $(DESTDIR)$(DAEMON_CONF_INSDIR)/$(DAEMON_CONFFILE) ] || install -m 644 $(DAEMON_SRCDIR)/$(DAEMON_CONFFILE) $(DESTDIR)$(DAEMON_CONF_INSDIR); \
   169         kx 	[ -d $(DESTDIR)$(DAEMON_CONF_INSDIR)/$(DAEMON_CONFDIR) ] || mkdir $(DESTDIR)$(DAEMON_CONF_INSDIR)/$(DAEMON_CONFDIR)
   169         kx 
   169         kx .PHONY: uninstall-daemon uninstall-daemon-bin uninstall-daemon-man uninstall-daemon-html uninstall-daemon-conf
   169         kx 
   169         kx uninstall-daemon: uninstall-daemon-bin uninstall-daemon-man
   169         kx 
   169         kx uninstall-daemon-bin:
   169         kx 	rm -f $(patsubst %, $(DESTDIR)$(APP_INSDIR)/%, $(notdir $(DAEMON_TARGET)))
   169         kx 
   169         kx uninstall-daemon-man:
   169         kx 	@rm -f $(patsubst %, $(DESTDIR)$(APP_MANDIR)/%, $(notdir $(DAEMON_MANFILES))) \
   169         kx 	$(DESTDIR)$(FMT_MANDIR)/$(notdir $(DAEMON_MANLINK))
   169         kx 
   169         kx uninstall-daemon-html:
   169         kx 	@rm -f $(patsubst %, $(DESTDIR)$(DAEMON_HTMLDIR)/%, $(notdir $(DAEMON_HTMLFILES)))
   169         kx 
   169         kx uninstall-daemon-conf:
   169         kx 	@rm -rf $(DESTDIR)$(DAEMON_CONF_INSDIR)/$(DAEMON_CONFFILE) $(DESTDIR)$(DAEMON_CONF_INSDIR)/$(DAEMON_CONFDIR)
   169         kx 
   169         kx .PHONY: dist-daemon dist-html-daemon rpm-daemon deb-daemon sol-daemon obsd-daemon fbsd-daemon nbsd-daemon osx-daemon
   169         kx 
   169         kx dist-daemon: distclean
   169         kx 	@set -e; \
   169         kx 	up="`pwd`/.."; \
   169         kx 	cd $(DAEMON_SRCDIR); \
   169         kx 	src=`basename \`pwd\``; \
   169         kx 	dst=$(DAEMON_ID); \
   169         kx 	cd ..; \
   169         kx 	[ "$$src" != "$$dst" -a ! -d "$$dst" ] && ln -s $$src $$dst; \
   169         kx 	tar chzf $$up/$(DAEMON_DIST) --exclude='.git*' $$dst; \
   169         kx 	[ -h "$$dst" ] && rm -f $$dst; \
   169         kx 	tar tzfv $$up/$(DAEMON_DIST); \
   169         kx 	ls -l $$up/$(DAEMON_DIST)
   169         kx 
   169         kx dist-html-daemon: html-daemon
   169         kx 	@set -e; \
   169         kx 	up="`pwd`/.."; \
   169         kx 	cd $(DAEMON_SRCDIR); \
   169         kx 	src=`basename \`pwd\``; \
   169         kx 	dst=$(DAEMON_HTML_ID); \
   169         kx 	cd ..; \
   169         kx 	[ "$$src" != "$$dst" -a ! -d "$$dst" ] && ln -s $$src $$dst; \
   169         kx 	tar chzf $$up/$(DAEMON_HTML_DIST) $(patsubst $(DAEMON_SRCDIR)/%, $$dst/%, $(DAEMON_SRCDIR)/README.md $(DAEMON_SRCDIR)/INSTALL $(DAEMON_SRCDIR)/COPYING $(DAEMON_SRCDIR)/LICENSE $(DAEMON_SRCDIR)/REFERENCES $(DAEMON_SRCDIR)/CHANGELOG $(DAEMON_HTMLFILES)); \
   169         kx 	[ -h "$$dst" ] && rm -f $$dst; \
   169         kx 	tar tzfv $$up/$(DAEMON_HTML_DIST); \
   169         kx 	ls -l $$up/$(DAEMON_HTML_DIST)
   169         kx 
   169         kx #RPMDIR := /usr/src/redhat
   169         kx RPMDIR := $(HOME)/rpmbuild
   169         kx #RPMBUILD := rpm     # rpm 3.x
   169         kx RPMBUILD := rpmbuild # rpm 4.x
   169         kx 
   169         kx rpm-daemon: $(DAEMON_SRCDIR)/daemon.spec
   169         kx 	@set -e; \
   169         kx 	up="`pwd`/.."; \
   169         kx 	[ -d $(RPMDIR) ] || mkdir -p $(RPMDIR); \
   169         kx 	[ -d $(RPMDIR)/BUILD ] || mkdir -p $(RPMDIR)/BUILD; \
   169         kx 	[ -d $(RPMDIR)/BUILDROOT ] || mkdir -p $(RPMDIR)/BUILDROOT; \
   169         kx 	[ -d $(RPMDIR)/RPMS ] || mkdir -p $(RPMDIR)/RPMS; \
   169         kx 	[ -d $(RPMDIR)/SOURCES ] || mkdir -p $(RPMDIR)/SOURCES; \
   169         kx 	[ -d $(RPMDIR)/SPECS ] || mkdir -p $(RPMDIR)/SPECS; \
   169         kx 	[ -d $(RPMDIR)/SRPMS ] || mkdir -p $(RPMDIR)/SRPMS; \
   169         kx 	cp $$up/$(DAEMON_DIST) $(RPMDIR)/SOURCES; \
   169         kx 	$(RPMBUILD) --buildroot "/tmp/$(DAEMON_ID)" -ba --target "`uname -m`" $(DAEMON_SRCDIR)/daemon.spec; \
   169         kx 	rm -rf $(DAEMON_SRCDIR)/daemon.spec "/tmp/$(DAEMON_ID)"; \
   169         kx 	mv $(RPMDIR)/SRPMS/$(DAEMON_ID)-*.src.rpm $$up; \
   169         kx 	mv $(RPMDIR)/RPMS/*/$(DAEMON_ID)-*.*.rpm $$up; \
   169         kx 	rm -rf $(RPMDIR)/BUILD/$(DAEMON_ID); \
   169         kx 	rm -f $(RPMDIR)/SOURCES/$(DAEMON_DIST); \
   169         kx 	rm -f $(RPMDIR)/SPECS/daemon.spec; \
   169         kx 	rpm -qlpv $$up/$(DAEMON_ID)-*.*.rpm
   169         kx 
   169         kx DAEMON_SPEC_CODE := perl -ne ' \
   169         kx 		next if /^=+$$/; \
   169         kx 		chop($$section = $$_), next if /^[A-Z]+$$/; \
   169         kx 		$$summary = $$_ if $$section eq "README" && /^[*\w]/; \
   169         kx 		$$description .= $$_ if $$section eq "DESCRIPTION"; \
   169         kx 		if ($$section ne "README" && $$section ne "DESCRIPTION") \
   169         kx 		{ \
   169         kx 			$$summary =~ s/[*`]//g; \
   169         kx 			$$description =~ s/[*`]//g; \
   169         kx 			print "Summary: $$summary"; \
   169         kx 			print "Name: $(DAEMON_NAME)\n"; \
   169         kx 			print "Version: $(DAEMON_VERSION)\n"; \
   169         kx 			print "Release: 1\n"; \
   169         kx 			print "Group: System Environment/Daemons\n"; \
   169         kx 			print "Source: $(DAEMON_URL)download/$(DAEMON_DIST)\n"; \
   169         kx 			print "URL: $(DAEMON_URL)\n"; \
   169         kx 			print "License: GPL\n"; \
   169         kx 			print "Prefix: $(PREFIX)\n"; \
   169         kx 			print "%description\n"; \
   169         kx 			print $$description; \
   169         kx 			print "%prep\n"; \
   169         kx 			print "%setup\n"; \
   169         kx 			print "%build\n"; \
   169         kx 			print "make\n"; \
   169         kx 			print "%install\n"; \
   169         kx 			print "make PREFIX=\"\$${RPM_BUILD_ROOT}$(PREFIX)\" install-daemon\n"; \
   169         kx 			print "%files\n"; \
   169         kx 			exit; \
   169         kx 		}'
   169         kx 
   169         kx $(DAEMON_SRCDIR)/daemon.spec:
   169         kx 	@set -e; \
   169         kx 	$(DAEMON_SPEC_CODE) < $(DAEMON_SRCDIR)/README.md > $(DAEMON_SRCDIR)/daemon.spec; \
   169         kx 	for file in $(DAEMON_RPM_FILES); do echo $$file >> $(DAEMON_SRCDIR)/daemon.spec; done; \
   169         kx 	for file in $(sort $(DAEMON_RPM_DOCFILES)); do echo %doc $$file >> $(DAEMON_SRCDIR)/daemon.spec; done
   169         kx 
   169         kx # Extra debuild options: Don't sign anything (I'm not a debian maintainer)
   169         kx DEBUILD_OPTIONS := -us -uc
   169         kx 
   169         kx # Extra debuild options should be:
   169         kx # DEBUILD_OPTIONS := -mmaintainer@debian.org
   169         kx 
   169         kx deb-daemon: $(DAEMON_SRCDIR)/debian
   169         kx 	@set -e; \
   169         kx 	CDPATH=""; \
   169         kx 	DAEMON_RENAMED=""; \
   169         kx 	case "`pwd`" in \
   169         kx 		*/$(DAEMON_NAME)) \
   169         kx 			cd ..; \
   169         kx 			[ -d $(DAEMON_NAME)-$(DAEMON_VERSION) ] && echo "error: ../$(DAEMON_NAME)-$(DAEMON_VERSION) exists but we're not in it" && exit 1; \
   169         kx 			mv $(DAEMON_NAME) $(DAEMON_NAME)-$(DAEMON_VERSION); \
   169         kx 			cd $(DAEMON_NAME)-$(DAEMON_VERSION); \
   169         kx 			DAEMON_RENAMED="yes";; \
   169         kx 	esac; \
   169         kx 	echo "Building debian packages."; \
   169         kx 	debuild -rfakeroot -tc $(DEBUILD_OPTIONS); \
   169         kx 	rm -rf $(CLEAN_FILES) $(CLOBBER_FILES); \
   169         kx 	[ "$$DAEMON_RENAMED" = "yes" ] && cd .. && mv $(DAEMON_NAME)-$(DAEMON_VERSION) $(DAEMON_NAME) && cd $(DAEMON_NAME); \
   169         kx 	echo "Listing package info and contents."; \
   169         kx 	dpkg --info ../$(DAEMON_NAME)_$(DAEMON_VERSION)-*_*.deb; \
   169         kx 	dpkg --contents ../$(DAEMON_NAME)_$(DAEMON_VERSION)-*_*.deb
   169         kx 
   169         kx DAEMON_DEBIAN_CONTROL_CODE := perl -p -i -e ' \
   169         kx 		BEGIN { \
   169         kx 			open(README, "../README.md") or die("failed to open ../README.md\n"); \
   169         kx 			while (<README>) \
   169         kx 			{ \
   169         kx 				next if /^=+$$/; \
   169         kx 				chop($$section = $$_), next if /^[A-Z]+$$/; \
   169         kx 				$$summary = $$_ if $$section eq "README" && /^[*\w]/; \
   169         kx 				$$description .= $$_ if $$section eq "DESCRIPTION"; \
   169         kx 				if ($$section ne "README" && $$section ne "DESCRIPTION") \
   169         kx 				{ \
   169         kx 					chop($$description); \
   169         kx 					chop($$description); \
   169         kx 					$$description =~ s/[*`]//g; \
   169         kx 					chop($$summary); \
   169         kx 					$$summary = $$1 if $$summary =~ /^\*?\w+\*? - (.*)$$/; \
   169         kx 					$$description =~ s/^$$/./mg; \
   169         kx 					$$description =~ s/^/ /mg; \
   169         kx 					last; \
   169         kx 				} \
   169         kx 			} \
   169         kx 			close(README); \
   169         kx 		} \
   169         kx 		s/^Section: unknown$$/Section: utils/; \
   169         kx 		s/^(Build-Depends: .*)/$$1, perl/; \
   169         kx 		s/^Homepage: <.*>$$/Homepage: http:\/\/libslack.org\/daemon\//; \
   169         kx 		s/, \$$\{misc:Depends\}//; \
   169         kx 		s/^Description: <insert up to 60 chars description>$$/Description: $$summary/; \
   169         kx 		s/^ <insert long description, indented with spaces>$$/$$description/'
   169         kx 
   169         kx DAEMON_DEBIAN_COPYRIGHT_CODE := perl -p -i -e ' \
   169         kx 		s/<url:\/\/example\.com>/<http:\/\/libslack.org\/daemon\/>/; \
   169         kx 		s/Copyright: <years> <put author.s name and email here>/Copyright: 1999-2004, 2010, 2020-2023 raf <raf\@raf.org>/; \
   169         kx 		s/\s+<years> <likewise for another author>\n//; \
   169         kx 		s/License: <special license>/License: GPL-2+/; \
   169         kx 		s/<Put the license of the package here indented by 1 space>/This software is released under the terms of the GNU General Public License v2+:\n\n    https:\/\/www.gnu.org\/licenses\/   (on the Web)\n    file:\/usr\/share\/common-licenses\/GPL-2  (on Debian systems)/; \
   169         kx 		s/ <This follows the format of Description: lines in control file>\n//; \
   169         kx 		s/ <Including paragraphs>\n//; \
   169         kx 		s/\#.*//'
   169         kx 
   169         kx DAEMON_DEBIAN_RULES_CODE := perl -p -i -e ' \
   169         kx 		s/^\t(.*)\$$\(MAKE\) \S*clean$$/\t$$1\$$(MAKE) clobber/; \
   169         kx 		s/^\t\$$\(MAKE\)$$/\t\$$(MAKE) all daemon.conf man-daemon html-daemon/; \
   169         kx 		s/^\t\$$\(MAKE\) .*install.*$$/\t\$$(MAKE) PREFIX=debian\/$(DAEMON_NAME)\/usr install-daemon-bin\n\t\$$(MAKE) PREFIX=debian\/$(DAEMON_NAME)\/usr\/share install-daemon-man\n\t\$$(MAKE) DAEMON_HTMLDIR=debian\/$(DAEMON_NAME)\/usr\/share\/doc\/daemon\/html install-daemon-html\n\t\$$(MAKE) DAEMON_CONF_INSDIR=debian\/$(DAEMON_NAME)\/etc install-daemon-conf/; \
   169         kx 		s/^\tdh_installexamples$$/\#\tdh_installexamples/; \
   169         kx 		s/^\tdh_installmenu$$/\#\tdh_installmenu/; \
   169         kx 		s/^\tdh_installcron$$/\#\tdh_installcron/; \
   169         kx 		s/^\tdh_installman$$/\#\tdh_installman/; \
   169         kx 		s/^\tdh_installinfo$$/\#\tdh_installinfo/; \
   169         kx 		s/^\tdh_suidregister$$/\#\tdh_suidregister/; \
   169         kx 		s/[ \t]+$$//;'
   169         kx 
   169         kx $(DAEMON_SRCDIR)/debian:
   169         kx 	@set -e; \
   169         kx 	echo "NOT ALLOWED"; exit 1; \
   169         kx 	CDPATH=""; \
   169         kx 	DAEMON_RENAMED=""; \
   169         kx 	case "`pwd`" in \
   169         kx 		*/$(DAEMON_NAME)) \
   169         kx 			cd ..; \
   169         kx 			[ -d $(DAEMON_NAME)-$(DAEMON_VERSION) ] && echo "error: ../$(DAEMON_NAME)-$(DAEMON_VERSION) exists but we're not in it" && exit 1; \
   169         kx 			mv $(DAEMON_NAME) $(DAEMON_NAME)-$(DAEMON_VERSION); \
   169         kx 			cd $(DAEMON_NAME)-$(DAEMON_VERSION); \
   169         kx 			DAEMON_RENAMED="yes"; \
   169         kx 			;; \
   169         kx 	esac; \
   169         kx 	echo "Creating debian directory."; \
   169         kx 	dh_make -h | grep createorig >/dev/null && createorig=--createorig; \
   169         kx 	dh_make $$createorig -s -e raf@raf.org; \
   169         kx 	[ "$$DAEMON_RENAMED" = "yes" ] && cd .. && mv $(DAEMON_NAME)-$(DAEMON_VERSION) $(DAEMON_NAME) && cd $(DAEMON_NAME); \
   169         kx 	cd $(DAEMON_SRCDIR)/debian; \
   169         kx 	echo "Cleaning up debian directory."; \
   169         kx 	rm -f README.Debian README.source *.ex *.EX ex.*; \
   169         kx 	echo "Creating debian/conffiles."; \
   169         kx 	echo /etc/daemon.conf > conffiles; \
   169         kx 	echo "Completing debian/control."; \
   169         kx 	$(DAEMON_DEBIAN_CONTROL_CODE) control; \
   169         kx 	echo "Completing debian/copyright."; \
   169         kx 	$(DAEMON_DEBIAN_COPYRIGHT_CODE) copyright; \
   169         kx 	echo "Completing debian/changelog."; \
   169         kx 	perl -p -i -e 'last if /^Local variables:/' changelog; \
   169         kx 	perl -p -i -e 's/ \(Closes.*//' changelog; \
   169         kx 	perl -p -i -e 's/-1/-0/' changelog; \
   169         kx 	echo "Creating debian/doc-base."; \
   169         kx 	echo "Document: $(DAEMON_NAME)" > doc-base; \
   169         kx 	echo "Title: $(DAEMON_NAME) manual" >> doc-base; \
   169         kx 	echo "Author: raf <raf@raf.org>" >> doc-base; \
   169         kx 	echo "Abstract: $(DAEMON_NAME)(1) - turns other processes into daemons" >> doc-base; \
   169         kx 	echo "Section: Applications/System" >> doc-base; \
   169         kx 	echo "" >> doc-base; \
   169         kx 	echo "Format: HTML" >> doc-base; \
   169         kx 	echo "Index: /usr/share/doc/$(DAEMON_NAME)/html/" >> doc-base; \
   169         kx 	echo "Files: /usr/share/doc/$(DAEMON_NAME)/html/*.html" >> doc-base; \
   169         kx 	echo "" >> doc-base; \
   169         kx 	echo "Completing debian/rules."; \
   169         kx 	$(DAEMON_DEBIAN_RULES_CODE) rules
   169         kx 
   169         kx $(DAEMON_SRCDIR)/$(DAEMON_CONFFILE):
   169         kx 	@echo '# /etc/daemon.conf: system-wide daemon(1) configuration.' > $(DAEMON_SRCDIR)/$(DAEMON_CONFFILE); \
   169         kx 	echo '# See daemon(1) or daemon.conf(5) for full documentation.' >> $(DAEMON_SRCDIR)/$(DAEMON_CONFFILE); \
   169         kx 	echo '#' >> $(DAEMON_SRCDIR)/$(DAEMON_CONFFILE); \
   169         kx 	echo '# Format:' >> $(DAEMON_SRCDIR)/$(DAEMON_CONFFILE); \
   169         kx 	echo '# VAR=value' >> $(DAEMON_SRCDIR)/$(DAEMON_CONFFILE); \
   169         kx 	echo '# <name|"*"> <option(","option)*>' >> $(DAEMON_SRCDIR)/$(DAEMON_CONFFILE); \
   169         kx 	echo '#' >> $(DAEMON_SRCDIR)/$(DAEMON_CONFFILE); \
   169         kx 	echo '# Example:' >> $(DAEMON_SRCDIR)/$(DAEMON_CONFFILE); \
   169         kx 	echo '# PATH=$$PATH:~/bin' >> $(DAEMON_SRCDIR)/$(DAEMON_CONFFILE); \
   169         kx 	echo '# *      pidfiles=~/.pidfiles' >> $(DAEMON_SRCDIR)/$(DAEMON_CONFFILE); \
   169         kx 	echo '# name   respawn,command=/usr/bin/command args' >> $(DAEMON_SRCDIR)/$(DAEMON_CONFFILE); \
   169         kx 	echo '' >> $(DAEMON_SRCDIR)/$(DAEMON_CONFFILE)
   169         kx 
   169         kx sol-daemon: $(DAEMON_SRCDIR)/daemon.pkginfo
   169         kx 	@set -e; \
   169         kx 	base="`pwd`"; \
   169         kx 	up="$$base/.."; \
   169         kx 	mkdir -p $(DAEMON_SRCDIR)/solaris/install; \
   169         kx 	mkdir -p $(DAEMON_SRCDIR)/solaris/build; \
   169         kx 	mkdir -p $(DAEMON_SRCDIR)/solaris/info; \
   169         kx 	cd $(DAEMON_SRCDIR)/solaris/build; \
   169         kx 	gzip -dc $$up/$(DAEMON_DIST) | tar xf -; \
   169         kx 	cd $(DAEMON_ID); \
   169         kx 	./configure; \
   169         kx 	gmake PREFIX=../../install FINAL_PREFIX="$(PREFIX)" all install-daemon; \
   169         kx 	cd "$$base"; \
   169         kx 	mv $(DAEMON_SRCDIR)/daemon.pkginfo $(DAEMON_SRCDIR)/solaris/info/pkginfo; \
   169         kx 	cd $(DAEMON_SRCDIR)/solaris/install; \
   169         kx 	pkgproto . > ../info/prototype; \
   169         kx 	echo "i pkginfo" >> ../info/prototype; \
   169         kx 	cd ../info; \
   169         kx 	pkgmk -o -b ../install -r ../install $(DAEMON_SOL); \
   169         kx 	cd "$$base"; \
   169         kx 	rm -rf $(DAEMON_SRCDIR)/solaris; \
   169         kx 	arch="`isainfo -k`"; \
   169         kx 	pkgtrans /var/spool/pkg $(DAEMON_ID).$$arch.pkg $(DAEMON_SOL); \
   169         kx 	rm -rf /var/spool/pkg/$(DAEMON_SOL); \
   169         kx 	mv /var/spool/pkg/$(DAEMON_ID).$$arch.pkg $$up/$(DAEMON_ID)-solaris-$$arch.pkg; \
   169         kx 	gzip $$up/$(DAEMON_ID)-solaris-$$arch.pkg
   169         kx 
   169         kx DAEMON_PKGINFO_CODE := perl -ne ' \
   169         kx 		next if /^=+$$/; \
   169         kx 		chop($$section = $$_), next if /^[A-Z]+$$/; \
   169         kx 		chop($$description = $$_) if $$section eq "README" && /^[*\w]/; \
   169         kx 		if ($$section ne "README") \
   169         kx 		{ \
   169         kx 			$$description =~ s/[*`]//g; \
   169         kx 			print "PKG=\"$(DAEMON_SOL)\"\n"; \
   169         kx 			print "NAME=\"$$description\"\n"; \
   169         kx 			print "VERSION=\"$(DAEMON_VERSION)\"\n"; \
   169         kx 			print "CATEGORY=\"application\"\n"; \
   169         kx 			print "BASEDIR=\"$(FINAL_PREFIX)\"\n"; \
   169         kx 			exit; \
   169         kx 		}'
   169         kx 
   169         kx $(DAEMON_SRCDIR)/daemon.pkginfo:
   169         kx 	@set -e; \
   169         kx 	$(DAEMON_PKGINFO_CODE) < $(DAEMON_SRCDIR)/README.md > $(DAEMON_SRCDIR)/daemon.pkginfo
   169         kx 
   169         kx obsd-daemon: $(DAEMON_SRCDIR)/obsd-daemon-oneline $(DAEMON_SRCDIR)/obsd-daemon-description
   169         kx 	@set -e; \
   169         kx 	base="`pwd`"; \
   169         kx 	up="$$base/.."; \
   169         kx 	mkdir -p "$$base/obsd-$(DAEMON_NAME)/build"; \
   169         kx 	mkdir -p "$$base/obsd-$(DAEMON_NAME)/install"; \
   169         kx 	cd "$$base/obsd-$(DAEMON_NAME)/build"; \
   169         kx 	tar xzf "$$up/$(DAEMON_DIST)"; \
   169         kx 	cd ./$(DAEMON_ID); \
   169         kx 	./configure; \
   169         kx 	gmake PREFIX=../../install FINAL_PREFIX="$(PREFIX)" all install-daemon; \
   169         kx 	cd "$$base"; \
   169         kx 	echo "@cwd $(PREFIX)" >> $(DAEMON_SRCDIR)/obsd-daemon-packinglist; \
   169         kx 	for file in $(patsubst $(PREFIX)/%, %, $(sort $(DAEMON_RPM_FILES) $(DAEMON_RPM_DOCFILES))); do echo $$file >> $(DAEMON_SRCDIR)/obsd-daemon-packinglist; done; \
   169         kx 	arch="`uname -m`"; \
   169         kx 	pkg_create -A "$$arch" -f $(DAEMON_SRCDIR)/obsd-daemon-packinglist -D COMMENT="`cat $(DAEMON_SRCDIR)/obsd-daemon-oneline`" -d $(DAEMON_SRCDIR)/obsd-daemon-description -p / -v $(DAEMON_ID).tgz; \
   169         kx 	mv $(DAEMON_ID).tgz "$$up/$(DAEMON_ID)-openbsd-$$arch.tgz"; \
   169         kx 	rm -rf "$$base/obsd-$(DAEMON_NAME)" $(DAEMON_SRCDIR)/obsd-daemon-packinglist $(DAEMON_SRCDIR)/obsd-daemon-oneline $(DAEMON_SRCDIR)/obsd-daemon-description
   169         kx 
   169         kx DAEMON_OBSD_ONELINE_CODE := perl -ne ' \
   169         kx 		next if /^=+$$/; \
   169         kx 		chop($$section = $$_), next if /^[A-Z]+$$/; \
   169         kx 		chop($$description = $$_) if $$section eq "README" && /^[*\w]/; \
   169         kx 		if ($$section ne "README") \
   169         kx 		{ \
   169         kx 			my ($$name, $$desc) = $$description =~ /^\*?(\w+)\*? - (.*)$$/; \
   169         kx 			print "$$desc\n"; \
   169         kx 			exit; \
   169         kx 		}'
   169         kx 
   169         kx $(DAEMON_SRCDIR)/obsd-daemon-oneline:
   169         kx 	@$(DAEMON_OBSD_ONELINE_CODE) < $(DAEMON_SRCDIR)/README.md > $(DAEMON_SRCDIR)/obsd-daemon-oneline
   169         kx 
   169         kx DAEMON_OBSD_DESCRIPTION_CODE := perl -ne ' \
   169         kx 		next if /^=+$$/; \
   169         kx 		chop($$section = $$_), next if /^[A-Z]+$$/; \
   169         kx 		$$description .= $$_ if $$section eq "DESCRIPTION"; \
   169         kx 		if ($$section ne "README" && $$section ne "DESCRIPTION") \
   169         kx 		{ \
   169         kx 			$$description =~ s/[*`]//g; \
   169         kx 			print $$description; \
   169         kx 			exit; \
   169         kx 		}'
   169         kx 
   169         kx $(DAEMON_SRCDIR)/obsd-daemon-description:
   169         kx 	@$(DAEMON_OBSD_DESCRIPTION_CODE) < $(DAEMON_SRCDIR)/README.md > $(DAEMON_SRCDIR)/obsd-daemon-description
   169         kx 
   169         kx fbsd-daemon: $(DAEMON_SRCDIR)/fbsd-daemon-oneline $(DAEMON_SRCDIR)/fbsd-daemon-description
   169         kx 	@set -e; \
   169         kx 	base="`pwd`"; \
   169         kx 	up="$$base/.."; \
   169         kx 	mkdir -p "$$base/fbsd-$(DAEMON_NAME)/build"; \
   169         kx 	mkdir -p "$$base/fbsd-$(DAEMON_NAME)/install"; \
   169         kx 	cd "$$base/fbsd-$(DAEMON_NAME)/build"; \
   169         kx 	tar xzf "$$up/$(DAEMON_DIST)"; \
   169         kx 	cd ./$(DAEMON_ID); \
   169         kx 	./configure; \
   169         kx 	gmake PREFIX=../../install FINAL_PREFIX="$(PREFIX)" all install-daemon; \
   169         kx 	cd "$$base"; \
   169         kx 	echo "@name $(DAEMON_ID)" > $(DAEMON_SRCDIR)/fbsd-daemon-packinglist; \
   169         kx 	echo "@cwd $(PREFIX)" >> $(DAEMON_SRCDIR)/fbsd-daemon-packinglist; \
   169         kx 	echo "@srcdir $$base/fbsd-$(DAEMON_NAME)/install" >> $(DAEMON_SRCDIR)/fbsd-daemon-packinglist; \
   169         kx 	for file in $(patsubst $(PREFIX)/%, %, $(sort $(DAEMON_RPM_FILES) $(DAEMON_RPM_DOCFILES))); do echo $$file >> $(DAEMON_SRCDIR)/fbsd-daemon-packinglist; done; \
   169         kx 	pkg_create -f $(DAEMON_SRCDIR)/fbsd-daemon-packinglist -c $(DAEMON_SRCDIR)/fbsd-daemon-oneline -d $(DAEMON_SRCDIR)/fbsd-daemon-description -v $(DAEMON_NAME); \
   169         kx 	arch="`uname -m`"; \
   169         kx 	mv $(DAEMON_NAME).tbz "$$up/$(DAEMON_ID)-freebsd-$$arch.tbz"; \
   169         kx 	rm -rf "$$base/fbsd-$(DAEMON_NAME)" $(DAEMON_SRCDIR)/fbsd-daemon-packinglist $(DAEMON_SRCDIR)/fbsd-daemon-oneline $(DAEMON_SRCDIR)/fbsd-daemon-description
   169         kx 
   169         kx DAEMON_FBSD_ONELINE_CODE := perl -ne ' \
   169         kx 		next if /^=+$$/; \
   169         kx 		chop($$section = $$_), next if /^[A-Z]+$$/; \
   169         kx 		chop($$description = $$_) if $$section eq "README" && /^[*\w]/; \
   169         kx 		if ($$section ne "README") \
   169         kx 		{ \
   169         kx 			my ($$name, $$desc) = $$description =~ /^\*?(\w+)\*? - (.*)$$/; \
   169         kx 			print "$$desc\n"; \
   169         kx 			exit; \
   169         kx 		}'
   169         kx 
   169         kx $(DAEMON_SRCDIR)/fbsd-daemon-oneline:
   169         kx 	@$(DAEMON_FBSD_ONELINE_CODE) < $(DAEMON_SRCDIR)/README.md > $(DAEMON_SRCDIR)/fbsd-daemon-oneline
   169         kx 
   169         kx DAEMON_FBSD_DESCRIPTION_CODE := perl -ne ' \
   169         kx 		next if /^=+$$/; \
   169         kx 		chop($$section = $$_), next if /^[A-Z]+$$/; \
   169         kx 		$$description .= $$_ if $$section eq "DESCRIPTION"; \
   169         kx 		if ($$section ne "README" && $$section ne "DESCRIPTION") \
   169         kx 		{ \
   169         kx 			$$description =~ s/[*`]//g; \
   169         kx 			print $$description; \
   169         kx 			exit; \
   169         kx 		}'
   169         kx 
   169         kx $(DAEMON_SRCDIR)/fbsd-daemon-description:
   169         kx 	@$(DAEMON_FBSD_DESCRIPTION_CODE) < $(DAEMON_SRCDIR)/README.md > $(DAEMON_SRCDIR)/fbsd-daemon-description
   169         kx 
   169         kx nbsd-daemon: $(DAEMON_SRCDIR)/nbsd-daemon-oneline $(DAEMON_SRCDIR)/nbsd-daemon-description $(DAEMON_SRCDIR)/nbsd-daemon-buildinfo
   169         kx 	@set -e; \
   169         kx 	base="`pwd`"; \
   169         kx 	up="$$base/.."; \
   169         kx 	mkdir -p "$$base/nbsd-$(DAEMON_NAME)/build"; \
   169         kx 	mkdir -p "$$base/nbsd-$(DAEMON_NAME)/install"; \
   169         kx 	cd "$$base/nbsd-$(DAEMON_NAME)/build"; \
   169         kx 	tar xzf "$$up/$(DAEMON_DIST)"; \
   169         kx 	cd ./$(DAEMON_ID); \
   169         kx 	./configure; \
   169         kx 	gmake PREFIX=../../install FINAL_PREFIX="$(PREFIX)" all install-daemon; \
   169         kx 	cd "$$base"; \
   169         kx 	echo "@name $(DAEMON_ID)" > $(DAEMON_SRCDIR)/nbsd-daemon-packinglist; \
   169         kx 	echo "@cwd $(PREFIX)" >> $(DAEMON_SRCDIR)/nbsd-daemon-packinglist; \
   169         kx 	echo "@src $$base/nbsd-$(DAEMON_NAME)/install" >> $(DAEMON_SRCDIR)/nbsd-daemon-packinglist; \
   169         kx 	for file in $(patsubst $(PREFIX)/%, %, $(sort $(DAEMON_RPM_FILES) $(DAEMON_RPM_DOCFILES))); do echo $$file >> $(DAEMON_SRCDIR)/nbsd-daemon-packinglist; done; \
   169         kx 	pkg_create -f $(DAEMON_SRCDIR)/nbsd-daemon-packinglist -c $(DAEMON_SRCDIR)/nbsd-daemon-oneline -d $(DAEMON_SRCDIR)/nbsd-daemon-description -B $(DAEMON_SRCDIR)/nbsd-daemon-buildinfo -v $(DAEMON_NAME); \
   169         kx 	arch="`uname -m`"; \
   169         kx 	mv $(DAEMON_NAME).tgz "$$up/$(DAEMON_ID)-netbsd-$$arch.tgz"; \
   169         kx 	cat $(DAEMON_SRCDIR)/nbsd-daemon-packinglist; \
   169         kx 	rm -rf "$$base/nbsd-$(DAEMON_NAME)" $(DAEMON_SRCDIR)/nbsd-daemon-packinglist $(DAEMON_SRCDIR)/nbsd-daemon-oneline $(DAEMON_SRCDIR)/nbsd-daemon-description $(DAEMON_SRCDIR)/nbsd-daemon-buildinfo
   169         kx 
   169         kx DAEMON_NBSD_ONELINE_CODE := perl -ne ' \
   169         kx 		next if /^=+$$/; \
   169         kx 		chop($$section = $$_), next if /^[A-Z]+$$/; \
   169         kx 		chop($$description = $$_) if $$section eq "README" && /^[*\w]/; \
   169         kx 		if ($$section ne "README") \
   169         kx 		{ \
   169         kx 			my ($$name, $$desc) = $$description =~ /^\*?(\w+)\*? - (.*)$$/; \
   169         kx 			print "$$desc\n"; \
   169         kx 			exit; \
   169         kx 		}'
   169         kx 
   169         kx $(DAEMON_SRCDIR)/nbsd-daemon-oneline:
   169         kx 	@$(DAEMON_NBSD_ONELINE_CODE) < $(DAEMON_SRCDIR)/README.md > $(DAEMON_SRCDIR)/nbsd-daemon-oneline
   169         kx 
   169         kx DAEMON_NBSD_DESCRIPTION_CODE := perl -ne ' \
   169         kx 		next if /^=+$$/; \
   169         kx 		chop($$section = $$_), next if /^[A-Z]+$$/; \
   169         kx 		$$description .= $$_ if $$section eq "DESCRIPTION"; \
   169         kx 		if ($$section ne "README" && $$section ne "DESCRIPTION") \
   169         kx 		{ \
   169         kx 			$$description =~ s/[*`]//g; \
   169         kx 			print $$description; \
   169         kx 			exit; \
   169         kx 		}'
   169         kx 
   169         kx $(DAEMON_SRCDIR)/nbsd-daemon-description:
   169         kx 	@$(DAEMON_NBSD_DESCRIPTION_CODE) < $(DAEMON_SRCDIR)/README.md > $(DAEMON_SRCDIR)/nbsd-daemon-description
   169         kx 
   169         kx $(DAEMON_SRCDIR)/nbsd-daemon-buildinfo:
   169         kx 	@echo "MACHINE_ARCH=`uname -p`" > $(DAEMON_SRCDIR)/nbsd-daemon-buildinfo; \
   169         kx 	echo "OPSYS=`uname -s`" >> $(DAEMON_SRCDIR)/nbsd-daemon-buildinfo; \
   169         kx 	echo "OS_VERSION=`uname -r`" >> $(DAEMON_SRCDIR)/nbsd-daemon-buildinfo
   169         kx 
   169         kx osx-daemon:
   169         kx 	@set -e; \
   169         kx 	base="`pwd`"; \
   169         kx 	up="$$base/.."; \
   169         kx 	mkdir -p "osx-$(DAEMON_NAME)/build"; \
   169         kx 	mkdir -p "osx-$(DAEMON_NAME)/install"; \
   169         kx 	cd "./osx-$(DAEMON_NAME)/build"; \
   169         kx 	tar xzf "$$up/$(DAEMON_DIST)"; \
   169         kx 	cd ./$(DAEMON_ID); \
   169         kx 	./configure; \
   169         kx 	make PREFIX=../../install FINAL_PREFIX="$(PREFIX)" all install-daemon; \
   169         kx 	cd ../../install; \
   169         kx 	arch="`uname -m`"; \
   169         kx 	tar czf "$$up/$(DAEMON_ID)-macosx-$$arch.tar.gz" .; \
   169         kx 	cd "$$base"; \
   169         kx 	rm -rf "$$base/osx-$(DAEMON_NAME)"
   169         kx 
   169         kx # Present make targets separately in help if we are not alone
   169         kx 
   169         kx ifneq ($(DAEMON_SRCDIR), .)
   169         kx DAEMON_SPECIFIC_HELP := 1
   169         kx else
   169         kx ifneq ($(DAEMON_SUBTARGETS),)
   169         kx DAEMON_SPECIFIC_HELP := 1
   169         kx endif
   169         kx endif
   169         kx 
   169         kx ifeq ($(DAEMON_SPECIFIC_HELP), 1)
   169         kx help::
   169         kx 	@echo " $(DAEMON_NAME)               -- makes $(DAEMON_TARGET) and $(DAEMON_SUBTARGETS)"; \
   169         kx 	echo " man-$(DAEMON_NAME)           -- makes the $(DAEMON_NAME) manpages"; \
   169         kx 	echo " html-$(DAEMON_NAME)          -- makes the $(DAEMON_NAME) manpages in html"; \
   169         kx 	echo " install-daemon        -- installs $(DAEMON_NAME) and its manpage"; \
   169         kx 	echo " install-daemon-bin    -- installs $(DAEMON_NAME) in $(DESTDIR)$(APP_INSDIR)"; \
   169         kx 	echo " install-daemon-man    -- installs the $(DAEMON_NAME) manpage in $(DESTDIR)$(APP_MANDIR)"; \
   169         kx 	echo " install-daemon-html   -- installs the $(DAEMON_NAME) html manpage in $(DESTDIR)$(DAEMON_HTMLDIR)"; \
   169         kx 	echo " install-daemon-conf   -- installs the $(DAEMON_NAME).conf{,.d} file/directory in $(DESTDIR)$(DAEMON_CONF_INSDIR)"; \
   169         kx 	echo " uninstall-daemon      -- uninstalls $(DAEMON_NAME) and its manpage"; \
   169         kx 	echo " uninstall-daemon-bin  -- uninstalls $(DAEMON_NAME) from $(DESTDIR)$(APP_INSDIR)"; \
   169         kx 	echo " uninstall-daemon-man  -- uninstalls the $(DAEMON_NAME) manpage from $(DESTDIR)$(APP_MANDIR)"; \
   169         kx 	echo " uninstall-daemon-html -- uninstalls the $(DAEMON_NAME) html manpage from $(DESTDIR)$(DAEMON_HTMLDIR)"; \
   169         kx 	echo " uninstall-daemon-conf -- uninstalls the $(DAEMON_NAME).conf{,.d} file/directory from $(DESTDIR)$(DAEMON_CONF_INSDIR)"; \
   169         kx 	echo " dist-daemon           -- makes a source tarball for daemon+libslack"; \
   169         kx 	echo " dist-html-daemon      -- makes a tarball of daemon's html manpages"; \
   169         kx 	echo " rpm-daemon            -- makes source and binary rpm packages for daemon"; \
   169         kx 	echo " deb-daemon            -- makes source and binary deb package for daemon"; \
   169         kx 	echo " sol-daemon            -- makes a binary solaris package for daemon"; \
   169         kx 	echo " obsd-daemon           -- makes a binary openbsd package for daemon"; \
   169         kx 	echo " fbsd-daemon           -- makes a binary freebsd package for daemon"; \
   169         kx 	echo " nbsd-daemon           -- makes a binary netbsd package for daemon"; \
   169         kx 	echo " osx-daemon            -- makes a binary macosx package for daemon"; \
   169         kx 	echo
   169         kx endif
   169         kx 
   169         kx help-macros::
   169         kx 	@echo "DAEMON_NAME = $(DAEMON_NAME)"; \
   169         kx 	echo "DAEMON_VERSION = $(DAEMON_VERSION)"; \
   169         kx 	echo "DAEMON_ID = $(DAEMON_ID)"; \
   169         kx 	echo "DAEMON_DIST = $(DAEMON_DIST)"; \
   169         kx 	echo "DAEMON_HTML_DIST = $(DAEMON_HTML_DIST)"; \
   169         kx 	echo "DAEMON_TARGET = $(DAEMON_TARGET)"; \
   169         kx 	echo "DAEMON_MODULES = $(DAEMON_MODULES)"; \
   169         kx 	echo "DAEMON_SRCDIR = $(DAEMON_SRCDIR)"; \
   169         kx 	echo "DAEMON_INCDIRS = $(DAEMON_INCDIRS)"; \
   169         kx 	echo "DAEMON_LIBDIRS = $(DAEMON_LIBDIRS)"; \
   169         kx 	echo "DAEMON_LIBS = $(DAEMON_LIBS)"; \
   169         kx 	echo "DAEMON_CFILES = $(DAEMON_CFILES)"; \
   169         kx 	echo "DAEMON_OFILES = $(DAEMON_OFILES)"; \
   169         kx 	echo "DAEMON_HFILES = $(DAEMON_HFILES)"; \
   169         kx 	echo "DAEMON_HTMLDIR = $(DAEMON_HTMLDIR)"; \
   169         kx 	echo "DAEMON_PODFILES = $(DAEMON_PODFILES)"; \
   169         kx 	echo "DAEMON_MANFILES = $(DAEMON_MANFILES)"; \
   169         kx 	echo "DAEMON_HTMLFILES = $(DAEMON_HTMLFILES)"; \
   169         kx 	echo "DAEMON_CONFFILE = $(DAEMON_CONFFILE)"; \
   169         kx 	echo "DAEMON_CONFDIR = $(DAEMON_CONFDIR)"; \
   169         kx 	echo "DAEMON_RPM_FILES = $(DAEMON_RPM_FILES)"; \
   169         kx 	echo "DAEMON_RPM_DOCFILES = $(DAEMON_RPM_DOCFILES)"; \
   169         kx 	echo "DAEMON_DEFINES = $(DAEMON_DEFINES)"; \
   169         kx 	echo "DAEMON_CPPFLAGS = $(DAEMON_CPPFLAGS)"; \
   169         kx 	echo "DAEMON_CCFLAGS = $(DAEMON_CCFLAGS)"; \
   169         kx 	echo "DAEMON_CFLAGS = $(DAEMON_CFLAGS)"; \
   169         kx 	echo "DAEMON_LDFLAGS = $(DAEMON_LDFLAGS)"; \
   169         kx 	echo "DAEMON_SUBTARGETS = $(DAEMON_SUBTARGETS)"; \
   169         kx 	echo "DAEMON_SUBDIRS = $(DAEMON_SUBDIRS)"; \
   169         kx 	echo
   169         kx 
   169         kx include $(SLACK_SRCDIR)/rules.mk
   169         kx 
   169         kx $(DAEMON_SRCDIR)/%.o: $(DAEMON_SRCDIR)/%.c
   169         kx 	$(CC) $(DAEMON_CFLAGS) -o $@ -c $<
   169         kx 
   169         kx $(DAEMON_SRCDIR)/%.$(APP_MANSECT): $(DAEMON_SRCDIR)/%.c
   169         kx 	$(POD2MAN) --section=$(APP_MANSECT) --center='$(APP_MANSECTNAME)' --name=$(shell echo $(DAEMON_NAME) | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ) --release=$(DAEMON_ID) --date=$(DAEMON_DATE) --quotes=none $< > $@
   169         kx 
   169         kx $(DAEMON_SRCDIR)/%.gz: $(DAEMON_SRCDIR)/%
   169         kx 	$(GZIP) $<
   169         kx 
   169         kx $(DAEMON_SRCDIR)/%.$(APP_MANSECT).html: $(DAEMON_SRCDIR)/%.c
   169         kx 	$(POD2HTML) --noindex < $< > $@ 2>/dev/null
   169         kx