[PATCH v1] Travis: also test on 32-bit Linux
- From
Lars Schneider <larsxschneider@gmail.com>
- Date
- Mar 2, 2017, 10:51 UTC
- Message-ID
- <20170302105157.59791-1-larsxschneider@gmail.com>
- In-Reply-To
- <c76a133a57514a332828099d342c9763fd946bfa.1488309430.git.johannes.schindelin@gmx.de>
From: Johannes Schindelin <johannes.schindelin@gmx.de>
When Git v2.9.1 was released, it had a bug that showed only on Windows and on 32-bit systems: our assumption that `unsigned long` can hold 64-bit values turned out to be wrong.
This could have been caught earlier if we had a Continuous Testing set up that includes a build and test run on 32-bit Linux.
Let's do this (and take care of the Windows build later). This patch asks Travis CI to install a Docker image with 32-bit libraries and then goes on to build and test Git using this 32-bit setup.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Lars Schneider <larsxschneider@gmail.com> ---
Thanks for the patch Dscho!
The patch looks good to me in general but I want to propose the following changes:
(1) Move all the docker magic into a dedicated file "ci/run-linux-32-build.sh"
This way people should be able to run this build on their local machines
without TravisCI. However, I haven't tested this.(2) The docker build command inherits the Git test environment variables.
This way we use the same environment variables as in all other TravisCI
builds (plus it would use *your* variables if you run it locally).(3) Silence the apt update/git output as is it clutters the log.
I did not silence stderr output!(4) Remove (to my knowledge) superfluous "compiler: clang" in the Linux32 job.
I added my sign-off. I hope this is the right thing to do in this "I took your patch and changed it to suggest an improvement" situation.
You can see a successful run here: https://travis-ci.org/larsxschneider/git/jobs/206945950
One thing that still bugs me: In the Linux32 environment prove adds the CPU times to every test run: ( 0.02 usr 0.00 sys + 0.00 cusr 0.00 csys ... Has anyone an idea why that happens and how we can disable it?
Cheers, Lars
Notes:
Base Ref:
Web-Diff: https://github.com/larsxschneider/git/commit/82995ed59c
Checkout: git fetch https://github.com/larsxschneider/git travisci/linux32-v1 && git checkout 82995ed59c.travis.yml | 9 +++++++++ ci/run-linux32-build.sh | 21 +++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100755 ci/run-linux32-build.sh
diff --git a/.travis.yml b/.travis.yml index 9c63c8c3f6..c8c789c437 100644 --- a/.travis.yml +++ b/.travis.yml @@ -39,6 +39,15 @@ env: matrix: include: + - env: Linux32 + os: linux + sudo: required + services: + - docker + before_install: + - docker pull daald/ubuntu32:xenial + before_script: + script: ci/run-linux32-build.sh - env: Documentation os: linux compiler: clang diff --git a/ci/run-linux32-build.sh b/ci/run-linux32-build.sh new file mode 100755 index 0000000000..b892fbdc9e --- /dev/null +++ b/ci/run-linux32-build.sh @@ -0,0 +1,21 @@ +#!/bin/sh +# +# Build and test Git in a docker container running a 32-bit Ubuntu Linux +# + +set -e + +APT_INSTALL="apt update >/dev/null && apt install -y build-essential "\ +"libcurl4-openssl-dev libssl-dev libexpat-dev gettext python >/dev/null" + +TEST_GIT_ENV="DEFAULT_TEST_TARGET=$DEFAULT_TEST_TARGET "\ +"GIT_PROVE_OPTS=\"$GIT_PROVE_OPTS\" "\ +"GIT_TEST_OPTS=\"$GIT_TEST_OPTS\" "\ +"GIT_TEST_CLONE_2GB=$GIT_TEST_CLONE_2GB" + +TEST_GIT_CMD="linux32 --32bit i386 sh -c "\ +"'$APT_INSTALL && cd /usr/src/git && $TEST_GIT_ENV make -j2 test'" + +sudo docker run \ + --interactive --volume "${PWD}:/usr/src/git" \ + daald/ubuntu32:xenial /bin/bash -c "$TEST_GIT_CMD" base-commit: 3bc53220cb2dcf709f7a027a3f526befd021d858 -- 2.11.1