aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorDamian Rouson <damian@sourceryinstitute.org>2017-04-11 16:34:07 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2017-04-11 16:34:07 +0000
commitb1c0468f72b1f155419a5cb648609a03f2c37d2d (patch)
treebb335fd9a5ca10b24f9c1f4637627e94a6991229 /contrib
parent9b523c934a3bf65645254b811de3333fe18ef40c (diff)
downloadgcc-b1c0468f72b1f155419a5cb648609a03f2c37d2d.zip
gcc-b1c0468f72b1f155419a5cb648609a03f2c37d2d.tar.gz
gcc-b1c0468f72b1f155419a5cb648609a03f2c37d2d.tar.bz2
download_prerequisites (md5_check): New function emulates Linux 'md5 --check' on macOS.
2017-04-11 Damian Rouson <damian@sourceryinstitute.org> * download_prerequisites (md5_check): New function emulates Linux 'md5 --check' on macOS. Modified script for macOS compatibility. From-SVN: r246845
Diffstat (limited to 'contrib')
-rw-r--r--contrib/ChangeLog5
-rwxr-xr-xcontrib/download_prerequisites63
2 files changed, 61 insertions, 7 deletions
diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index f89ff38..dfe5889 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,8 @@
+2017-04-11 Damian Rouson <damian@sourceryinstitute.org>
+
+ * download_prerequisites (md5_check): New function emulates Linux
+ 'md5 --check' on macOS. Modified script for macOS compatibility.
+
2017-02-06 Palmer Dabbelt <palmer@dabbelt.com>
* config-list.mki (LIST): Add riscv32-unknown-linux-gun and
diff --git a/contrib/download_prerequisites b/contrib/download_prerequisites
index a9eac67..3430ce1 100755
--- a/contrib/download_prerequisites
+++ b/contrib/download_prerequisites
@@ -20,7 +20,6 @@
# 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)'
@@ -45,7 +44,23 @@ echo_archives() {
graphite=1
verify=1
force=0
-chksum='sha512'
+OS=$(uname)
+
+case $OS in
+ "Darwin")
+ chksum='shasum -a 512 --check'
+ ;;
+ *)
+ chksum='sha512sum --check'
+ ;;
+esac
+
+if type wget > /dev/null ; then
+ fetch='wget'
+else
+ fetch='curl -LO -u anonymous:'
+fi
+chksum_extension='sha512'
directory='.'
helptext="usage: ${program} [OPTION...]
@@ -95,6 +110,24 @@ do
done
unset arg
+# Emulate Linux's 'md5 --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
@@ -126,11 +159,27 @@ do
verify=0
;;
--sha512)
- chksum='sha512'
+ case $OS in
+ "Darwin")
+ chksum='shasum -a 512 --check'
+ ;;
+ *)
+ chksum='sha512sum --check'
+ ;;
+ esac
+ chksum_extension='sha512'
verify=1
;;
--md5)
- chksum='md5'
+ case $OS in
+ "Darwin")
+ chksum='md5_check'
+ ;;
+ *)
+ chksum='md5 --check'
+ ;;
+ esac
+ chksum_extension='md5'
verify=1
;;
-*)
@@ -170,19 +219,19 @@ for ar in $(echo_archives)
do
if [ ${force} -gt 0 ]; then rm -f "${directory}/${ar}"; fi
[ -e "${directory}/${ar}" ] \
- || wget --no-verbose -O "${directory}/${ar}" "${base_url}${ar}" \
+ || ${fetch} --no-verbose -O "${directory}/${ar}" "${base_url}${ar}" \
|| die "Cannot download ${ar} from ${base_url}"
done
unset ar
if [ ${verify} -gt 0 ]
then
- chksumfile="contrib/prerequisites.${chksum}"
+ chksumfile="contrib/prerequisites.${chksum_extension}"
[ -r "${chksumfile}" ] || die "No checksums available"
for ar in $(echo_archives)
do
grep "${ar}" "${chksumfile}" \
- | ( cd "${directory}" && "${chksum}sum" --check ) \
+ | ( cd "${directory}" && ${chksum} ) \
|| die "Cannot verify integrity of possibly corrupted file ${ar}"
done
unset chksumfile