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]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to