Fix kernel module path using --with-linux config flag

Sometimes the arch linux kernel is versioned without a minor version number.
For example, 3.14 instead of 3.14.0. However, the kernel module path always
uses the minor version number (/usr/lib/modules/3.14.0-1-ARCH).

This change adds support for detecting missing minor version number in the
linux version and adds "0" to it to create the proper module path.
pull/23/head
Jesus Alvarez 11 years ago
parent 2deb8327b5
commit d4ec7b3a5a
  1. 17
      spl/PKGBUILD
  2. 22
      zfs/PKGBUILD

@ -21,6 +21,19 @@ LINUX_VERSION_X32="3.13.8-1"
LINUX_VERSION_X64="3.13.8-1"
[[ $CARCH == "i686" ]] && LINUX_VERSION=$LINUX_VERSION_X32 || LINUX_VERSION=$LINUX_VERSION_X64
# If LINUX_VERSION does not have a minor version, we need to add "0" as the
# minor version for the kernel module path. Kernel modules for linux versions
# with no minor version (i.e. 3.14) are kept in /usr/lib/modules/3.14.0-4-ARCH
[[ $LINUX_VERSION =~ ^[:digit:]+\.[:digit:]+\.([:digit:]+)\-[:digit:]+ ]]
if [[ ${BASH_REMATCH[1]} == "" ]]; then
[[ $LINUX_VERSION =~ ^([[:digit:]\.]+)\-([[:digit:]]+) ]] &&
MOD_LINUX_VERSION=${BASH_REMATCH[1]};
MOD_LINUX_PKGREL=${BASH_REMATCH[2]}
MOD_BASENAME=${MOD_LINUX_VERSION}.0-$MOD_LINUX_PKGREL-ARCH
else
MOD_BASENAME=$LINUX_VERSION-ARCH
fi
pkgdesc="Solaris Porting Layer kernel modules."
depends=("spl-utils" "linux=$LINUX_VERSION")
makedepends=("linux-headers=$LINUX_VERSION")
@ -50,11 +63,11 @@ build() {
./autogen.sh
if [[ $CARCH == "i686" ]]; then
./configure --prefix=/usr --libdir=/usr/lib --sbindir=/usr/bin \
--with-linux=/usr/lib/modules/$LINUX_VERSION_X32-ARCH/build \
--with-linux=/usr/lib/modules/$MOD_BASENAME/build \
--with-config=kernel --enable-atomic-spinlocks
else
./configure --prefix=/usr --libdir=/usr/lib --sbindir=/usr/bin \
--with-linux=/usr/lib/modules/$LINUX_VERSION_X64-ARCH/build \
--with-linux=/usr/lib/modules/$MOD_BASENAME/build \
--with-config=kernel
fi
make

@ -21,12 +21,18 @@ LINUX_VERSION_X32="3.13.8-1"
LINUX_VERSION_X64="3.13.8-1"
[[ $CARCH == "i686" ]] && LINUX_VERSION=$LINUX_VERSION_X32 || LINUX_VERSION=$LINUX_VERSION_X64
# Build the kernel module path string
[[ $AZB_LINUX_VERSION =~ ^[[:digit:]]+\.[[:digit:]]+\.([[:digit:]]+)\-[[:digit:]]+]] ]] &&
MOD_PATH=${BASH_REMATCH[1]}
echo $MOD_PATH
exit 1
# If LINUX_VERSION does not have a minor version, we need to add "0" as the
# minor version for the kernel module path. Kernel modules for linux versions
# with no minor version (i.e. 3.14) are kept in /usr/lib/modules/3.14.0-4-ARCH
[[ $LINUX_VERSION =~ ^[:digit:]+\.[:digit:]+\.([:digit:]+)\-[:digit:]+ ]]
if [[ ${BASH_REMATCH[1]} == "" ]]; then
[[ $LINUX_VERSION =~ ^([[:digit:]\.]+)\-([[:digit:]]+) ]] &&
MOD_LINUX_VERSION=${BASH_REMATCH[1]};
MOD_LINUX_PKGREL=${BASH_REMATCH[2]}
MOD_BASENAME=${MOD_LINUX_VERSION}.0-$MOD_LINUX_PKGREL-ARCH
else
MOD_BASENAME=$LINUX_VERSION-ARCH
fi
pkgdesc="Kernel modules for the Zettabyte File System."
depends=("spl=0.6.2_3.13.8-1" "zfs-utils" "linux=$LINUX_VERSION")
@ -52,7 +58,7 @@ build() {
--with-udevdir=/lib/udev \
--libexecdir=/usr/lib/zfs-0.6.2 \
--with-config=kernel \
--with-linux=/usr/lib/modules/$LINUX_VERSION_X32-ARCH/build
--with-linux=/usr/lib/modules/$MOD_BASENAME/build
else
./configure --prefix=/usr \
--sysconfdir=/etc \
@ -63,7 +69,7 @@ build() {
--with-udevdir=/lib/udev \
--libexecdir=/usr/lib/zfs-0.6.2 \
--with-config=kernel \
--with-linux=/usr/lib/modules/$LINUX_VERSION_X64-ARCH/build
--with-linux=/usr/lib/modules/$MOD_BASENAME/build
fi
make
}

Loading…
Cancel
Save