blob: 5621a15dad0cbcfd1c017d9ddbc74d5dbfa69b3a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
# Maintainer: VHSgunzo <vhsgunzo.github.io>
# Contributor: Torge Matthies <openglfreak at googlemail dot com>
# Contributor: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
pkgname="linux-xanmod-bin"
pkgver='6.12.5' # example for rt branch: pkgver='6.1.73.rt22'
branch='main'
pkgrel="1"
check_psabi() {
awk 'BEGIN {
while (!/flags/) if (getline < "/proc/cpuinfo" != 1) exit 1
if (/lm/&&/cmov/&&/cx8/&&/fpu/&&/fxsr/&&/mmx/&&/syscall/&&/sse2/) level = 1
if (level == 1 && /cx16/&&/lahf/&&/popcnt/&&/sse4_1/&&/sse4_2/&&/ssse3/) level = 2
if (level == 2 && /avx/&&/avx2/&&/bmi1/&&/bmi2/&&/f16c/&&/fma/&&/abm/&&/movbe/&&/xsave/) level = 3
if (level == 3 && /avx512f/&&/avx512bw/&&/avx512cd/&&/avx512dq/&&/avx512vl/) level = 4
if (level > 0) { print "x64v" level }
}' 2>/dev/null||echo "x64v1"
}
is_exe_exist() { command -v "$@" &>/dev/null ; }
check_url_stat_code() {
set -o pipefail
if is_exe_exist curl
then curl -sL -o /dev/null -I -w "%{http_code}" "$@" 2>/dev/null
elif is_exe_exist wget
then wget --no-check-certificate --server-response \
--spider "$@"|& awk '/^ HTTP/{print$2}'|tail -1
else return 1
fi
}
is_url() {
[ ! -n "$1" ] && \
return 1
if [ -n "$2" ]
then [ "$(check_url_stat_code "$1")" == "$2" ]
else [ "$(check_url_stat_code "$1")" == "200" ]
fi
}
psabi="$(check_psabi)"
[ "$branch" != 'main' ] && \
pkgname="${pkgname/bin/${branch}-bin}"
[ "$branch" == 'rt' ] && \
pkgverdl="${pkgver/.rt/-rt}"||\
pkgverdl="${pkgver}"
pkgdesc='The Linux kernel, modules and headers with Xanmod patches - Prebuilt version'
url="http://www.xanmod.org/"
arch=('x86_64')
license=('GPL2')
options=('!strip')
depends=('coreutils' 'kmod' 'initramfs' 'pahole')
conflicts=("linux-xanmod-headers" 'linux-xanmod')
optdepends=('crda: to set the correct wireless channels of your country'
'linux-firmware: firmware images needed for some devices')
makedepends=('curl' 'gawk' 'grep' 'libarchive' 'xz' 'jq')
provides=('VIRTUALBOX-GUEST-MODULES'
'WIREGUARD-MODULE'
'KSMBD-MODULE'
'NTFS3-MODULE')
for v in ${psabi/x64v/} 3 2 1
do
[[ "$v" -le "${psabi/x64v/}" && "$_psabi" != "x64v$v" ]]||continue
_psabi="x64v$v"
_url="https://sourceforge.net/projects/xanmod/files/releases/$branch/${pkgverdl}-xanmod1/${pkgverdl}-${_psabi}-xanmod1"
if is_url "$_url"
then psabi="$_psabi" && break
fi
done
_url_info="$(curl -sL "$_url"|grep "net.sf.files"|sed 's|net.sf.files = ||g;s|;$||'|jq -r '.[].download_url'|grep -v '\-dbg_')"
_url_image="$(echo "$_url_info"|grep -o "https:.*/linux-image.*deb"|head -1)"
_url_headers="$(echo "$_url_info"|grep -o "https:.*/linux-headers.*deb"|head -1)"
source=("${_url_image}" "${_url_headers}")
noextract=("${_url_image}" "${_url_headers}")
sha256sums=('SKIP' 'SKIP')
_file_image="${_url_image##*/}"
_file_headers="${_url_headers##*/}"
prepare() {
bsdtar -xf ${_file_image} data.tar.xz
bsdtar -xf data.tar.xz
rm -f data.tar.xz
bsdtar -xf ${_file_headers} data.tar.xz
bsdtar -xf data.tar.xz
rm -f data.tar.xz
}
package() {
local kernver="${pkgverdl}-$psabi-xanmod1"
local modulesdir="$pkgdir/usr/lib/modules/${kernver}"
mkdir -p "${modulesdir}"
msg2 "Installing modules..."
cp -arTf --no-preserve=ownership "lib/modules/${kernver}" "${modulesdir}"
cp -arTf --no-preserve=ownership usr "${pkgdir}/usr"
msg2 "Installing boot image..."
# systemd expects to find the kernel here to allow hibernation
# https://github.com/systemd/systemd/commit/edda44605f06a41fb86b7ab8128dcf99161d2344
install -Dm644 "boot/vmlinuz-${kernver}" "$modulesdir/vmlinuz"
# Used by mkinitcpio to name the kernel
echo "${pkgname%-bin}" | install -Dm644 /dev/stdin "$modulesdir/pkgbase"
}
|