aboutsummaryrefslogblamecommitdiffstats
path: root/main/linux-vanilla/APKBUILD
blob: 464fafc219a1631e305050d439624ded0ac19301 (plain) (tree)
1
2
3
4
5
6
7
8
9



                                                   
               



                                       
        
                              
                       
                  

                                                                                         
                
                                          
        
                                                                                       
                              
                            
                            

                             
                              
                            
 
                           

                          
         














                                                                                                              

                                       
                                                                                  
  
          
                 
 



                           
                       
                         
                       



                                   



                                    
                                             
                                               
                                                                   




















                                                                  

                                               

                 
 
             

                                                
                                                         
                                     
                                                                       

                                   
                                                          

                                                   
                                                         
                                               
            


         
                     
                              
                                            
                                                     
                                                                      
            

 


                                                              
 
                                               

                                                       


                        











                                                                      

            
                                            
                                

                                              

                           


                                                             

                                                  




                                                                        
                                             

                                  

 







                                                                         






                                                                         
                                                                                
                               




                                                                    


                                                               
                                                                                        
                                                               
 
                                                                         





                                                       
                                                                                                    
                                    
                                            



                                                                                

                                                


                                                                
                                                                       




                                                              






                                                                                                    

 
                                                                                                                                                               










                                                                                                                                                        
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>

_flavor=vanilla
pkgname=linux-${_flavor}
pkgver=4.19.117
case $pkgver in
	*.*.*)	_kernver=${pkgver%.*};;
	*.*) _kernver=$pkgver;;
esac
pkgrel=0
pkgdesc="Linux vanilla kernel"
url="http://kernel.org"
depends="mkinitfs"
_depends_dev="perl gmp-dev elfutils-dev bash flex bison"
makedepends="$_depends_dev sed installkernel bc linux-headers linux-firmware openssl-dev"
options="!strip"
_config=${config:-config-vanilla.${CARCH}}
install=
source="https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/linux-$_kernver.tar.xz
	config-vanilla.aarch64
	config-vanilla.armhf
	config-vanilla.armv7
	config-vanilla.x86
	config-vanilla.x86_64
	config-vanilla.ppc64le
	config-vanilla.s390x

	config-virt.aarch64
	config-virt.x86
	config-virt.x86_64
	"
subpackages="$pkgname-dev:_dev:$CBUILD_ARCH"
_flavors=
for _i in $source; do
	case $_i in
	config-*.$CARCH)
		_f=${_i%.$CARCH}
		_f=${_f#config-}
		_flavors="$_flavors ${_f}"
		if [ "linux-$_f" != "$pkgname" ]; then
			subpackages="$subpackages linux-${_f}::$CBUILD_ARCH linux-${_f}-dev:_dev:$CBUILD_ARCH"
		fi
		;;
	esac
done

if [ "${pkgver%.0}" = "$pkgver" ]; then
	source="$source
	https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/patch-$pkgver.xz"
fi
arch="all"
license="GPL-2.0"

_carch=${CARCH}
case "$_carch" in
aarch64*) _carch="arm64" ;;
arm*) _carch="arm" ;;
mips*) _carch="mips" ;;
ppc*) _carch="powerpc" ;;
s390*) _carch="s390" ;;
esac

HOSTCC="${CC:-gcc}"
HOSTCC="${HOSTCC#${CROSS_COMPILE}}"

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

	# remove localversion from patch if any
	rm -f localversion*
	oldconfig
}

oldconfig() {
	for i in $_flavors; do
		local _config=config-$i.${CARCH}
		local _builddir="$srcdir"/build-$i.$CARCH
		mkdir -p "$_builddir"
		echo "-$pkgrel-$i" > "$_builddir"/localversion-alpine \
			|| return 1

		cp "$srcdir"/$_config "$_builddir"/.config
		make -C "$srcdir"/linux-$_kernver \
			O="$_builddir" \
			ARCH="$_carch" HOSTCC="$HOSTCC" \
			listnewconfig oldconfig
	done
}

build() {
	unset LDFLAGS
	for i in $_flavors; do
		cd "$srcdir"/build-$i.$CARCH
		make ARCH="$_carch" CC="${CC:-gcc}" \
			KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-Alpine"
	done
}

_package() {
	local _buildflavor="$1" _outdir="$2"
	local _abi_release=${pkgver}-${pkgrel}-${_buildflavor}

	cd "$srcdir"/build-$_buildflavor.$CARCH

	mkdir -p "$_outdir"/boot "$_outdir"/lib/modules

	local _install
	case "$CARCH" in
	arm*)
		local _dtbdir="$_outdir"/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 $_install \
		ARCH="$_carch" \
		INSTALL_MOD_PATH="$_outdir" \
		INSTALL_PATH="$_outdir"/boot \
		|| return 1

	rm -f "$_outdir"/lib/modules/${_abi_release}/build \
		"$_outdir"/lib/modules/${_abi_release}/source
	rm -rf "$_outdir"/lib/firmware

	install -D include/config/kernel.release \
		"$_outdir"/usr/share/kernel/$_buildflavor/kernel.release
}

