Forum | Documentation | Website | Blog

Skip to content
Snippets Groups Projects
patch.sh 13.6 KiB
Newer Older
Robert Nelson's avatar
Robert Nelson committed
# Copyright (c) 2009-2019 Robert Nelson <robertcnelson@gmail.com>
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.

# Split out, so build_kernel.sh and build_deb.sh can share..

Robert Nelson's avatar
Robert Nelson committed
shopt -s nullglob

if [ -f ${DIR}/system.sh ] ; then
Robert Nelson's avatar
Robert Nelson committed
	. ${DIR}/system.sh
git_bin=$(which git)
#git hard requirements:
#git: --no-edit
if [ "${RUN_BISECT}" ] ; then
echo "Starting patch.sh"

Robert Nelson's avatar
Robert Nelson committed
git_add () {
	${git_bin} add .
	${git_bin} commit -a -m 'testing patchset'
Robert Nelson's avatar
Robert Nelson committed
start_cleanup () {
Robert Nelson's avatar
Robert Nelson committed
cleanup () {
Robert Nelson's avatar
Robert Nelson committed
	if [ "${number}" ] ; then
			${git_bin} format-patch -${number} -o ${DIR}/patches/
Robert Nelson's avatar
Robert Nelson committed
			if [ ! -d ${DIR}/patches/${wdir}/ ] ; then
				mkdir -p ${DIR}/patches/${wdir}/
			fi
			${git_bin} format-patch -${number} -o ${DIR}/patches/${wdir}/
Robert Nelson's avatar
Robert Nelson committed
dir () {
	wdir="$1"
	if [ -d "${DIR}/patches/$wdir" ]; then
		echo "dir: $wdir"

		if [ "x${regenerate}" = "xenable" ] ; then
			start_cleanup
		fi

		number=
		for p in "${DIR}/patches/$wdir/"*.patch; do
			${git} "$p"
			number=$(( $number + 1 ))
		done

		if [ "x${regenerate}" = "xenable" ] ; then
			cleanup
		fi
	fi
	unset wdir
}

Robert Nelson's avatar
Robert Nelson committed
cherrypick () {
	if [ ! -d ../patches/${cherrypick_dir} ] ; then
		mkdir -p ../patches/${cherrypick_dir}
	${git_bin} format-patch -1 ${SHA} --start-number ${num} -o ../patches/${cherrypick_dir}
external_git () {
	git_tag=""
	echo "pulling: ${git_tag}"
	${git_bin} pull --no-edit ${git_patchset} ${git_tag}
Robert Nelson's avatar
Robert Nelson committed
aufs_fail () {
Robert Nelson's avatar
Robert Nelson committed
	echo "aufs failed"
Robert Nelson's avatar
Robert Nelson committed
aufs () {
	echo "dir: aufs"
	aufs_prefix="aufs5-"
Robert Nelson's avatar
Robert Nelson committed
	#regenerate="enable"
	if [ "x${regenerate}" = "xenable" ] ; then
Robert Nelson's avatar
Robert Nelson committed
		wget https://raw.githubusercontent.com/sfjro/${aufs_prefix}standalone/aufs${KERNEL_REL}/${aufs_prefix}kbuild.patch
		patch -p1 < ${aufs_prefix}kbuild.patch || aufs_fail
		rm -rf ${aufs_prefix}kbuild.patch
Robert Nelson's avatar
Robert Nelson committed
		${git_bin} commit -a -m 'merge: aufs-kbuild' -s
Robert Nelson's avatar
Robert Nelson committed
		wget https://raw.githubusercontent.com/sfjro/${aufs_prefix}standalone/aufs${KERNEL_REL}/${aufs_prefix}base.patch
		patch -p1 < ${aufs_prefix}base.patch || aufs_fail
		rm -rf ${aufs_prefix}base.patch
Robert Nelson's avatar
Robert Nelson committed
		${git_bin} commit -a -m 'merge: aufs-base' -s
Robert Nelson's avatar
Robert Nelson committed
		wget https://raw.githubusercontent.com/sfjro/${aufs_prefix}standalone/aufs${KERNEL_REL}/${aufs_prefix}mmap.patch
		patch -p1 < ${aufs_prefix}mmap.patch || aufs_fail
		rm -rf ${aufs_prefix}mmap.patch
Robert Nelson's avatar
Robert Nelson committed
		${git_bin} commit -a -m 'merge: aufs-mmap' -s
Robert Nelson's avatar
Robert Nelson committed
		wget https://raw.githubusercontent.com/sfjro/${aufs_prefix}standalone/aufs${KERNEL_REL}/${aufs_prefix}standalone.patch
		patch -p1 < ${aufs_prefix}standalone.patch || aufs_fail
		rm -rf ${aufs_prefix}standalone.patch
Robert Nelson's avatar
Robert Nelson committed
		${git_bin} commit -a -m 'merge: aufs-standalone' -s
Robert Nelson's avatar
Robert Nelson committed
		${git_bin} format-patch -4 -o ../patches/aufs/
Robert Nelson's avatar
Robert Nelson committed
		if [ ! -d ./${aufs_prefix}standalone ] ; then
			${git_bin} clone -b aufs${KERNEL_REL} https://github.com/sfjro/${aufs_prefix}standalone --depth=1
Robert Nelson's avatar
Robert Nelson committed
		else
Robert Nelson's avatar
Robert Nelson committed
			rm -rf ./${aufs_prefix}standalone || true
			${git_bin} clone -b aufs${KERNEL_REL} https://github.com/sfjro/${aufs_prefix}standalone --depth=1
Robert Nelson's avatar
Robert Nelson committed
		cp -v ../${aufs_prefix}standalone/Documentation/ABI/testing/*aufs ./Documentation/ABI/testing/
		mkdir -p ./Documentation/filesystems/aufs/
Robert Nelson's avatar
Robert Nelson committed
		cp -rv ../${aufs_prefix}standalone/Documentation/filesystems/aufs/* ./Documentation/filesystems/aufs/
Robert Nelson's avatar
Robert Nelson committed
		cp -v ../${aufs_prefix}standalone/fs/aufs/* ./fs/aufs/
		cp -v ../${aufs_prefix}standalone/include/uapi/linux/aufs_type.h ./include/uapi/linux/
Robert Nelson's avatar
Robert Nelson committed
		${git_bin} commit -a -m 'merge: aufs' -s
		${git_bin} format-patch -5 -o ../patches/aufs/
Robert Nelson's avatar
Robert Nelson committed
		rm -rf ../${aufs_prefix}standalone/ || true
Robert Nelson's avatar
Robert Nelson committed
		${git_bin} reset --hard HEAD~5
Robert Nelson's avatar
Robert Nelson committed
		${git} "${DIR}/patches/aufs/0001-merge-aufs-kbuild.patch"
		${git} "${DIR}/patches/aufs/0002-merge-aufs-base.patch"
		${git} "${DIR}/patches/aufs/0003-merge-aufs-mmap.patch"
		${git} "${DIR}/patches/aufs/0004-merge-aufs-standalone.patch"
		${git} "${DIR}/patches/aufs/0005-merge-aufs.patch"
Robert Nelson's avatar
Robert Nelson committed
		wdir="aufs"
Robert Nelson's avatar
Robert Nelson committed
		number=5
		cleanup
Robert Nelson's avatar
Robert Nelson committed
	${git} "${DIR}/patches/aufs/0001-merge-aufs-kbuild.patch"
	${git} "${DIR}/patches/aufs/0002-merge-aufs-base.patch"
	${git} "${DIR}/patches/aufs/0003-merge-aufs-mmap.patch"
	${git} "${DIR}/patches/aufs/0004-merge-aufs-standalone.patch"
	${git} "${DIR}/patches/aufs/0005-merge-aufs.patch"
rt_cleanup () {
	echo "rt: needs fixup"
	exit 2
}

rt () {
	echo "dir: rt"
	rt_patch="${KERNEL_REL}${kernel_rt}"
Robert Nelson's avatar
Robert Nelson committed
	#${git_bin} revert --no-edit xyz
	#regenerate="enable"
	if [ "x${regenerate}" = "xenable" ] ; then
		wget -c https://www.kernel.org/pub/linux/kernel/projects/rt/${KERNEL_REL}/patch-${rt_patch}.patch.xz
		xzcat patch-${rt_patch}.patch.xz | patch -p1 || rt_cleanup
		rm -f patch-${rt_patch}.patch.xz
		rm -f localversion-rt
		${git_bin} add .
		${git_bin} commit -a -m 'merge: CONFIG_PREEMPT_RT Patch Set' -s
		${git_bin} format-patch -1 -o ../patches/rt/

		exit 2
	fi

	${git} "${DIR}/patches/rt/0001-merge-CONFIG_PREEMPT_RT-Patch-Set.patch"
}

Robert Nelson's avatar
Robert Nelson committed
wireguard_fail () {
	echo "WireGuard failed"
	exit 2
}

wireguard () {
	echo "dir: WireGuard"
	#regenerate="enable"
	if [ "x${regenerate}" = "xenable" ] ; then
		cd ../
		if [ ! -d ./WireGuard ] ; then
Robert Nelson's avatar
Robert Nelson committed
			${git_bin} clone https://git.zx2c4.com/WireGuard --depth=1
Robert Nelson's avatar
Robert Nelson committed
		else
			rm -rf ./WireGuard || true
Robert Nelson's avatar
Robert Nelson committed
			${git_bin} clone https://git.zx2c4.com/WireGuard --depth=1
Robert Nelson's avatar
Robert Nelson committed
		fi
		cd ./KERNEL/

		../WireGuard/contrib/kernel-tree/create-patch.sh | patch -p1 || wireguard_fail

		${git_bin} add .
		${git_bin} commit -a -m 'merge: WireGuard' -s
		${git_bin} format-patch -1 -o ../patches/WireGuard/

		rm -rf ../WireGuard/ || true

Robert Nelson's avatar
Robert Nelson committed
		${git_bin} reset --hard HEAD^
Robert Nelson's avatar
Robert Nelson committed

		start_cleanup

		${git} "${DIR}/patches/WireGuard/0001-merge-WireGuard.patch"

		wdir="WireGuard"
		number=1
		cleanup
	fi

	${git} "${DIR}/patches/WireGuard/0001-merge-WireGuard.patch"
}

Robert Nelson's avatar
Robert Nelson committed
ti_pm_firmware () {
Robert Nelson's avatar
Robert Nelson committed
	#http://git.ti.com/gitweb/?p=processor-firmware/ti-amx3-cm3-pm-firmware.git;a=shortlog;h=refs/heads/ti-v4.1.y-next
Robert Nelson's avatar
Robert Nelson committed
	echo "dir: drivers/ti/firmware"
	#regenerate="enable"
	if [ "x${regenerate}" = "xenable" ] ; then

		cd ../
		if [ ! -d ./ti-amx3-cm3-pm-firmware ] ; then
			${git_bin} clone -b ti-v4.1.y-next git://git.ti.com/processor-firmware/ti-amx3-cm3-pm-firmware.git --depth=1
		else
			rm -rf ./ti-amx3-cm3-pm-firmware || true
			${git_bin} clone -b ti-v4.1.y-next git://git.ti.com/processor-firmware/ti-amx3-cm3-pm-firmware.git --depth=1
		fi
		cd ./KERNEL/

		cp -v ../ti-amx3-cm3-pm-firmware/bin/am* ./firmware/

		${git_bin} add -f ./firmware/am*
		${git_bin} commit -a -m 'add am33x firmware' -s
		${git_bin} format-patch -1 -o ../patches/drivers/ti/firmware/

		rm -rf ../ti-amx3-cm3-pm-firmware/ || true

		${git_bin} reset --hard HEAD^

		start_cleanup

		${git} "${DIR}/patches/drivers/ti/firmware/0001-add-am33x-firmware.patch"

		wdir="drivers/ti/firmware"
		number=1
		cleanup
	fi

	${git} "${DIR}/patches/drivers/ti/firmware/0001-add-am33x-firmware.patch"
}

local_patch () {
	echo "dir: dir"
	${git} "${DIR}/patches/dir/0001-patch.patch"
}

Robert Nelson's avatar
Robert Nelson committed
#aufs
Robert Nelson's avatar
Robert Nelson committed
#rt
Robert Nelson's avatar
Robert Nelson committed
wireguard
Robert Nelson's avatar
Robert Nelson committed
ti_pm_firmware
pre_backports () {
	echo "dir: backports/${subsystem}"

	cd ~/linux-src/
	${git_bin} pull --no-edit https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git master
	${git_bin} pull --no-edit https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git master --tags
	${git_bin} pull --no-edit https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master --tags
	if [ ! "x${backport_tag}" = "x" ] ; then
		${git_bin} checkout ${backport_tag} -b tmp
	fi
	cd -
}

post_backports () {
	if [ ! "x${backport_tag}" = "x" ] ; then
		cd ~/linux-src/
		${git_bin} checkout master -f ; ${git_bin} branch -D tmp
		cd -
	fi

	${git_bin} add .
	${git_bin} commit -a -m "backports: ${subsystem}: from: linux.git" -s
	if [ ! -d ../patches/backports/${subsystem}/ ] ; then
		mkdir -p ../patches/backports/${subsystem}/
	fi
	${git_bin} format-patch -1 -o ../patches/backports/${subsystem}/
}

patch_backports (){
	echo "dir: backports/${subsystem}"
	${git} "${DIR}/patches/backports/${subsystem}/0001-backports-${subsystem}-from-linux.git.patch"
}

backports () {
Robert Nelson's avatar
Robert Nelson committed
	backport_tag="v4.x-y"
Robert Nelson's avatar
Robert Nelson committed
	subsystem="xyz"
	#regenerate="enable"
	if [ "x${regenerate}" = "xenable" ] ; then
		pre_backports

Robert Nelson's avatar
Robert Nelson committed
		mkdir -p ./x/
		cp -v ~/linux-src/x/* ./x/
Robert Nelson's avatar
Robert Nelson committed
ti_rogerq_pruss () {
	#https://github.com/rogerq/linux/commits/for-v5.1/pruss-2.0
	#regenerate="enable"
	branch="for-v5.1/pruss-2.0"
	git_depth="30"
	patch_depth="25"
	if [ "x${regenerate}" = "xenable" ] ; then

		cd ../
		if [ ! -d ./rogerq_pruss/ ] ; then
			${git_bin} clone -b ${branch} https://github.com/rogerq/linux --depth=${git_depth} ./rogerq_pruss/
		else
			rm -rf ./rogerq_pruss || true
			${git_bin} clone -b ${branch} https://github.com/rogerq/linux --depth=${git_depth} ./rogerq_pruss/
		fi

		cd ./rogerq_pruss/

		${git_bin} format-patch -${patch_depth} -o ../patches/drivers/ti/rogerq_pruss

		cd ../KERNEL/

		rm -rf ../rogerq_pruss/ || true

		dir 'drivers/ti/rogerq_pruss'
		exit 2
	fi

	#regenerate="enable"
	if [ "x${regenerate}" = "xenable" ] ; then
		start_cleanup
	fi

	dir 'drivers/ti/rogerq_pruss'

	if [ "x${regenerate}" = "xenable" ] ; then
		wdir="drivers/ti/rogerq_pruss"
		number=25
		cleanup
	fi
}

Robert Nelson's avatar
Robert Nelson committed
reverts () {
	echo "dir: reverts"
	#regenerate="enable"
	if [ "x${regenerate}" = "xenable" ] ; then
		start_cleanup
	fi

Robert Nelson's avatar
Robert Nelson committed
	## notes
	##git revert --no-edit xyz -s
Robert Nelson's avatar
Robert Nelson committed
	#${git} "${DIR}/patches/reverts/0001-Revert-xyz.patch"
Robert Nelson's avatar
Robert Nelson committed
	if [ "x${regenerate}" = "xenable" ] ; then
Robert Nelson's avatar
Robert Nelson committed
		wdir="reverts"
Robert Nelson's avatar
Robert Nelson committed
		cleanup
	fi
}

drivers () {
Robert Nelson's avatar
Robert Nelson committed
	dir 'drivers/ar1021_i2c'
Robert Nelson's avatar
Robert Nelson committed
	dir 'drivers/pwm'
Robert Nelson's avatar
Robert Nelson committed
	dir 'drivers/spi'
Robert Nelson's avatar
Robert Nelson committed
	dir 'drivers/ssd1306'
Robert Nelson's avatar
Robert Nelson committed
	dir 'drivers/tps65217'
Robert Nelson's avatar
Robert Nelson committed
	dir 'drivers/wiznet'
Robert Nelson's avatar
Robert Nelson committed
	dir 'drivers/ti/overlays'
Robert Nelson's avatar
Robert Nelson committed
	dir 'drivers/ti/cpsw'
Robert Nelson's avatar
Robert Nelson committed
	dir 'drivers/ti/etnaviv'
Robert Nelson's avatar
Robert Nelson committed
	dir 'drivers/ti/eqep'
	dir 'drivers/ti/rpmsg'
Robert Nelson's avatar
Robert Nelson committed
	dir 'drivers/ti/serial'
Robert Nelson's avatar
Robert Nelson committed
	dir 'drivers/ti/spi'
Robert Nelson's avatar
Robert Nelson committed
	dir 'drivers/ti/tsc'
Robert Nelson's avatar
Robert Nelson committed
	dir 'drivers/ti/gpio'
Robert Nelson's avatar
Robert Nelson committed
}
Robert Nelson's avatar
Robert Nelson committed
soc () {
Robert Nelson's avatar
Robert Nelson committed
#	dir 'soc/imx/udoo'
#	dir 'soc/imx/wandboard'
Robert Nelson's avatar
Robert Nelson committed
#	dir 'soc/imx/imx6'
Robert Nelson's avatar
Robert Nelson committed
#	dir 'soc/imx/imx7'
Robert Nelson's avatar
Robert Nelson committed

	dir 'soc/ti/omap3'
	dir 'soc/ti/omap4'
	dir 'soc/ti/am335x'

	dir 'soc/ti/blue'
Robert Nelson's avatar
Robert Nelson committed
	dir 'soc/ti/abbbi'
Robert Nelson's avatar
Robert Nelson committed
	dir 'soc/ti/pocketbeagle'
Robert Nelson's avatar
Robert Nelson committed
	dir 'soc/ti/beaglebone_capes'
	dir 'soc/ti/uboot'
Robert Nelson's avatar
Robert Nelson committed
}
Robert Nelson's avatar
Robert Nelson committed
dtb_makefile_append () {
	sed -i -e 's:am335x-boneblack.dtb \\:am335x-boneblack.dtb \\\n\t'$device' \\:g' arch/arm/boot/dts/Makefile
}

beaglebone () {
Robert Nelson's avatar
Robert Nelson committed
	#This has to be last...
	echo "dir: beaglebone/dtbs"
	#regenerate="enable"
	if [ "x${regenerate}" = "xenable" ] ; then
		patch -p1 < "${DIR}/patches/beaglebone/dtbs/0001-sync-am335x-peripheral-pinmux.patch"
		exit 2
	fi

	#regenerate="enable"
	if [ "x${regenerate}" = "xenable" ] ; then
		start_cleanup
	fi

Robert Nelson's avatar
Robert Nelson committed
	${git} "${DIR}/patches/beaglebone/dtbs/0001-sync-am335x-peripheral-pinmux.patch"

	if [ "x${regenerate}" = "xenable" ] ; then
Robert Nelson's avatar
Robert Nelson committed
		number=1
Robert Nelson's avatar
Robert Nelson committed
	####
	#dtb makefile
Robert Nelson's avatar
Robert Nelson committed
	echo "dir: beaglebone/generated"
Robert Nelson's avatar
Robert Nelson committed
	#regenerate="enable"
	if [ "x${regenerate}" = "xenable" ] ; then
Robert Nelson's avatar
Robert Nelson committed
		device="am335x-boneblack-uboot.dtb" ; dtb_makefile_append

Robert Nelson's avatar
Robert Nelson committed
#		device="am335x-boneblack-roboticscape.dtb" ; dtb_makefile_append
#		device="am335x-boneblack-wireless-roboticscape.dtb" ; dtb_makefile_append
		device="am335x-abbbi.dtb" ; dtb_makefile_append

		device="am335x-boneblack-wl1835mod.dtb" ; dtb_makefile_append
		device="am335x-boneblack-bbbmini.dtb" ; dtb_makefile_append
		device="am335x-boneblack-bbb-exp-c.dtb" ; dtb_makefile_append
		device="am335x-boneblack-bbb-exp-r.dtb" ; dtb_makefile_append
Robert Nelson's avatar
Robert Nelson committed
		device="am335x-boneblack-audio.dtb" ; dtb_makefile_append
Robert Nelson's avatar
Robert Nelson committed
		device="am335x-bone-uboot-univ.dtb" ; dtb_makefile_append
		device="am335x-boneblack-uboot-univ.dtb" ; dtb_makefile_append
		device="am335x-bonegreen-wireless-uboot-univ.dtb" ; dtb_makefile_append
		git commit -a -m 'auto generated: capes: add dtbs to makefile' -s
Robert Nelson's avatar
Robert Nelson committed
		git format-patch -1 -o ../patches/beaglebone/generated/
Robert Nelson's avatar
Robert Nelson committed
		exit 2
	else
		${git} "${DIR}/patches/beaglebone/generated/0001-auto-generated-capes-add-dtbs-to-makefile.patch"
Robert Nelson's avatar
Robert Nelson committed
#ti_rogerq_pruss
Robert Nelson's avatar
Robert Nelson committed
#reverts
Robert Nelson's avatar
Robert Nelson committed
	#regenerate="enable"
	if [ "x${regenerate}" = "xenable" ] ; then
		cp -v "${DIR}/3rdparty/packaging/Makefile" "${DIR}/KERNEL/scripts/package"
		cp -v "${DIR}/3rdparty/packaging/builddeb" "${DIR}/KERNEL/scripts/package"
Robert Nelson's avatar
Robert Nelson committed
		cp -v "${DIR}/3rdparty/packaging/mkdebian" "${DIR}/KERNEL/scripts/package"
		${git_bin} commit -a -m 'packaging: sync builddeb changes' -s
		${git_bin} format-patch -1 -o "${DIR}/patches/packaging"
	else
		${git} "${DIR}/patches/packaging/0001-packaging-sync-builddeb-changes.patch"
	fi
Robert Nelson's avatar
Robert Nelson committed
packaging