From patchwork Sun Jan 2 00:28:43 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Morten Linderud X-Patchwork-Id: 2006 Return-Path: Delivered-To: patchwork@archlinux.org Received: from mail.archlinux.org [2a01:4f9:c010:3052::1] by patchwork.archlinux.org with IMAP (fetchmail-6.4.25) for (single-drop); Sun, 02 Jan 2022 00:29:04 +0000 (UTC) Received: from mail.archlinux.org by mail.archlinux.org with LMTP id GDpgEdDx0GHH0gcAK+/4rw (envelope-from ) for ; Sun, 02 Jan 2022 00:29:04 +0000 Received: from lists.archlinux.org (lists.archlinux.org [IPv6:2a01:4f9:c010:9eb4::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mail.archlinux.org (Postfix) with ESMTPS id 26402BD748E; Sun, 2 Jan 2022 00:29:03 +0000 (UTC) Received: from lists.archlinux.org (localhost [IPv6:::1]) by lists.archlinux.org (Postfix) with ESMTP id 074DFB5FD6A; Sun, 2 Jan 2022 00:29:03 +0000 (UTC) X-Original-To: pacman-dev@lists.archlinux.org Delivered-To: pacman-dev@lists.archlinux.org Received: from mail.archlinux.org (mail.archlinux.org [95.216.189.61]) by lists.archlinux.org (Postfix) with ESMTPS id 946D1B5FD62 for ; Sun, 2 Jan 2022 00:29:01 +0000 (UTC) From: Morten Linderud DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=archlinux.org; s=dkim-rsa; t=1641083341; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=OvLRnndltq0/sBm6P6lAseIPXG2z6it5Yrk1SsoTn5I=; b=y3yikCU1Y3T/pHNc2EX9O7WX3ARMafhQ5xfALA13r6wkBXCFowAP6EF39xJZjbjLYTcxqH fpEtsVuYoMF3hrXRG6OZQBQfeXNGdwuxamq8jyHwa7ILzy24qVmrL5jQg9Y7y2QWfvxbZ9 krKNduQ9DwFetuBBJoBMnvGu2LWo/Kfy1Bfj8gvA0cumLEmBcK1jHEFhWMMlfF9IEAUId4 wYDlQkNxvXTrrxKrDQ6w+mQ9a0OU1KNdTT1mIk0pARMrWUKycZkdv78iu2Jn/3FEcqbGNH EXEX0uypFxzKEWM/IkQt7iSkQ5WmoK0ENDQrOGvPgpVrzEZMnpih3sU7y4o0r8BfN2cJ+1 WhphAqRoRKhAiKgVaADlKT4W+Ac3iQsCcjEea1HnqEnOvuQHK8AqXjtsR73nvUGNu+P2KW PJ6hZecOFfXBbhh+h4I1AZlzzZfLhdIgGFI7kCxdqSmN9gzBjNqpmrB7flCVYO0KmRddJu vn5yR6yltHQWokNtIOjb/1FXV7VkSit8NHUIGcIg5f8J88i6mj7q5mfOdsMedovwYYYaM/ cIV78pvWhtKmj16QQFxaUegkWigpB/vuyBZv0kC3XfBCi0pH1ibtWZUkzP9hiTUtkiPIe7 75QP5J4cSuV7Q/pkfwhBcH+ehXesilzJkpXstGQ4TaofiY5Jt5Lmw= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=archlinux.org; s=dkim-ed25519; t=1641083341; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=OvLRnndltq0/sBm6P6lAseIPXG2z6it5Yrk1SsoTn5I=; b=aewz8mCOE0LBNUbJBQeoeYE9vjloUY0Zn4E6l+7Mt2FF83ld3c2CU4NnVQHYlmQIy3b73B 6v/buIhUKOnH4EAA== To: pacman-dev@lists.archlinux.org Cc: Morten Linderud Subject: [PATCH 1/1] strip: Use debugedit instead of AWK to parse source files Date: Sun, 2 Jan 2022 01:28:43 +0100 Message-Id: <20220102002843.2104841-2-foxboron@archlinux.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220102002843.2104841-1-foxboron@archlinux.org> References: <20220102002843.2104841-1-foxboron@archlinux.org> MIME-Version: 1.0 X-BeenThere: pacman-dev@lists.archlinux.org X-Mailman-Version: 2.1.39 Precedence: list List-Id: Discussion list for pacman development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: pacman-dev-bounces@lists.archlinux.org Sender: "pacman-dev" Authentication-Results: mail.archlinux.org; dkim=pass header.d=archlinux.org header.s=dkim-rsa header.b=y3yikCU1; dkim=pass header.d=archlinux.org header.s=dkim-ed25519 header.b=aewz8mCO; dmarc=pass (policy=none) header.from=archlinux.org; spf=pass (mail.archlinux.org: domain of pacman-dev-bounces@lists.archlinux.org designates 2a01:4f9:c010:9eb4::1 as permitted sender) smtp.mailfrom=pacman-dev-bounces@lists.archlinux.org X-Rspamd-Queue-Id: 26402BD748E X-Spamd-Result: default: False [-2.61 / 15.00]; DWL_DNSWL_MED(-2.00)[archlinux.org:dkim]; MID_CONTAINS_FROM(1.00)[]; RCVD_DKIM_ARC_DNSWL_MED(-0.50)[]; DMARC_POLICY_ALLOW(-0.50)[archlinux.org,none]; R_MISSING_CHARSET(0.50)[]; RCVD_IN_DNSWL_MED(-0.40)[2a01:4f9:c010:9eb4::1:from,95.216.189.61:received]; MAILLIST(-0.20)[mailman]; R_SPF_ALLOW(-0.20)[+ip6:2a01:4f9:c010:9eb4::1:c]; R_DKIM_ALLOW(-0.20)[archlinux.org:s=dkim-rsa,archlinux.org:s=dkim-ed25519]; MIME_GOOD(-0.10)[text/plain]; HAS_LIST_UNSUB(-0.01)[]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; PREVIOUSLY_DELIVERED(0.00)[pacman-dev@lists.archlinux.org]; ARC_NA(0.00)[]; RCVD_TLS_LAST(0.00)[]; ASN(0.00)[asn:24940, ipnet:2a01:4f9::/32, country:DE]; DKIM_TRACE(0.00)[archlinux.org:+]; RCVD_COUNT_THREE(0.00)[3]; FROM_NEQ_ENVFROM(0.00)[foxboron@archlinux.org,pacman-dev-bounces@lists.archlinux.org]; RCPT_COUNT_TWO(0.00)[2]; MIME_TRACE(0.00)[0:+]; FORGED_RECIPIENTS_MAILLIST(0.00)[]; NEURAL_HAM(-0.00)[-1.000]; FORGED_SENDER_MAILLIST(0.00)[] X-Rspamd-Server: mail.archlinux.org From: Morten Linderud This moves us from the fairly ugly AWK parsing line to debugedit which originally comes out of the rpm project. The original code has issues parsing anything that was not straight C/C++ and languages like Rust or Go would return invalid source code files. debugedit handles all these cases better. Signed-off-by: Morten Linderud --- scripts/libmakepkg/tidy/strip.sh.in | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/scripts/libmakepkg/tidy/strip.sh.in b/scripts/libmakepkg/tidy/strip.sh.in index 92a6fb15..c1d8ee3c 100644 --- a/scripts/libmakepkg/tidy/strip.sh.in +++ b/scripts/libmakepkg/tidy/strip.sh.in @@ -36,8 +36,11 @@ build_id() { } source_files() { - LANG=C readelf "$1" --debug-dump 2>/dev/null | \ - awk '/DW_AT_name +:/{name=$NF}/DW_AT_comp_dir +:/{{if (name == "") next}{if (name !~ /^[<\/]/) {printf "%s/", $NF}}{print name}}' + dbgsrcdir="${DBGSRCDIR:-/usr/src/debug}" + local dbgsrclist="$(mktemp "${startdir}/dbgsrclist.${binary##*/}.XXXXXXXXX")" + LANG=C debugedit -n -b "${srcdir}" -d "${dbgsrcdir}" -l "${dbgsrclist}" "$1" > /dev/null + sort -zu "${dbgsrclist}" | tr '\0' '\n' + rm -f "$dbgsrclist" } strip_file() { @@ -58,9 +61,9 @@ strip_file() { # copy source files to debug directory local file dest t while IFS= read -r t; do - file=${t/${dbgsrcdir}/"$srcdir"} - dest="${dbgsrc/"$dbgsrcdir"/}$t" - if ! [[ -f $dest ]]; then + file="${srcdir}/${t}" + dest="${dbgsrc}/${t}" + if [[ -f "$file" ]] && ! [[ -f $dest ]]; then mkdir -p "${dest%/*}" cp -- "$file" "$dest" fi