parent
acf58114ab
commit
9dade0ad66
|
@ -0,0 +1,78 @@
|
|||
#!/usr/bin/bash
|
||||
# JOBoRun : Jwm OpenBox Obarun RUNit
|
||||
# Maintainer : Joe Bo Run <joborun@disroot.org>
|
||||
# PkgSource : url="https://gittea.disroot.org/joborun-pkg/jobextra/$pkgname"
|
||||
# Website : https://pozol.eu
|
||||
#-----------------------------------------| DESCRIPTION |---------------------------------------
|
||||
|
||||
pkgname=dkms
|
||||
pkgver=3.0.5
|
||||
pkgrel=01
|
||||
pkgdesc='Dynamic Kernel Modules System'
|
||||
arch=('any')
|
||||
url='https://github.com/dell/dkms'
|
||||
depends=('coreutils' 'bash' 'gawk' 'sed' 'kmod' 'gcc' 'make' 'patch')
|
||||
makedepends=('git')
|
||||
optdepends=('linux-headers: build modules against the Arch kernel'
|
||||
'linux-lts-headers: build modules against the LTS kernel'
|
||||
'linux-zen-headers: build modules against the ZEN kernel'
|
||||
'linux-hardened-headers: build modules against the HARDENED kernel')
|
||||
backup=('etc/dkms/framework.conf')
|
||||
install=$pkgname.install
|
||||
source=("git+https://github.com/dell/dkms.git#tag=v$pkgver"
|
||||
'hook.install'
|
||||
'hook.remove'
|
||||
'hook.upgrade'
|
||||
'hook.sh')
|
||||
|
||||
prepare() {
|
||||
cd dkms
|
||||
|
||||
# apply patch from the source array (should be a pacman feature)
|
||||
local filename
|
||||
for filename in "${source[@]}"; do
|
||||
if [[ "$filename" =~ \.patch$ ]]; then
|
||||
msg2 "Applying patch ${filename##*/}"
|
||||
patch -p1 -N -i "$srcdir/${filename##*/}"
|
||||
fi
|
||||
done
|
||||
|
||||
# /usr move
|
||||
msg2 '/usr move patching'
|
||||
for i in dkms{.in,.8.in,_framework.conf,.bash-completion,_common.postinst}; do
|
||||
sed -ri 's,/lib/modules,/usr/lib/modules,g' "$i"
|
||||
done
|
||||
}
|
||||
|
||||
package() {
|
||||
# alpm hooks
|
||||
install -D -m 644 hook.install "$pkgdir/usr/share/libalpm/hooks/70-dkms-install.hook"
|
||||
# both upgrade and remove hooks are removing dkms modules.
|
||||
# remove always call depmod while upgrade never, as install will later.
|
||||
# upgrade is run before remove in order to have the cleanest depmod file,
|
||||
# if something goes wrong before the depmod call in install hook.
|
||||
install -D -m 644 hook.upgrade "$pkgdir/usr/share/libalpm/hooks/70-dkms-upgrade.hook"
|
||||
install -D -m 644 hook.remove "$pkgdir/usr/share/libalpm/hooks/71-dkms-remove.hook"
|
||||
# hook helper
|
||||
install -D -m 755 hook.sh "$pkgdir/usr/share/libalpm/scripts/dkms"
|
||||
# upstream installer
|
||||
cd dkms
|
||||
# we don't need kconf files and libdir is only for debian stuff, so
|
||||
# we install them outside of $pkgdir
|
||||
make \
|
||||
DESTDIR="$pkgdir" \
|
||||
SBIN="$pkgdir/usr/bin" \
|
||||
BASHDIR="$pkgdir/usr/share/bash-completion/completions" \
|
||||
KCONF="$srcdir"/trash \
|
||||
LIBDIR="$srcdir"/trash \
|
||||
install
|
||||
}
|
||||
|
||||
#---- license gpg-key sha256sums ----
|
||||
|
||||
license=('GPL2')
|
||||
sha256sums=('SKIP'
|
||||
'acdc5b45cc018cea04ee1aec56fd8fc3a2de62cf7bc41acf53b3790872120998'
|
||||
'326515cc7d00f93760beb844434ca7442caf7a9424614aa95a8f6d1ab79e15df'
|
||||
'4f8dff7716e73a8bba885638f12e3cdc9e87daec1896f75e700b981527e43870'
|
||||
'c1b4a4e2e4e0e0e59ee0887403e79d60b209f3878dbbec6612573f13b90cce01')
|
|
@ -0,0 +1,73 @@
|
|||
# Maintainer: Sébastien Luttringer
|
||||
# Contributor: Balwinder S "bsd" Dheeman (bdheeman AT gmail.com)
|
||||
|
||||
pkgname=dkms
|
||||
pkgver=3.0.5
|
||||
pkgrel=1
|
||||
pkgdesc='Dynamic Kernel Modules System'
|
||||
arch=('any')
|
||||
url='https://github.com/dell/dkms'
|
||||
license=('GPL2')
|
||||
depends=('coreutils' 'bash' 'gawk' 'sed' 'kmod' 'gcc' 'make' 'patch')
|
||||
makedepends=('git')
|
||||
optdepends=('linux-headers: build modules against the Arch kernel'
|
||||
'linux-lts-headers: build modules against the LTS kernel'
|
||||
'linux-zen-headers: build modules against the ZEN kernel'
|
||||
'linux-hardened-headers: build modules against the HARDENED kernel')
|
||||
backup=('etc/dkms/framework.conf')
|
||||
install=$pkgname.install
|
||||
source=("git+https://github.com/dell/dkms.git#tag=v$pkgver"
|
||||
'hook.install'
|
||||
'hook.remove'
|
||||
'hook.upgrade'
|
||||
'hook.sh')
|
||||
sha256sums=('SKIP'
|
||||
'acdc5b45cc018cea04ee1aec56fd8fc3a2de62cf7bc41acf53b3790872120998'
|
||||
'326515cc7d00f93760beb844434ca7442caf7a9424614aa95a8f6d1ab79e15df'
|
||||
'4f8dff7716e73a8bba885638f12e3cdc9e87daec1896f75e700b981527e43870'
|
||||
'c1b4a4e2e4e0e0e59ee0887403e79d60b209f3878dbbec6612573f13b90cce01')
|
||||
|
||||
prepare() {
|
||||
cd dkms
|
||||
|
||||
# apply patch from the source array (should be a pacman feature)
|
||||
local filename
|
||||
for filename in "${source[@]}"; do
|
||||
if [[ "$filename" =~ \.patch$ ]]; then
|
||||
msg2 "Applying patch ${filename##*/}"
|
||||
patch -p1 -N -i "$srcdir/${filename##*/}"
|
||||
fi
|
||||
done
|
||||
|
||||
# /usr move
|
||||
msg2 '/usr move patching'
|
||||
for i in dkms{.in,.8.in,_framework.conf,.bash-completion,_common.postinst}; do
|
||||
sed -ri 's,/lib/modules,/usr/lib/modules,g' "$i"
|
||||
done
|
||||
}
|
||||
|
||||
package() {
|
||||
# alpm hooks
|
||||
install -D -m 644 hook.install "$pkgdir/usr/share/libalpm/hooks/70-dkms-install.hook"
|
||||
# both upgrade and remove hooks are removing dkms modules.
|
||||
# remove always call depmod while upgrade never, as install will later.
|
||||
# upgrade is run before remove in order to have the cleanest depmod file,
|
||||
# if something goes wrong before the depmod call in install hook.
|
||||
install -D -m 644 hook.upgrade "$pkgdir/usr/share/libalpm/hooks/70-dkms-upgrade.hook"
|
||||
install -D -m 644 hook.remove "$pkgdir/usr/share/libalpm/hooks/71-dkms-remove.hook"
|
||||
# hook helper
|
||||
install -D -m 755 hook.sh "$pkgdir/usr/share/libalpm/scripts/dkms"
|
||||
# upstream installer
|
||||
cd dkms
|
||||
# we don't need kconf files and libdir is only for debian stuff, so
|
||||
# we install them outside of $pkgdir
|
||||
make \
|
||||
DESTDIR="$pkgdir" \
|
||||
SBIN="$pkgdir/usr/bin" \
|
||||
BASHDIR="$pkgdir/usr/share/bash-completion/completions" \
|
||||
KCONF="$srcdir"/trash \
|
||||
LIBDIR="$srcdir"/trash \
|
||||
install
|
||||
}
|
||||
|
||||
# vim:set ts=2 sw=2 et:
|
|
@ -0,0 +1,69 @@
|
|||
# Maintainer: Sébastien Luttringer
|
||||
# Contributor: Balwinder S "bsd" Dheeman (bdheeman AT gmail.com)
|
||||
|
||||
pkgname=dkms
|
||||
pkgver=2.6.1
|
||||
pkgrel=1
|
||||
pkgdesc='Dynamic Kernel Modules System'
|
||||
arch=('any')
|
||||
url='https://github.com/dell/dkms'
|
||||
license=('GPL2')
|
||||
depends=('bash' 'kmod' 'gcc' 'make' 'patch')
|
||||
makedepends=('git')
|
||||
optdepends=('linux-headers: build modules against the Arch kernel'
|
||||
'linux-lts-headers: build modules against the LTS kernel'
|
||||
'linux-zen-headers: build modules against the ZEN kernel'
|
||||
'linux-hardened-headers: build modules against the HARDENED kernel')
|
||||
backup=('etc/dkms/framework.conf')
|
||||
install=$pkgname.install
|
||||
source=("git+https://github.com/dell/dkms.git#tag=v$pkgver"
|
||||
'hook.install'
|
||||
'hook.remove'
|
||||
'hook.sh'
|
||||
'0001-Revert-Make-newly-installed-modules-available-immedi.patch'
|
||||
'0002-Revert-Fix-to-run-under-BusyBox-shell.patch'
|
||||
'0003-Fix-version-check-when-installing-modules.patch')
|
||||
md5sums=('SKIP'
|
||||
'90f1486e0af9aab85e8c60d456802c63'
|
||||
'2e8ffd0c2ddec02872d0234befd129fd'
|
||||
'80632f6a454b35bcade2bed287f13c7b'
|
||||
'd3b91ef709f567a375f4bbdbd3291d2b'
|
||||
'4342b5e9020a52a73a63e7897ead5405'
|
||||
'00813655321b8fc256eda737ca0622ef')
|
||||
|
||||
prepare() {
|
||||
cd dkms
|
||||
|
||||
# apply patch from the source array (should be a pacman feature)
|
||||
local filename
|
||||
for filename in "${source[@]}"; do
|
||||
if [[ "$filename" =~ \.patch$ ]]; then
|
||||
msg2 "Applying patch ${filename##*/}"
|
||||
patch -p1 -N -i "$srcdir/${filename##*/}"
|
||||
fi
|
||||
done
|
||||
|
||||
# /usr move
|
||||
msg2 '/usr move patching'
|
||||
for i in dkms{,_framework.conf,.bash-completion,.8,_common.postinst}; do
|
||||
sed -ri 's,/lib/modules,/usr/lib/modules,g' "$i"
|
||||
done
|
||||
}
|
||||
|
||||
package() {
|
||||
# alpm hook
|
||||
install -D -m 644 hook.install "$pkgdir/usr/share/libalpm/hooks/70-dkms-install.hook"
|
||||
install -D -m 644 hook.remove "$pkgdir/usr/share/libalpm/hooks/70-dkms-remove.hook"
|
||||
install -D -m 755 hook.sh "$pkgdir/usr/lib/dkms/alpm-hook"
|
||||
# upstream installer
|
||||
cd dkms
|
||||
# we don't need kconf files, so we install them outside $pkgdir
|
||||
make \
|
||||
DESTDIR="$pkgdir" \
|
||||
SBIN="$pkgdir/usr/bin" \
|
||||
BASHDIR="$pkgdir/usr/share/bash-completion/completions" \
|
||||
KCONF="$srcdir"/kconf \
|
||||
install
|
||||
}
|
||||
|
||||
# vim:set ts=2 sw=2 et:
|
|
@ -0,0 +1 @@
|
|||
rm -rf {src,pkg,dkms}
|
|
@ -0,0 +1,13 @@
|
|||
#!/bin/bash
|
||||
|
||||
# arg 1: the new package version
|
||||
# arg 2: the old package version
|
||||
post_upgrade() {
|
||||
if (( "$(vercmp $2 '2.2.0.3+git151023-2')" < 0 )); then
|
||||
echo '===> dkms systemd startup service has been removed'
|
||||
echo '===> modules building is now handled by alpm hooks at install time'
|
||||
echo '===> startup modules loading must be done via modules-load.d'
|
||||
fi
|
||||
}
|
||||
|
||||
# vim:set ts=2 sw=2 ft=sh et:
|
|
@ -0,0 +1,14 @@
|
|||
[Trigger]
|
||||
Operation = Install
|
||||
Operation = Upgrade
|
||||
Type = Path
|
||||
Target = usr/src/*/dkms.conf
|
||||
Target = usr/lib/modules/*/build/include/
|
||||
Target = usr/lib/modules/*/modules.alias
|
||||
|
||||
[Action]
|
||||
Description = Install DKMS modules
|
||||
Depends = dkms
|
||||
When = PostTransaction
|
||||
Exec = /usr/share/libalpm/scripts/dkms install
|
||||
NeedsTargets
|
|
@ -0,0 +1,13 @@
|
|||
[Trigger]
|
||||
Operation = Remove
|
||||
Type = Path
|
||||
Target = usr/src/*/dkms.conf
|
||||
Target = usr/lib/modules/*/build/include/
|
||||
Target = usr/lib/modules/*/modules.alias
|
||||
|
||||
[Action]
|
||||
Description = Remove DKMS modules
|
||||
Depends = dkms
|
||||
When = PreTransaction
|
||||
Exec = /usr/share/libalpm/scripts/dkms remove
|
||||
NeedsTargets
|
|
@ -0,0 +1,303 @@
|
|||
#!/bin/bash
|
||||
|
||||
#
|
||||
# Copyright © 2018-2021, Sébastien Luttringer
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
# display what to run and run it quietly
|
||||
run() {
|
||||
echo "==> $*"
|
||||
"$@" > /dev/null
|
||||
local ret=$?
|
||||
(( $ret )) && echo "==> WARNING: \`$*' exited $ret"
|
||||
return $ret
|
||||
}
|
||||
|
||||
# check whether the dependencies of a module are installed
|
||||
# $1: module name
|
||||
# $2: module version
|
||||
# $3: kernel version
|
||||
check_dependency() { (
|
||||
source "$source_tree/$1-$2/dkms.conf"
|
||||
local mod lines line
|
||||
for mod in "${BUILD_DEPENDS[@]}"; do
|
||||
mapfile lines < <(dkms status -m "$mod" -k "$3")
|
||||
for line in "${lines[@]}"; do
|
||||
[[ "$line" =~ "$mod/"[^,]+", $3, "[^:]+': installed' ]] && break 2
|
||||
done
|
||||
exit 1
|
||||
done
|
||||
exit 0
|
||||
) }
|
||||
|
||||
# check whether the modules should be built with this kernel version
|
||||
# $1: module name
|
||||
# $2: module version
|
||||
# $3: kernel version
|
||||
check_buildexclusive() {
|
||||
local BUILD_EXCLUSIVE_KERNEL=$(source "$source_tree/$1-$2/dkms.conf"; printf '%s\n' "$BUILD_EXCLUSIVE_KERNEL")
|
||||
[[ "$3" =~ $BUILD_EXCLUSIVE_KERNEL ]]
|
||||
}
|
||||
|
||||
# list all kernel versions
|
||||
all_kver() {
|
||||
pushd "$install_tree" >/dev/null
|
||||
local path
|
||||
for path in */build/; do
|
||||
echo "${path%%/*}"
|
||||
done
|
||||
popd >/dev/null
|
||||
}
|
||||
|
||||
# list all module name/version for a specific kernel version
|
||||
# $1: kernel version
|
||||
all_nv_from_kver() {
|
||||
local path
|
||||
for path in "$source_tree"/*-*/dkms.conf; do
|
||||
if [[ -f "$path" && "$path" =~ ^$source_tree/([^/]+)-([^/]+)/dkms\.conf$ ]]; then
|
||||
echo "${BASH_REMATCH[1]}/${BASH_REMATCH[2]}"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# list of modules/version for installed/built kernel version
|
||||
# $1: kernel version
|
||||
built_nv_from_kver() {
|
||||
local line
|
||||
dkms status -k "$1" | while read -r line; do
|
||||
if [[ "$line" =~ ^([^/]+/[^,]+)", $1, "[^:]+": "(built|installed) ]]; then
|
||||
echo "${BASH_REMATCH[1]}"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# list installed or built kernel version for a specific module version
|
||||
# $1 : module name/module version
|
||||
built_kver_from_nv() {
|
||||
local line
|
||||
dkms status "$1" | while read -r line; do
|
||||
if [[ "$line" =~ ^"$1, "([^,]+)", "[^:]+": "(built|installed) ]]; then
|
||||
echo "${BASH_REMATCH[1]}"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# install registered modules
|
||||
dkms_install() {
|
||||
# list of modules to build for a specific kernel
|
||||
local -A tobuild=()
|
||||
|
||||
# add new/updated modules for all kernels to the build list
|
||||
local nv kver
|
||||
for nv in "${!DKMS_MODULES[@]}"; do
|
||||
for kver in $(all_kver); do
|
||||
tobuild["$nv/$kver"]=''
|
||||
done
|
||||
done
|
||||
# add modules for new/updated kernels to the build list
|
||||
for kver in "${!KERNEL_VERSIONS[@]}"; do
|
||||
for nv in $(all_nv_from_kver "$kver"); do
|
||||
tobuild["$nv/$kver"]=''
|
||||
done
|
||||
done
|
||||
|
||||
# list of kver which requires depmod refresh
|
||||
local -A depmods=()
|
||||
|
||||
# let's build and install
|
||||
local nvk mod mver
|
||||
local -i retry=1
|
||||
while (( $retry > 0 )); do
|
||||
retry=0
|
||||
for nvk in "${!tobuild[@]}"; do
|
||||
[[ "$nvk" =~ ([^/]+)/([^/]+)/(.+) ]] || continue
|
||||
mod="${BASH_REMATCH[1]}"
|
||||
mver="${BASH_REMATCH[2]}"
|
||||
kver="${BASH_REMATCH[3]}"
|
||||
# do not build excluded modules
|
||||
if ! check_buildexclusive "$mod" "$mver" "$kver"; then
|
||||
unset tobuild[$nvk]
|
||||
continue
|
||||
# skip modules with missing kernel headers
|
||||
elif [[ ! -d "$install_tree/$kver/build/include" ]]; then
|
||||
ERROR_MESSAGES+=("Missing $kver kernel headers for module $mod/$mver.")
|
||||
unset tobuild[$nvk]
|
||||
continue
|
||||
# skip modules with missing kernel package
|
||||
elif [[ ! -d "$install_tree/$kver/kernel" ]]; then
|
||||
ERROR_MESSAGES+=("Missing $kver kernel modules tree for module $mod/$mver.")
|
||||
unset tobuild[$nvk]
|
||||
continue
|
||||
# postpone modules with missing dependencies
|
||||
elif ! check_dependency "$mod" "$mver" "$kver"; then
|
||||
continue
|
||||
fi
|
||||
# give it a try dkms
|
||||
run dkms install --no-depmod "$mod/$mver" -k "$kver"
|
||||
if (( $? == 0 )); then
|
||||
# register kernel version for later depmod
|
||||
depmods[$kver]=''
|
||||
fi
|
||||
unset tobuild[$nvk]
|
||||
# maybe this module was a dep of another, so we retry
|
||||
retry=1
|
||||
done
|
||||
done
|
||||
# run depmod later for performance improvments
|
||||
if (( $DKMS_DEPMOD )); then
|
||||
for kver in "${!depmods[@]}"; do
|
||||
run depmod "$kver"
|
||||
done
|
||||
fi
|
||||
# add errors messages for missing dependencies modules
|
||||
for nvk in "${!tobuild[@]}"; do
|
||||
[[ "$nvk" =~ ([^/]+/[^/]+)/(.+) ]] || continue
|
||||
nv="${BASH_REMATCH[1]}"
|
||||
kver="${BASH_REMATCH[2]}"
|
||||
ERROR_MESSAGES+=("Missing dependencies to install module $nv for kernel $kver.")
|
||||
done
|
||||
}
|
||||
|
||||
# remove registered modules
|
||||
# run depmod once per kernel for performance improvments
|
||||
dkms_remove() {
|
||||
local nv kver
|
||||
local -A depmods=()
|
||||
# remove full modules first
|
||||
for nv in "${!DKMS_MODULES[@]}"; do
|
||||
# try to remove modules one by one to keep the depmod optimization
|
||||
for kver in $(built_kver_from_nv "$nv"); do
|
||||
run dkms remove --no-depmod "$nv" -k "$kver"
|
||||
if (( $? == 0 )); then
|
||||
# register kernel version for later depmod
|
||||
depmods[$kver]=''
|
||||
else
|
||||
ERROR_MESSAGES+=("Failed to remove module $nv for kernel $kver.")
|
||||
fi
|
||||
done
|
||||
# ensure module removal (even if only added)
|
||||
if [[ $(dkms status "$nv") ]]; then
|
||||
run dkms remove "$nv"
|
||||
(( $? == 0 )) || ERROR_MESSAGES+=("Failed to remove module $nv.")
|
||||
fi
|
||||
done
|
||||
# remove modules for a specific kernel version
|
||||
for kver in "${!KERNEL_VERSIONS[@]}"; do
|
||||
for nv in $(built_nv_from_kver "$kver"); do
|
||||
run dkms remove --no-depmod "$nv" -k "$kver"
|
||||
if (( $? == 0 )); then
|
||||
# register kernel version for later depmod
|
||||
depmods[$kver]=''
|
||||
else
|
||||
ERROR_MESSAGES+=("Failed to remove module $nv for kernel $kver.")
|
||||
fi
|
||||
done
|
||||
done
|
||||
# run depmod later for performance improvments
|
||||
if (( $DKMS_DEPMOD )); then
|
||||
for kver in "${!depmods[@]}"; do
|
||||
run depmod "$kver"
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
# display hook usage and exit $1 (default 1)
|
||||
usage() {
|
||||
cat << EOF >&2
|
||||
usage: ${0##*/} <options> install|remove
|
||||
options: -D Do not run depmod
|
||||
EOF
|
||||
exit ${1:-1}
|
||||
}
|
||||
|
||||
# emulated program entry point
|
||||
main() {
|
||||
[[ "$DKMS_ALPM_HOOK_DEBUG" ]] && set -x
|
||||
|
||||
# prevent each dkms call from failing with authorization errors
|
||||
if (( EUID )); then
|
||||
echo 'You must be root to use this hook' >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
# parse command line options
|
||||
declare -i DKMS_DEPMOD=1
|
||||
local opt
|
||||
while getopts 'hD' opt; do
|
||||
case $opt in
|
||||
D) DKMS_DEPMOD=0;;
|
||||
*) usage;;
|
||||
esac
|
||||
done
|
||||
shift $((OPTIND - 1))
|
||||
(( $# != 1 )) && usage
|
||||
|
||||
# parse command action to early exit
|
||||
case "$1" in
|
||||
install|remove) declare -r DKMS_ACTION="$1";;
|
||||
*) usage;;
|
||||
esac
|
||||
|
||||
# dkms path from framework config
|
||||
# note: the alpm hooks which trigger this script use static path
|
||||
source_tree='/usr/src'
|
||||
install_tree='/usr/lib/modules'
|
||||
source /etc/dkms/framework.conf
|
||||
|
||||
# check source_tree and install_tree exists
|
||||
local path
|
||||
for path in "$source_tree" "$install_tree"; do
|
||||
if [[ ! -d "$path" ]]; then
|
||||
echo "==> Missing mandatory directory: $path. Exiting!" >&2
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
|
||||
# global storage for changed DKMS modules
|
||||
# we use associate arrays to prevent duplication
|
||||
# the key is <module name>/<module version>/<kernel version>
|
||||
declare -A DKMS_MODULES
|
||||
|
||||
# global storage for changed linux kernels
|
||||
# we use associate arrays to prevent duplication
|
||||
declare -A KERNEL_VERSIONS
|
||||
|
||||
# global storage for error messages
|
||||
declare -a ERROR_MESSAGES
|
||||
|
||||
# parse stdin paths to guess what we should install/remove
|
||||
while read -r path; do
|
||||
if [[ "/$path" =~ ^$source_tree/([^/]+)-([^/]+)/dkms\.conf$ ]]; then
|
||||
# we match file updates on dkms modules sources
|
||||
DKMS_MODULES["${BASH_REMATCH[1]}/${BASH_REMATCH[2]}"]=''
|
||||
elif [[ "/$path" =~ ^$install_tree/([^/]+)/ ]]; then
|
||||
# we match file updates on kernels install/removal
|
||||
KERNEL_VERSIONS["${BASH_REMATCH[1]}"]=''
|
||||
fi
|
||||
done
|
||||
|
||||
dkms_$DKMS_ACTION
|
||||
|
||||
# display errors at the end, to maximize readers
|
||||
local msg
|
||||
for msg in "${ERROR_MESSAGES[@]}"; do
|
||||
echo "==> ERROR: $msg" >&2
|
||||
done
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
main "$@"
|
|
@ -0,0 +1,13 @@
|
|||
[Trigger]
|
||||
Operation = Upgrade
|
||||
Type = Path
|
||||
Target = usr/src/*/dkms.conf
|
||||
Target = usr/lib/modules/*/build/include/
|
||||
Target = usr/lib/modules/*/modules.alias
|
||||
|
||||
[Action]
|
||||
Description = Remove upgraded DKMS modules
|
||||
Depends = dkms
|
||||
When = PreTransaction
|
||||
Exec = /usr/share/libalpm/scripts/dkms -D remove
|
||||
NeedsTargets
|
|
@ -6,14 +6,14 @@
|
|||
#-----------------------------------------| DESCRIPTION |---------------------------------------
|
||||
|
||||
pkgname=obs-studio-git
|
||||
pkgver=27.2.0.562
|
||||
pkgver=27.2.0.569
|
||||
pkgrel=01
|
||||
pkgdesc="Free and open source software for video recording and live streaming. w/o systemd dependencies"
|
||||
arch=("x86_64")
|
||||
url="https://github.com/obsproject/obs-studio"
|
||||
depends=("ffmpeg" "jansson" "libxinerama" "libxkbcommon-x11" "mbedtls"
|
||||
depends=("ffmpeg" "jansson" "libxinerama" "libxkbcommon-x11" "mbedtls" "rnnoise" "pciutils"
|
||||
"qt5-svg" "qt5-x11extras" "curl" "jack" "gtk-update-icon-cache"
|
||||
"speexdsp" "pciutils" "libajantv2")
|
||||
"speexdsp" "libajantv2")
|
||||
makedepends=("cmake" "git" "libfdk-aac" "libxcomposite" "x264"
|
||||
"vlc" "swig" "luajit" "python" "cef-minimal-obs-bin" "wayland"
|
||||
"qt5-wayland" "xdg-desktop-portal" "pipewire")
|
||||
|
|
|
@ -25,3 +25,4 @@ xdg-desktop-portal
|
|||
xdg-desktop-portal-gtk
|
||||
bluez-libs
|
||||
pipewire
|
||||
rnnoise
|
||||
|
|
Loading…
Reference in New Issue