bazelment / dpdk

DPDK is a set of libraries and drivers for fast packet processing. This is a mirror just to introduce bazel support(in bazel branch)
http://www.dpdk.org/
GNU General Public License v2.0
2 stars 0 forks source link

The include path of rte-related files #2

Open Steamgjk opened 3 years ago

Steamgjk commented 3 years ago

In order to use this repo to integrate DPDK library into our bazel project, how should we specifiy the INCLUDE path? According to the BUILD files, it seems it directly include all the rte_*.h files in the local path (i.e. third_party/dpdk/lib) rather than from /usr/local/include.

In that way, how should we reconfigure the INCLUDE path in bazel to build the library successfully?

Could anyone give us some more details to integrate this module into bazel project? Thanks!

mzhaom commented 3 years ago

I could start a demo project in a few days. ping back if you don't hear anything in one week.

Steamgjk commented 3 years ago

I could start a demo project in a few days. ping back if you don't hear anything in one week.

Hi, Ming. Thanks for your reply. Actually, we are now trying to integrate DPDK into our bazel project. We have tried the 8 branches in this repo, and only bazel-16.04-asan can be compiled successfully (after I change a bit). But even after we successfully compiled it, we found it went into runtime failure. Here is our steps:

We launched a clean VM in AWS with Ubuntu 16.04, we then git cloned this repo and checkout to bazel-16.04-asan branch (because bazel building other branches just give us many errors). We created the path as decribed int the BUILD files (i.e. we mkdir third_party/dpdk/). We write a demo program, then we bazel build this demo program in this repo and it can be compiled successfully, but then we run it and it fails at rte_eth_dev_configure, errno -22.

To check whether it is the problems of our demo program, we download DPDK-16.04 and install it. We then build the program with makefile and run it successfully.

We are confused why the same code can successfully run after we build it in original make building system, but fails after we build it with bazel. I believe we probably make some wrong linkage/configuration, so we would really appreciate it if you could a give a demo/tutorial.

Besides, since DPDK has developed so fast and DPDK 16.04 can not even run on newer OSes like Ubuntu 18.04. Could you give a demo on how to integrate newer DPDK into bazel. I have a suggestion here:

This guy provides a minimal demo and successfully runs it on AWS VM. This is a simple but common DPDK application (a simple sender and a simple receiver).
https://github.com/NEOAdvancedTechnology/MinimalDPDKExamples

I really like his tutorial below, which is clear and accurate, instructing me how to deploy and run DPDK on AWS VMs. I have successfully reproduced the result on AWS VM (Ubuntu 18.04) following the steps. https://github.com/NEOAdvancedTechnology/MinimalDPDKExamples/blob/master/DPDK_EC2_Tutorial.md

I am just wondering, while you are starting the demo project, could you just use the demo code in this MinimalDPDKExamples repo and bazel build this application with DPDK 19.01. If this example can be bazel built and successfully run in your demo project, that means everybody can reproduce it at least in AWS VMs. So long as it can be reproducible, it can serve as a template and people (espeically students) can easily integrate their own projects with DPDK by following this example.

Many thanks for your track and looking forward to your demo project.

Steamgjk commented 3 years ago

@mzhaom Hi, Ming. Seems we are trapped with DPDK integration. Could you provide us with a demo to bazel build this small application with DPDK 19.01? https://github.com/NEOAdvancedTechnology/MinimalDPDKExamples

mzhaom commented 3 years ago

@Steamgjk updated wiki https://github.com/bazelment/dpdk/wiki to show how this can be used with 16.04 branch. Please let me know if you run into issue after following the instruction.