Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) #!/bin/sh
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) # SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4) # This script generates an archive consisting of kernel headers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5) # for CONFIG_IKHEADERS.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6) set -e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) sfile="$(readlink -f "$0")"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) outdir="$(pwd)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) tarfile=$1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) cpio_dir=$outdir/$tarfile.tmp
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) dir_list="
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) include/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) arch/$SRCARCH/include/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) # Support incremental builds by skipping archive generation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) # if timestamps of files being archived are not changed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) # This block is useful for debugging the incremental builds.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) # Uncomment it for debugging.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) # if [ ! -f /tmp/iter ]; then iter=1; echo 1 > /tmp/iter;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) # else iter=$(($(cat /tmp/iter) + 1)); echo $iter > /tmp/iter; fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) # find $all_dirs -name "*.h" | xargs ls -l > /tmp/ls-$iter
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) all_dirs=
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) if [ "$building_out_of_srctree" ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) 	for d in $dir_list; do
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) 		all_dirs="$all_dirs $srctree/$d"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 	done
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) all_dirs="$all_dirs $dir_list"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) # include/generated/compile.h is ignored because it is touched even when none
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) # of the source files changed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) # When Kconfig regenerates include/generated/autoconf.h, its timestamp is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) # updated, but the contents might be still the same. When any CONFIG option is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) # changed, Kconfig touches the corresponding timestamp file include/config/*.h.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) # Hence, the md5sum detects the configuration change anyway. We do not need to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) # check include/generated/autoconf.h explicitly.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) # Ignore them for md5 calculation to avoid pointless regeneration.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) headers_md5="$(find $all_dirs -name "*.h"			|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 		grep -v "include/generated/compile.h"	|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) 		grep -v "include/generated/autoconf.h"	|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) 		xargs ls -l | md5sum | cut -d ' ' -f1)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) # Any changes to this script will also cause a rebuild of the archive.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) this_file_md5="$(ls -l $sfile | md5sum | cut -d ' ' -f1)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) if [ -f $tarfile ]; then tarfile_md5="$(md5sum $tarfile | cut -d ' ' -f1)"; fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) if [ -f kernel/kheaders.md5 ] &&
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) 	[ "$(head -n 1 kernel/kheaders.md5)" = "$headers_md5" ] &&
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) 	[ "$(head -n 2 kernel/kheaders.md5 | tail -n 1)" = "$this_file_md5" ] &&
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) 	[ "$(tail -n 1 kernel/kheaders.md5)" = "$tarfile_md5" ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) 		exit
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) if [ "${quiet}" != "silent_" ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60)        echo "  GEN     $tarfile"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) rm -rf $cpio_dir
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) mkdir $cpio_dir
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) if [ "$building_out_of_srctree" ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) 	(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) 		cd $srctree
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) 		for f in $dir_list
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) 			do find "$f" -name "*.h";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) 		done | cpio --quiet -pd $cpio_dir
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) 	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) # The second CPIO can complain if files already exist which can happen with out
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) # of tree builds having stale headers in srctree. Just silence CPIO for now.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) for f in $dir_list;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) 	do find "$f" -name "*.h";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) done | cpio --quiet -pd $cpio_dir >/dev/null 2>&1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) # Remove comments except SDPX lines
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) find $cpio_dir -type f -print0 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) 	xargs -0 -P8 -n1 perl -pi -e 'BEGIN {undef $/;}; s/\/\*((?!SPDX).)*?\*\///smg;'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) # Create archive and try to normalize metadata for reproducibility.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) # For compatibility with older versions of tar, files are fed to tar
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) # pre-sorted, as --sort=name might not be available.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) find $cpio_dir -printf "./%P\n" | LC_ALL=C sort | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89)     tar "${KBUILD_BUILD_TIMESTAMP:+--mtime=$KBUILD_BUILD_TIMESTAMP}" \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90)     --owner=0 --group=0 --numeric-owner --no-recursion \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91)     -I $XZ -cf $tarfile -C $cpio_dir/ -T - > /dev/null
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) echo $headers_md5 > kernel/kheaders.md5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) echo "$this_file_md5" >> kernel/kheaders.md5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) echo "$(md5sum $tarfile | cut -d ' ' -f1)" >> kernel/kheaders.md5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) rm -rf $cpio_dir