Hello Damjan and all We had a meeting in ARM team to clarify our standpoint and goals on cross-compilation for aarch64. We welcome your initiative to make this process more generic and effective and we are thankful that you brought the more light to the current building procedure by your emails which helps our understand how to make things better. We will try to harmonize your and our efforts (and to contribute to the patch you provided).
Our use case is: 1. we want to build on x86_64 system 2. this system is interconnected with some target ARM system via NFS share This target system can be whatever linux OS used on ARM SoC and this imply that we do not have need for packaging. To conclude: We need to address different linux OS. We need to build rapidly (to allow debug VPP on those target SoC and allow a programmer to quickly fix the problem and redeploy fixed VPP). Questions: 1. What is the best way to address our effort to target different ARM platforms? We have tried this via Make target, currently we are discussing using of Dockerfiles - maybe dedicated Dockerfile for each specific ARM platform would be a good solution? Have you some other ideas how we could solve our use case? 2. In one of your emails you wrote VPP today is linked against lot of shared libraries provided by the current distro, so effectively you can cross-compile only for same distro, same version, just different target cpu. Is there somewhere documentation about what are buildtime dependencies, what are runtime dependencies? If there is no such documentation is it possible to extract this information about buildtime dependencies from the Makefile (make install-dep)? How to acquire the information about runtime dependencies? This is for us the key information because we want to execute VPP not only on Ubuntu and/or Centos but other linux distributions which can be present on those ARM SoCs. We need to document all dependencies of VPP and publish it somewhere. Best regards ARM team From: Damjan Marion via Lists.Fd.Io <dmarion=me....@lists.fd.io> Sent: Thursday, October 31, 2019 9:04 PM To: Damjan Marion <dmar...@me.com> Cc: vpp-dev@lists.fd.io Subject: Re: [EXT] [vpp-dev] cross-compilation support Let me clarify a bit more, as i can see that this still may be confusing: 1) VPP is using cmake to build binaries and packages, all cmake related stuff is in src/. 2) there is build-root/Makefile and files in build-data/* which are part of old build system called ebuild - ebuild is very complex set of make scripts which have similar functionality like buildroot, it was able to build kernel, toolchain , userspace tools and libraries - today we don't use much of ebuild, it is just used to run VPP cmake prioject in the right directory with he right set of command line arguments 3) Other Makefiles - top level makefile - external deps makefiles in build/external/ My comment bellow is that only 1) is really needed to build VPP, people can decide to use own build system like buildroot or yocto and invoke cmake directly, and completely ignore 2) and 3). In such case selected build system also needs to take care for dependencies like DPDK. ebuild 2) have excellent cross compilation support for building target images when those images contain everything from kernel and libraries to vpp but it is not appropriate tool for creating distribution packages, i.e. creating Centos ARM rpms on Ubuntu x86 machine. That is the reason why i tried to see if we can use docker instead to be able to build cross-arch, cross-distro or cross-distro-version (or all 3 together) packages. While my patch is incomplete, it looks to me like this approach will work. My patch does native compilation only if TARGET_QUAD is equal to HOST_QUAD, where QUAD is: - distro name (ubuntu, centos) - distro version (18.04, 7.3) - arch (x86_64, aarch64, ...) - platform (generic, thunderx, ….) it also support multiple build_types (release, debug, gcov, … ) At this point it is just early draft, but it shows some basic mechanics used to produce both native and cross packages. > On 31 Oct 2019, at 20:32, Damjan Marion via Lists.Fd.Io > <dmarion=me....@lists.fd.io<mailto:dmarion=me....@lists.fd.io>> wrote: > > I have similar scheme on my mind, where you can have platform specific mk > files loaded…. > >> On 31 Oct 2019, at 20:23, Nitin Saxena >> <nsax...@marvell.com<mailto:nsax...@marvell.com>> wrote: >> >> Hi, >> >>>> cmake /path/to/vpp/src [your favorite xcompile args] cmake —build . >> Instead of having a shell script to pass cmake commands, I really liked the >> idea of passing vpp_cmake_args from build-data/platforms/*.mk >> (https://gerrit.fd.io/r/#/c/vpp/+/21035/23/build-data/platforms/native.mk@42). >> Any comment of taking those changes? >> >> Thanks, >> Nitin >> >>> -----Original Message----- >>> From: vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io> >>> <vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io>> On Behalf Of Damjan >>> Marion via Lists.Fd.Io >>> Sent: Friday, November 1, 2019 12:15 AM >>> To: Christian Hopps <cho...@chopps.org<mailto:cho...@chopps.org>> >>> Cc: vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io> >>> Subject: [EXT] Re: [vpp-dev] cross-compilation support >>> >>> External Email >>> >>> ---------------------------------------------------------------------- >>> >>> Nobody requires you to use docker, you are free to pass right arguments >>> straight to the cmake. >>> >>> All the stuff in build-data, build-root, build/ is optional, and it is >>> there to help >>> developers to stage workspace and create packages but VPP can be built as >>> simple as: >>> >>> mkdir build >>> cd build >>> cmake /path/to/vpp/src [your favorite xcompile args] cmake —build . >>> >>> >>> >>>> On 31 Oct 2019, at 19:39, Christian Hopps >>>> <cho...@chopps.org<mailto:cho...@chopps.org>> wrote: >>>> >>>> I mean to call out the use of docker/qemu. In order to allow for this the >>> user has to have extra privileges. >>>> >>>> As I mentioned, locally we use docker for building, I like it, it's a nice >>>> tool; >>> however, my personal opinion is that it seems wrong to require docker >>> and/or qemu for compiling an open source project. >>>> >>>> Important in holding this opinion is that it's seems possible to make this >>> work w/o docker/qemu/root, I think someone just has to find the time to >>> make an acceptable to the project working patch. >>>> >>>> I asked internally and it seems that our changes to support x-compile do >>> not go as far as producing debian/ubuntu packages, so they aren't ready for >>> upstreaming, unfortunately. >>>> >>>> Thanks, >>>> Chris. >>>> >>>>> On Oct 31, 2019, at 2:23 PM, Damjan Marion >>>>> <dmar...@me.com<mailto:dmar...@me.com>> wrote: >>>>> >>>>> >>>>> That is just copy paste from Ben’s command line. >>>>> >>>>> As. i wrote, this is just about presenting the concept... >>>>> >>>>>> On 31 Oct 2019, at 18:39, Christian Hopps >>>>>> <cho...@chopps.org<mailto:cho...@chopps.org>> wrote: >>>>>> >>>>>> Requiring root privileges for building software is pretty atypical and >>> limiting, even for x-compiling. >>>>>> >>>>>> Thanks, >>>>>> Chris. >>>>>> >>>>>>> On Oct 31, 2019, at 12:45 PM, Damjan Marion via Lists.Fd.Io >>> <dmarion=me....@lists.fd.io<mailto:dmarion=me....@lists.fd.io>> wrote: >>>>>>> >>>>>>> >>>>>>> So what people think about following approach for cross-compilation: >>>>>>> >>>>>>> Patch: >>>>>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__gerrit.fd.io_r >>>>>>> _c_vpp_- >>> 2B_23153&d=DwIFaQ&c=nKjWec2b6R0mOyPaz7xtfQ&r=S4H7jibYAtA5YO >>>>>>> >>> vfL3IkGduCfk9LbZMPOAecQGDzWV0&m=G81bDw8Lj77hbqAq7cdeDRXZev- >>> ZVMwh0n_ >>>>>>> oePUFrlQ&s=Lk5OD0CVQuGPdj-h0TfK-m8NMJj0Zci0EhjBcQxYn2E&e= >>>>>>> >>>>>>> At the moment this is just to show idea, so it works only for >>>>>>> x86-to-x86 and between ubuntu versions only but it can be easily >>> extended to scenarios like build vpp packages for AArch64 centos7 on >>> ubuntu x86 host. >>>>>>> >>>>>>> export CROSS_DISTRO_NAME=ubuntu >>>>>>> exprot CROSS_DISTRO_VER=18.04 >>>>>>> export CROSS_ARCH=x86_64 >>>>>>> export CROSS_TARGET=release >>>>>>> >>>>>>> $ make cross-env-init >>>>>>> >>>>>>> this is executed once, it creates docker container named "vpp-dev-env- >>> ubuntu-18.04-x86_64”, install all dependencies including DPDK and other >>> libs” >>>>>>> >>>>>>> $ make cross-env-update >>>>>>> >>>>>>> updates cross-env to latest packages and ext-deps >>>>>>> >>>>>>> $ make cross-shell >>>>>>> >>>>>>> starts shell inside cross-env >>>>>>> >>>>>>> $ make cross-package >>>>>>> >>>>>>> builds VPP and creates packages: >>>>>>> >>>>>>> ls -la build/ubuntu-18.04-x86_64-release total 11716 >>>>>>> drwxr-xr-x 3 root root 4096 Oct 31 17:30 . >>>>>>> drwxrwxr-x 4 damarion damarion 4096 Oct 31 17:36 .. >>>>>>> drwxr-xr-x 22 root root 4096 Oct 31 17:30 build >>>>>>> -rw-r--r-- 1 root root 190124 Oct 31 17:30 libvppinfra_20.01- >>> rc0~555-g7f980bcfe_amd64.deb >>>>>>> -rw-r--r-- 1 root root 145056 Oct 31 17:30 >>>>>>> libvppinfra-dev_20.01- >>> rc0~555-g7f980bcfe_amd64.deb >>>>>>> -rw-r--r-- 1 root root 23140 Oct 31 17:30 >>>>>>> python3-vpp-api_20.01- >>> rc0~555-g7f980bcfe_amd64.deb >>>>>>> -rw-r--r-- 1 root root 8815 Oct 31 17:30 vpp_20.01-rc0~555- >>> g7f980bcfe_amd64.buildinfo >>>>>>> -rw-r--r-- 1 root root 4147 Oct 31 17:30 vpp_20.01-rc0~555- >>> g7f980bcfe_amd64.changes >>>>>>> -rw-r--r-- 1 root root 3674024 Oct 31 17:30 vpp_20.01-rc0~555- >>> g7f980bcfe_amd64.deb >>>>>>> -rw-r--r-- 1 root root 23104 Oct 31 17:30 >>>>>>> vpp-api-python_20.01- >>> rc0~555-g7f980bcfe_amd64.deb >>>>>>> -rw-r--r-- 1 root root 719712 Oct 31 17:30 >>>>>>> vpp-dbg_20.01-rc0~555- >>> g7f980bcfe_amd64.deb >>>>>>> -rw-r--r-- 1 root root 915744 Oct 31 17:30 >>>>>>> vpp-dev_20.01-rc0~555- >>> g7f980bcfe_amd64.deb >>>>>>> -rw-r--r-- 1 root root 3113820 Oct 31 17:30 >>>>>>> vpp-plugin-core_20.01- >>> rc0~555-g7f980bcfe_amd64.deb >>>>>>> -rw-r--r-- 1 root root 3144784 Oct 31 17:30 >>>>>>> vpp-plugin-dpdk_20.01- >>> rc0~555-g7f980bcfe_amd64.deb >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -=-=-=-=-=-=-=-=-=-=-=- >>>>>>> Links: You receive all messages sent to this group. >>>>>>> >>>>>>> View/Reply Online (#14428): >>>>>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.fd.io_g_ >>>>>>> vpp- >>> 2Ddev_message_14428&d=DwIFaQ&c=nKjWec2b6R0mOyPaz7xtfQ&r=S4H7ji >>> b >>>>>>> >>> YAtA5YOvfL3IkGduCfk9LbZMPOAecQGDzWV0&m=G81bDw8Lj77hbqAq7cdeD >>> RXZev-Z >>>>>>> VMwh0n_oePUFrlQ&s=iBMmIxh4KnS1Ig6WteL2- >>> 14ET0OV4oviKkohF5pvnKI&e= >>>>>>> Mute This Topic: >>>>>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.fd.io_mt >>>>>>> >>> _40199795_1826170&d=DwIFaQ&c=nKjWec2b6R0mOyPaz7xtfQ&r=S4H7jibY >>> AtA5Y >>>>>>> >>> OvfL3IkGduCfk9LbZMPOAecQGDzWV0&m=G81bDw8Lj77hbqAq7cdeDRXZev- >>> ZVMwh0n >>>>>>> _oePUFrlQ&s=MfbIY3-EEVgV9eXT0IgUFliXj2yF4LQ5C8SDZWKqEIA&e= >>>>>>> Group Owner: vpp-dev+ow...@lists.fd.io<mailto:vpp-dev+ow...@lists.fd.io> >>>>>>> Unsubscribe: https://urldefense.proofpoint.com/v2/url?u=https- >>> 3A__lists.fd.io_g_vpp- >>> 2Ddev_unsub&d=DwIFaQ&c=nKjWec2b6R0mOyPaz7xtfQ&r=S4H7jibYAtA5YO >>> vfL3IkGduCfk9LbZMPOAecQGDzWV0&m=G81bDw8Lj77hbqAq7cdeDRXZev- >>> ZVMwh0n_oePUFrlQ&s=WBlsVcHNJGCJ9xYyS9QwicssF0GaRcoS8m- >>> 2KINBAQ0&e= [cho...@chopps.org] >>>>>>> -=-=-=-=-=-=-=-=-=-=-=- >>>>>> >>>>> >>>> >>>> -=-=-=-=-=-=-=-=-=-=-=- >>>> Links: You receive all messages sent to this group. >>>> >>>> View/Reply Online (#14434): >>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.fd.io_g_vpp >>>> - >>> 2Ddev_message_14434&d=DwIFaQ&c=nKjWec2b6R0mOyPaz7xtfQ&r=S4H7ji >>> bYAtA5Y >>>> >>> OvfL3IkGduCfk9LbZMPOAecQGDzWV0&m=G81bDw8Lj77hbqAq7cdeDRXZev- >>> ZVMwh0n_oe >>>> PUFrlQ&s=oJ64M8FgFtN93xTTErLxt85eClgNdxMohhu2Fk8vCuU&e= >>>> Mute This Topic: >>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.fd.io_mt_40 >>>> >>> 199795_675642&d=DwIFaQ&c=nKjWec2b6R0mOyPaz7xtfQ&r=S4H7jibYAtA5Y >>> OvfL3Ik >>>> GduCfk9LbZMPOAecQGDzWV0&m=G81bDw8Lj77hbqAq7cdeDRXZev- >>> ZVMwh0n_oePUFrlQ& >>>> s=Yrx16m5FpMJvTAPtftp7qv-ZWXW8XvQxTpFyAblkNJc&e= >>>> Group Owner: vpp-dev+ow...@lists.fd.io<mailto:vpp-dev+ow...@lists.fd.io> >>>> Unsubscribe: https://urldefense.proofpoint.com/v2/url?u=https- >>> 3A__lists.fd.io_g_vpp- >>> 2Ddev_unsub&d=DwIFaQ&c=nKjWec2b6R0mOyPaz7xtfQ&r=S4H7jibYAtA5YO >>> vfL3IkGduCfk9LbZMPOAecQGDzWV0&m=G81bDw8Lj77hbqAq7cdeDRXZev- >>> ZVMwh0n_oePUFrlQ&s=WBlsVcHNJGCJ9xYyS9QwicssF0GaRcoS8m- >>> 2KINBAQ0&e= [dmar...@me.com] >>>> -=-=-=-=-=-=-=-=-=-=-=- >> > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > > View/Reply Online (#14440): https://lists.fd.io/g/vpp-dev/message/14440 > Mute This Topic: https://lists.fd.io/mt/40237995/675642 > Group Owner: vpp-dev+ow...@lists.fd.io<mailto:vpp-dev+ow...@lists.fd.io> > Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [dmar...@me.com] > -=-=-=-=-=-=-=-=-=-=-=- -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#14441): https://lists.fd.io/g/vpp-dev/message/14441 Mute This Topic: https://lists.fd.io/mt/40243741/899089 Group Owner: vpp-dev+ow...@lists.fd.io<mailto:vpp-dev+ow...@lists.fd.io> Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [stanislav.chle...@pantheon.tech] -=-=-=-=-=-=-=-=-=-=-=-
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#14523): https://lists.fd.io/g/vpp-dev/message/14523 Mute This Topic: https://lists.fd.io/mt/40243741/21656 Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-