public inbox for gentoo-catalyst@lists.gentoo.org
 help / color / mirror / Atom feed
From: Matt Turner <mattst88@gentoo.org>
To: gentoo-catalyst@lists.gentoo.org
Cc: Matt Turner <mattst88@gentoo.org>
Subject: [gentoo-catalyst] [PATCH 35/37] targets: Reimplement kerncache support
Date: Tue, 20 Oct 2020 17:23:42 -0700	[thread overview]
Message-ID: <20201021002344.378131-35-mattst88@gentoo.org> (raw)
In-Reply-To: <20201021002344.378131-1-mattst88@gentoo.org>

I cannot see how the code added in commit fed3b45b could have possibly
worked, and in practice it did not.

An earlier commit (beb92087) deleted most or all of the uses of the
*_MATCH variables but left the code that set them in place.

Fixes: beb92087 ("Added patches from Joshua Kinard <kumba@gentoo.org>")
Fixes: fed3b45b ("Fix and improve kernel build when kerncache is enabled.")
Signed-off-by: Matt Turner <mattst88@gentoo.org>
---
 targets/support/kmerge.sh | 147 ++++++++++++--------------------------
 1 file changed, 47 insertions(+), 100 deletions(-)

diff --git a/targets/support/kmerge.sh b/targets/support/kmerge.sh
index 6a0137d7..972feb99 100755
--- a/targets/support/kmerge.sh
+++ b/targets/support/kmerge.sh
@@ -85,11 +85,6 @@ genkernel_compile() {
 	else
 		genkernel "${GK_ARGS[@]}" || exit 1
 	fi
-	if [ -n "${clst_KERNCACHE}" -a -e /var/tmp/${kname}.config ]
-	then
-		md5sum /var/tmp/${kname}.config | awk '{print $1}' > \
-			/tmp/kerncache/${kname}/${kname}-${clst_version_stamp}.CONFIG
-	fi
 }
 
 [ -n "${clst_ENVSCRIPT}" ] && source /tmp/envscript
@@ -106,117 +101,69 @@ eval eval kernel_gk_kernargs=( \$clst_boot_kernel_${kname}_gk_kernargs )
 eval "ksource=\$clst_boot_kernel_${kname}_sources"
 [[ -z ${ksource} ]] && ksource="sys-kernel/gentoo-sources"
 
-# Check if we have a match in kerncach
-
-if [ -n "${clst_KERNCACHE}" ]
-then
-	USE_MATCH=0
-	if [ -e /tmp/kerncache/${kname}/${kname}-${clst_version_stamp}.USE ]
-	then
-		STR1=$(for i in `cat /tmp/kerncache/${kname}/${kname}-${clst_version_stamp}.USE`; do echo $i; done|sort)
-		STR2=$(for i in ${kernel_use}; do echo $i; done|sort)
-		if [ "${STR1}" = "${STR2}" ]
-		then
-			USE_MATCH=1
-		else
-			[ -e /tmp/kerncache/${kname}/usr/src/linux/.config ] && \
-				rm /tmp/kerncache/${kname}/usr/src/linux/.config
-		fi
-	fi
-
-	EXTRAVERSION_MATCH=0
-	if [ -e /tmp/kerncache/${kname}/${kname}-${clst_version_stamp}.EXTRAVERSION ]
-	then
-		STR1=`cat /tmp/kerncache/${kname}/${kname}-${clst_version_stamp}.EXTRAVERSION`
-		STR2=${clst_kextraversion}
-		if [ "${STR1}" = "${STR2}" ]
-		then
-			EXTRAVERSION_MATCH=1
-		fi
-	fi
-
-	CONFIG_MATCH=0
-	if [ -e /tmp/kerncache/${kname}/${kname}-${clst_version_stamp}.CONFIG ]
-	then
-		if [ ! -e /var/tmp/${kname}.config ]
-		then
-			CONFIG_MATCH=1
-		else
-			STR1=`cat /tmp/kerncache/${kname}/${kname}-${clst_version_stamp}.CONFIG`
-			STR2=`md5sum /var/tmp/${kname}.config|awk '{print $1}'`
-			if [ "${STR1}" = "${STR2}" ]
-			then
-				CONFIG_MATCH=1
-			fi
-		fi
-	fi
+kernel_version=$(portageq best_visible / "${ksource}")
 
