aboutsummaryrefslogtreecommitdiff
path: root/96boards-reference-uefi.yaml
blob: c35ae35fa82fcc146fe4b803eee98b7914c26a8c (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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
- job:
    name: 96boards-reference-uefi
    project-type: matrix
    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
    disabled: false
    node: build
    child-workspace: .
    display-name: '96boards - Reference Component - UEFI'
    scm:
        - git:
            url: https://github.com/96boards/edk2.git
            refspec: +refs/heads/reference:refs/remotes/origin/reference
            name: origin
            branches:
                - refs/heads/reference
            basedir: edk2
            skip-tag: true
            shallow-clone: true
            clean: true
            wipe-workspace: false
    triggers:
        - pollscm: 'H/5 * * * *'
    axes:
        - axis:
            type: user-defined
            name: MX_PLATFORM
            values:
                - hikey
        - axis:
            type: user-defined
            name: MX_TYPE
            values:
                - RELEASE
                - DEBUG
        - axis:
            type: slave
            name: label
            values:
                - docker-utopic-amd64
    execution-strategy:
        sequential: true
        touchstone:
            expr: 'MX_PLATFORM=="hikey" && MX_TYPE=="RELEASE"'
    wrapper:
        - timestamps
        - build-name:
            name: '#${BUILD_NUMBER}-${GIT_REVISION,length=8}'
        - matrix-tie-parent:
            node: build
    builders:
        - linaro-publish-token:
            host: builds.96boards.org
        - shell: |
            #!/bin/bash

            export JOB_NAME=96boards-reference-uefi
            echo "JOB_URL: ${JOB_URL}"
            echo "BUILD_URL: ${BUILD_URL}"
            echo "WORKSPACE: ${WORKSPACE}"
            echo "BUILD_NUMBER: ${BUILD_NUMBER}"

            # Create lower case debug/release string for use in paths
            BUILD_TYPE="${MX_TYPE,,}"

            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 python-pycurl zip

            set -ex

            trap cleanup_exit INT TERM EXIT

            cleanup_exit()
            {
              cd ${WORKSPACE}
              rm -rf arm-trusted-firmware
              rm -rf uefi-tools
              rm -rf l-loader
              rm -rf out edk2/Build
            }

            # Use pre-installed linaro toolchain (GCC 4.9)
            export PATH="${HOME}/srv/toolchain/arm64-tc-15.02/bin:$PATH"

            # Check out common tools and repositories
            git clone git://git.linaro.org/uefi/uefi-tools.git

            # Check out arm-trusted-firmware (not upstream yet, so also from github)
            git clone -b reference --depth 1 https://github.com/96boards/arm-trusted-firmware.git

            export AARCH64_TOOLCHAIN=GCC49
            export EDK2_DIR=${WORKSPACE}/edk2
            export UEFI_TOOLS_DIR=${WORKSPACE}/uefi-tools
            export JENKINS_WORKSPACE=${WORKSPACE}
            # WORKSPACE is used by uefi-build.sh
            unset WORKSPACE

            # Build UEFI for the desired platform, with the specified build type
            cd ${EDK2_DIR}
            bash -x ${UEFI_TOOLS_DIR}/uefi-build.sh -b ${MX_TYPE} -a ../arm-trusted-firmware ${MX_PLATFORM}

            unset WORKSPACE
            export WORKSPACE=${JENKINS_WORKSPACE}

            # Find out the artifacts and image dir so we can publish the correct output files
            IMAGES=`$UEFI_TOOLS_DIR/parse-platforms.py -c $UEFI_TOOLS_DIR/platforms.config -p ${MX_PLATFORM} images`
            IMAGE_DIR=`$UEFI_TOOLS_DIR/parse-platforms.py -c $UEFI_TOOLS_DIR/platforms.config -p ${MX_PLATFORM} -o UEFI_IMAGE_DIR get`

            cd ${WORKSPACE}
            mkdir -p out/${BUILD_TYPE}
            for image in ${IMAGES}; do
                cp -a ${EDK2_DIR}/Build/${IMAGE_DIR}/${MX_TYPE}_*/FV/${image} out/${BUILD_TYPE}/
            done

            if [ "${MX_PLATFORM}" == "hikey" ]; then
                # Additional components for hikey, such as fastboot and l-loader
                cp -a ${EDK2_DIR}/Build/${IMAGE_DIR}/${MX_TYPE}_*/AARCH64/AndroidFastbootApp.efi out/${BUILD_TYPE}
                git clone --depth 1 https://github.com/96boards/l-loader.git
                cd l-loader
                ln -s ${WORKSPACE}/out/${BUILD_TYPE}/bl1.bin
                make
                cp -a l-loader.bin ptable*.img ${WORKSPACE}/out/${BUILD_TYPE}
                cd ${WORKSPACE}
            fi

            # Publish
            test -d ${HOME}/bin || mkdir ${HOME}/bin
            wget https://git.linaro.org/ci/publishing-api.git/blob_plain/HEAD:/linaro-cp.py -O ${HOME}/bin/linaro-cp.py
            time python ${HOME}/bin/linaro-cp.py \
              --server ${PUBLISH_SERVER} \
              out/${BUILD_TYPE} snapshots/reference-platform/uefi/${BUILD_NUMBER}/${BUILD_TYPE}/${MX_PLATFORM}/
            python ${HOME}/bin/linaro-cp.py \
              --server ${PUBLISH_SERVER} \
              --make-link snapshots/reference-platform/uefi/${BUILD_NUMBER}
    publishers:
        - email:
            recipients: 'ricardo.salveti@linaro.org'