#! /usr/bin/make -f
-# -*- makefile -*-
-#
-# Invoke each target with `./debian/rules <target>'. All targets should be
-# invoked with the package root as the current directory.
-#
-# The `binary' target must be run as root, as it needs to install files with
-# specific ownerships.
-
-.PHONY: binary binary-arch binary-indep build build-arch build-indep \
- build-std install install-udeb \
- clean checkroot mrproper debug_flags debian-files
+
+# export DH_VERBOSE=1
export DEB_BUILD_MAINT_OPTIONS ?= hardening=+all
+DPKG_EXPORT_BUILDFLAGS = 1
+include /usr/share/dpkg/default.mk
+
# be paranoid
export LC_ALL ?= C
-# These are used for cross-compiling and for saving the configure script
-# from having to guess our platform (since we know it already)
-DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
-DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH)
-DEB_HOST_OS ?= $(shell dpkg-architecture -qDEB_HOST_OS)
-DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
-DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
-DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
-DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS)
-
-# Allow distro-specific behaviour
-DISTRO :=$(shell sed -ne '/DISTRIB_ID/s/.*=//p' /etc/lsb-release 2>/dev/null || echo Debian)
-
ifeq ($(DEB_HOST_ARCH_OS), hurd)
SKIP_FUSE2FS=yes
endif
SKIP_FUSE2FS=yes
endif
-# find the version for the main package, from changelog file
-MAIN_VERSION = $(shell head -n 1 debian/changelog | cut '-d ' -f 2 | sed 's/[()]//g')
-# find versions for libraries going into their own packages, from their Makefile.in's,
-# and sonames for all libs
COMERR_VERSION ?= $(shell grep ELF_VERSION lib/et/Makefile.in | cut '-d ' -f3)
-COMERR_SOVERSION ?= $(shell grep ELF_SO_VERSION lib/et/Makefile.in | cut '-d ' -f3)
SS_VERSION ?= $(shell grep ELF_VERSION lib/ss/Makefile.in | cut '-d ' -f3)
-SS_SOVERSION ?= $(shell grep ELF_SO_VERSION lib/ss/Makefile.in | cut '-d ' -f3)
-
-EXT2FS_SOVERSION ?= $(shell grep ELF_SO_VERSION lib/ext2fs/Makefile.in | cut '-d ' -f3)
-E2P_SOVERSION ?= $(shell grep ELF_SO_VERSION lib/e2p/Makefile.in | cut '-d ' -f3)
-
-package ?= e2fsprogs
topdir ?= $(shell pwd)
-debdir ?= ${topdir}/debian
-tmpdir ?= ${debdir}/tmp
-udebdir ?= ${debdir}/e2fsprogs-udeb
-libcomerrdir ?= ${debdir}/libcom-err${COMERR_SOVERSION}
-comerrdevdir ?= ${debdir}/comerr-dev
-libssdir ?= ${debdir}/libss${SS_SOVERSION}
-ssdevdir ?= ${debdir}/ss-dev
-libext2dir ?= ${debdir}/libext2fs2
-libext2devdir ?= ${debdir}/libext2fs-dev
-maindir ?= ${debdir}/e2fsprogs
-e2fsckstaticdir ?= ${debdir}/e2fsck-static
-stdbuilddir ?= ${debdir}/BUILD-STD
-# docdir ?= ${maindir}/usr/share/doc/${package}
-MANDIR ?= /usr/share/man
-mandir ?= ${tmpdir}${MANDIR}
-
-UDEB_NAME ?= $(package)-udeb_$(MAIN_VERSION)_$(DEB_HOST_ARCH).udeb
-UDEB_PRIORITY ?= $(shell grep '^Package: e2fsprogs-udeb' debian/control -A 10 | grep ^Priority: | cut -d ' ' -f 2)
-
-STAMPSDIR ?= debian/stampdir
-CFGSTDSTAMP ?= ${STAMPSDIR}/configure-std-stamp
-BUILDSTDSTAMP ?= ${STAMPSDIR}/build-std-stamp
+tmpdir ?= ${topdir}/debian/tmp
+udebdir ?= ${topdir}/debian/e2fsprogs-udeb
+stdbuilddir ?= ${topdir}/debian/BUILD-STD
INSTALL ?= install
INSTALL_PROGRAM ?= $(INSTALL) -p -o root -g root -m 0755
-#ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
-#INSTALL_PROGRAM += -s
-#endif
-
ifneq (,$(findstring update-symbols,$(DEB_BUILD_OPTIONS)))
SYMBOL_LIBS := libext2fs libcomerr2 libss2
endif
-DEFAULT_CFLAGS ?= -g -O2
-DEFAULT_LDFLAGS ?= -Wl,-Bsymbolic-functions
-
-CFLAGS ?= $(shell if dpkg-buildflags > /dev/null 2>&1 ; then \
- DEB_BUILD_MAINT_OPTIONS=$(DEB_BUILD_MAINT_OPTIONS) \
- dpkg-buildflags --get CFLAGS; else echo $(DEFAULT_CFLAGS) ; fi)
-LDFLAGS ?= $(shell if dpkg-buildflags > /dev/null 2>&1 ; then \
- DEB_BUILD_MAINT_OPTIONS=$(DEB_BUILD_MAINT_OPTIONS) \
- dpkg-buildflags --get LDFLAGS; else echo $(DEFAULT_LDFLAGS) ; fi)
-CPPFLAGS ?= $(shell if dpkg-buildflags > /dev/null 2>&1 ; then \
- DEB_BUILD_MAINT_OPTIONS=$(DEB_BUILD_MAINT_OPTIONS) \
- dpkg-buildflags --get CPPFLAGS; fi)
-
ifeq (${DEB_HOST_ARCH},alpha)
CFLAGS += -DHAVE_NETINET_IN_H
else
CFLAGS += -D__NO_STRING_INLINES
endif
-E2FSCK_STATIC = ${stdbuilddir}/e2fsck/e2fsck.static
-
CFLAGS_SHLIB = $(CFLAGS)
CFLAGS_STLIB = $(CFLAGS)
LDFLAGS_SHLIB = $(LDFLAGS)
LDFLAGS_STATIC = $(filter-out -fPIE -fpie -pie,$(LDFLAGS))
-UTIL_CONF_FLAGS ?= --disable-fsck --disable-libblkid \
- --disable-libuuid --disable-uuidd
-
-ifneq ($(SKIP_FUSE2FS),)
-UTIL_CONF_FLAGS += --disable-fuse2fs
-endif
-
-BACKTRACE_CONF_FLAGS ?= $(shell if ${debdir}/scripts/test-backtrace ; then echo --disable-backtrace ; fi)
+BACKTRACE_CONF_FLAGS ?= $(shell if debian/scripts/test-backtrace ; then echo --disable-backtrace ; fi)
-COMMON_CONF_FLAGS = --enable-lto --disable-ubsan --disable-addrsan \
- --disable-threadsan --disable-e2initrd-helper \
+COMMON_CONF_FLAGS = --enable-elf-shlibs --enable-lto --disable-ubsan \
+ --disable-addrsan --disable-threadsan --disable-e2initrd-helper \
+ --disable-fsck --disable-libblkid --disable-libuuid --disable-uuidd \
--infodir=/usr/share/info --enable-symlink-install \
--with-multiarch=$(DEB_HOST_MULTIARCH) \
- $(BACKTRACE_CONF_FLAGS) $(UTIL_CONF_FLAGS)
+ $(BACKTRACE_CONF_FLAGS) ${EXTRA_CONF_FLAGS}
-STD_CONF_FLAGS ?= --enable-elf-shlibs
+ifneq ($(SKIP_FUSE2FS),)
+COMMON_CONF_FLAGS += --disable-fuse2fs
+endif
-mrproper: clean
- if test -f debian/control.save; then \
- mv debian/control.save debian/control ; \
- fi
+ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
+CC ?= $(DEB_HOST_GNU_TYPE)-gcc
+COMMON_CONF_FLAGS += --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE)
+endif
-${CFGSTDSTAMP}:
- dh_testdir
- if which dh_update_autotools_config > /dev/null 2>&1 ; then \
- dh_update_autotools_config ;\
- fi
+%:
+ dh $@ -B${stdbuilddir}
- # Make sure we don't try to rebuild the configure scripts
- find . -name configure | xargs touch
+override_dh_autoreconf:
+override_dh_auto_configure:
mkdir -p ${stdbuilddir}
-ifeq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH))
cd ${stdbuilddir} && AWK=/usr/bin/awk \
- ../../configure ${COMMON_CONF_FLAGS} ${STD_CONF_FLAGS} \
- ${EXTRA_CONF_FLAGS} CFLAGS="${CFLAGS}" CPPFLAGS="$(CPPFLAGS)" \
- LDFLAGS="$(LDFLAGS)" CFLAGS_SHLIB="$(CFLAGS_SHLIB)" \
- CFLAGS_STLIB="$(CFLAGS_STLIB)" \
- LDFLAGS_SHLIB="$(LDFLAGS_SHLIB)" \
- LDFLAGS_STATIC="$(LDFLAGS_STATIC)"
-else
- cd ${stdbuilddir} && AWK=/usr/bin/awk CC="${DEB_HOST_GNU_TYPE}-gcc" \
- ../../configure ${COMMON_CONF_FLAGS} ${STD_CONF_FLAGS} \
- ${EXTRA_CONF_FLAGS} --build=$(DEB_BUILD_GNU_TYPE) \
- --host=$(DEB_HOST_GNU_TYPE) CFLAGS="${CFLAGS}" \
- CPPFLAGS="$(CPPFLAGS)" CFLAGS_SHLIB="$(CFLAGS_SHLIB)" \
- CFLAGS_STLIB="$(CFLAGS_STLIB)" \
- LDFLAGS="$(LDFLAGS)" \
- LDFLAGS_SHLIB="$(LDFLAGS_SHLIB)" \
- LDFLAGS_STATIC="$(LDFLAGS_STATIC)"
-endif
-
- mkdir -p ${STAMPSDIR}
- touch ${CFGSTDSTAMP}
+ ../../configure ${COMMON_CONF_FLAGS}
-build-arch: build
-build-indep: build
-
-build: ${BUILDSTDSTAMP}
-${BUILDSTDSTAMP}: ${CFGSTDSTAMP}
- dh_testdir
+override_dh_auto_build:
$(MAKE) -C ${stdbuilddir} V=1 all
$(MAKE) -C ${stdbuilddir}/e2fsck V=1 e2fsck.static
if ! test -d debian/orig-gmo ; then \
cat $(shell /bin/ls -1 ./doc/RelNotes/*.txt | tac) | \
gzip -9n > ${stdbuilddir}/NEWS.gz
- touch ${BUILDSTDSTAMP}
-
-clean:
- dh_testdir
+override_dh_auto_clean:
if test -d debian/orig-gmo ; then \
rm -f po/*.gmo po/*.po ; \
mv debian/orig-gmo/* po ; \
rmdir debian/orig-gmo ; \
fi
- if test -f debian/compat.save; then \
- mv debian/compat.save debian/compat ; \
- fi
- if test -f debian/e2fsprogs.postinst.save; then \
- mv debian/e2fsprogs.postinst.save debian/e2fsprogs.postinst ; \
- fi
- if test -f debian/e2fsprogs.postrm; then \
- rm -f debian/e2fsprogs.postrm ; \
- fi
- rm -rf ${STAMPSDIR} ${stdbuilddir}
- rm -f debian/*.substvars
- dh_clean
-
-install: build
- dh_testdir
- dh_testroot
- dh_prep
- dh_installdirs
+ rm -rf ${stdbuilddir}
+override_dh_auto_install:
mkdir -p ${tmpdir}/sbin
$(MAKE) -C ${stdbuilddir} V=1 install DESTDIR=${tmpdir} \
INSTALL_PROGRAM="${INSTALL_PROGRAM}" LDCONFIG=true
$(MAKE) -C ${stdbuilddir} V=1 install-libs DESTDIR=${tmpdir} LDCONFIG=true
# statically-linked fsck
- ${INSTALL_PROGRAM} $(E2FSCK_STATIC) ${tmpdir}/sbin
- cp ${mandir}/man8/e2fsck.8 ${mandir}/man8/e2fsck.static.8
+ ${INSTALL_PROGRAM} ${stdbuilddir}/e2fsck/e2fsck.static ${tmpdir}/sbin
+ (cd debian/tmp/usr/share/man/man8 ; cp e2fsck.8 e2fsck.static.8)
ifeq ($(DEB_HOST_ARCH_OS), hurd)
${INSTALL} -m 0644 misc/mke2fs-hurd.conf ${tmpdir}/etc/mke2fs.conf
ln -sf mke2fs mkfs.ext2 ; ln -sf mke2fs mkfs.ext3 ; \
ln -sf mke2fs mkfs.ext4)
- # install main e2fsprogs package
+override_dh_install:
dh_install -p e2fsprogs --sourcedir=${stdbuilddir} NEWS.gz \
usr/share/doc/e2fsprogs
dh_movefiles
test -z "`find ${tmpdir} -type f`"
-binary-indep: install
- dh_testdir
- dh_testroot
- dh_lintian -i
- dh_installdocs -i
- dh_installchangelogs -i
- dh_fixperms -i
- dh_compress -i
- dh_installdeb -i
- dh_gencontrol -i
- dh_md5sums -i
- dh_builddeb -i
-
-binary-arch: install
- dh_testdir
- dh_testroot
-
- dh_lintian -a
-
- # symlinks to prepare dh_installdocs run
-
- mkdir -p ${debdir}/libss${SS_SOVERSION}/usr/share/doc/libss${SS_SOVERSION}
- mkdir -p ${debdir}/ss-dev/usr/share/doc
-
- mkdir -p ${debdir}/libcom-err${COMERR_SOVERSION}/usr/share/doc/libcom-err${COMERR_SOVERSION}
- mkdir -p ${debdir}/comerr-dev/usr/share/doc
-
- mkdir -p ${debdir}/libext2fs2/usr/share/doc/libext2fs2
- mkdir -p ${debdir}/libext2fs-dev/usr/share/doc
-
- dh_installdocs -a -Ne2fsprogs-udeb
+override_dh_lintian:
+ dh_lintian
+ $(INSTALL) -D -p -m644 debian/e2fsprogs-udeb.lintian-overrides \
+ debian/e2fsprogs-udeb/usr/share/lintian/overrides/e2fsprogs-udeb
+override_dh_installinfo:
# HTML docs
- $(INSTALL) -d ${debdir}/libext2fs-dev/usr/share/doc/libext2fs2/html-info/
+ $(INSTALL) -d debian/libext2fs-dev/usr/share/doc/libext2fs2/html-info/
$(INSTALL) -p -m 0644 ${stdbuilddir}/doc/*.html \
- ${debdir}/libext2fs-dev/usr/share/doc/libext2fs2/html-info/
- $(INSTALL) -d ${debdir}/comerr-dev/usr/share/doc/comerr-dev/html-info/
+ debian/libext2fs-dev/usr/share/doc/libext2fs2/html-info/
+ $(INSTALL) -d debian/comerr-dev/usr/share/doc/comerr-dev/html-info/
$(INSTALL) -p -m 0644 ${stdbuilddir}/lib/et/*.html \
- ${debdir}/comerr-dev/usr/share/doc/comerr-dev/html-info/
+ debian/comerr-dev/usr/share/doc/comerr-dev/html-info/
# texinfo docs
- mkdir -p ${debdir}/comerr-dev/usr/share/doc/comerr-dev
+ mkdir -p debian/comerr-dev/usr/share/doc/comerr-dev
$(INSTALL) -p -m 0644 ${topdir}/doc/libext2fs.texinfo \
- ${debdir}/libext2fs-dev/usr/share/doc/libext2fs2/libext2fs.texi
+ debian/libext2fs-dev/usr/share/doc/libext2fs2/libext2fs.texi
$(INSTALL) -p -m 0644 ${topdir}/lib/et/com_err.texinfo \
- ${debdir}/comerr-dev/usr/share/doc/comerr-dev/com_err.texi
+ debian/comerr-dev/usr/share/doc/comerr-dev/com_err.texi
- $(INSTALL) -d ${debdir}/comerr-dev/usr/share/doc/comerr-dev/examples
+ $(INSTALL) -d debian/comerr-dev/usr/share/doc/comerr-dev/examples
$(INSTALL) -p -m 0644 lib/ss/ss_err.et \
${stdbuilddir}/lib/ext2fs/ext2_err.et \
- ${debdir}/comerr-dev/usr/share/doc/comerr-dev/examples
- $(INSTALL) -d ${debdir}/ss-dev/usr/share/doc/ss-dev/examples
+ debian/comerr-dev/usr/share/doc/comerr-dev/examples
+ $(INSTALL) -d debian/ss-dev/usr/share/doc/ss-dev/examples
$(INSTALL) -p -m 0644 debugfs/debug_cmds.ct \
- ${debdir}/ss-dev/usr/share/doc/ss-dev/examples
+ debian/ss-dev/usr/share/doc/ss-dev/examples
dh_installinfo -pcomerr-dev ${stdbuilddir}/lib/et/com_err.info
dh_installinfo -plibext2fs-dev ${stdbuilddir}/doc/libext2fs.info
- dh_installchangelogs -a
- dh_fixperms -a
- dh_strip -a
-
- # dpkg symbol handling
+override_dh_makeshlibs:
for i in $(SYMBOL_LIBS); \
do \
echo "Generating symbols for $$i..."; \
patch debian/$$i.symbols < debian/$$i.tmp-patch; \
/bin/rm debian/$$i.tmp-patch; \
done
+ dh_makeshlibs --add-udeb=e2fsprogs-udeb
- dh_compress -a
-
- dh_makeshlibs -a --add-udeb=e2fsprogs-udeb
- dh_installsystemd -p e2fsprogs
- $(INSTALL) -D -p -m644 debian/e2fsprogs-udeb.lintian-overrides \
- debian/e2fsprogs-udeb/usr/share/lintian/overrides/e2fsprogs-udeb
- dh_installdeb -a
- dh_shlibdeps -a -l${stdbuilddir}/lib
+override_dh_shlibdeps:
dh_shlibdeps -pe2fsprogs -l${stdbuilddir}/lib \
- -u"-Ldebian/e2fsprogs.shlibs.local"
+ -- -Ldebian/e2fsprogs.shlibs.local
dh_shlibdeps -pe2fsprogs-udeb -l${stdbuilddir}/lib \
- -u"-Ldebian/e2fsprogs-udeb.shlibs.local"
+ -- -Ldebian/e2fsprogs-udeb.shlibs.local
ifeq ($(SKIP_FUSE2FS),)
dh_shlibdeps -pfuse2fs -l${stdbuilddir}/lib \
- -u"-Ldebian/e2fsprogs.shlibs.local"
+ -- -Ldebian/e2fsprogs.shlibs.local
endif
+ dh_shlibdeps --remaining-packages -l${stdbuilddir}/lib
- dh_gencontrol -a -Ncomerr-dev -Nss-dev
+override_dh_gencontrol:
dh_gencontrol -pcomerr-dev \
- -u '-v${COMERR_VERSION}-${MAIN_VERSION} -VmainBinary=${MAIN_VERSION}'
+ -- -v${COMERR_VERSION}-${DEB_VERSION} -VmainBinary=${DEB_VERSION}
dh_gencontrol -pss-dev \
- -u '-v${SS_VERSION}-${MAIN_VERSION} -VmainBinary=${MAIN_VERSION}'
-
- dh_md5sums -a
- dh_builddeb -a
-
-binary: binary-indep binary-arch
+ -- -v${SS_VERSION}-${DEB_VERSION} -VmainBinary=${DEB_VERSION}
+ dh_gencontrol --remaining-packages
-debug_flags:
- @echo CFLAGS is $(CFLAGS)
- @echo LDFLAGS is $(LDFLAGS)
- @echo CPPFLAGS is $(CPPFLAGS)
+test_printenv:
+ printenv | sort