[v4,4/4] ci: add aarch64 -> arm32 cross compiling jobs
Checks
Commit Message
Add two jobs (static and shared libs), both building on aarch64 and
producing 32 bit arm binaries. Do not run tests in these jobs.
Signed-off-by: Juraj Linkeš <juraj.linkes@pantheon.tech>
---
.ci/linux-build.sh | 7 ++++++-
.travis.yml | 19 +++++++++++++++++++
2 files changed, 25 insertions(+), 1 deletion(-)
Comments
Juraj Linkeš <juraj.linkes@pantheon.tech> writes:
> Add two jobs (static and shared libs), both building on aarch64 and
> producing 32 bit arm binaries. Do not run tests in these jobs.
>
> Signed-off-by: Juraj Linkeš <juraj.linkes@pantheon.tech>
> ---
> .ci/linux-build.sh | 7 ++++++-
> .travis.yml | 19 +++++++++++++++++++
> 2 files changed, 25 insertions(+), 1 deletion(-)
>
> diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh
> index d079801d7..3cc3d8bac 100755
> --- a/.ci/linux-build.sh
> +++ b/.ci/linux-build.sh
> @@ -33,6 +33,11 @@ if [ "$AARCH64" = "1" ]; then
> OPTS="$OPTS --cross-file config/arm/arm64_armv8_linux_gcc"
> fi
>
> +if [ "$ARM" = "1" ]; then
> + # convert the arch specifier
> + OPTS="$OPTS --cross-file config/arm/arm_armv7a_linux_gcc"
> +fi
> +
> if [ "$BUILD_DOCS" = "1" ]; then
> OPTS="$OPTS -Denable_docs=true"
> fi
> @@ -53,7 +58,7 @@ OPTS="$OPTS --buildtype=debugoptimized"
> meson build --werror $OPTS
> ninja -C build
>
> -if [ "$AARCH64" != "1" ]; then
> +if [ "$AARCH64" != "1" ] && [ "$ARM" != "1" ]; then
Probably we should rewrite this check so that it is affirmative on
x86_64 - since there are outstanding proposals for PPC as well (and I
forsee the check to run test-null.sh getting bigger). WDYT?
> devtools/test-null.sh
> fi
>
> diff --git a/.travis.yml b/.travis.yml
> index 2d2292ff6..63939d2c5 100644
> --- a/.travis.yml
> +++ b/.travis.yml
> @@ -21,6 +21,10 @@ _aarch64_packages: &aarch64_packages
> - *required_packages
> - [gcc-aarch64-linux-gnu, libc6-dev-arm64-cross, pkg-config-aarch64-linux-gnu]
>
> +_arm_packages: &arm_packages
> + - *required_packages
> + - [gcc-arm-linux-gnueabihf, libc6-dev-armhf-cross, pkg-config-arm-linux-gnueabihf]
> +
> _libabigail_build_packages: &libabigail_build_packages
> - [autoconf, automake, libtool, pkg-config, libxml2-dev, libdw-dev]
>
> @@ -124,6 +128,21 @@ jobs:
> packages:
> - *required_packages
> - *libabigail_build_packages
> + # aarch64 cross-compiling arm jobs
> + - env: DEF_LIB="shared" ARM=1
> + arch: arm64
> + compiler: gcc
> + addons:
> + apt:
> + packages:
> + - *arm_packages
> + - env: DEF_LIB="static" ARM=1
> + arch: arm64
> + compiler: gcc
> + addons:
> + apt:
> + packages:
> + - *arm_packages
> # aarch64 clang jobs
> - env: DEF_LIB="static"
> arch: arm64
> -----Original Message-----
> From: Aaron Conole <aconole@redhat.com>
> Sent: Tuesday, May 5, 2020 8:56 PM
> To: Juraj Linkeš <juraj.linkes@pantheon.tech>
> Cc: bruce.richardson@intel.com; maicolgabriel@hotmail.com;
> Ruifeng.Wang@arm.com; dev@dpdk.org
> Subject: Re: [PATCH v4 4/4] ci: add aarch64 -> arm32 cross compiling jobs
>
> Juraj Linkeš <juraj.linkes@pantheon.tech> writes:
>
> > Add two jobs (static and shared libs), both building on aarch64 and
> > producing 32 bit arm binaries. Do not run tests in these jobs.
> >
> > Signed-off-by: Juraj Linkeš <juraj.linkes@pantheon.tech>
> > ---
> > .ci/linux-build.sh | 7 ++++++-
> > .travis.yml | 19 +++++++++++++++++++
> > 2 files changed, 25 insertions(+), 1 deletion(-)
> >
> > diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh index
> > d079801d7..3cc3d8bac 100755
> > --- a/.ci/linux-build.sh
> > +++ b/.ci/linux-build.sh
> > @@ -33,6 +33,11 @@ if [ "$AARCH64" = "1" ]; then
> > OPTS="$OPTS --cross-file config/arm/arm64_armv8_linux_gcc"
> > fi
> >
> > +if [ "$ARM" = "1" ]; then
> > + # convert the arch specifier
> > + OPTS="$OPTS --cross-file config/arm/arm_armv7a_linux_gcc"
> > +fi
> > +
> > if [ "$BUILD_DOCS" = "1" ]; then
> > OPTS="$OPTS -Denable_docs=true"
> > fi
> > @@ -53,7 +58,7 @@ OPTS="$OPTS --buildtype=debugoptimized"
> > meson build --werror $OPTS
> > ninja -C build
> >
> > -if [ "$AARCH64" != "1" ]; then
> > +if [ "$AARCH64" != "1" ] && [ "$ARM" != "1" ]; then
>
> Probably we should rewrite this check so that it is affirmative on
> x86_64 - since there are outstanding proposals for PPC as well (and I forsee the
> check to run test-null.sh getting bigger). WDYT?
Well, my patchset introduces cross compilation from aarch64 -> arm32, so if we only check for x86_64 it would try to run arm32 binaries on aarch64 when doing this cross compilation. Maybe we could do a check using something like file ${testpmd} | grep $(uname -m) in test-null.sh?
> > devtools/test-null.sh
> > fi
> >
> > diff --git a/.travis.yml b/.travis.yml index 2d2292ff6..63939d2c5
> > 100644
> > --- a/.travis.yml
> > +++ b/.travis.yml
> > @@ -21,6 +21,10 @@ _aarch64_packages: &aarch64_packages
> > - *required_packages
> > - [gcc-aarch64-linux-gnu, libc6-dev-arm64-cross,
> > pkg-config-aarch64-linux-gnu]
> >
> > +_arm_packages: &arm_packages
> > + - *required_packages
> > + - [gcc-arm-linux-gnueabihf, libc6-dev-armhf-cross,
> > +pkg-config-arm-linux-gnueabihf]
> > +
> > _libabigail_build_packages: &libabigail_build_packages
> > - [autoconf, automake, libtool, pkg-config, libxml2-dev, libdw-dev]
> >
> > @@ -124,6 +128,21 @@ jobs:
> > packages:
> > - *required_packages
> > - *libabigail_build_packages
> > + # aarch64 cross-compiling arm jobs
> > + - env: DEF_LIB="shared" ARM=1
> > + arch: arm64
> > + compiler: gcc
> > + addons:
> > + apt:
> > + packages:
> > + - *arm_packages
> > + - env: DEF_LIB="static" ARM=1
> > + arch: arm64
> > + compiler: gcc
> > + addons:
> > + apt:
> > + packages:
> > + - *arm_packages
> > # aarch64 clang jobs
> > - env: DEF_LIB="static"
> > arch: arm64
@@ -33,6 +33,11 @@ if [ "$AARCH64" = "1" ]; then
OPTS="$OPTS --cross-file config/arm/arm64_armv8_linux_gcc"
fi
+if [ "$ARM" = "1" ]; then
+ # convert the arch specifier
+ OPTS="$OPTS --cross-file config/arm/arm_armv7a_linux_gcc"
+fi
+
if [ "$BUILD_DOCS" = "1" ]; then
OPTS="$OPTS -Denable_docs=true"
fi
@@ -53,7 +58,7 @@ OPTS="$OPTS --buildtype=debugoptimized"
meson build --werror $OPTS
ninja -C build
-if [ "$AARCH64" != "1" ]; then
+if [ "$AARCH64" != "1" ] && [ "$ARM" != "1" ]; then
devtools/test-null.sh
fi
@@ -21,6 +21,10 @@ _aarch64_packages: &aarch64_packages
- *required_packages
- [gcc-aarch64-linux-gnu, libc6-dev-arm64-cross, pkg-config-aarch64-linux-gnu]
+_arm_packages: &arm_packages
+ - *required_packages
+ - [gcc-arm-linux-gnueabihf, libc6-dev-armhf-cross, pkg-config-arm-linux-gnueabihf]
+
_libabigail_build_packages: &libabigail_build_packages
- [autoconf, automake, libtool, pkg-config, libxml2-dev, libdw-dev]
@@ -124,6 +128,21 @@ jobs:
packages:
- *required_packages
- *libabigail_build_packages
+ # aarch64 cross-compiling arm jobs
+ - env: DEF_LIB="shared" ARM=1
+ arch: arm64
+ compiler: gcc
+ addons:
+ apt:
+ packages:
+ - *arm_packages
+ - env: DEF_LIB="static" ARM=1
+ arch: arm64
+ compiler: gcc
+ addons:
+ apt:
+ packages:
+ - *arm_packages
# aarch64 clang jobs
- env: DEF_LIB="static"
arch: arm64