#!/bin/bash -ex

branch="6"
#src="linux-${branch}"
src="linux"

if [ ! -d ${src} ] ; then
	#official sources
	#git clone https://gitlab.com/linux-kernel/stable.git --depth 1 -b linux-${branch}.y ${src}
	git clone https://github.com/torvalds/linux --depth 1
else
	$( cd ${src} && git remote update )
fi

gitlogstamp="$(cd ${src} && git log -n1 --pretty=format:%cd --date=format:%Y%m%d)"
dst="linux-headers-${branch}.${gitlogstamp}"

rm -rf ${dst}
mkdir ${dst}
cp ${src}/Makefile ${dst}/
mkdir ${dst}/include
[ -f ${src}/include/Kbuild ] && cp ${src}/include/Kbuild ${dst}/include/
directories=$(find ${src}/include -mindepth 2 -maxdepth 2 -name 'Kbuild*' -printf %h' ')
if [ -n "${directories}" ] ; then
	cp -r ${directories} ${dst}/include/
fi
cp -r ${src}/include/* ${dst}/include
mkdir ${dst}/scripts
cp -r \
	${src}/scripts/{Makefile,Kbuild}* \
	${src}/scripts/unifdef.c \
	${src}/scripts/*.{sh,pl} \
	${dst}/scripts/
if [[ -f ${src}/scripts/subarch.include ]]; then
	cp ${src}/scripts/subarch.include ${dst}/scripts/
fi
mkdir -p ${dst}/scripts/basic
printf '#!/bin/sh\nexit 0' > ${dst}/scripts/basic/fixdep
chmod a+rx ${dst}/scripts/basic/fixdep
touch ${dst}/scripts/basic/Makefile

mkdir ${dst}/tools
cp -r \
	${src}/tools/include \
	${dst}/tools/

mkdir ${dst}/arch
arches=$(cd ${src}/arch ; ls)
for a in ${arches} ; do
	if [[ -e ${src}/include/asm-${a}/Kbuild ]] || [[ -e ${src}/arch/${a}/include/asm/Kbuild ]] ; then
		mkdir -p ${dst}/arch/${a}
		cp ${src}/arch/${a}/Makefile* ${dst}/arch/${a}/
		cp ${src}/arch/${a}/Kbuild* ${dst}/arch/${a}/ 2>/dev/null || :
		for d in include syscalls tools ; do
			if [[ -e ${src}/arch/${a}/${d} ]] ; then
				cp -r ${src}/arch/${a}/${d} ${dst}/arch/${a}/
			fi
		done
	fi
done

# handle x86 unique headers
if [[ -e ${src}/arch/x86/entry/syscalls ]] ; then
	mkdir -p ${dst}/arch/x86/entry
	cp -r ${src}/arch/x86/entry/syscalls ${dst}/arch/x86/entry/
fi

# linux-5.0 started generating syscall tables
for tblgen in ${src}/arch/*/kernel/syscalls; do
	tblgen_parent=${tblgen#${src}/}
	tblgen_parent=${tblgen_parent%/syscalls}
	# older kernels have none
	if [[ -d ${tblgen} ]]; then
		mkdir -p ${dst}/${tblgen_parent}
		cp -r ${tblgen} ${dst}/${tblgen_parent}
	fi
done

find ${dst}/ -name .gitignore -delete
rm -rf ${dst}/arch/{alpha,arc,arm,c6x,h8300,hexagon,ia64,m68k,microblaze,mips,nds32,nios2,openrisc,parisc,powerpc,riscv,s390,sh,sparc,um,unicore32,xtensa}

XZ_OPT="-e9" tar -cJ -f "${dst}.tar.xz" ${dst}

rm -r ${dst}
ls -lh ${dst}.tar.xz
