From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pj1-x1030.google.com (mail-pj1-x1030.google.com [IPv6:2607:f8b0:4864:20::1030]) by sourceware.org (Postfix) with ESMTPS id A2E0D3858D28; Tue, 29 Aug 2023 05:52:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A2E0D3858D28 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-26fb8225268so2079618a91.1; Mon, 28 Aug 2023 22:52:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693288354; x=1693893154; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=+MxGvgAdPRZnVeK+tiwQpE/rperEoOJyFKr5bSct2hk=; b=ak2KA/pN0gJ+K7MDOUuMxuzmRTtrXKkZWtd1XvZyRJSMGcIdUNFNHgqNQgwSlZsHjG jA54TiVYLlzZ+GE6ewZPzX6hs+agz+9VvDKsv6n/cy35BYzj78Bh74NqEiFN/c/LI00J PKzMO+8HtrZaRLWkV32Linx8JqFF1GW3gvKutP7jr/Whewcs76fprrEa63CD0dJrgQHp b7KVl7ygn001/PfU9yGBwpQlLKRG4sHZWoLaYFXgKXm69+aa5k+3gatj/gwDxoPCdhwE WRD2H95BvqeIu+mYiR8fsqTMTQVTrAiV/hq/1HkIWceFW+UJNrb3Xka7esFvY+cdl65m z/IQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693288354; x=1693893154; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+MxGvgAdPRZnVeK+tiwQpE/rperEoOJyFKr5bSct2hk=; b=JJKEIsTOkWxqvhURzTko9dgQn5S2VcJw3MbzFX10vYO559A3gEzEXfau1ZW+rQV6Ox pM/qQbF3tw3gY8OIUYyPRLT5/c3gKMWPtfBwxMtmJhh1sK5WmoXyduNDT+oJM0flTO79 ohCFPfm9TfHbmPxFKMP1tAma5yuVqUECWspEMzCi6qqxlXTYYLvhld/ev1J513eey07C TXnDplX9L2WLWbDQrRxbOLelgjQZjawEw2s3LvJfdyuQywfFQX3HvYuDoF696bfF2eJZ exaGtTtON5sTnP5fKxDjDPThMNb+43GBvroP4Y24yfYrk93HmpQL8W9M/p3C0zv87XYx 2NJg== X-Gm-Message-State: AOJu0YxY8iv4UgrHuWFg/87BolpwGefsqODHN0iw+2WIcpm8o3W7VmTD Kvp6G8tvWnIlgLgwWFOeq9vFipHPlsqiyWZi+z+0LXlO X-Google-Smtp-Source: AGHT+IF/yFE/cVFiQ9H611XL+GaEsaEKzDvSMdVDi3n4SuQbb4XA/CcW+LbWgobOxJNWyfO/tX/Y3xaJvqkXsWoLUcU= X-Received: by 2002:a17:90b:3ec7:b0:26d:19f3:ecb9 with SMTP id rm7-20020a17090b3ec700b0026d19f3ecb9mr18899837pjb.48.1693288354518; Mon, 28 Aug 2023 22:52:34 -0700 (PDT) MIME-Version: 1.0 References: <20230829054210.80928-2-jerry.zhangjian@sifive.com> In-Reply-To: <20230829054210.80928-2-jerry.zhangjian@sifive.com> From: Andrew Pinski Date: Mon, 28 Aug 2023 22:52:22 -0700 Message-ID: Subject: Re: [PATCH] download_prerequisites: New script port from GCC To: Jerry Zhang Jian Cc: binutils@sourceware.org, GDB Patches Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-7.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_LOTSOFHASH,KAM_SHORT,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 List-Id: On Mon, Aug 28, 2023 at 10:48=E2=80=AFPM Jerry Zhang Jian via Binutils wrote: > > download_prerequisites: add this script from GCC contrib/ folder to help > setting up the build dependencies for binutils GMP/MFPR is not needed for building binutils but rather gdb. So I added gdb-patches@ . Releases of binutils will not include the gdb directory either. I think this is a good idea though it would be good to have a script which checks to make sure the 2 versions (in gcc git and gdb-binutils git) are kept the same. Thanks, Andrew Pinski > > 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_prerequisi= tes > 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 w= ill 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=3D'download_prerequisites' > +version=3D'(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=3D'gmp-6.2.1.tar.bz2' > +mpfr=3D'mpfr-4.1.0.tar.bz2' > +mpc=3D'mpc-1.2.1.tar.gz' > +isl=3D'isl-0.24.tar.bz2' > + > +base_url=3D'http://gcc.gnu.org/pub/gcc/infrastructure/' > + > +echo_archives() { > + echo "${gmp}" > + echo "${mpfr}" > + echo "${mpc}" > + if [ ${graphite} -gt 0 ]; then echo "${isl}"; fi > +} > + > +graphite=3D1 > +verify=3D1 > +force=3D0 > +OS=3D$(uname) > + > +if type wget > /dev/null ; then > + fetch=3D'wget' > +else > + fetch=3D'curl -LO' > +fi > +chksum_extension=3D'sha512' > +directory=3D'.' > + > +helptext=3D"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=3DDIR 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 (defau= lt) > + --md5 use MD5 checksum to verify package integrity > + --help show this text and exit > + --version show version information and exit > +" > + > +versiontext=3D"${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 PURPO= SE." > + > +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=3D$(cat -) > + # Grab the text before the first space > + md5_checksum_expected=3D"${md5_checksum_line%% *}" > + # Grab the text after the first space > + file_to_check=3D"${md5_checksum_line##* }" > + # Calculate the md5 checksum for the downloaded file > + md5_checksum_output=3D$(md5 -r "${file_to_check}") > + # Grab the text before the first space > + md5_checksum_detected=3D"${md5_checksum_output%% *}" > + [ "${md5_checksum_expected}" =3D "${md5_checksum_detected}" ] \ > + || die "Cannot verify integrity of possibly corrupted file ${file_to= _check}" > + echo "${file_to_check}: OK" > +} > + > + > +argnext=3D > +for arg in "$@" > +do > + if [ "x${argnext}" =3D x ] > + then > + case "${arg}" in > + --directory) > + argnext=3D'directory' > + ;; > + --directory=3D*) > + directory=3D"${arg#--directory=3D}" > + ;; > + --force) > + force=3D1 > + ;; > + --no-force) > + force=3D0 > + ;; > + --isl|--graphite) > + graphite=3D1 > + ;; > + --no-isl|--no-graphite) > + graphite=3D0 > + ;; > + --verify) > + verify=3D1 > + ;; > + --no-verify) > + verify=3D0 > + ;; > + --sha512) > + chksum_extension=3D'sha512' > + verify=3D1 > + ;; > + --md5) > + chksum_extension=3D'md5' > + verify=3D1 > + ;; > + -*) > + 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=3D"${arg}" > + ;; > + *) > + die "The impossible has happened" > + ;; > + esac > + argnext=3D > + fi > +done > +[ "x${argnext}" =3D x ] || die "Missing argument for option --${argnext}= " > +unset arg argnext > + > +case $chksum_extension in > + sha512) > + case $OS in > + "Darwin"|"FreeBSD"|"DragonFly"|"AIX") > + chksum=3D'shasum -a 512 --check' > + ;; > + "OpenBSD") > + chksum=3D'sha512 -c' > + ;; > + *) > + chksum=3D'sha512sum -c' > + ;; > + esac > + ;; > + md5) > + case $OS in > + "Darwin") > + chksum=3D'md5_check' > + ;; > + *) > + chksum=3D'md5sum -c' > + ;; > + esac > + ;; > + *) > + die "Unkown checksum $chksum_extension" > + ;; > +esac > + > +[ -e ./binutils ] = \ > + || die "You must run this script in the top-level Binutils source di= rectory" > + > +[ -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=3D"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=3D"${ar%.tar*}" > + if [ ${force} -gt 0 ]; then rm -rf "${directory}/${package}"; fi > + case $ar in > + *.gz) > + uncompress=3D'gzip -d' > + ;; > + *.bz2) > + uncompress=3D'bzip2 -d' > + ;; > + *) > + uncompress=3D'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=3D"${directory}/${ar%.tar*}/" > + linkname=3D"${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 @@ > +8904334a3bcc5c896ececabc75cda9dec642e401fb5397c4992c4fabea5e962c9ce8bd44= e8e4233c34e55c8010cc28db0545f5f750cbdbb5f00af538dc763be9 gmp-6.2.1.tar.bz2 > +410208ee0d48474c1c10d3d4a59decd2dfa187064183b09358ec4c4666e34d7438312843= 6b404123b831e585d81a9176b24c7ced9d913967c5fce35d4040a0b4 mpfr-4.1.0.tar.bz= 2 > +3279f813ab37f47fdcc800e4ac5f306417d07f539593ca715876e43e04896e1d5bceccfb= 288ef2908a3f24b760747d0dbd0392a24b9b341bc3e12082e5c836ee mpc-1.2.1.tar.gz > +aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af2= 0bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 isl-0.24.tar.bz2 > -- > 2.41.0 >