#!/usr/bin/make -f # vim: nowrap ts=8 # Build locations BUILD := $(CURDIR)/build TMP := $(CURDIR)/debian/tmp INSTALL_TMP := $(TMP)/install TMP_DPKG := $(TMP)/dpkg TMP_DPKG_DEV := $(TMP)/dpkg-dev TMP_DPKG_DOC := $(TMP)/dpkg-doc TMP_DSELECT := $(TMP)/dselect # We should really get this in a different way... DEB_BUILD_GNU_TYPE := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE 2> /dev/null || true) DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE 2> /dev/null || true) arch := $(shell dpkg-architecture -qDEB_HOST_ARCH) GENCONTROL := perl -I $(CURDIR)/scripts scripts/dpkg-gencontrol.pl -isp ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) config_arg := --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE) else config_arg := endif BUILD-DIRS := $(BUILD) $(BUILD)-static aclocal.m4: $(wildcard automake/*.m4) aclocal -I automake # The following 2 rules should only be run, if their dependants have # been modified. For clean builds, this won't happen. Only if the # builder has modified these files after extraction. configure: configure.in aclocal.m4 autoconf config.h.in: configure.in autoheader config.guess config.sub: %: /usr/share/misc/% cp -a $< $@.new mv $@.new $@ # Setup the buildlocation $(BUILD)/configure-stamp: configure config.h.in config.guess config.sub $(checkdir) install -d $(@D) cd $(@D) && LDFLAGS=$(LDFLAGS) $(shell echo "$(patsubst $(CURDIR)/%,%,$(@D))" | sed -e 's,^[^/][^/]*$$,..,;s,/[^/][^/]*,/..,g' )/configure \ --prefix=/usr \ --datadir=/usr/share \ --mandir=/usr/share/man \ --infodir=/usr/share/info \ --sysconfdir=/etc \ --sharedstatedir=/var/lib \ --localstatedir=/var/lib \ --with-admindir=/var/lib/dpkg \ --with-zlib=static \ --with-static-progs \ $(config_arg) touch $@ clean: $(checkdir) rm -f debian/files debian/substvars rm -f debian/dpkg.substvars debian/dpkg-static.substvars rm -fr autom4te.cache rm -fr $(BUILD-DIRS) $(TMP) rm -f po/{cat-id-tbl.c,stamp-cat-id,*.gmo} rm -f stamp-build stamp-binary build: stamp-build stamp-build: $(BUILD)/configure-stamp $(MAKE) $(MFLAGS) -C $(BUILD) # touch $@ binary-static: binary-arch-static binary: binary-arch binary-indep stamp-binary-static: stamp-binary stamp-binary: stamp-build $(checkdir) test "`id -u`" -eq 0 rm -rf $(TMP) $(MAKE) $(MFLAGS) -C $(BUILD)$* \ DESTDIR=$(INSTALL_TMP) \ install find $(TMP) -type d | xargs chmod 755 touch $@ binary-dpkg-static-most: TMP_DPKG=$(TMP)/dpkg-static binary-dpkg-static-most: static=-static binary-dpkg-static: TMP_DPKG=$(TMP)/dpkg-static binary-dpkg-static: static=-static binary-dpkg-most binary-dpkg-static-most: binary-dpkg%-most: stamp-binary% rm -rf $(TMP_DPKG) install -d -m 755 -o root -g root $(TMP_DPKG) chmod g-s $(TMP_DPKG) install -d -m 755 -o root -g root $(TMP_DPKG)/usr/share/doc/dpkg$(static) install -d -m 755 -o root -g root $(TMP_DPKG)/usr/lib/dpkg install -d -m 755 -o root -g root $(TMP_DPKG)/usr/bin install -d -m 755 -o root -g root $(TMP_DPKG)/sbin install -d -m 755 -o root -g root $(TMP_DPKG)/var/lib/dpkg -test -d $(INSTALL_TMP)/etc && cp -a $(INSTALL_TMP)/etc $(TMP_DPKG)/ set -e ; for i in info alternatives parts updates ; do \ cp -a $(INSTALL_TMP)/var/lib/dpkg/$$i $(TMP_DPKG)/var/lib/dpkg/ ; \ done cp -a $(INSTALL_TMP)/usr/sbin $(TMP_DPKG)/usr/ mv $(TMP_DPKG)/usr/sbin/start-stop-daemon $(TMP_DPKG)/sbin/ cp -a $(INSTALL_TMP)/usr/lib/dpkg/mksplit $(TMP_DPKG)/usr/lib/dpkg/ cp -a $(INSTALL_TMP)/usr/lib/dpkg/enoent $(TMP_DPKG)/usr/lib/dpkg/ cp -a $(INSTALL_TMP)/usr/share/locale $(TMP_DPKG)/usr/share/ cp -a $(INSTALL_TMP)/usr/share/dpkg $(TMP_DPKG)/usr/share/ set -e ; for i in dpkg-split dpkg-query ; do \ cp -a $(INSTALL_TMP)/usr/bin/$$i $(TMP_DPKG)/usr/bin/ ; \ done set -e ; for i in dpkg dpkg-deb md5sum ; do \ cp -a $(INSTALL_TMP)/usr/bin/$$i$(static) $(TMP_DPKG)/usr/bin/$$i ; \ done set -e ; for i in ChangeLog THANKS TODO copyright; do \ cp -a $(INSTALL_TMP)/usr/share/doc/dpkg/$$i $(TMP_DPKG)/usr/share/doc/dpkg$(static)/ ; \ done cp -a debian/pseudo-tags $(TMP_DPKG)/usr/share/doc/dpkg$(static)/ set -e ; for i in "" de fr ja sv ; do \ install -d -m 755 -o root -g root $(TMP_DPKG)/usr/share/man/$$i/man1 ; \ for m in md5sum.1 dpkg-deb.1 ; do \ if [ -f $(INSTALL_TMP)/usr/share/man/$$i/man1/$$m ] ; then \ cp -a $(INSTALL_TMP)/usr/share/man/$$i/man1/$$m $(TMP_DPKG)/usr/share/man/$$i/man1/$$m ; \ fi ; \ done ; \ install -d -m 755 -o root -g root $(TMP_DPKG)/usr/share/man/$$i/man5 ; \ for m in dpkg.cfg.5 ; do \ if [ -f $(INSTALL_TMP)/usr/share/man/$$i/man5/$$m ] ; then \ cp -a $(INSTALL_TMP)/usr/share/man/$$i/man5/$$m $(TMP_DPKG)/usr/share/man/$$i/man5/$$m ; \ fi ; \ done ; \ install -d -m 755 -o root -g root $(TMP_DPKG)/usr/share/man/$$i/man8 ; \ for m in dpkg.8 dpkg-query.8 dpkg-split.8 start-stop-daemon.8 \ cleanup-info.8 dpkg-divert.8 dpkg-statoverride.8 \ install-info.8 update-alternatives.8 ; do \ if [ -f $(INSTALL_TMP)/usr/share/man/$$i/man8/$$m ] ; then \ cp -a $(INSTALL_TMP)/usr/share/man/$$i/man8/$$m $(TMP_DPKG)/usr/share/man/$$i/man8/$$m ; \ fi ; \ done ; \ done # Now that dpkg has been installed, Debianize it # Policy stuff find $(TMP_DPKG)/usr/share/man -type f | xargs gzip -9f strip --remove-section=.comment --remove-section=.note \ --strip-unneeded $(TMP_DPKG)/usr/bin/* $(TMP_DPKG)/sbin/* \ $(TMP_DPKG)/usr/lib/dpkg/enoent mv $(TMP_DPKG)/usr/share/doc/dpkg$(static)/ChangeLog \ $(TMP_DPKG)/usr/share/doc/dpkg$(static)/changelog install -p -m 644 -o root -g root debian/changelog \ $(TMP_DPKG)/usr/share/doc/dpkg$(static)/changelog.Debian rm -f $(TMP_DPKG)/usr/share/doc/dpkg$(static)/copyright gzip -9 $(TMP_DPKG)/usr/share/doc/dpkg$(static)/* install -p -m 644 -o root -g root debian/dpkg.cfg \ $(TMP_DPKG)/usr/share/doc/dpkg$(static)/ install -p -m 644 -o root -g root debian/copyright \ $(TMP_DPKG)/usr/share/doc/dpkg$(static)/ # Final package creation install -d -m 755 -o root -g root $(TMP_DPKG)/DEBIAN install -p -m 644 -o root -g root debian/dpkg.conffiles $(TMP_DPKG)/DEBIAN/conffiles install -p -m 755 -o root -g root debian/dpkg.preinst $(TMP_DPKG)/DEBIAN/preinst install -p -m 755 -o root -g root debian/dpkg.prerm $(TMP_DPKG)/DEBIAN/prerm install -p -m 755 -o root -g root debian/dpkg.postinst $(TMP_DPKG)/DEBIAN/postinst install -p -m 755 -o root -g root debian/dpkg.postrm $(TMP_DPKG)/DEBIAN/postrm dpkg-shlibdeps -dPre-Depends -Tdebian/dpkg$(static).substvars \ $(TMP_DPKG)/sbin/start-stop-daemon \ `test -z "$(static)" && echo $(TMP_DPKG)/usr/bin/dpkg $(TMP_DPKG)/usr/bin/md5sum $(TMP_DPKG)/usr/bin/dpkg-deb` binary-dpkg binary-dpkg-static: %: %-most $(GENCONTROL) -Tdebian/dpkg$(static).substvars -pdpkg$(static) -P$(TMP_DPKG) dpkg --build $(TMP_DPKG) .. binary-dpkg-dev: stamp-binary rm -rf $(TMP_DPKG_DEV) install -d -m 755 -o root -g root $(TMP_DPKG_DEV) chmod g-s $(TMP_DPKG_DEV) install -d -m 755 -o root -g root $(TMP_DPKG_DEV)/etc/dpkg install -p -m 644 -o root -g root debian/shlibs.default \ $(TMP_DPKG_DEV)/etc/dpkg/ install -p -m 644 -o root -g root debian/shlibs.override \ $(TMP_DPKG_DEV)/etc/dpkg/ install -d -m 755 -o root -g root $(TMP_DPKG_DEV)/usr/lib/dpkg install -d -m 755 -o root -g root $(TMP_DPKG_DEV)/usr/share install -d -m 755 -o root -g root $(TMP_DPKG_DEV)/usr/bin mv $(INSTALL_TMP)/usr/lib/dpkg/parsechangelog $(TMP_DPKG_DEV)/usr/lib/dpkg/ mv $(INSTALL_TMP)/usr/lib/dpkg/controllib.pl $(TMP_DPKG_DEV)/usr/lib/dpkg/ set -e ; for i in dpkg-name dpkg-source dpkg-genchanges dpkg-gencontrol \ dpkg-shlibdeps dpkg-buildpackage dpkg-distaddfile 822-date \ dpkg-scanpackages dpkg-scansources dpkg-architecture \ dpkg-parsechangelog dpkg-checkbuilddeps ; do \ mv $(INSTALL_TMP)/usr/bin/$$i $(TMP_DPKG_DEV)/usr/bin/ ; \ done set -e ; for i in "" de fr ja sv ; do \ install -d -m 755 -o root -g root $(TMP_DPKG_DEV)/usr/share/man/$$i/man1 ; \ for m in dpkg-name.1 dpkg-source.1 822-date.1 dpkg-architecture.1 \ dpkg-buildpackage.1 dpkg-distaddfile.1 dpkg-genchanges.1 \ dpkg-gencontrol.1 dpkg-parsechangelog.1 dpkg-shlibdeps.1 \ dpkg-checkbuilddeps.1 ; do \ if [ -e $(INSTALL_TMP)/usr/share/man/$$i/man1/$$m ] ; then \ mv $(INSTALL_TMP)/usr/share/man/$$i/man1/$$m $(TMP_DPKG_DEV)/usr/share/man/$$i/man1/$$m ; \ fi ; \ done ; \ install -d -m 755 -o root -g root $(TMP_DPKG_DEV)/usr/share/man/$$i/man5 ; \ for m in deb.5 deb-control.5 deb-old.5 ; do \ if [ -e $(INSTALL_TMP)/usr/share/man/$$i/man5/$$m ] ; then \ mv $(INSTALL_TMP)/usr/share/man/$$i/man5/$$m $(TMP_DPKG_DEV)/usr/share/man/$$i/man5/$$m ; \ fi ; \ done ; \ install -d -m 755 -o root -g root $(TMP_DPKG_DEV)/usr/share/man/$$i/man8 ; \ for m in dpkg-scanpackages.8 dpkg-scansources.8 ; do \ if [ -e $(INSTALL_TMP)/usr/share/man/$$i/man8/$$m ] ; then \ mv $(INSTALL_TMP)/usr/share/man/$$i/man8/$$m $(TMP_DPKG_DEV)/usr/share/man/$$i/man8/$$m ; \ fi ; \ done ; \ done # Now that dpkg-dev has been installed, Debianize it # Policy stuff find $(TMP_DPKG_DEV)/usr/share/man -type f | xargs gzip -9f install -d -m 755 -o root -g root $(TMP_DPKG_DEV)/usr/share/doc ln -s dpkg $(TMP_DPKG_DEV)/usr/share/doc/dpkg-dev # Final package creation install -d -m 755 -o root -g root $(TMP_DPKG_DEV)/DEBIAN install -p -m 644 -o root -g root debian/dpkg-dev.conffiles $(TMP_DPKG_DEV)/DEBIAN/conffiles $(GENCONTROL) -Tdebian/dpkg-dev.substvars -pdpkg-dev -P$(TMP_DPKG_DEV) dpkg --build $(TMP_DPKG_DEV) .. binary-dselect: stamp-binary rm -rf $(TMP_DSELECT) install -d -m 755 -o root -g root $(TMP_DSELECT) chmod g-s $(TMP_DSELECT) install -d -m 755 -o root -g root $(TMP_DSELECT)/usr/bin mv $(INSTALL_TMP)/usr/bin/dselect $(TMP_DSELECT)/usr/bin/ install -d -m 755 -o root -g root $(TMP_DSELECT)/usr/lib/dpkg mv $(INSTALL_TMP)/usr/lib/dpkg/methods $(TMP_DSELECT)/usr/lib/dpkg/ install -d -m 755 -o root -g root $(TMP_DSELECT)/var/lib/dpkg mv $(INSTALL_TMP)/var/lib/dpkg/methods $(TMP_DSELECT)/var/lib/dpkg/ set -e ; for i in "" de fr ja sv ; do \ install -d -m 755 -o root -g root $(TMP_DSELECT)/usr/share/man/$$i/man5 ; \ for m in dselect.cfg.5 ; do \ if [ -f $(INSTALL_TMP)/usr/share/man/$$i/man5/$$m ] ; then \ cp -a $(INSTALL_TMP)/usr/share/man/$$i/man5/$$m $(TMP_DSELECT)/usr/share/man/$$i/man5/$$m ; \ fi ; \ done ; \ install -d -m 755 -o root -g root $(TMP_DSELECT)/usr/share/man/$$i/man8 ; \ for m in dselect.8 ; do \ if [ -f $(INSTALL_TMP)/usr/share/man/$$i/man8/$$m ] ; then \ cp -a $(INSTALL_TMP)/usr/share/man/$$i/man8/$$m $(TMP_DSELECT)/usr/share/man/$$i/man8/$$m ; \ fi ; \ done ; \ done install -d -m 755 -o root -g root $(TMP_DSELECT)/etc/dpkg install -p -m 644 -o root -g root debian/dselect.cfg \ $(TMP_DSELECT)/etc/dpkg/ # Now do the usual Debian stuff find $(TMP_DSELECT)/usr/share/man -type f | xargs gzip -9f install -d -m 755 -o root -g root $(TMP_DSELECT)/usr/share/doc ln -s dpkg $(TMP_DSELECT)/usr/share/doc/dselect strip --remove-section=.comment --remove-section=.note \ --strip-unneeded $(TMP_DSELECT)/usr/bin/* # Final package creation install -d -m 755 -o root -g root $(TMP_DSELECT)/DEBIAN install -p -m 644 -o root -g root debian/dselect.conffiles $(TMP_DSELECT)/DEBIAN/conffiles dpkg-shlibdeps -Tdebian/dselect.substvars \ $(TMP_DSELECT)/usr/bin/dselect $(GENCONTROL) -Tdebian/dselect.substvars -pdselect -P$(TMP_DSELECT) dpkg --build $(TMP_DSELECT) .. binary-dpkg-doc: stamp-binary rm -rf $(TMP_DPKG_DOC) install -d -m 755 -o root -g root $(TMP_DPKG_DOC) chmod g-s $(TMP_DPKG_DOC) install -d -m 755 -o root -g root $(TMP_DPKG_DOC)/usr/share/doc/dpkg mv $(INSTALL_TMP)/usr/share/doc/dpkg/internals $(TMP_DPKG_DOC)/usr/share/doc/dpkg/ mv $(INSTALL_TMP)/usr/share/doc/dpkg/ChangeLog.manuals \ $(TMP_DPKG_DOC)/usr/share/doc/dpkg/changelog.manuals # Now that dpkg-doc has been installed, Debianize it # Policy stuff gzip -9f $(TMP_DPKG_DOC)/usr/share/doc/dpkg/[!i]* ln -s dpkg $(TMP_DPKG_DOC)/usr/share/doc/dpkg-doc # Register documentation with doc-base install -d -m 755 -o root -g root $(TMP_DPKG_DOC)/usr/share/doc-base install -p -m 644 -o root -g root debian/dpkg-doc.doc-base \ $(TMP_DPKG_DOC)/usr/share/doc-base/dpkg-doc # Final package creation install -d -m 755 -o root -g root $(TMP_DPKG_DOC)/DEBIAN install -p -m 755 -o root -g root debian/dpkg-doc.prerm $(TMP_DPKG_DOC)/DEBIAN/prerm install -p -m 755 -o root -g root debian/dpkg-doc.postinst $(TMP_DPKG_DOC)/DEBIAN/postinst $(GENCONTROL) -Tdebian/dpkg-doc.substvars -pdpkg-doc -P$(TMP_DPKG_DOC) dpkg --build $(TMP_DPKG_DOC) .. binary-arch-static: binary-dpkg-static binary-arch: binary-dpkg binary-dpkg-static-most binary-dselect binary-indep: binary-dpkg-dev binary-dpkg-doc define checkdir test -f include/dpkg.h.in endef .PHONY: clean build binary binary-arch binary-indep binary-dpkg binary-dpkg-dev .PHONY: binary-dpkg-doc binary-nondebbin