[dpdk-users] Error when compiling pktgen-dpdk with dpdk-17.02

McCullough, Harrison harrison_mccullough at labs.att.com
Wed Aug 9 18:52:25 CEST 2017


I have been using dpdk version 17.02. A while ago I installed pktgen-dpdk and
got it working. However, when I recently downloaded it in a different machine
(a Ubuntu 16.04 VM), pktgen-dpdk failed to build. At first I thought it had
something to do with the fact that it was in a VM or something different
about the configuration of this new machine. However, after I rolled back to
the same commit that I used the first time it built fine.

<aside>I haven't actually gotten it to work completely because of issues with
memory and hugepages but the application starts just fine and it looks like
it's my problem now.</aside>

When I run make, this is what I  get:
$ make
== lib
== common
  CC copyright_info.o
  CC port_config.o
/home/username/pktgen-dpdk/lib/common/port_config.c: In function 'create_blacklist':
/home/username/pktgen-dpdk/lib/common/port_config.c:198:24: error: 'RTE_DEVTYPE_BLACKLISTED' undeclared (first use in this function)
    rte_eal_devargs_add(RTE_DEVTYPE_BLACKLISTED,
                        ^
/home/username/pktgen-dpdk/lib/common/port_config.c:198:24: note: each undeclared identifier is reported only once for each function it appears in
/home/username/pktgen-dpdk/lib/common/port_config.c:208:24: error: 'RTE_DEVTYPE_WHITELISTED' undeclared (first use in this function)
    rte_eal_devargs_add(RTE_DEVTYPE_WHITELISTED,
                        ^
/home/username/dpdk-stable-17.02.1/mk/internal/rte.compile-pre.mk:138: recipe for target 'port_config.o' failed
make[3]: *** [port_config.o] Error 1
/home/username/dpdk-stable-17.02.1/mk/rte.extlib.mk:44: recipe for target 'all' failed
make[2]: *** [all] Error 2
/home/username/dpdk-stable-17.02.1/mk/rte.extsubdir.mk:46: recipe for target 'common' failed
make[1]: *** [common] Error 2
/home/username/dpdk-stable-17.02.1/mk/rte.extsubdir.mk:46: recipe for target 'lib' failed
make: *** [lib] Error 2

In the offending file, .../pktgen-dpdk/lib/common/port_config.c, there's a
line that I assume is checking the version number and using a different name
depending on which version of DPDK you're using. Unfortunately, it seems to
be confused as to when that name change took place. I checked 17.02, 17.05,
and 17.08, and they all seemed to be using RTE_DEVTYPE_BLACKLISTED_PCI
instead of RTE_DEVTYPE_BLACKLISTED.

I changed the two places where it used did this check (one for
RTE_DEVTYPE_BLACKLISTED_PCI and one for RTE_DEVTYPE_WHITELISTED_PCI), and it
happily compiled most of the files (getting through lib, common, lua, src,
and cli). However, it got hung up on app with the following error:

make[2]: *** No rule to make target '/home/harrison/pktgen-dpdk/app/../lib/common/x86_64-native-linuxapp-gcc/libcommon.a'.  Stop.
/home/harrison/dpdk-stable-17.02.1/mk/rte.extapp.mk:47: recipe for target '/home/harrison/pktgen-dpdk/app/../lib/common/x86_64-native-linuxapp-gcc/libcommon.a' failed
make[1]: *** [/home/harrison/pktgen-dpdk/app/../lib/common/x86_64-native-linuxapp-gcc/libcommon.a] Error 2
/home/harrison/dpdk-stable-17.02.1/mk/rte.extsubdir.mk:46: recipe for target 'app' failed
make: *** [app] Error 2

I didn't feel like trying to track this any farther, especially because it's
working with the previous version of pktgen. I'm guessing this is failing
because I'm trying to use a newer version of pktgen with an older version of
DPDK, does that seem right? How am I supposed to know which commit works with
which version of DPDK? Are there tags in the pktgen-dpdk git repository that
mark it as compatible with certain releases of DPDK?

This is the sha-1 of the commit where everything works with DPDK 17.02:
4a23c7ef444ab25c3efd0acfa43d7cc7c739279a

This is the sha-1 of the master as it currently stands
67eb645cbbef76821d8bfb14d7838e54f14f4b2a


More information about the users mailing list