[PATCH] .travis.yml: Test the release tarball

Philippe Mathieu-Daudé posted 1 patch 4 years, 7 months ago
Test docker-clang@ubuntu passed
Test docker-quick@centos7 passed
Test docker-mingw@fedora passed
Test asan failed
Test checkpatch passed
Test FreeBSD passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20190920174219.22005-1-philmd@redhat.com
Maintainers: "Alex Bennée" <alex.bennee@linaro.org>, Fam Zheng <fam@euphon.net>, "Philippe Mathieu-Daudé" <philmd@redhat.com>
There is a newer version of this series
.travis.yml | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
[PATCH] .travis.yml: Test the release tarball
Posted by Philippe Mathieu-Daudé 4 years, 7 months ago
Add a job to generate the release tarball and build/install few
QEMU targets from it.

Ideally we should build the 'efi' target from the 'roms' directory,
but it is too time consuming.

This job is only triggered when a tag starting with 'v' is pushed,
which is the case with release candidate tags.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
This job is quick enough: Ran for 15 min 32 sec
https://travis-ci.org/philmd/qemu/jobs/587583631

Based-on: <20190912231202.12327-1-mdroth@linux.vnet.ibm.com>
"Fix tarball builds of UEFI/EDK2 firmware"
https://lists.gnu.org/archive/html/qemu-devel/2019-09/msg02734.html
---
 .travis.yml | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/.travis.yml b/.travis.yml
index d0b9e099b9..a21f99d22d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -339,3 +339,25 @@ matrix:
         - CONFIG="--target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu"
         - TEST_CMD="make -j3 check-tcg V=1"
         - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
+
+
+    # Release builds
+    # The make-release script expect a QEMU version, so our tag must start with a 'v'
+    - if: tag IS present AND tag =~ ^v
+      env:
+        # We want to build from the release tarball
+        - BUILD_DIR="release/build/dir" SRC_DIR="../../.."
+        - BASE_CONFIG="--prefix=$PWD/dist"
+        - CONFIG="--target-list=x86_64-softmmu,aarch64-softmmu,armeb-linux-user,ppc-linux-user"
+        - TEST_CMD="make install -j3"
+        - QEMU_VERSION="${TRAVIS_TAG:1}"
+        - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
+      before_script:
+        - command -v ccache && ccache --zero-stats
+        - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR}
+      script:
+        - ${SRC_DIR}/scripts/make-release ${SRC_DIR} ${QEMU_VERSION}
+        - ls -l qemu-${QEMU_VERSION}.tar.bz2
+        - tar -xf qemu-${QEMU_VERSION}.tar.bz2 && cd qemu-${QEMU_VERSION}
+        - ./configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; }
+        - make install
-- 
2.20.1


Re: [PATCH] .travis.yml: Test the release tarball
Posted by Philippe Mathieu-Daudé 4 years, 7 months ago
On 9/20/19 7:42 PM, Philippe Mathieu-Daudé wrote:
> Add a job to generate the release tarball and build/install few
> QEMU targets from it.
> 
> Ideally we should build the 'efi' target from the 'roms' directory,
> but it is too time consuming.
> 
> This job is only triggered when a tag starting with 'v' is pushed,
> which is the case with release candidate tags.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
> This job is quick enough: Ran for 15 min 32 sec
> https://travis-ci.org/philmd/qemu/jobs/587583631
> 
> Based-on: <20190912231202.12327-1-mdroth@linux.vnet.ibm.com>
> "Fix tarball builds of UEFI/EDK2 firmware"
> https://lists.gnu.org/archive/html/qemu-devel/2019-09/msg02734.html
> ---
>  .travis.yml | 22 ++++++++++++++++++++++
>  1 file changed, 22 insertions(+)
> 
> diff --git a/.travis.yml b/.travis.yml
> index d0b9e099b9..a21f99d22d 100644
> --- a/.travis.yml
> +++ b/.travis.yml
> @@ -339,3 +339,25 @@ matrix:
>          - CONFIG="--target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu"
>          - TEST_CMD="make -j3 check-tcg V=1"
>          - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
> +
> +
> +    # Release builds
> +    # The make-release script expect a QEMU version, so our tag must start with a 'v'

*sigh* I forgot to commit my stash.

This is simply a change in the comment:

-- >8 --
@@ -342,7 +342,8 @@
     # Release builds