# main flavor installs in $pkgdir
package() {
	depends="$depends linux-firmware-any"

	_package vanilla "$pkgdir"
}

# subflavors install in $subpkgdir
virt() {
	_package virt "$subpkgdir"
}

_dev() {
	local _flavor=$(echo $subpkgname | sed -E 's/(^linux-|-dev$)//g')
	local _abi_release=${pkgver}-${pkgrel}-$_flavor
	# 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 $_flavor kernel"
	depends="$_depends_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-$_flavor.${CARCH} "$dir"/.config
	echo "-$pkgrel-$_flavor" > "$dir"/localversion-alpine \
		|| return 1
	make -j1 -C "$srcdir"/linux-$_kernver O="$dir" ARCH="$_carch" HOSTCC="$HOSTCC" \
		silentoldconfig prepare modules_prepare scripts

	# remove the stuff that points 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/ubuntu/ubuntu-zesty.git/tree/debian/rules.d/3-binary-indep.mk
	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' \) \
		-print | cpio -pdm "$dir" || return 1

	cp -a scripts include "$dir" || return 1
	find $(find arch -name include -type d -print) -type f \
		| cpio -pdm "$dir"

	install -Dm644 "$srcdir"/build-$_flavor.$CARCH/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

	# FIXME: For unknown reasons the permissions of those files becomes
	#        root read-only. work-around til we figured out why.
	chmod 644 "$subpkgdir"/usr/src/linux-headers-*-vanilla/arch/*/include/generated/uapi/asm/* \
		"$subpkgdir"/usr/src/linux-headers-*-vanilla/.missing-syscalls.d \
		|| :

}

sha512sums="ab67cc746b375a8b135e8b23e35e1d6787930d19b3c26b2679787d62951cbdbc3bb66f8ededeb9b890e5008b2459397f9018f1a6772fdef67780b06a4cb9f6f4  linux-4.19.tar.xz
a5c79d13d901d317c8030b3b6f1c785d0bcdd826485aa7b6c3ceee25b70ccf3a0e0100cbd2dc43889c397d3dfc7ceed13032c624570adc8ca7bf3181dbbb303e  config-vanilla.aarch64
c064b9aa4e59c25f82465947bd0aa89d47ef610b34205bab95e34da2b4b5750ac6fe1a51af818ef9a0cf493dc3229ac99d298c3dc721c357c82f2d614fc9c5ea  config-vanilla.armhf
c064b9aa4e59c25f82465947bd0aa89d47ef610b34205bab95e34da2b4b5750ac6fe1a51af818ef9a0cf493dc3229ac99d298c3dc721c357c82f2d614fc9c5ea  config-vanilla.armv7
5ee58c0a730047561a1a0a4b2d18e21e8f60d775c8e787073ce0fccf34e3f44e858f2d71125ffb20ddc774abad2435c802d75396e037168dfe79b73f21e7f3e2  config-vanilla.x86
13763b85a345cdd6bc0788fc734a73b7b1621d116933d4acd204d107a77eab65c2c8733fd8cd73b6f1ddd67d7297dd91e387c798d54efe84930050bc4a8e9b7e  config-vanilla.x86_64
cc19fbf75356d367033876fedeab1cd29b2e7522706ea61fd9a02386cd6a8456d1b026fd5421817a6fa7b7032e72573e520cc6a182e023be3785c5f6f3df7999  config-vanilla.ppc64le
6f297887fe0354887d4138abdb0f637f55ccd3eaab5a65f1ad0aad6c6bd381ef1c5a99bd91e8822952e550728bf2255a292ccab6ab694a0a08ae443f99e123ed  config-vanilla.s390x
02a50bca56eb7223814401813509e3ea26cceb2eed0e95789a14137cab9d98bdaddcf4af60c0888e2be820f11d5a685ad497c1a151e7b890177f656b7a205ba3  config-virt.aarch64
8501dce42c4e3797aacfa11af382f514597ae9f2914b54a24584ae894eddf2615031b2972b99c771ca49315f147c237ed1ec99a8e954dd31733559fa6a9df01c  config-virt.x86
a62fea4fbacc5b3cb67807b7624bfc8690864c0fa0f1676d705be62da7388c9a0ba00490e57a3d5a061ff263e0f4435a926e9744d3cef3a8c181327e8177d849  config-virt.x86_64
e67afc26a3f69910952d05fc0424e8431b0ee7dbddb2af81e60b9f31b204daf4c03a397608da4a829bec8ae0fcf622573ad76decb85c577bcf7dba39160614ce  patch-4.19.117.xz"