diff mbox series

[U-Boot] travis: Add sandbox/clang-7 support

Message ID 1538936430-32218-1-git-send-email-trini@konsulko.com
State Accepted
Delegated to: Tom Rini
Headers show
Series [U-Boot] travis: Add sandbox/clang-7 support | expand

Commit Message

Tom Rini Oct. 7, 2018, 6:20 p.m. UTC
To make testing with clang support easier, add sandbox/clang-7
combination to our testing matrix.  To facilitate this, switch to using
the "sources" method that the travis.yml file supports to list
additional repositories and add the official one for llvm-7.  Due to
buildman not supporting using clang at this time add logic to manually
build a single sandbox configuration in the expected output directory so
that we can still invoke all of our tests.

Cc: Simon Glass <sjg@chromium.org>
Signed-off-by: Tom Rini <trini@konsulko.com>
---
 .travis.yml | 27 ++++++++++++++++++++-------
 1 file changed, 20 insertions(+), 7 deletions(-)

Comments

Simon Glass Oct. 9, 2018, 3:40 a.m. UTC | #1
Hi Tom,

On 7 October 2018 at 12:20, Tom Rini <trini@konsulko.com> wrote:
>
> To make testing with clang support easier, add sandbox/clang-7
> combination to our testing matrix.  To facilitate this, switch to using
> the "sources" method that the travis.yml file supports to list
> additional repositories and add the official one for llvm-7.  Due to
> buildman not supporting using clang at this time add logic to manually
> build a single sandbox configuration in the expected output directory so
> that we can still invoke all of our tests.
>
> Cc: Simon Glass <sjg@chromium.org>
> Signed-off-by: Tom Rini <trini@konsulko.com>
> ---
>  .travis.yml | 27 ++++++++++++++++++++-------
>  1 file changed, 20 insertions(+), 7 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

What prevents buildman supporting clang?

- Simon
Tom Rini Oct. 9, 2018, 11:35 a.m. UTC | #2
On Mon, Oct 08, 2018 at 09:40:51PM -0600, Simon Glass wrote:
> Hi Tom,
> 
> On 7 October 2018 at 12:20, Tom Rini <trini@konsulko.com> wrote:
> >
> > To make testing with clang support easier, add sandbox/clang-7
> > combination to our testing matrix.  To facilitate this, switch to using
> > the "sources" method that the travis.yml file supports to list
> > additional repositories and add the official one for llvm-7.  Due to
> > buildman not supporting using clang at this time add logic to manually
> > build a single sandbox configuration in the expected output directory so
> > that we can still invoke all of our tests.
> >
> > Cc: Simon Glass <sjg@chromium.org>
> > Signed-off-by: Tom Rini <trini@konsulko.com>
> > ---
> >  .travis.yml | 27 ++++++++++++++++++++-------
> >  1 file changed, 20 insertions(+), 7 deletions(-)
> 
> Reviewed-by: Simon Glass <sjg@chromium.org>
> 
> What prevents buildman supporting clang?

Well, I couldn't convince buildman to accept "/usr/bin/clang-7" as the
full and entire path to the toolchain to use.  Ideas?  Thanks!
Simon Glass Oct. 19, 2018, 3:27 a.m. UTC | #3
Hi Tom,

On 9 October 2018 at 05:35, Tom Rini <trini@konsulko.com> wrote:
> On Mon, Oct 08, 2018 at 09:40:51PM -0600, Simon Glass wrote:
>> Hi Tom,
>>
>> On 7 October 2018 at 12:20, Tom Rini <trini@konsulko.com> wrote:
>> >
>> > To make testing with clang support easier, add sandbox/clang-7
>> > combination to our testing matrix.  To facilitate this, switch to using
>> > the "sources" method that the travis.yml file supports to list
>> > additional repositories and add the official one for llvm-7.  Due to
>> > buildman not supporting using clang at this time add logic to manually
>> > build a single sandbox configuration in the expected output directory so
>> > that we can still invoke all of our tests.
>> >
>> > Cc: Simon Glass <sjg@chromium.org>
>> > Signed-off-by: Tom Rini <trini@konsulko.com>
>> > ---
>> >  .travis.yml | 27 ++++++++++++++++++++-------
>> >  1 file changed, 20 insertions(+), 7 deletions(-)
>>
>> Reviewed-by: Simon Glass <sjg@chromium.org>
>>
>> What prevents buildman supporting clang?
>
> Well, I couldn't convince buildman to accept "/usr/bin/clang-7" as the
> full and entire path to the toolchain to use.  Ideas?  Thanks!

No, sadly it looks like we need to add special support for clang - as
per README.clang. We need to set CC and CROSS_COMPILE, at least.

Regards,
Simon
Tom Rini Oct. 20, 2018, 7:11 p.m. UTC | #4
On Sun, Oct 07, 2018 at 02:20:30PM -0400, Tom Rini wrote:

> To make testing with clang support easier, add sandbox/clang-7
> combination to our testing matrix.  To facilitate this, switch to using
> the "sources" method that the travis.yml file supports to list
> additional repositories and add the official one for llvm-7.  Due to
> buildman not supporting using clang at this time add logic to manually
> build a single sandbox configuration in the expected output directory so
> that we can still invoke all of our tests.
> 
> Cc: Simon Glass <sjg@chromium.org>
> Signed-off-by: Tom Rini <trini@konsulko.com>
> Reviewed-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!
diff mbox series

Patch

diff --git a/.travis.yml b/.travis.yml
index 2b759c9d6865..1c2dfbb8e29b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -10,6 +10,9 @@  language: c
 
 addons:
   apt:
+    sources:
+    - ubuntu-toolchain-r-test
+    - llvm-toolchain-trusty-7
     packages:
     - cppcheck
     - sloccount
@@ -28,11 +31,8 @@  addons:
     - device-tree-compiler
     - lzop
     - liblz4-tool
-
-before_install:
- - sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
- - sudo apt-get update -q
- - sudo apt-get install libisl15 -y
+    - libisl15
+    - clang-7
 
 install:
  # Clone uboot-test-hooks
@@ -105,8 +105,16 @@  script:
  # Comments must be outside the command strings below, or the Travis parser
  # will get confused.
  #
- # Exit code 129 means warnings only.
- - if [[ "${BUILDMAN}" != "" ]]; then
+ # From buildman, exit code 129 means warnings only.  If we've been asked to
+ # use clang only do one configuration.
+ - if [[ "${TOOLCHAIN}" == "clang" ]]; then
+     ret=0;
+     make O=../.bm-work/${TEST_PY_BD} HOSTCC=clang-7 CC=clang-7 -j$(nproc)
+       KCFLAGS=-Werror sandbox_config all || ret=$?;
+     if [[ $ret -ne 0 ]]; then
+       exit $ret;
+     fi;
+   elif [[ "${BUILDMAN}" != "" ]]; then
      ret=0;
      tools/buildman/buildman -P -E ${BUILDMAN} || ret=$?;
      if [[ $ret -ne 0 && $ret -ne 129 ]]; then
@@ -322,6 +330,11 @@  matrix:
         - TEST_PY_BD="sandbox"
           BUILDMAN="^sandbox$"
           TOOLCHAIN="x86_64"
+    - name: "test/py sandbox with clang"
+      env:
+        - TEST_PY_BD="sandbox"
+          BUILDMAN="^sandbox$"
+          TOOLCHAIN="clang"
     - name: "test/py sandbox_spl"
       env:
         - TEST_PY_BD="sandbox_spl"