From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf1-x42c.google.com (mail-pf1-x42c.google.com [IPv6:2607:f8b0:4864:20::42c]) by sourceware.org (Postfix) with ESMTPS id 4DE053858C74 for ; Wed, 30 Aug 2023 01:09:39 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4DE053858C74 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=sifive.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=sifive.com Received: by mail-pf1-x42c.google.com with SMTP id d2e1a72fcca58-68a1af910e0so3580020b3a.2 for ; Tue, 29 Aug 2023 18:09:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1693357777; x=1693962577; darn=sourceware.org; h=mime-version:subject:references:in-reply-to:message-id:cc:to:from :date:from:to:cc:subject:date:message-id:reply-to; bh=dPYAD+k2cj5MCN1HXFmU2QrflZyAB/XXxDfUtCOftIU=; b=S5n6szkRk7REpqU619klnkvEDbVluwYSoLZxy1U9ElhoZI6V24XXcn1wbOiOM72J8n dfnxi9NgCQAFch7VswHjj1M63lGwNwrLWIyzaRTyVIk9Cd2AE2rEmgGfUgqwaWzGLlR4 YK49BMn89uPAbywL5mB2W/wwbTKRRxA1DPgwQDqiUNFNf6LcswYrR6HIafvtbqXOJPn+ +8OCm312m7p0Nvx0Dd+mke+DTbvVlFURRZrGbeh2y3VWbt2cFXvlZq/hsgBxVJ6fEZel aGb6LcHxN6CFRFGJeJmWPc8sjkNhV21FT4WhpotHlyfKDKlHKf2n9gYbhAVigww9ZTga kboQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693357777; x=1693962577; h=mime-version:subject:references:in-reply-to:message-id:cc:to:from :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=dPYAD+k2cj5MCN1HXFmU2QrflZyAB/XXxDfUtCOftIU=; b=LJUl6dNb4DO2gojeOLjIViyqLh6i8eCogQHPaWW0OzovpLFmqHF0fhb/0dyubGckZH uA69VXrkrnulpcioVJfURktfTz5gCTQmy5u+qw5TgW5Wld3hthm5Z7NNAo3pFTHDeYmc M3TxOPQWdG0uHeQlWRfJ39SXt4zYHhRWYg8lvk+tiJp03vQePDNZkks9H334Jk7koBBF XXn0Zd7n5veRQ7E2dXh13bTOqVGekHZpBSphanOLTT7edy2B9Oddn6d2gg8wkohf78kz UDPMWvj+ZDHQaVwgd2Adh0vIZ99B/Ny3wKJg2Cir5fRzbZVl5E/b8j4Qbh2ZGu2LDziY oUOg== X-Gm-Message-State: AOJu0YwdszOG0xGnntxD0mQehTLFuiDSxzrP1mjSwRI2vNYxSzGWIRrH wDDcPoaD+uKhVqfj5W7aCCiF3Q== X-Google-Smtp-Source: AGHT+IG498ooi20OBJ4Qa7CIdr6UkrxR3WenT+n01U4MlmZlKTtFfWnLszxyJthxtQt45tLJov5DNg== X-Received: by 2002:a05:6a20:3d93:b0:13e:7a0a:36d8 with SMTP id s19-20020a056a203d9300b0013e7a0a36d8mr946687pzi.9.1693357777426; Tue, 29 Aug 2023 18:09:37 -0700 (PDT) Received: from [127.0.0.1] (111-249-65-35.dynamic-ip.hinet.net. [111.249.65.35]) by smtp.gmail.com with ESMTPSA id 9-20020a170902c14900b001bdb8c0b578sm9965380plj.192.2023.08.29.18.09.36 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 29 Aug 2023 18:09:36 -0700 (PDT) Date: Wed, 30 Aug 2023 09:09:29 +0800 From: Jerry ZJ To: Andrew Pinski Cc: binutils@sourceware.org, GDB Patches Message-ID: In-Reply-To: References: <20230829054210.80928-2-jerry.zhangjian@sifive.com> Subject: Re: [PATCH] download_prerequisites: New script port from GCC X-Readdle-Message-ID: e3b507b3-2f8f-4137-9d2a-3ea76a760e91@Spark MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="64ee96ce_4404d497_59d" X-Spam-Status: No, score=-10.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,HTML_FONT_LOW_CONTRAST,HTML_MESSAGE,KAM_LOTSOFHASH,KAM_SHORT,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --64ee96ce_4404d497_59d Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hi, Andrew Thanks for the feedback. To my knowledge, gcc and binutils share the same c= onfigure.ac and configure script. Is it possible for us to adopt the same a= pproach? Thanks, Jerry On Aug 29, 2023 at 13:52 +0800, Andrew Pinski , wrote: > 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_prerequi= sites > > 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 informatio= n. > > +# > > +# (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 leve= l 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 (default) > > + --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 PUR= POSE." > > + > > +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 --${argnex= t}" > > +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 dir= ectory" > > + > > +[ -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 @@ > > +8904334a3bcc5c896ececabc75cda9dec642e401fb5397c4992c4fabea5e962c9ce8bd= 44e8e4233c34e55c8010cc28db0545f5f750cbdbb5f00af538dc763be9 gmp-6.2.1.tar.bz2 > > +410208ee0d48474c1c10d3d4a59decd2dfa187064183b09358ec4c4666e34d74383128= 436b404123b831e585d81a9176b24c7ced9d913967c5fce35d4040a0b4 mpfr-4.1.0.tar.b= z2 > > +3279f813ab37f47fdcc800e4ac5f306417d07f539593ca715876e43e04896e1d5bcecc= fb288ef2908a3f24b760747d0dbd0392a24b9b341bc3e12082e5c836ee mpc-1.2.1.tar.gz > > +aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231a= f20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 isl-0.24.tar.bz2 > > -- > > 2.41.0 > > --64ee96ce_4404d497_59d--