seastar icon indicating copy to clipboard operation
seastar copied to clipboard

Can't build on ARM-based machine

Open eecheng87 opened this issue 2 years ago • 3 comments

Hi,

I try to build latest Seastar on AWS EC2 instance (c6gn.xlarge), which uses arm64 architecture. There're some error after configuring like: ./configure.py --mode=release --enable-dpdk:

FAILED: _cooking/ingredient/dpdk/stamp/ingredient_dpdk-install /home/ubuntu/seastar/build/release/_cooking/ingredient/dpdk/stamp/ingredient_dpdk-install
cd /home/ubuntu/seastar/build/release/_cooking/ingredient/dpdk/build && /usr/bin/cmake -E chdir /home/ubuntu/seastar/dpdk make -j 4 "EXTRA_CFLAGS=-Wno-error -fcommon" O=/home/ubuntu/seastar/build/release/_cooking/ingredient/dpdk/build DESTDIR=/home/ubuntu/seastar/build/release/_cooking/stow/dpdk T=arm64-armv8a-linuxapp-gcc install && /usr/bin/cmake -E touch /home/ubuntu/seastar/build/release/_cooking/ingredient/dpdk/stamp/ingredient_dpdk-install
Using local configuration
cc1: error: unknown value ‘corei7’ for ‘-march’
cc1: note: valid arguments are: armv8-a armv8.1-a armv8.2-a armv8.3-a armv8.4-a armv8.5-a armv8.6-a armv8-r native
== Build lib
cc1: error: unknown value ‘corei7’ for ‘-march’
cc1: note: valid arguments are: armv8-a armv8.1-a armv8.2-a armv8.3-a armv8.4-a armv8.5-a armv8.6-a armv8-r native
== Build lib/librte_kvargs
== Build lib/librte_cfgfile
cc1: error: unknown value ‘corei7’ for ‘-march’
cc1: note: valid arguments are: armv8-a armv8.1-a armv8.2-a armv8.3-a armv8.4-a armv8.5-a armv8.6-a armv8-r native
cc1: error: unknown value ‘corei7’ for ‘-march’
cc1: note: valid arguments are: armv8-a armv8.1-a armv8.2-a armv8.3-a armv8.4-a armv8.5-a armv8.6-a armv8-r native

I'm wondering is current Seastar support on arm64 machine? or I'm missing some option in configuration list?

Thanks in advance!

eecheng87 avatar Sep 19 '22 02:09 eecheng87

Try to disable DPDK. Some glue logic is missing from the DPDK integration.

avikivity avatar Sep 19 '22 08:09 avikivity

I actually need to use --dpdk-pmd option and already build DPDK from the source of another repository. If I disable DPDK in seastar to skip the integration of DPDK, I can't use --dpdk-pmd option. Any approach to skip integration but support --dpdk-pmd option?

eecheng87 avatar Sep 19 '22 08:09 eecheng87

I have the same issue, and I also need the dpdk -pmd option. Have you found a way to fix the integration?

simini avatar Sep 19 '22 13:09 simini

by default, dpdk uses "native". when it fails to find SSE42 support, and it uses "corei7" to enforce the SSE42 enabling. so we need to instruct the building system to use a different DPDK machine.

i think, probably, the solution is hidden in the --cflags option. i am able to cook DPDK with configure.py on an armv8 machine, like

$ ./configure.py --mode debug --compiler clang++-15 --c++-standard 20 \
    --enable-dpdk --cflags='-march=armv8-a'

tchaikov avatar Oct 23 '22 01:10 tchaikov