From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 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-oa1-x2f.google.com with SMTP id 586e51a60fabf-1a28de15c8aso2794005fac.2 for ; Mon, 28 Aug 2023 22:48:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1693288088; x=1693892888; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=PPKEj8wQIg11wW09bAHMj75Cydb83Hx0QSbRNNDOVPc=; b=jNkrKIU4mGVxxC/vH7myzYpMSkID/tc/osPYAy9zlPTSjxx7jrRHYQhcvPfNRFt4mI RGBxK9I90DwBRHzxmvNubko4UAxn8NiCIlToNoNW8uHEgq7c5uCQETbgw9y+QtUL9KYc l4rDp1fmXn+m88t5ArEqPq73Mji9/l+O8E8Lz2jGkMKXpOlKSPTLgcsJjywWKTi6iStg am5rQXM/jPs3cTkV7U6YRRCSlTgEdJS69plhJe8UGk5Wn4AlufIV5inxSFCJls5J8meb xikM7stfQmxQ8OvSM4msIYSIs7ziG3JqP3LZnAFWQunxHrBADWj9oy/Nt1L23YbZsSly PqFg== 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-Google-Smtp-Source: AGHT+IE9kp/Eda8RvO1RB2orlU65u3HtNvCCBUkEtN0pzR7b70xEugajAtVeia2TdZH7j+Wwpcbn5w== 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) From: Jerry Zhang Jian 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 Content-Transfer-Encoding: 8bit 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 List-Id: 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 -- 2.41.0