Bug 1445536 - Add a toolchain job for GCC 7. r?build draft
authorMike Hommey <mh+mozilla@glandium.org>
Wed, 14 Mar 2018 09:37:27 +0900
changeset 767185 e9fd2db1180c5bb325ace1da984717a7923ca64d
parent 767163 c56ef1c14a555023949ad727c86e3c2df995edd2
push id102534
push userbmo:mh+mozilla@glandium.org
push dateWed, 14 Mar 2018 02:39:04 +0000
reviewersbuild
bugs1445536
milestone61.0a1
Bug 1445536 - Add a toolchain job for GCC 7. r?build And adapt the build-gcc.sh script for the changes to contrib/download_prerequisites.
build/unix/build-gcc/build-gcc.sh
taskcluster/ci/toolchain/linux.yml
taskcluster/scripts/misc/build-gcc-7-linux.sh
--- a/build/unix/build-gcc/build-gcc.sh
+++ b/build/unix/build-gcc/build-gcc.sh
@@ -24,37 +24,49 @@ prepare() {
   cd gcc-$gcc_version
 
   (
     # Divert commands that download_prerequisites use
     ln() { :; }
     tar() { :; }
     sed() { :; }
     wget() {
-      echo $1
+      # Get last argument given to wget.
+      eval echo \$$# >&3
     }
 
+    # In GCC >= 7, the download_prerequisites script tried to do its own
+    # verification, but we have ours, so disable it.
+    set -- --no-verify
     . ./contrib/download_prerequisites
-  ) | while read url; do
+  ) 3>&1 > /dev/null | while read url; do
     file=$(basename $url)
     case "$file" in
     gmp-*.tar.*)
       # If download_prerequisites wants 4.3.2, use 5.1.3 instead.
       file=${file/4.3.2/5.1.3}
       download_and_check https://gmplib.org/download/gmp $file.sig
       ;;
     mpfr-*.tar.*)
       # If download_prerequisites wants 2.4.2, use 3.1.5 instead.
       file=${file/2.4.2/3.1.5}
       download_and_check http://www.mpfr.org/${file%.tar.*} $file.asc
       ;;
     mpc-*.tar.*)
       # If download_prerequisites wants 0.8.1, use 0.8.2 instead.
       file=${file/0.8.1/0.8.2}
-      download_and_check http://www.multiprecision.org/downloads $file.asc
+      case "$file" in
+      *-0.8.2.tar*|*-0.9.tar*|*-1.0.tar*)
+        ext=asc
+        ;;
+      *)
+        ext=sig
+        ;;
+      esac
+      download_and_check http://www.multiprecision.org/downloads $file.$ext
       ;;
     *)
       download $(dirname $url) $file
       ;;
     esac
     tar xaf $TMPDIR/$file
     ln -sf ${file%.tar.*} ${file%-*}
   done
--- a/taskcluster/ci/toolchain/linux.yml
+++ b/taskcluster/ci/toolchain/linux.yml
@@ -175,16 +175,33 @@ linux64-gcc-6:
     run:
         using: toolchain-script
         script: build-gcc-6-linux.sh
         resources:
             - 'build/unix/build-gcc/build-gcc.sh'
         toolchain-alias: linux64-gcc
         toolchain-artifact: public/build/gcc.tar.xz
 
+linux64-gcc-7:
+    description: "GCC 7 toolchain build"
+    treeherder:
+        kind: build
+        platform: toolchains/opt
+        symbol: TL(gcc7)
+        tier: 1
+    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
+    worker:
+        max-run-time: 36000
+    run:
+        using: toolchain-script
+        script: build-gcc-7-linux.sh
+        resources:
+            - 'build/unix/build-gcc/build-gcc.sh'
+        toolchain-artifact: public/build/gcc.tar.xz
+
 linux64-sixgill:
     description: "sixgill GCC plugin build"
     treeherder:
         kind: build
         platform: toolchains/opt
         symbol: TL(sixgill)
         tier: 1
     worker-type: aws-provisioner-v1/gecko-{level}-b-linux
copy from taskcluster/scripts/misc/build-gcc-6-linux.sh
copy to taskcluster/scripts/misc/build-gcc-7-linux.sh
--- a/taskcluster/scripts/misc/build-gcc-6-linux.sh
+++ b/taskcluster/scripts/misc/build-gcc-7-linux.sh
@@ -1,23 +1,23 @@
 #!/bin/bash
 set -e
 
-# This script is for building GCC 6 for Linux.
+# This script is for building GCC 7 for Linux.
 
 WORKSPACE=$HOME/workspace
 HOME_DIR=$WORKSPACE/build
 UPLOAD_DIR=$HOME/artifacts
 
 root_dir=$HOME_DIR
 data_dir=$HOME_DIR/src/build/unix/build-gcc
 
 . $data_dir/build-gcc.sh
 
-gcc_version=6.4.0
+gcc_version=7.3.0
 gcc_ext=xz
 binutils_version=2.25.1
 binutils_ext=bz2
 
 # GPG key used to sign GCC
 $GPG --import $data_dir/13975A70E63C361C73AE69EF6EEB81F8981C74C7.key
 # GPG key used to sign binutils
 $GPG --import $data_dir/EAF1C276A747E9ED86210CBAC3126D3B4AE55E93.key
@@ -25,21 +25,21 @@ binutils_ext=bz2
 $GPG --import $data_dir/343C2FF0FBEE5EC2EDBEF399F3599FF828C67298.key
 # GPG key used to sign MPFR
 $GPG --import $data_dir/07F3DBBECC1A39605078094D980C197698C3739D.key
 # GPG key used to sign MPC
 $GPG --import $data_dir/AD17A21EF8AED8F1CC02DBD9F7D5C9BF765C61E3.key
 
 cat > $HOME_DIR/checksums <<EOF
 b5b14added7d78a8d1ca70b5cb75fef57ce2197264f4f5835326b0df22ac9f22  binutils-2.25.1.tar.bz2
-850bf21eafdfe5cd5f6827148184c08c4a0852a37ccf36ce69855334d2c914d4  gcc-6.4.0.tar.xz
-752079520b4690531171d0f4532e40f08600215feefede70b24fabdc6f1ab160  gmp-5.1.3.tar.bz2
-8ceebbf4d9a81afa2b4449113cee4b7cb14a687d7a549a963deb5e2a41458b6b  isl-0.15.tar.bz2
-ae79f8d41d8a86456b68607e9ca398d00f8b7342d1d83bcf4428178ac45380c7  mpc-0.8.2.tar.gz
-ca498c1c7a74dd37a576f353312d1e68d490978de4395fa28f1cbd46a364e658  mpfr-3.1.5.tar.bz2
+832ca6ae04636adbb430e865a1451adf6979ab44ca1c8374f61fba65645ce15c  gcc-7.3.0.tar.xz
+498449a994efeba527885c10405993427995d3f86b8768d8cdf8d9dd7c6b73e8  gmp-6.1.0.tar.bz2
+412538bb65c799ac98e17e8cfcdacbb257a57362acfaaff254b0fcae970126d2  isl-0.16.1.tar.bz2
+617decc6ea09889fb08ede330917a00b16809b8db88c29c31bfbb49cbf88ecc3  mpc-1.0.3.tar.gz
+d3103a80cdad2407ed581f3618c4bed04e0c92d1cf771a65ead662cc397f7775  mpfr-3.1.4.tar.bz2
 EOF
 
 prepare
 build_binutils
 build_gcc
 
 # Put a tarball in the artifacts dir
 mkdir -p $UPLOAD_DIR