2022-10-28 03:38:45 +05:00
#!/usr/bin/make -f
i n c l u d e / u s r / s h a r e / d p k g / d e f a u l t . m k
LSB_DISTRIBUTOR := $( shell lsb_release -is)
NAME := $( shell awk '$$1 == "Name:" { print $$2; }' META)
LINUX_MIN := $( shell awk '/Linux-Minimum:/{print $$2}' META)
LINUX_NEXT := $( shell awk -F'[ .]' '/Linux-Maximum:/{print $$2 "." $$3+1}' META)
2023-05-26 01:10:54 +02:00
DKMSFILES := module include config zfs.release.in autogen.sh copy-builtin META AUTHORS \
COPYRIGHT LICENSE README.md CODE_OF_CONDUCT.md NEWS NOTICE RELEASES.md
2022-10-28 03:38:45 +05:00
i f n d e f K V E R S
KVERS = $( shell uname -r)
e n d i f
non_epoch_version = $( shell echo $( KVERS) | perl -pe 's/^\d+://' )
PACKAGE = openzfs-zfs
pmodules = $( PACKAGE) -modules-$( non_epoch_version)
export DEB_BUILD_MAINT_OPTIONS = hardening = +all
NUM_CPUS = $( shell nproc 2>/dev/null)
PARALLEL = $( subst parallel = ,,$( filter parallel = %,$( DEB_BUILD_OPTIONS) ) )
NJOBS = -j$( or $( PARALLEL) ,$( NUM_CPUS) ,1)
% :
dh $@ --with autoreconf,dkms,python3,sphinxdoc
override_dh_autoreconf :
@# Embed the downstream version in the module.
@sed -e 's/^Version:.*/Version: $(DEB_VERSION_UPSTREAM)/' -i.orig META
dh_autoreconf
override_dh_auto_configure :
@# Build the userland, but don't build the kernel modules.
2022-12-14 06:33:05 +05:00
dh_auto_configure -- @CFGOPTS@ \
2022-10-28 03:38:45 +05:00
--bindir=/usr/bin \
2025-09-09 22:22:57 +08:00
--sbindir=/usr/sbin \
--with-mounthelperdir=/usr/sbin \
--libdir=/usr/lib/"$(DEB_HOST_MULTIARCH)" \
--with-udevdir=/usr/lib/udev \
2022-10-28 03:38:45 +05:00
--with-zfsexecdir=/usr/lib/zfs-linux \
--enable-systemd \
--enable-pyzfs \
--with-python=python3 \
2025-09-09 22:22:57 +08:00
--with-pammoduledir=' /usr/lib/$( DEB_HOST_MULTIARCH) /security' \
2022-10-28 03:38:45 +05:00
--with-pkgconfigdir=' /usr/lib/$( DEB_HOST_MULTIARCH) /pkgconfig' \
2025-09-09 22:22:57 +08:00
--with-systemdunitdir=/usr/lib/systemd/system \
--with-systemdpresetdir=/usr/lib/systemd/system-preset \
--with-systemdgeneratordir=/usr/lib/systemd/system-generators \
2022-10-28 03:38:45 +05:00
--with-config=user
for i in $(wildcard $(CURDIR)/debian/*.install.in) ; do \
basename "$$i" | grep _KVERS_ && continue ; \
sed ' s/@DEB_HOST_MULTIARCH@/$( DEB_HOST_MULTIARCH) /g' "$$i" > "$${i%%.in}" ; \
done
2024-10-03 20:45:10 +05:00
ln -s ' $( CURDIR) /etc/init.d/zfs-import' ' $( CURDIR) /debian/openzfs-zfsutils.zfs-import.init'
ln -s ' $( CURDIR) /etc/init.d/zfs-load-key' ' $( CURDIR) /debian/openzfs-zfsutils.zfs-load-key.init'
ln -s ' $( CURDIR) /etc/init.d/zfs-mount' ' $( CURDIR) /debian/openzfs-zfsutils.zfs-mount.init'
ln -s ' $( CURDIR) /etc/init.d/zfs-share' ' $( CURDIR) /debian/openzfs-zfsutils.zfs-share.init'
ln -s ' $( CURDIR) /etc/init.d/zfs-zed' ' $( CURDIR) /debian/openzfs-zfs-zed.zfs-zed.init'
2022-10-28 03:38:45 +05:00
override_dh_gencontrol :
dh_gencontrol -- -Vlinux:Recommends= " linux-libc-dev (<< $( LINUX_NEXT) ~), linux-libc-dev (>= $( LINUX_MIN) ~), "
override_dh_auto_build :
@# Get a bare copy of the source code for DKMS.
@# This creates the $( CURDIR) /$( NAME) -$( DEB_VERSION_UPSTREAM) / tree, which does not
@# contain the userland sources. NB: Remove-userland-dist-rules.patch
$( MAKE) distdir
dh_auto_build
override_dh_auto_install :
@# Install the utilities.
$( MAKE) install DESTDIR = '$(CURDIR)/debian/tmp'
@# Install the DKMS source.
@# We only want the files needed to build the modules
install -D -t '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(DEB_VERSION_UPSTREAM)/scripts' \
2025-08-17 11:16:54 +08:00
'$(CURDIR)/scripts/dkms.postbuild' '$(CURDIR)/scripts/objtool-wrapper.in'
2022-10-28 03:38:45 +05:00
$( foreach file,$( DKMSFILES) ,mv '$(CURDIR)/$(NAME)-$(DEB_VERSION_UPSTREAM)/$(file)' '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(DEB_VERSION_UPSTREAM)' || exit 1; )
@# Only ever build Linux modules
echo 'SUBDIRS = linux' > '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(DEB_VERSION_UPSTREAM)/include/os/Makefile.am'
@# Hellish awk line:
@# * Deletes from configure.ac the parts not needed for building the kernel module
@# * It deletes from inside AC_CONFIG_FILES( [ ] ) everything except:
@# - Makefile$
@# - include/( Makefile| sys| os/( Makefile| linux) )
@# - module/
@# - zfs.release$
@# * Takes care of spaces and tabs
@# * Remove reference to ZFS_AC_PACKAGE
2025-08-16 15:31:37 +02:00
awk '/^AC_CONFIG_FILES\(\[/,/\]\)/ {\
if ($$0 !~ /^(AC_CONFIG_FILES\(\[([ \t]+)?$$|\]\)([ \t]+)?$$|([ \t]+)?(include\/(Makefile|sys|os\/(Makefile|linux))|module\/|Makefile([ \t]+)?$$|zfs\.release([ \t]+)?$$))|scripts\/objtool-wrapper.*\]\)$$/) \
2022-10-28 03:38:45 +05:00
{next} } {print}' \
'$(CURDIR)/$(NAME)-$(DEB_VERSION_UPSTREAM)/configure.ac' | sed '/ZFS_AC_PACKAGE/d' > '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(DEB_VERSION_UPSTREAM)/configure.ac'
@# Set "SUBDIRS = module include" for CONFIG_KERNEL and remove SUBDIRS for all other configs.
@# Do not regenerate zfs_gitrev.h during dkms build
sed '1,/CONFIG_KERNEL/s/SUBDIRS.*=.*//g;s/SUBDIRS.*=.*/SUBDIRS = module include/g;/make_gitrev.sh/d' \
'$(CURDIR)/$(NAME)-$(DEB_VERSION_UPSTREAM)/Makefile.am' > '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(DEB_VERSION_UPSTREAM)/Makefile.am'
@# Sanity test
grep -q 'SUBDIRS = module include' '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(DEB_VERSION_UPSTREAM)/Makefile.am'
sed -i '/rpm.Makefile/d' $( CURDIR) /debian/tmp/usr/src/$( NAME) -$( DEB_VERSION_UPSTREAM) /Makefile.am
sed -i '/cmd.Makefile/d' $( CURDIR) /debian/tmp/usr/src/$( NAME) -$( DEB_VERSION_UPSTREAM) /Makefile.am
sed -i '/contrib.Makefile/d' $( CURDIR) /debian/tmp/usr/src/$( NAME) -$( DEB_VERSION_UPSTREAM) /Makefile.am
sed -i '/etc.Makefile/d' $( CURDIR) /debian/tmp/usr/src/$( NAME) -$( DEB_VERSION_UPSTREAM) /Makefile.am
sed -i '/lib.Makefile/d' $( CURDIR) /debian/tmp/usr/src/$( NAME) -$( DEB_VERSION_UPSTREAM) /Makefile.am
sed -i '/man.Makefile/d' $( CURDIR) /debian/tmp/usr/src/$( NAME) -$( DEB_VERSION_UPSTREAM) /Makefile.am
sed -i '/scripts.Makefile/d' $( CURDIR) /debian/tmp/usr/src/$( NAME) -$( DEB_VERSION_UPSTREAM) /Makefile.am
sed -i '/tests.Makefile/d' $( CURDIR) /debian/tmp/usr/src/$( NAME) -$( DEB_VERSION_UPSTREAM) /Makefile.am
sed -i '/udev.Makefile/d' $( CURDIR) /debian/tmp/usr/src/$( NAME) -$( DEB_VERSION_UPSTREAM) /Makefile.am
@# Run autogen on the stripped source tree
cd '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(DEB_VERSION_UPSTREAM)' ; ./autogen.sh
rm -fr '$(CURDIR)/debian/tmp/usr/src/$(NAME)-$(DEB_VERSION_UPSTREAM)/autom4te.cache'
chmod a-x '$(CURDIR)/debian/tmp/etc/zfs/zfs-functions'
chmod a-x '$(CURDIR)/debian/tmp/etc/default/zfs'
override_dh_python3 :
dh_python3 -p openzfs-python3-pyzfs
override_dh_dkms :
'$(CURDIR)/scripts/dkms.mkconf' -n $( NAME) -v $( DEB_VERSION_UPSTREAM) -f '$(CURDIR)/scripts/zfs-dkms.dkms'
dh_dkms
rm -f '$(CURDIR)/scripts/zfs-dkms.dkms'
override_dh_makeshlibs :
dh_makeshlibs -a -V
override_dh_strip :
dh_strip
override_dh_auto_clean :
rm -rf zfs-$( DEB_VERSION_UPSTREAM)
dh_auto_clean
@if test -e META.orig; then mv META.orig META; fi
override_dh_install :
2025-09-09 22:22:57 +08:00
find debian/tmp/usr/lib -name '*.la' -delete
2022-10-28 03:38:45 +05:00
dh_install
override_dh_missing :
dh_missing --fail-missing
override_dh_installinit :
dh_installinit -r --no-restart-after-upgrade --name zfs-import
dh_installinit -r --no-restart-after-upgrade --name zfs-mount
dh_installinit -r --no-restart-after-upgrade --name zfs-load-key
dh_installinit -R --name zfs-share
dh_installinit -R --name zfs-zed
override_dh_installsystemd :
2025-09-09 22:22:57 +08:00
mkdir -p debian/openzfs-zfsutils/usr/lib/systemd/system
ln -sr /dev/null debian/openzfs-zfsutils/usr/lib/systemd/system/zfs-import.service
2022-10-28 03:38:45 +05:00
dh_installsystemd --no-stop-on-upgrade -X zfs-zed.service
dh_installsystemd --name zfs-zed
override_dh_installdocs :
dh_installdocs -A
i f e q ( , $( findstring nodoc , $ ( DEB_BUILD_OPTIONS ) ) )
http_proxy = '127.0.0.1:9' sphinx-build -N -bhtml " $( CURDIR) /contrib/pyzfs/docs/source/ " debian/openzfs-pyzfs-doc/usr/share/doc/openzfs-pyzfs-doc/html/
e n d i f
# ------------
override_dh_prep-deb-files :
for templ in $( wildcard $( CURDIR) /debian/*_KVERS_*.in) ; do \
sed -e 's/##KVERS##/$(KVERS)/g ; s/#KVERS#/$(KVERS)/g ; s/_KVERS_/$(KVERS)/g ; s/##KDREV##/$(KDREV)/g ; s/#KDREV#/$(KDREV)/g ; s/_KDREV_/$(KDREV)/g ; s/_ARCH_/$(DEB_HOST_ARCH)/' \
< $$ templ > ` echo $$ templ | sed -e 's/_KVERS_/$(KVERS)/g ; s/_ARCH_/$(DEB_HOST_ARCH)/g ; s/\.in$$//' ` ; \
done
sed -e 's/##KVERS##/$(KVERS)/g ; s/#KVERS#/$(KVERS)/g ; s/_KVERS_/$(KVERS)/g ; s/##KDREV##/$(KDREV)/g ; s/#KDREV#/$(KDREV)/g ; s/_KDREV_/$(KDREV)/g ; s/_ARCH_/$(DEB_HOST_ARCH)/g' \
< debian/control.modules.in > debian/control
override_dh_configure_modules : override_dh_configure_modules_stamp
override_dh_configure_modules_stamp :
2022-12-14 06:33:05 +05:00
./configure @CFGOPTS@ \
2022-10-28 03:38:45 +05:00
--with-config= kernel \
--with-linux= $( KSRC) \
--with-linux-obj= $( KOBJ)
touch override_dh_configure_modules_stamp
override_dh_binary-modules : override_dh_prep -deb -files override_dh_configure_modules
dh_testdir
dh_testroot
dh_prep
$( MAKE) $( NJOBS) -C $( CURDIR) /module modules
dh_install -p${ pmodules }
dh_installdocs -p${ pmodules }
dh_installchangelogs -p${ pmodules }
dh_compress -p${ pmodules }
dh_strip -p${ pmodules }
dh_fixperms -p${ pmodules }
dh_installdeb -p${ pmodules }
dh_gencontrol -p${ pmodules }
dh_md5sums -p${ pmodules }
dh_builddeb -p${ pmodules }
debian-copyright :
cme update dpkg-copyright -file debian/copyright.cme