From patchwork Tue Aug 29 05:42:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerry Zhang Jian X-Patchwork-Id: 137104 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a7d1:0:b0:3f2:4152:657d with SMTP id p17csp3734655vqm; Mon, 28 Aug 2023 22:48:25 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE6fZ0ocCP2IYLELhiZLHKSo1hNGWW8dbQETlUQQF+2WlGjv1/dtKt/94rfY3zgrEqY4WDs X-Received: by 2002:a17:906:53cb:b0:9a1:fda6:2e27 with SMTP id p11-20020a17090653cb00b009a1fda62e27mr11094764ejo.55.1693288105426; Mon, 28 Aug 2023 22:48:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1693288105; cv=none; d=google.com; s=arc-20160816; b=QsjKZt4OUn/0y6v06TU7fni5HTN64+gmpYlNveOOaI78GsXOmX3fIoUwgslysGkLVH M7rUSQkKy1LAbS2HNsiRhoJS6L2ktbng6n1RWOj722e/Spp5wCp4vxdK6ScR3z9mPQUx dM+mEKMCyGoMHQX9k8LwOw3zd7Fs72TYBb9dbnrp8UiGO9gdU98OLs2fkLwm+hwKdkXo AKE3kVLLEPE1zi3Jc5gcPlOFYNapaYTaMN2wdxhsMOI+Lc1oPmybZagGpKdSFog9caji dl6DaYqEskgCSC7TJjrpGPzc8+LRPuHR4FETPRlTqbCvVYWpsoPupMjGHHxlfbr1nHFw fZgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:from:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence :content-transfer-encoding:mime-version:message-id:date:subject:cc :to:dmarc-filter:delivered-to:dkim-signature:dkim-filter; bh=PPKEj8wQIg11wW09bAHMj75Cydb83Hx0QSbRNNDOVPc=; fh=L9jhMtL+r6YZfB7pEI2knl6Fm0hpT/DwtMEW8vh/za4=; b=BtaFF3aDWDNSRc4P2gMj3OUzOheIA2khNki/X/Lx9f15DyZ47tno7ImeaHtzOYb/ey 46PbiA5oVpxTgbcBdHhnR1zP1+6lZujE4mvcrEGFOPmyeTxaAvCZ9ueNviFg+1Jm7ndK tmOi4q+D3MedYUY9yAEPC8XZ5tVX+dHohsAHaO1Tl92VL0Jjmn8+275MGg2CmG9/RfcU ivDTDxFBBoEL4UrQQfHou9hwlT8jzNOorBSTQTk9PbzF5D0HNeLGhQ3BRvSBYjPZJtYh WPwp5eAamWeOT3THx+pzp3uMzsc7626s2YULFtUoAoo1a50PxgAHF86pJDMiMWzQuav3 +irQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=T6gjDyCC; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id m21-20020a1709060d9500b0098aa2c42095si3477826eji.196.2023.08.28.22.48.25 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 22:48:25 -0700 (PDT) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=T6gjDyCC; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 7676D3858296 for ; Tue, 29 Aug 2023 05:48:21 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7676D3858296 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1693288101; bh=PPKEj8wQIg11wW09bAHMj75Cydb83Hx0QSbRNNDOVPc=; h=To:Cc:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=T6gjDyCCxXlat2QVctNnPT7I1nEoIniAF1E5dAlez9/3tR93o2mKBzEfloiw5eWln 9phQsj/qaX6knYeEZ1mqbATxPbnYhjcL4bbzhLmoe17acDlqD+FrIeju+QHPpKAKUW g5BrSUTdzzbok0orrNzvmYI2aTYhWLPe/cCQ18wc= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-oa1-x2f.google.com (mail-oa1-x2f.google.com [IPv6:2001:4860:4864:20::2f]) by sourceware.org (Postfix) with ESMTPS id 9F1D73858D28 for ; Tue, 29 Aug 2023 05:48:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9F1D73858D28 Received: by mail-oa1-x2f.google.com with SMTP id 586e51a60fabf-1a28de15c8aso2794005fac.2 for ; Mon, 28 Aug 2023 22:48:10 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693288088; x=1693892888; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=PPKEj8wQIg11wW09bAHMj75Cydb83Hx0QSbRNNDOVPc=; b=buJVcutJlIugRvweN7NrpvzRQ3Q1su0N7CA42VzR8XtyOI/KspZlVlC9KXBTQlpvmY zFt2nHByAlCGBzoyDRkjXIIlzKSPsxk4vwEtLZ6xCr/s9//Q94grqqB+L/gyyUt2wdqh h8w50OPKO1pBdeZjUqQJl+j+ezkly1c/RY/5I8iO91ef1l5WweK5ipzQe3S8yZ3lp1a/ K2onjgY2/rFzjugsb6wG8CM/nnUI76ph+FYxuT5OxO1xzQdU0M5fn4X/SRpJir+Qmu0l tDnnBDXHPIk7SYPXgAFZlB+hLeViT8XGT4mdykXo5e4/VisF41j5eyGDTUKvRHoMgQG0 Ok9A== X-Gm-Message-State: AOJu0YwOcLPX1LU5hUE1+wXvcWG8dNrjyolx59PuNHOzOFVUqwi40hbX 2kgXyC5fZgj2RQu2ecVi2GgNC2vAaS5HgML0aJeIs8j+1ikjtntXAi4JF1so+DgJ05ZvmHBtU5F D8+NPf6g7LDtvNuR/70zvkrAde7Cn13Rsq8nC3uYG31DWGltlxC2xD5006A+mg8lBnxXsG8/inw WjIGeNwjl3KQ== X-Received: by 2002:a05:6871:607:b0:1b7:43ba:3249 with SMTP id w7-20020a056871060700b001b743ba3249mr16802172oan.3.1693288088361; Mon, 28 Aug 2023 22:48:08 -0700 (PDT) Received: from localhost.localdomain (111-249-91-32.dynamic-ip.hinet.net. [111.249.91.32]) by smtp.gmail.com with ESMTPSA id z3-20020a17090acb0300b0025bfda134ccsm8226054pjt.16.2023.08.28.22.48.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 22:48:07 -0700 (PDT) To: binutils@sourceware.org Cc: Jerry Zhang Jian Subject: [PATCH] download_prerequisites: New script port from GCC Date: Tue, 29 Aug 2023 13:42:11 +0800 Message-ID: <20230829054210.80928-2-jerry.zhangjian@sifive.com> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 X-Spam-Status: No, score=-10.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_LOTSOFHASH, KAM_SHORT, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Jerry Zhang Jian via Binutils From: Jerry Zhang Jian Reply-To: Jerry Zhang Jian Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1775541268427120743 X-GMAIL-MSGID: 1775541268427120743 download_prerequisites: add this script from GCC contrib/ folder to help setting up the build dependencies for binutils Signed-off-by: Jerry Zhang Jian --- contrib/download_prerequisites | 279 +++++++++++++++++++++++++++++++++ contrib/prerequisites.md5 | 4 + contrib/prerequisites.sha512 | 4 + 3 files changed, 287 insertions(+) create mode 100755 contrib/download_prerequisites create mode 100644 contrib/prerequisites.md5 create mode 100644 contrib/prerequisites.sha512 diff --git a/contrib/download_prerequisites b/contrib/download_prerequisites new file mode 100755 index 00000000000..ed6c647fcfe --- /dev/null +++ b/contrib/download_prerequisites @@ -0,0 +1,279 @@ +#! /bin/sh +#! -*- coding:utf-8; mode:shell-script; -*- + +# Download some prerequisites needed by GCC. +# Run this from the top level of the GCC source tree and the GCC build will do +# the right thing. Run it with the `--help` option for more information. +# +# (C) 2010-2021 Free Software Foundation +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. + +program='download_prerequisites' +version='(unversioned)' + +# MAINTAINERS: If you update the package versions below, please +# remember to also update the files `contrib/prerequisites.sha512` and +# `contrib/prerequisites.md5` with the new checksums. + +gmp='gmp-6.2.1.tar.bz2' +mpfr='mpfr-4.1.0.tar.bz2' +mpc='mpc-1.2.1.tar.gz' +isl='isl-0.24.tar.bz2' + +base_url='http://gcc.gnu.org/pub/gcc/infrastructure/' + +echo_archives() { + echo "${gmp}" + echo "${mpfr}" + echo "${mpc}" + if [ ${graphite} -gt 0 ]; then echo "${isl}"; fi +} + +graphite=1 +verify=1 +force=0 +OS=$(uname) + +if type wget > /dev/null ; then + fetch='wget' +else + fetch='curl -LO' +fi +chksum_extension='sha512' +directory='.' + +helptext="usage: ${program} [OPTION...] + +Downloads some prerequisites needed by GCC. Run this from the top level of the +GCC source tree and the GCC build will do the right thing. + +The following options are available: + + --directory=DIR download and unpack packages into DIR instead of '.' + --force download again overwriting existing packages + --no-force do not download existing packages again (default) + --isl download ISL, needed for Graphite loop optimizations (default) + --graphite same as --isl + --no-isl don't download ISL + --no-graphite same as --no-isl + --verify verify package integrity after download (default) + --no-verify don't verify package integrity + --sha512 use SHA512 checksum to verify package integrity (default) + --md5 use MD5 checksum to verify package integrity + --help show this text and exit + --version show version information and exit +" + +versiontext="${program} ${version} +Copyright (C) 2016-2023 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +die() { + echo "error: $@" >&2 + exit 1 +} + +for arg in "$@" +do + case "${arg}" in + --help) + echo "${helptext}" + exit + ;; + --version) + echo "${versiontext}" + exit + ;; + esac +done +unset arg + +# Emulate Linux's 'md5sum --check' on macOS +md5_check() { + # Store the standard input: a line from contrib/prerequisites.md5: + md5_checksum_line=$(cat -) + # Grab the text before the first space + md5_checksum_expected="${md5_checksum_line%% *}" + # Grab the text after the first space + file_to_check="${md5_checksum_line##* }" + # Calculate the md5 checksum for the downloaded file + md5_checksum_output=$(md5 -r "${file_to_check}") + # Grab the text before the first space + md5_checksum_detected="${md5_checksum_output%% *}" + [ "${md5_checksum_expected}" = "${md5_checksum_detected}" ] \ + || die "Cannot verify integrity of possibly corrupted file ${file_to_check}" + echo "${file_to_check}: OK" +} + + +argnext= +for arg in "$@" +do + if [ "x${argnext}" = x ] + then + case "${arg}" in + --directory) + argnext='directory' + ;; + --directory=*) + directory="${arg#--directory=}" + ;; + --force) + force=1 + ;; + --no-force) + force=0 + ;; + --isl|--graphite) + graphite=1 + ;; + --no-isl|--no-graphite) + graphite=0 + ;; + --verify) + verify=1 + ;; + --no-verify) + verify=0 + ;; + --sha512) + chksum_extension='sha512' + verify=1 + ;; + --md5) + chksum_extension='md5' + verify=1 + ;; + -*) + die "unknown option: ${arg}" + ;; + *) + die "too many arguments" + ;; + esac + else + case "${arg}" in + -*) + die "Missing argument for option --${argnext}" + ;; + esac + case "${argnext}" in + directory) + directory="${arg}" + ;; + *) + die "The impossible has happened" + ;; + esac + argnext= + fi +done +[ "x${argnext}" = x ] || die "Missing argument for option --${argnext}" +unset arg argnext + +case $chksum_extension in + sha512) + case $OS in + "Darwin"|"FreeBSD"|"DragonFly"|"AIX") + chksum='shasum -a 512 --check' + ;; + "OpenBSD") + chksum='sha512 -c' + ;; + *) + chksum='sha512sum -c' + ;; + esac + ;; + md5) + case $OS in + "Darwin") + chksum='md5_check' + ;; + *) + chksum='md5sum -c' + ;; + esac + ;; + *) + die "Unkown checksum $chksum_extension" + ;; +esac + +[ -e ./binutils ] \ + || die "You must run this script in the top-level Binutils source directory" + +[ -d "${directory}" ] \ + || die "No such directory: ${directory}" + +for ar in $(echo_archives) +do + if [ ${force} -gt 0 ]; then rm -f "${directory}/${ar}"; fi + [ -e "${directory}/${ar}" ] \ + || ( cd "${directory}" && ${fetch} --no-verbose "${base_url}${ar}" ) \ + || die "Cannot download ${ar} from ${base_url}" +done +unset ar + +if [ ${verify} -gt 0 ] +then + chksumfile="contrib/prerequisites.${chksum_extension}" + [ -r "${chksumfile}" ] || die "No checksums available" + for ar in $(echo_archives) + do + grep "${ar}" "${chksumfile}" \ + | ( cd "${directory}" && ${chksum} ) \ + || die "Cannot verify integrity of possibly corrupted file ${ar}" + done + unset chksumfile +fi +unset ar + +for ar in $(echo_archives) +do + package="${ar%.tar*}" + if [ ${force} -gt 0 ]; then rm -rf "${directory}/${package}"; fi + case $ar in + *.gz) + uncompress='gzip -d' + ;; + *.bz2) + uncompress='bzip2 -d' + ;; + *) + uncompress='cat' + ;; + esac + [ -e "${directory}/${package}" ] \ + || ( cd "${directory}" && $uncompress <"${ar}" | tar -xf - ) \ + || die "Cannot extract package from ${ar}" + unset package +done +unset ar + +for ar in $(echo_archives) +do + target="${directory}/${ar%.tar*}/" + linkname="${ar%-*}" + if [ ${force} -gt 0 ]; then rm -f "${linkname}"; fi + [ -e "${linkname}" ] \ + || ln -s "${target}" "${linkname}" \ + || die "Cannot create symbolic link ${linkname} --> ${target}" + unset target linkname +done +unset ar + +echo "All prerequisites downloaded successfully." diff --git a/contrib/prerequisites.md5 b/contrib/prerequisites.md5 new file mode 100644 index 00000000000..a20f986c2e0 --- /dev/null +++ b/contrib/prerequisites.md5 @@ -0,0 +1,4 @@ +28971fc21cf028042d4897f02fd355ea gmp-6.2.1.tar.bz2 +44b892bc5a45bafb4294d134e13aad1d mpfr-4.1.0.tar.bz2 +9f16c976c25bb0f76b50be749cd7a3a8 mpc-1.2.1.tar.gz +dd2f7b78e118c25bd96134a52aae7f4d isl-0.24.tar.bz2 diff --git a/contrib/prerequisites.sha512 b/contrib/prerequisites.sha512 new file mode 100644 index 00000000000..89541b9ad4d --- /dev/null +++ b/contrib/prerequisites.sha512 @@ -0,0 +1,4 @@ +8904334a3bcc5c896ececabc75cda9dec642e401fb5397c4992c4fabea5e962c9ce8bd44e8e4233c34e55c8010cc28db0545f5f750cbdbb5f00af538dc763be9 gmp-6.2.1.tar.bz2 +410208ee0d48474c1c10d3d4a59decd2dfa187064183b09358ec4c4666e34d74383128436b404123b831e585d81a9176b24c7ced9d913967c5fce35d4040a0b4 mpfr-4.1.0.tar.bz2 +3279f813ab37f47fdcc800e4ac5f306417d07f539593ca715876e43e04896e1d5bceccfb288ef2908a3f24b760747d0dbd0392a24b9b341bc3e12082e5c836ee mpc-1.2.1.tar.gz +aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 isl-0.24.tar.bz2