* [dpdk-dev] [PATCH 0/2] add travis ci support for aarch64 @ 2019-12-18 5:39 Ruifeng Wang 2019-12-18 5:39 ` [dpdk-dev] [PATCH 1/2] ci: " Ruifeng Wang ` (5 more replies) 0 siblings, 6 replies; 36+ messages in thread From: Ruifeng Wang @ 2019-12-18 5:39 UTC (permalink / raw) To: aconole, maicolgabriel, thomas, ferruh.yigit, arybchenko Cc: dev, gavin.hu, honnappa.nagarahalli, nd, Ruifeng Wang This patch set is to enable native aarch64 build in Travis CI. It leverages Travis CI multi arch support. As the first step, compilation jobs are added. Unit test is not added for now due to service limitation. We are planning to run unit test with no-huge in future. Ruifeng Wang (2): ci: add travis ci support for aarch64 devtools: add path to additional shared object files .ci/linux-setup.sh | 11 +++++++---- .travis.yml | 42 +++++++++++++++++++++++++++++++++++++++++- devtools/test-null.sh | 2 +- 3 files changed, 49 insertions(+), 6 deletions(-) -- 2.17.1 ^ permalink raw reply [flat|nested] 36+ messages in thread
* [dpdk-dev] [PATCH 1/2] ci: add travis ci support for aarch64 2019-12-18 5:39 [dpdk-dev] [PATCH 0/2] add travis ci support for aarch64 Ruifeng Wang @ 2019-12-18 5:39 ` Ruifeng Wang 2019-12-18 5:39 ` [dpdk-dev] [PATCH 2/2] devtools: add path to additional shared object files Ruifeng Wang ` (4 subsequent siblings) 5 siblings, 0 replies; 36+ messages in thread From: Ruifeng Wang @ 2019-12-18 5:39 UTC (permalink / raw) To: aconole, maicolgabriel, thomas, ferruh.yigit, arybchenko Cc: dev, gavin.hu, honnappa.nagarahalli, nd, Ruifeng Wang Add Travis compilation jobs for aarch64. gcc/clang compilations for static/shared libraries are added. Some limitations for current aarch64 Travis support: 1. Container is used. Huge page is not available due to security reason. 2. Missing kernel header package in Xenial distribution. Solutions to address the limitations: 1. Not to add unit test for now. And run tests with no-huge in future. 2. Use Bionic distribution for all aarch64 jobs. Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Gavin Hu <gavin.hu@arm.com> --- .ci/linux-setup.sh | 11 +++++++---- .travis.yml | 42 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 48 insertions(+), 5 deletions(-) diff --git a/.ci/linux-setup.sh b/.ci/linux-setup.sh index dfb9d4a20..a92978037 100755 --- a/.ci/linux-setup.sh +++ b/.ci/linux-setup.sh @@ -3,7 +3,10 @@ # need to install as 'root' since some of the unit tests won't run without it sudo python3 -m pip install --upgrade meson -# setup hugepages -cat /proc/meminfo -sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' -cat /proc/meminfo +# hugepage settings are skipped on aarch64 due to environment limitation +if [ "$TRAVIS_ARCH" != "aarch64" ]; then + # setup hugepages + cat /proc/meminfo + sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' + cat /proc/meminfo +fi diff --git a/.travis.yml b/.travis.yml index 8f90d06f2..980c7605d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -115,6 +115,46 @@ matrix: apt: packages: - *extra_packages - + - env: DEF_LIB="static" + arch: arm64 + compiler: gcc + dist: bionic + addons: + apt: + packages: + - *required_packages + - env: DEF_LIB="shared" + arch: arm64 + compiler: gcc + dist: bionic + addons: + apt: + packages: + - *required_packages + - env: DEF_LIB="static" + arch: arm64 + dist: bionic + compiler: clang + addons: + apt: + packages: + - *required_packages + - env: DEF_LIB="shared" + arch: arm64 + dist: bionic + compiler: clang + addons: + apt: + packages: + - *required_packages + - env: DEF_LIB="shared" OPTS="-Denable_kmods=false" BUILD_DOCS=1 + arch: arm64 + compiler: gcc + dist: bionic + addons: + apt: + packages: + - *required_packages + - *doc_packages script: ./.ci/${TRAVIS_OS_NAME}-build.sh -- 2.17.1 ^ permalink raw reply [flat|nested] 36+ messages in thread
* [dpdk-dev] [PATCH 2/2] devtools: add path to additional shared object files 2019-12-18 5:39 [dpdk-dev] [PATCH 0/2] add travis ci support for aarch64 Ruifeng Wang 2019-12-18 5:39 ` [dpdk-dev] [PATCH 1/2] ci: " Ruifeng Wang @ 2019-12-18 5:39 ` Ruifeng Wang 2019-12-18 8:23 ` David Marchand 2019-12-20 9:37 ` [dpdk-dev] [PATCH v2 0/2] add travis ci support for aarch64 Ruifeng Wang ` (3 subsequent siblings) 5 siblings, 1 reply; 36+ messages in thread From: Ruifeng Wang @ 2019-12-18 5:39 UTC (permalink / raw) To: aconole, maicolgabriel, thomas, ferruh.yigit, arybchenko Cc: dev, gavin.hu, honnappa.nagarahalli, nd, Ruifeng Wang librte_mempool_ring.so and librte_pmd_null.so are in 'drivers' folder. Add 'drivers' into LD_LIBRARY_PATH so that testpmd can find and make use of these shared libraries. Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Gavin Hu <gavin.hu@arm.com> --- devtools/test-null.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devtools/test-null.sh b/devtools/test-null.sh index f39af2c06..548de8113 100755 --- a/devtools/test-null.sh +++ b/devtools/test-null.sh @@ -20,7 +20,7 @@ if [ ! -f "$testpmd" ] ; then fi if ldd $testpmd | grep -q librte_ ; then - export LD_LIBRARY_PATH=$build/lib:$LD_LIBRARY_PATH + export LD_LIBRARY_PATH=$build/drivers:$build/lib:$LD_LIBRARY_PATH libs='-d librte_mempool_ring.so -d librte_pmd_null.so' else libs= -- 2.17.1 ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [dpdk-dev] [PATCH 2/2] devtools: add path to additional shared object files 2019-12-18 5:39 ` [dpdk-dev] [PATCH 2/2] devtools: add path to additional shared object files Ruifeng Wang @ 2019-12-18 8:23 ` David Marchand 2019-12-18 13:43 ` Laatz, Kevin 0 siblings, 1 reply; 36+ messages in thread From: David Marchand @ 2019-12-18 8:23 UTC (permalink / raw) To: Ruifeng Wang, Bruce Richardson Cc: Aaron Conole, Michael Santana, Thomas Monjalon, Yigit, Ferruh, Andrew Rybchenko, dev, Gavin Hu, Honnappa Nagarahalli, nd, Kevin Laatz On Wed, Dec 18, 2019 at 6:39 AM Ruifeng Wang <ruifeng.wang@arm.com> wrote: > > librte_mempool_ring.so and librte_pmd_null.so are in 'drivers' folder. > Add 'drivers' into LD_LIBRARY_PATH so that testpmd can find and make > use of these shared libraries. > > Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> > Reviewed-by: Gavin Hu <gavin.hu@arm.com> > --- > devtools/test-null.sh | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/devtools/test-null.sh b/devtools/test-null.sh > index f39af2c06..548de8113 100755 > --- a/devtools/test-null.sh > +++ b/devtools/test-null.sh > @@ -20,7 +20,7 @@ if [ ! -f "$testpmd" ] ; then > fi > > if ldd $testpmd | grep -q librte_ ; then > - export LD_LIBRARY_PATH=$build/lib:$LD_LIBRARY_PATH > + export LD_LIBRARY_PATH=$build/drivers:$build/lib:$LD_LIBRARY_PATH > libs='-d librte_mempool_ring.so -d librte_pmd_null.so' > else > libs= > -- > 2.17.1 > I'm surprised to see this. So far, the CI ran fine without it, so something is different in the environment. I can see that the RPATH entry disappeared from the testpmd binary. Xenial: # readelf -d build/app/dpdk-testpmd |grep RPATH 0x000000000000000f (RPATH) Library rpath: [$ORIGIN/../lib:$ORIGIN/../drivers:XXXXXXXXXXXXX] (not sure what XXXX purpose is, but different topic) Bionic: # readelf -d build/app/dpdk-testpmd |grep RPATH Adding Bruce and Kevin, as I think this is the same issue than: http://mails.dpdk.org/archives/dev/2019-December/153627.html Could it be a change in meson? -- David Marchand ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [dpdk-dev] [PATCH 2/2] devtools: add path to additional shared object files 2019-12-18 8:23 ` David Marchand @ 2019-12-18 13:43 ` Laatz, Kevin 2019-12-18 15:32 ` David Marchand 0 siblings, 1 reply; 36+ messages in thread From: Laatz, Kevin @ 2019-12-18 13:43 UTC (permalink / raw) To: David Marchand, Ruifeng Wang, Bruce Richardson Cc: Aaron Conole, Michael Santana, Thomas Monjalon, Yigit, Ferruh, Andrew Rybchenko, dev, Gavin Hu, Honnappa Nagarahalli, nd On 18/12/2019 08:23, David Marchand wrote: > On Wed, Dec 18, 2019 at 6:39 AM Ruifeng Wang <ruifeng.wang@arm.com> wrote: >> librte_mempool_ring.so and librte_pmd_null.so are in 'drivers' folder. >> Add 'drivers' into LD_LIBRARY_PATH so that testpmd can find and make >> use of these shared libraries. >> >> Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> >> Reviewed-by: Gavin Hu <gavin.hu@arm.com> >> --- >> devtools/test-null.sh | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/devtools/test-null.sh b/devtools/test-null.sh >> index f39af2c06..548de8113 100755 >> --- a/devtools/test-null.sh >> +++ b/devtools/test-null.sh >> @@ -20,7 +20,7 @@ if [ ! -f "$testpmd" ] ; then >> fi >> >> if ldd $testpmd | grep -q librte_ ; then >> - export LD_LIBRARY_PATH=$build/lib:$LD_LIBRARY_PATH >> + export LD_LIBRARY_PATH=$build/drivers:$build/lib:$LD_LIBRARY_PATH >> libs='-d librte_mempool_ring.so -d librte_pmd_null.so' >> else >> libs= >> -- >> 2.17.1 >> > I'm surprised to see this. > So far, the CI ran fine without it, so something is different in the > environment. > > I can see that the RPATH entry disappeared from the testpmd binary. > Xenial: > # readelf -d build/app/dpdk-testpmd |grep RPATH > 0x000000000000000f (RPATH) Library rpath: > [$ORIGIN/../lib:$ORIGIN/../drivers:XXXXXXXXXXXXX] > > (not sure what XXXX purpose is, but different topic) > > Bionic: > # readelf -d build/app/dpdk-testpmd |grep RPATH It looks like RPATH just changed to be named RUNPATH in Bionic: # readelf -d build/app/dpdk-testpmd | grep R.*PATH 0x000000000000001d (RUNPATH) Library runpath: [$ORIGIN/../lib:$ORIGIN/../drivers:XXXXXXXXXXXXX] > Adding Bruce and Kevin, as I think this is the same issue than: > http://mails.dpdk.org/archives/dev/2019-December/153627.html > Could it be a change in meson? Yes, looks like the same error to me. I'm not sure this is solely a meson issue, I often need to pass -d librte_mempool_ring.so when using make builds too. Maybe I'm missing something here? --- Kevin ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [dpdk-dev] [PATCH 2/2] devtools: add path to additional shared object files 2019-12-18 13:43 ` Laatz, Kevin @ 2019-12-18 15:32 ` David Marchand 2019-12-18 16:00 ` Richardson, Bruce 2019-12-19 3:14 ` Ruifeng Wang 0 siblings, 2 replies; 36+ messages in thread From: David Marchand @ 2019-12-18 15:32 UTC (permalink / raw) To: Laatz, Kevin Cc: Ruifeng Wang, Bruce Richardson, Aaron Conole, Michael Santana, Thomas Monjalon, Yigit, Ferruh, Andrew Rybchenko, dev, Gavin Hu, Honnappa Nagarahalli, nd On Wed, Dec 18, 2019 at 2:43 PM Laatz, Kevin <kevin.laatz@intel.com> wrote: > > On 18/12/2019 08:23, David Marchand wrote: > > On Wed, Dec 18, 2019 at 6:39 AM Ruifeng Wang <ruifeng.wang@arm.com> wrote: > >> librte_mempool_ring.so and librte_pmd_null.so are in 'drivers' folder. > >> Add 'drivers' into LD_LIBRARY_PATH so that testpmd can find and make > >> use of these shared libraries. > >> > >> Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> > >> Reviewed-by: Gavin Hu <gavin.hu@arm.com> > >> --- > >> devtools/test-null.sh | 2 +- > >> 1 file changed, 1 insertion(+), 1 deletion(-) > >> > >> diff --git a/devtools/test-null.sh b/devtools/test-null.sh > >> index f39af2c06..548de8113 100755 > >> --- a/devtools/test-null.sh > >> +++ b/devtools/test-null.sh > >> @@ -20,7 +20,7 @@ if [ ! -f "$testpmd" ] ; then > >> fi > >> > >> if ldd $testpmd | grep -q librte_ ; then > >> - export LD_LIBRARY_PATH=$build/lib:$LD_LIBRARY_PATH > >> + export LD_LIBRARY_PATH=$build/drivers:$build/lib:$LD_LIBRARY_PATH > >> libs='-d librte_mempool_ring.so -d librte_pmd_null.so' > >> else > >> libs= > >> -- > >> 2.17.1 > >> > > I'm surprised to see this. > > So far, the CI ran fine without it, so something is different in the > > environment. > > > > I can see that the RPATH entry disappeared from the testpmd binary. > > Xenial: > > # readelf -d build/app/dpdk-testpmd |grep RPATH > > 0x000000000000000f (RPATH) Library rpath: > > [$ORIGIN/../lib:$ORIGIN/../drivers:XXXXXXXXXXXXX] > > > > (not sure what XXXX purpose is, but different topic) > > > > Bionic: > > # readelf -d build/app/dpdk-testpmd |grep RPATH > > It looks like RPATH just changed to be named RUNPATH in Bionic: > > # readelf -d build/app/dpdk-testpmd | grep R.*PATH > 0x000000000000001d (RUNPATH) Library runpath: > [$ORIGIN/../lib:$ORIGIN/../drivers:XXXXXXXXXXXXX] Did some experiment with some test program and .so of mine. TL;DR, if I understand correctly, RPATH on the binary applies to all lookups, even in a subsequent .so code. But RUNPATH only applies to the current ELF, meaning that the dlopen() in my intermediate .so does not get it. dlopen() is called from librte_eal.so, and RUNPATH on testpmd is not enough. Details: [dmarchan@dmarchan plop]$ cat main.c extern void loader(void); int main(int argc, char *argv[]) { loader(); return 0; } [dmarchan@dmarchan plop]$ cat loader/loader.c #include <dlfcn.h> #include <stdio.h> void loader(void) { if (dlopen("lib.so", RTLD_NOW) == NULL) fprintf(stderr, "%s\n", dlerror()); } [dmarchan@dmarchan plop]$ cat lib/lib.c #include <stdio.h> __attribute__((constructor)) static void plop(void) { fprintf(stdout, "plop\n"); } # no rpath/runpath [dmarchan@dmarchan plop]$ gcc -o lib/lib.so -Wall -Werror -shared -fPIC lib/lib.c [dmarchan@dmarchan plop]$ gcc -o loader/loader.so -Wall -Werror -shared -fPIC loader/loader.c -ldl [dmarchan@dmarchan plop]$ gcc -o main -Wall -Werror main.c loader/loader.so [dmarchan@dmarchan plop]$ readelf -d main |grep R.*PATH [dmarchan@dmarchan plop]$ ./main lib.so: cannot open shared object file: No such file or directory # using rpath on final binary [dmarchan@dmarchan plop]$ gcc -o main -Wall -Werror main.c loader/loader.so -Wl,-rpath,loader:lib [dmarchan@dmarchan plop]$ readelf -d main |grep R.*PATH 0x000000000000000f (RPATH) Library rpath: [loader:lib] [dmarchan@dmarchan plop]$ ./main plop # using runpath on final binary [dmarchan@dmarchan plop]$ gcc -o main -Wall -Werror main.c loader/loader.so -Wl,-enable-new-dtag,-rpath,loader:lib [dmarchan@dmarchan plop]$ readelf -d main |grep R.*PATH 0x000000000000001d (RUNPATH) Library runpath: [loader:lib] [dmarchan@dmarchan plop]$ ./main lib.so: cannot open shared object file: No such file or directory # using runpath on loader [dmarchan@dmarchan plop]$ gcc -o loader/loader.so -Wall -Werror -shared -fPIC loader/loader.c -ldl -Wl,-enable-new-dtag,-rpath,lib [dmarchan@dmarchan plop]$ readelf -d loader/loader.so |grep R.*PATH 0x000000000000001d (RUNPATH) Library runpath: [lib] [dmarchan@dmarchan plop]$ gcc -o main -Wall -Werror main.c loader/loader.so -Wl,-enable-new-dtag,-rpath,loader [dmarchan@dmarchan plop]$ readelf -d main |grep R.*PATH 0x000000000000001d (RUNPATH) Library runpath: [loader] [dmarchan@dmarchan plop]$ ./main plop > > Adding Bruce and Kevin, as I think this is the same issue than: > > http://mails.dpdk.org/archives/dev/2019-December/153627.html > > Could it be a change in meson? > > Yes, looks like the same error to me. > > I'm not sure this is solely a meson issue, I often need to pass -d > librte_mempool_ring.so when using make builds too. Maybe I'm missing > something here? In a make build directory, all libraries ends up in the same lib/ directory and the test-null.sh script work with the current LD_LIBRARY_PATH. Ruifeng patch seems valid to me, but I would love some explanations in the commitlog. -- David Marchand ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [dpdk-dev] [PATCH 2/2] devtools: add path to additional shared object files 2019-12-18 15:32 ` David Marchand @ 2019-12-18 16:00 ` Richardson, Bruce 2019-12-19 3:14 ` Ruifeng Wang 1 sibling, 0 replies; 36+ messages in thread From: Richardson, Bruce @ 2019-12-18 16:00 UTC (permalink / raw) To: David Marchand, Laatz, Kevin Cc: Ruifeng Wang, Aaron Conole, Michael Santana, Thomas Monjalon, Yigit, Ferruh, Andrew Rybchenko, dev, Gavin Hu, Honnappa Nagarahalli, nd > -----Original Message----- > From: David Marchand <david.marchand@redhat.com> > Sent: Wednesday, December 18, 2019 3:32 PM > To: Laatz, Kevin <kevin.laatz@intel.com> > Cc: Ruifeng Wang <ruifeng.wang@arm.com>; Richardson, Bruce > <bruce.richardson@intel.com>; Aaron Conole <aconole@redhat.com>; Michael > Santana <maicolgabriel@hotmail.com>; Thomas Monjalon > <thomas@monjalon.net>; Yigit, Ferruh <ferruh.yigit@intel.com>; Andrew > Rybchenko <arybchenko@solarflare.com>; dev <dev@dpdk.org>; Gavin Hu > <gavin.hu@arm.com>; Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>; > nd <nd@arm.com> > Subject: Re: [dpdk-dev] [PATCH 2/2] devtools: add path to additional > shared object files > > On Wed, Dec 18, 2019 at 2:43 PM Laatz, Kevin <kevin.laatz@intel.com> > wrote: > > > > On 18/12/2019 08:23, David Marchand wrote: > > > On Wed, Dec 18, 2019 at 6:39 AM Ruifeng Wang <ruifeng.wang@arm.com> > wrote: > > >> librte_mempool_ring.so and librte_pmd_null.so are in 'drivers' > folder. > > >> Add 'drivers' into LD_LIBRARY_PATH so that testpmd can find and > > >> make use of these shared libraries. > > >> > > >> Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> > > >> Reviewed-by: Gavin Hu <gavin.hu@arm.com> > > >> --- > > >> devtools/test-null.sh | 2 +- > > >> 1 file changed, 1 insertion(+), 1 deletion(-) > > >> > > >> diff --git a/devtools/test-null.sh b/devtools/test-null.sh index > > >> f39af2c06..548de8113 100755 > > >> --- a/devtools/test-null.sh > > >> +++ b/devtools/test-null.sh > > >> @@ -20,7 +20,7 @@ if [ ! -f "$testpmd" ] ; then > > >> fi > > >> > > >> if ldd $testpmd | grep -q librte_ ; then > > >> - export LD_LIBRARY_PATH=$build/lib:$LD_LIBRARY_PATH > > >> + export > > >> + LD_LIBRARY_PATH=$build/drivers:$build/lib:$LD_LIBRARY_PATH > > >> libs='-d librte_mempool_ring.so -d librte_pmd_null.so' > > >> else > > >> libs= > > >> -- > > >> 2.17.1 > > >> > > > I'm surprised to see this. > > > So far, the CI ran fine without it, so something is different in the > > > environment. > > > > > > I can see that the RPATH entry disappeared from the testpmd binary. > > > Xenial: > > > # readelf -d build/app/dpdk-testpmd |grep RPATH > > > 0x000000000000000f (RPATH) Library rpath: > > > [$ORIGIN/../lib:$ORIGIN/../drivers:XXXXXXXXXXXXX] > > > > > > (not sure what XXXX purpose is, but different topic) > > > > > > Bionic: > > > # readelf -d build/app/dpdk-testpmd |grep RPATH > > > > It looks like RPATH just changed to be named RUNPATH in Bionic: > > > > # readelf -d build/app/dpdk-testpmd | grep R.*PATH > > 0x000000000000001d (RUNPATH) Library runpath: > > [$ORIGIN/../lib:$ORIGIN/../drivers:XXXXXXXXXXXXX] > > Did some experiment with some test program and .so of mine. > TL;DR, if I understand correctly, RPATH on the binary applies to all > lookups, even in a subsequent .so code. > But RUNPATH only applies to the current ELF, meaning that the dlopen() in > my intermediate .so does not get it. > > dlopen() is called from librte_eal.so, and RUNPATH on testpmd is not > enough. > > > Details: > [dmarchan@dmarchan plop]$ cat main.c > extern void loader(void); > > int main(int argc, char *argv[]) > { > loader(); > return 0; > } > [dmarchan@dmarchan plop]$ cat loader/loader.c #include <dlfcn.h> #include > <stdio.h> > > void loader(void) > { > if (dlopen("lib.so", RTLD_NOW) == NULL) > fprintf(stderr, "%s\n", dlerror()); } > > [dmarchan@dmarchan plop]$ cat lib/lib.c > #include <stdio.h> > > __attribute__((constructor)) > static void plop(void) > { > fprintf(stdout, "plop\n"); > } > > > # no rpath/runpath > [dmarchan@dmarchan plop]$ gcc -o lib/lib.so -Wall -Werror -shared -fPIC > lib/lib.c [dmarchan@dmarchan plop]$ gcc -o loader/loader.so -Wall -Werror > -shared -fPIC loader/loader.c -ldl [dmarchan@dmarchan plop]$ gcc -o main - > Wall -Werror main.c loader/loader.so [dmarchan@dmarchan plop]$ readelf -d > main |grep R.*PATH [dmarchan@dmarchan plop]$ ./main > lib.so: cannot open shared object file: No such file or directory > > # using rpath on final binary > [dmarchan@dmarchan plop]$ gcc -o main -Wall -Werror main.c > loader/loader.so -Wl,-rpath,loader:lib [dmarchan@dmarchan plop]$ readelf - > d main |grep R.*PATH > 0x000000000000000f (RPATH) Library rpath: [loader:lib] > [dmarchan@dmarchan plop]$ ./main > plop > > # using runpath on final binary > [dmarchan@dmarchan plop]$ gcc -o main -Wall -Werror main.c > loader/loader.so -Wl,-enable-new-dtag,-rpath,loader:lib > [dmarchan@dmarchan plop]$ readelf -d main |grep R.*PATH > 0x000000000000001d (RUNPATH) Library runpath: [loader:lib] > [dmarchan@dmarchan plop]$ ./main > lib.so: cannot open shared object file: No such file or directory > > # using runpath on loader > [dmarchan@dmarchan plop]$ gcc -o loader/loader.so -Wall -Werror -shared - > fPIC loader/loader.c -ldl -Wl,-enable-new-dtag,-rpath,lib > [dmarchan@dmarchan plop]$ readelf -d loader/loader.so |grep R.*PATH > 0x000000000000001d (RUNPATH) Library runpath: [lib] > [dmarchan@dmarchan plop]$ gcc -o main -Wall -Werror main.c > loader/loader.so -Wl,-enable-new-dtag,-rpath,loader > [dmarchan@dmarchan plop]$ readelf -d main |grep R.*PATH > 0x000000000000001d (RUNPATH) Library runpath: [loader] > [dmarchan@dmarchan plop]$ ./main > plop > > > > > Adding Bruce and Kevin, as I think this is the same issue than: > > > http://mails.dpdk.org/archives/dev/2019-December/153627.html > > > Could it be a change in meson? > > > > Yes, looks like the same error to me. > > > > I'm not sure this is solely a meson issue, I often need to pass -d > > librte_mempool_ring.so when using make builds too. Maybe I'm missing > > something here? > > In a make build directory, all libraries ends up in the same lib/ > directory and the test-null.sh script work with the current > LD_LIBRARY_PATH. > > > Ruifeng patch seems valid to me, but I would love some explanations in the > commitlog. > > -- > David Marchand Really, if we are running a shared-library build, all sorts of problems are to be expected unless we do an "install" to place the .so files in their correct locations on the filesystem. For example, on install, the drivers are copied to a drivers directory off the lib folder, but then symlinked to lib too, so that e.g. the bus drivers can be found as dependencies of the other drivers. For running binaries within the build directory, I always recommend using a static build instead, to avoid all these issues - this is why static linking is still the DPDK default. In terms of this patch, I have no problem with it if it fixed the issue. /Bruce ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [dpdk-dev] [PATCH 2/2] devtools: add path to additional shared object files 2019-12-18 15:32 ` David Marchand 2019-12-18 16:00 ` Richardson, Bruce @ 2019-12-19 3:14 ` Ruifeng Wang 1 sibling, 0 replies; 36+ messages in thread From: Ruifeng Wang @ 2019-12-19 3:14 UTC (permalink / raw) To: David Marchand, Laatz, Kevin Cc: Bruce Richardson, Aaron Conole, Michael Santana, thomas, Yigit, Ferruh, Andrew Rybchenko, dev, Gavin Hu, Honnappa Nagarahalli, nd, nd > -----Original Message----- > From: David Marchand <david.marchand@redhat.com> > Sent: Wednesday, December 18, 2019 23:32 > To: Laatz, Kevin <kevin.laatz@intel.com> > Cc: Ruifeng Wang <Ruifeng.Wang@arm.com>; Bruce Richardson > <bruce.richardson@intel.com>; Aaron Conole <aconole@redhat.com>; > Michael Santana <maicolgabriel@hotmail.com>; thomas@monjalon.net; Yigit, > Ferruh <ferruh.yigit@intel.com>; Andrew Rybchenko > <arybchenko@solarflare.com>; dev <dev@dpdk.org>; Gavin Hu > <Gavin.Hu@arm.com>; Honnappa Nagarahalli > <Honnappa.Nagarahalli@arm.com>; nd <nd@arm.com> > Subject: Re: [dpdk-dev] [PATCH 2/2] devtools: add path to additional shared > object files > > On Wed, Dec 18, 2019 at 2:43 PM Laatz, Kevin <kevin.laatz@intel.com> wrote: > > > > On 18/12/2019 08:23, David Marchand wrote: > > > On Wed, Dec 18, 2019 at 6:39 AM Ruifeng Wang <ruifeng.wang@arm.com> > wrote: > > >> librte_mempool_ring.so and librte_pmd_null.so are in 'drivers' folder. > > >> Add 'drivers' into LD_LIBRARY_PATH so that testpmd can find and > > >> make use of these shared libraries. > > >> > > >> Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> > > >> Reviewed-by: Gavin Hu <gavin.hu@arm.com> > > >> --- > > >> devtools/test-null.sh | 2 +- > > >> 1 file changed, 1 insertion(+), 1 deletion(-) > > >> > > >> diff --git a/devtools/test-null.sh b/devtools/test-null.sh index > > >> f39af2c06..548de8113 100755 > > >> --- a/devtools/test-null.sh > > >> +++ b/devtools/test-null.sh > > >> @@ -20,7 +20,7 @@ if [ ! -f "$testpmd" ] ; then > > >> fi > > >> > > >> if ldd $testpmd | grep -q librte_ ; then > > >> - export LD_LIBRARY_PATH=$build/lib:$LD_LIBRARY_PATH > > >> + export > > >> + LD_LIBRARY_PATH=$build/drivers:$build/lib:$LD_LIBRARY_PATH > > >> libs='-d librte_mempool_ring.so -d librte_pmd_null.so' > > >> else > > >> libs= > > >> -- > > >> 2.17.1 > > >> > > > I'm surprised to see this. > > > So far, the CI ran fine without it, so something is different in the > > > environment. > > > > > > I can see that the RPATH entry disappeared from the testpmd binary. > > > Xenial: > > > # readelf -d build/app/dpdk-testpmd |grep RPATH > > > 0x000000000000000f (RPATH) Library rpath: > > > [$ORIGIN/../lib:$ORIGIN/../drivers:XXXXXXXXXXXXX] > > > > > > (not sure what XXXX purpose is, but different topic) > > > > > > Bionic: > > > # readelf -d build/app/dpdk-testpmd |grep RPATH > > > > It looks like RPATH just changed to be named RUNPATH in Bionic: > > > > # readelf -d build/app/dpdk-testpmd | grep R.*PATH > > 0x000000000000001d (RUNPATH) Library runpath: > > [$ORIGIN/../lib:$ORIGIN/../drivers:XXXXXXXXXXXXX] > > Did some experiment with some test program and .so of mine. > TL;DR, if I understand correctly, RPATH on the binary applies to all lookups, > even in a subsequent .so code. > But RUNPATH only applies to the current ELF, meaning that the dlopen() in > my intermediate .so does not get it. > > dlopen() is called from librte_eal.so, and RUNPATH on testpmd is not enough. > Thanks for your experiment and analysis. Really happy to know more around the issue. > > Details: > [dmarchan@dmarchan plop]$ cat main.c > extern void loader(void); > > int main(int argc, char *argv[]) > { > loader(); > return 0; > } > [dmarchan@dmarchan plop]$ cat loader/loader.c #include <dlfcn.h> > #include <stdio.h> > > void loader(void) > { > if (dlopen("lib.so", RTLD_NOW) == NULL) > fprintf(stderr, "%s\n", dlerror()); } > > [dmarchan@dmarchan plop]$ cat lib/lib.c > #include <stdio.h> > > __attribute__((constructor)) > static void plop(void) > { > fprintf(stdout, "plop\n"); > } > > > # no rpath/runpath > [dmarchan@dmarchan plop]$ gcc -o lib/lib.so -Wall -Werror -shared -fPIC > lib/lib.c [dmarchan@dmarchan plop]$ gcc -o loader/loader.so -Wall -Werror - > shared -fPIC loader/loader.c -ldl [dmarchan@dmarchan plop]$ gcc -o main - > Wall -Werror main.c loader/loader.so [dmarchan@dmarchan plop]$ readelf - > d main |grep R.*PATH [dmarchan@dmarchan plop]$ ./main > lib.so: cannot open shared object file: No such file or directory > > # using rpath on final binary > [dmarchan@dmarchan plop]$ gcc -o main -Wall -Werror main.c > loader/loader.so -Wl,-rpath,loader:lib [dmarchan@dmarchan plop]$ readelf - > d main |grep R.*PATH > 0x000000000000000f (RPATH) Library rpath: [loader:lib] > [dmarchan@dmarchan plop]$ ./main > plop > > # using runpath on final binary > [dmarchan@dmarchan plop]$ gcc -o main -Wall -Werror main.c > loader/loader.so -Wl,-enable-new-dtag,-rpath,loader:lib > [dmarchan@dmarchan plop]$ readelf -d main |grep R.*PATH > 0x000000000000001d (RUNPATH) Library runpath: [loader:lib] > [dmarchan@dmarchan plop]$ ./main > lib.so: cannot open shared object file: No such file or directory > > # using runpath on loader > [dmarchan@dmarchan plop]$ gcc -o loader/loader.so -Wall -Werror -shared - > fPIC loader/loader.c -ldl -Wl,-enable-new-dtag,-rpath,lib > [dmarchan@dmarchan plop]$ readelf -d loader/loader.so |grep R.*PATH > 0x000000000000001d (RUNPATH) Library runpath: [lib] > [dmarchan@dmarchan plop]$ gcc -o main -Wall -Werror main.c > loader/loader.so -Wl,-enable-new-dtag,-rpath,loader > [dmarchan@dmarchan plop]$ readelf -d main |grep R.*PATH > 0x000000000000001d (RUNPATH) Library runpath: [loader] > [dmarchan@dmarchan plop]$ ./main > plop > > > > > Adding Bruce and Kevin, as I think this is the same issue than: > > > http://mails.dpdk.org/archives/dev/2019-December/153627.html > > > Could it be a change in meson? > > > > Yes, looks like the same error to me. > > > > I'm not sure this is solely a meson issue, I often need to pass -d > > librte_mempool_ring.so when using make builds too. Maybe I'm missing > > something here? > > In a make build directory, all libraries ends up in the same lib/ directory and > the test-null.sh script work with the current LD_LIBRARY_PATH. > > > Ruifeng patch seems valid to me, but I would love some explanations in the > commitlog. > Sure. I will re-spin to add explanations. > -- > David Marchand ^ permalink raw reply [flat|nested] 36+ messages in thread
* [dpdk-dev] [PATCH v2 0/2] add travis ci support for aarch64 2019-12-18 5:39 [dpdk-dev] [PATCH 0/2] add travis ci support for aarch64 Ruifeng Wang 2019-12-18 5:39 ` [dpdk-dev] [PATCH 1/2] ci: " Ruifeng Wang 2019-12-18 5:39 ` [dpdk-dev] [PATCH 2/2] devtools: add path to additional shared object files Ruifeng Wang @ 2019-12-20 9:37 ` Ruifeng Wang 2019-12-20 9:37 ` [dpdk-dev] [PATCH v2 1/2] ci: " Ruifeng Wang ` (2 more replies) 2019-12-23 7:08 ` [dpdk-dev] [PATCH v3 " Ruifeng Wang ` (2 subsequent siblings) 5 siblings, 3 replies; 36+ messages in thread From: Ruifeng Wang @ 2019-12-20 9:37 UTC (permalink / raw) To: aconole, maicolgabriel, thomas, ferruh.yigit, arybchenko Cc: dev, gavin.hu, honnappa.nagarahalli, nd, Ruifeng Wang This patch set is to enable native aarch64 build in Travis CI. It leverages Travis CI multi arch support. As the first step, compilation jobs are added. Unit test is not added for now due to service limitation. We are planning to run unit test with no-huge in future. This patch set has dependency on: http://patches.dpdk.org/patch/63969/ v2: Removed dist designation from matrix since base dist is changing. Add explanation for library path issue. Ruifeng Wang (2): ci: add travis ci support for aarch64 devtools: add path to additional shared object files .ci/linux-setup.sh | 11 +++++++---- .travis.yml | 37 ++++++++++++++++++++++++++++++++++++- devtools/test-null.sh | 2 +- 3 files changed, 44 insertions(+), 6 deletions(-) -- 2.17.1 ^ permalink raw reply [flat|nested] 36+ messages in thread
* [dpdk-dev] [PATCH v2 1/2] ci: add travis ci support for aarch64 2019-12-20 9:37 ` [dpdk-dev] [PATCH v2 0/2] add travis ci support for aarch64 Ruifeng Wang @ 2019-12-20 9:37 ` Ruifeng Wang 2020-01-06 20:17 ` dwilder 2019-12-20 9:37 ` [dpdk-dev] [PATCH v2 2/2] devtools: add path to additional shared object files Ruifeng Wang 2019-12-20 13:57 ` [dpdk-dev] [PATCH v2 0/2] add travis ci support for aarch64 David Marchand 2 siblings, 1 reply; 36+ messages in thread From: Ruifeng Wang @ 2019-12-20 9:37 UTC (permalink / raw) To: aconole, maicolgabriel, thomas, ferruh.yigit, arybchenko Cc: dev, gavin.hu, honnappa.nagarahalli, nd, Ruifeng Wang Add Travis compilation jobs for aarch64. gcc/clang compilations for static/shared libraries are added. Some limitations for current aarch64 Travis support: 1. Container is used. Huge page is not available due to security reason. 2. Missing kernel header package in Xenial distribution. Solutions to address the limitations: 1. Not to add unit test for now. And run tests with no-huge in future. 2. Use Bionic distribution for all aarch64 jobs. Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Gavin Hu <gavin.hu@arm.com> --- .ci/linux-setup.sh | 11 +++++++---- .travis.yml | 37 ++++++++++++++++++++++++++++++++++++- 2 files changed, 43 insertions(+), 5 deletions(-) diff --git a/.ci/linux-setup.sh b/.ci/linux-setup.sh index dfb9d4a20..a92978037 100755 --- a/.ci/linux-setup.sh +++ b/.ci/linux-setup.sh @@ -3,7 +3,10 @@ # need to install as 'root' since some of the unit tests won't run without it sudo python3 -m pip install --upgrade meson -# setup hugepages -cat /proc/meminfo -sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' -cat /proc/meminfo +# hugepage settings are skipped on aarch64 due to environment limitation +if [ "$TRAVIS_ARCH" != "aarch64" ]; then + # setup hugepages + cat /proc/meminfo + sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' + cat /proc/meminfo +fi diff --git a/.travis.yml b/.travis.yml index 8f90d06f2..048cb6ba5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -115,6 +115,41 @@ matrix: apt: packages: - *extra_packages - + - env: DEF_LIB="static" + arch: arm64 + compiler: gcc + addons: + apt: + packages: + - *required_packages + - env: DEF_LIB="shared" + arch: arm64 + compiler: gcc + addons: + apt: + packages: + - *required_packages + - env: DEF_LIB="static" + arch: arm64 + compiler: clang + addons: + apt: + packages: + - *required_packages + - env: DEF_LIB="shared" + arch: arm64 + compiler: clang + addons: + apt: + packages: + - *required_packages + - env: DEF_LIB="shared" OPTS="-Denable_kmods=false" BUILD_DOCS=1 + arch: arm64 + compiler: gcc + addons: + apt: + packages: + - *required_packages + - *doc_packages script: ./.ci/${TRAVIS_OS_NAME}-build.sh -- 2.17.1 ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [dpdk-dev] [PATCH v2 1/2] ci: add travis ci support for aarch64 2019-12-20 9:37 ` [dpdk-dev] [PATCH v2 1/2] ci: " Ruifeng Wang @ 2020-01-06 20:17 ` dwilder 2020-01-07 6:42 ` Ruifeng Wang 0 siblings, 1 reply; 36+ messages in thread From: dwilder @ 2020-01-06 20:17 UTC (permalink / raw) To: Ruifeng Wang Cc: aconole, maicolgabriel, thomas, ferruh.yigit, arybchenko, dev, gavin.hu, honnappa.nagarahalli, nd On 2019-12-20 01:37, Ruifeng Wang wrote: > Add Travis compilation jobs for aarch64. gcc/clang compilations for > static/shared libraries are added. > > Some limitations for current aarch64 Travis support: > 1. Container is used. Huge page is not available due to security > reason. > 2. Missing kernel header package in Xenial distribution. > > Solutions to address the limitations: > 1. Not to add unit test for now. And run tests with no-huge in future. > 2. Use Bionic distribution for all aarch64 jobs. > > Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> > Reviewed-by: Gavin Hu <gavin.hu@arm.com> > --- > .ci/linux-setup.sh | 11 +++++++---- > .travis.yml | 37 ++++++++++++++++++++++++++++++++++++- > 2 files changed, 43 insertions(+), 5 deletions(-) > > diff --git a/.ci/linux-setup.sh b/.ci/linux-setup.sh > index dfb9d4a20..a92978037 100755 > --- a/.ci/linux-setup.sh > +++ b/.ci/linux-setup.sh > @@ -3,7 +3,10 @@ > # need to install as 'root' since some of the unit tests won't run > without it > sudo python3 -m pip install --upgrade meson > > -# setup hugepages > -cat /proc/meminfo > -sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' > -cat /proc/meminfo dont test for TRAVIS_ARCH here as multiple archs may need to avoid the hugepage setup as well. How about: if [ "$RUN_TESTS" = "1" ]; then # setup hugepages If your planning to add a tests using --no-huge option could we add a NOHUGEPAGES option to the matrix? > +# hugepage settings are skipped on aarch64 due to environment > limitation > +if [ "$TRAVIS_ARCH" != "aarch64" ]; then > + # setup hugepages > + cat /proc/meminfo > + sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' > + cat /proc/meminfo > +fi > diff --git a/.travis.yml b/.travis.yml > index 8f90d06f2..048cb6ba5 100644 > --- a/.travis.yml > +++ b/.travis.yml > @@ -115,6 +115,41 @@ matrix: > apt: > packages: > - *extra_packages > - > + - env: DEF_LIB="static" > + arch: arm64 > + compiler: gcc > + addons: > + apt: > + packages: > + - *required_packages > + - env: DEF_LIB="shared" > + arch: arm64 > + compiler: gcc > + addons: > + apt: > + packages: > + - *required_packages > + - env: DEF_LIB="static" > + arch: arm64 > + compiler: clang > + addons: > + apt: > + packages: > + - *required_packages > + - env: DEF_LIB="shared" > + arch: arm64 > + compiler: clang > + addons: > + apt: > + packages: > + - *required_packages > + - env: DEF_LIB="shared" OPTS="-Denable_kmods=false" BUILD_DOCS=1 > + arch: arm64 > + compiler: gcc > + addons: > + apt: > + packages: > + - *required_packages > + - *doc_packages > > script: ./.ci/${TRAVIS_OS_NAME}-build.sh ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [dpdk-dev] [PATCH v2 1/2] ci: add travis ci support for aarch64 2020-01-06 20:17 ` dwilder @ 2020-01-07 6:42 ` Ruifeng Wang 0 siblings, 0 replies; 36+ messages in thread From: Ruifeng Wang @ 2020-01-07 6:42 UTC (permalink / raw) To: dwilder Cc: aconole, maicolgabriel, thomas, ferruh.yigit, arybchenko, dev, Gavin Hu, Honnappa Nagarahalli, nd, nd > -----Original Message----- > From: dwilder <dwilder@us.ibm.com> > Sent: Tuesday, January 7, 2020 04:17 > To: Ruifeng Wang <Ruifeng.Wang@arm.com> > Cc: aconole@redhat.com; maicolgabriel@hotmail.com; > thomas@monjalon.net; ferruh.yigit@intel.com; arybchenko@solarflare.com; > dev@dpdk.org; Gavin Hu <Gavin.Hu@arm.com>; Honnappa Nagarahalli > <Honnappa.Nagarahalli@arm.com>; nd <nd@arm.com> > Subject: Re: [dpdk-dev] [PATCH v2 1/2] ci: add travis ci support for aarch64 > > On 2019-12-20 01:37, Ruifeng Wang wrote: > > Add Travis compilation jobs for aarch64. gcc/clang compilations for > > static/shared libraries are added. > > > > Some limitations for current aarch64 Travis support: > > 1. Container is used. Huge page is not available due to security > > reason. > > 2. Missing kernel header package in Xenial distribution. > > > > Solutions to address the limitations: > > 1. Not to add unit test for now. And run tests with no-huge in future. > > 2. Use Bionic distribution for all aarch64 jobs. > > > > Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> > > Reviewed-by: Gavin Hu <gavin.hu@arm.com> > > --- > > .ci/linux-setup.sh | 11 +++++++---- > > .travis.yml | 37 ++++++++++++++++++++++++++++++++++++- > > 2 files changed, 43 insertions(+), 5 deletions(-) > > > > diff --git a/.ci/linux-setup.sh b/.ci/linux-setup.sh index > > dfb9d4a20..a92978037 100755 > > --- a/.ci/linux-setup.sh > > +++ b/.ci/linux-setup.sh > > @@ -3,7 +3,10 @@ > > # need to install as 'root' since some of the unit tests won't run > > without it sudo python3 -m pip install --upgrade meson > > > > -# setup hugepages > > -cat /proc/meminfo > > -sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' > > -cat /proc/meminfo > > > dont test for TRAVIS_ARCH here as multiple archs may need to avoid the > hugepage setup as well. > > How about: > if [ "$RUN_TESTS" = "1" ]; then > # setup hugepages This should work. I can try this approach in next version. My concern is the name may cause confusion. 'RUN_TESTS' will mean to run default tests (with hugepage). > > If your planning to add a tests using --no-huge option could we add a > NOHUGEPAGES option to the matrix? Yes, this will give control to choose test suite. I will take this into consideration. > > > +# hugepage settings are skipped on aarch64 due to environment > > limitation > > +if [ "$TRAVIS_ARCH" != "aarch64" ]; then > > + # setup hugepages > > + cat /proc/meminfo > > + sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' > > + cat /proc/meminfo > > +fi > > diff --git a/.travis.yml b/.travis.yml index 8f90d06f2..048cb6ba5 > > 100644 > > --- a/.travis.yml > > +++ b/.travis.yml > > @@ -115,6 +115,41 @@ matrix: > > apt: > > packages: > > - *extra_packages > > - > > + - env: DEF_LIB="static" > > + arch: arm64 > > + compiler: gcc > > + addons: > > + apt: > > + packages: > > + - *required_packages > > + - env: DEF_LIB="shared" > > + arch: arm64 > > + compiler: gcc > > + addons: > > + apt: > > + packages: > > + - *required_packages > > + - env: DEF_LIB="static" > > + arch: arm64 > > + compiler: clang > > + addons: > > + apt: > > + packages: > > + - *required_packages > > + - env: DEF_LIB="shared" > > + arch: arm64 > > + compiler: clang > > + addons: > > + apt: > > + packages: > > + - *required_packages > > + - env: DEF_LIB="shared" OPTS="-Denable_kmods=false" BUILD_DOCS=1 > > + arch: arm64 > > + compiler: gcc > > + addons: > > + apt: > > + packages: > > + - *required_packages > > + - *doc_packages > > > > script: ./.ci/${TRAVIS_OS_NAME}-build.sh ^ permalink raw reply [flat|nested] 36+ messages in thread
* [dpdk-dev] [PATCH v2 2/2] devtools: add path to additional shared object files 2019-12-20 9:37 ` [dpdk-dev] [PATCH v2 0/2] add travis ci support for aarch64 Ruifeng Wang 2019-12-20 9:37 ` [dpdk-dev] [PATCH v2 1/2] ci: " Ruifeng Wang @ 2019-12-20 9:37 ` Ruifeng Wang 2019-12-20 13:57 ` [dpdk-dev] [PATCH v2 0/2] add travis ci support for aarch64 David Marchand 2 siblings, 0 replies; 36+ messages in thread From: Ruifeng Wang @ 2019-12-20 9:37 UTC (permalink / raw) To: aconole, maicolgabriel, thomas, ferruh.yigit, arybchenko Cc: dev, gavin.hu, honnappa.nagarahalli, nd, Ruifeng Wang Drivers librte_mempool_ring.so and librte_pmd_null.so are loaded by librte_eal.so when running testpmd. In Ubuntu Xenial, driver path is installed to RPATH on testpmd. This allows librte_eal.so to find drivers by using the RPATH. However, in Ubuntu Bionic, driver path is installed to RUNPATH instead. The RUNPATH on testpmd is not available by librte_eal.so and therefore lead to driver load failure: EAL: Detected 32 lcore(s) EAL: Detected 1 NUMA nodes EAL: librte_mempool_ring.so: cannot open shared object file: No such file or directory EAL: FATAL: Cannot init plugins EAL: Cannot init plugins Add 'drivers' into LD_LIBRARY_PATH so that testpmd can find and make use of these shared libraries. Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Gavin Hu <gavin.hu@arm.com> --- devtools/test-null.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devtools/test-null.sh b/devtools/test-null.sh index f39af2c06..548de8113 100755 --- a/devtools/test-null.sh +++ b/devtools/test-null.sh @@ -20,7 +20,7 @@ if [ ! -f "$testpmd" ] ; then fi if ldd $testpmd | grep -q librte_ ; then - export LD_LIBRARY_PATH=$build/lib:$LD_LIBRARY_PATH + export LD_LIBRARY_PATH=$build/drivers:$build/lib:$LD_LIBRARY_PATH libs='-d librte_mempool_ring.so -d librte_pmd_null.so' else libs= -- 2.17.1 ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [dpdk-dev] [PATCH v2 0/2] add travis ci support for aarch64 2019-12-20 9:37 ` [dpdk-dev] [PATCH v2 0/2] add travis ci support for aarch64 Ruifeng Wang 2019-12-20 9:37 ` [dpdk-dev] [PATCH v2 1/2] ci: " Ruifeng Wang 2019-12-20 9:37 ` [dpdk-dev] [PATCH v2 2/2] devtools: add path to additional shared object files Ruifeng Wang @ 2019-12-20 13:57 ` David Marchand 2 siblings, 0 replies; 36+ messages in thread From: David Marchand @ 2019-12-20 13:57 UTC (permalink / raw) To: Ruifeng Wang Cc: Aaron Conole, Michael Santana, Thomas Monjalon, Yigit, Ferruh, Andrew Rybchenko, dev, Gavin Hu, Honnappa Nagarahalli, nd, Kevin Laatz On Fri, Dec 20, 2019 at 10:38 AM Ruifeng Wang <ruifeng.wang@arm.com> wrote: > > This patch set is to enable native aarch64 build in Travis CI. > It leverages Travis CI multi arch support. > > As the first step, compilation jobs are added. > Unit test is not added for now due to service limitation. We are > planning to run unit test with no-huge in future. > > This patch set has dependency on: > http://patches.dpdk.org/patch/63969/ > > > v2: > Removed dist designation from matrix since base dist is changing. *If* (I did not think about the implications yet, hence the *If*) we switch the base distribution to Bionic, we can't push it anyway without your second patch. Patches order must be reversed. And for the jobs in travis, the distribution for aarch64 native jobs must be explicitely bionic distribution (you did not update the commitlog in the v2 but not a problem if you restore the dist: bionic entries). We can then take your series. Kevin patch that upgrades globally from xenial to bionic, can then be integrated after yours. > Add explanation for library path issue. Thanks for this. -- David Marchand ^ permalink raw reply [flat|nested] 36+ messages in thread
* [dpdk-dev] [PATCH v3 0/2] add travis ci support for aarch64 2019-12-18 5:39 [dpdk-dev] [PATCH 0/2] add travis ci support for aarch64 Ruifeng Wang ` (2 preceding siblings ...) 2019-12-20 9:37 ` [dpdk-dev] [PATCH v2 0/2] add travis ci support for aarch64 Ruifeng Wang @ 2019-12-23 7:08 ` Ruifeng Wang 2019-12-23 7:08 ` [dpdk-dev] [PATCH v3 1/2] devtools: add path to additional shared object files Ruifeng Wang 2019-12-23 7:08 ` [dpdk-dev] [PATCH v3 2/2] ci: add travis ci support for aarch64 Ruifeng Wang 2020-01-10 9:53 ` [dpdk-dev] [PATCH v4 0/2] " Ruifeng Wang 2020-01-13 6:26 ` [dpdk-dev] [PATCH v5 0/2] add travis ci support for native aarch64 Ruifeng Wang 5 siblings, 2 replies; 36+ messages in thread From: Ruifeng Wang @ 2019-12-23 7:08 UTC (permalink / raw) To: aconole, maicolgabriel, thomas, ferruh.yigit, arybchenko Cc: dev, david.marchand, gavin.hu, honnappa.nagarahalli, nd, Ruifeng Wang This patch set is to enable native aarch64 build in Travis CI. It leverages Travis CI multi arch support. As the first step, compilation jobs are added. Unit test is not added for now due to service limitation. We are planning to run unit test with no-huge in future. v3: Reverse patches order. Not depending on other patches. Restore distribution designation for aarch64 native jobs. v2: Removed dist designation from matrix since base dist is changing. Add explanation for library path issue. Ruifeng Wang (2): devtools: add path to additional shared object files ci: add travis ci support for aarch64 .ci/linux-setup.sh | 11 +++++++---- .travis.yml | 42 +++++++++++++++++++++++++++++++++++++++++- devtools/test-null.sh | 2 +- 3 files changed, 49 insertions(+), 6 deletions(-) -- 2.17.1 ^ permalink raw reply [flat|nested] 36+ messages in thread
* [dpdk-dev] [PATCH v3 1/2] devtools: add path to additional shared object files 2019-12-23 7:08 ` [dpdk-dev] [PATCH v3 " Ruifeng Wang @ 2019-12-23 7:08 ` Ruifeng Wang 2019-12-23 7:08 ` [dpdk-dev] [PATCH v3 2/2] ci: add travis ci support for aarch64 Ruifeng Wang 1 sibling, 0 replies; 36+ messages in thread From: Ruifeng Wang @ 2019-12-23 7:08 UTC (permalink / raw) To: aconole, maicolgabriel, thomas, ferruh.yigit, arybchenko Cc: dev, david.marchand, gavin.hu, honnappa.nagarahalli, nd, Ruifeng Wang Drivers librte_mempool_ring.so and librte_pmd_null.so are loaded by librte_eal.so when running testpmd. In Ubuntu Xenial, driver path is installed to RPATH on testpmd. This allows librte_eal.so to find drivers by using the RPATH. However, in Ubuntu Bionic, driver path is installed to RUNPATH instead. The RUNPATH on testpmd is not available by librte_eal.so and therefore lead to driver load failure: EAL: Detected 32 lcore(s) EAL: Detected 1 NUMA nodes EAL: librte_mempool_ring.so: cannot open shared object file: No such file or directory EAL: FATAL: Cannot init plugins EAL: Cannot init plugins Add 'drivers' into LD_LIBRARY_PATH so that testpmd can find and make use of these shared libraries. Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Gavin Hu <gavin.hu@arm.com> --- devtools/test-null.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devtools/test-null.sh b/devtools/test-null.sh index f39af2c06..548de8113 100755 --- a/devtools/test-null.sh +++ b/devtools/test-null.sh @@ -20,7 +20,7 @@ if [ ! -f "$testpmd" ] ; then fi if ldd $testpmd | grep -q librte_ ; then - export LD_LIBRARY_PATH=$build/lib:$LD_LIBRARY_PATH + export LD_LIBRARY_PATH=$build/drivers:$build/lib:$LD_LIBRARY_PATH libs='-d librte_mempool_ring.so -d librte_pmd_null.so' else libs= -- 2.17.1 ^ permalink raw reply [flat|nested] 36+ messages in thread
* [dpdk-dev] [PATCH v3 2/2] ci: add travis ci support for aarch64 2019-12-23 7:08 ` [dpdk-dev] [PATCH v3 " Ruifeng Wang 2019-12-23 7:08 ` [dpdk-dev] [PATCH v3 1/2] devtools: add path to additional shared object files Ruifeng Wang @ 2019-12-23 7:08 ` Ruifeng Wang 2020-01-06 13:34 ` Aaron Conole 1 sibling, 1 reply; 36+ messages in thread From: Ruifeng Wang @ 2019-12-23 7:08 UTC (permalink / raw) To: aconole, maicolgabriel, thomas, ferruh.yigit, arybchenko Cc: dev, david.marchand, gavin.hu, honnappa.nagarahalli, nd, Ruifeng Wang Add Travis compilation jobs for aarch64. gcc/clang compilations for static/shared libraries are added. Some limitations for current aarch64 Travis support: 1. Container is used. Huge page is not available due to security reason. 2. Missing kernel header package in Xenial distribution. Solutions to address the limitations: 1. Not to add unit test for now. And run tests with no-huge in future. 2. Use Bionic distribution for all aarch64 jobs. Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Gavin Hu <gavin.hu@arm.com> --- .ci/linux-setup.sh | 11 +++++++---- .travis.yml | 42 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 48 insertions(+), 5 deletions(-) diff --git a/.ci/linux-setup.sh b/.ci/linux-setup.sh index dfb9d4a20..a92978037 100755 --- a/.ci/linux-setup.sh +++ b/.ci/linux-setup.sh @@ -3,7 +3,10 @@ # need to install as 'root' since some of the unit tests won't run without it sudo python3 -m pip install --upgrade meson -# setup hugepages -cat /proc/meminfo -sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' -cat /proc/meminfo +# hugepage settings are skipped on aarch64 due to environment limitation +if [ "$TRAVIS_ARCH" != "aarch64" ]; then + # setup hugepages + cat /proc/meminfo + sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' + cat /proc/meminfo +fi diff --git a/.travis.yml b/.travis.yml index 8f90d06f2..980c7605d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -115,6 +115,46 @@ matrix: apt: packages: - *extra_packages - + - env: DEF_LIB="static" + arch: arm64 + compiler: gcc + dist: bionic + addons: + apt: + packages: + - *required_packages + - env: DEF_LIB="shared" + arch: arm64 + compiler: gcc + dist: bionic + addons: + apt: + packages: + - *required_packages + - env: DEF_LIB="static" + arch: arm64 + dist: bionic + compiler: clang + addons: + apt: + packages: + - *required_packages + - env: DEF_LIB="shared" + arch: arm64 + dist: bionic + compiler: clang + addons: + apt: + packages: + - *required_packages + - env: DEF_LIB="shared" OPTS="-Denable_kmods=false" BUILD_DOCS=1 + arch: arm64 + compiler: gcc + dist: bionic + addons: + apt: + packages: + - *required_packages + - *doc_packages script: ./.ci/${TRAVIS_OS_NAME}-build.sh -- 2.17.1 ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [dpdk-dev] [PATCH v3 2/2] ci: add travis ci support for aarch64 2019-12-23 7:08 ` [dpdk-dev] [PATCH v3 2/2] ci: add travis ci support for aarch64 Ruifeng Wang @ 2020-01-06 13:34 ` Aaron Conole 2020-01-07 6:24 ` Ruifeng Wang 0 siblings, 1 reply; 36+ messages in thread From: Aaron Conole @ 2020-01-06 13:34 UTC (permalink / raw) To: Ruifeng Wang Cc: maicolgabriel, thomas, ferruh.yigit, arybchenko, dev, david.marchand, gavin.hu, honnappa.nagarahalli, nd Ruifeng Wang <ruifeng.wang@arm.com> writes: > Add Travis compilation jobs for aarch64. gcc/clang compilations for > static/shared libraries are added. > > Some limitations for current aarch64 Travis support: > 1. Container is used. Huge page is not available due to security reason. > 2. Missing kernel header package in Xenial distribution. > > Solutions to address the limitations: > 1. Not to add unit test for now. And run tests with no-huge in future. > 2. Use Bionic distribution for all aarch64 jobs. > > Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> > Reviewed-by: Gavin Hu <gavin.hu@arm.com> > --- Can't we achieve the same thing by setting arch: - amd64 - arm64 in the build matrix? Or will that also force the intel builds to use the container infrastructure (in which case the no-huge support needs to be fixed)? One thing I wonder, isn't is possible to use qemu-user to do the amd64 unit tests? Then do we really need some changes to do the native build? Does it buy us anything *today* given the cost of the hugepage restriction? Will that ever be resolved (I didn't see so from the docs on travis)? > .ci/linux-setup.sh | 11 +++++++---- > .travis.yml | 42 +++++++++++++++++++++++++++++++++++++++++- > 2 files changed, 48 insertions(+), 5 deletions(-) > > diff --git a/.ci/linux-setup.sh b/.ci/linux-setup.sh > index dfb9d4a20..a92978037 100755 > --- a/.ci/linux-setup.sh > +++ b/.ci/linux-setup.sh > @@ -3,7 +3,10 @@ > # need to install as 'root' since some of the unit tests won't run without it > sudo python3 -m pip install --upgrade meson > > -# setup hugepages > -cat /proc/meminfo > -sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' > -cat /proc/meminfo > +# hugepage settings are skipped on aarch64 due to environment limitation > +if [ "$TRAVIS_ARCH" != "aarch64" ]; then > + # setup hugepages > + cat /proc/meminfo > + sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' > + cat /proc/meminfo > +fi > diff --git a/.travis.yml b/.travis.yml > index 8f90d06f2..980c7605d 100644 > --- a/.travis.yml > +++ b/.travis.yml > @@ -115,6 +115,46 @@ matrix: > apt: > packages: > - *extra_packages > - > + - env: DEF_LIB="static" > + arch: arm64 > + compiler: gcc > + dist: bionic > + addons: > + apt: > + packages: > + - *required_packages > + - env: DEF_LIB="shared" > + arch: arm64 > + compiler: gcc > + dist: bionic > + addons: > + apt: > + packages: > + - *required_packages > + - env: DEF_LIB="static" > + arch: arm64 > + dist: bionic > + compiler: clang > + addons: > + apt: > + packages: > + - *required_packages > + - env: DEF_LIB="shared" > + arch: arm64 > + dist: bionic > + compiler: clang > + addons: > + apt: > + packages: > + - *required_packages > + - env: DEF_LIB="shared" OPTS="-Denable_kmods=false" BUILD_DOCS=1 > + arch: arm64 > + compiler: gcc > + dist: bionic > + addons: > + apt: > + packages: > + - *required_packages > + - *doc_packages > > script: ./.ci/${TRAVIS_OS_NAME}-build.sh ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [dpdk-dev] [PATCH v3 2/2] ci: add travis ci support for aarch64 2020-01-06 13:34 ` Aaron Conole @ 2020-01-07 6:24 ` Ruifeng Wang 2020-01-07 14:40 ` Honnappa Nagarahalli 2020-01-08 16:05 ` Aaron Conole 0 siblings, 2 replies; 36+ messages in thread From: Ruifeng Wang @ 2020-01-07 6:24 UTC (permalink / raw) To: Aaron Conole Cc: maicolgabriel, thomas, ferruh.yigit, arybchenko, dev, david.marchand, Gavin Hu, Honnappa Nagarahalli, nd, nd > -----Original Message----- > From: Aaron Conole <aconole@redhat.com> > Sent: Monday, January 6, 2020 21:34 > To: Ruifeng Wang <Ruifeng.Wang@arm.com> > Cc: maicolgabriel@hotmail.com; thomas@monjalon.net; > ferruh.yigit@intel.com; arybchenko@solarflare.com; dev@dpdk.org; > david.marchand@redhat.com; Gavin Hu <Gavin.Hu@arm.com>; Honnappa > Nagarahalli <Honnappa.Nagarahalli@arm.com>; nd <nd@arm.com> > Subject: Re: [PATCH v3 2/2] ci: add travis ci support for aarch64 > > Ruifeng Wang <ruifeng.wang@arm.com> writes: > > > Add Travis compilation jobs for aarch64. gcc/clang compilations for > > static/shared libraries are added. > > > > Some limitations for current aarch64 Travis support: > > 1. Container is used. Huge page is not available due to security reason. > > 2. Missing kernel header package in Xenial distribution. > > > > Solutions to address the limitations: > > 1. Not to add unit test for now. And run tests with no-huge in future. > > 2. Use Bionic distribution for all aarch64 jobs. > > > > Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> > > Reviewed-by: Gavin Hu <gavin.hu@arm.com> > > --- > > Can't we achieve the same thing by setting > > arch: > - amd64 > - arm64 > > in the build matrix? Or will that also force the intel builds to use the container > infrastructure (in which case the no-huge support needs to be fixed)? No, container infrastructure will not be imposed to intel builds. AFAIN, Travis infrastructure for a specific CPU arch is provided as is, and there is no config option to control. The problem with just adding 'arch' in build matrix is that RUN_TESTS on arm64 is not supported by now (Travis limitation). 'env' with RUN_TESTS will fail. > > One thing I wonder, isn't is possible to use qemu-user to do the amd64 unit > tests? Then do we really need some changes to do the native build? Do you mean to use qemu-user to do unit tests for non-x86 arch? Changes will be needed as well to enable qemu-user to do unit test. Since Travis support multi CPU arch, I think native build and test is simpler and more natural. > Does it buy us anything *today* given the cost of the hugepage restriction? > Will that ever be resolved (I didn't see so from the docs on travis)? The hugepage issue has been reported to Travis. I think it will be resolved. But no set dates yet. > > > .ci/linux-setup.sh | 11 +++++++---- > > .travis.yml | 42 +++++++++++++++++++++++++++++++++++++++++- > > 2 files changed, 48 insertions(+), 5 deletions(-) > > > > diff --git a/.ci/linux-setup.sh b/.ci/linux-setup.sh index > > dfb9d4a20..a92978037 100755 > > --- a/.ci/linux-setup.sh > > +++ b/.ci/linux-setup.sh > > @@ -3,7 +3,10 @@ > > # need to install as 'root' since some of the unit tests won't run > > without it sudo python3 -m pip install --upgrade meson > > > > -# setup hugepages > > -cat /proc/meminfo > > -sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' > > -cat /proc/meminfo > > +# hugepage settings are skipped on aarch64 due to environment > > +limitation if [ "$TRAVIS_ARCH" != "aarch64" ]; then > > + # setup hugepages > > + cat /proc/meminfo > > + sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' > > + cat /proc/meminfo > > +fi > > diff --git a/.travis.yml b/.travis.yml index 8f90d06f2..980c7605d > > 100644 > > --- a/.travis.yml > > +++ b/.travis.yml > > @@ -115,6 +115,46 @@ matrix: > > apt: > > packages: > > - *extra_packages > > - > > + - env: DEF_LIB="static" > > + arch: arm64 > > + compiler: gcc > > + dist: bionic > > + addons: > > + apt: > > + packages: > > + - *required_packages > > + - env: DEF_LIB="shared" > > + arch: arm64 > > + compiler: gcc > > + dist: bionic > > + addons: > > + apt: > > + packages: > > + - *required_packages > > + - env: DEF_LIB="static" > > + arch: arm64 > > + dist: bionic > > + compiler: clang > > + addons: > > + apt: > > + packages: > > + - *required_packages > > + - env: DEF_LIB="shared" > > + arch: arm64 > > + dist: bionic > > + compiler: clang > > + addons: > > + apt: > > + packages: > > + - *required_packages > > + - env: DEF_LIB="shared" OPTS="-Denable_kmods=false" BUILD_DOCS=1 > > + arch: arm64 > > + compiler: gcc > > + dist: bionic > > + addons: > > + apt: > > + packages: > > + - *required_packages > > + - *doc_packages > > > > script: ./.ci/${TRAVIS_OS_NAME}-build.sh ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [dpdk-dev] [PATCH v3 2/2] ci: add travis ci support for aarch64 2020-01-07 6:24 ` Ruifeng Wang @ 2020-01-07 14:40 ` Honnappa Nagarahalli 2020-01-08 16:06 ` Aaron Conole 2020-01-08 16:05 ` Aaron Conole 1 sibling, 1 reply; 36+ messages in thread From: Honnappa Nagarahalli @ 2020-01-07 14:40 UTC (permalink / raw) To: Ruifeng Wang, Aaron Conole Cc: maicolgabriel, thomas, ferruh.yigit, arybchenko, dev, david.marchand, Gavin Hu, nd, Honnappa Nagarahalli, nd <snip> > > > > > Add Travis compilation jobs for aarch64. gcc/clang compilations for > > > static/shared libraries are added. > > > > > > Some limitations for current aarch64 Travis support: > > > 1. Container is used. Huge page is not available due to security reason. > > > 2. Missing kernel header package in Xenial distribution. > > > > > > Solutions to address the limitations: > > > 1. Not to add unit test for now. And run tests with no-huge in future. > > > 2. Use Bionic distribution for all aarch64 jobs. > > > > > > Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> > > > Reviewed-by: Gavin Hu <gavin.hu@arm.com> > > > --- > > > > Can't we achieve the same thing by setting > > > > arch: > > - amd64 > > - arm64 > > > > in the build matrix? Or will that also force the intel builds to use > > the container infrastructure (in which case the no-huge support needs to be > fixed)? > > No, container infrastructure will not be imposed to intel builds. > AFAIN, Travis infrastructure for a specific CPU arch is provided as is, and > there is no config option to control. > The problem with just adding 'arch' in build matrix is that RUN_TESTS on > arm64 is not supported by now (Travis limitation). 'env' with RUN_TESTS will > fail. > > > > One thing I wonder, isn't is possible to use qemu-user to do the amd64 > > unit tests? Then do we really need some changes to do the native build? > > Do you mean to use qemu-user to do unit tests for non-x86 arch? > Changes will be needed as well to enable qemu-user to do unit test. > Since Travis support multi CPU arch, I think native build and test is simpler > and more natural. Yes, prefer to run the tests natively as the infrastructure is available and will improve further from here. > > > Does it buy us anything *today* given the cost of the hugepage restriction? > > Will that ever be resolved (I didn't see so from the docs on travis)? > > The hugepage issue has been reported to Travis. I think it will be resolved. > But no set dates yet. > > > > > .ci/linux-setup.sh | 11 +++++++---- > > > .travis.yml | 42 +++++++++++++++++++++++++++++++++++++++++- > > > 2 files changed, 48 insertions(+), 5 deletions(-) > > > > > > diff --git a/.ci/linux-setup.sh b/.ci/linux-setup.sh index > > > dfb9d4a20..a92978037 100755 > > > --- a/.ci/linux-setup.sh > > > +++ b/.ci/linux-setup.sh > > > @@ -3,7 +3,10 @@ > > > # need to install as 'root' since some of the unit tests won't run > > > without it sudo python3 -m pip install --upgrade meson > > > > > > -# setup hugepages > > > -cat /proc/meminfo > > > -sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' > > > -cat /proc/meminfo > > > +# hugepage settings are skipped on aarch64 due to environment > > > +limitation if [ "$TRAVIS_ARCH" != "aarch64" ]; then > > > + # setup hugepages > > > + cat /proc/meminfo > > > + sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' > > > + cat /proc/meminfo > > > +fi > > > diff --git a/.travis.yml b/.travis.yml index 8f90d06f2..980c7605d > > > 100644 > > > --- a/.travis.yml > > > +++ b/.travis.yml > > > @@ -115,6 +115,46 @@ matrix: > > > apt: > > > packages: > > > - *extra_packages > > > - > > > + - env: DEF_LIB="static" > > > + arch: arm64 > > > + compiler: gcc > > > + dist: bionic > > > + addons: > > > + apt: > > > + packages: > > > + - *required_packages > > > + - env: DEF_LIB="shared" > > > + arch: arm64 > > > + compiler: gcc > > > + dist: bionic > > > + addons: > > > + apt: > > > + packages: > > > + - *required_packages > > > + - env: DEF_LIB="static" > > > + arch: arm64 > > > + dist: bionic > > > + compiler: clang > > > + addons: > > > + apt: > > > + packages: > > > + - *required_packages > > > + - env: DEF_LIB="shared" > > > + arch: arm64 > > > + dist: bionic > > > + compiler: clang > > > + addons: > > > + apt: > > > + packages: > > > + - *required_packages > > > + - env: DEF_LIB="shared" OPTS="-Denable_kmods=false" BUILD_DOCS=1 > > > + arch: arm64 > > > + compiler: gcc > > > + dist: bionic > > > + addons: > > > + apt: > > > + packages: > > > + - *required_packages > > > + - *doc_packages > > > > > > script: ./.ci/${TRAVIS_OS_NAME}-build.sh > ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [dpdk-dev] [PATCH v3 2/2] ci: add travis ci support for aarch64 2020-01-07 14:40 ` Honnappa Nagarahalli @ 2020-01-08 16:06 ` Aaron Conole 0 siblings, 0 replies; 36+ messages in thread From: Aaron Conole @ 2020-01-08 16:06 UTC (permalink / raw) To: Honnappa Nagarahalli Cc: Ruifeng Wang, maicolgabriel, thomas, ferruh.yigit, arybchenko, dev, david.marchand, Gavin Hu, nd Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com> writes: > <snip> > >> > >> > > Add Travis compilation jobs for aarch64. gcc/clang compilations for >> > > static/shared libraries are added. >> > > >> > > Some limitations for current aarch64 Travis support: >> > > 1. Container is used. Huge page is not available due to security reason. >> > > 2. Missing kernel header package in Xenial distribution. >> > > >> > > Solutions to address the limitations: >> > > 1. Not to add unit test for now. And run tests with no-huge in future. >> > > 2. Use Bionic distribution for all aarch64 jobs. >> > > >> > > Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> >> > > Reviewed-by: Gavin Hu <gavin.hu@arm.com> >> > > --- >> > >> > Can't we achieve the same thing by setting >> > >> > arch: >> > - amd64 >> > - arm64 >> > >> > in the build matrix? Or will that also force the intel builds to use >> > the container infrastructure (in which case the no-huge support needs to be >> fixed)? >> >> No, container infrastructure will not be imposed to intel builds. >> AFAIN, Travis infrastructure for a specific CPU arch is provided as is, and >> there is no config option to control. >> The problem with just adding 'arch' in build matrix is that RUN_TESTS on >> arm64 is not supported by now (Travis limitation). 'env' with RUN_TESTS will >> fail. >> > >> > One thing I wonder, isn't is possible to use qemu-user to do the amd64 >> > unit tests? Then do we really need some changes to do the native build? >> >> Do you mean to use qemu-user to do unit tests for non-x86 arch? >> Changes will be needed as well to enable qemu-user to do unit test. >> Since Travis support multi CPU arch, I think native build and test is simpler >> and more natural. > Yes, prefer to run the tests natively as the infrastructure is > available and will improve further from here. Agreed. But we can't run the aarch64 tests for now, no matter which way we slice it. >> >> > Does it buy us anything *today* given the cost of the hugepage restriction? >> > Will that ever be resolved (I didn't see so from the docs on travis)? >> >> The hugepage issue has been reported to Travis. I think it will be resolved. >> But no set dates yet. >> > >> > > .ci/linux-setup.sh | 11 +++++++---- >> > > .travis.yml | 42 +++++++++++++++++++++++++++++++++++++++++- >> > > 2 files changed, 48 insertions(+), 5 deletions(-) >> > > >> > > diff --git a/.ci/linux-setup.sh b/.ci/linux-setup.sh index >> > > dfb9d4a20..a92978037 100755 >> > > --- a/.ci/linux-setup.sh >> > > +++ b/.ci/linux-setup.sh >> > > @@ -3,7 +3,10 @@ >> > > # need to install as 'root' since some of the unit tests won't run >> > > without it sudo python3 -m pip install --upgrade meson >> > > >> > > -# setup hugepages >> > > -cat /proc/meminfo >> > > -sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' >> > > -cat /proc/meminfo >> > > +# hugepage settings are skipped on aarch64 due to environment >> > > +limitation if [ "$TRAVIS_ARCH" != "aarch64" ]; then >> > > + # setup hugepages >> > > + cat /proc/meminfo >> > > + sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' >> > > + cat /proc/meminfo >> > > +fi >> > > diff --git a/.travis.yml b/.travis.yml index 8f90d06f2..980c7605d >> > > 100644 >> > > --- a/.travis.yml >> > > +++ b/.travis.yml >> > > @@ -115,6 +115,46 @@ matrix: >> > > apt: >> > > packages: >> > > - *extra_packages >> > > - >> > > + - env: DEF_LIB="static" >> > > + arch: arm64 >> > > + compiler: gcc >> > > + dist: bionic >> > > + addons: >> > > + apt: >> > > + packages: >> > > + - *required_packages >> > > + - env: DEF_LIB="shared" >> > > + arch: arm64 >> > > + compiler: gcc >> > > + dist: bionic >> > > + addons: >> > > + apt: >> > > + packages: >> > > + - *required_packages >> > > + - env: DEF_LIB="static" >> > > + arch: arm64 >> > > + dist: bionic >> > > + compiler: clang >> > > + addons: >> > > + apt: >> > > + packages: >> > > + - *required_packages >> > > + - env: DEF_LIB="shared" >> > > + arch: arm64 >> > > + dist: bionic >> > > + compiler: clang >> > > + addons: >> > > + apt: >> > > + packages: >> > > + - *required_packages >> > > + - env: DEF_LIB="shared" OPTS="-Denable_kmods=false" BUILD_DOCS=1 >> > > + arch: arm64 >> > > + compiler: gcc >> > > + dist: bionic >> > > + addons: >> > > + apt: >> > > + packages: >> > > + - *required_packages >> > > + - *doc_packages >> > > >> > > script: ./.ci/${TRAVIS_OS_NAME}-build.sh >> ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [dpdk-dev] [PATCH v3 2/2] ci: add travis ci support for aarch64 2020-01-07 6:24 ` Ruifeng Wang 2020-01-07 14:40 ` Honnappa Nagarahalli @ 2020-01-08 16:05 ` Aaron Conole 2020-01-08 17:37 ` Bruce Richardson 2020-01-09 7:00 ` Ruifeng Wang 1 sibling, 2 replies; 36+ messages in thread From: Aaron Conole @ 2020-01-08 16:05 UTC (permalink / raw) To: Ruifeng Wang Cc: maicolgabriel, thomas, ferruh.yigit, arybchenko, dev, david.marchand, Gavin Hu, Honnappa Nagarahalli, nd Ruifeng Wang <Ruifeng.Wang@arm.com> writes: >> -----Original Message----- >> From: Aaron Conole <aconole@redhat.com> >> Sent: Monday, January 6, 2020 21:34 >> To: Ruifeng Wang <Ruifeng.Wang@arm.com> >> Cc: maicolgabriel@hotmail.com; thomas@monjalon.net; >> ferruh.yigit@intel.com; arybchenko@solarflare.com; dev@dpdk.org; >> david.marchand@redhat.com; Gavin Hu <Gavin.Hu@arm.com>; Honnappa >> Nagarahalli <Honnappa.Nagarahalli@arm.com>; nd <nd@arm.com> >> Subject: Re: [PATCH v3 2/2] ci: add travis ci support for aarch64 >> >> Ruifeng Wang <ruifeng.wang@arm.com> writes: >> >> > Add Travis compilation jobs for aarch64. gcc/clang compilations for >> > static/shared libraries are added. >> > >> > Some limitations for current aarch64 Travis support: >> > 1. Container is used. Huge page is not available due to security reason. >> > 2. Missing kernel header package in Xenial distribution. >> > >> > Solutions to address the limitations: >> > 1. Not to add unit test for now. And run tests with no-huge in future. >> > 2. Use Bionic distribution for all aarch64 jobs. >> > >> > Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> >> > Reviewed-by: Gavin Hu <gavin.hu@arm.com> >> > --- >> >> Can't we achieve the same thing by setting >> >> arch: >> - amd64 >> - arm64 >> >> in the build matrix? Or will that also force the intel builds to use the container >> infrastructure (in which case the no-huge support needs to be fixed)? > > No, container infrastructure will not be imposed to intel builds. > AFAIN, Travis infrastructure for a specific CPU arch is provided as > is, and there is no config option to control. > The problem with just adding 'arch' in build matrix is that RUN_TESTS on arm64 is not supported > by now (Travis limitation). 'env' with RUN_TESTS will fail. Okay I see. >> >> One thing I wonder, isn't is possible to use qemu-user to do the amd64 unit >> tests? Then do we really need some changes to do the native build? > > Do you mean to use qemu-user to do unit tests for non-x86 arch? Yes. This has the advantage of giving users a way to also do the multi-arch checks on their own systems (so a developer with just an x86 could at least do some testing on arm or ppc). > Changes will be needed as well to enable qemu-user to do unit test. > Since Travis support multi CPU arch, I think native build and test is simpler and more natural. I agree, some script changes might be needed, but maybe not as many as you fear (can't we use binfmt_misc infrastructure to do this with qemu-user and then the actual 'execute' would work). >> Does it buy us anything *today* given the cost of the hugepage restriction? >> Will that ever be resolved (I didn't see so from the docs on travis)? > > The hugepage issue has been reported to Travis. I think it will be > resolved. But no set dates yet. Is there a plan for them to address? I guess probably not. So we either need the ability for tests to run in the no-huge environment (and detect that no hugepages are available to run the tests that way), or we need the travis environment supporting hugepages. Is there something I missed? >> >> > .ci/linux-setup.sh | 11 +++++++---- >> > .travis.yml | 42 +++++++++++++++++++++++++++++++++++++++++- >> > 2 files changed, 48 insertions(+), 5 deletions(-) >> > >> > diff --git a/.ci/linux-setup.sh b/.ci/linux-setup.sh index >> > dfb9d4a20..a92978037 100755 >> > --- a/.ci/linux-setup.sh >> > +++ b/.ci/linux-setup.sh >> > @@ -3,7 +3,10 @@ >> > # need to install as 'root' since some of the unit tests won't run >> > without it sudo python3 -m pip install --upgrade meson >> > >> > -# setup hugepages >> > -cat /proc/meminfo >> > -sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' >> > -cat /proc/meminfo >> > +# hugepage settings are skipped on aarch64 due to environment >> > +limitation if [ "$TRAVIS_ARCH" != "aarch64" ]; then >> > + # setup hugepages >> > + cat /proc/meminfo >> > + sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' >> > + cat /proc/meminfo >> > +fi >> > diff --git a/.travis.yml b/.travis.yml index 8f90d06f2..980c7605d >> > 100644 >> > --- a/.travis.yml >> > +++ b/.travis.yml >> > @@ -115,6 +115,46 @@ matrix: >> > apt: >> > packages: >> > - *extra_packages >> > - >> > + - env: DEF_LIB="static" >> > + arch: arm64 >> > + compiler: gcc >> > + dist: bionic >> > + addons: >> > + apt: >> > + packages: >> > + - *required_packages >> > + - env: DEF_LIB="shared" >> > + arch: arm64 >> > + compiler: gcc >> > + dist: bionic >> > + addons: >> > + apt: >> > + packages: >> > + - *required_packages >> > + - env: DEF_LIB="static" >> > + arch: arm64 >> > + dist: bionic >> > + compiler: clang >> > + addons: >> > + apt: >> > + packages: >> > + - *required_packages >> > + - env: DEF_LIB="shared" >> > + arch: arm64 >> > + dist: bionic >> > + compiler: clang >> > + addons: >> > + apt: >> > + packages: >> > + - *required_packages >> > + - env: DEF_LIB="shared" OPTS="-Denable_kmods=false" BUILD_DOCS=1 >> > + arch: arm64 >> > + compiler: gcc >> > + dist: bionic >> > + addons: >> > + apt: >> > + packages: >> > + - *required_packages >> > + - *doc_packages >> > >> > script: ./.ci/${TRAVIS_OS_NAME}-build.sh ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [dpdk-dev] [PATCH v3 2/2] ci: add travis ci support for aarch64 2020-01-08 16:05 ` Aaron Conole @ 2020-01-08 17:37 ` Bruce Richardson 2020-01-09 7:00 ` Ruifeng Wang 1 sibling, 0 replies; 36+ messages in thread From: Bruce Richardson @ 2020-01-08 17:37 UTC (permalink / raw) To: Aaron Conole Cc: Ruifeng Wang, maicolgabriel, thomas, ferruh.yigit, arybchenko, dev, david.marchand, Gavin Hu, Honnappa Nagarahalli, nd On Wed, Jan 08, 2020 at 11:05:21AM -0500, Aaron Conole wrote: > Ruifeng Wang <Ruifeng.Wang@arm.com> writes: > > >> -----Original Message----- > >> From: Aaron Conole <aconole@redhat.com> > >> Sent: Monday, January 6, 2020 21:34 > >> To: Ruifeng Wang <Ruifeng.Wang@arm.com> > >> Cc: maicolgabriel@hotmail.com; thomas@monjalon.net; > >> ferruh.yigit@intel.com; arybchenko@solarflare.com; dev@dpdk.org; > >> david.marchand@redhat.com; Gavin Hu <Gavin.Hu@arm.com>; Honnappa > >> Nagarahalli <Honnappa.Nagarahalli@arm.com>; nd <nd@arm.com> > >> Subject: Re: [PATCH v3 2/2] ci: add travis ci support for aarch64 > >> > >> Ruifeng Wang <ruifeng.wang@arm.com> writes: > >> > >> > Add Travis compilation jobs for aarch64. gcc/clang compilations for > >> > static/shared libraries are added. > >> > > >> > Some limitations for current aarch64 Travis support: > >> > 1. Container is used. Huge page is not available due to security reason. > >> > 2. Missing kernel header package in Xenial distribution. > >> > > >> > Solutions to address the limitations: > >> > 1. Not to add unit test for now. And run tests with no-huge in future. > >> > 2. Use Bionic distribution for all aarch64 jobs. > >> > > >> > Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> > >> > Reviewed-by: Gavin Hu <gavin.hu@arm.com> > >> > --- > >> > >> Can't we achieve the same thing by setting > >> > >> arch: > >> - amd64 > >> - arm64 > >> > >> in the build matrix? Or will that also force the intel builds to use the container > >> infrastructure (in which case the no-huge support needs to be fixed)? > > > > No, container infrastructure will not be imposed to intel builds. > > AFAIN, Travis infrastructure for a specific CPU arch is provided as > > is, and there is no config option to control. > > The problem with just adding 'arch' in build matrix is that RUN_TESTS on arm64 is not supported > > by now (Travis limitation). 'env' with RUN_TESTS will fail. > > Okay I see. > > >> > >> One thing I wonder, isn't is possible to use qemu-user to do the amd64 unit > >> tests? Then do we really need some changes to do the native build? > > > > Do you mean to use qemu-user to do unit tests for non-x86 arch? > > Yes. This has the advantage of giving users a way to also do the > multi-arch checks on their own systems (so a developer with just an x86 > could at least do some testing on arm or ppc). > > > Changes will be needed as well to enable qemu-user to do unit test. > > Since Travis support multi CPU arch, I think native build and test is simpler and more natural. > > I agree, some script changes might be needed, but maybe not as many as > you fear (can't we use binfmt_misc infrastructure to do this with > qemu-user and then the actual 'execute' would work). > > >> Does it buy us anything *today* given the cost of the hugepage restriction? > >> Will that ever be resolved (I didn't see so from the docs on travis)? > > > > The hugepage issue has been reported to Travis. I think it will be > > resolved. But no set dates yet. > > Is there a plan for them to address? I guess probably not. So we > either need the ability for tests to run in the no-huge environment (and > detect that no hugepages are available to run the tests that way), or we > need the travis environment supporting hugepages. Is there something I > missed? > I think a reasonable number of tests should already run in a no-huge environment. Ideally we could have autotest detect the fact it's running with no-huge and skip all unsupported tests, but I think that would be quite a bit of work to undertake, given the number of tests there are. /Bruce ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [dpdk-dev] [PATCH v3 2/2] ci: add travis ci support for aarch64 2020-01-08 16:05 ` Aaron Conole 2020-01-08 17:37 ` Bruce Richardson @ 2020-01-09 7:00 ` Ruifeng Wang 2020-01-09 15:50 ` Honnappa Nagarahalli 1 sibling, 1 reply; 36+ messages in thread From: Ruifeng Wang @ 2020-01-09 7:00 UTC (permalink / raw) To: Aaron Conole Cc: maicolgabriel, thomas, ferruh.yigit, arybchenko, dev, david.marchand, Gavin Hu, Honnappa Nagarahalli, nd, nd > -----Original Message----- > From: Aaron Conole <aconole@redhat.com> > Sent: Thursday, January 9, 2020 00:05 > To: Ruifeng Wang <Ruifeng.Wang@arm.com> > Cc: maicolgabriel@hotmail.com; thomas@monjalon.net; > ferruh.yigit@intel.com; arybchenko@solarflare.com; dev@dpdk.org; > david.marchand@redhat.com; Gavin Hu <Gavin.Hu@arm.com>; Honnappa > Nagarahalli <Honnappa.Nagarahalli@arm.com>; nd <nd@arm.com> > Subject: Re: [PATCH v3 2/2] ci: add travis ci support for aarch64 > > Ruifeng Wang <Ruifeng.Wang@arm.com> writes: > > >> -----Original Message----- > >> From: Aaron Conole <aconole@redhat.com> > >> Sent: Monday, January 6, 2020 21:34 > >> To: Ruifeng Wang <Ruifeng.Wang@arm.com> > >> Cc: maicolgabriel@hotmail.com; thomas@monjalon.net; > >> ferruh.yigit@intel.com; arybchenko@solarflare.com; dev@dpdk.org; > >> david.marchand@redhat.com; Gavin Hu <Gavin.Hu@arm.com>; > Honnappa > >> Nagarahalli <Honnappa.Nagarahalli@arm.com>; nd <nd@arm.com> > >> Subject: Re: [PATCH v3 2/2] ci: add travis ci support for aarch64 > >> > >> Ruifeng Wang <ruifeng.wang@arm.com> writes: > >> > >> > Add Travis compilation jobs for aarch64. gcc/clang compilations for > >> > static/shared libraries are added. > >> > > >> > Some limitations for current aarch64 Travis support: > >> > 1. Container is used. Huge page is not available due to security reason. > >> > 2. Missing kernel header package in Xenial distribution. > >> > > >> > Solutions to address the limitations: > >> > 1. Not to add unit test for now. And run tests with no-huge in future. > >> > 2. Use Bionic distribution for all aarch64 jobs. > >> > > >> > Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> > >> > Reviewed-by: Gavin Hu <gavin.hu@arm.com> > >> > --- > >> > >> Can't we achieve the same thing by setting > >> > >> arch: > >> - amd64 > >> - arm64 > >> > >> in the build matrix? Or will that also force the intel builds to use > >> the container infrastructure (in which case the no-huge support needs to > be fixed)? > > > > No, container infrastructure will not be imposed to intel builds. > > AFAIN, Travis infrastructure for a specific CPU arch is provided as > > is, and there is no config option to control. > > The problem with just adding 'arch' in build matrix is that RUN_TESTS > > on arm64 is not supported by now (Travis limitation). 'env' with RUN_TESTS > will fail. > > Okay I see. > > >> > >> One thing I wonder, isn't is possible to use qemu-user to do the > >> amd64 unit tests? Then do we really need some changes to do the native > build? > > > > Do you mean to use qemu-user to do unit tests for non-x86 arch? > > Yes. This has the advantage of giving users a way to also do the multi-arch > checks on their own systems (so a developer with just an x86 could at least > do some testing on arm or ppc). > Yes, users can do multi-arch checks *locally* by using qemu. This patch aims to enable *public* CI for aarch64. It has no sense to rely on specific arch while infrastructure supports multi arch. > > Changes will be needed as well to enable qemu-user to do unit test. > > Since Travis support multi CPU arch, I think native build and test is simpler > and more natural. > > I agree, some script changes might be needed, but maybe not as many as > you fear (can't we use binfmt_misc infrastructure to do this with qemu-user > and then the actual 'execute' would work). > It is more like a tool for local validation, and should be another story. > >> Does it buy us anything *today* given the cost of the hugepage > restriction? > >> Will that ever be resolved (I didn't see so from the docs on travis)? > > > > The hugepage issue has been reported to Travis. I think it will be > > resolved. But no set dates yet. > > Is there a plan for them to address? I guess probably not. So we either need > the ability for tests to run in the no-huge environment (and detect that no > hugepages are available to run the tests that way), or we need the travis > environment supporting hugepages. Is there something I missed? > Yes, over half of quick tests can run in no-huge environment. > >> > >> > .ci/linux-setup.sh | 11 +++++++---- > >> > .travis.yml | 42 > +++++++++++++++++++++++++++++++++++++++++- > >> > 2 files changed, 48 insertions(+), 5 deletions(-) > >> > > >> > diff --git a/.ci/linux-setup.sh b/.ci/linux-setup.sh index > >> > dfb9d4a20..a92978037 100755 > >> > --- a/.ci/linux-setup.sh > >> > +++ b/.ci/linux-setup.sh > >> > @@ -3,7 +3,10 @@ > >> > # need to install as 'root' since some of the unit tests won't run > >> > without it sudo python3 -m pip install --upgrade meson > >> > > >> > -# setup hugepages > >> > -cat /proc/meminfo > >> > -sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' > >> > -cat /proc/meminfo > >> > +# hugepage settings are skipped on aarch64 due to environment > >> > +limitation if [ "$TRAVIS_ARCH" != "aarch64" ]; then > >> > + # setup hugepages > >> > + cat /proc/meminfo > >> > + sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' > >> > + cat /proc/meminfo > >> > +fi > >> > diff --git a/.travis.yml b/.travis.yml index 8f90d06f2..980c7605d > >> > 100644 > >> > --- a/.travis.yml > >> > +++ b/.travis.yml > >> > @@ -115,6 +115,46 @@ matrix: > >> > apt: > >> > packages: > >> > - *extra_packages > >> > - > >> > + - env: DEF_LIB="static" > >> > + arch: arm64 > >> > + compiler: gcc > >> > + dist: bionic > >> > + addons: > >> > + apt: > >> > + packages: > >> > + - *required_packages > >> > + - env: DEF_LIB="shared" > >> > + arch: arm64 > >> > + compiler: gcc > >> > + dist: bionic > >> > + addons: > >> > + apt: > >> > + packages: > >> > + - *required_packages > >> > + - env: DEF_LIB="static" > >> > + arch: arm64 > >> > + dist: bionic > >> > + compiler: clang > >> > + addons: > >> > + apt: > >> > + packages: > >> > + - *required_packages > >> > + - env: DEF_LIB="shared" > >> > + arch: arm64 > >> > + dist: bionic > >> > + compiler: clang > >> > + addons: > >> > + apt: > >> > + packages: > >> > + - *required_packages > >> > + - env: DEF_LIB="shared" OPTS="-Denable_kmods=false" > BUILD_DOCS=1 > >> > + arch: arm64 > >> > + compiler: gcc > >> > + dist: bionic > >> > + addons: > >> > + apt: > >> > + packages: > >> > + - *required_packages > >> > + - *doc_packages > >> > > >> > script: ./.ci/${TRAVIS_OS_NAME}-build.sh ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [dpdk-dev] [PATCH v3 2/2] ci: add travis ci support for aarch64 2020-01-09 7:00 ` Ruifeng Wang @ 2020-01-09 15:50 ` Honnappa Nagarahalli 2020-01-09 17:45 ` Aaron Conole 0 siblings, 1 reply; 36+ messages in thread From: Honnappa Nagarahalli @ 2020-01-09 15:50 UTC (permalink / raw) To: Ruifeng Wang, Aaron Conole Cc: maicolgabriel, thomas, ferruh.yigit, arybchenko, dev, david.marchand, Gavin Hu, nd, Honnappa Nagarahalli, nd <snip> > > >> > > >> > Add Travis compilation jobs for aarch64. gcc/clang compilations > > >> > for static/shared libraries are added. > > >> > > > >> > Some limitations for current aarch64 Travis support: > > >> > 1. Container is used. Huge page is not available due to security reason. > > >> > 2. Missing kernel header package in Xenial distribution. > > >> > > > >> > Solutions to address the limitations: > > >> > 1. Not to add unit test for now. And run tests with no-huge in future. > > >> > 2. Use Bionic distribution for all aarch64 jobs. > > >> > > > >> > Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> > > >> > Reviewed-by: Gavin Hu <gavin.hu@arm.com> > > >> > --- > > >> > > >> Can't we achieve the same thing by setting > > >> > > >> arch: > > >> - amd64 > > >> - arm64 > > >> > > >> in the build matrix? Or will that also force the intel builds to > > >> use the container infrastructure (in which case the no-huge support > > >> needs to > > be fixed)? > > > > > > No, container infrastructure will not be imposed to intel builds. > > > AFAIN, Travis infrastructure for a specific CPU arch is provided as > > > is, and there is no config option to control. > > > The problem with just adding 'arch' in build matrix is that > > > RUN_TESTS on arm64 is not supported by now (Travis limitation). > > > 'env' with RUN_TESTS > > will fail. > > > > Okay I see. > > > > >> > > >> One thing I wonder, isn't is possible to use qemu-user to do the > > >> amd64 unit tests? Then do we really need some changes to do the > > >> native > > build? > > > > > > Do you mean to use qemu-user to do unit tests for non-x86 arch? > > > > Yes. This has the advantage of giving users a way to also do the > > multi-arch checks on their own systems (so a developer with just an > > x86 could at least do some testing on arm or ppc). > > > Yes, users can do multi-arch checks *locally* by using qemu. > This patch aims to enable *public* CI for aarch64. It has no sense to rely on > specific arch while infrastructure supports multi arch. > > > > Changes will be needed as well to enable qemu-user to do unit test. > > > Since Travis support multi CPU arch, I think native build and test > > > is simpler > > and more natural. > > > > I agree, some script changes might be needed, but maybe not as many as > > you fear (can't we use binfmt_misc infrastructure to do this with > > qemu-user and then the actual 'execute' would work). > > > It is more like a tool for local validation, and should be another story. > > > >> Does it buy us anything *today* given the cost of the hugepage > > restriction? > > >> Will that ever be resolved (I didn't see so from the docs on travis)? > > > > > > The hugepage issue has been reported to Travis. I think it will be > > > resolved. But no set dates yet. > > > > Is there a plan for them to address? I guess probably not. So we > > either need the ability for tests to run in the no-huge environment > > (and detect that no hugepages are available to run the tests that > > way), or we need the travis environment supporting hugepages. Is there > something I missed? > > > Yes, over half of quick tests can run in no-huge environment. Plan is to enable the testing for whatever works today and work on fixing the remaining test cases. Is this ok? <snip> ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [dpdk-dev] [PATCH v3 2/2] ci: add travis ci support for aarch64 2020-01-09 15:50 ` Honnappa Nagarahalli @ 2020-01-09 17:45 ` Aaron Conole 0 siblings, 0 replies; 36+ messages in thread From: Aaron Conole @ 2020-01-09 17:45 UTC (permalink / raw) To: Honnappa Nagarahalli Cc: Ruifeng Wang, maicolgabriel, thomas, ferruh.yigit, arybchenko, dev, david.marchand, Gavin Hu, nd Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com> writes: > <snip> > >> > >> >> > >> > Add Travis compilation jobs for aarch64. gcc/clang compilations >> > >> > for static/shared libraries are added. >> > >> > >> > >> > Some limitations for current aarch64 Travis support: >> > >> > 1. Container is used. Huge page is not available due to security reason. >> > >> > 2. Missing kernel header package in Xenial distribution. >> > >> > >> > >> > Solutions to address the limitations: >> > >> > 1. Not to add unit test for now. And run tests with no-huge in future. >> > >> > 2. Use Bionic distribution for all aarch64 jobs. >> > >> > >> > >> > Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> >> > >> > Reviewed-by: Gavin Hu <gavin.hu@arm.com> >> > >> > --- >> > >> >> > >> Can't we achieve the same thing by setting >> > >> >> > >> arch: >> > >> - amd64 >> > >> - arm64 >> > >> >> > >> in the build matrix? Or will that also force the intel builds to >> > >> use the container infrastructure (in which case the no-huge support >> > >> needs to >> > be fixed)? >> > > >> > > No, container infrastructure will not be imposed to intel builds. >> > > AFAIN, Travis infrastructure for a specific CPU arch is provided as >> > > is, and there is no config option to control. >> > > The problem with just adding 'arch' in build matrix is that >> > > RUN_TESTS on arm64 is not supported by now (Travis limitation). >> > > 'env' with RUN_TESTS >> > will fail. >> > >> > Okay I see. >> > >> > >> >> > >> One thing I wonder, isn't is possible to use qemu-user to do the >> > >> amd64 unit tests? Then do we really need some changes to do the >> > >> native >> > build? >> > > >> > > Do you mean to use qemu-user to do unit tests for non-x86 arch? >> > >> > Yes. This has the advantage of giving users a way to also do the >> > multi-arch checks on their own systems (so a developer with just an >> > x86 could at least do some testing on arm or ppc). >> > >> Yes, users can do multi-arch checks *locally* by using qemu. >> This patch aims to enable *public* CI for aarch64. It has no sense to rely on >> specific arch while infrastructure supports multi arch. >> >> > > Changes will be needed as well to enable qemu-user to do unit test. >> > > Since Travis support multi CPU arch, I think native build and test >> > > is simpler >> > and more natural. >> > >> > I agree, some script changes might be needed, but maybe not as many as >> > you fear (can't we use binfmt_misc infrastructure to do this with >> > qemu-user and then the actual 'execute' would work). >> > >> It is more like a tool for local validation, and should be another story. >> >> > >> Does it buy us anything *today* given the cost of the hugepage >> > restriction? >> > >> Will that ever be resolved (I didn't see so from the docs on travis)? >> > > >> > > The hugepage issue has been reported to Travis. I think it will be >> > > resolved. But no set dates yet. >> > >> > Is there a plan for them to address? I guess probably not. So we >> > either need the ability for tests to run in the no-huge environment >> > (and detect that no hugepages are available to run the tests that >> > way), or we need the travis environment supporting hugepages. Is there >> something I missed? >> > >> Yes, over half of quick tests can run in no-huge environment. > Plan is to enable the testing for whatever works today and work on > fixing the remaining test cases. Is this ok? Sounds good then. > <snip> ^ permalink raw reply [flat|nested] 36+ messages in thread
* [dpdk-dev] [PATCH v4 0/2] add travis ci support for aarch64 2019-12-18 5:39 [dpdk-dev] [PATCH 0/2] add travis ci support for aarch64 Ruifeng Wang ` (3 preceding siblings ...) 2019-12-23 7:08 ` [dpdk-dev] [PATCH v3 " Ruifeng Wang @ 2020-01-10 9:53 ` Ruifeng Wang 2020-01-10 9:53 ` [dpdk-dev] [PATCH v4 1/2] devtools: add path to additional shared object files Ruifeng Wang 2020-01-10 9:53 ` [dpdk-dev] [PATCH v4 2/2] ci: add travis ci support for aarch64 Ruifeng Wang 2020-01-13 6:26 ` [dpdk-dev] [PATCH v5 0/2] add travis ci support for native aarch64 Ruifeng Wang 5 siblings, 2 replies; 36+ messages in thread From: Ruifeng Wang @ 2020-01-10 9:53 UTC (permalink / raw) To: aconole, maicolgabriel, thomas, ferruh.yigit, arybchenko Cc: dev, david.marchand, gavin.hu, honnappa.nagarahalli, nd, Ruifeng Wang This patch set is to enable native aarch64 build in Travis CI. It leverages Travis CI multi arch support. As the first step, compilation jobs are added. Unit test is not added for now due to service limitation. We are planning to run unit test with no-huge in future. Plan is to enable the testing for whatever works today and work on fixing the remaining test cases. v4: Test RUN_TESTS flag instead of arch when setting hugepage. v3: Reverse patches order. Not depending on other patches. Restore distribution designation for aarch64 native jobs. v2: Removed dist designation from matrix since base dist is changing. Add explanation for library path issue. Ruifeng Wang (2): devtools: add path to additional shared object files ci: add travis ci support for aarch64 .ci/linux-setup.sh | 11 +++++++---- .travis.yml | 42 +++++++++++++++++++++++++++++++++++++++++- devtools/test-null.sh | 2 +- 3 files changed, 49 insertions(+), 6 deletions(-) -- 2.17.1 ^ permalink raw reply [flat|nested] 36+ messages in thread
* [dpdk-dev] [PATCH v4 1/2] devtools: add path to additional shared object files 2020-01-10 9:53 ` [dpdk-dev] [PATCH v4 0/2] " Ruifeng Wang @ 2020-01-10 9:53 ` Ruifeng Wang 2020-01-10 15:03 ` Aaron Conole 2020-01-10 9:53 ` [dpdk-dev] [PATCH v4 2/2] ci: add travis ci support for aarch64 Ruifeng Wang 1 sibling, 1 reply; 36+ messages in thread From: Ruifeng Wang @ 2020-01-10 9:53 UTC (permalink / raw) To: aconole, maicolgabriel, thomas, ferruh.yigit, arybchenko Cc: dev, david.marchand, gavin.hu, honnappa.nagarahalli, nd, Ruifeng Wang Drivers librte_mempool_ring.so and librte_pmd_null.so are loaded by librte_eal.so when running testpmd. In Ubuntu Xenial, driver path is installed to RPATH on testpmd. This allows librte_eal.so to find drivers by using the RPATH. However, in Ubuntu Bionic, driver path is installed to RUNPATH instead. The RUNPATH on testpmd is not available by librte_eal.so and therefore lead to driver load failure: EAL: Detected 32 lcore(s) EAL: Detected 1 NUMA nodes EAL: librte_mempool_ring.so: cannot open shared object file: No such file or directory EAL: FATAL: Cannot init plugins EAL: Cannot init plugins Add 'drivers' into LD_LIBRARY_PATH so that testpmd can find and make use of these shared libraries. Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Gavin Hu <gavin.hu@arm.com> --- devtools/test-null.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devtools/test-null.sh b/devtools/test-null.sh index f39af2c06..548de8113 100755 --- a/devtools/test-null.sh +++ b/devtools/test-null.sh @@ -20,7 +20,7 @@ if [ ! -f "$testpmd" ] ; then fi if ldd $testpmd | grep -q librte_ ; then - export LD_LIBRARY_PATH=$build/lib:$LD_LIBRARY_PATH + export LD_LIBRARY_PATH=$build/drivers:$build/lib:$LD_LIBRARY_PATH libs='-d librte_mempool_ring.so -d librte_pmd_null.so' else libs= -- 2.17.1 ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [dpdk-dev] [PATCH v4 1/2] devtools: add path to additional shared object files 2020-01-10 9:53 ` [dpdk-dev] [PATCH v4 1/2] devtools: add path to additional shared object files Ruifeng Wang @ 2020-01-10 15:03 ` Aaron Conole 0 siblings, 0 replies; 36+ messages in thread From: Aaron Conole @ 2020-01-10 15:03 UTC (permalink / raw) To: Ruifeng Wang Cc: maicolgabriel, thomas, ferruh.yigit, arybchenko, dev, david.marchand, gavin.hu, honnappa.nagarahalli, nd Ruifeng Wang <ruifeng.wang@arm.com> writes: > Drivers librte_mempool_ring.so and librte_pmd_null.so are loaded by > librte_eal.so when running testpmd. > In Ubuntu Xenial, driver path is installed to RPATH on testpmd. This > allows librte_eal.so to find drivers by using the RPATH. > However, in Ubuntu Bionic, driver path is installed to RUNPATH instead. > The RUNPATH on testpmd is not available by librte_eal.so and therefore > lead to driver load failure: > > EAL: Detected 32 lcore(s) > EAL: Detected 1 NUMA nodes > EAL: librte_mempool_ring.so: cannot open shared object file: > No such file or directory > EAL: FATAL: Cannot init plugins > EAL: Cannot init plugins > > Add 'drivers' into LD_LIBRARY_PATH so that testpmd can find and make > use of these shared libraries. > > Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> > Reviewed-by: Gavin Hu <gavin.hu@arm.com> > --- Acked-by: Aaron Conole <aconole@redhat.com> ^ permalink raw reply [flat|nested] 36+ messages in thread
* [dpdk-dev] [PATCH v4 2/2] ci: add travis ci support for aarch64 2020-01-10 9:53 ` [dpdk-dev] [PATCH v4 0/2] " Ruifeng Wang 2020-01-10 9:53 ` [dpdk-dev] [PATCH v4 1/2] devtools: add path to additional shared object files Ruifeng Wang @ 2020-01-10 9:53 ` Ruifeng Wang 2020-01-10 15:13 ` Aaron Conole 1 sibling, 1 reply; 36+ messages in thread From: Ruifeng Wang @ 2020-01-10 9:53 UTC (permalink / raw) To: aconole, maicolgabriel, thomas, ferruh.yigit, arybchenko Cc: dev, david.marchand, gavin.hu, honnappa.nagarahalli, nd, Ruifeng Wang Add Travis compilation jobs for aarch64. gcc/clang compilations for static/shared libraries are added. Some limitations for current aarch64 Travis support: 1. Container is used. Huge page is not available due to security reason. 2. Missing kernel header package in Xenial distribution. Solutions to address the limitations: 1. Not to add unit test for now. And run tests with no-huge in future. 2. Use Bionic distribution for all aarch64 jobs. Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Gavin Hu <gavin.hu@arm.com> --- .ci/linux-setup.sh | 11 +++++++---- .travis.yml | 42 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 48 insertions(+), 5 deletions(-) diff --git a/.ci/linux-setup.sh b/.ci/linux-setup.sh index dfb9d4a20..f93e67664 100755 --- a/.ci/linux-setup.sh +++ b/.ci/linux-setup.sh @@ -3,7 +3,10 @@ # need to install as 'root' since some of the unit tests won't run without it sudo python3 -m pip install --upgrade meson -# setup hugepages -cat /proc/meminfo -sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' -cat /proc/meminfo +# skip hugepage settings if tests will not run +if [ "$RUN_TESTS" = "1" ]; then + # setup hugepages + cat /proc/meminfo + sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' + cat /proc/meminfo +fi diff --git a/.travis.yml b/.travis.yml index 8f90d06f2..980c7605d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -115,6 +115,46 @@ matrix: apt: packages: - *extra_packages - + - env: DEF_LIB="static" + arch: arm64 + compiler: gcc + dist: bionic + addons: + apt: + packages: + - *required_packages + - env: DEF_LIB="shared" + arch: arm64 + compiler: gcc + dist: bionic + addons: + apt: + packages: + - *required_packages + - env: DEF_LIB="static" + arch: arm64 + dist: bionic + compiler: clang + addons: + apt: + packages: + - *required_packages + - env: DEF_LIB="shared" + arch: arm64 + dist: bionic + compiler: clang + addons: + apt: + packages: + - *required_packages + - env: DEF_LIB="shared" OPTS="-Denable_kmods=false" BUILD_DOCS=1 + arch: arm64 + compiler: gcc + dist: bionic + addons: + apt: + packages: + - *required_packages + - *doc_packages script: ./.ci/${TRAVIS_OS_NAME}-build.sh -- 2.17.1 ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [dpdk-dev] [PATCH v4 2/2] ci: add travis ci support for aarch64 2020-01-10 9:53 ` [dpdk-dev] [PATCH v4 2/2] ci: add travis ci support for aarch64 Ruifeng Wang @ 2020-01-10 15:13 ` Aaron Conole 2020-01-13 6:09 ` Ruifeng Wang 0 siblings, 1 reply; 36+ messages in thread From: Aaron Conole @ 2020-01-10 15:13 UTC (permalink / raw) To: Ruifeng Wang Cc: maicolgabriel, thomas, ferruh.yigit, arybchenko, dev, david.marchand, gavin.hu, honnappa.nagarahalli, nd Ruifeng Wang <ruifeng.wang@arm.com> writes: > Add Travis compilation jobs for aarch64. gcc/clang compilations for > static/shared libraries are added. > > Some limitations for current aarch64 Travis support: > 1. Container is used. Huge page is not available due to security reason. > 2. Missing kernel header package in Xenial distribution. > > Solutions to address the limitations: > 1. Not to add unit test for now. And run tests with no-huge in future. > 2. Use Bionic distribution for all aarch64 jobs. > > Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> > Reviewed-by: Gavin Hu <gavin.hu@arm.com> > --- I think the above text should probably include 'native' since there are already aarch64 builds that go (but they are cross compiled). I also am glad that you didn't remove them. Acked-by: Aaron Conole <aconole@redhat.com> ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [dpdk-dev] [PATCH v4 2/2] ci: add travis ci support for aarch64 2020-01-10 15:13 ` Aaron Conole @ 2020-01-13 6:09 ` Ruifeng Wang 0 siblings, 0 replies; 36+ messages in thread From: Ruifeng Wang @ 2020-01-13 6:09 UTC (permalink / raw) To: Aaron Conole Cc: maicolgabriel, thomas, ferruh.yigit, arybchenko, dev, david.marchand, Gavin Hu, Honnappa Nagarahalli, nd, nd > -----Original Message----- > From: Aaron Conole <aconole@redhat.com> > Sent: Friday, January 10, 2020 23:13 > To: Ruifeng Wang <Ruifeng.Wang@arm.com> > Cc: maicolgabriel@hotmail.com; thomas@monjalon.net; > ferruh.yigit@intel.com; arybchenko@solarflare.com; dev@dpdk.org; > david.marchand@redhat.com; Gavin Hu <Gavin.Hu@arm.com>; Honnappa > Nagarahalli <Honnappa.Nagarahalli@arm.com>; nd <nd@arm.com> > Subject: Re: [PATCH v4 2/2] ci: add travis ci support for aarch64 > > Ruifeng Wang <ruifeng.wang@arm.com> writes: > > > Add Travis compilation jobs for aarch64. gcc/clang compilations for > > static/shared libraries are added. > > > > Some limitations for current aarch64 Travis support: > > 1. Container is used. Huge page is not available due to security reason. > > 2. Missing kernel header package in Xenial distribution. > > > > Solutions to address the limitations: > > 1. Not to add unit test for now. And run tests with no-huge in future. > > 2. Use Bionic distribution for all aarch64 jobs. > > > > Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> > > Reviewed-by: Gavin Hu <gavin.hu@arm.com> > > --- > > I think the above text should probably include 'native' since there are already > aarch64 builds that go (but they are cross compiled). I also am glad that you > didn't remove them. > Agree. I will submit new version with commit message update, and take your Ack. Thank you. > Acked-by: Aaron Conole <aconole@redhat.com> ^ permalink raw reply [flat|nested] 36+ messages in thread
* [dpdk-dev] [PATCH v5 0/2] add travis ci support for native aarch64 2019-12-18 5:39 [dpdk-dev] [PATCH 0/2] add travis ci support for aarch64 Ruifeng Wang ` (4 preceding siblings ...) 2020-01-10 9:53 ` [dpdk-dev] [PATCH v4 0/2] " Ruifeng Wang @ 2020-01-13 6:26 ` Ruifeng Wang 2020-01-13 6:26 ` [dpdk-dev] [PATCH v5 1/2] devtools: add path to additional shared object files Ruifeng Wang ` (2 more replies) 5 siblings, 3 replies; 36+ messages in thread From: Ruifeng Wang @ 2020-01-13 6:26 UTC (permalink / raw) To: aconole, maicolgabriel, thomas, ferruh.yigit, arybchenko Cc: dev, david.marchand, gavin.hu, honnappa.nagarahalli, nd, Ruifeng Wang This patch set is to enable native aarch64 build in Travis CI. It leverages Travis CI multi arch support. As the first step, compilation jobs are added. Unit test is not added for now due to service limitation. We are planning to run unit test with no-huge in future. Plan is to enable the testing for whatever works today and work on fixing the remaining test cases. v5: Update commit message for 'native' build. Taking Ack by Aaron from v4 with suggested commit message change. v4: Test RUN_TESTS flag instead of arch when setting hugepage. v3: Reverse patches order. Not depending on other patches. Restore distribution designation for aarch64 native jobs. v2: Removed dist designation from matrix since base dist is changing. Add explanation for library path issue. Ruifeng Wang (2): devtools: add path to additional shared object files ci: add travis ci support for native aarch64 .ci/linux-setup.sh | 11 +++++++---- .travis.yml | 42 +++++++++++++++++++++++++++++++++++++++++- devtools/test-null.sh | 2 +- 3 files changed, 49 insertions(+), 6 deletions(-) -- 2.17.1 ^ permalink raw reply [flat|nested] 36+ messages in thread
* [dpdk-dev] [PATCH v5 1/2] devtools: add path to additional shared object files 2020-01-13 6:26 ` [dpdk-dev] [PATCH v5 0/2] add travis ci support for native aarch64 Ruifeng Wang @ 2020-01-13 6:26 ` Ruifeng Wang 2020-01-13 6:26 ` [dpdk-dev] [PATCH v5 2/2] ci: add travis ci support for native aarch64 Ruifeng Wang 2020-01-14 14:03 ` [dpdk-dev] [PATCH v5 0/2] " David Marchand 2 siblings, 0 replies; 36+ messages in thread From: Ruifeng Wang @ 2020-01-13 6:26 UTC (permalink / raw) To: aconole, maicolgabriel, thomas, ferruh.yigit, arybchenko Cc: dev, david.marchand, gavin.hu, honnappa.nagarahalli, nd, Ruifeng Wang Drivers librte_mempool_ring.so and librte_pmd_null.so are loaded by librte_eal.so when running testpmd. In Ubuntu Xenial, driver path is installed to RPATH on testpmd. This allows librte_eal.so to find drivers by using the RPATH. However, in Ubuntu Bionic, driver path is installed to RUNPATH instead. The RUNPATH on testpmd is not available by librte_eal.so and therefore lead to driver load failure: EAL: Detected 32 lcore(s) EAL: Detected 1 NUMA nodes EAL: librte_mempool_ring.so: cannot open shared object file: No such file or directory EAL: FATAL: Cannot init plugins EAL: Cannot init plugins Add 'drivers' into LD_LIBRARY_PATH so that testpmd can find and make use of these shared libraries. Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Gavin Hu <gavin.hu@arm.com> Acked-by: Aaron Conole <aconole@redhat.com> --- devtools/test-null.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devtools/test-null.sh b/devtools/test-null.sh index f39af2c06..548de8113 100755 --- a/devtools/test-null.sh +++ b/devtools/test-null.sh @@ -20,7 +20,7 @@ if [ ! -f "$testpmd" ] ; then fi if ldd $testpmd | grep -q librte_ ; then - export LD_LIBRARY_PATH=$build/lib:$LD_LIBRARY_PATH + export LD_LIBRARY_PATH=$build/drivers:$build/lib:$LD_LIBRARY_PATH libs='-d librte_mempool_ring.so -d librte_pmd_null.so' else libs= -- 2.17.1 ^ permalink raw reply [flat|nested] 36+ messages in thread
* [dpdk-dev] [PATCH v5 2/2] ci: add travis ci support for native aarch64 2020-01-13 6:26 ` [dpdk-dev] [PATCH v5 0/2] add travis ci support for native aarch64 Ruifeng Wang 2020-01-13 6:26 ` [dpdk-dev] [PATCH v5 1/2] devtools: add path to additional shared object files Ruifeng Wang @ 2020-01-13 6:26 ` Ruifeng Wang 2020-01-14 14:03 ` [dpdk-dev] [PATCH v5 0/2] " David Marchand 2 siblings, 0 replies; 36+ messages in thread From: Ruifeng Wang @ 2020-01-13 6:26 UTC (permalink / raw) To: aconole, maicolgabriel, thomas, ferruh.yigit, arybchenko Cc: dev, david.marchand, gavin.hu, honnappa.nagarahalli, nd, Ruifeng Wang Add Travis compilation jobs for native aarch64. gcc/clang compilations for static/shared libraries are added. Some limitations for current aarch64 Travis support: 1. Container is used. Huge page is not available due to security reason. 2. Missing kernel header package in Xenial distribution. Solutions to address the limitations: 1. Not to add unit test for now. And run tests with no-huge in future. 2. Use Bionic distribution for all aarch64 jobs. Signed-off-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Gavin Hu <gavin.hu@arm.com> Acked-by: Aaron Conole <aconole@redhat.com> --- .ci/linux-setup.sh | 11 +++++++---- .travis.yml | 42 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 48 insertions(+), 5 deletions(-) diff --git a/.ci/linux-setup.sh b/.ci/linux-setup.sh index dfb9d4a20..f93e67664 100755 --- a/.ci/linux-setup.sh +++ b/.ci/linux-setup.sh @@ -3,7 +3,10 @@ # need to install as 'root' since some of the unit tests won't run without it sudo python3 -m pip install --upgrade meson -# setup hugepages -cat /proc/meminfo -sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' -cat /proc/meminfo +# skip hugepage settings if tests will not run +if [ "$RUN_TESTS" = "1" ]; then + # setup hugepages + cat /proc/meminfo + sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages' + cat /proc/meminfo +fi diff --git a/.travis.yml b/.travis.yml index 8f90d06f2..980c7605d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -115,6 +115,46 @@ matrix: apt: packages: - *extra_packages - + - env: DEF_LIB="static" + arch: arm64 + compiler: gcc + dist: bionic + addons: + apt: + packages: + - *required_packages + - env: DEF_LIB="shared" + arch: arm64 + compiler: gcc + dist: bionic + addons: + apt: + packages: + - *required_packages + - env: DEF_LIB="static" + arch: arm64 + dist: bionic + compiler: clang + addons: + apt: + packages: + - *required_packages + - env: DEF_LIB="shared" + arch: arm64 + dist: bionic + compiler: clang + addons: + apt: + packages: + - *required_packages + - env: DEF_LIB="shared" OPTS="-Denable_kmods=false" BUILD_DOCS=1 + arch: arm64 + compiler: gcc + dist: bionic + addons: + apt: + packages: + - *required_packages + - *doc_packages script: ./.ci/${TRAVIS_OS_NAME}-build.sh -- 2.17.1 ^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [dpdk-dev] [PATCH v5 0/2] add travis ci support for native aarch64 2020-01-13 6:26 ` [dpdk-dev] [PATCH v5 0/2] add travis ci support for native aarch64 Ruifeng Wang 2020-01-13 6:26 ` [dpdk-dev] [PATCH v5 1/2] devtools: add path to additional shared object files Ruifeng Wang 2020-01-13 6:26 ` [dpdk-dev] [PATCH v5 2/2] ci: add travis ci support for native aarch64 Ruifeng Wang @ 2020-01-14 14:03 ` David Marchand 2 siblings, 0 replies; 36+ messages in thread From: David Marchand @ 2020-01-14 14:03 UTC (permalink / raw) To: Ruifeng Wang Cc: Aaron Conole, Michael Santana, Thomas Monjalon, Yigit, Ferruh, Andrew Rybchenko, dev, Gavin Hu, Honnappa Nagarahalli, nd On Mon, Jan 13, 2020 at 7:26 AM Ruifeng Wang <ruifeng.wang@arm.com> wrote: > > This patch set is to enable native aarch64 build in Travis CI. > It leverages Travis CI multi arch support. > > As the first step, compilation jobs are added. > Unit test is not added for now due to service limitation. We are > planning to run unit test with no-huge in future. Plan is to > enable the testing for whatever works today and work on fixing > the remaining test cases. Series applied, thanks. -- David Marchand ^ permalink raw reply [flat|nested] 36+ messages in thread
end of thread, other threads:[~2020-01-14 14:03 UTC | newest] Thread overview: 36+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-12-18 5:39 [dpdk-dev] [PATCH 0/2] add travis ci support for aarch64 Ruifeng Wang 2019-12-18 5:39 ` [dpdk-dev] [PATCH 1/2] ci: " Ruifeng Wang 2019-12-18 5:39 ` [dpdk-dev] [PATCH 2/2] devtools: add path to additional shared object files Ruifeng Wang 2019-12-18 8:23 ` David Marchand 2019-12-18 13:43 ` Laatz, Kevin 2019-12-18 15:32 ` David Marchand 2019-12-18 16:00 ` Richardson, Bruce 2019-12-19 3:14 ` Ruifeng Wang 2019-12-20 9:37 ` [dpdk-dev] [PATCH v2 0/2] add travis ci support for aarch64 Ruifeng Wang 2019-12-20 9:37 ` [dpdk-dev] [PATCH v2 1/2] ci: " Ruifeng Wang 2020-01-06 20:17 ` dwilder 2020-01-07 6:42 ` Ruifeng Wang 2019-12-20 9:37 ` [dpdk-dev] [PATCH v2 2/2] devtools: add path to additional shared object files Ruifeng Wang 2019-12-20 13:57 ` [dpdk-dev] [PATCH v2 0/2] add travis ci support for aarch64 David Marchand 2019-12-23 7:08 ` [dpdk-dev] [PATCH v3 " Ruifeng Wang 2019-12-23 7:08 ` [dpdk-dev] [PATCH v3 1/2] devtools: add path to additional shared object files Ruifeng Wang 2019-12-23 7:08 ` [dpdk-dev] [PATCH v3 2/2] ci: add travis ci support for aarch64 Ruifeng Wang 2020-01-06 13:34 ` Aaron Conole 2020-01-07 6:24 ` Ruifeng Wang 2020-01-07 14:40 ` Honnappa Nagarahalli 2020-01-08 16:06 ` Aaron Conole 2020-01-08 16:05 ` Aaron Conole 2020-01-08 17:37 ` Bruce Richardson 2020-01-09 7:00 ` Ruifeng Wang 2020-01-09 15:50 ` Honnappa Nagarahalli 2020-01-09 17:45 ` Aaron Conole 2020-01-10 9:53 ` [dpdk-dev] [PATCH v4 0/2] " Ruifeng Wang 2020-01-10 9:53 ` [dpdk-dev] [PATCH v4 1/2] devtools: add path to additional shared object files Ruifeng Wang 2020-01-10 15:03 ` Aaron Conole 2020-01-10 9:53 ` [dpdk-dev] [PATCH v4 2/2] ci: add travis ci support for aarch64 Ruifeng Wang 2020-01-10 15:13 ` Aaron Conole 2020-01-13 6:09 ` Ruifeng Wang 2020-01-13 6:26 ` [dpdk-dev] [PATCH v5 0/2] add travis ci support for native aarch64 Ruifeng Wang 2020-01-13 6:26 ` [dpdk-dev] [PATCH v5 1/2] devtools: add path to additional shared object files Ruifeng Wang 2020-01-13 6:26 ` [dpdk-dev] [PATCH v5 2/2] ci: add travis ci support for native aarch64 Ruifeng Wang 2020-01-14 14:03 ` [dpdk-dev] [PATCH v5 0/2] " David Marchand
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).