[commit: ghc] master: Windows: Update the mirror script to generate hashes and use mirror fallback (980e127)

git at git.haskell.org git at git.haskell.org
Wed Oct 25 19:47:48 UTC 2017


Repository : ssh://git@git.haskell.org/ghc

On branch  : master
Link       : http://ghc.haskell.org/trac/ghc/changeset/980e1270ed7f681ef666ca36fe291cfb8613348c/ghc

>---------------------------------------------------------------

commit 980e1270ed7f681ef666ca36fe291cfb8613348c
Author: Tamar Christina <tamar at zhox.com>
Date:   Wed Oct 25 14:19:44 2017 -0400

    Windows: Update the mirror script to generate hashes and use mirror fallback
    
    This fixes the mirror script so it correctly queries haskell.org and if
    packages aren't found check repo.msys2.org.
    
    Also the mirror functionality now generates the md5 hashes after a
    mirror fetch that can be placed in the md5sums file.
    
    Test Plan:
     mk/get-win32-tarballs.sh fetch mirror
    
     and ./validate
    
    Reviewers: austin, bgamari
    
    Reviewed By: bgamari
    
    Subscribers: rwbarton, thomie
    
    Differential Revision: https://phabricator.haskell.org/D4118


>---------------------------------------------------------------

980e1270ed7f681ef666ca36fe291cfb8613348c
 mk/get-win32-tarballs.sh | 30 ++++++++++++++++++++++++------
 1 file changed, 24 insertions(+), 6 deletions(-)

diff --git a/mk/get-win32-tarballs.sh b/mk/get-win32-tarballs.sh
index b3c9e07..a337019 100755
--- a/mk/get-win32-tarballs.sh
+++ b/mk/get-win32-tarballs.sh
@@ -22,11 +22,11 @@ download_file() {
 
     if ! test -f "${dest_file}"
     then
-        local curl_cmd="curl -L ${file_url} -o ${dest_file} --create-dirs -# ${extra_curl_opts}"
+        local curl_cmd="curl -f -L ${file_url} -o ${dest_file} --create-dirs -# ${extra_curl_opts}"
         if test -n "${backup_url}"; then
-            local curl_cmd_bnk="curl -L ${backup_url} -o ${dest_file} --create-dirs -# ${extra_curl_opts}"
+            local curl_cmd_bnk="curl -f -L ${backup_url} -o ${dest_file} --create-dirs -# ${extra_curl_opts}"
         else
-            local curl_cmd_bnk="echo 1"
+            local curl_cmd_bnk="true"
         fi
 
         if test "$download" = "0"
@@ -37,9 +37,10 @@ download_file() {
             return
         else
             echo "Downloading ${description} to ${dest_dir}..."
-            $curl_cmd || $curl_cmd_bnk || {
+            $curl_cmd || echo "Checking repo.msys2.org instead of Haskell.org..." && $curl_cmd_bnk || {
                 rm -f "${dest_file}"
                 fail "ERROR: Download failed."
+                exit 1
             }
         fi
     fi
@@ -48,10 +49,16 @@ download_file() {
     if test "$sigs" = "1" -a ! -f "$sig_file"
     then
         echo "Downloading ${description} (signature) to ${dest_dir}..."
-        local curl_cmd="curl -L ${file_url}.sig -o ${sig_file} --create-dirs -# ${extra_curl_opts}"
-        $curl_cmd || {
+        local curl_cmd="curl -f -L ${file_url}.sig -o ${sig_file} --create-dirs -# ${extra_curl_opts}"
+        if test -n "${backup_url}"; then
+            local curl_cmd_bnk="curl -f -L ${backup_url} -o ${sig_file} --create-dirs -# ${extra_curl_opts}"
+        else
+            local curl_cmd_bnk="true"
+        fi
+        $curl_cmd || echo "Checking repo.msys2.org instead of Haskell.org..." && $curl_cmd_bnk || {
                 rm -f "${dest_file}.sig"
                 fail "ERROR: Download failed."
+                exit 1
             }
     fi
 
@@ -72,6 +79,7 @@ download_mingw() {
                                        -e 's/-sources-/-/' \
                                        -e 's/-libwinpthread-git-/-winpthreads-git-/' `
         local mingw_url="${mingw_base_url_primary}/${mingw_url_tmp}"
+        local mingw_url_backup="${mingw_base_url_secondary}/${mingw_url_tmp}"
     else
         local mingw_url="${mingw_base_url_primary}/$1"
         local mingw_url_backup="${mingw_base_url_secondary}/$1"
@@ -165,6 +173,10 @@ sync_binaries_and_sources() {
     done
 }
 
+show_hashes_for_binaries() {
+    $FIND ghc-tarballs/ -iname "*.*" | xargs md5sum | grep -v "\.sig" | sed -s "s/\*//"
+}
+
 usage() {
     echo "$0 - Download GHC mingw toolchain tarballs"
     echo
@@ -175,6 +187,7 @@ usage() {
     echo "    download     download the necessary tarballs for the given architecture"
     echo "    fetch        download the necessary tarballs for the given architecture but doesn't verify their md5."
     echo "    verify       verify the existence and correctness of the necessary tarballs"
+    echo "    hash         generate md5 hashes for inclusion in win32-tarballs.md5sum"
     echo "    sync         upload packages downloaded with 'fetch mirror' to haskell.org"
     echo ""
     echo "and <arch> is one of i386, x86_64,all or mirror (which includes sources)"
@@ -199,6 +212,10 @@ case $1 in
         verify=0
         sync=1
         ;;
+    hash)
+        show_hashes_for_binaries
+        exit 1
+        ;;
     *)
         usage
         exit 1
@@ -222,6 +239,7 @@ case $2 in
         download_x86_64
         verify=0
         download_sources
+        show_hashes_for_binaries
         ;;
     *)
         if test "$sync" = "1"; then



More information about the ghc-commits mailing list