aboutsummaryrefslogtreecommitdiff
path: root/leg-tiancore-edk2-build-test.yaml
blob: 48902324167c8e8befcd26f72f108c92fdecda91 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
- job:
    name: leg-tianocore-edk2-build-test
    project-type: freestyle
    defaults: global
    logrotate:
        daysToKeep: 30
        numToKeep: 30
    properties:
        - authorization:
            anonymous:
                - job-read
                - job-extended-read
                - job-workspace
            linaro:
                - job-read
                - job-extended-read
                - job-build
                - job-cancel
    parameters:
        - string:
            name: GIT_REPO
            default: 'https://git.linaro.org/people/ard.biesheuvel/uefi-next.git'
        - string:
            name: GIT_BRANCH
            default: 'unify-gcc-v2'
    disabled: false
    node: docker-utopic-amd64
    display-name: 'Linaro EDK II - multiarch build test'
    scm:
        - git:
            url: ${GIT_REPO}
            refspec: +refs/heads/${GIT_BRANCH}:refs/remotes/origin/${GIT_BRANCH}
            name: origin
            branches:
                - refs/heads/${GIT_BRANCH}
            basedir: edk2
            skip-tag: true
            shallow-clone: true
            clean: true
            wipe-workspace: true
    wrappers:
        - timestamps
        - build-name:
            name: '#${BUILD_NUMBER}-${GIT_REVISION,length=8}'
    builders:
        - linaro-publish-token
        - shell: |
            #!/bin/bash

            set -ex

            trap cleanup_exit INT TERM EXIT

            cleanup_exit()
            {
              cd ${WORKSPACE}
              rm -rf out edk2/Build
            }

            # use the GCC 4.[89] toolchains that are already available on the build host
            export GCC48_AARCH64_PREFIX=${HOME}/srv/toolchain/arm64-tc-14.04/bin/aarch64-linux-gnu-
            export GCC48_ARM_PREFIX=${HOME}/srv/toolchain/arm-tc-14.04/bin/arm-linux-gnueabihf-

            export GCC49_AARCH64_PREFIX=${HOME}/srv/toolchain/arm64-tc-14.09/bin/aarch64-linux-gnu-
            export GCC49_ARM_PREFIX=${HOME}/srv/toolchain/arm-tc-14.09/bin/arm-linux-gnueabihf-

            # reuse the binutils that ship with GCC 4.9 for the CLANG35 builds
            export CLANG35_AARCH64_PREFIX=${HOME}/srv/toolchain/arm64-tc-14.09/bin/aarch64-linux-gnu-

            sudo sed -i -e 's/archive.ubuntu.com\|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list
            sudo apt-get update
            sudo apt-get install -y --no-install-recommends clang gcc-4.4 gcc-4.6 gcc-4.7 gcc-4.8 gcc-4.9 gcc-mingw-w64 nasm

            # set up the paths for the various GCC versions
            for i in 4 6 7 8 9
            do
                export GCC4${i}_BIN=${WORKSPACE}/GCC4${i}/

                mkdir ${WORKSPACE}/GCC4${i}
                for t in objcopy ld ar make
                do
                    ln -s /usr/bin/$t ${WORKSPACE}/GCC4${i}/
                done
                ln -s /usr/bin/gcc-4.${i} ${WORKSPACE}/GCC4${i}/gcc
            done
                    
            export OUTDIR=${WORKSPACE}/out

            (
                unset WORKSPACE

                NUM_THREADS=$((`getconf _NPROCESSORS_ONLN` + 1))

                # Initialise the build environment
                cd edk2
                git clean -dxf BaseTools/
                make -C BaseTools

                source edksetup.sh

                # override the mingw prefixes
                sed 's/^\(DEFINE.\+UNIXGCC_IA32_PETOOLS_PREFIX.\+=\).\+/\1 i686-w64-mingw32-/' -i Conf/tools_def.txt
                sed 's/^\(DEFINE.\+UNIXGCC_X64_PETOOLS_PREFIX.\+=\).\+/\1 x86_64-w64-mingw32-/' -i Conf/tools_def.txt

                # download and unpack the OpenSSL tarball
                cd ${WORKSPACE}/CryptoPkg/Library/OpensslLib

                # capture OpenSSL version number from the HOWTO
                VERSION=$(grep 'Current supported OpenSSL version' Patch-HOWTO.txt |sed 's/^[^0-9]\+\([0-9]\(\.[0-9]\)\+[a-z]*\).*\r\?$/\1/')

                wget -O - -q "http://www.openssl.org/source/openssl-${VERSION}.tar.gz" | tar xzf -
                ( cd openssl-${VERSION}; patch -p0 -i ../EDKII_openssl-${VERSION}.patch )
                ./Install.sh

                cd ${WORKSPACE}
                
                build -n $NUM_THREADS -b DEBUG -b RELEASE -a AARCH64 -t GCC48 -t GCC49 -t CLANG35 -p ArmVirtPkg/ArmVirtQemu.dsc -D SECURE_BOOT_ENABLE
                build -n $NUM_THREADS -b DEBUG -b RELEASE -a AARCH64 -t GCC48 -t GCC49 -t CLANG35 -p ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-FVP-AArch64.dsc
                build -n $NUM_THREADS -b DEBUG -b RELEASE -a AARCH64 -t GCC48 -t GCC49 -t CLANG35 -p ArmVirtPkg/ArmVirtXen.dsc
                build -n $NUM_THREADS -b DEBUG -b RELEASE -a AARCH64 -t GCC48 -t GCC49 -t CLANG35 -p ArmPlatformPkg/ArmJunoPkg/ArmJuno.dsc
                build -n $NUM_THREADS -b DEBUG -b RELEASE -a ARM     -t GCC48 -t GCC49            -p ArmVirtPkg/ArmVirtQemu.dsc

                build -n $NUM_THREADS -b DEBUG -a IA32 -t GCC44 -t GCC46 -t GCC47 -t GCC48 -t GCC49 -t UNIXGCC -p OvmfPkg/OvmfPkgIa32.dsc -D SECURE_BOOT_ENABLE
                build -n $NUM_THREADS -b DEBUG -a X64  -t GCC44 -t GCC46 -t GCC47 -t GCC48 -t GCC49 -t UNIXGCC -p OvmfPkg/OvmfPkgX64.dsc  -D SECURE_BOOT_ENABLE

                build -n $NUM_THREADS -b RELEASE -a IA32 -t GCC44 -t GCC46 -t GCC47 -t GCC48 -t GCC49 -p OvmfPkg/OvmfPkgIa32.dsc
                build -n $NUM_THREADS -b RELEASE -a X64  -t GCC44 -t GCC46 -t GCC47 -t GCC48 -t GCC49 -p OvmfPkg/OvmfPkgX64.dsc

            )

    publishers:
        - email:
            recipients: 'ard.biesheuvel@linaro.org'