From nobody Sun May 19 16:27:47 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1579619840; cv=none; d=zohomail.com; s=zohoarc; b=RKv/lCciAONe8ibf3g7bjURfxMX9riaPiS9RGDjllYEgsFrvjVTHJHAQWX343Is+2bk3hGXCdYvqPDSEbdU9f6HEU4Tl/XFkbDt14A5WaOpFNQpJdeppvkk82mj3b0HYyFIgoNJfdEWLHugVGnkDcRtS+7eDQ0FrOkUsaYBIzn4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1579619840; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=LJ69MA94HymB7Wu/TMg3CaTPgcVavh3x5PG4KSTyato=; b=gpF3nOiV2iq0xxjHrc/unga/YpLisakpV0/CIFzZtFDJfW5hT/jsua9yX95xyrUfeU0LsGBVUrd9OJ0suJr4ZPh/cENC3vcIksA/jZkuu76z5pksII85j5s/ItnTaqwXbuEtX92AQuhA/Y+DLtbla76m2t8wul8aOs5oAdEf2JI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1579619840187925.5368948633492; Tue, 21 Jan 2020 07:17:20 -0800 (PST) Received: from localhost ([::1]:56572 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1itvHL-0007jq-0z for importer@patchew.org; Tue, 21 Jan 2020 10:17:19 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:53450) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1itvGA-0006xp-FD for qemu-devel@nongnu.org; Tue, 21 Jan 2020 10:16:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1itvG5-00058S-HM for qemu-devel@nongnu.org; Tue, 21 Jan 2020 10:16:05 -0500 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:49188 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1itvG5-00058C-D6 for qemu-devel@nongnu.org; Tue, 21 Jan 2020 10:16:01 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-183-0KxASM3XMX62HpXb2MrASw-1; Tue, 21 Jan 2020 10:15:58 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id B8A48801E67 for ; Tue, 21 Jan 2020 15:15:57 +0000 (UTC) Received: from x1w.redhat.com (ovpn-205-38.brq.redhat.com [10.40.205.38]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 7935A60E1C; Tue, 21 Jan 2020 15:15:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1579619760; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=LJ69MA94HymB7Wu/TMg3CaTPgcVavh3x5PG4KSTyato=; b=HK82bLfYYcPrCHheaDYWfMBqriEFICJ5hPJxDVDa5bPMDNp8G+Ub2tEJWG2J9iuxLBZ5LF Yyyhn9ExuSeclQ1/tU5cem6pvlbiZgfJjug0z2QNG9W2ErEzOjBQjcNzU9cEsAxKwskcvR qthJByIaLUKbEgnMUkPqElmiaO1zXGk= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 1/2] roms/edk2-funcs: Force softfloat ARM toolchain prefix on Debian Date: Tue, 21 Jan 2020 16:15:42 +0100 Message-Id: <20200121151543.18538-2-philmd@redhat.com> In-Reply-To: <20200121151543.18538-1-philmd@redhat.com> References: <20200121151543.18538-1-philmd@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-MC-Unique: 0KxASM3XMX62HpXb2MrASw-1 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 207.211.31.120 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , Laszlo Ersek Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The Debian (based) distributions currently provides 2 ARM toolchains, documented as [1]: * The ARM EABI (armel) port targets a range of older 32-bit ARM devices, particularly those used in NAS hardware and a variety of *plug computers. * The newer ARM hard-float (armhf) port supports newer, more powerful 32-bit devices using version 7 of the ARM architecture specification. For various reasons documented in [2], the EDK2 project suggests to use the softfloat toolchain (named 'armel' by Debian). Force the softfloat cross toolchain prefix on Debian distributions. [1] https://www.debian.org/ports/arm/#status [2] https://github.com/tianocore/edk2/commit/41203b9a Reviewed-by: Laszlo Ersek Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- roms/edk2-funcs.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/roms/edk2-funcs.sh b/roms/edk2-funcs.sh index 3f4485b201..cd6e4f2c82 100644 --- a/roms/edk2-funcs.sh +++ b/roms/edk2-funcs.sh @@ -112,6 +112,9 @@ qemu_edk2_get_cross_prefix() ( [ "$gcc_arch" =3D=3D i686 ] && [ "$host_arch" =3D=3D x86_64 ] ); th= en # no cross-compiler needed : + elif ( [ -e /etc/debian_version ] && [ "$gcc_arch" =3D=3D arm ] ); then + # force soft-float cross-compiler on Debian + printf 'arm-linux-gnueabi-' else printf '%s-linux-gnu-\n' "$gcc_arch" fi --=20 2.21.1 From nobody Sun May 19 16:27:47 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1579620085; cv=none; d=zohomail.com; s=zohoarc; b=Vc4HO5yhvjzRVvUCo8pRFCJTu/Kx4z7Tj/2XSBqyC8KfU8ZwYOxYvSFQxcogtPU/10wjdqGfJOlsFqvY5ZzgfWCSvuwnKNtEoI0U2lnAWlE5m4ARWE47jdb1ZkryDvLmSaYu5IuFxgdqIQK9Q7JLddUx1ygxVt2bpTQA7s8NL2A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1579620085; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=SEpsyadu7vYAwnKkNX9/a5tUeKZfr6O+ualpnw2u/24=; b=ZgjIdUSFO7C3amymSjqBDt3XYgFf1uYzn3Eyz3O/SLAvGLmP3zzD+UP1kqi8t7fY8HO0//LXQs5gvlPX1j9JSyKS/B/jCz3ssw7N8wsc/WVmVVkF0w08rk2YNaH0ya06u8/g92jww8azJOnbxv67bBFBj3YD/YVZ76jvRsF+0U4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1579620085961632.3099369252719; Tue, 21 Jan 2020 07:21:25 -0800 (PST) Received: from localhost ([::1]:56618 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1itvLI-000274-LI for importer@patchew.org; Tue, 21 Jan 2020 10:21:24 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:53466) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1itvGG-00070h-Ez for qemu-devel@nongnu.org; Tue, 21 Jan 2020 10:16:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1itvGE-0005D7-UP for qemu-devel@nongnu.org; Tue, 21 Jan 2020 10:16:12 -0500 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:20587 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1itvGE-0005Ct-Pq for qemu-devel@nongnu.org; Tue, 21 Jan 2020 10:16:10 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-398-tdTDKlRzOheJuMTnX0wLOA-1; Tue, 21 Jan 2020 10:16:03 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 56AF618AAFAC for ; Tue, 21 Jan 2020 15:16:02 +0000 (UTC) Received: from x1w.redhat.com (ovpn-205-38.brq.redhat.com [10.40.205.38]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4FCB060C88; Tue, 21 Jan 2020 15:15:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1579619770; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=SEpsyadu7vYAwnKkNX9/a5tUeKZfr6O+ualpnw2u/24=; b=EUXrcgP4of/qGprOSD6sLBTLk3Qgoq1/I717lVcNHd+ORHYawJWEonyLd3CRIhywR7DXfQ LCRFDP1EKCNhCAW+CboZKr5sdCDiI1q1sBfUdMHEOmwPfkyCSJPb+h+sWBiab8EXquc9Pw eCt2cirbxjESGswinfhIxc/mjTIC4ow= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 2/2] gitlab-ci.yml: Add jobs to build EDK2 firmware binaries Date: Tue, 21 Jan 2020 16:15:43 +0100 Message-Id: <20200121151543.18538-3-philmd@redhat.com> In-Reply-To: <20200121151543.18538-1-philmd@redhat.com> References: <20200121151543.18538-1-philmd@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-MC-Unique: tdTDKlRzOheJuMTnX0wLOA-1 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 205.139.110.120 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , Laszlo Ersek Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Add two GitLab job to build the EDK2 firmware binaries. The first job build a Docker image with the packages requisite to build EDK2, and store this image in the GitLab registry. The second job pull the image from the registry and build the EDK2 firmware binaries. The docker image is only rebuilt if the GitLab YAML or the Dockerfile is updated. The second job is only built when the roms/edk2/ submodule is updated, when a git-ref starts with 'edk2' or when the last commit contains 'EDK2'. The files generated are archived in the artifacts.zip file. With edk2-stable201905, it took 2 minutes 52 seconds to build the docker image, and 36 minutes 28 seconds to generate the artifacts.zip with the firmware binaries (filesize: 10MiB). See: https://gitlab.com/philmd/qemu/pipelines/107553178 Reviewed-by: Laszlo Ersek Acked-by: Thomas Huth Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- .gitlab-ci-edk2.yml | 49 ++++++++++++++++++++++++++++++++++++ .gitlab-ci.d/edk2/Dockerfile | 27 ++++++++++++++++++++ .gitlab-ci.yml | 3 +++ MAINTAINERS | 2 ++ 4 files changed, 81 insertions(+) create mode 100644 .gitlab-ci-edk2.yml create mode 100644 .gitlab-ci.d/edk2/Dockerfile diff --git a/.gitlab-ci-edk2.yml b/.gitlab-ci-edk2.yml new file mode 100644 index 0000000000..088ba4b43a --- /dev/null +++ b/.gitlab-ci-edk2.yml @@ -0,0 +1,49 @@ +docker-edk2: + stage: build + rules: # Only run this job when the Dockerfile is modified + - changes: + - .gitlab-ci-edk2.yml + - .gitlab-ci.d/edk2/Dockerfile + when: always + image: docker:19.03.1 + services: + - docker:19.03.1-dind + variables: + GIT_DEPTH: 3 + IMAGE_TAG: $CI_REGISTRY_IMAGE:edk2-cross-build + # We don't use TLS + DOCKER_HOST: tcp://docker:2375 + DOCKER_TLS_CERTDIR: "" + before_script: + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + script: + - docker pull $IMAGE_TAG || true + - docker build --cache-from $IMAGE_TAG --tag $CI_REGISTRY_IMAGE:$CI_COMMI= T_SHA + --tag $IMAGE_TAG .gitlab-ci.d/edk2 + - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA + - docker push $IMAGE_TAG + +build-edk2: + rules: # Only run this job when ... + - changes: # ... roms/edk2/ is modified (submodule updated) + - roms/edk2/* + when: always + - if: '$CI_COMMIT_REF_NAME =3D~ /^edk2/' # or the branch/tag starts with = 'edk2' + when: always + - if: '$CI_COMMIT_MESSAGE =3D~ /edk2/i' # or last commit description cont= ains 'EDK2' + when: always + artifacts: + paths: # 'artifacts.zip' will contains the following files: + - pc-bios/edk2*bz2 + - pc-bios/edk2-licenses.txt + - edk2-stdout.log + - edk2-stderr.log + image: $CI_REGISTRY_IMAGE:edk2-cross-build + variables: + GIT_DEPTH: 3 + script: # Clone the required submodules and build EDK2 + - git submodule update --init roms/edk2 + - git -C roms/edk2 submodule update --init + - export JOBS=3D$(($(getconf _NPROCESSORS_ONLN) + 1)) + - echo "=3D=3D=3D Using ${JOBS} simultaneous jobs =3D=3D=3D" + - make -j${JOBS} -C roms efi 2>&1 1>edk2-stdout.log | tee -a edk2-stderr.= log >&2 diff --git a/.gitlab-ci.d/edk2/Dockerfile b/.gitlab-ci.d/edk2/Dockerfile new file mode 100644 index 0000000000..b4584d1cf6 --- /dev/null +++ b/.gitlab-ci.d/edk2/Dockerfile @@ -0,0 +1,27 @@ +# +# Docker image to cross-compile EDK2 firmware binaries +# +FROM ubuntu:16.04 + +MAINTAINER Philippe Mathieu-Daud=C3=A9 + +# Install packages required to build EDK2 +RUN apt update \ + && \ + \ + DEBIAN_FRONTEND=3Dnoninteractive \ + apt install --assume-yes --no-install-recommends \ + build-essential \ + ca-certificates \ + dos2unix \ + gcc-aarch64-linux-gnu \ + gcc-arm-linux-gnueabi \ + git \ + iasl \ + make \ + nasm \ + python \ + uuid-dev \ + && \ + \ + rm -rf /var/lib/apt/lists/* diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d9a90f795d..228783993e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,3 +1,6 @@ +include: + - local: '/.gitlab-ci-edk2.yml' + before_script: - apt-get update -qq - apt-get install -y -qq flex bison libglib2.0-dev libpixman-1-dev geniso= image diff --git a/MAINTAINERS b/MAINTAINERS index 55d3642e6c..2c768ed3d8 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2368,6 +2368,8 @@ F: roms/edk2 F: roms/edk2-* F: tests/data/uefi-boot-images/ F: tests/uefi-test-tools/ +F: .gitlab-ci-edk2.yml +F: .gitlab-ci.d/edk2/ =20 Usermode Emulation ------------------ --=20 2.21.1