-	# install dependencies of kernel sources ahead of time in case
-	# package.provided generated below causes them not to be (re)installed
-	run_merge --onlydeps "${ksource}"
+if [[ -n ${clst_KERNCACHE} ]]; then
+	mkdir -p "/tmp/kerncache/${kname}"
+	pushd "/tmp/kerncache/${kname}" >/dev/null
 
-	# Create the kerncache directory if it doesn't exists
-	mkdir -p /tmp/kerncache/${kname}
+	echo "${kernel_use}" > /tmp/USE
+	echo "${kernel_version}" > /tmp/VERSION
+	echo "${clst_kextraversion}" > /tmp/EXTRAVERSION
 
-	if [ -e /tmp/kerncache/${kname}/${kname}-${clst_version_stamp}.KERNELVERSION ]
-	then
-		KERNELVERSION=$(</tmp/kerncache/${kname}/${kname}-${clst_version_stamp}.KERNELVERSION)
-		mkdir -p ${clst_port_conf}/profile
-		echo "${KERNELVERSION}" > ${clst_port_conf}/profile/package.provided
-	else
-		rm -f ${clst_port_conf}/profile/package.provided
+	if cmp -s {/tmp/,}USE && \
+	   cmp -s {/tmp/,}VERSION && \
+	   cmp -s {/tmp/,}EXTRAVERSION && \
+	   cmp -s /var/tmp/${kname}.config CONFIG; then
+		cached_kernel_found="true"
 	fi
 
-	# Don't use package.provided if there's a pending up/downgrade
-	if [[ "$(portageq best_visible / ${ksource})" == "${KERNELVERSION}" ]]; then
-		echo "No pending updates for ${ksource}"
-	else
-		echo "Pending updates for ${ksource}, removing package.provided"
-		rm -f ${clst_port_conf}/profile/package.provided
-	fi
+	rm -f /tmp/{USE,VERSION,EXTRAVERSION}
+	popd >/dev/null
+fi
 
+if [[ ! ${cached_kernel_found} ]]; then
 	USE=symlink run_merge --update "${ksource}"
+fi
 
+if [[ -n ${clst_KERNCACHE} ]]; then
 	SOURCESDIR="/tmp/kerncache/${kname}/sources"
-	if [ -L /usr/src/linux ]
-	then
-		# A kernel was merged, move it to $SOURCESDIR
-		[ -e ${SOURCESDIR} ] && rm -Rf ${SOURCESDIR}
-
-		KERNELVERSION=`portageq best_visible / "${ksource}"`
-		echo "${KERNELVERSION}" > /tmp/kerncache/${kname}/${kname}-${clst_version_stamp}.KERNELVERSION
-
+	if [[ ! ${cached_kernel_found} ]]; then
 		echo "Moving kernel sources to ${SOURCESDIR} ..."
-		mv `readlink -f /usr/src/linux` ${SOURCESDIR}
-	fi
-	ln -sf ${SOURCESDIR} /usr/src/linux
 
-	# If catalyst has set to a empty string, extraversion wasn't specified so we
-	# skip this part
-	if [ "${EXTRAVERSION_MATCH}" = "0" ]
-	then
-		if [ ! "${clst_kextraversion}" = "" ]
-		then
-			echo "Setting extraversion to ${clst_kextraversion}"
-			sed -i -e "s:EXTRAVERSION \(=.*\):EXTRAVERSION \1-${clst_kextraversion}:" /usr/src/linux/Makefile
-			echo ${clst_kextraversion} > /tmp/kerncache/${kname}/${kname}-${clst_version_stamp}.EXTRAVERSION
-		else
-			touch /tmp/kerncache/${kname}/${kname}-${clst_version_stamp}.EXTRAVERSION
-		fi
+		rm -rf "${SOURCESDIR}"
+		mv $(readlink -f /usr/src/linux) "${SOURCESDIR}"
 	fi
-else
-	USE=symlink run_merge --update "${ksource}"
+	ln -snf "${SOURCESDIR}" /usr/src/linux
+fi
 
