Add native-deb* targets to build native Debian packages
In continuation of previous #13451, this commits adds native-deb* targets for make to build native debian packages. Github workflows are updated to build and test native Debian packages. Native packages only build with pre-configured paths (see the dh_auto_configure section in contrib/debian/rules.in). While building native packages, paths should not be configured. Initial config flags e.g. '--enable-debug' are replaced in contrib/debian/rules.in. Additional packages on top of existing zfs packages required to build native packages include debhelper-compat, dh-python, dkms, po-debconf, python3-all-dev, python3-sphinx. Reviewed-by: George Melikov <mail@gmelikov.ru> Reviewed-by: Ryan Moeller <ryan@iXsystems.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Umer Saleem <usaleem@ixsystems.com> Closes #14265
This commit is contained in:
parent
f3f5263f8a
commit
e6e31dd540
|
@ -6,6 +6,9 @@ bc
|
||||||
build-essential
|
build-essential
|
||||||
curl
|
curl
|
||||||
dbench
|
dbench
|
||||||
|
debhelper-compat
|
||||||
|
dh-python
|
||||||
|
dkms
|
||||||
fakeroot
|
fakeroot
|
||||||
fio
|
fio
|
||||||
gdb
|
gdb
|
||||||
|
@ -33,12 +36,15 @@ mdadm
|
||||||
nfs-kernel-server
|
nfs-kernel-server
|
||||||
pamtester
|
pamtester
|
||||||
parted
|
parted
|
||||||
|
po-debconf
|
||||||
python3
|
python3
|
||||||
|
python3-all-dev
|
||||||
python3-cffi
|
python3-cffi
|
||||||
python3-dev
|
python3-dev
|
||||||
python3-packaging
|
python3-packaging
|
||||||
python3-pip
|
python3-pip
|
||||||
python3-setuptools
|
python3-setuptools
|
||||||
|
python3-sphinx
|
||||||
rng-tools-debian
|
rng-tools-debian
|
||||||
rsync
|
rsync
|
||||||
samba
|
samba
|
||||||
|
|
|
@ -32,15 +32,18 @@ jobs:
|
||||||
./configure --enable-debug --enable-debuginfo --enable-asan --enable-ubsan
|
./configure --enable-debug --enable-debuginfo --enable-asan --enable-ubsan
|
||||||
- name: Make
|
- name: Make
|
||||||
run: |
|
run: |
|
||||||
make -j$(nproc) --no-print-directory --silent pkg-utils pkg-kmod
|
make --no-print-directory --silent native-deb-utils native-deb-kmod
|
||||||
|
mv ../*.deb .
|
||||||
|
rm ./openzfs-zfs-dkms*.deb ./openzfs-zfs-dracut*.deb
|
||||||
- name: Install
|
- name: Install
|
||||||
run: |
|
run: |
|
||||||
sudo dpkg -i *.deb
|
|
||||||
# Update order of directories to search for modules, otherwise
|
# Update order of directories to search for modules, otherwise
|
||||||
# Ubuntu will load kernel-shipped ones.
|
# Ubuntu will load kernel-shipped ones.
|
||||||
sudo sed -i.bak 's/updates/extra updates/' /etc/depmod.d/ubuntu.conf
|
sudo sed -i.bak 's/updates/extra updates/' /etc/depmod.d/ubuntu.conf
|
||||||
sudo depmod
|
sudo dpkg -i *.deb
|
||||||
sudo modprobe zfs
|
# Native Debian packages enable and start the services
|
||||||
|
# Stop zfs-zed daemon, as it may interfere with some ZTS test cases
|
||||||
|
sudo systemctl stop zfs-zed
|
||||||
# Workaround for cloud-init bug
|
# Workaround for cloud-init bug
|
||||||
# see https://github.com/openzfs/zfs/issues/12644
|
# see https://github.com/openzfs/zfs/issues/12644
|
||||||
FILE=/lib/udev/rules.d/10-cloud-init-hook-hotplug.rules
|
FILE=/lib/udev/rules.d/10-cloud-init-hook-hotplug.rules
|
||||||
|
|
|
@ -28,15 +28,18 @@ jobs:
|
||||||
./configure --enable-debug --enable-debuginfo --enable-asan --enable-ubsan
|
./configure --enable-debug --enable-debuginfo --enable-asan --enable-ubsan
|
||||||
- name: Make
|
- name: Make
|
||||||
run: |
|
run: |
|
||||||
make -j$(nproc) --no-print-directory --silent pkg-utils pkg-kmod
|
make --no-print-directory --silent native-deb-utils native-deb-kmod
|
||||||
|
mv ../*.deb .
|
||||||
|
rm ./openzfs-zfs-dkms*.deb ./openzfs-zfs-dracut*.deb
|
||||||
- name: Install
|
- name: Install
|
||||||
run: |
|
run: |
|
||||||
sudo dpkg -i *.deb
|
|
||||||
# Update order of directories to search for modules, otherwise
|
# Update order of directories to search for modules, otherwise
|
||||||
# Ubuntu will load kernel-shipped ones.
|
# Ubuntu will load kernel-shipped ones.
|
||||||
sudo sed -i.bak 's/updates/extra updates/' /etc/depmod.d/ubuntu.conf
|
sudo sed -i.bak 's/updates/extra updates/' /etc/depmod.d/ubuntu.conf
|
||||||
sudo depmod
|
sudo dpkg -i *.deb
|
||||||
sudo modprobe zfs
|
# Native Debian packages enable and start the services
|
||||||
|
# Stop zfs-zed daemon, as it may interfere with some ZTS test cases
|
||||||
|
sudo systemctl stop zfs-zed
|
||||||
# Workaround for cloud-init bug
|
# Workaround for cloud-init bug
|
||||||
# see https://github.com/openzfs/zfs/issues/12644
|
# see https://github.com/openzfs/zfs/issues/12644
|
||||||
FILE=/lib/udev/rules.d/10-cloud-init-hook-hotplug.rules
|
FILE=/lib/udev/rules.d/10-cloud-init-hook-hotplug.rules
|
||||||
|
|
|
@ -1,14 +1,17 @@
|
||||||
PHONY += deb-kmod deb-dkms deb-utils deb deb-local
|
PHONY += deb-kmod deb-dkms deb-utils deb deb-local native-deb-local \
|
||||||
|
native-deb-utils native-deb-kmod native-deb
|
||||||
|
|
||||||
deb-local:
|
native-deb-local:
|
||||||
@(if test "${HAVE_DPKGBUILD}" = "no"; then \
|
@(if test "${HAVE_DPKGBUILD}" = "no"; then \
|
||||||
echo -e "\n" \
|
echo -e "\n" \
|
||||||
"*** Required util ${DPKGBUILD} missing. Please install the\n" \
|
"*** Required util ${DPKGBUILD} missing. Please install the\n" \
|
||||||
"*** package for your distribution which provides ${DPKGBUILD},\n" \
|
"*** package for your distribution which provides ${DPKGBUILD},\n" \
|
||||||
"*** re-run configure, and try again.\n"; \
|
"*** re-run configure, and try again.\n"; \
|
||||||
exit 1; \
|
exit 1; \
|
||||||
fi; \
|
fi)
|
||||||
if test "${HAVE_ALIEN}" = "no"; then \
|
|
||||||
|
deb-local: native-deb-local
|
||||||
|
@(if test "${HAVE_ALIEN}" = "no"; then \
|
||||||
echo -e "\n" \
|
echo -e "\n" \
|
||||||
"*** Required util ${ALIEN} missing. Please install the\n" \
|
"*** Required util ${ALIEN} missing. Please install the\n" \
|
||||||
"*** package for your distribution which provides ${ALIEN},\n" \
|
"*** package for your distribution which provides ${ALIEN},\n" \
|
||||||
|
@ -85,3 +88,16 @@ deb-utils: deb-local rpm-utils-initramfs
|
||||||
$$pkg8 $$pkg9 $$pkg10 $$pkg11;
|
$$pkg8 $$pkg9 $$pkg10 $$pkg11;
|
||||||
|
|
||||||
deb: deb-kmod deb-dkms deb-utils
|
deb: deb-kmod deb-dkms deb-utils
|
||||||
|
|
||||||
|
debian:
|
||||||
|
cp -r contrib/debian debian; chmod +x debian/rules;
|
||||||
|
|
||||||
|
native-deb-utils: native-deb-local debian
|
||||||
|
cp contrib/debian/control debian/control; \
|
||||||
|
$(DPKGBUILD) -b -rfakeroot -us -uc;
|
||||||
|
|
||||||
|
native-deb-kmod: native-deb-local debian
|
||||||
|
sh scripts/make_gitrev.sh; \
|
||||||
|
fakeroot debian/rules override_dh_binary-modules;
|
||||||
|
|
||||||
|
native-deb: native-deb-utils native-deb-kmod
|
||||||
|
|
|
@ -464,6 +464,7 @@ AC_DEFUN([ZFS_AC_DPKG], [
|
||||||
AC_SUBST(HAVE_DPKGBUILD)
|
AC_SUBST(HAVE_DPKGBUILD)
|
||||||
AC_SUBST(DPKGBUILD)
|
AC_SUBST(DPKGBUILD)
|
||||||
AC_SUBST(DPKGBUILD_VERSION)
|
AC_SUBST(DPKGBUILD_VERSION)
|
||||||
|
AC_SUBST([CFGOPTS], ["$CFGOPTS"])
|
||||||
])
|
])
|
||||||
|
|
||||||
dnl #
|
dnl #
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
|
|
||||||
AC_INIT(m4_esyscmd(awk '/^Name:/ {printf $2}' META),
|
AC_INIT(m4_esyscmd(awk '/^Name:/ {printf $2}' META),
|
||||||
m4_esyscmd(awk '/^Version:/ {printf $2}' META))
|
m4_esyscmd(awk '/^Version:/ {printf $2}' META))
|
||||||
|
CFGOPTS="$*"
|
||||||
AC_LANG(C)
|
AC_LANG(C)
|
||||||
ZFS_AC_META
|
ZFS_AC_META
|
||||||
AC_CONFIG_AUX_DIR([config])
|
AC_CONFIG_AUX_DIR([config])
|
||||||
|
@ -65,6 +66,7 @@ ZFS_AC_DEBUG_KMEM_TRACKING
|
||||||
ZFS_AC_DEBUG_INVARIANTS
|
ZFS_AC_DEBUG_INVARIANTS
|
||||||
|
|
||||||
AC_CONFIG_FILES([
|
AC_CONFIG_FILES([
|
||||||
|
contrib/debian/rules
|
||||||
Makefile
|
Makefile
|
||||||
include/Makefile
|
include/Makefile
|
||||||
lib/libzfs/libzfs.pc
|
lib/libzfs/libzfs.pc
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
rules
|
|
@ -2,8 +2,7 @@ Source: openzfs-linux
|
||||||
Section: contrib/kernel
|
Section: contrib/kernel
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Maintainer: ZFS on Linux specific mailing list <zfs-discuss@list.zfsonlinux.org>
|
Maintainer: ZFS on Linux specific mailing list <zfs-discuss@list.zfsonlinux.org>
|
||||||
Build-Depends: abigail-tools,
|
Build-Depends: debhelper-compat (= 12),
|
||||||
debhelper-compat (= 12),
|
|
||||||
dh-python,
|
dh-python,
|
||||||
dkms (>> 2.1.1.2-5),
|
dkms (>> 2.1.1.2-5),
|
||||||
libaio-dev,
|
libaio-dev,
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
pam-auth-update --package
|
if ! $(ldd "/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)/security/pam_zfs_key.so" | grep -q "libasan") ; then
|
||||||
|
pam-auth-update --package
|
||||||
|
fi
|
||||||
|
|
||||||
#DEBHELPER#
|
#DEBHELPER#
|
||||||
|
|
|
@ -4,13 +4,6 @@ set -e
|
||||||
zedd="/usr/lib/zfs-linux/zed.d"
|
zedd="/usr/lib/zfs-linux/zed.d"
|
||||||
etcd="/etc/zfs/zed.d"
|
etcd="/etc/zfs/zed.d"
|
||||||
|
|
||||||
# enable all default zedlets that are not overridden
|
|
||||||
while read -r file ; do
|
|
||||||
etcfile="${etcd}/${file}"
|
|
||||||
[ -e "${etcfile}" ] && continue
|
|
||||||
ln -sfT "${zedd}/${file}" "${etcfile}"
|
|
||||||
done < "${zedd}/DEFAULT-ENABLED"
|
|
||||||
|
|
||||||
# remove the overrides created in prerm
|
# remove the overrides created in prerm
|
||||||
find "${etcd}" -maxdepth 1 -lname '/dev/null' -delete
|
find "${etcd}" -maxdepth 1 -lname '/dev/null' -delete
|
||||||
# remove any dangling symlinks to old zedlets
|
# remove any dangling symlinks to old zedlets
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
set -e
|
|
||||||
|
|
||||||
zedd="/usr/lib/zfs-linux/zed.d"
|
|
||||||
etcd="/etc/zfs/zed.d"
|
|
||||||
|
|
||||||
if [ "$1" != "failed-upgrade" ] && [ -d "${etcd}" ] && [ -d "${zedd}" ] ; then
|
|
||||||
while read -r file ; do
|
|
||||||
etcfile="${etcd}/${file}"
|
|
||||||
( [ -L "${etcfile}" ] || [ -e "${etcfile}" ] ) && continue
|
|
||||||
ln -sT /dev/null "${etcfile}"
|
|
||||||
done < "${zedd}/DEFAULT-ENABLED"
|
|
||||||
fi
|
|
||||||
|
|
||||||
#DEBHELPER#
|
|
||||||
|
|
|
@ -131,5 +131,4 @@ usr/share/man/man8/zstreamdump.8
|
||||||
usr/share/man/man4/spl.4
|
usr/share/man/man4/spl.4
|
||||||
usr/share/man/man4/zfs.4
|
usr/share/man/man4/zfs.4
|
||||||
usr/share/man/man7/zpool-features.7
|
usr/share/man/man7/zpool-features.7
|
||||||
usr/share/man/man7/dracut.zfs.7
|
|
||||||
usr/share/man/man8/zpool_influxdb.8
|
usr/share/man/man8/zpool_influxdb.8
|
||||||
|
|
|
@ -1,21 +1,6 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# The hostname and hostid of the last system to access a ZFS pool are stored in
|
|
||||||
# the ZFS pool itself. A pool is foreign if, during `zpool import`, the
|
|
||||||
# current hostname and hostid are different than the stored values thereof.
|
|
||||||
#
|
|
||||||
# The only way of having a stable hostid is to define it in /etc/hostid.
|
|
||||||
# This postinst helper will check if we already have the hostid stabilized by
|
|
||||||
# checking the existence of the file /etc/hostid to be 4 bytes at least.
|
|
||||||
# If this file don't already exists on our system or has less than 4 bytes, then
|
|
||||||
# a new (random) value is generated with zgenhostid (8) and stored in
|
|
||||||
# /etc/hostid
|
|
||||||
|
|
||||||
if [ ! -f /etc/hostid ] || [ "$(stat -c %s /etc/hostid)" -lt 4 ] ; then
|
|
||||||
zgenhostid
|
|
||||||
fi
|
|
||||||
|
|
||||||
# When processed to here but zfs kernel module is not loaded, the subsequent
|
# When processed to here but zfs kernel module is not loaded, the subsequent
|
||||||
# services would fail to start. In this case the installation process just
|
# services would fail to start. In this case the installation process just
|
||||||
# fails at the postinst stage. The user could do
|
# fails at the postinst stage. The user could do
|
||||||
|
|
|
@ -35,7 +35,7 @@ override_dh_autoreconf:
|
||||||
|
|
||||||
override_dh_auto_configure:
|
override_dh_auto_configure:
|
||||||
@# Build the userland, but don't build the kernel modules.
|
@# Build the userland, but don't build the kernel modules.
|
||||||
dh_auto_configure -- \
|
dh_auto_configure -- @CFGOPTS@ \
|
||||||
--bindir=/usr/bin \
|
--bindir=/usr/bin \
|
||||||
--sbindir=/sbin \
|
--sbindir=/sbin \
|
||||||
--libdir=/lib/"$(DEB_HOST_MULTIARCH)" \
|
--libdir=/lib/"$(DEB_HOST_MULTIARCH)" \
|
||||||
|
@ -195,7 +195,7 @@ override_dh_prep-deb-files:
|
||||||
|
|
||||||
override_dh_configure_modules: override_dh_configure_modules_stamp
|
override_dh_configure_modules: override_dh_configure_modules_stamp
|
||||||
override_dh_configure_modules_stamp:
|
override_dh_configure_modules_stamp:
|
||||||
./configure \
|
./configure @CFGOPTS@ \
|
||||||
--with-config=kernel \
|
--with-config=kernel \
|
||||||
--with-linux=$(KSRC) \
|
--with-linux=$(KSRC) \
|
||||||
--with-linux-obj=$(KOBJ)
|
--with-linux-obj=$(KOBJ)
|
|
@ -1,36 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
#
|
|
||||||
# This script can be used to invoke OpenZFS build from native Debian
|
|
||||||
# packaging.
|
|
||||||
#
|
|
||||||
|
|
||||||
print_help ()
|
|
||||||
{
|
|
||||||
echo "Usage: $(basename $0) [OPTIONS]"
|
|
||||||
echo
|
|
||||||
echo "Options:"
|
|
||||||
echo " -b, --build Build OpenZFS from Debian Packaging"
|
|
||||||
echo " -c, --clean Clean the workspace"
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ "$#" -ne 1 ]; then
|
|
||||||
print_help
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
case $1 in
|
|
||||||
-b|--build)
|
|
||||||
cp -r contrib/debian debian
|
|
||||||
debuild -i -us -uc -b && fakeroot debian/rules override_dh_binary-modules
|
|
||||||
;;
|
|
||||||
-c|--clean)
|
|
||||||
fakeroot debian/rules override_dh_auto_clean
|
|
||||||
rm -rf debian
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
print_help
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
exit 0
|
|
Loading…
Reference in New Issue