From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 7A366138359 for ; Wed, 21 Oct 2020 00:24:59 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id CB0EBE0ACE; Wed, 21 Oct 2020 00:24:58 +0000 (UTC) Received: from mail-pj1-f68.google.com (mail-pj1-f68.google.com [209.85.216.68]) (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 C475FE0ACE for ; Wed, 21 Oct 2020 00:24:58 +0000 (UTC) Received: by mail-pj1-f68.google.com with SMTP id a17so231071pju.1 for ; Tue, 20 Oct 2020 17:24:58 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=IX07AdDFd970cI1+S1XBCRUQcPGsWgXMq8nKeoGaO6M=; b=LMgd/Ud3gjw/vINv+byiDyKsRRCYt1L3gP8wI8TjZTa4Or3tSmvFvAV0rlz9uRjkPH wtTTthmMVEsTSQIBIzDrS3hNJXPmj1tzpjjQMCaCB9SVpOyMaGkVL/KIZ0GiBHOT+SOH dd6xJShKOjOp68SceF5kMrHHM7ydJQopfWgd/25xhDBL6g58EWsH9Cv3E+jES2X6X5pZ zL1O7K5BlyCHTOUpmrwLK8WAhcY6NfE3QQX7ZkJ7mR9RBG/EoOXsnSvMiC9w4VmCHGiK B1yGZvMJtcaJG10QAU1WZV6kIL9HZobKNCPEvCg1qtyDaK/0TH7Be3H6cGe2j/wXgoVD z01w== X-Gm-Message-State: AOAM533iuv1mnMkTdI7dFf5kIxpbsOnsF8Qt/Upr43Sf2NhXHnjm+nY+ pD2FsydFgMB8hNT0IfPSzjP837SRlpb5fA== X-Google-Smtp-Source: ABdhPJyhSQFggGfX+drMBhm+jQPWWbNgDB1oMSzV1DDAjBs1IvaJw+PVc6ZFN0YTu7q7ZynsSptiWg== X-Received: by 2002:a17:902:b718:b029:d4:ccbc:7f2b with SMTP id d24-20020a170902b718b02900d4ccbc7f2bmr825903pls.10.1603239897373; Tue, 20 Oct 2020 17:24:57 -0700 (PDT) Received: from localhost ([108.161.26.224]) by smtp.gmail.com with ESMTPSA id x16sm185081pff.14.2020.10.20.17.24.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Oct 2020 17:24:56 -0700 (PDT) From: Matt Turner To: gentoo-catalyst@lists.gentoo.org Cc: Matt Turner Subject: [gentoo-catalyst] [PATCH 35/37] targets: Reimplement kerncache support Date: Tue, 20 Oct 2020 17:23:42 -0700 Message-Id: <20201021002344.378131-35-mattst88@gentoo.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20201021002344.378131-1-mattst88@gentoo.org> References: <20201021002344.378131-1-mattst88@gentoo.org> Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-catalyst@lists.gentoo.org Reply-to: gentoo-catalyst@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Archives-Salt: cb427878-43f9-4aa2-a8cf-0fc03f26f434 X-Archives-Hash: 176e16992d6f64cc1ee59581f6d65f7f 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 ") Fixes: fed3b45b ("Fix and improve kernel build when kerncache is enabled.") Signed-off-by: Matt Turner --- 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=$( ${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