diff --git a/0001-autoconf-add-support-for-openEuler.patch b/0001-autoconf-add-support-for-openEuler.patch deleted file mode 100644 index 505ff6c8288b6e486f9297f7a2b49f43fb797aba..0000000000000000000000000000000000000000 --- a/0001-autoconf-add-support-for-openEuler.patch +++ /dev/null @@ -1,102 +0,0 @@ -From 27cf73d72de86d0c1bb9500f9f844b18bfe6762e Mon Sep 17 00:00:00 2001 -From: Peter Levine -Date: Fri, 29 Oct 2021 18:34:37 -0400 -Subject: [PATCH] autoconf: add support for openEuler - -Add config support for openEuler, so that it set the right sysconfig -dir for openEuler. - -And DEFAULT_INIT_SCRIPT is no longer needed since commit "2a34db1bd -Base init scripts for SYSV systems". - -Reviewed-by: George Melikov -Reviewed-by: Richard Yao -Reviewed-by: Brian Behlendorf -Signed-off-by: Xinliang Liu -Closes #14241 - -Set DEFAULT_INIT_SHELL to /sbin/openrc-run for Gentoo and Alpine - -Gentoo and Alpine always set the rc init scripts' shebang to - -Reviewed-by: Brian Behlendorf -Signed-off-by: Peter Levine -Closes #12683 -Closes #12692 ---- - config/zfs-build.m4 | 35 +++++++++-------------------------- - 1 file changed, 9 insertions(+), 26 deletions(-) - -diff --git a/config/zfs-build.m4 b/config/zfs-build.m4 -index 1bd2c9259..2ab6765c3 100644 ---- a/config/zfs-build.m4 -+++ b/config/zfs-build.m4 -@@ -518,6 +518,8 @@ AC_DEFUN([ZFS_AC_DEFAULT_PACKAGE], [ - VENDOR=alpine ; - elif test -f /bin/freebsd-version ; then - VENDOR=freebsd ; -+ elif test -f /etc/openEuler-release ; then -+ VENDOR=openeuler ; - else - VENDOR= ; - fi], -@@ -542,6 +544,7 @@ AC_DEFUN([ZFS_AC_DEFAULT_PACKAGE], [ - ubuntu) DEFAULT_PACKAGE=deb ;; - debian) DEFAULT_PACKAGE=deb ;; - freebsd) DEFAULT_PACKAGE=pkg ;; -+ openeuler) DEFAULT_PACKAGE=rpm ;; - *) DEFAULT_PACKAGE=rpm ;; - esac - AC_MSG_RESULT([$DEFAULT_PACKAGE]) -@@ -555,35 +558,14 @@ AC_DEFUN([ZFS_AC_DEFAULT_PACKAGE], [ - AC_MSG_RESULT([$initdir]) - AC_SUBST(initdir) - -- AC_MSG_CHECKING([default init script type and shell]) -+ AC_MSG_CHECKING([default shell]) - case "$VENDOR" in -- toss) DEFAULT_INIT_SCRIPT=redhat ;; -- redhat) DEFAULT_INIT_SCRIPT=redhat ;; -- fedora) DEFAULT_INIT_SCRIPT=fedora ;; -- gentoo) DEFAULT_INIT_SCRIPT=openrc ;; -- alpine) DEFAULT_INIT_SCRIPT=openrc ;; -- arch) DEFAULT_INIT_SCRIPT=lsb ;; -- sles) DEFAULT_INIT_SCRIPT=lsb ;; -- slackware) DEFAULT_INIT_SCRIPT=lsb ;; -- lunar) DEFAULT_INIT_SCRIPT=lunar ;; -- ubuntu) DEFAULT_INIT_SCRIPT=lsb ;; -- debian) DEFAULT_INIT_SCRIPT=lsb ;; -- freebsd) DEFAULT_INIT_SCRIPT=freebsd;; -- *) DEFAULT_INIT_SCRIPT=lsb ;; -+ gentoo) DEFAULT_INIT_SHELL="/sbin/openrc-run";; -+ alpine) DEFAULT_INIT_SHELL="/sbin/openrc-run";; -+ *) DEFAULT_INIT_SHELL="/bin/sh" ;; - esac - -- # On gentoo, it's possible that OpenRC isn't installed. Check if -- # /sbin/openrc-run exists, and if not, fall back to generic defaults. -- -- DEFAULT_INIT_SHELL="/bin/sh" -- AS_IF([test "$DEFAULT_INIT_SCRIPT" = "openrc"], [ -- AS_IF([test -x "/sbin/openrc-run"], -- [DEFAULT_INIT_SHELL="/sbin/openrc-run"], -- [DEFAULT_INIT_SCRIPT=lsb]) -- ]) -- -- AC_MSG_RESULT([$DEFAULT_INIT_SCRIPT:$DEFAULT_INIT_SHELL]) -- AC_SUBST(DEFAULT_INIT_SCRIPT) -+ AC_MSG_RESULT([$DEFAULT_INIT_SHELL]) - AC_SUBST(DEFAULT_INIT_SHELL) - - AC_MSG_CHECKING([default nfs server init script]) -@@ -602,6 +584,7 @@ AC_DEFUN([ZFS_AC_DEFAULT_PACKAGE], [ - redhat) initconfdir=/etc/sysconfig ;; - fedora) initconfdir=/etc/sysconfig ;; - sles) initconfdir=/etc/sysconfig ;; -+ openeuler) initconfdir=/etc/sysconfig ;; - ubuntu) initconfdir=/etc/default ;; - debian) initconfdir=/etc/default ;; - freebsd) initconfdir=$sysconfdir/rc.conf.d;; --- -2.33.0 - diff --git a/kmodtool b/kmodtool deleted file mode 100755 index b1021596997e63ea35d268938f683aef0898016b..0000000000000000000000000000000000000000 --- a/kmodtool +++ /dev/null @@ -1,625 +0,0 @@ -#!/usr/bin/env bash -# shellcheck disable=SC2086 - -# kmodtool - Helper script for building kernel module RPMs -# Copyright (c) 2003-2012 Ville Skyttä , -# Thorsten Leemhuis -# Nicolas Chauvet -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -shopt -s extglob - -myprog="kmodtool-${repo}" -myver="0.12.1" - -kmodname= -build_kernels="current" -kernels_known_variants= -kernel_versions= -kernel_versions_to_build_for= -prefix= -filterfile= -target= -buildroot= -dashvariant= - -error_out() -{ - local errorlevel=${1} - shift - echo "Error: $*" >&2 - # the next line is not multi-line safe -- not needed *yet* - echo "%global kmodtool_check echo \"kmodtool error: $*\"; exit ${errorlevel};" - exit "${errorlevel}" -} - -print_rpmtemplate_header() -{ - echo - echo '%global kmodinstdir_prefix '${prefix}/lib/modules/ - echo '%global kmodinstdir_postfix '/extra/${kmodname}/ - echo '%global kernel_versions '${kernel_versions} - echo -} - -print_akmodtemplate () -{ - echo - cat <= %{?epoch:%{epoch}:}%{version} -Provides: ${kmodname}-kmod = %{?epoch:%{epoch}:}%{version}-%{release} -EOF - - if [[ ${obsolete_name} ]]; then - echo "Provides: akmod-${obsolete_name} = ${obsolete_version}" - echo "Obsoletes: akmod-${obsolete_name} < ${obsolete_version}" - fi - - cat < /dev/null & - -%files -n akmod-${kmodname} -%defattr(-,root,root,-) -%{_usrsrc}/akmods/* - -EOF -} - -print_akmodmeta () -{ - cat <= %{?epoch:%{epoch}:}%{version} - -%if 0%{?rhel} == 6 || 0%{?centos} == 6 -Requires(post): module-init-tools -Requires(postun): module-init-tools -%else -Requires(post): kmod -Requires(postun): kmod -%endif -EOF - - if [[ ${obsolete_name} ]]; then - echo "Provides: kmod-${obsolete_name}-${kernel_uname_r} = ${obsolete_version}" - echo "Obsoletes: kmod-${obsolete_name}-${kernel_uname_r} < ${obsolete_version}" - fi - - # second part - if [[ ! "${customkernel}" ]]; then - cat < /dev/null || : -elif [[ -f "/lib/modules/${kernel_uname_r}/System.map" ]]; then - ${prefix}${depmod_path} -aeF /lib/modules/${kernel_uname_r}/System.map ${kernel_uname_r} > /dev/null || : -else - ${prefix}${depmod_path} -ae ${kernel_uname_r} &> /dev/null || : -fi -%postun -n kmod-${kmodname}-${kernel_uname_r} -if [[ -f "/boot/System.map-${kernel_uname_r}" ]]; then - ${prefix}${depmod_path} -aF /boot/System.map-${kernel_uname_r} ${kernel_uname_r} &> /dev/null || : -elif [[ -f "/lib/modules/${kernel_uname_r}/System.map" ]]; then - ${prefix}${depmod_path} -aF /lib/modules/${kernel_uname_r}/System.map ${kernel_uname_r} &> /dev/null || : -else - ${prefix}${depmod_path} -a ${kernel_uname_r} &> /dev/null || : -fi - -EOF - else - cat < /dev/null || : -%postun -n kmod-${kmodname}-${kernel_uname_r} -[[ "\$(uname -r)" == "${kernel_uname_r}" ]] && ${prefix}${depmod_path} -a > /dev/null || : - -EOF - fi - - # third part - cat <= %{?epoch:%{epoch}:}%{version}-%{release}" - fi - - if [[ ${obsolete_name} ]]; then - echo "Provides: kmod-${obsolete_name}-devel = ${obsolete_version}" - echo "Obsoletes: kmod-${obsolete_name}-devel < ${obsolete_version}" - fi - - cat < objects for the newest kernel. - -%files -n kmod-${kmodname}-devel -%defattr(644,root,root,755) -%{_usrsrc}/${kmodname}-%{version} -EOF - if [[ ${obsolete_name} ]]; then - echo "%{_usrsrc}/${obsolete_name}-%{version}" - fi - - for kernel in ${1}; do - local kernel_uname_r=${kernel} - echo "%exclude %{_usrsrc}/${kmodname}-%{version}/${kernel_uname_r}" - if [[ ${obsolete_name} ]]; then - echo "%exclude %{_usrsrc}/${obsolete_name}-%{version}/${kernel_uname_r}" - fi - done - - echo - echo -} - -print_rpmtemplate_per_kmoddevelpkg () -{ - if [[ "${1}" == "--custom" ]]; then - shift - local customkernel=true - elif [[ "${1}" == "--redhat" ]]; then - # this is needed for akmods - shift - local redhatkernel=true - fi - - local kernel_uname_r=${1} - local kernel_variant="${2:+-${2}}" - - # first part - cat <= %{?epoch:%{epoch}:}%{version}-%{release} -%{?KmodsMetaRequires:Requires: %{?KmodsMetaRequires}} -EOF - - if [[ ${obsolete_name} ]]; then - echo "Provides: kmod-${obsolete_name}${kernel_variant} = ${obsolete_version}" - echo "Obsoletes: kmod-${obsolete_name}${kernel_variant} < ${obsolete_version}" - fi - - cat < -- filter the results with grep --file " - echo " --for-kernels -- created templates only for these kernels" - echo " --kmodname -- name of the kmod (required)" - echo " --devel -- make kmod-devel package" - echo " --noakmod -- no akmod package" - echo " --repo -- use buildsys-build--kerneldevpkgs" - echo " --target -- target-arch (required)" - echo " --buildroot -- Build root (place to look for build files)" -} - -while [ "${1}" ] ; do - case "${1}" in - --filterfile) - shift - if [[ ! "${1}" ]] ; then - error_out 2 "Please provide path to a filter-file together with --filterfile" >&2 - elif [[ ! -e "${1}" ]]; then - error_out 2 "Filterfile ${1} not found" >&2 - fi - filterfile="${1}" - shift - ;; - --kmodname) - shift - if [[ ! "${1}" ]] ; then - error_out 2 "Please provide the name of the kmod together with --kmodname" >&2 - fi - # strip pending -kmod - kmodname="${1%%-kmod}" - shift - ;; - --devel) - shift - devel="true" - ;; - --prefix) - shift - if [[ ! "${1}" ]] ; then - error_out 2 "Please provide a prefix with --prefix" >&2 - fi - prefix="${1}" - shift - ;; - --repo) - shift - if [[ ! "${1}" ]] ; then - error_out 2 "Please provide the name of the repo together with --repo" >&2 - fi - repo=${1} - shift - ;; - --for-kernels) - shift - if [[ ! "${1}" ]] ; then - error_out 2 "Please provide the name of the kmod together with --kmodname" >&2 - fi - for_kernels="${1}" - shift - ;; - --noakmod) - shift - noakmod="true" - ;; - --obsolete-name) - shift - if [[ ! "${1}" ]] ; then - error_out 2 "Please provide the name of the kmod to obsolete together with --obsolete-name" >&2 - fi - obsolete_name="${1}" - shift - ;; - --obsolete-version) - shift - if [[ ! "${1}" ]] ; then - error_out 2 "Please provide the version of the kmod to obsolete together with --obsolete-version" >&2 - fi - obsolete_version="${1}" - shift - ;; - --target) - shift - target="${1}" - shift - ;; - --akmod) - shift - build_kernels="akmod" - ;; - --newest) - shift - build_kernels="newest" - ;; - --current) - shift - build_kernels="current" - ;; - --buildroot) - shift - buildroot="${1}" - shift - ;; - --help) - myprog_help - exit 0 - ;; - --version) - echo "${myprog} ${myver}" - exit 0 - ;; - *) - echo "Error: Unknown option '${1}'." >&2 - usage >&2 - exit 2 - ;; - esac -done - -if [[ -e ./kmodtool-kernel-variants ]]; then - kernels_known_variants="$(cat ./kmodtool-kernel-variants)" -elif [[ -e /usr/share/kmodtool/kernel-variants ]] ; then - kernels_known_variants="$(cat /usr/share/kmodtool/kernel-variants)" -else - kernels_known_variants="@(smp?(-debug)|PAE?(-debug)|debug|kdump|xen|kirkwood|highbank|imx|omap|tegra)" -fi - -# general sanity checks -if [[ ! "${target}" ]]; then - error_out 2 "please pass target arch with --target" -elif [[ ! "${kmodname}" ]]; then - error_out 2 "please pass kmodname with --kmodname" -elif [[ ! "${kernels_known_variants}" ]] ; then - error_out 2 "could not determine known variants" -elif { [[ "${obsolete_name}" ]] && [[ ! "${obsolete_version}" ]]; } || { [[ ! "${obsolete_name}" ]] && [[ "${obsolete_version}" ]]; } ; then - error_out 2 "you need to provide both --obsolete-name and --obsolete-version" -fi - -# go -if [[ "${for_kernels}" ]]; then - # this is easy: - print_customrpmtemplate "${for_kernels}" -elif [[ "${build_kernels}" == "akmod" ]]; then - # do only a akmod package - print_akmodtemplate - print_akmodmeta -else - # seems we are on out own to decide for which kernels to build - - # we need more sanity checks in this case - if [[ ! "${repo}" ]]; then - error_out 2 "please provide repo name with --repo" - elif ! command -v "buildsys-build-${repo}-kerneldevpkgs" &> /dev/null ; then - error_out 2 "buildsys-build-${repo}-kerneldevpkgs not found" - fi - - # call buildsys-build-${repo}-kerneldevpkgs to get the list of kernels - cmdoptions="--target ${target}" - - # filterfile to filter list of kernels? - if [[ "${filterfile}" ]] ; then - cmdoptions="${cmdoptions} --filterfile ${filterfile}" - fi - - kernel_versions_to_build_for="$(buildsys-build-${repo}-kerneldevpkgs --${build_kernels} ${cmdoptions})" - returncode=$? - if (( returncode != 0 )); then - error_out 2 "buildsys-build-${repo}-kerneldevpkgs failed: $(buildsys-build-${repo}-kerneldevpkgs --${build_kernels} ${cmdoptions})" - fi - - if [[ "${build_kernels}" == "current" ]] && [[ ! "${noakmod}" ]]; then - print_akmodtemplate - fi - - print_rpmtemplate -fi diff --git a/zfs-2.1.9.tar.gz b/zfs-2.1.10.tar.gz similarity index 75% rename from zfs-2.1.9.tar.gz rename to zfs-2.1.10.tar.gz index 25370b31be4a950e6e9aa543e3f55ab25c3bb0a4..f3c1c35fee1da80267b4d7263f4c326183821878 100644 Binary files a/zfs-2.1.9.tar.gz and b/zfs-2.1.10.tar.gz differ diff --git a/zfs-kmod.spec b/zfs-kmod.spec index 30c24412d7299aafc5b1e3a3a617b56f37f48291..c43eb143043597a81d2fae5262985f625993919a 100644 --- a/zfs-kmod.spec +++ b/zfs-kmod.spec @@ -1,142 +1,73 @@ -%define module zfs - -%if !%{defined ksrc} -%if 0%{?rhel}%{?fedora}%{?openEuler} -%define ksrc ${kernel_version##*___} -%else -%define ksrc "$( \ - if [ -e "/usr/src/linux-${kernel_version%%___*}" ]; then \ - echo "/usr/src/linux-${kernel_version%%___*}"; \ - elif [ -e "/lib/modules/${kernel_version%%___*}/source" ]; then \ - echo "/lib/modules/${kernel_version%%___*}/source"; \ - else \ - echo "/lib/modules/${kernel_version%%___*}/build"; \ - fi)" -%endif -%endif - -%if !%{defined kobj} -%if 0%{?rhel}%{?fedora}%{?openEuler} -%define kobj ${kernel_version##*___} -%else -%define kobj "$( \ - if [ -e "/usr/src/linux-${kernel_version%%___*}" ]; then \ - echo "/usr/src/linux-${kernel_version%%___*}"; \ - else \ - echo "/lib/modules/${kernel_version%%___*}/build"; \ - fi)" -%endif -%endif - -#define repo rpmfusion -#define repo chaos - -# (un)define the next line to either build for the newest or all current kernels -%define buildforkernels newest -#define buildforkernels current -#define buildforkernels akmod - %bcond_with debug %bcond_with debuginfo +Name: zfs-kmod +Version: 2.1.10 +Release: 1 -Name: %{module}-kmod - -Version: 2.1.9 -Release: 2%{?dist} Summary: Kernel module(s) - Group: System Environment/Kernel License: CDDL-1.0 URL: https://github.com/openzfs/zfs -Source0: https://github.com/openzfs/zfs/releases/download//%{module}-%{version}/%{module}-%{version}.tar.gz -Source10: kmodtool -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id} -u -n) -%if 0%{?rhel}%{?fedora}%{?openEuler} -BuildRequires: gcc, make -BuildRequires: elfutils-libelf-devel -%endif - -%if (0%{?fedora}%{?suse_version}%{?openEuler}) || (0%{?rhel} && 0%{?rhel} < 9) -# We don't directly use it, but if this isn't installed, rpmbuild as root can -# crash+corrupt rpmdb -# See issue #12071 -BuildRequires: ncompress -%endif - -# The developments headers will conflict with the dkms packages. -Conflicts: %{module}-dkms - -%if %{defined repo} - -# Building for a repository use the proper build-sysbuild package -# to determine which kernel-devel packages should be installed. -BuildRequires: %{_bindir}/kmodtool -%{!?kernels:BuildRequires: buildsys-build-%{repo}-kerneldevpkgs-%{?buildforkernels:%{buildforkernels}}%{!?buildforkernels:current}-%{_target_cpu}} - -%else - -# Building local packages attempt to to use the installed kernel. -%{?rhel:BuildRequires: kernel-devel} -%{?fedora:BuildRequires: kernel-devel} -%{?openEuler:BuildRequires: kernel-devel} -%{?suse_version:BuildRequires: kernel-source} - -%if !%{defined kernels} && !%{defined build_src_rpm} - %if 0%{?rhel}%{?fedora}%{?suse_version}%{?openEuler} - %define kernels %(ls -1 /usr/src/kernels) - %else - %define kernels %(ls -1 /lib/modules) - %endif -%endif -%endif +BuildRequires: %kernel_module_package_buildreqs +BuildRequires: kernel-rpm-macros +Source0: zfs-%{version}.tar.gz +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) + +# Additional dependency information for the kmod sub-package must be specified +# by generating a preamble text file which kmodtool can append to the spec file. +%(/bin/echo -e "\ +Requires: zfs = %{version}\n\ +Conflicts: zfs-dkms\n\ +Obsoletes: kmod-spl\n\ +Obsoletes: spl-kmod\n\n" > %{_sourcedir}/kmod-preamble) # LDFLAGS are not sanitized by arch/*/Makefile for these architectures. %ifarch ppc ppc64 ppc64le aarch64 %global __global_ldflags %{nil} %endif -# Kmodtool does its magic here. A patched version of kmodtool is shipped -# with the source rpm until kmod development packages are supported upstream. -# https://bugzilla.rpmfusion.org/show_bug.cgi?id=2714 -%{expand:%(bash %{SOURCE10} --target %{_target_cpu} %{?repo:--repo %{?repo}} --kmodname %{name} %{?buildforkernels:--%{buildforkernels}} --devel %{?prefix:--prefix "%{?prefix}"} %{?kernels:--for-kernels "%{?kernels}"} %{?kernelbuildroot:--buildroot "%{?kernelbuildroot}"} --obsolete-name spl --obsolete-version 0.8 2>/dev/null) } - - %description This package contains the ZFS kernel modules. -%prep -# Error out if there was something wrong with kmodtool. -%{?kmodtool_check} +# Explicitly set latest kernel verion to for kernel_module_package +%global kernel_version %(ls -1 /usr/src/kernels|sort -rV |head -n 1) +%define kmod_name zfs + +%kernel_module_package -n %{kmod_name} -p %{_sourcedir}/kmod-preamble -# Print kmodtool output for debugging purposes: -bash %{SOURCE10} --target %{_target_cpu} %{?repo:--repo %{?repo}} --kmodname %{name} %{?buildforkernels:--%{buildforkernels}} --devel %{?prefix:--prefix "%{?prefix}"} %{?kernels:--for-kernels "%{?kernels}"} %{?kernelbuildroot:--buildroot "%{?kernelbuildroot}"} --obsolete-name spl --obsolete-version 0.8 2>/dev/null +%define ksrc %{_usrsrc}/kernels/%{kverrel} +%define kobj %{ksrc} + +%package -n kmod-%{kmod_name}-devel +Summary: ZFS kernel module(s) devel common +Group: System Environment/Kernel +Provides: kmod-spl-devel = %{version} + +%description -n kmod-%{kmod_name}-devel +This package provides the header files and objects to build kernel modules. + +%prep +if ! [ -d "%{ksrc}" ]; then + echo "Kernel build directory isn't set properly, cannot continue" + exit 1 +fi %if %{with debug} - %define debug --enable-debug +%define debug --enable-debug %else - %define debug --disable-debug +%define debug --disable-debug %endif %if %{with debuginfo} - %define debuginfo --enable-debuginfo +%define debuginfo --enable-debuginfo %else - %define debuginfo --disable-debuginfo +%define debuginfo --disable-debuginfo %endif -# Leverage VPATH from configure to avoid making multiple copies. -%define _configure ../%{module}-%{version}/configure - -%setup -q -c -T -a 0 - -for kernel_version in %{?kernel_versions}; do - %{__mkdir} _kmod_build_${kernel_version%%___*} -done - +%setup -n %{kmod_name}-%{version} %build -for kernel_version in %{?kernel_versions}; do - cd _kmod_build_${kernel_version%%___*} - %configure \ +%configure \ --with-config=kernel \ --with-linux=%{ksrc} \ --with-linux-obj=%{kobj} \ @@ -145,32 +76,32 @@ for kernel_version in %{?kernel_versions}; do %{?kernel_cc} \ %{?kernel_ld} \ %{?kernel_llvm} - make %{?_smp_mflags} - cd .. -done - +make %{?_smp_mflags} %install -rm -rf ${RPM_BUILD_ROOT} - -# Relies on the kernel 'modules_install' make target. -for kernel_version in %{?kernel_versions}; do - cd _kmod_build_${kernel_version%%___*} - make install \ +make install \ DESTDIR=${RPM_BUILD_ROOT} \ - %{?prefix:INSTALL_MOD_PATH=%{?prefix}} \ - INSTALL_MOD_DIR=%{kmodinstdir_postfix} - cd .. -done -# find-debuginfo.sh only considers executables -chmod u+x ${RPM_BUILD_ROOT}%{kmodinstdir_prefix}/*/extra/*/*/* -%{?akmod_install} + INSTALL_MOD_DIR=extra/%{kmod_name} +%{__rm} -f %{buildroot}/lib/modules/%{kverrel}/modules.* +# find-debuginfo.sh only considers executables +%{__chmod} u+x %{buildroot}/lib/modules/%{kverrel}/extra/*/*/* %clean rm -rf $RPM_BUILD_ROOT +%files -n kmod-%{kmod_name}-devel +%{_usrsrc}/%{kmod_name}-%{version} +%{_usrsrc}/spl-%{version} + + %changelog +* Wed Apr 19 2023 Xinliang Liu - 2.1.10-1 +- Update to 2.1.10 +- Fix release number contains double %{dist}, e.g. "*.oe1.oe1.aarch64.rpm" +- Fix kmod name without kernel release number by switching to redhat spec +- Only build for latest kernel + * Wed Mar 08 2023 Xinliang Liu - 2.1.9-2 - Fix Source0 url. diff --git a/zfs.spec b/zfs.spec index 94ed999ee8b4fa6c8376667e5f73c8ee26acb8c4..6113843ba147ec852ae4f57402b63d970df5b5af 100644 --- a/zfs.spec +++ b/zfs.spec @@ -3,7 +3,7 @@ # Set the default udev directory based on distribution. %if %{undefined _udevdir} -%if 0%{?fedora} >= 17 || 0%{?rhel} >= 7 || 0%{?centos} >= 7 || 0%{?openEuler} +%if 0%{?fedora}%{?rhel}%{?centos}%{?openEuler} %global _udevdir %{_prefix}/lib/udev %else %global _udevdir /lib/udev @@ -12,7 +12,7 @@ # Set the default udevrule directory based on distribution. %if %{undefined _udevruledir} -%if 0%{?fedora} >= 17 || 0%{?rhel} >= 7 || 0%{?centos} >= 7 || 0%{?openEuler} +%if 0%{?fedora}%{?rhel}%{?centos}%{?openEuler} %global _udevruledir %{_prefix}/lib/udev/rules.d %else %global _udevruledir /lib/udev/rules.d @@ -21,7 +21,7 @@ # Set the default dracut directory based on distribution. %if %{undefined _dracutdir} -%if 0%{?fedora} >= 17 || 0%{?rhel} >= 7 || 0%{?centos} >= 7 || 0%{?openEuler} +%if 0%{?fedora}%{?rhel}%{?centos}%{?openEuler} %global _dracutdir %{_prefix}/lib/dracut %else %global _dracutdir %{_prefix}/share/dracut @@ -57,74 +57,37 @@ %bcond_with asan %bcond_with systemd %bcond_with pam +%bcond_without pyzfs # Generic enable switch for systemd %if %{with systemd} %define _systemd 1 %endif -# RHEL >= 7 comes with systemd -%if 0%{?rhel} >= 7 -%define _systemd 1 -%endif - -# Fedora >= 15 comes with systemd, but only >= 18 has -# the proper macros -%if 0%{?fedora} >= 18 +# Distros below support systemd +%if 0%{?rhel}%{?fedora}%{?centos}%{?suse_version}%{?openEuler} %define _systemd 1 %endif -# opensuse >= 12.1 comes with systemd, but only >= 13.1 -# has the proper macros -%if 0%{?suse_version} >= 1310 -%define _systemd 1 -%endif - -# openEuler comes with systemd -%if 0%{?openEuler} -%define _systemd 1 -%endif - -# When not specified default to distribution provided version. This -# is normally Python 3, but for RHEL <= 7 only Python 2 is provided. +# When not specified default to distribution provided version. %if %{undefined __use_python} -%if 0%{?rhel} && 0%{?rhel} <= 7 -%define __python /usr/bin/python2 -%define __python_pkg_version 2 -%define __python_cffi_pkg python-cffi -%define __python_setuptools_pkg python-setuptools -%else %define __python /usr/bin/python3 %define __python_pkg_version 3 -%define __python_cffi_pkg python3-cffi -%define __python_setuptools_pkg python3-setuptools -%endif %else %define __python %{__use_python} %define __python_pkg_version %{__use_python_pkg_version} -%define __python_cffi_pkg python%{__python_pkg_version}-cffi -%define __python_setuptools_pkg python%{__python_pkg_version}-setuptools %endif %define __python_sitelib %(%{__python} -Esc "from distutils.sysconfig import get_python_lib; print(get_python_lib())") -# By default python-pyzfs is enabled, with the exception of -# RHEL 6 which by default uses Python 2.6 which is too old. -%if 0%{?rhel} == 6 -%bcond_with pyzfs -%else -%bcond_without pyzfs -%endif - Name: zfs -Version: 2.1.9 -Release: 2%{?dist} +Version: 2.1.10 +Release: 1 Summary: Commands to control the kernel modules and libraries Group: System Environment/Kernel License: CDDL-1.0 URL: https://github.com/openzfs/zfs Source0: https://github.com/openzfs/zfs/releases/download/%{name}-%{version}/%{name}-%{version}.tar.gz -Patch1: 0001-autoconf-add-support-for-openEuler.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Requires: libzpool5%{?_isa} = %{version}-%{release} Requires: libnvpair3%{?_isa} = %{version}-%{release} @@ -138,7 +101,7 @@ Obsoletes: spl <= %{version} # Renaming those on either side would conflict with all available documentation. Conflicts: zfs-fuse -%if 0%{?rhel}%{?fedora}%{?suse_version}%{?openEuler} +%if 0%{?rhel}%{?centos}%{?fedora}%{?suse_version}%{?openEuler} BuildRequires: gcc, make BuildRequires: zlib-devel BuildRequires: libuuid-devel @@ -146,7 +109,6 @@ BuildRequires: libblkid-devel BuildRequires: libudev-devel BuildRequires: libattr-devel BuildRequires: openssl-devel -BuildRequires: autoconf, automake, libtool %if 0%{?fedora}%{?openEuler} || 0%{?rhel} >= 8 || 0%{?centos} >= 8 BuildRequires: libtirpc-devel %endif @@ -292,7 +254,7 @@ Requires: sudo Requires: sysstat Requires: libaio Requires: python%{__python_pkg_version} -%if 0%{?rhel}%{?fedora}%{?suse_version}%{?openEuler} +%if 0%{?rhel}%{?centos}%{?fedora}%{?suse_version}%{?openEuler} BuildRequires: libaio-devel %endif AutoReqProv: no @@ -315,6 +277,8 @@ This package contains a dracut module used to construct an initramfs image which is ZFS aware. %if %{with pyzfs} +# Enforce `python36-` package prefix for CentOS 7 +# since dependencies come from EPEL and are named this way %package -n python%{__python_pkg_version}-pyzfs Summary: Python %{python_version} wrapper for libzfs_core Group: Development/Languages/Python @@ -324,16 +288,26 @@ Requires: libzfs5 = %{version}-%{release} Requires: libnvpair3 = %{version}-%{release} Requires: libffi Requires: python%{__python_pkg_version} -Requires: %{__python_cffi_pkg} -%if 0%{?rhel}%{?fedora}%{?suse_version}%{?openEuler} -%if 0%{?rhel} >= 8 || 0%{?centos} >= 8 || 0%{?fedora} >= 28 || 0%{?openEuler} -BuildRequires: python3-packaging + +%if 0%{?centos} == 7 +Requires: python36-cffi %else -BuildRequires: python-packaging +Requires: python%{__python_pkg_version}-cffi %endif + +%if 0%{?rhel}%{?centos}%{?fedora}%{?suse_version}%{?openEuler} +%if 0%{?centos} == 7 +BuildRequires: python36-packaging +BuildRequires: python36-devel +BuildRequires: python36-cffi +BuildRequires: python36-setuptools +%else +BuildRequires: python%{__python_pkg_version}-packaging BuildRequires: python%{__python_pkg_version}-devel -BuildRequires: %{__python_cffi_pkg} -BuildRequires: %{__python_setuptools_pkg} +BuildRequires: python%{__python_pkg_version}-cffi +BuildRequires: python%{__python_pkg_version}-setuptools +%endif + BuildRequires: libffi-devel %endif @@ -391,10 +365,9 @@ image which is ZFS aware. %define pam --disable-pam %endif -%autosetup -p1 +%setup -q %build -sh autogen.sh %configure \ --with-config=user \ --with-udevdir=%{_udevdir} \ @@ -493,7 +466,7 @@ systemctl --system daemon-reload >/dev/null || true %{_bindir}/raidz_test %{_sbindir}/zgenhostid %{_bindir}/zvol_wait -# Optional Python 2/3 scripts +# Optional Python 3 scripts %{_bindir}/arc_summary %{_bindir}/arcstat %{_bindir}/dbufstat @@ -584,6 +557,10 @@ systemctl --system daemon-reload >/dev/null || true %endif %changelog +* Wed Apr 19 2023 Xinliang Liu - 2.1.10-1 +- Update to 2.1.10 +- Fix release number contains double %{dist}, e.g. "*.oe1.oe1.aarch64.rpm" + * Wed Mar 08 2023 Xinliang Liu - 2.1.9-2 - Mainly use package element instead of flavor in _multibuild file. And add a changelog to pass CI error 'Every pr commit requires a changelog'.