aboutsummaryrefslogtreecommitdiffstats
path: root/main/linux-vserver/APKBUILD
blob: 8fc2eaa3fe965118404c73c66c8bc1fb1f2b3920 (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
153
154
155
156
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>

_flavor=vserver
pkgname=linux-${_flavor}
pkgver=3.10.18
pkgrel=0
_vsver=vs2.3.6.6

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 bash bc"
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
	aslr-pie.patch
	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=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="4f25cd5bec5f8d5a7d935b3f2ccb8481  linux-3.10.tar.xz
e39b75595bf61d758087e1ddecd01a12  patch-3.10.18.xz
d9f07e9608af91b865f9d646ae0b96b2  patch-3.10.18-vs2.3.6.6.diff
35e2e5c7a5f0de3cdf540bb4ae894349  aslr-pie.patch
70d2cc88b867c9da26a0ab9a6da9973f  kernelconfig.x86
acccc23350bafce3fdb43c7c80296c6a  kernelconfig.x86_64"
sha256sums="df27fa92d27a9c410bfe6c4a89f141638500d7eadcca5cce578954efc2ad3544  linux-3.10.tar.xz
6fe9123444e4803d2bdec0f89a969024813bd54ba9114471589d1326deee8d6f  patch-3.10.18.xz
5acf8e93686cafd12cab26dd1d80a61cc8ed54199976ea4eaccd187238da9ab0  patch-3.10.18-vs2.3.6.6.diff
c18b47c7cd07837ca1c4f4702ef72e688a307b02f1f74012b329cea7d910ec85  aslr-pie.patch
874b7591214e69cf145f9bce1427b6774435a43c3dac50ea5c8ccd4c43790944  kernelconfig.x86
8deb8491dc854ed392f730e8ee53a32c47bba0b4350f0f81afdf741207084855  kernelconfig.x86_64"
sha512sums="5fb109fcbd59bf3dffc911b853894f0a84afa75151368f783a1252c5ff60c7a1504de216c0012be446df983e2dea400ad8eeed3ce04f24dc61d0ef76c174dc35  linux-3.10.tar.xz
b891e6969a0628f760aebf04e7b4cfd9e93c73fd1f61d9c50a2e3b812bff4f35f2b2a13f88319a106fb6d9929b83bc59384ddb651b17ea158739523ad252575a  patch-3.10.18.xz
95b4e2768da2f60347885dac3094803c65f1ba205a76ef58c2f577394e0a4c32f21570467b09d1c7301021fd49169784b2a261ebf7469d64161e55784e067297  patch-3.10.18-vs2.3.6.6.diff
41c74619359791a65dc2c017e8fdae9e8614c8c6d3306bec59dac84bc74455ea1b9c5d35d98c7ce414d8621d91c9dbe868916a8b89be6c60d1013235ef5c21ab  aslr-pie.patch
54c20b88b04d29bd4985b9ff0dd84ba5356719d905a5efc73258a9517419df0d144bfd96963abe4b781d6eda6acb02b4116e60fa878b6d932b5f8d66fc31e7c3  kernelconfig.x86
ff258d9fcc660b608e3ba3bd1f9384504e6ef12cc440931784e6badfdf9f67d0e06f1e23aeb070b5e525c81467be542c7e313940bf6e49e9c905003047a3d146  kernelconfig.x86_64"