-	if [ ! "${clst_kextraversion}" = "" ]
-	then
-		echo "Setting extraversion to ${clst_kextraversion}"
-		sed -i -e "s:EXTRAVERSION \(=.*\):EXTRAVERSION \1-${clst_kextraversion}:" /usr/src/linux/Makefile
+if [[ -n ${clst_kextraversion} ]]; then
+	echo "Setting EXTRAVERSION to ${clst_kextraversion}"
+
+	if [[ -e /usr/src/linux/Makefile.bak ]]; then
+		cp /usr/src/linux/Makefile{.bak,}
+	else
+		cp /usr/src/linux/Makefile{,.bak}
 	fi
+	sed -i -e "s:EXTRAVERSION \(=.*\):EXTRAVERSION \1-${clst_kextraversion}:" \
+		/usr/src/linux/Makefile
 fi
 
 genkernel_compile
 
-if [ -n "${clst_KERNCACHE}" ]
-then
-	echo ${kernel_use} > /tmp/kerncache/${kname}/${kname}-${clst_version_stamp}.USE
+# Write out CONFIG, USE, VERSION, and EXTRAVERSION files
+if [[ -n ${clst_KERNCACHE} && ! ${cached_kernel_found} ]]; then
+	pushd "/tmp/kerncache/${kname}" >/dev/null
+
+	cp /var/tmp/${kname}.config CONFIG
+	echo "${kernel_use}" > USE
+	echo "${kernel_version}" > VERSION
+	echo "${clst_kextraversion}" > EXTRAVERSION
+
+	popd >/dev/null
+fi
+
+if [[ ! ${cached_kernel_found} ]]; then
+	run_merge -C "${ksource}"
+	rm /usr/src/linux
 fi
-- 
2.26.2



  parent reply	other threads:[~2020-10-21  0:24 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-21  0:23 [gentoo-catalyst] [PATCH 01/37] catalyst: Use early return to unindent code Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 02/37] catalyst: Drop outdated comment Matt Turner
2020-10-21  3:01   ` Brian Dolbec
2020-10-21  3:31     ` Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 03/37] catalyst: Fix obvious logic error Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 04/37] catalyst: Add and use sanitize_name() function Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 05/37] catalyst: Sanitize variable kernel name before giving it to bash Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 06/37] targets: Fix filtered_kname Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 07/37] targets: Consolidate evals using filtered_kname Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 08/37] targets: Remove filtered_kname Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 09/37] targets: Remove useless sleep 0 Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 10/37] targets: Remove trivial build_kernel() function Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 11/37] targets: Remove some disabled debugging messages Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 12/37] targets: Remove some unnecessary exports Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 13/37] targets: Remove more clst_ prefixes Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 14/37] targets: Remove some comments whose meanings have been lost Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 15/37] targets: Use pkgcache for kernel sources Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 16/37] targets: Remove a bunch of stray newlines Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 17/37] targets: Delete some more dead code Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 18/37] targets: Remove bizarre make_destpath() call Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 19/37] targets: Remove unnecessary unset USE Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 20/37] targets: Remove wrong make.conf munging Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 21/37] targets: Use USE=symlink when emerging kernel sources Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 22/37] targets: Emerge kernel sources with --update Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 23/37] targets: Default to sys-kernel/gentoo-sources directly Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 24/37] targets: Rewrite hppa pre-kmerge check Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 25/37] targets: Use full 'sys-kernel/genkernel' package name Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 26/37] targets: Explicitly set RUN_DEFAULT_FUNCS="yes" Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 27/37] targets: Inline run_default_funcs() function Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 28/37] targets: Move create_handbook_icon() to its use Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 29/37] targets: Drop warning about no cdtar Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 30/37] targets: Remove post-kmerge Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 31/37] targets: Remove unnecessary unset PACKAGES Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 32/37] targets: Delete never-used packages.txt code Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 33/37] targets: Remove kernelpkgs.txt generation Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 34/37] targets: Merge setup_gk_args() and genkernel_compile() Matt Turner
2020-10-21  0:23 ` Matt Turner [this message]
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 36/37] targets: Remove unnecessary CONFIG_PROTECT assignment Matt Turner
2020-10-21  0:23 ` [gentoo-catalyst] [PATCH 37/37] targets: Use double-brackets in kmerge.sh Matt Turner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201021002344.378131-35-mattst88@gentoo.org \
    --to=mattst88@gentoo.org \
    --cc=gentoo-catalyst@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox