#!/usr/bin/make -f # 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 full_version := $(shell dpkg-parsechangelog | grep ^Version: | sed -e 's/^.*: //g') tar_version := $(shell echo $(full_version) | sed -e 's/-.*//g') svn_revision := $(shell echo $(full_version) | sed -e 's/.*~svn\([0-9]*\)-[0-9]*/\1/g' -e 's/^$(full_version)$$/HEAD/g') version := $(shell echo $(full_version) | sed -e 's/[~+-].*//g') pversion := $(shell echo $(version) | sed -e 's/\./_/g') major := $(shell echo $(version) | sed -e 's/\..*//g') revision := $(shell echo $(full_version) | sed -e 's/^[^+-]*//g') include /usr/share/dpkg/architecture.mk # Determine host architecture compiler ifeq ($(origin CC),default) CC := $(DEB_HOST_GNU_TYPE)-gcc endif # Use hardening flags export DEB_BUILD_MAINT_OPTIONS = hardening=+all # Pre-define CFLAGS, for hardening, debug and optimisation level DPKG_EXPORT_BUILDFLAGS = 1 include /usr/share/dpkg/buildflags.mk MACHINE_ARCH := $(DEB_HOST_ARCH_CPU) MACHINE_MULTIARCH := $(DEB_HOST_MULTIARCH) ifeq ($(DEB_HOST_ARCH_CPU), arm) ifneq (,$(findstring armhf,$(DEB_HOST_ARCH))) MACHINE_ARCH := armv6hf else MACHINE_ARCH := armv6 endif endif ifneq (,$(filter nostrip,$(DEB_BUILD_OPTIONS))) export STRIPFLAG= endif EXTRA_CFLAGS = \ -D_GNU_SOURCE -pipe -Wall \ -DMACHINE_ARCH='\"$(MACHINE_ARCH)\"' \ -DMACHINE_MULTIARCH='\"$(MACHINE_MULTIARCH)\"' \ -I$(CURDIR)/build-tree/src/sys \ -isystem /usr/include/freebsd \ -fPIC \ $(CPPFLAGS) \ $(NULL) # disabled due to #630907 (see also 20_libbsd_overlay.diff) # $(shell pkg-config --cflags libbsd-overlay) CFLAGS += $(EXTRA_CFLAGS) ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) # Do not mess with MAKEFLAGS until we transfer control to BSD make (see below) BSD_MAKEFLAGS += -j$(NUMJOBS) endif SVN_BASE := https://svn.freebsd.org/base #SVN := $(SVN_BASE)/release/$(version).0 SVN := $(SVN_BASE)/releng/$(version) #SVN := $(SVN_BASE)/stable/$(major) #SVN := $(SVN_BASE)/head SOURCE = freebsd-buildutils ORIGDIR = $(SOURCE)-$(tar_version) TARNAME = $(SOURCE)_$(tar_version).orig.tar.xz SOURCE_DATE_EPOCH ?= $(shell date -d "$$(dpkg-parsechangelog -SDate)" +%s) PMAKE_COMMON = \ MAKEFLAGS=$(BSD_MAKEFLAGS) \ NO_WERROR=1 NOGCCERROR=1 \ NOSHARED=NO NO_SHARED=NO NO_PROFILE=1 \ bmake \ CC=$(CC) \ -m $(CURDIR)/src/share/mk \ $(NULL) PMAKE = \ CFLAGS="$(CFLAGS)" \ $(PMAKE_COMMON) YACC = byacc package = $(SOURCE) get-orig-source: rm -rf $(ORIGDIR) mkdir -p $(ORIGDIR)/src/sys/sys $(ORIGDIR)/src/sys/kern/ for i in \ share/mk \ usr.bin/cksum \ usr.bin/elfdump \ usr.bin/file2c \ usr.bin/lex \ contrib/flex \ usr.bin/make \ usr.bin/mkdep \ usr.bin/brandelf \ usr.sbin/btxld \ usr.sbin/config \ usr.sbin/kgzip \ usr.sbin/kldxref \ usr.sbin/mtree \ sys/dev/aic7xxx/aicasm \ ; do \ svn export --ignore-keywords -r $(svn_revision) $(SVN)/$$i $(ORIGDIR)/src/$$i || exit ; \ done # Clamp timestamps to be no newer than last changelog entry, see # https://wiki.debian.org/ReproducibleBuilds/TimestampsInTarball find $(ORIGDIR) -newermt "@$(SOURCE_DATE_EPOCH)" -print0 \ | xargs -0r touch --no-dereference --date="@$(SOURCE_DATE_EPOCH)" # Create tarball with files sorted in a stable order, see # https://wiki.debian.org/ReproducibleBuilds/FileOrderInTarballs find $(ORIGDIR) -print0 | LC_ALL=C sort -z \ | tar --null --no-recursion --files-from - \ --numeric-owner --owner 0 --group 0 \ -cJf ../$(TARNAME) rm -rf $(ORIGDIR) unpack: unpack-stamp unpack-stamp: mkdir build-tree cp -a src build-tree/ touch unpack-stamp build: build-arch build-indep build-arch: build-stamp build-indep: build-stamp build-stamp: unpack-stamp dh_testdir $(PMAKE) -C build-tree/src/usr.bin/make $(PMAKE) -C build-tree/src/usr.bin/cksum cd build-tree/src/usr.bin/lex ; \ $(PMAKE) bootstrap ; \ $(PMAKE) NO_INSTALLLIB=1 $(PMAKE) -C build-tree/src/usr.bin/mkdep $(PMAKE) -C build-tree/src/usr.sbin/mtree $(PMAKE) -C build-tree/src/usr.bin/file2c $(PMAKE) -C build-tree/src/usr.bin/brandelf $(PMAKE) -C build-tree/src/sys/dev/aic7xxx/aicasm ifeq ($(DEB_HOST_ARCH_OS), kfreebsd) # Not portable yet. Maybe someday... $(PMAKE) -C build-tree/src/usr.sbin/kldxref endif PATH=$(CURDIR)/build-tree/src/usr.bin/file2c:$(PATH) \ $(PMAKE) -C build-tree/src/usr.sbin/config touch build-stamp install: build dh_testdir dh_testroot dh_prep dh_installdirs $(PMAKE) -C build-tree/src/usr.bin/file2c install DESTDIR=$(CURDIR)/debian/$(package) BINDIR=/usr/bin $(PMAKE) -C build-tree/src/usr.bin/brandelf install DESTDIR=$(CURDIR)/debian/$(package) BINDIR=/usr/bin for i in cksum lex mkdep ; do \ $(PMAKE) -C $(CURDIR)/build-tree/src/usr.bin/$$i install \ DESTDIR=$(CURDIR)/debian/$(package) BINDIR=/usr/lib/freebsd ; \ done for i in config ; do \ $(PMAKE) -C $(CURDIR)/build-tree/src/usr.sbin/$$i install \ DESTDIR=$(CURDIR)/debian/$(package) BINDIR=/usr/lib/freebsd ; \ done $(PMAKE) -C build-tree/src/share/mk install \ DESTDIR=$(CURDIR)/debian/freebsd-mk BINDIR=/usr/share \ WITH_TESTS=yes $(PMAKE) -C build-tree/src/sys/dev/aic7xxx/aicasm install \ DESTDIR=$(CURDIR)/debian/$(package) BINDIR=/usr/bin ifeq ($(DEB_HOST_ARCH_OS), kfreebsd) $(PMAKE) -C build-tree/src/usr.sbin/kldxref install \ DESTDIR=$(CURDIR)/debian/$(package) BINDIR=/usr/bin endif # Legacy make (aka fmake / fmtree) $(PMAKE) -C $(CURDIR)/build-tree/src/usr.bin/make install \ DESTDIR=$(CURDIR)/debian/$(package) BINDIR=/usr/bin $(PMAKE) -C $(CURDIR)/build-tree/src/usr.sbin/mtree install \ DESTDIR=$(CURDIR)/debian/$(package) BINDIR=/usr/bin # remove trash rm -rf $(CURDIR)/debian/$(package)/usr/include \ $(CURDIR)/debian/$(package)/var for i in `find $(CURDIR)/debian/$(package)/usr/share/man -type l` ; do \ rm $$i ; \ done rm -f $(CURDIR)/debian/$(package)/usr/share/man/man5/mtree.5.gz # relocate files for i in `cd $(CURDIR)/debian/$(package)/usr/lib/freebsd && ls` ; do \ ln -s ../lib/freebsd/$$i \ $(CURDIR)/debian/$(package)/usr/bin/freebsd-$$i ; \ for m in $(CURDIR)/debian/$(package)/usr/share/man/man[0-9]/$$i.* ; do \ mv $$m `echo $$m | sed -e 's:\(man[0-9]/\):\1freebsd-:'` ; \ done ; \ done rmdir $(CURDIR)/debian/$(package)/usr/sbin dh_install clean: dh_testdir dh_testroot rm -rf build-tree rm -f *-stamp dh_clean # Build architecture-independent files here. binary-indep: build binary-arch install # We have nothing to do by default. # Build architecture-dependent files here. binary-arch: build install dh_testdir dh_testroot # dh_installdebconf dh_installdocs # dh_installexamples # dh_installmenu # dh_installlogrotate # dh_installemacsen # dh_installpam # dh_installmime # dh_installinit # dh_installcron dh_installman # dh_installinfo dh_installchangelogs dh_link dh_strip dh_compress dh_fixperms # dh_makeshlibs dh_installdeb # dh_perl dh_shlibdeps dh_gencontrol dh_md5sums dh_builddeb binary: binary-indep binary-arch .PHONY: build clean binary-indep binary-arch binary install configure