#!/usr/bin/make -f # Basic package information. package := $(shell grep Source debian/control | sed 's/^Source: //') date := $(shell date +"%Y-%m-%d") version := $(shell dpkg-parsechangelog | awk '/^Version:/ { print $$2; exit }') # Currently, emacs23 is required (xemacs is not sufficient). EMACS := emacs24 # Location of the source and build directories. SRCTOP := $(CURDIR) TMPTOP := $(SRCTOP)/debian/tmp DOCDIR := $(TMPTOP)/usr/share/doc/$(package) LIBDIR := $(TMPTOP)/usr/share/doc-base # SGML source files in the top-level directory. We do some common actions # with each of these: validate, build text, HTML, and one-page HTML output, # and generate a tarball of the source. SGML_FILES := policy menu-policy perl-policy upgrading-checklist # org-mode source files in the top-level directory. We generate text and # HTML versions from these. ORG_FILES := Process README # doc-base description files for the documents we include. DESC_FILES := copyright-format-1.0 debian-policy debian-menu-policy \ debian-perl-policy debconf-spec fhs autopkgtest # Our local copy of the File Hierarchy Standard. We don't build this from # source, but we do have a copy of the source in FHS_ARCHIVE. FHS_ARCHIVE := fhs-2.3-source.tar.gz FHS_FILES := fhs-2.3.html fhs-2.3.ps.gz fhs-2.3.txt.gz fhs-2.3.pdf.gz # A list of the simple Policy files that we include in the documentation # directory of the generated package. The tarballs of source are handled # separately, as are the directories of HTML output. POLICY_FILES := $(SGML_FILES:=.sgml) $(SGML_FILES:=.txt.gz) \ $(SGML_FILES:=-1.html) version.ent \ virtual-package-names-list.txt libc6-migration.txt \ copyright-format/copyright-format-1.0.html \ copyright-format/copyright-format-1.0.txt.gz \ autopkgtest/autopkgtest.html \ autopkgtest/autopkgtest.txt.gz \ debconf_spec/debconf_specification.html \ debconf_spec/debconf_specification.txt.gz \ policy.ps.gz policy.pdf.gz README.txt README.html \ Process.txt Process.html # Used by the clean rules. STAMPS_TO_CLEAN are the stamp files used to tell # make that a target has completed, and are removed first. FILES_TO_CLEAN # are individual generated files to remove. DIRS_TO_CLEAN are entire # directories to remove. STAMPS_TO_CLEAN := stamp-binary stamp-build DIRS_TO_CLEAN := $(SGML_FILES:=.html) debian/tmp fhs FILES_TO_CLEAN := $(SGML_FILES:=.txt) $(SGML_FILES:=.txt.gz) \ $(SGML_FILES:=.html.tar.gz) $(SGML_FILES:=-1.html) \ $(ORG_FILES:=.html) $(ORG_FILES:=.txt) \ policy.pdf.gz policy.ps.gz \ policy.pdf policy.ps policy.tpt policy.txt \ copyright-format/version.xml \ autopkgtest/version.txt \ debconf_spec/include/version.xml version.ent \ copyright-format.xml.tar.gz \ debconf_specification.xml.tar.gz \ debian/files # Install files and directories with the correct ownership and permissions. install := install -p -o root -g root -m 644 mkdir := install -d -o root -g root -m 755 all build build-indep: stamp-build build-arch: stamp-build: version.ent copyright-format/version.xml \ autopkgtest/version.txt \ debconf_spec/include/version.xml $(MAKE) $(SGML_FILES:=.sgml.validate) \ $(SGML_FILES:=.html.tar.gz) \ $(SGML_FILES:=-1.html) \ $(SGML_FILES:=.txt.gz) \ policy.ps.gz policy.pdf.gz $(MAKE) $(ORG_FILES:=.html) \ $(ORG_FILES:=.txt) $(MAKE) -C copyright-format all $(MAKE) -C autopkgtest all $(MAKE) -C debconf_spec all cd copyright-format && \ GZIP=-n9 tar -zcf ../copyright-format.xml.tar.gz * cd debconf_spec && \ GZIP=-n9 tar -zcf ../debconf_specification.xml.tar.gz * touch stamp-build # Create the version files for inclusion in the various documents. We want # to put the Policy version and date in each document, even if they # separately have their own versions. configure: version.ent copyright-format/version.xml \ autopkgtest/version.txt \ debconf_spec/include/version.xml version.ent: debian/changelog rm -f $@ echo "" >> $@ echo "" >> $@ copyright-format/version.xml: debian/changelog rm -f $@ echo '' > $@ echo '' >> $@ echo '' >> $@ debconf_spec/include/version.xml: debian/changelog rm -f $@ echo '' > $@ echo '' >> $@ echo '' >> $@ autopkgtest/version.txt: debian/changelog rm -f $@ echo > $@ echo '---' >> $@ echo 'Debian Policy $(version), $(date)' >> $@ clean: rm -f $(STAMPS_TO_CLEAN) $(MAKE) -C copyright-format clean $(MAKE) -C autopkgtest clean $(MAKE) -C debconf_spec clean rm -f $(FILES_TO_CLEAN) rm -rf $(DIRS_TO_CLEAN) rm -f core `find . \( -name '*.orig' -o -name '*.rej' -o \ -name '*~' -o -name '*.bak' -o -name '#*#' -o \ -name '.*.orig' -o -name '.*.rej' -o -name '.SUMS' -o \ -size 0 \) -print` TAGS binary: binary-indep binary-arch binary-arch: binary-indep: stamp-binary stamp-binary: stamp-build @test $$(id | sed -e 's/(.*$$//' -e 's/^uid=//') -eq 0 || \ (echo 'You must run this as root (or use fakeroot)' >&2; exit 1) rm -rf $(TMPTOP) $(mkdir) $(TMPTOP)/DEBIAN $(mkdir) $(DOCDIR)/fhs $(mkdir) $(LIBDIR) # # Install simple files. # $(install) $(POLICY_FILES) $(DOCDIR)/ $(install) $(FHS_FILES) $(DOCDIR)/fhs/ $(install) debian/changelog $(DOCDIR)/ $(install) debian/copyright $(DOCDIR)/ # # Install DocBook XML source. # $(install) copyright-format.xml.tar.gz $(DOCDIR)/ $(install) debconf_specification.xml.tar.gz $(DOCDIR)/ # # Install generated HTML directories. # @set -ex; for file in $(SGML_FILES); do \ tar -C $(DOCDIR) -zxf $$file.html.tar.gz; \ done # # Make upgrading-checklist-1.html a symlink to the copy in the policy.html # directory. This is temporary until it becomes a proper appendix. # rm -f $(DOCDIR)/upgrading-checklist-1.html ln -s policy.html/upgrading-checklist.html \ $(DOCDIR)/upgrading-checklist-1.html # # Install doc-base files. # @set -ex; for file in $(DESC_FILES); do \ $(install) $$file.desc $(LIBDIR)/$$file; \ done # # Compress files and build MD5 checksums. # gzip -f9 $(DOCDIR)/*.sgml $(DOCDIR)/changelog gzip -f9 -n $(DOCDIR)/*.txt @set -ex; cd debian/tmp; \ find . -path './DEBIAN' -prune -o -type f -printf '%P\0' \ | xargs -r0 md5sum > DEBIAN/md5sums # # Build the package. # dpkg-gencontrol -p$(package) -Pdebian/tmp chown -R root:root debian/tmp chmod -R go=rX debian/tmp dpkg --build debian/tmp .. touch stamp-binary .PHONY: all configure build build-arch build-indep binary binary-arch .PHONY: binary-indep clean