From patchwork Tue Nov 26 21:29:55 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ethan Sommer X-Patchwork-Id: 1395 Return-Path: Delivered-To: patchwork@archlinux.org Received: from apollo.archlinux.org (localhost [127.0.0.1]) by apollo.archlinux.org (Postfix) with ESMTP id 5607A154BBB34 for ; Tue, 26 Nov 2019 21:38:32 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on apollo.archlinux.org X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=DKIM_ADSP_CUSTOM_MED=0.001, DKIM_INVALID=1,DKIM_SIGNED=0.1,FREEMAIL_FROM=0.5,MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_MED=-2.3,SPF_HELO_NONE=0.001,T_DMARC_POLICY_NONE=0.01, T_DMARC_SIMPLE_DKIM=0.01 autolearn=ham autolearn_force=no version=3.4.2 X-Spam-BL-Results: [127.0.9.2] Received: from orion.archlinux.org (orion.archlinux.org [IPv6:2a01:4f8:160:6087::1]) by apollo.archlinux.org (Postfix) with ESMTPS for ; Tue, 26 Nov 2019 21:38:32 +0000 (UTC) Received: from orion.archlinux.org (localhost [127.0.0.1]) by orion.archlinux.org (Postfix) with ESMTP id 0FA8916E80AF96; Tue, 26 Nov 2019 21:38:31 +0000 (UTC) Received: from luna.archlinux.org (luna.archlinux.org [IPv6:2a01:4f8:160:3033::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: luna) by orion.archlinux.org (Postfix) with ESMTPSA id E55A216E80AF91; Tue, 26 Nov 2019 21:38:30 +0000 (UTC) Authentication-Results: orion.archlinux.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=mc/qbw2p Received: from luna.archlinux.org (luna.archlinux.org [127.0.0.1]) by luna.archlinux.org (Postfix) with ESMTP id CFC082B792; Tue, 26 Nov 2019 21:38:30 +0000 (UTC) Authentication-Results: luna.archlinux.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=mc/qbw2p Received: from luna.archlinux.org (luna.archlinux.org [127.0.0.1]) by luna.archlinux.org (Postfix) with ESMTP id 5C52C2B791 for ; Tue, 26 Nov 2019 21:38:28 +0000 (UTC) Received: from orion.archlinux.org (orion.archlinux.org [IPv6:2a01:4f8:160:6087::1]) by luna.archlinux.org (Postfix) with ESMTPS for ; Tue, 26 Nov 2019 21:38:28 +0000 (UTC) Received: from orion.archlinux.org (localhost [127.0.0.1]) by orion.archlinux.org (Postfix) with ESMTP id 6257016E80AF8B for ; Tue, 26 Nov 2019 21:38:25 +0000 (UTC) Received: from mail-io1-xd41.google.com (mail-io1-xd41.google.com [IPv6:2607:f8b0:4864:20::d41]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by orion.archlinux.org (Postfix) with ESMTPS for ; Tue, 26 Nov 2019 21:38:25 +0000 (UTC) Received: by mail-io1-xd41.google.com with SMTP id j20so22298342ioo.11 for ; Tue, 26 Nov 2019 13:38:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=YFLEPG7kmTmZj14L4m5EghkLcKt+g413Vq2c9ZFotWg=; b=mc/qbw2pILVnpFn6Vxkr0Yzmyxih5b5zguyQm1qI7F9ZbvEzzHxuOexNgAU0CNcrR4 fg37ZXMO5K3KgLU+lPKJcn56tahxw6QWErgnZ345ofUX7eq9smZIB05UVKs9/pyeorhv BlLvfxOKuG7WfSouW1mtUcHE2A8kRBLJqFr5AmnECPl24U7+oR0c8pWONZHjhCkeIcuq ZTUxiFY589L1szbK6aOLROcZG8bkwO1k0n3wf7737Z8R0DayTFvfStlN67Qyf5U0dfb5 JZ4OcCRofU/YjVVbmF38y861V79THghGia0HKv/1EA38KOWwOHP3pZgaz3byccbUuiPu tXJA== 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:mime-version :content-transfer-encoding; bh=YFLEPG7kmTmZj14L4m5EghkLcKt+g413Vq2c9ZFotWg=; b=lYXpaUo7Y4H/rPuxRH5nr/pwUodgbGff8P05BJVhsgoNihx6Xwq+08i66pFqNY+YCO p0+uDoLTpVoB+v8f/1cSagXtN8R4dexpSPOGehSyr3aOGXddGJLPS2Fg3Ma2sAEEQH+F 4tOpAdHbr8P/FPTNxtLn9Ahsx4eKOQPcPQiT8iEZ3G44WXn3sSiN8KVIICU3Ua8novmT 3VDstxhyNsfIqDQXxI69MqywY5MY2vkVdBAdLR9J6E29qRfpLVLny4vrGf/wW1qgd+0H /rLN+aoKsxz+GocU1CFT+VHoiAjasP0RxnvVWgDXXk6TBOfk2RXiO7MyUgpQO8PiyOdz codg== X-Gm-Message-State: APjAAAXHWom1jj+zrVCAfkN2fjNvauPI6bI60tdytnMPjpxHEbumF3Fd cs/Pvdxs/QjY32oGHJnEa70RAyEl X-Google-Smtp-Source: APXvYqx8+Rn3f2A5V5qx7pgdrO2c7FEe3IdPCUqhf7J0BdRZpd96W1v0ayui/HJbKQctluVYLgsrXQ== X-Received: by 2002:a02:a00a:: with SMTP id a10mr758363jah.41.1574804303541; Tue, 26 Nov 2019 13:38:23 -0800 (PST) Received: from dell.localdomain ([216.249.49.10]) by smtp.googlemail.com with ESMTPSA id f13sm3031236iob.56.2019.11.26.13.38.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Nov 2019 13:38:22 -0800 (PST) From: Ethan Sommer To: pacman-dev@archlinux.org Date: Tue, 26 Nov 2019 16:29:55 -0500 Message-Id: <20191126212957.29031-1-e5ten.arch@gmail.com> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 Subject: [pacman-dev] [PATCH 1/3] libmakepkg: use extraction commands instead of file to find archive type X-BeenThere: pacman-dev@archlinux.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion list for pacman development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Discussion list for pacman development Errors-To: pacman-dev-bounces@archlinux.org Sender: "pacman-dev" Previously, to determine which command we should use to extract an archive, we would run file and match the output against our list of possible extraction commands Instead, run the archive through each extraction command's -t (--test) flag, if this succeeds then we know that the command is able to extract the file and is the one to use Signed-off-by: Ethan Sommer --- scripts/libmakepkg/source/file.sh.in | 39 ++++++++-------------------- 1 file changed, 11 insertions(+), 28 deletions(-) diff --git a/scripts/libmakepkg/source/file.sh.in b/scripts/libmakepkg/source/file.sh.in index 7297a1c6..faace79b 100644 --- a/scripts/libmakepkg/source/file.sh.in +++ b/scripts/libmakepkg/source/file.sh.in @@ -96,35 +96,18 @@ extract_file() { fi # do not rely on extension for file type - local file_type=$(@FILECMD@ -bizL -- "$file") - local ext=${file##*.} local cmd='' - case "$file_type" in - *application/x-tar*|*application/zip*|*application/x-zip*|*application/x-cpio*) - cmd="bsdtar" ;; - *application/x-gzip*|*application/gzip*) - case "$ext" in - gz|z|Z) cmd="gzip" ;; - *) return;; - esac ;; - *application/x-bzip*) - case "$ext" in - bz2|bz) cmd="bzip2" ;; - *) return;; - esac ;; - *application/x-xz*) - case "$ext" in - xz) cmd="xz" ;; - *) return;; - esac ;; - *) - # See if bsdtar can recognize the file - if bsdtar -tf "$file" -q '*' &>/dev/null; then - cmd="bsdtar" - else - return 0 - fi ;; - esac + if bsdtar -tf "$file" -q '*'; then + cmd='bsdtar' + elif gzip -t "$file"; then + cmd='gzip' + elif bzip2 -t "$file"; then + cmd='bzip2' + elif xz -t "$file"; then + cmd='xz' + else + return 0 + fi &>/dev/null local ret=0 msg2 "$(gettext "Extracting %s with %s")" "$file" "$cmd"