#!/usr/bin/make -f # debian/rules file - for tinyos-tools # Based on sample debian/rules file - for GNU Hello (1.3). # Copyright 1994,1995 by Ian Jackson. # Copyright 1998-2007 James Troup # I hereby give you perpetual unlimited permission to copy, # modify and relicense this file, provided that you do not remove # my name from the file itself. (I assert my moral right of # paternity under the Copyright, Designs and Patents Act 1988.) # This file may have to be extensively modified version := $(shell head -1 debian/changelog | sed -e s'|^.*(\(.*\)-.*).*$$|\1|') tosver := $(shell echo $(version) | sed -e s'|-.*||') tmiver := $(shell echo $(version) | sed -e s'|^.*-||') package = tinyos toolspkg = $(package)-tools srcmetapkg = $(package)-source srcpkg = $(srcmetapkg)-$(version) msppkg = tinyos-msp430 avrpkg = tinyos-avr STRIP = strip --strip-unneeded --remove-section=.comment --remove-section=.note install_dir = install -d -m 755 install_file = install -m 644 install_script = install -m 755 install_binary = install -m 755 -s DISTRIBUTION := $(shell lsb_release -is) dtmp := debian/tmp # At the current time (20080827) tinyos-tools will not build from a separate # build directory. # # For now, the solution is quite hackish: copy the source directory to the # build directory before running configure. tempdir := $(shell tempfile $(PACKAGE)) debian/control: debian/control.in debian/changelog sed -e 's/RELEASE-VERSION/$(version)/g' < $< | \ sed -e 's/TOS-VERSION/$(tosver)/g' | \ sed -e 's/TMI-VERSION/$(tmiver)/g' > debian/control configure-stamp: $(checkdir) rm -rf configure-stamp $(dtmp)/builddir $(tempdir) $(install_dir) $(dtmp) cp -a . $(tempdir) mv $(tempdir) $(dtmp)/builddir rm -rf $(dtmp)/builddir/debian cd $(dtmp)/builddir/tools && ./Bootstrap && ./configure --prefix=/usr touch $@ build: build-stamp build-stamp: configure-stamp $(checkdir) $(MAKE) -C $(dtmp)/builddir/tools touch $@ install: install-stamp install-stamp: checkroot build-stamp $(checkdir) rm -rf $(dtmp)/$(toolspkg) $(install_dir) $(dtmp)/$(toolspkg) $(MAKE) -C $(dtmp)/builddir/tools \ prefix=$$(pwd)/$(dtmp)/$(toolspkg)/usr \ mandir=$$(pwd)/$(dtmp)/$(toolspkg)/usr/share/man install : # Build tinyos.jar here; gain access to uninstalled tinyos tools. PATH=$$(pwd)/$(dtmp)/$(toolspkg)/usr/bin:$$PATH \ TOSROOT=$$(pwd)/$(dtmp)/builddir \ TOSDIR=$$(pwd)/$(dtmp)/builddir/tos \ CLASSPATH=$$(pwd)/$(dtmp)/builddir/support/sdk/java:. \ $(MAKE) -C $(dtmp)/builddir/support/sdk/java tinyos.jar $(MAKE) -C $(dtmp)/builddir/support/sdk/java clean touch $@ binary-indep: checkroot build install : # Nothing to do binary-arch: checkroot build install $(checkdir) : # Build the tinyos package too rm -rf $(dtmp)/$(package) $(install_dir) $(dtmp)/$(package)/DEBIAN $(install_dir) $(dtmp)/$(package)/opt/tinyos $(install_file) tinyos.sh $(dtmp)/$(package)/opt/tinyos $(install_dir) $(dtmp)/$(package)/usr/share/lintian/overrides $(install_file) debian/$(package).lintian-overrides \ $(dtmp)/$(package)/usr/share/lintian/overrides/$(package) $(install_dir) $(dtmp)/$(package)/usr/share/doc/$(package)/ $(install_file) debian/copyright \ $(dtmp)/$(package)/usr/share/doc/$(package)/ $(install_file) tools/README debian/README.Debian \ $(dtmp)/$(package)/usr/share/doc/$(package)/ dpkg-gencontrol -isp -P$(dtmp)/$(package) -p$(package) chown -R root:root $(dtmp)/$(package) chmod -R go=rX $(dtmp)/$(package) dpkg --build $(dtmp)/$(package) .. : # Build the tinyos-tools package $(install_dir) $(dtmp)/$(toolspkg)/DEBIAN $(install_script) debian/$(toolspkg).postinst \ $(dtmp)/$(toolspkg)/DEBIAN/postinst : # $(install_script) debian/$(toolspkg).postrm \ : # $(dtmp)/$(toolspkg)/DEBIAN/postrm $(install_dir) $(dtmp)/$(toolspkg)/usr/share/doc/$(toolspkg)/ $(install_file) debian/changelog \ $(dtmp)/$(toolspkg)/usr/share/doc/$(toolspkg)/changelog.Debian $(install_file) debian/copyright \ $(dtmp)/$(toolspkg)/usr/share/doc/$(toolspkg)/ $(install_file) tools/README debian/README.Debian \ $(dtmp)/$(toolspkg)/usr/share/doc/$(toolspkg)/ gzip -9 $(dtmp)/$(toolspkg)/usr/share/man/man1/* find $(dtmp)/$(toolspkg)/usr/share/doc/$(toolspkg) -type f \ ! -name copyright | xargs gzip -9 $(install_dir) $(dtmp)/$(toolspkg)/usr/share/lintian/overrides $(install_file) debian/$(toolspkg).lintian-overrides \ $(dtmp)/$(toolspkg)/usr/share/lintian/overrides/$(toolspkg) find $(dtmp)/$(toolspkg) -type f | xargs file | grep ELF | \ cut -d: -f 1 | xargs dpkg-shlibdeps dpkg-gencontrol -isp -P$(dtmp)/$(toolspkg) -p$(toolspkg) chown -R root:root $(dtmp)/$(toolspkg) chmod -R go=rX $(dtmp)/$(toolspkg) dpkg --build $(dtmp)/$(toolspkg) .. : # Build the tinyos-source meta package rm -rf $(dtmp)/$(srcmetapkg) $(install_dir) $(dtmp)/$(srcmetapkg)/DEBIAN $(install_dir) $(dtmp)/$(srcmetapkg)/usr/share/lintian/overrides $(install_file) debian/$(srcmetapkg).lintian-overrides \ $(dtmp)/$(srcmetapkg)/usr/share/lintian/overrides/$(srcmetapkg) $(install_dir) $(dtmp)/$(srcmetapkg)/usr/share/doc/$(srcmetapkg)/ $(install_file) debian/copyright \ $(dtmp)/$(srcmetapkg)/usr/share/doc/$(srcmetapkg)/ dpkg-gencontrol -isp -P$(dtmp)/$(srcmetapkg) -p$(srcmetapkg) chown -R root:root $(dtmp)/$(srcmetapkg) chmod -R go=rX $(dtmp)/$(srcmetapkg) dpkg --build $(dtmp)/$(srcmetapkg) .. : # Build the tinyos-source-VERSION package rm -rf $(dtmp)/$(srcpkg) $(install_dir) $(dtmp)/$(srcpkg)/DEBIAN $(install_dir) $(dtmp)/$(srcpkg)/opt/tinyos chmod u+x tools/release/extractor tools/release/extractor $(dtmp)/$(srcpkg)/opt/tinyos/$(version) < \ tools/release/tinyos.filter >/dev/null $(install_dir) $(dtmp)/$(srcpkg)/usr/share/lintian/overrides $(install_file) debian/$(srcmetapkg).lintian-overrides \ $(dtmp)/$(srcpkg)/usr/share/lintian/overrides/$(srcpkg) $(install_dir) $(dtmp)/$(srcpkg)/usr/share/doc/$(srcpkg)/ $(install_file) debian/changelog \ $(dtmp)/$(srcpkg)/usr/share/doc/$(srcpkg)/changelog.Debian $(install_file) debian/copyright \ $(dtmp)/$(srcpkg)/usr/share/doc/$(srcpkg)/ $(install_file) tools/README debian/README.Debian \ $(dtmp)/$(srcpkg)/usr/share/doc/$(srcpkg)/ find $(dtmp)/$(srcpkg)/usr/share/doc/$(srcpkg) -type f \ ! -name copyright | xargs gzip -9 dpkg-gencontrol -isp -P$(dtmp)/$(srcpkg) -p$(srcpkg) chown -R root:root $(dtmp)/$(srcpkg) chmod -R go=rX $(dtmp)/$(srcpkg) dpkg --build $(dtmp)/$(srcpkg) .. : # Build tinyos-msp430 dummy package rm -rf $(dtmp)/$(msppkg) $(install_dir) $(dtmp)/$(msppkg)/DEBIAN $(install_dir) $(dtmp)/$(msppkg)/usr/share/lintian/overrides $(install_file) debian/$(msppkg).lintian-overrides \ $(dtmp)/$(msppkg)/usr/share/lintian/overrides/$(msppkg) $(install_dir) $(dtmp)/$(msppkg)/usr/share/doc/$(msppkg)/ $(install_file) debian/copyright \ $(dtmp)/$(msppkg)/usr/share/doc/$(msppkg)/ $(install_file) tools/README debian/README.Debian \ $(dtmp)/$(msppkg)/usr/share/doc/$(msppkg)/ dpkg-gencontrol -isp -P$(dtmp)/$(msppkg) -p$(msppkg) chown -R root:root $(dtmp)/$(msppkg) chmod -R go=rX $(dtmp)/$(msppkg) dpkg --build $(dtmp)/$(msppkg) .. : # Build tinyos-avr dummy package rm -rf $(dtmp)/$(avrpkg) $(install_dir) $(dtmp)/$(avrpkg)/DEBIAN $(install_dir) $(dtmp)/$(avrpkg)/usr/share/lintian/overrides $(install_file) debian/$(avrpkg).lintian-overrides \ $(dtmp)/$(avrpkg)/usr/share/lintian/overrides/$(avrpkg) $(install_dir) $(dtmp)/$(avrpkg)/usr/share/doc/$(avrpkg)/ $(install_file) debian/copyright \ $(dtmp)/$(avrpkg)/usr/share/doc/$(avrpkg)/ $(install_file) tools/README debian/README.Debian \ $(dtmp)/$(avrpkg)/usr/share/doc/$(avrpkg)/ dpkg-gencontrol -isp -P$(dtmp)/$(avrpkg) -p$(avrpkg) chown -R root:root $(dtmp)/$(avrpkg) chmod -R go=rX $(dtmp)/$(avrpkg) dpkg --build $(dtmp)/$(avrpkg) .. binary: binary-indep binary-arch clean: debian/control $(checkdir) -rm -rf $(dtmp) -rm -fr debian/files* debian/substvars -rm -f *-stamp define checkdir test -d tos/chips -a -f debian/rules endef checkroot: $(checkdir) test root = "`whoami`" .PHONY: binary clean checkroot