-    # The make-release script expect a QEMU version, so our tag must
start with a 'v'
+    # The make-release script expect a QEMU version, so our tag must
start with a 'v'.
+    # This is the case when release candidate tags are created.
---

> +    - if: tag IS present AND tag =~ ^v
> +      env:
> +        # We want to build from the release tarball
> +        - BUILD_DIR="release/build/dir" SRC_DIR="../../.."
> +        - BASE_CONFIG="--prefix=$PWD/dist"
> +        - CONFIG="--target-list=x86_64-softmmu,aarch64-softmmu,armeb-linux-user,ppc-linux-user"
> +        - TEST_CMD="make install -j3"
> +        - QEMU_VERSION="${TRAVIS_TAG:1}"
> +        - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
> +      before_script:
> +        - command -v ccache && ccache --zero-stats
> +        - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR}
> +      script:
> +        - ${SRC_DIR}/scripts/make-release ${SRC_DIR} ${QEMU_VERSION}
> +        - ls -l qemu-${QEMU_VERSION}.tar.bz2
> +        - tar -xf qemu-${QEMU_VERSION}.tar.bz2 && cd qemu-${QEMU_VERSION}
> +        - ./configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; }
> +        - make install
> 

Re: [PATCH] .travis.yml: Test the release tarball
Posted by Michael Roth 4 years, 6 months ago
Quoting Philippe Mathieu-Daudé (2019-09-20 12:42:19)
> Add a job to generate the release tarball and build/install few
> QEMU targets from it.
> 
> Ideally we should build the 'efi' target from the 'roms' directory,
> but it is too time consuming.

Individual targets might not be too bad. For instance:

  make -f Makefile.edk2 ../pc-bios/edk2-x86_64-secure-code.fd.bz2

builds in about 7m on my 2-core laptop, but the invocation is sort of hacky.
Probably makes sense to expose via `make efi-<arch>` targets before adding
such a test.

Cases covered here seem like a good starting point. Just some minor comments
below.

> 
> This job is only triggered when a tag starting with 'v' is pushed,
> which is the case with release candidate tags.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
> This job is quick enough: Ran for 15 min 32 sec
> https://travis-ci.org/philmd/qemu/jobs/587583631
> 
> Based-on: <20190912231202.12327-1-mdroth@linux.vnet.ibm.com>
> "Fix tarball builds of UEFI/EDK2 firmware"
> https://lists.gnu.org/archive/html/qemu-devel/2019-09/msg02734.html
> ---
>  .travis.yml | 22 ++++++++++++++++++++++
>  1 file changed, 22 insertions(+)
> 
> diff --git a/.travis.yml b/.travis.yml
> index d0b9e099b9..a21f99d22d 100644
> --- a/.travis.yml
> +++ b/.travis.yml
> @@ -339,3 +339,25 @@ matrix:
>          - CONFIG="--target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu"
>          - TEST_CMD="make -j3 check-tcg V=1"
>          - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
> +
> +
> +    # Release builds
> +    # The make-release script expect a QEMU version, so our tag must start with a 'v'
> +    - if: tag IS present AND tag =~ ^v

Might ^v be a bit too open-ended? Perhaps ^v\d+\. or something of the
sort?

> +      env:
> +        # We want to build from the release tarball
> +        - BUILD_DIR="release/build/dir" SRC_DIR="../../.."
> +        - BASE_CONFIG="--prefix=$PWD/dist"
> +        - CONFIG="--target-list=x86_64-softmmu,aarch64-softmmu,armeb-linux-user,ppc-linux-user"
> +        - TEST_CMD="make install -j3"
> +        - QEMU_VERSION="${TRAVIS_TAG:1}"
> +        - CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-default"
> +      before_script:
> +        - command -v ccache && ccache --zero-stats
> +        - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR}
> +      script:
> +        - ${SRC_DIR}/scripts/make-release ${SRC_DIR} ${QEMU_VERSION}

Same result currently, but the `make qemu-$version.tar.bz2` target is probably
more robust/stable to test with.

> +        - ls -l qemu-${QEMU_VERSION}.tar.bz2
> +        - tar -xf qemu-${QEMU_VERSION}.tar.bz2 && cd qemu-${QEMU_VERSION}
> +        - ./configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; }
> +        - make install
> -- 
> 2.20.1
>