aboutsummaryrefslogtreecommitdiffstats
path: root/main/linux-vserver/APKBUILD
blob: 0069ca5d7b25425821da9104d96bc6b62f515c9d (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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>

_flavor=vserver
pkgname=linux-${_flavor}
pkgver=3.4.45
pkgrel=0
_vsver=vs2.3.3.9

if [ "${pkgver##*.*.*}" = "$pkgver" ]; then
	_kernver=$pkgver
else
	_kernver=${pkgver%.*}
fi

pkgdesc="Linux kernel with vserver"
url="http://linux-vserver.org/"
depends="mkinitfs linux-firmware"
makedepends="perl installkernel"
options="!strip"
_config=${config:-kernelconfig.${CARCH}}
install=
source="http://www.kernel.org/pub/linux/kernel/v3.x/linux-$_kernver.tar.xz
	http://www.kernel.org/pub/linux/kernel/v3.x/patch-$pkgver.xz
	patch-$pkgver-$_vsver.diff
	kernelconfig.x86
	kernelconfig.x86_64
	"
subpackages="$pkgname-dev"
arch="all"
license="GPL-2"

_abi_release=${pkgver}-${_vsver}

prepare() {
	cd "$srcdir"/linux-$_kernver
	if [ "${pkgver%.0}" = "$pkgver" ]; then
		msg "Applying $i"
		unxz -c < ../patch-$pkgver.xz | patch -p1 -N || return 1
	fi

	# ERR is no valid signal
	sed -i -e '/^trap/s/ERR//' scripts/link-vmlinux.sh

	# first apply patches in specified order
	for i in $source; do
		i=${i##*/}
		case $i in
		*.patch|*.diff)
			msg "Applying $i..."
			patch -s -p1 -i "$srcdir"/$i || return 1
			;;
		esac
	done

	mkdir -p "$srcdir"/build
	cp "$srcdir"/$_config "$srcdir"/build/.config || return 1
	make -C "$srcdir"/linux-$_kernver O="$srcdir"/build HOSTCC="${CC:-gcc}" \
		silentoldconfig
}

# this is so we can do: 'abuild menuconfig' to reconfigure kernel
menuconfig() {
	cd "$srcdir"/build
	make menuconfig
	cp .config "$startdir"/$_config || return 1
}

build() {
	cd "$srcdir"/build
	export GCC_SPECS=/usr/share/gcc/hardenednopie.specs
	make CC="${CC:-gcc}" \
		KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-Alpine" \
		|| return 1
}

package() {
	cd "$srcdir"/build
	mkdir -p "$pkgdir"/boot "$pkgdir"/lib/modules
	make -j1 modules_install install \
		INSTALL_MOD_PATH="$pkgdir" \
		INSTALL_PATH="$pkgdir"/boot \
		|| return 1

	rm -rf "$pkgdir"/lib/modules/*/build \
		"$pkgdir"/lib/modules/*/source
	rm -rf "$pkgdir"/lib/firmware

	install -D include/config/kernel.release \
		"$pkgdir"/usr/share/kernel/$_flavor/kernel.release
}

dev() {
	# copy the only the parts that we really need for build 3rd party
	# kernel modules and install those as /usr/src/linux-headers,
	# simlar to what ubuntu does
	#
	# this way you dont need to install the 300-400 kernel sources to
	# build a tiny kernel module
	#
	pkgdesc="Headers and script for third party modules for grsec kernel"
	local dir="$subpkgdir"/usr/src/linux-headers-${_abi_release}

	# first we import config, run prepare to set up for building
	# external modules, and create the scripts
	mkdir -p "$dir"
	cp "$srcdir"/$_config "$dir"/.config
	make -j1 -C "$srcdir"/linux-$_kernver O="$dir" HOSTCC="${CC:-gcc}" \
		silentoldconfig prepare scripts

	# remove the stuff that poits to real sources. we want 3rd party
	# modules to believe this is the soruces
	rm "$dir"/Makefile "$dir"/source

	# copy the needed stuff from real sources
	#
	# this is taken from ubuntu kernel build script
	# http://kernel.ubuntu.com/git?p=ubuntu/ubuntu-jaunty.git;a=blob;f=debian/rules.d/3-binary-indep.mk;hb=HEAD
	cd "$srcdir"/linux-$_kernver
	find . -path './include/*' -prune -o -path './scripts/*' -prune \
		-o -type f \( -name 'Makefile*' -o -name 'Kconfig*' \
		-o -name 'Kbuild*' -o -name '*.sh' -o -name '*.pl' \
		-o -name '*.lds' \) | cpio -pdm "$dir"
	cp -a drivers/media/dvb/dvb-core/*.h "$dir"/drivers/media/dvb/dvb-core
	cp -a drivers/media/video/*.h "$dir"/drivers/media/video
	cp -a drivers/media/dvb/frontends/*.h "$dir"/drivers/media/dvb/frontends
	cp -a scripts include "$dir"
	find $(find arch -name include -type d -print) -type f \
		| cpio -pdm "$dir"

	install -Dm644 "$srcdir"/build/Module.symvers \
		"$dir"/Module.symvers

	mkdir -p "$subpkgdir"/lib/modules/${_abi_release}
	ln -sf /usr/src/linux-headers-${_abi_release} \
		"$subpkgdir"/lib/modules/${_abi_release}/build
}

md5sums="967f72983655e2479f951195953e8480  linux-3.4.tar.xz
adb183c04b48eb1276abcae46858dc29  patch-3.4.45.xz
45c7f894c242dfb02c9d9485b252a98f  patch-3.4.45-vs2.3.3.9.diff
17038c80855fa0131db7021225184844  kernelconfig.x86
ca6fce288664a05fed7c91883cf96dde  kernelconfig.x86_64"
sha256sums="ff3dee6a855873d12487a6f4070ec2f7996d073019171361c955639664baa0c6  linux-3.4.tar.xz
1eee23dc5a2f6a2448030e4d89e8d2883037c10cfd38eb1d59ee1d8848202ca4  patch-3.4.45.xz
ab0de3bf5e4c381fb55d7494426bbf4a32a56d5002e6cf99c8a9451e4b0a0a6e  patch-3.4.45-vs2.3.3.9.diff
d5b45035e40e05a7f387027fbfb46fe8cb80f655204d768b937b1b5ff7f28397  kernelconfig.x86
b6c68df7f4e6a7571839857c18896580da0393369aa7f4d4ee88182309e12376  kernelconfig.x86_64"
sha512sums="1c49b336750c9c2b49d21e54126f22a800367296be0d57e6df28b1532cbeba7fc3bdf4cfe27d9810576e76c2db2e9c2493f0804451c915137cb78d7aa61f236c  linux-3.4.tar.xz
3a7abeae48a6731d76165071f76e83f67a88705de0f6fef88d1dd901e50e8776406d610256aab91f2650176f46ec3fef6e25196c9b25b969b8ba0293728d0b36  patch-3.4.45.xz
8c3b9d0d93abdd9821595a849a7fae070147ed5013e2b6f31e8a659642586affef5f038fbed5696e447e145a5b0c2a339e7a2479b8579ea953766b9b712df8be  patch-3.4.45-vs2.3.3.9.diff
08d8cf139e3833631f3c53276ace72741fd9dfef99df2a0a8b0d8204222c3715788ee33d1601bdd27ba39aa9352a2ce8e23bdfde5c60a4a8b82eeea77aadae32  kernelconfig.x86
766f93ef3e2d9ee131811a85179bdeb5e090eefa2adea4fc813f57b275016f37f7b9baf8761177c2431c38da2e0f421f92c08f5156195280f297296b0aa6acf0  kernelconfig.x86_64"