[ovs-dev] [PATCH ] travis: support ppc64le builds

dwilder dwilder at us.ibm.com
Tue Nov 5 20:31:50 UTC 2019


Hi Wei

If I change my matrix:include to use "arch: ppc64le" rather than "os: 
linux-ppc64le", will it eliminate your concern?

matrix:
   include:
-   - os: linux-ppc64le
+   - arch: ppc64le
       compiler: gcc
       env: OPTS="--disable-ssl"


Later when we want to enable the full matrix on all arch we would add:

1) arch:
   - amd64
   - ppc64le
   - arm64

2) eliminate the include: -arch: ppc64le

3) Add any exclude: - arch:XXX sections for any tests that dont apply.

For example I would add:

  exclude:
    - arch: ppc64le
      env: M32=1 OPTS="--disable-ssl"

Regards,
   David

On 2019-11-02 02:09, Yanqin Wei (Arm Technology China) wrote:
> Hi David,
> 
> Thanks for your reply.  Yes, my concern is how to define arch and os
> in .travis.yml after we cover all builds and cases for arm and ppc.
> This pattern can enable all builds and testsuits for x86 and arm
> arch:
>   - amd64
>   - arm64
> os:
>   - linux
> 
> This can enable all jobs for x86 and ppc.
> arch:
>   - amd64 //default
> os:
>   - linux
>   - linux-ppc64le
> 
> But it does not work to combine them.  This means four kinds of
> arch+os combinations in all.   Arm64+linux-ppc64le is invalid.
> arch:
>   - amd64
>   - arm64
> os:
>   - linux
>   - linux-ppc64le
> 
> So if we finally cover all the builds and cases for arm/ppc,  we have
> to duplicate all jobs for different cpu arch in the matrix include.
> matrix:
>   include:
>     - os: linux-ppc64le
>       env: job1
>     - os: linux-ppc64le
>       env: job2
> ...
>     - arch: arm64
>       env: job1
>     - arch: arm64
>       env: job2
> ...
> 
> But currently either arm or ppc has not cover all the cases, so they
> can coexist in build-matrix.  And there is no conflict in
> build/prepare scripts, because both of them use TRAVIS_ARCH variable
> to indicate cpu arch.
> The patch series to enable arm CI is under internal review. It will be
> submitted when ready.
> 
> Best Regards,
> Wei Yanqin
> 
> 
> -----Original Message-----
> From: dwilder <dwilder at us.ibm.com>
> Sent: Saturday, November 2, 2019 1:09 AM
> To: Yanqin Wei (Arm Technology China) <Yanqin.Wei at arm.com>
> Cc: Ilya Maximets <i.maximets at ovn.org>; ovs-dev at openvswitch.org;
> wilder at us.ibm.com; nd <nd at arm.com>
> Subject: Re: RE: [ovs-dev] [PATCH ] travis: support ppc64le builds
> 
> On 2019-10-30 19:04, Yanqin Wei (Arm Technology China) wrote:
>> Hi,
>> 
>> We are working to support arm64 build for ovs travis CI. It is indeed
>> to use arch: arm64 to choose cpu architecture, because travis has
>> provided native arm64 option now.
>> But in this patch it seems ppc64 builds run on the ppc-VM + x86 native
>> machine.
>> Currently arm only select a part of jobs to run, which is defined in
>> matrix:include. But the final object is to run all jobs. It means that
>>  arch: arm64 will be moved out of marix. If ppc plans to do the same
>> in the future, it will conflict with arm jobs.
>> 
>> Best Regards,
>> Wei Yanqin
> 
> Hi,
> I have added a build only test for ppc64le following the model used
> for osx. I think this is a good start for getting multi-arch support
> into Ci.
> 
> I agree that running all jobs on the matrix on every arch is good goal.
> I dont completely understand your issue, is your concern the use of os:
> vs arch: ?
> 
> I am glad to work with you to find a solution. Can you share your
> arm64 changes?  We can discuss off-list if you prefer.
> 
> 
>> 
>> -----Original Message-----
>> From: ovs-dev-bounces at openvswitch.org
>> <ovs-dev-bounces at openvswitch.org> On Behalf Of dwilder
>> Sent: Wednesday, October 30, 2019 1:55 AM
>> To: Ilya Maximets <i.maximets at ovn.org>
>> Cc: ovs-dev at openvswitch.org; wilder at us.ibm.com
>> Subject: Re: [ovs-dev] [PATCH ] travis: support ppc64le builds
>> 
>> On 2019-10-29 09:52, Ilya Maximets wrote:
>>> On 28.10.2019 22:22, David Wilder wrote:
>>>> Add support for travis-ci ppc64le builds.
>>>> 
>>>> - Updated matrix in .travis.yml to include a ppc64le build.
>>>> - Added support to install packages needed by specific 
>>>> architectures.
>>>> 
>>>> To keep the total build time at an acceptable level only a single
>>>> build job is included in the matrix for ppc64le.
>>>> 
>>>> A build report example can be found here [1] [0]
>>>> https://urldefense.proofpoint.com/v2/url?u=http-3A__travis-2Dci.org_&
>>>> d=DwICaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=7ndxyKjH9UrBD68Us2WP1wI4BwEBQbeAy
>>>> z8i_vwCCaI&m=6JANehIfGoxUMtwHhe4yob4UPeby0Y8ovgzRDIyJZFo&s=UMYL8rzJNp
>>>> h87seC0oJLBiWoe-sUSL80AJy0RMTgBzQ&e=
>>>> [1]
>>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__travis-2Dci.org_
>>>> djlwilder_ovs_builds_604098141&d=DwICaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=7n
>>>> dxyKjH9UrBD68Us2WP1wI4BwEBQbeAyz8i_vwCCaI&m=6JANehIfGoxUMtwHhe4yob4UP
>>>> eby0Y8ovgzRDIyJZFo&s=pyd2yQpQ0snpwGE5El4RYZsatwl74sthM1KLqtIKCnY&e=
>>>> Signed-off-by: David Wilder <dwilder at us.ibm.com>
>>> 
>>> Hi David,
>>> Thanks for working on this. I have a couple of question regarding
>>> ppc64le support by TravisCI.  It seems that they are not supporting
>>> this architecture officially and refusing[1] to solve any issues that
>>> appears while using it. There also no official documentation.
>>> It's kind of a hidden feature that some projects are using for their
>>> own risk [2]. Do you know why this happens or maybe you have some
>>> insights about what is going on/how it works?
>> 
>> Work is going on to increase ppc64le support on Travis by the end of
>> the year.  I dont have any details yet. My plan is to keep this to
>> build-only ci until then.  Important, ppc64le VM are only available on
>> travis-ci.org, they are not available on travis-ci.com.
>> 
>>> The API is also a bit strange because Travis started to officially
>>> support arm builds, but this is done via 'arch' knob, not the 'os'.
>>> Will it be changed over time for ppc64le?
>>> 
>> 
>> Sorry, I dont know.
>> 
>>> [1]
>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__travis-2Dci.commu
>>> nity_t_ppc64le-2Darch-2Dsupport-2Don-2Dtravis-2Dci-2Dcom-2Dvs-2Dtravis
>>> -2Dci-2Dorg_2898_2&d=DwICaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=7ndxyKjH9UrBD68
>>> Us2WP1wI4BwEBQbeAyz8i_vwCCaI&m=6JANehIfGoxUMtwHhe4yob4UPeby0Y8ovgzRDIy
>>> JZFo&s=TrXdSxjvnbbVQz7EzR5r0aE93lZMSdCiIUQT2wt8E3I&e=
>>> [2]
>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_openss
>>> l_openssl_commit_13da3ad00c80e1da816ca27f6c15b0ecee1bb0b8&d=DwICaQ&c=j
>>> f_iaSHvJObTbx-siA1ZOg&r=7ndxyKjH9UrBD68Us2WP1wI4BwEBQbeAyz8i_vwCCaI&m=
>>> 6JANehIfGoxUMtwHhe4yob4UPeby0Y8ovgzRDIyJZFo&s=RWVuli-BT8E2IsW3rAA9MtqC
>>> VPZahNk8k7yqxEbgTT4&e=
>>> 
>>> Few code comments inline.
>>> 
>>>> ---
>>>>   .travis.yml              |  5 +++--
>>>>   .travis/linux-prepare.sh | 18 ++++++++++++++----
>>>>   2 files changed, 17 insertions(+), 6 deletions(-)
>>>> 
>>>> diff --git a/.travis.yml b/.travis.yml index 5676d9748..c99f26815
>>>> 100644
>>>> --- a/.travis.yml
>>>> +++ b/.travis.yml
>>>> @@ -14,7 +14,6 @@ addons:
>>>>     apt:
>>>>       packages:
>>>>         - bc
>>>> -      - gcc-multilib
>>>>         - libssl-dev
>>>>         - llvm-dev
>>>>         - libjemalloc1
>>>> @@ -24,7 +23,6 @@ addons:
>>>>         - libelf-dev
>>>>         - selinux-policy-dev
>>>>         - libunbound-dev
>>>> -      - libunbound-dev:i386
>>>>         - libunwind-dev
>>>>     before_install: ./.travis/${TRAVIS_OS_NAME}-prepare.sh
>>>> @@ -50,6 +48,9 @@ matrix:
>>>>       - os: osx
>>>>         compiler: clang
>>>>         env: OPTS="--disable-ssl"
>>>> +    - os: linux-ppc64le
>>>> +      compiler: gcc
>>>> +      env: OPTS="--disable-ssl"
>>>>     script: ./.travis/${TRAVIS_OS_NAME}-build.sh $OPTS
>>>>   diff --git a/.travis/linux-prepare.sh b/.travis/linux-prepare.sh
>>>> index e546d32cb..f3a9a6d44 100755
>>>> --- a/.travis/linux-prepare.sh
>>>> +++ b/.travis/linux-prepare.sh
>>>> @@ -15,8 +15,18 @@ cd ..
>>>>   pip install --disable-pip-version-check --user six flake8 hacking
>>>>   pip install --user --upgrade docutils
>>>>   -if [ "$M32" ]; then
>>>> -    # 32-bit and 64-bit libunwind can not be installed at the same
>>>> time.
>>>> -    # This will remove the 64-bit libunwind and install 32-bit
>>>> version.
>>>> -    sudo apt-get install -y libunwind-dev:i386
>>>> +# Include packages needed by specific architectures.
>>>> +if [ $TRAVIS_ARCH == amd64 ]; then
>>>> +   sudo apt-get install -y \
>>>> +        libunbound-dev:i386 \
>>>> +        gcc-multilib
>>> 
>>> These packages are only needed for 32bit build, so you may just move
>>> them to the command that installs 32bit version of libunwind.
>>> And since you're not building 32bit with ppc64le, the code could look
>>> like:
>>> 
>>> if [ "$M32" ]; then
>>>    # install 32 bit libs
>>> fi
>>> 
>>> if [ $TRAVIS_ARCH == ppc64le ]; then
>>>    # install ppc64le specific things.
>>> fi
>> 
>> Agreed.
>> 
>>> 
>>>> +
>>>> +    if [ "$M32" ]; then
>>>> +       # 32-bit and 64-bit libunwind can not be installed at the
>>>> + same
>>>> time.
>>>> +       # This will remove the 64-bit libunwind and install 32-bit
>>>> version.
>>>> +       sudo apt-get install -y libunwind-dev:i386
>>>> +    fi
>>>> +
>>>> +elif [ $TRAVIS_ARCH == ppc64le ]; then
>>>> +   sudo apt-get install -y flex
>>> 
>>> Why 'flex' is needed?
>> 
>> I found that Flex was needed for kernel builds, but since I am not
>> doing that yet I can remove it.
>> 
>> Thanks for the review,  I will post a V2 patch shortly.
>> 
>>> 
>>> Best regards, Ilya Maximets.
>> _______________________________________________
>> dev mailing list
>> dev at openvswitch.org
>> https://urldefense.proofpoint.com/v2/url?u=https-3A__mail.openvswitch.org_mailman_listinfo_ovs-2Ddev&d=DwIFAg&c=jf_iaSHvJObTbx-siA1ZOg&r=7ndxyKjH9UrBD68Us2WP1wI4BwEBQbeAyz8i_vwCCaI&m=_QMOOwopXhBHpUCeEDvwONjciJxP_WEksZXnZOBIFHM&s=W1XHbP-_Wjy0FfaSXS37Lx5F-tHW0oK9VRLwt5YpMro&e=


More information about the dev mailing list