chiark / gitweb /
changelog: Mention that rebuild will close #811216
[chiark-utils.git] / debian / rules
index 5c5ea51..ee7e283 100755 (executable)
 #!/usr/bin/make -f
 
+SHELL=/bin/bash
+
+subdirs_build_arch=    cprogs
+subdirs_nobuild=backup sync-accounts scripts
 package=       chiark-utils
-packages_indep=        chiark-backup chiark-rwbuffer
-packages_arch= chiark-backup chiark-rwbuffer
+packages_indep=        chiark-backup chiark-scripts
+packages_arch= chiark-rwbuffer chiark-really chiark-utils-bin
 packages=      $(packages_indep) $(packages_arch)
 
 cwd=   $(shell pwd)
 d=     $(cwd)/debian
 t=     $d/tmp
 
+makebuildargs := OPTIMISE= DEBUG= \
+ CMDLINE_CFLAGS="$(shell dpkg-buildflags --get CFLAGS)" \
+ CMDLINE_CPPFLAGS="$(shell dpkg-buildflags --get CPPFLAGS)" \
+ CMDLINE_LDFLAGS="$(shell dpkg-buildflags --get LDFLAGS)"
+
 build:
        $(checkdir)
-       $(MAKE) -C backup all
+       set -e; for s in $(subdirs_build_arch); do \
+               $(MAKE) -C $$s all $(makebuildargs); \
+       done
        touch build
 
+build-indep: build
+build-arch: build
+
 clean:
        $(checkdir)
-       -rm -f build
-       -$(MAKE) -i distclean || $(MAKE) -f Makefile.in distclean
-       -rm -rf *~ debian/tmp debian/*~ debian/files* debian/substvars*
+       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
 
 binary-prep:
        $(checkdir)
-       -rm -rf debian/tmp*
-       -#
+       rm -rf debian/tmp*
+       #
+       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; \
+       done
+       #
+       mv $t/cprogs $t/chiark-utils-bin
+       #
+       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/usr/share/doc/$$p; \
+               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/usr/share/doc/$$p/changelog.Debian.gz; \
-               gzip -9v $t/usr/share/doc/$$p/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
-       -#
-       $(MAKE) -C backup install prefix=$t/chiark-backup
-       -#
+       #
        install -d $t/chiark-rwbuffer/usr/bin
-       cd $t/chiark-backup/usr/bin && \
-        mv readbuffer writebuffer $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 && \
+               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
+       #
+       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:
-       dpkg-gencontrol -p$p -O$t/$p -Tdebian/sv-$p
+       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 -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
-       install -d debian/tmp/var/run/$(package)/
-       cp debian/{postinst,prerm,postrm,conffiles} debian/tmp/DEBIAN/.
-       cp debian/initd debian/tmp/etc/init.d/userv
-       chmod +x debian/tmp/DEBIAN/{postinst,prerm,postrm}
-       chmod +x debian/tmp/etc/init.d/userv
-       $(MAKE) LDFLAGS=-s INSTALL_PROGRAM='install -c -s' \
-               prefix=debian/tmp/usr etcdir=debian/tmp/etc \
-               docdir=debian/tmp/usr/doc/userv \
-               install install-doc
-       cp debian/copyright debian/tmp/usr/doc/$(package)/.
-       cp debian/changelog debian/tmp/usr/doc/$(package)/changelog
-       cp README debian/tmp/usr/doc/$(package)/README.upstream
-       cp system.default system.override debian/tmp/usr/doc/$(package)/examples
-       ln -s changelog.gz debian/tmp/usr/doc/$(package)/changelog.Debian.gz
-       gzip -9v debian/tmp/usr/doc/$(package)/changelog debian/tmp/usr/man/man1/*.1
-       rm debian/tmp/usr/doc/userv/*.ps
-       dpkg-shlibdeps daemon client
-       dpkg-gencontrol
-       chown -R root.root debian/tmp
-       chmod -R g-ws debian/tmp
-       chmod 700 debian/tmp/var/run/userv
-       dpkg --build debian/tmp ..
-       $(checkdir)
+       set -e; for p in $(packages_indep); do \
+               debian/rules binary-one p=$$p; done
 
 binary-arch:   checkroot build binary-prep
        $(checkdir)
-       rm debian/tmp/usr/doc/userv/*.ps
-       dpkg-shlibdeps -Tdebian/sv-chiark-backup $t/chiark-backup/usr/bin/*
-       set -e; for p $(packages_arch); do debian/rules binary-one p=$$p; done
+       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 \
+               */xbatmon-simple|*/xduplic-copier) \
+                                       d=Suggests      ;; \
+               */watershed|*/summer|*/cgi-fcgi-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 backup/writebuffer.c
+       test -f cprogs/writebuffer.c
 endef
 
 # Below here is fairly generic really