public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* port contrib/download_prerequisites script to macOS
@ 2017-04-05  1:11 Damian Rouson
  2017-04-07  1:04 ` [PATCH, contrib] " Jerry DeLisle
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Damian Rouson @ 2017-04-05  1:11 UTC (permalink / raw)
  To: gcc patches; +Cc: Jerry DeLisle

[-- Attachment #1: Type: text/plain, Size: 659 bytes --]

All,

The attached patch modifies the contrib/download_prerequisites script to work on macOS. 
The revised script detects the operating system and adjusts the shasum and md5 commands 
to their expected name and arguments on macOS.  The revised script also uses curl if 
wget is not present.  macOS ships with curl but not wget.

Tested on macOS and Lubuntu and Fedora Linux distributions. 

Ok for trunk?

Damian


2017-04-05  Damian Rouson  <damian@sourceryinstitute.org>

        * download_prerequisites (md5_check): New function emulates Linux
        'md5 --check' on macOS.  Modified script for macOS compatibility.


[-- Attachment #2: macOS-download_prerequisites.diff --]
[-- Type: application/octet-stream, Size: 3495 bytes --]

diff --git a/contrib/download_prerequisites b/contrib/download_prerequisites
index a9eac67..a3918cb 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,19 @@ do
 done
 unset arg
 
+# Emulate Linux's 'md5 --check' on macOS
+md5_check() {
+  md5_checksum_line=$(cat -)                        # Store the standard input: a line from contrib/prerequisites.md5:
+  md5_checksum_expected="${md5_checksum_line%% *}"  # Grab the text before the first space
+  file_to_check="${md5_checksum_line##* }"          # Grab the text after the first space
+  
+  md5_checksum_output=$(md5 -r "${file_to_check}")    # Calculate the md5 checksum for the downloaded file
+  md5_checksum_detected="${md5_checksum_output%% *}"  # Grab the text before the first space
+  [ "${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 +154,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 +214,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

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2017-04-17 21:42 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-05  1:11 port contrib/download_prerequisites script to macOS Damian Rouson
2017-04-07  1:04 ` [PATCH, contrib] " Jerry DeLisle
2017-04-10 16:48 ` Mike Stump
     [not found]   ` <etPan.58ebd61c.3bd0724f.164e@sourceryinstitute.org>
2017-04-11 16:40     ` Jerry DeLisle
2017-04-12 22:03 ` Jeff Law
2017-04-13  0:40   ` Martin Sebor
2017-04-13  3:19     ` Jerry DeLisle
     [not found]   ` <etPan.58f001c5.14409c5f.c453@sourceryinstitute.org>
2017-04-13 23:29     ` Damian Rouson
2017-04-17 22:11       ` Martin Sebor

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).