APKBUILD 6.12 KB
Newer Older
1 2 3 4
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>

_flavor=vanilla
pkgname=linux-${_flavor}
5
pkgver=3.18.11
6 7 8 9
case $pkgver in
	*.*.*)	_kernver=${pkgver%.*};;
	*.*) _kernver=$pkgver;;
esac
10
pkgrel=1
11
pkgdesc="Linux vanilla kernel"
12 13
url=http://grsecurity.net
depends="mkinitfs linux-firmware"
14
makedepends="perl sed installkernel bash gmp-dev bc linux-headers"
15 16 17 18
options="!strip"
_config=${config:-kernelconfig.${CARCH}}
install=
source="http://ftp.kernel.org/pub/linux/kernel/v3.x/linux-$_kernver.tar.xz
19 20 21
	fs-binfmt_elf-fix-memory-map-for-PIE-applications.patch

	kernelconfig.armhf
22 23 24
	kernelconfig.x86
	kernelconfig.x86_64
	"
25 26 27 28
if [ "${pkgver%.0}" = "$pkgver" ]; then
	source="$source
	http://ftp.kernel.org/pub/linux/kernel/v3.x/patch-$pkgver.xz"
fi
29
subpackages="$pkgname-dev"
30
arch="all"
31 32 33 34 35 36 37
license="GPL-2"

_abi_release=${pkgver}

prepare() {
	local _patch_failed=
	cd "$srcdir"/linux-$_kernver
38
	if [ "$_kernver" != "$pkgver" ]; then
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
		msg "Applying patch-$pkgver.xz"
		unxz -c < "$srcdir"/patch-$pkgver.xz | patch -p1 -N || return 1
	fi

	# first apply patches in specified order
	for i in $source; do
		case $i in
		*.patch)
			msg "Applying $i..."
			if ! patch -s -p1 -N -i "$srcdir"/$i; then
				echo $i >>failed
				_patch_failed=1
			fi
			;;
		esac
	done

	if ! [ -z "$_patch_failed" ]; then
		error "The following patches failed:"
		cat failed
		return 1
	fi

	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 || return 1
	make menuconfig
	cp .config "$startdir"/$_config
}

build() {
	cd "$srcdir"/build
77
	export GCC_SPECS=hardenednopie.specs
78 79 80 81 82 83 84
	make CC="${CC:-gcc}" \
		KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-Alpine" \
		|| return 1
}

package() {
	cd "$srcdir"/build
85

86
	mkdir -p "$pkgdir"/boot "$pkgdir"/lib/modules
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104

	local _install
	case "$CARCH" in
	arm*)
		local _dtbdir="$pkgdir"/usr/lib/linux-${_abi_release}
		mkdir -p "$_dtbdir"
		for i in arch/arm/boot/dts/*.dtb ; do
			install -m644 "$i" "$_dtbdir"
		done

		_install=zinstall
		;;
	*)
		_install=install
		;;
	esac

	make -j1 modules_install firmware_install $_install \
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 157 158 159 160 161 162 163
		INSTALL_MOD_PATH="$pkgdir" \
		INSTALL_PATH="$pkgdir"/boot \
		|| return 1

	rm -f "$pkgdir"/lib/modules/${_abi_release}/build \
		"$pkgdir"/lib/modules/${_abi_release}/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"
	depends="gmp-dev"
	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 modules_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
}

164
md5sums="9e854df51ca3fef8bfe566dbd7b89241  linux-3.18.tar.xz
165
59d1fabcccea6a8a3fcf59d610205a6e  fs-binfmt_elf-fix-memory-map-for-PIE-applications.patch
166
60efa66cae174e7689220f940862b2d8  kernelconfig.armhf
167 168
c901b226acb933420d3fc065ced7edc5  kernelconfig.x86
6a8535780a6bfd4c49273ffb923fff06  kernelconfig.x86_64
169 170
ac5c93edbc9385793ccc33f4ced85950  patch-3.18.11.xz"
sha256sums="becc413cc9e6d7f5cc52a3ce66d65c3725bc1d1cc1001f4ce6c32b69eb188cbd  linux-3.18.tar.xz
171
e1377ef692929a37f1e638038b10e06a98502f28efc461e1948dcd67df1e7619  fs-binfmt_elf-fix-memory-map-for-PIE-applications.patch
172
236a0c28dd9a354bb9aad1686a71e017c61863514669811dc86a71d55c400bc9  kernelconfig.armhf
173 174
c174ae130cd9e21e1d7d32f2bf53e8e847777e4230ba800d9585018bd25f7f9e  kernelconfig.x86
98f05fa2f66bb50a409f445ab620662ee12366e5c06fae71121d8c8610718b7f  kernelconfig.x86_64
175 176
e4c44f887f507b2470a5c2f1c286a38fec6e84c4d433c929981abab7b83f80d5  patch-3.18.11.xz"
sha512sums="2f0b72466e9bc538a675738aa416573d41bbbd7e3e2ffd5b5b127afde609ebc278cec5a3c37e73479607e957c13f1b4ed9782a3795e0dcc2cf8e550228594009  linux-3.18.tar.xz
177
e8b5a96ddcf55ac9df7de506728a5308f9156086410edf6d354d7c69f6fb450222b25eb062e397889eeb9e5653c3f5110b0603003cca5d6706171b5559ddcd97  fs-binfmt_elf-fix-memory-map-for-PIE-applications.patch
178
2e8c35d6d7c88a8742dd3ccc62e45584ca634847d21a712325092d607b96ab417377864baa559c4ad1e5041e591e8938d40a41c4ece8a52ac916a97ae57f7347  kernelconfig.armhf
179 180
4f5ebd4739e9c84ab3a1633df5180248f937f4a7147cf1b40e30806cb7455305acb9e85dff01f6352bf6d7ee54ccc11e3f5ed59a9114681a8fc06aa0438d8175  kernelconfig.x86
060d69eec9ec07a6f468a4545730893509c3893cd3247ac770bfe486f17fe1b6c3d20118aea8dd42ad1506e0500208bf7ca1e4d4108bd8e661cd2ca39d0496f2  kernelconfig.x86_64
181
cc4ac5d341ca4e9d71ef1ba45a839b18947e3e7ffdc7f7efe2c211c95483518a1983bc3637edd607e0631f14c1cc9bfb9164926261d2cf5c2bb2eb91206f43b9  patch-3.18.11.xz"