X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=debian%2Frules;h=cc926b8e147e35939c3d63fd0ea32fb177448997;hb=HEAD;hp=35d00fe56d3b90872ac4b0cc84fa1701dc89fb2f;hpb=17dc235865558f1d14c18340f3d6c3bb914af2cf;p=chiark-utils.git diff --git a/debian/rules b/debian/rules index 35d00fe..a5900c8 100755 --- a/debian/rules +++ b/debian/rules @@ -3,7 +3,7 @@ SHELL=/bin/bash subdirs_build_arch= cprogs -subdirs_nobuild=backup sync-accounts scripts +subdirs_nobuild=backup sync-accounts scripts fishdescriptor package= chiark-utils packages_indep= chiark-backup chiark-scripts packages_arch= chiark-rwbuffer chiark-really chiark-utils-bin @@ -13,152 +13,115 @@ cwd= $(shell pwd) d= $(cwd)/debian t= $d/tmp +D_BUILDFLAGS=DEB_BUILD_MAINT_OPTIONS=future=+lfs dpkg-buildflags + makebuildargs := OPTIMISE= DEBUG= \ - CMDLINE_CFLAGS="$(shell dpkg-buildflags --get CFLAGS)" \ - CMDLINE_CPPFLAGS="$(shell dpkg-buildflags --get CPPFLAGS)" \ - CMDLINE_LDFLAGS="$(shell dpkg-buildflags --get LDFLAGS)" + CMDLINE_CFLAGS="$(shell $(D_BUILDFLAGS) --get CFLAGS)" \ + CMDLINE_CPPFLAGS="$(shell $(D_BUILDFLAGS) --get CPPFLAGS) -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64" \ + CMDLINE_LDFLAGS="$(shell $(D_BUILDFLAGS) --get LDFLAGS)" + +%: + dh $@ -build: - $(checkdir) +override_dh_auto_build: set -e; for s in $(subdirs_build_arch); do \ - $(MAKE) -C $$s all $(makebuildargs); \ + dh_auto_build --sourcedirectory=$$s -- all $(makebuildargs); \ done - touch build -build-indep: build -build-arch: build -clean: - $(checkdir) +override_dh_auto_clean: rm -f build set -e; for s in $(subdirs_build_arch); do \ $(MAKE) -C $$s -i distclean || \ $(MAKE) -C $$s -f Makefile.in distclean; \ done - rm -rf *~ debian/tmp debian/*~ debian/files* debian/substvars* - rm -rf debian/sv-* debian/*.debhelper.log + rm -rf debian/sv-* -binary-prep: - $(checkdir) - rm -rf debian/tmp* +override_dh_auto_install: + # The ownership information will be reset later to root:root in + # the `dpkg-deb` call, so the actual ownership here is of no + # consequence as long as we are allowed to perform the action. # + # Chown'ing from your own user/group to itself is always allowed, + # so we pass that via id -u/-g. set -e; for s in $(subdirs_build_arch) $(subdirs_nobuild); do \ $(MAKE) -C $$s install install-docs install-examples \ prefix=$t/$$s/usr \ etcdir=$t/$$s/etc \ varlib=$t/$$s/var/lib \ - mandir=$t/$$s/usr/share/man; \ + mandir=$t/$$s/usr/share/man \ + SYSTEM_USER=$$(id -u) \ + SYSTEM_GROUP=$$(id -g); \ done # - mv $t/cprogs $t/chiark-utils-bin + mv $t/cprogs $d/chiark-utils-bin # + cp -a debian/tmp/fishdescriptor/* debian/tmp/scripts/. cp -a debian/tmp/sync-accounts/* debian/tmp/scripts/. rm -r debian/tmp/sync-accounts - mv debian/tmp/scripts debian/tmp/chiark-scripts - mv debian/tmp/backup debian/tmp/chiark-backup - # - set -e; for p in $(packages); do \ - install -d $t/$$p/DEBIAN $t/$$p/usr/share/doc/$$p; \ - cp debian/copyright debian/changelog \ - $t/$$p/usr/share/doc/$$p/; \ - ln -s changelog.gz \ - $t/$$p/usr/share/doc/$$p/changelog.Debian.gz; \ - gzip -9v $t/$$p/usr/share/doc/$$p/changelog; \ - done - # - install -d $t/chiark-rwbuffer/usr/bin - install -d $t/chiark-rwbuffer/usr/share/man/man1 - cd $t/chiark-utils-bin/usr/bin && \ - mv readbuffer writebuffer $t/chiark-rwbuffer/usr/bin/ - cd $t/chiark-utils-bin/usr/share/man/man1 && \ - mv readbuffer.1 writebuffer.1 $t/chiark-rwbuffer/usr/share/man/man1/ - # - install -d $t/chiark-backup/usr/share/man/man1 - cp backup/man/*.1 $t/chiark-backup/usr/share/man/man1/ - cd $t/chiark-backup/usr/share/man/man1 && \ + mv debian/tmp/scripts debian/chiark-scripts + mv debian/tmp/backup debian/chiark-backup + + # Move all packages created so far up to debian/, where the dh_* + # expects to find them now that we are done renaming things. + set -e; for p in $(dh_listpackages); do \ + [ ! -d $t/$$p ] || mv $t/$$p debian/$$p ; \ + done + + # Last bit of moving things around manually, where the debhelper tools + # will not trivially do it (at least, without stuff like `dh-exec`) + + install -d debian/chiark-rwbuffer/usr/bin + install -d debian/chiark-rwbuffer/usr/share/man/man1 + cd debian/chiark-utils-bin/usr/bin && \ + mv readbuffer writebuffer $d/chiark-rwbuffer/usr/bin/ + cd debian/chiark-utils-bin/usr/share/man/man1 && \ + mv readbuffer.1 writebuffer.1 $d/chiark-rwbuffer/usr/share/man/man1/ + + install -d debian/chiark-backup/usr/share/man/man1 + cp backup/man/*.1 debian/chiark-backup/usr/share/man/man1/ + cd debian/chiark-backup/usr/share/man/man1 && \ for m in *.1; do \ mv "$$m" backup-"$$m"; \ done cp \ - $t/chiark-backup/usr/share/doc/chiark-backup/examples/chiark/settings.sh \ - $t/chiark-backup/etc/chiark-backup/settings.sh + debian/chiark-backup/usr/share/doc/chiark-backup/examples/chiark/settings.sh \ + debian/chiark-backup/etc/chiark-backup/settings.sh # - install -d $t/chiark-really/usr/sbin - install -d $t/chiark-really/usr/share/man/man8 - cd $t/chiark-utils-bin/usr/sbin && \ - mv really $t/chiark-really/usr/sbin/ - cd $t/chiark-utils-bin/usr/share/man/man8 && \ - mv really.8 $t/chiark-really/usr/share/man/man8/ - rm $t/chiark-utils-bin/usr/sbin/trivsoundd \ - $t/chiark-utils-bin/usr/share/man/man8/trivsoundd.8 - rmdir $t/chiark-utils-bin/usr/sbin - # - gzip -9f $t/*/usr/share/man/man*/* - -binary-hook-chiark-backup: -binary-hook-chiark-rwbuffer: -binary-hook-sync-accounts: -binary-hook-chiark-scripts: -binary-hook-chiark-really: -binary-hook-chiark-utils-bin: - -binary-one: - set -e; for f in preinst postinst prerm postrm conffiles; do \ - test -f debian/$p/$$f || continue; \ - cp debian/$p/$$f $t/$p/DEBIAN/$$f; \ - chmod u=rwX,go=rX $t/$p/DEBIAN/$$f; \ - done - dh_link -p$p -Pdebian/tmp/$p - dpkg-gencontrol -isp -p$p -P$t/$p -Tdebian/sv-$p - chown -R root.root debian/tmp - chmod -R g-ws debian/tmp - debian/rules binary-hook-$p - dpkg --build $t/$p .. - -binary-indep: checkroot build binary-prep - set -e; for p in $(packages_indep); do \ - debian/rules binary-one p=$$p; done - -binary-arch: checkroot build binary-prep - $(checkdir) - set -ex; for p in chiark-really chiark-utils-bin chiark-rwbuffer; do \ - dh_strip -p$$p -Pdebian/tmp/$$p; done - dpkg-shlibdeps -Tdebian/sv-chiark-rwbuffer \ - $t/chiark-rwbuffer/usr/bin/* - dpkg-shlibdeps -Tdebian/sv-chiark-really \ - $t/chiark-really/usr/sbin/* - set -e; for f in $t/chiark-utils-bin/usr/bin/*; do \ - case "$$f" in \ + install -d debian/chiark-really/usr/sbin + install -d debian/chiark-really/usr/share/man/man8 + cd $d/chiark-utils-bin/usr/sbin && \ + mv really $d/chiark-really/usr/sbin/ + cd $d/chiark-utils-bin/usr/share/man/man8 && \ + mv really.8 $d/chiark-really/usr/share/man/man8/ + rm debian/chiark-utils-bin/usr/sbin/trivsoundd \ + debian/chiark-utils-bin/usr/share/man/man8/trivsoundd.8 + rmdir debian/chiark-utils-bin/usr/sbin + + # We are not installing these. To avoid dh_missing complaining, + # lets just remove them (Could also be moved to debian/not-installed) + rm -fr debian/tmp/fishdescriptor/usr/lib/python2.7 + rm -fr debian/tmp/fishdescriptor/usr/lib/python3 + rm -f debian/tmp/fishdescriptor/usr/bin/fishdescriptor + + +override_dh_shlibdeps: + dh_shlibdeps -p chiark-rwbuffer + dh_shlibdeps -p chiark-really + + set -e; for f in $d/chiark-utils-bin/usr/bin/*; do \ + fn="$$f"; if test -L "$$f"; then fn=$$(realpath "$$fn"); fi; \ + case "$$fn" in \ */xbatmon-simple|*/xduplic-copier) \ d=Suggests ;; \ - */watershed|*/summer) d=Recommends ;; \ + */watershed|*/summer|*/cgi-fcgi-interp|*/prefork-interp) \ + d=Recommends ;; \ *) d=Depends ;; \ esac; \ a="$$a -d$$d $$f"; \ done; set -x; \ - dpkg-shlibdeps -Tdebian/sv-chiark-utils-bin $$a - perl -i~ -pe ' '\ - -e' next unless m/^shlibs:/; '\ - -e' s/$$/,/; s/=/=, /; '\ - -e' s/, libgmp3(?:c2)?,/, libgmp3 | libgmp3c2,/; '\ - -e' s/=, /=/; s/,$$//; '\ - debian/sv-*[!~] - set -e; for p in $(packages_arch); \ - do debian/rules binary-one p=$$p; done - -define checkdir - test -f cprogs/writebuffer.c -endef - -# Below here is fairly generic really - -binary: binary-indep binary-arch - -source diff: - @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false + dh_shlibdeps -p chiark-utils-bin -- $$a -checkroot: - $(checkdir) - test root = "`whoami`" -.PHONY: binary binary-arch binary-indep clean checkroot +execute_after_dh_fixperms: + chmod u+s,o-x debian/chiark-really/usr/sbin/really