mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 19:19:32 +03:00
4d631a509d
Currently, the Debian packages are generated from ALIEN that converts RPMs to Debian packages. This commit adds native Debian packaging for Debian based systems. This packaging is a fork of Debian zfs-linux 2.1.6-2 release. (source: https://salsa.debian.org/zfsonlinux-team/zfs) Some updates have been made to keep the footprint minimal that include removing the tests, translation files, patches directory etc. All credits go to Debian ZFS on Linux Packaging Team. For copyright information, please refer to contrib/debian/copyright. scripts/debian-packaging.sh can be used to invoke the build. Reviewed-by: Mo Zhou <cdluminate@gmail.com> Reviewed-by: Ryan Moeller <ryan@iXsystems.com> Signed-off-by: Umer Saleem <usaleem@ixsystems.com> Closes #13451
224 lines
9.1 KiB
Makefile
Executable File
224 lines
9.1 KiB
Makefile
Executable File
#!/usr/bin/make -f
|
|
|
|
include /usr/share/dpkg/default.mk
|
|
|
|
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)
|
|
|
|
DKMSFILES := module include config zfs.release.in autogen.sh META AUTHORS \
|
|
COPYRIGHT LICENSE README.md
|
|
|
|
ifndef KVERS
|
|
KVERS=$(shell uname -r)
|
|
endif
|
|
|
|
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.
|
|
dh_auto_configure -- \
|
|
--bindir=/usr/bin \
|
|
--sbindir=/sbin \
|
|
--libdir=/lib/"$(DEB_HOST_MULTIARCH)" \
|
|
--with-udevdir=/lib/udev \
|
|
--with-zfsexecdir=/usr/lib/zfs-linux \
|
|
--enable-systemd \
|
|
--enable-pyzfs \
|
|
--with-python=python3 \
|
|
--with-pammoduledir='/lib/$(DEB_HOST_MULTIARCH)/security' \
|
|
--with-pkgconfigdir='/usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig' \
|
|
--with-systemdunitdir=/lib/systemd/system \
|
|
--with-systemdpresetdir=/lib/systemd/system-preset \
|
|
--with-systemdgeneratordir=/lib/systemd/system-generators \
|
|
--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
|
|
|
|
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'
|
|
|
|
# Use upstream's bash completion
|
|
install -D -t '$(CURDIR)/debian/tmp/usr/share/bash-completion/completions/' \
|
|
'$(CURDIR)/contrib/bash_completion.d/zfs'
|
|
|
|
# Move from bin_dir to /usr/sbin
|
|
# Remove suffix (.py) as per policy 10.4 - Scripts
|
|
# https://www.debian.org/doc/debian-policy/ch-files.html#s-scripts
|
|
mkdir -p '$(CURDIR)/debian/tmp/usr/sbin/'
|
|
mv '$(CURDIR)/debian/tmp/usr/bin/arc_summary' '$(CURDIR)/debian/tmp/usr/sbin/arc_summary'
|
|
mv '$(CURDIR)/debian/tmp/usr/bin/arcstat' '$(CURDIR)/debian/tmp/usr/sbin/arcstat'
|
|
mv '$(CURDIR)/debian/tmp/usr/bin/dbufstat' '$(CURDIR)/debian/tmp/usr/sbin/dbufstat'
|
|
mv '$(CURDIR)/debian/tmp/usr/bin/zilstat' '$(CURDIR)/debian/tmp/usr/sbin/zilstat'
|
|
|
|
@# Zed has dependencies outside of the system root.
|
|
mv '$(CURDIR)/debian/tmp/sbin/zed' '$(CURDIR)/debian/tmp/usr/sbin/zed'
|
|
|
|
@# 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' \
|
|
'$(CURDIR)/scripts/enum-extract.pl' \
|
|
'$(CURDIR)/scripts/dkms.postbuild'
|
|
$(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
|
|
awk '/^AC_CONFIG_FILES\(\[/,/^\]\)/ {\
|
|
if ($$0 !~ /^(AC_CONFIG_FILES\(\[([ \t]+)?$$|\]\)([ \t]+)?$$|([ \t]+)?(include\/(Makefile|sys|os\/(Makefile|linux))|module\/|Makefile([ \t]+)?$$|zfs\.release([ \t]+)?$$))/) \
|
|
{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'
|
|
|
|
for i in `ls $(CURDIR)/debian/tmp/lib/$(DEB_HOST_MULTIARCH)/*.so`; do \
|
|
ln -s '/lib/$(DEB_HOST_MULTIARCH)/'`readlink $${i}` '$(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/'`basename $${i}`; \
|
|
rm $${i}; \
|
|
done
|
|
|
|
chmod a-x '$(CURDIR)/debian/tmp/etc/zfs/zfs-functions'
|
|
chmod a-x '$(CURDIR)/debian/tmp/etc/default/zfs'
|
|
chmod a-x '$(CURDIR)/debian/tmp/usr/share/bash-completion/completions/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:
|
|
find debian/tmp/lib -name '*.la' -delete
|
|
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:
|
|
mkdir -p debian/openzfs-zfsutils/lib/systemd/system
|
|
ln -sr /dev/null debian/openzfs-zfsutils/lib/systemd/system/zfs-import.service
|
|
dh_installsystemd --no-stop-on-upgrade -X zfs-zed.service
|
|
dh_installsystemd --name zfs-zed
|
|
|
|
override_dh_installdocs:
|
|
dh_installdocs -A
|
|
ifeq (,$(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/
|
|
endif
|
|
|
|
# ------------
|
|
|
|
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:
|
|
./configure \
|
|
--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
|