Bug 1386588 - Add a toolchain job for GCC 4.8, and build clang against it. r?gps draft
authorMike Hommey <mh+mozilla@glandium.org>
Wed, 02 Aug 2017 19:29:35 +0900
changeset 619731 3d6d5b8016865dcd579be08f900ce196592d12d2
parent 619730 13f1dc5e23978b6c5cc384082e755cf4771ad38b
child 619732 d8954e252860c2b471fa2454a1a191402c5c239c
push id71785
push userbmo:mh+mozilla@glandium.org
push dateWed, 02 Aug 2017 13:26:36 +0000
reviewersgps
bugs1386588, 1356926
milestone56.0a1
Bug 1386588 - Add a toolchain job for GCC 4.8, and build clang against it. r?gps While this looks like going backwards, it is desirable to build clang against GCC 4.8, such that it contains its libgcc. This, in turn, will solve problems using clang 3.9 with static-analysis builds (details in bug 1356926). Another way to fix those problems would be to build clang 3.8 but that too would require GCC 4.8. Upgrading those builds to clang 3.9 will also allow to enable stylo on them.
taskcluster/ci/toolchain/linux.yml
taskcluster/scripts/misc/build-gcc-4.8-linux.sh
--- a/taskcluster/ci/toolchain/linux.yml
+++ b/taskcluster/ci/toolchain/linux.yml
@@ -18,17 +18,17 @@ linux64-clang-3.9:
         script: build-clang-3.9-linux.sh
         resources:
             - 'build/build-clang/build-clang.py'
             - 'build/build-clang/clang-3.9-linux64.json'
             - 'taskcluster/scripts/misc/tooltool-download.sh'
         toolchain-alias: linux64-clang
         toolchain-artifact: public/build/clang.tar.xz
     toolchains:
-        - linux64-gcc
+        - linux64-gcc-4.8
 
 linux64-clang-tidy:
     description: "Clang-tidy build"
     index:
         product: static-analysis
         job-name: linux64-clang-tidy
     treeherder:
         kind: build
@@ -46,16 +46,34 @@ linux64-clang-tidy:
             - 'build/clang-plugin/**'
             - 'build/build-clang/build-clang.py'
             - 'build/build-clang/clang-tidy-linux64.json'
             - 'taskcluster/scripts/misc/tooltool-download.sh'
         toolchain-artifact: public/build/clang-tidy.tar.xz
     toolchains:
         - linux64-gcc
 
+linux64-gcc-4.8:
+    description: "GCC 4.8 toolchain build"
+    treeherder:
+        kind: build
+        platform: toolchains/opt
+        symbol: TL(gcc4.8)
+        tier: 1
+    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
+    worker:
+        docker-image: {in-tree: desktop-build}
+        max-run-time: 36000
+    run:
+        using: toolchain-script
+        script: build-gcc-4.8-linux.sh
+        resources:
+            - 'build/unix/build-gcc/build-gcc.sh'
+        toolchain-artifact: public/build/gcc.tar.xz
+
 linux64-gcc-4.9:
     description: "GCC 4.9 toolchain build"
     treeherder:
         kind: build
         platform: toolchains/opt
         symbol: TL(gcc4.9)
         tier: 1
     worker-type: aws-provisioner-v1/gecko-{level}-b-linux
new file mode 100755
--- /dev/null
+++ b/taskcluster/scripts/misc/build-gcc-4.8-linux.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+set -e
+
+# This script is for building GCC 4.8 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=4.8.5
+gcc_ext=bz2
+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
+# GPG key used to sign GMP
+$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
+22fb1e7e0f68a63cee631d85b20461d1ea6bda162f03096350e38c8d427ecf23  gcc-4.8.5.tar.bz2
+752079520b4690531171d0f4532e40f08600215feefede70b24fabdc6f1ab160  gmp-5.1.3.tar.bz2
+ae79f8d41d8a86456b68607e9ca398d00f8b7342d1d83bcf4428178ac45380c7  mpc-0.8.2.tar.gz
+ca498c1c7a74dd37a576f353312d1e68d490978de4395fa28f1cbd46a364e658  mpfr-3.1.5.tar.bz2
+EOF
+
+prepare
+apply_patch $data_dir/PR64905.patch
+build_binutils
+build_gcc
+
+# Put a tarball in the artifacts dir
+mkdir -p $UPLOAD_DIR
+cp $HOME_DIR/gcc.tar.* $UPLOAD_DIR