#!/usr/bin/make -f # -*- makefile -*- # Sample debian/rules that uses debhelper. # GNU copyright 1997 to 1999 by Joey Hess. # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 export PACKAGE=tor include /usr/share/dpatch/dpatch.make # These are used for cross-compiling and for saving the configure script # from having to guess our platform (since we know it already) # # See /usr/share/doc/autotools-dev/README.Debian.gz which suggests # this way of passing --build and --host. Also see the thread on # debian-devel './configure in debian/rules' from February/March 2006, # starting with <43FF212C.5020800@xs4all.nl> by Pjotr Kourzanov. export DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) confflags += --build $(DEB_HOST_GNU_TYPE) else confflags += --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE) endif CFLAGS ?= -Wall -g LOCALHOST_IP ?= $(shell getent hosts localhost | awk '{print $$1}') # Do not optimize the build with "noopt" ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) CFLAGS += -O0 else CFLAGS += -O2 endif # Do not strip the binary with "nostrip" #ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) # INSTALL_PROGRAM += -s #endif # Prevent the unit tests from being run with "nocheck" ifneq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS))) RUN_TEST = no endif ifneq (,$(findstring notest,$(DEB_BUILD_OPTIONS))) RUN_TEST = no endif # Support passing of parallel= in build options ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) MAKEFLAGS += -j$(NUMJOBS) endif CONF_OPTIONS = # build against libdmalloc4 - it better be installed ifneq (,$(findstring with-dmalloc,$(DEB_BUILD_OPTIONS))) CONF_OPTIONS += --with-dmalloc endif # allow building with --enable-openbsd-malloc ifneq (,$(findstring enable-openbsd-malloc,$(DEB_BUILD_OPTIONS))) CONF_OPTIONS += --enable-openbsd-malloc endif configure: patch-stamp config.status: configure # clean up test.h stuff. XXX - expected to no longer be needed after tor-0.2.2.4-alpha rm -f src/test/test.h.orig ! [ -e src/test/test.h ] || mv src/test/test.h src/test/test.h.orig cp debian/src-test-test.h src/test/test.h @if [ "$(LOCALHOST_IP)" != "127.0.0.1" ]; then echo; echo; echo; echo; echo; echo "######################################################################"; echo "WARNING: This system does not think localhost is 127.0.0.1. Will ignore result of testsuite. Please fix your system/chroot."; echo "######################################################################"; echo; echo; echo; echo; echo "Note: 'getent hosts localhost' should return '127.0.0.1 localhost'"; echo; fi dh_testdir CFLAGS="$(CFLAGS)" ./configure \ $(confflags) \ --prefix=/usr \ --mandir=\$${prefix}/share/man \ --infodir=\$${prefix}/share/info \ --localstatedir=/var \ --sysconfdir=/etc \ $(CONF_OPTIONS) build: build-stamp build-stamp: config.status dh_testdir ! [ debian/micro-revision.i ] || cp debian/micro-revision.i src/or/micro-revision.i $(MAKE) @echo @echo # Running unit tests @if [ "$(RUN_TEST)" != "no" ]; then \ if [ "$(LOCALHOST_IP)" != "127.0.0.1" ]; then \ echo; echo; echo "######################################################################"; echo "WARNING: This system does not think localhost is 127.0.0.1. Will ignore result of testsuite. Please fix your system/chroot."; echo "######################################################################"; echo; echo; \ echo "make check || true"; \ make check || true; \ else \ echo "make check"; \ make check; \ fi; \ else \ echo -e "\n\nSkipping unittests\n\n"; \ fi @echo # XXX # So, gs-gpl on s390 is broken (#457568) and fails to properly build # .pdf files from .fig files using fig2dev. Therefore we ship them # until this bug is fixed. # # of course we can always give it a try # # the hexdumps were built using something like # perl -e 'while (<>) { print unpack ("H*", $_); }' interaction.pdf | fold > hexdump-interaction.pdf # # And it fails on a bunch of other archs too. cd doc/design-paper; \ fig2dev -L pdf cell-struct.fig cell-struct.pdf || \ ( echo "** Using shipped pdf file because fig2dev failed"; \ perl -e 'while (<>) { chomp; print pack ("H*", $$_); }' ../../debian/hexdump-cell-struct.pdf > cell-struct.pdf ); \ fig2dev -L pdf interaction.fig interaction.pdf || \ ( echo "** Using shipped pdf file because fig2dev failed"; \ perl -e 'while (<>) { chomp; print pack ("H*", $$_); }' ../../debian/hexdump-interaction.pdf > interaction.pdf ); \ # XXX ends make -C doc/design-paper tor-design.ps tor-design.pdf touch build-stamp clean: unpatch dh_testdir dh_testroot rm -f build-stamp rm -f src/common/common_sha1.i src/or/or_sha1.i rm -f src/or/micro-revision.i [ ! -f Makefile ] || $(MAKE) distclean # clean up test.h stuff. XXX - expected to no longer be needed after tor-0.2.2.4-alpha rm -f src/test/test.h ! [ -e src/test/test.h.orig ] || mv src/test/test.h.orig src/test/test.h # Normally the .deb wouldn't ship with a ../.git if [ -d .git ] && which git >/dev/null; then \ echo "\"`git rev-parse --short=16 HEAD`\"" > "debian/micro-revision.i" ; \ fi dh_clean install: build dh_testdir dh_testroot dh_clean -k dh_installdirs $(MAKE) install DESTDIR=$(CURDIR)/debian/tor # move tor to where it belongs mv $(CURDIR)/debian/tor/etc/tor/torrc.sample $(CURDIR)/debian/tor/etc/tor/torrc mv $(CURDIR)/debian/tor/usr/bin/tor $(CURDIR)/debian/tor/usr/sbin/tor install -d $(CURDIR)/debian/tor/usr/share/man/man8 mv $(CURDIR)/debian/tor/usr/share/man/man1/tor.1 $(CURDIR)/debian/tor/usr/share/man/man8/tor.8 install -m 755 contrib/torify $(CURDIR)/debian/tor/usr/bin install -m 644 contrib/torify.1 $(CURDIR)/debian/tor/usr/share/man/man1 install -m 644 contrib/tor-tsocks.conf $(CURDIR)/debian/tor/etc/tor install -m 644 debian/tor.lintian-override $(CURDIR)/debian/tor/usr/share/lintian/overrides/tor install -d -m 755 $(CURDIR)/debian/tor/usr/share/doc/tor/spec for i in doc/spec/*txt; do \ install -m 644 $$i $(CURDIR)/debian/tor/usr/share/doc/tor/spec || exit 1; \ done dh_link usr/share/man/man8/tor.8 usr/share/man/man5/torrc.5 rm -f $(CURDIR)/debian/tor/usr/bin/tor-control.py # tor-dbg doc dir install -d -m 755 $(CURDIR)/debian/tor-dbg/usr/share/doc ln -s tor $(CURDIR)/debian/tor-dbg/usr/share/doc/tor-dbg # tor-geoip mv $(CURDIR)/debian/tor/usr/share/tor/geoip $(CURDIR)/debian/tor-geoipdb/usr/share/tor rmdir $(CURDIR)/debian/tor/usr/share/tor || true install -d -m 755 $(CURDIR)/debian/tor-geoipdb/usr/share/doc/tor-geoipdb ln -s ../tor/changelog.gz $(CURDIR)/debian/tor-geoipdb/usr/share/doc/tor-geoipdb ln -s ../tor/changelog.Debian.gz $(CURDIR)/debian/tor-geoipdb/usr/share/doc/tor-geoipdb install -m 644 debian/tor-geoipdb.lintian-override $(CURDIR)/debian/tor-geoipdb/usr/share/lintian/overrides/tor-geoipdb # Must not depend on anything. This is to be called by # binary-arch/binary-indep # in another 'make' thread. binary-common: dh_testdir dh_testroot dh_installchangelogs --package=tor ChangeLog dh_installdocs dh_installexamples dh_installlogrotate dh_installinit dh_installman dh_link dh_strip --dbg-package=tor-dbg dh_compress dh_fixperms dh_installdeb dh_shlibdeps dh_gencontrol dh_md5sums dh_builddeb # Build architecture independant packages using the common target. binary-indep: install $(MAKE) -f debian/rules DH_OPTIONS=-i binary-common # Build architecture dependant packages using the common target. binary-arch: install $(MAKE) -f debian/rules DH_OPTIONS=-s binary-common @if [ "$(LOCALHOST_IP)" != "127.0.0.1" ]; then echo; echo; echo; echo; echo; echo "######################################################################"; echo "WARNING: This system does not think localhost is 127.0.0.1. Result of testsuite has been ignored. Please fix your system/chroot."; echo "######################################################################"; echo; echo; echo; echo; echo "Note: 'getent hosts localhost' should return '127.0.0.1 localhost'"; echo; fi binary: binary-indep binary-arch .PHONY: build clean binary-common binary-indep binary-arch binary install