diff --git a/pkg.info b/pkg.info index 855cede..5a2f49a 100644 --- a/pkg.info +++ b/pkg.info @@ -1,9 +1,21 @@ name: kmod description: Linux kernel module handling tools -version: 34.2 +version: "34.2" +revision: 2 url: https://github.com/kmod-project/kmod license: LGPL2.1,GPL2 architecture: any -depends: ["glibc","openssl","xz-utils","zlib","zstd"] -make_depends: ["scdoc"] type: source +depends: + - glibc + - openssl + - xz-utils + - zlib + - zstd +make_depends: + - scdoc +downloads: + - url: https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-${BPM_PKG_VERSION}.tar.xz + extract_to: ${BPM_SOURCE} + extract_strip_components: 1 + checksum: 5a5d5073070cc7e0c7a7a3c6ec2a0e1780850c8b47b3e3892226b93ffcb9cb54 diff --git a/source-files/static-device-nodes.esv b/source-files/static-device-nodes.esv new file mode 100644 index 0000000..460313a --- /dev/null +++ b/source-files/static-device-nodes.esv @@ -0,0 +1,6 @@ +name: static-device-nodes +description: Create static device nodes +type: simple +start_cmd: /etc/esvm/scripts/static-device-nodes.sh +exit_method: kill +restart: false diff --git a/source-files/static-device-nodes.sh b/source-files/static-device-nodes.sh new file mode 100644 index 0000000..55fa871 --- /dev/null +++ b/source-files/static-device-nodes.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +# Create all static nodes +kmod static-nodes --format=devname | while read -r line; do + path=/dev/$(echo "$line" | awk '{print $2}') + type=$(echo "$line" | awk '{print $3}' | cut -c1-1) + major=$(echo "$line" | awk '{print $3}' | cut -c2- | cut -d':' -f1) + minor=$(echo "$line" | awk '{print $3}' | cut -c2- | cut -d':' -f2) + + # Skip node if it already exists + [ -e "$path" ] && continue + + install -d $(dirname $path) + mknod "$path" "$type" "$major" "$minor" +done + +# Set permissions for static nodes according to udev rules in 50-udev-default.rules +[ -e /dev/snd/seq ] && chmod 0660 /dev/snd/seq +[ -e /dev/snd/timer ] && chmod 0660 /dev/snd/timer +[ -e /dev/loop-control ] && chmod 0660 /dev/loop-control +[ -e /dev/net/tun ] && chmod 0666 /dev/net/tun +[ -e /dev/fuse ] && chmod 0666 /dev/fuse +[ -e /dev/vfio/vfio ] && chmod 0666 /dev/vfio/vfio +[ -e /dev/kvm ] && chmod 0666 /dev/kvm +[ -e /dev/vhost-net ] && chmod 0666 /dev/vhost-net +[ -e /dev/vhost-vsock ] && chmod 0666 /dev/vhost-vsock + +# Set ownership for static nodes according to udev rules in 50-udev-default.rules +[ -e /dev/snd/seq ] && chgrp audio /dev/snd/seq +[ -e /dev/snd/timer ] && chgrp audio /dev/snd/timer +[ -e /dev/loop-control ] && chgrp disk /dev/loop-control +[ -e /dev/kvm ] && chgrp kvm /dev/kvm +[ -e /dev/vhost-net ] && chgrp kvm /dev/vhost-net +[ -e /dev/vhost-vsock ] && chgrp kvm /dev/vhost-vsock diff --git a/source.sh b/source.sh index 4f5a721..81b838b 100644 --- a/source.sh +++ b/source.sh @@ -2,16 +2,6 @@ # BPM Expects the source code to be extracted into the automatically created 'source' directory which can be accessed using $BPM_SOURCE # BPM Expects the output files to be present in the automatically created 'output' directory which can be accessed using $BPM_OUTPUT -DOWNLOAD="https://www.kernel.org/pub/linux/utils/kernel/kmod/kmod-${BPM_PKG_VERSION}.tar.xz" -FILENAME="${DOWNLOAD##*/}" - -# The prepare function is executed in the root of the temp directory -# This function is used for downloading files and putting them into the correct location -prepare() { - wget "$DOWNLOAD" - tar -xvf "$FILENAME" --strip-components=1 -C "$BPM_SOURCE" -} - # The build function is executed in the source directory # This function is used to compile the source code build() { @@ -36,6 +26,10 @@ package() { ln -sfv kmod "$BPM_OUTPUT"/usr/bin/lsmod + # Install esvm services + install -Dm755 "$BPM_WORKDIR"/static-device-nodes.sh "$BPM_OUTPUT"/etc/esvm/scripts/static-device-nodes.sh + install -Dm644 "$BPM_WORKDIR"/static-device-nodes.esv "$BPM_OUTPUT"/etc/esvm/services/static-device-nodes.esv + # Install package licenses install -Dm644 "$BPM_SOURCE"/COPYING "$BPM_OUTPUT"/usr/share/licenses/kmod/COPYING }