1
0
mirror of https://github.com/krislamo/kernmod.git synced 2024-09-19 21:30:35 +00:00
This commit is contained in:
Kris Lamoureux 2022-04-21 02:46:32 -04:00
parent 88e33a86bb
commit f1192da2cb
2 changed files with 51 additions and 45 deletions

2
Vagrantfile vendored
View File

@ -3,6 +3,8 @@ if !VAGRANT_BOX || VAGRANT_BOX == "debian"
VAGRANT_BOX = "debian/bullseye64"
elsif VAGRANT_BOX == "rocky"
VAGRANT_BOX = "rockylinux/8"
elsif VAGRANT_BOX == "centos"
VAGRANT_BOX = "centos/7"
end
Vagrant.configure("2") do |config|

View File

@ -22,6 +22,13 @@ function check_distro {
fi
}
# Install Linux headers for current debian kernel
function debian_headers {
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y linux-headers-$(uname -r)
}
# Build debian package
function build_deb {
[ $INSTALL -eq 1 ] && debian_headers
@ -35,6 +42,12 @@ function build_deb {
dpkg-deb --build "${PACKAGE}_$VERSION-$REVISION"
}
# Install Linux headers for current rhel kernel
function rhel_headers {
KERNEL_VERSION="$(uname -r | rev | cut -d '.' -f 2- | rev)"
yum install -y kernel-headers-"$KERNEL_VERSION" kernel-devel
}
# Build redhat package
function build_rpm {
EL_VER="$(uname -r | awk 'match($0,/el[0-9]/) {print substr($0, RSTART, RLENGTH)}')"
@ -60,54 +73,45 @@ function info_mod {
cat /var/log/messages | grep "$PACKAGE"
}
# Install Linux headers for current debian kernel
function debian_headers {
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y linux-headers-$(uname -r)
}
# Install Linux headers for current rhel kernel
function rhel_headers {
KERNEL_VERSION="$(uname -r | rev | cut -d '.' -f 2- | rev)"
yum install -y kernel-headers-"$KERNEL_VERSION" kernel-devel
}
# Find GNU/Linux distribution
set -x
DISTRO="$(check_distro)"
if [ $DISTRO -eq 0 ]; then
echo "ERROR: GNU/Linux distribution not detected"
exit -1
fi
# Build and install helloworld module or module(s) in $SCRATCH
if [ ! -z "$(ls -Al $SCRATCH | grep -e ^d)" ]; then
cd "$SCRATCH"
for d in */ ; do
if [ -f "$(basename $d)/override.sh" ]; then
SRCDIR="$(pwd)/$(basename $d)"
. "$(basename $d)/override.sh"
[ $DISTRO -eq 1 ] && build_deb
[ $DISTRO -eq 2 ] && build_rpm
if [ $INSTALL -eq 1 ]; then
apt-get install -y "./${PACKAGE}_$VERSION-$REVISION.deb"
info_mod
fi
cp "./${PACKAGE}_$VERSION-$REVISION.deb" \
"$OUTDIR/${PACKAGE}_$VERSION-$REVISION-$(date +%s).deb"
fi
done
else
INSTALL=1
if [ $DISTRO -eq 1 ]; then
# Build and install (optional)
function build_install {
DISTRO="$(check_distro)"
if [ $DISTRO -eq 0 ]; then
echo "ERROR: GNU/Linux distribution not detected"
exit -1
elif [ $DISTRO -eq 1 ]; then
build_deb
apt-get install -y "./${PACKAGE}_$VERSION-$REVISION.deb"
[ $INSTALL -eq 1 ] && apt-get install -y "./${PACKAGE}_$VERSION-$REVISION.deb"
elif [ $DISTRO -eq 2 ]; then
build_rpm
yum install -y epel-release
yum install -y dkms
rpm -i "~/rpmbuild/RPMS/noarch/$PACKAGE-$VERSION-$REVISION.$EL_VER.noarch.rpm"
if [ $INSTALL -eq 1 ]; then
yum install -y epel-release
yum install -y dkms
rpm -i "~/rpmbuild/RPMS/noarch/$PACKAGE-$VERSION-$REVISION.$EL_VER.noarch.rpm"
fi
fi
info_mod
}
# Build and install helloworld module or module(s) in $SCRATCH
function main_routine {
if [ ! -z "$(ls -Al $SCRATCH | grep -e ^d)" ]; then
cd "$SCRATCH"
for d in */ ; do
if [ -f "$(basename $d)/override.sh" ]; then
SRCDIR="$(pwd)/$(basename $d)"
. "$(basename $d)/override.sh"
build_install
fi
done
else
INSTALL=1
build_install
fi
}
# Program starts here unless KERNMOD_MAIN is not 0
if [ "${KERNMOD_MAIN:-0}" -eq 0 ]; then
set -x
main_routine
fi