From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 86450158128 for ; Mon, 16 Jun 2025 01:18:49 +0000 (UTC) Received: from lists.gentoo.org (bobolink.gentoo.org [140.211.166.189]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (No client certificate requested) (Authenticated sender: relay-lists.gentoo.org@gentoo.org) by smtp.gentoo.org (Postfix) with ESMTPSA id 727903425A2 for ; Mon, 16 Jun 2025 01:18:49 +0000 (UTC) Received: from bobolink.gentoo.org (localhost [127.0.0.1]) by bobolink.gentoo.org (Postfix) with ESMTP id 0BC111104E7; Mon, 16 Jun 2025 01:18:41 +0000 (UTC) Received: from smtp.gentoo.org (mail.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (No client certificate requested) by bobolink.gentoo.org (Postfix) with ESMTPS id 02D3D1104E7 for ; Mon, 16 Jun 2025 01:18:40 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 80615342599 for ; Mon, 16 Jun 2025 01:18:40 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id F166129D4 for ; Mon, 16 Jun 2025 01:18:38 +0000 (UTC) From: "Sam James" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Sam James" Message-ID: <1750036614.8c4be9acf1f9fca03df2a2434d3f8638470a32b1.sam@gentoo> Subject: [gentoo-commits] proj/portage:master commit in: bin/ X-VCS-Repository: proj/portage X-VCS-Files: bin/emerge-webrsync X-VCS-Directories: bin/ X-VCS-Committer: sam X-VCS-Committer-Name: Sam James X-VCS-Revision: 8c4be9acf1f9fca03df2a2434d3f8638470a32b1 X-VCS-Branch: master Date: Mon, 16 Jun 2025 01:18:38 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: f6c5e574-8f20-49bc-92c8-4a9ce1e2934c X-Archives-Hash: 6aaa0485c728c23d5fd7f9f5b8e789b9 commit: 8c4be9acf1f9fca03df2a2434d3f8638470a32b1 Author: Kerin Millar plushkava net> AuthorDate: Sun Jun 15 21:39:49 2025 +0000 Commit: Sam James gentoo org> CommitDate: Mon Jun 16 01:16:54 2025 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=8c4be9ac emerge-webrsync: hoist local declarations to the top of functions Local variables are not lexically scoped in bash and it has been my experience that declaring them up-front may serve as an effective canary for undue complexity. Additionally, it renders the calling convention clear in the case that one or more positional parameters are captured. Signed-off-by: Kerin Millar plushkava.net> Signed-off-by: Sam James gentoo.org> bin/emerge-webrsync | 102 ++++++++++++++++++++-------------------------------- 1 file changed, 39 insertions(+), 63 deletions(-) diff --git a/bin/emerge-webrsync b/bin/emerge-webrsync index 9c9d561835..5613a49574 100755 --- a/bin/emerge-webrsync +++ b/bin/emerge-webrsync @@ -36,6 +36,7 @@ source "${functions_script}" || { eend() { local r=${1:-0} shift + if [[ $r -eq 0 ]] ; then printf '[ %sok%s ]\n' "${GOOD}" "${NORMAL}" else @@ -147,8 +148,8 @@ handle_pgp_setup() { do_tar() { local file=$1 - shift local decompressor + shift case ${file} in *.xz) decompressor="xzcat" ;; @@ -166,8 +167,7 @@ get_utc_date_in_seconds() { } get_date_part() { - local utc_time_in_secs="$1" - local part="$2" + local utc_time_in_secs=$1 part=$2 if [[ ${USERLAND} == BSD ]] ; then date -r "${utc_time_in_secs}" -u +"${part}" @@ -177,7 +177,7 @@ get_date_part() { } get_utc_second_from_string() { - local s="$1" + local s=$1 if [[ ${USERLAND} == BSD ]] ; then # Specify zeros for the least significant digits, or else those @@ -199,8 +199,7 @@ get_repository_timestamp() { } fetch_file() { - local URI="$1" - local FILE="$2" + local URI=$1 FILE=$2 local opts if [[ "${FETCHCOMMAND/wget/}" != "${FETCHCOMMAND}" ]]; then @@ -224,15 +223,14 @@ fetch_file() { } check_file_digest() { - local digest="$1" - local file="$2" + local digest=$1 file=$2 local r=1 [[ ${PORTAGE_QUIET} -eq 1 ]] || einfo "Checking digest ..." if type -P md5sum > /dev/null; then - local md5sum_output=$(md5sum "${file}") - local digest_content=$(< "${digest}") + md5sum_output=$(md5sum "${file}") + digest_content=$(< "${digest}") [[ "${md5sum_output%%[[:space:]]*}" = "${digest_content%%[[:space:]]*}" ]] && r=0 elif type -P md5 > /dev/null; then [[ "$(md5 -q "${file}")" == "$(cut -d ' ' -f 1 "${digest}")" ]] && r=0 @@ -244,15 +242,15 @@ check_file_digest() { } check_file_signature_gemato() { - local signature="$1" - local file="$2" - local r=1 + local signature=$1 file=$2 + local -a gemato_args + local key r=1 if type -P gemato > /dev/null; then if [[ -n ${PORTAGE_GPG_KEY} ]] ; then - local key="${PORTAGE_GPG_KEY}" + key="${PORTAGE_GPG_KEY}" else - local key="${EPREFIX}/usr/share/openpgp-keys/gentoo-release.asc" + key="${EPREFIX}/usr/share/openpgp-keys/gentoo-release.asc" fi if [[ ! -f "${key}" ]] ; then @@ -260,7 +258,7 @@ check_file_signature_gemato() { die "Needed keys unavailable! Install its package or set PORTAGE_GPG_KEY to the right path." fi - local gemato_args=( + gemato_args=( openpgp-verify-detached -K "${key}" ) @@ -292,14 +290,14 @@ check_file_signature_gemato() { } check_file_signature_gpg_unwrapped() { - local signature="$1" - local file="$2" + local signature=$1 file=$2 + local gpgdir key if type -P gpg > /dev/null; then if [[ -n ${PORTAGE_GPG_KEY} ]] ; then - local key="${PORTAGE_GPG_KEY}" + key="${PORTAGE_GPG_KEY}" else - local key="${EPREFIX}/usr/share/openpgp-keys/gentoo-release.asc" + key="${EPREFIX}/usr/share/openpgp-keys/gentoo-release.asc" fi if [[ ! -f "${key}" ]] ; then @@ -307,7 +305,7 @@ check_file_signature_gpg_unwrapped() { die "Needed keys unavailable! Install its package or set PORTAGE_GPG_KEY to the right path." fi - local gpgdir="${PORTAGE_GPG_DIR}" + gpgdir="${PORTAGE_GPG_DIR}" if [[ -z ${gpgdir} ]] ; then gpgdir=$(mktemp -d -- "${PORTAGE_TMPDIR}/portage/webrsync.XXXXXX") || exit @@ -341,10 +339,8 @@ check_file_signature_gpg_unwrapped() { } check_file_signature() { - local signature="$1" - local file="$2" - local r=1 - local gnupg_status line + local signature=$1 file=$2 + local gnupg_status line r=1 if [[ ${WEBRSYNC_VERIFY_SIGNATURE} != 0 ]]; then [[ ${PORTAGE_QUIET} -eq 1 ]] || einfo "Checking signature ..." @@ -379,17 +375,18 @@ check_file_signature() { } get_snapshot_timestamp() { - local file="$1" + local file=$1 do_tar "${file}" --to-stdout -f - --wildcards -x '*/metadata/timestamp.x' | cut -f 1 -d " " } sync_local() { - local file="$1" + local file=$1 + local chown_opts rsync_opts ownership post_sync [[ ${PORTAGE_QUIET} -eq 1 ]] || einfo "Syncing local repository ..." - local ownership="${PORTAGE_USERNAME}:${PORTAGE_GRPNAME}" + ownership="${PORTAGE_USERNAME}:${PORTAGE_GRPNAME}" if contains_word usersync "${FEATURES}"; then case "${USERLAND}" in BSD) @@ -402,7 +399,7 @@ sync_local() { fi if type -P tarsync > /dev/null ; then - local chown_opts="-o ${ownership%:*} -g ${ownership#*:}" + chown_opts="-o ${ownership%:*} -g ${ownership#*:}" chown ${ownership} "${repo_location}" > /dev/null 2>&1 || chown_opts="" if ! tarsync $(vvecho -v) -s 1 ${chown_opts} \ @@ -420,7 +417,7 @@ sync_local() { # Free disk space ${keep} || rm -f "${file}" - local rsync_opts="${PORTAGE_RSYNC_OPTS} ${PORTAGE_RSYNC_EXTRA_OPTS} $(nvecho -q)" + rsync_opts="${PORTAGE_RSYNC_OPTS} ${PORTAGE_RSYNC_EXTRA_OPTS} $(nvecho -q)" if chown ${ownership} . > /dev/null 2>&1; then chown -R ${ownership} . rsync_opts+=" --owner --group" @@ -440,7 +437,7 @@ sync_local() { "${emerge}" --metadata fi - local post_sync=${PORTAGE_CONFIGROOT%/}/etc/portage/bin/post_sync + post_sync=${PORTAGE_CONFIGROOT%/}/etc/portage/bin/post_sync [[ -x "${post_sync}" ]] && "${post_sync}" # --quiet suppresses output if there are no relevant news items @@ -451,17 +448,8 @@ sync_local() { } do_snapshot() { - local ignore_timestamp="$1" - local date="$2" - - local r=1 - - local compression - - local have_files=0 - local mirror - - local compressions="" + local ignore_timestamp=$1 date=$2 + local snapshot_timestamp compression{,s} utc_seconds have_files signature digest mirror file name r=1 type -P xzcat > /dev/null && compressions="${compressions} ${repo_name}:xz portage:xz" type -P bzcat > /dev/null && compressions="${compressions} ${repo_name}:bz2 portage:bz2" @@ -475,13 +463,13 @@ do_snapshot() { [[ ${PORTAGE_QUIET} -eq 1 ]] || einfo "Trying to retrieve ${date} snapshot from ${mirror} ..." for compression in ${compressions} ; do - local name=${compression%%:*} + name=${compression%%:*} compression=${compression#*:} - local file="${name}-${date}.tar.${compression}" - local digest="${file}.md5sum" - local signature="${file}.gpgsig" + file="${name}-${date}.tar.${compression}" + digest="${file}.md5sum" + signature="${file}.gpgsig" if [[ -s "${DISTDIR}/${file}" && -s "${DISTDIR}/${digest}" && -s "${DISTDIR}/${signature}" ]] ; then check_file_digest "${DISTDIR}/${digest}" "${DISTDIR}/${file}" && \ @@ -507,7 +495,6 @@ do_snapshot() { if [[ ${have_files} -eq 1 ]]; then [[ ${PORTAGE_QUIET} -eq 1 ]] || einfo "Getting snapshot timestamp ..." - local snapshot_timestamp snapshot_timestamp=$(get_snapshot_timestamp "${DISTDIR}/${file}") if [[ ${ignore_timestamp} == 0 ]]; then @@ -516,7 +503,6 @@ do_snapshot() { have_files=0 fi else - local utc_seconds utc_seconds=$(get_utc_second_from_string "${date}") # Check that this snapshot is what the age it claims to be @@ -551,8 +537,8 @@ do_snapshot() { } do_latest_snapshot() { - local attempts=0 - local r=1 + local timestamp_{difference,problem} snapshot_date{,_seconds} approx_snapshot_time existing_timestamp start_{hour,time} + local min_time_diff attempts=0 r=1 [[ ${PORTAGE_QUIET} -eq 1 ]] || einfo "Fetching most recent snapshot ..." @@ -563,16 +549,7 @@ do_latest_snapshot() { # Timestamps that differ by less than 2 hours # are considered to be approximately equal. - local min_time_diff=$(( 2 * 60 * 60 )) - - local existing_timestamp - local timestamp_difference - local timestamp_problem - local approx_snapshot_time - local start_time - local start_hour - local snapshot_date - local snapshot_date_seconds + min_time_diff=$(( 2 * 60 * 60 )) existing_timestamp=$(get_repository_timestamp) start_time=$(get_utc_date_in_seconds) @@ -658,11 +635,10 @@ usage() { } main() { - local arg - local revert_date + local revert_date arg v for arg in "$@" ; do - local v=${arg#*=} + v=${arg#*=} case ${arg} in -h|--help) usage ;; -k|--keep) keep=true ;;