rules 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. #!/usr/bin/make -f
  2. # vim: nowrap ts=8
  3. # Set shell to bash to we can use bashisms without having to worry
  4. SHELL = bash
  5. # Build locations
  6. BUILD := $(shell pwd)/build
  7. TMP := $(shell pwd)/debian/tmp
  8. TMP_DPKG := $(TMP)-dpkg
  9. TMP_DPKG_DEV := $(TMP)-dpkg-dev
  10. TMP_DPKG_DOC := $(TMP)-dpkg-doc
  11. DIR := $(shell pwd)
  12. # We should really get this in a different way...
  13. arch = $(shell dpkg --print-architecture)
  14. # Setup the buildlocation
  15. $(BUILD)/config.status:
  16. $(checkdir)
  17. install -d $(BUILD)
  18. cd $(BUILD) && $(DIR)/configure \
  19. --prefix=/usr \
  20. --datadir=/usr/share \
  21. --mandir=/usr/share/man \
  22. --infodir=/usr/share/info \
  23. --sysconfdir=/etc \
  24. --sharedstatedir=/var/lib \
  25. --localstatedir=/var/lib
  26. clean:
  27. $(checkdir)
  28. rm -f debian/{files,substvars}
  29. rm -f debian/dpkg,substvars
  30. rm -fr $(BUILD) $(TMP) $(TMP_DPKG) $(TMP_DPKG_DEV) $(TMP_DPKG_DOC)
  31. rm -f stamp-build stamp-binary
  32. build: stamp-build
  33. stamp-build: $(BUILD)/config.status
  34. $(MAKE) $(MFLAGS) -C $(BUILD)
  35. touch stamp-build
  36. binary: binary-arch binary-indep
  37. stamp-binary: stamp-build
  38. $(checkdir)
  39. test "`id -u`" -eq 0
  40. rm -rf $(TMP)
  41. $(MAKE) $(MFLAGS) -C $(BUILD) \
  42. admindir=$(TMP)/var/lib/dpkg \
  43. prefix=$(TMP)/usr \
  44. datadir=$(TMP)/usr/share \
  45. mandir=$(TMP)/usr/share/man \
  46. infodir=$(TMP)/usr/share/info \
  47. sysconfdir=$(TMP)/etc \
  48. sharedstatedir=$(TMP)/var/lib \
  49. localstatedir=$(TMP)/var/lib \
  50. install
  51. find $(TMP) -type d | xargs chmod 755
  52. touch stamp-binary
  53. binary-dpkg: stamp-binary
  54. rm -rf $(TMP_DPKG)
  55. install -d -m 755 -o root -g root $(TMP_DPKG)/usr/share/doc/dpkg
  56. install -d -m 755 -o root -g root $(TMP_DPKG)/usr/lib/dpkg
  57. install -d -m 755 -o root -g root $(TMP_DPKG)/usr/bin
  58. install -d -m 755 -o root -g root $(TMP_DPKG)/sbin
  59. mv $(TMP)/etc $(TMP_DPKG)/
  60. mv $(TMP)/var $(TMP_DPKG)/
  61. mv $(TMP)/usr/sbin/start-stop-daemon $(TMP_DPKG)/sbin/
  62. mv $(TMP)/usr/sbin $(TMP_DPKG)/usr/
  63. mv $(TMP)/usr/lib/dpkg/mksplit $(TMP_DPKG)/usr/lib/dpkg/
  64. mv $(TMP)/usr/lib/dpkg/methods $(TMP_DPKG)/usr/lib/dpkg/
  65. mv $(TMP)/usr/share/locale $(TMP_DPKG)/usr/share/
  66. set -e ; for i in dpkg dpkg-deb dpkg-split md5sum dselect ; do \
  67. mv $(TMP)/usr/bin/$$i $(TMP_DPKG)/usr/bin/ ; \
  68. done
  69. set -e ; for i in ChangeLog TODO copyright ; do \
  70. mv $(TMP)/usr/share/doc/dpkg/$$i $(TMP_DPKG)/usr/share/doc/dpkg/ ; \
  71. done
  72. set -e ; for i in "" ja ; do \
  73. install -d -m 755 -o root -g root $(TMP_DPKG)/usr/share/man/$$i/man1 ; \
  74. for m in md5sum.1 dpkg-deb.1 ; do \
  75. if [ -f $(TMP)/usr/share/man/$$i/man1/$$m ] ; then \
  76. mv $(TMP)/usr/share/man/$$i/man1/$$m $(TMP_DPKG)/usr/share/man/$$i/man1/$$m ; \
  77. fi ; \
  78. done ; \
  79. install -d -m 755 -o root -g root $(TMP_DPKG)/usr/share/man/$$i/man8 ; \
  80. for m in dpkg.8 dselect.8 dpkg-split.8 start-stop-daemon.8 \
  81. install-info.8 update-alternatives.8 update-rc.d.8 ; do \
  82. if [ -f $(TMP)/usr/share/man/$$i/man8/$$m ] ; then \
  83. mv $(TMP)/usr/share/man/$$i/man8/$$m $(TMP_DPKG)/usr/share/man/$$i/man8/$$m ; \
  84. fi ; \
  85. done ; \
  86. done
  87. # Now that dpkg has been installed, Debianize it
  88. # Policy stuff
  89. find $(TMP_DPKG)/usr/share/man -type f | xargs gzip -9f
  90. strip $(TMP_DPKG)/usr/bin/* $(TMP_DPKG)/sbin/*
  91. mv $(TMP_DPKG)/usr/share/doc/dpkg/ChangeLog \
  92. $(TMP_DPKG)/usr/share/doc/dpkg/changelog
  93. install -p -m 644 -o root -g root debian/changelog \
  94. $(TMP_DPKG)/usr/share/doc/dpkg/changelog.Debian
  95. gzip -9 $(TMP_DPKG)/usr/share/doc/dpkg/*
  96. install -p -m 644 -o root -g root debian/copyright \
  97. $(TMP_DPKG)/usr/share/doc/dpkg/
  98. # Final package creation
  99. install -d -m 755 -o root -g root $(TMP_DPKG)/DEBIAN
  100. install -p -m 755 -o root -g root debian/dpkg.preinst $(TMP_DPKG)/DEBIAN/preinst
  101. install -p -m 755 -o root -g root debian/dpkg.prerm $(TMP_DPKG)/DEBIAN/prerm
  102. install -p -m 755 -o root -g root debian/dpkg.postinst $(TMP_DPKG)/DEBIAN/postinst
  103. dpkg-shlibdeps -dPre-Depends -Tdebian/dpkg.substvars \
  104. $(TMP_DPKG)/usr/bin/dpkg $(TMP_DPKG)/usr/bin/dselect
  105. dpkg-gencontrol -Tdebian/dpkg.substvars -pdpkg -P$(TMP_DPKG)
  106. dpkg --build $(TMP_DPKG) ..
  107. binary-dpkg-dev: stamp-binary
  108. rm -rf $(TMP_DPKG_DEV)
  109. install -d -m 755 -o root -g root $(TMP_DPKG_DEV)/usr/lib/dpkg
  110. install -d -m 755 -o root -g root $(TMP_DPKG_DEV)/usr/share
  111. install -d -m 755 -o root -g root $(TMP_DPKG_DEV)/usr/bin
  112. mv $(TMP)/usr/lib/dpkg/parsechangelog $(TMP_DPKG_DEV)/usr/lib/dpkg/
  113. mv $(TMP)/usr/lib/dpkg/controllib.pl $(TMP_DPKG_DEV)/usr/lib/dpkg/
  114. mv $(TMP)/usr/share/emacs $(TMP_DPKG_DEV)/usr/share/dpkg/
  115. set -e ; for i in dpkg-name dpkg-source dpkg-genchanges dpkg-gencontrol \
  116. dpkg-shlibdeps dpkg-buildpackage dpkg-distaddfile 822-date \
  117. dpkg-scanpackages dpkg-scansources dpkg-architecture \
  118. dpkg-parsechangelog ; do \
  119. mv $(TMP)/usr/bin/$$i $(TMP_DPKG_DEV)/usr/bin/ ; \
  120. done
  121. set -e ; for i in "" ja ; do \
  122. install -d -m 755 -o root -g root $(TMP_DPKG_DEV)/usr/share/man/$$i/man1 ; \
  123. for m in dpkg-name.1 dpkg-source.1 822-date.1 dpkg-architecture.1 \
  124. dpkg-buildpackage.1 dpkg-distaddfile.1 dpkg-genchanges.1 \
  125. dpkg-gencontrol.1 dpkg-parsechangelog.1 dpkg-shlibdeps.1 ; do \
  126. if [ -e $(TMP)/usr/share/man/$$i/man1/$$m ] ; then \
  127. mv $(TMP)/usr/share/man/$$i/man1/$$m $(TMP_DPKG_DEV)/usr/share/man/$$i/man1/$$m ; \
  128. fi ; \
  129. done ; \
  130. install -d -m 755 -o root -g root $(TMP_DPKG_DEV)/usr/share/man/$$i/man5 ; \
  131. for m in deb.5 deb-control.5 deb-old.5 ; do \
  132. if [ -e $(TMP)/usr/share/man/$$i/man5/$$m ] ; then \
  133. mv $(TMP)/usr/share/man/$$i/man5/$$m $(TMP_DPKG_DEV)/usr/share/man/$$i/man5/$$m ; \
  134. fi ; \
  135. done ; \
  136. install -d -m 755 -o root -g root $(TMP_DPKG_DEV)/usr/share/man/$$i/man8 ; \
  137. for m in dpkg-scanpackages.8 dpkg-scansources.8 ; do \
  138. if [ -e $(TMP)/usr/share/man/$$i/man8/$$m ] ; then \
  139. mv $(TMP)/usr/share/man/$$i/man8/$$m $(TMP_DPKG_DEV)/usr/share/man/$$i/man8/$$m ; \
  140. fi ; \
  141. done ; \
  142. done
  143. # Now that dpkg-dev has been installed, Debianize it
  144. # Policy stuff
  145. find $(TMP_DPKG_DEV)/usr/share/man -type f | xargs gzip -9f
  146. install -d -m 755 -o root -g root $(TMP_DPKG_DEV)/usr/share/doc
  147. ln -s dpkg $(TMP_DPKG_DEV)/usr/share/doc/dpkg-dev
  148. # Of course our own emacs system
  149. install -d -m 755 -o root -g root $(TMP_DPKG_DEV)/etc/emacs/site-start.d
  150. install -p -m 644 -o root -g root debian/50dpkg-dev.el \
  151. $(TMP_DPKG_DEV)/etc/emacs/site-start.d
  152. install -d -m 755 -o root -g root $(TMP_DPKG_DEV)/usr/lib/emacsen-common/packages/install
  153. install -p -m 755 -o root -g root debian/emacsen-common-install \
  154. $(TMP_DPKG_DEV)/usr/lib/emacsen-common/packages/install
  155. install -d -m 755 -o root -g root $(TMP_DPKG_DEV)/usr/lib/emacsen-common/packages/remove
  156. install -p -m 755 -o root -g root debian/emacsen-common-remove \
  157. $(TMP_DPKG_DEV)/usr/lib/emacsen-common/packages/remove
  158. # Final package creation
  159. install -d -m 755 -o root -g root $(TMP_DPKG_DEV)/DEBIAN
  160. install -p -m 644 -o root -g root debian/dpkg-dev.conffiles $(TMP_DPKG_DEV)/DEBIAN/conffiles
  161. install -p -m 755 -o root -g root debian/dpkg-dev.prerm $(TMP_DPKG_DEV)/DEBIAN/prerm
  162. install -p -m 755 -o root -g root debian/dpkg-dev.postinst $(TMP_DPKG_DEV)/DEBIAN/postinst
  163. dpkg-gencontrol -Tdebian/dpkg-dev.substvars -pdpkg-dev -P$(TMP_DPKG_DEV)
  164. dpkg --build $(TMP_DPKG_DEV) ..
  165. binary-dpkg-doc: stamp-binary
  166. rm -rf $(TMP_DPKG_DOC)
  167. install -d -m 755 -o root -g root $(TMP_DPKG_DOC)/usr/share/doc/dpkg
  168. mv $(TMP)/usr/share/doc/dpkg/internals $(TMP_DPKG_DOC)/usr/share/doc/dpkg/
  169. mv $(TMP)/usr/share/doc/dpkg/ChangeLog.manuals \
  170. $(TMP_DPKG_DOC)/usr/share/doc/dpkg/changelog.manuals
  171. # Now that dpkg-dev has been installed, Debianize it
  172. # Policy stuff
  173. gzip -9f $(TMP_DPKG_DOC)/usr/share/doc/dpkg/[^i]*
  174. ln -s dpkg $(TMP_DPKG_DOC)/usr/share/doc/dpkg-doc
  175. # Register documentation with doc-base
  176. install -d -m 755 -o root -g root $(TMP_DPKG_DOC)/usr/share/doc-base
  177. install -p -m 644 -o root -g root debian/dpkg-doc.doc-base \
  178. $(TMP_DPKG_DOC)/usr/share/doc-base/dpkg-doc
  179. # Final package creation
  180. install -d -m 755 -o root -g root $(TMP_DPKG_DOC)/DEBIAN
  181. install -p -m 755 -o root -g root debian/dpkg-doc.prerm $(TMP_DPKG_DOC)/DEBIAN/prerm
  182. install -p -m 755 -o root -g root debian/dpkg-doc.postinst $(TMP_DPKG_DOC)/DEBIAN/postinst
  183. dpkg-gencontrol -Tdebian/dpkg-dev.substvars -pdpkg-doc -P$(TMP_DPKG_DOC)
  184. dpkg --build $(TMP_DPKG_DOC) ..
  185. binary-arch: binary-dpkg
  186. set -e ; \
  187. v=`sed -n 's/^Version: //p' $(TMP_DPKG)/DEBIAN/control`; \
  188. f=dpkg-$${v}_$(arch).nondebbin.tar ; \
  189. tar -C $(TMP_DPKG) -cf $(DIR)/../$$f usr var ; \
  190. gzip -9f ../$$f ; \
  191. dpkg-distaddfile -fdebian/files $$f.gz byhand -
  192. binary-indep: binary-dpkg-dev binary-dpkg-doc
  193. set -e ; set -x ; \
  194. v=`sed -n 's/^Version: //p' $(TMP_DPKG_DEV)/DEBIAN/control`; \
  195. f=dpkg-$${v}.tar.gz ; \
  196. if [ -f ../dpkg_$${v}.tar.gz ] ; then \
  197. cp ../dpkg_$${v}.tar.gz ../$$f ; \
  198. dpkg-distaddfile -fdebian/files $$f byhand - ; \
  199. fi
  200. define checkdir
  201. test -f include/dpkg.h.in
  202. endef
  203. .PHONY: clean build binary binary-arch binary-indep binary-dpkg binary-dpkg-dev
  204. .PHONY: binary-dpkg-doc binary-nondebbin