rules 9.5 KB

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