From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <gentoo-commits+bounces-1216954-garchives=archives.gentoo.org@lists.gentoo.org>
Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by finch.gentoo.org (Postfix) with ESMTPS id D715913835A
	for <garchives@archives.gentoo.org>; Thu, 22 Oct 2020 18:06:26 +0000 (UTC)
Received: from pigeon.gentoo.org (localhost [127.0.0.1])
	by pigeon.gentoo.org (Postfix) with SMTP id 992ADE0858;
	Thu, 22 Oct 2020 18:06:25 +0000 (UTC)
Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183])
	(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
	(No client certificate requested)
	by pigeon.gentoo.org (Postfix) with ESMTPS id 710DEE0858
	for <gentoo-commits@lists.gentoo.org>; Thu, 22 Oct 2020 18:06:25 +0000 (UTC)
Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52])
	(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
	(No client certificate requested)
	by smtp.gentoo.org (Postfix) with ESMTPS id 4E5D4340A12
	for <gentoo-commits@lists.gentoo.org>; Thu, 22 Oct 2020 18:06:24 +0000 (UTC)
Received: from localhost.localdomain (localhost [IPv6:::1])
	by oystercatcher.gentoo.org (Postfix) with ESMTP id A3FE43BA
	for <gentoo-commits@lists.gentoo.org>; Thu, 22 Oct 2020 18:06:21 +0000 (UTC)
From: "Matt Turner" <mattst88@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Content-Transfer-Encoding: 8bit
Content-type: text/plain; charset=UTF-8
Reply-To: gentoo-dev@lists.gentoo.org, "Matt Turner" <mattst88@gentoo.org>
Message-ID: <1603236395.97060f608afd21e1463115f46cf2fbc3cee73b5c.mattst88@gentoo>
Subject: [gentoo-commits] proj/catalyst:pending/mattst88 commit in: targets/support/
X-VCS-Repository: proj/catalyst
X-VCS-Files: targets/support/kmerge.sh
X-VCS-Directories: targets/support/
X-VCS-Committer: mattst88
X-VCS-Committer-Name: Matt Turner
X-VCS-Revision: 97060f608afd21e1463115f46cf2fbc3cee73b5c
X-VCS-Branch: pending/mattst88
Date: Thu, 22 Oct 2020 18:06:21 +0000 (UTC)
Precedence: bulk
List-Post: <mailto:gentoo-commits@lists.gentoo.org>
List-Help: <mailto:gentoo-commits+help@lists.gentoo.org>
List-Unsubscribe: <mailto:gentoo-commits+unsubscribe@lists.gentoo.org>
List-Subscribe: <mailto:gentoo-commits+subscribe@lists.gentoo.org>
List-Id: Gentoo Linux mail <gentoo-commits.gentoo.org>
X-BeenThere: gentoo-commits@lists.gentoo.org
X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply
X-Archives-Salt: 8460868b-29f6-421d-987e-edf05073be08
X-Archives-Hash: 8f5bc3908c91819e51dfaaf6eadf7cb1

commit:     97060f608afd21e1463115f46cf2fbc3cee73b5c
Author:     Matt Turner <mattst88 <AT> gentoo <DOT> org>
AuthorDate: Tue Oct 20 02:38:39 2020 +0000
Commit:     Matt Turner <mattst88 <AT> gentoo <DOT> org>
CommitDate: Tue Oct 20 23:26:35 2020 +0000
URL:        https://gitweb.gentoo.org/proj/catalyst.git/commit/?id=97060f60

targets: Reimplement kerncache support

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 <AT> gentoo.org>")
Fixes: fed3b45b ("Fix and improve kernel build when kerncache is enabled.")
Signed-off-by: Matt Turner <mattst88 <AT> 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


From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <gentoo-commits+bounces-1216750-garchives=archives.gentoo.org@lists.gentoo.org>
Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by finch.gentoo.org (Postfix) with ESMTPS id C684C138359
	for <garchives@archives.gentoo.org>; Wed, 21 Oct 2020 17:58:58 +0000 (UTC)
Received: from pigeon.gentoo.org (localhost [127.0.0.1])
	by pigeon.gentoo.org (Postfix) with SMTP id 8173AE0998;
	Wed, 21 Oct 2020 17:58:53 +0000 (UTC)
Received: from smtp.gentoo.org (woodpecker.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4])
	(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
	(No client certificate requested)
	by pigeon.gentoo.org (Postfix) with ESMTPS id 5CFBFE0998
	for <gentoo-commits@lists.gentoo.org>; Wed, 21 Oct 2020 17:58:53 +0000 (UTC)
Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52])
	(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
	(No client certificate requested)
	by smtp.gentoo.org (Postfix) with ESMTPS id 51444340D83
	for <gentoo-commits@lists.gentoo.org>; Wed, 21 Oct 2020 17:58:52 +0000 (UTC)
Received: from localhost.localdomain (localhost [IPv6:::1])
	by oystercatcher.gentoo.org (Postfix) with ESMTP id BB6B83C5
	for <gentoo-commits@lists.gentoo.org>; Wed, 21 Oct 2020 17:58:48 +0000 (UTC)
From: "Matt Turner" <mattst88@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Content-Transfer-Encoding: 8bit
Content-type: text/plain; charset=UTF-8
Reply-To: gentoo-dev@lists.gentoo.org, "Matt Turner" <mattst88@gentoo.org>
Message-ID: <1603236395.97060f608afd21e1463115f46cf2fbc3cee73b5c.mattst88@gentoo>
Subject: [gentoo-commits] proj/catalyst:master commit in: targets/support/
X-VCS-Repository: proj/catalyst
X-VCS-Files: targets/support/kmerge.sh
X-VCS-Directories: targets/support/
X-VCS-Committer: mattst88
X-VCS-Committer-Name: Matt Turner
X-VCS-Revision: 97060f608afd21e1463115f46cf2fbc3cee73b5c
X-VCS-Branch: master
Date: Wed, 21 Oct 2020 17:58:48 +0000 (UTC)
Precedence: bulk
List-Post: <mailto:gentoo-commits@lists.gentoo.org>
List-Help: <mailto:gentoo-commits+help@lists.gentoo.org>
List-Unsubscribe: <mailto:gentoo-commits+unsubscribe@lists.gentoo.org>
List-Subscribe: <mailto:gentoo-commits+subscribe@lists.gentoo.org>
List-Id: Gentoo Linux mail <gentoo-commits.gentoo.org>
X-BeenThere: gentoo-commits@lists.gentoo.org
X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply
X-Archives-Salt: 69cfea0d-38ee-4840-8ed3-3d38a6c1d738
X-Archives-Hash: 86f1be138c16ad0a6ce226b78e8b1af1
Message-ID: <20201021175848.x2sms8jiQu-u_fmjZCQEQxlyc6V4lwS0Oq3SHuRj6So@z>

commit:     97060f608afd21e1463115f46cf2fbc3cee73b5c
Author:     Matt Turner <mattst88 <AT> gentoo <DOT> org>
AuthorDate: Tue Oct 20 02:38:39 2020 +0000
Commit:     Matt Turner <mattst88 <AT> gentoo <DOT> org>
CommitDate: Tue Oct 20 23:26:35 2020 +0000
URL:        https://gitweb.gentoo.org/proj/catalyst.git/commit/?id=97060f60

targets: Reimplement kerncache support

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 <AT> gentoo.org>")
Fixes: fed3b45b ("Fix and improve kernel build when kerncache is enabled.")
Signed-off-by: Matt Turner <mattst88 <AT> 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


From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <gentoo-commits+bounces-1218434-garchives=archives.gentoo.org@lists.gentoo.org>
Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by finch.gentoo.org (Postfix) with ESMTPS id CE439138359
	for <garchives@archives.gentoo.org>; Thu, 29 Oct 2020 21:00:48 +0000 (UTC)
Received: from pigeon.gentoo.org (localhost [127.0.0.1])
	by pigeon.gentoo.org (Postfix) with SMTP id 224F6E08FC;
	Thu, 29 Oct 2020 21:00:44 +0000 (UTC)
Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183])
	(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
	(No client certificate requested)
	by pigeon.gentoo.org (Postfix) with ESMTPS id EB7A9E08F4
	for <gentoo-commits@lists.gentoo.org>; Thu, 29 Oct 2020 21:00:43 +0000 (UTC)
Received: from oystercatcher.gentoo.org (unknown [IPv6:2a01:4f8:202:4333:225:90ff:fed9:fc84])
	(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
	(No client certificate requested)
	by smtp.gentoo.org (Postfix) with ESMTPS id C899F340DB0
	for <gentoo-commits@lists.gentoo.org>; Thu, 29 Oct 2020 21:00:42 +0000 (UTC)
Received: from localhost.localdomain (localhost [IPv6:::1])
	by oystercatcher.gentoo.org (Postfix) with ESMTP id 2546C3D2
	for <gentoo-commits@lists.gentoo.org>; Thu, 29 Oct 2020 21:00:40 +0000 (UTC)
From: "Matt Turner" <mattst88@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Content-Transfer-Encoding: 8bit
Content-type: text/plain; charset=UTF-8
Reply-To: gentoo-dev@lists.gentoo.org, "Matt Turner" <mattst88@gentoo.org>
Message-ID: <1603236395.97060f608afd21e1463115f46cf2fbc3cee73b5c.mattst88@gentoo>
Subject: [gentoo-commits] proj/catalyst:wip/mattst88 commit in: targets/support/
X-VCS-Repository: proj/catalyst
X-VCS-Files: targets/support/kmerge.sh
X-VCS-Directories: targets/support/
X-VCS-Committer: mattst88
X-VCS-Committer-Name: Matt Turner
X-VCS-Revision: 97060f608afd21e1463115f46cf2fbc3cee73b5c
X-VCS-Branch: wip/mattst88
Date: Thu, 29 Oct 2020 21:00:40 +0000 (UTC)
Precedence: bulk
List-Post: <mailto:gentoo-commits@lists.gentoo.org>
List-Help: <mailto:gentoo-commits+help@lists.gentoo.org>
List-Unsubscribe: <mailto:gentoo-commits+unsubscribe@lists.gentoo.org>
List-Subscribe: <mailto:gentoo-commits+subscribe@lists.gentoo.org>
List-Id: Gentoo Linux mail <gentoo-commits.gentoo.org>
X-BeenThere: gentoo-commits@lists.gentoo.org
X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply
X-Archives-Salt: c1a3641c-d2b8-46d7-a597-267ea9a183c4
X-Archives-Hash: 2fc98a7feae084147ec82b1ba0db76cb
Message-ID: <20201029210040.ET08SBJQhr-qNXLKIxQpu3F2QyaSYhxgUcZKYdlxhik@z>

commit:     97060f608afd21e1463115f46cf2fbc3cee73b5c
Author:     Matt Turner <mattst88 <AT> gentoo <DOT> org>
AuthorDate: Tue Oct 20 02:38:39 2020 +0000
Commit:     Matt Turner <mattst88 <AT> gentoo <DOT> org>
CommitDate: Tue Oct 20 23:26:35 2020 +0000
URL:        https://gitweb.gentoo.org/proj/catalyst.git/commit/?id=97060f60

targets: Reimplement kerncache support

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 <AT> gentoo.org>")
Fixes: fed3b45b ("Fix and improve kernel build when kerncache is enabled.")
Signed-off-by: Matt Turner <mattst88 <AT> 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