diff --git a/openrazer/alr.sh b/openrazer/alr.sh index 313667f..ef40868 100644 --- a/openrazer/alr.sh +++ b/openrazer/alr.sh @@ -5,7 +5,7 @@ name=( python3-openrazer ) version='3.10.3' -release='17' +release='18' desc='Community-led effort to support Razer peripherals on Linux' desc_ru='Коммьюнити-проект, который поддерживает периферийные устройства Razer на Linux' homepage='https://openrazer.github.io' @@ -95,8 +95,6 @@ files_openrazer-daemon() { package_openrazer-driver-dkms() { cd $srcdir/$basepkg_name-$version make DESTDIR="$pkgdir" setup_dkms udev_install - sed -i 's| CC=clang LD=ld.lld||g' "$pkgdir"/usr/src/openrazer-driver-$version/dkms.conf - sed -i 's|make driver|make driver CC=gcc|' "$pkgdir"/usr/src/openrazer-driver-$version/dkms.conf } files_openrazer-driver-dkms() { diff --git a/openrazer/postinstall-dkms.sh b/openrazer/postinstall-dkms.sh index b978804..f2d72e9 100755 --- a/openrazer/postinstall-dkms.sh +++ b/openrazer/postinstall-dkms.sh @@ -1,13 +1,33 @@ #!/usr/bin/bash -# Создаём группу plugdev если её нет +VERSION="3.10.3" +MODULE="openrazer-driver" +DKMS_CONF="/usr/src/$MODULE-$VERSION/dkms.conf" + getent group plugdev >/dev/null || groupadd -r plugdev -# Добавляем модуль в DKMS если ещё не добавлен -dkms status -m openrazer-driver -v 3.10.3 >/dev/null 2>&1 || dkms add -m openrazer-driver -v 3.10.3 +dkms status -m $MODULE -v $VERSION >/dev/null 2>&1 || dkms add -m $MODULE -v $VERSION -# Собираем и устанавливаем модули для текущего ядра -dkms install -m openrazer-driver -v 3.10.3 -k $(uname -r) || true +if [ -f "$DKMS_CONF" ]; then + KERNEL_CC=$(grep -oP '(?<=CONFIG_CC_VERSION_TEXT=")[^"]*' /lib/modules/$(uname -r)/build/.config 2>/dev/null | awk '{print $1}') + + if [[ "$KERNEL_CC" == "clang" ]]; then + CLANG_VER=$(grep -oP '(?<=CONFIG_CC_VERSION_TEXT=")clang version \K[0-9]+' /lib/modules/$(uname -r)/build/.config 2>/dev/null) + + if [ -n "$CLANG_VER" ]; then + CLANG_BIN="clang-${CLANG_VER}" + LLVM_LIB=$(find /usr/lib* -path "*/llvm${CLANG_VER}/lib/libclang-cpp.so*" -print -quit 2>/dev/null) + + if [ -x "$(command -v $CLANG_BIN)" ] && [ -n "$LLVM_LIB" ]; then + LLVM_DIR=$(dirname "$LLVM_LIB") + sed -i "s|KERNELDIR=/lib/modules/\${kernelver}/build|LD_LIBRARY_PATH=$LLVM_DIR:\$LD_LIBRARY_PATH KERNELDIR=/lib/modules/\${kernelver}/build|" "$DKMS_CONF" + sed -i "s|make driver|make driver CC=$CLANG_BIN LD=ld.lld|" "$DKMS_CONF" + fi + fi + fi +fi + +dkms install -m $MODULE -v $VERSION -k $(uname -r) || true cat << EOF DKMS модули OpenRazer собраны для ядра $(uname -r).