[dpdk-dev] [PATCH v3 00/13] standard make install

Bruce Richardson bruce.richardson at intel.com
Thu Dec 3 16:31:40 CET 2015


On Thu, Dec 03, 2015 at 02:45:27PM +0100, Thomas Monjalon wrote:
> Following the recent discussions, this is a proposal to have a standard
> installation process while keeping compatibility with most of the old
> behaviours.
> 
> v2 changes:
> - fix default build dir
> - RTE_TARGET subdir in $(sdkdir).
> - better kerneldir defaults
> - fix dpdk_nic_bind symlink
> - always install doc if generated
> - doc
> - pkg/dpdk.spec
> 
> v3 changes:
> - fix install in a clean dir
> - take responsibility in MAINTAINERS
> 
> More details below and in the commit messages.
> 
> These variables can be overriden:
> 
> kerneldir   ?= /lib/modules/$(shell uname -r)/extra/dpdk
> prefix      ?=     /usr/local
> exec_prefix ?=      $(prefix)
> bindir      ?= $(exec_prefix)/bin
> sbindir     ?= $(exec_prefix)/sbin
> libdir      ?= $(exec_prefix)/lib
> includedir  ?=      $(prefix)/include/dpdk
> datarootdir ?=      $(prefix)/share
> docdir      ?=       $(datarootdir)/doc/dpdk
> datadir     ?=       $(datarootdir)/dpdk
> sdkdir      ?=                $(datadir)
> targetdir   ?=                $(datadir)/$(RTE_TARGET)
> 
> All paths are prefixed with $(DESTDIR)
> 
> One rule install = install-runtime install-kmod install-sdk install-doc
> 
> --------
> 
> System-wise install example with
>     DESTDIR=
>     prefix=/usr
>     kerneldir=/lib/modules/kver/extra
> 
> # make install-runtime
> /usr/bin/testpmd
> /usr/lib/libethdev*
> /usr/lib/librte_*
> /usr/sbin/dpdk_nic_bind -> /usr/share/dpdk/tools/dpdk_nic_bind.py
> /usr/share/dpdk/tools/
> 
> # make install-kmod
> /lib/modules/kver/extra/
> 
> # make install-sdk
> /usr/include/dpdk/
> /usr/share/dpdk/mk/
> /usr/share/dpdk/scripts/
> /usr/share/dpdk/x86_64-default-linuxapp-gcc/.config
> /usr/share/dpdk/x86_64-default-linuxapp-gcc/include -> /usr/include/dpdk/
> /usr/share/dpdk/x86_64-default-linuxapp-gcc/lib     -> /usr/lib/
> 
> # make install-doc
> /usr/share/doc/dpdk/api/
> /usr/share/doc/dpdk/guides/
> /usr/share/dpdk/examples/
> 
> --------
> 
> Local install example with old (compatible) command:
> 
> # make install T=x86_64-native-linuxapp-gcc DESTDIR=install
> 
> would be equivalent to:
> 
> # make config T=x86_64-native-linuxapp-gcc 0=x86_64-native-linuxapp-gcc
> # make O=x86_64-native-linuxapp-gcc
> # make install O=x86_64-native-linuxapp-gcc prefix= DESTDIR=install
> 
> install/bin/testpmd
> install/include/dpdk/
> install/kmod/
> install/lib/
> install/sbin/dpdk_nic_bind -> ../share/dpdk/tools/dpdk_nic_bind.py
> install/share/doc/dpdk/
> install/share/dpdk/examples/
> install/share/dpdk/mk/
> install/share/dpdk/scripts/
> install/share/dpdk/tools/
> install/share/dpdk/x86_64-native-linuxapp-gcc/.config
> install/share/dpdk/x86_64-native-linuxapp-gcc/include -> install/include/dpdk/
> install/share/dpdk/x86_64-native-linuxapp-gcc/lib     -> install/lib/
> 
> It should be usable to build some applications as before:
> 
> # make -C examples/helloworld RTE_SDK=$(readlink -m install) RTE_TARGET=x86_64-native-linuxapp-gcc
> 
> The RTE_SDK directory must point to install/share/dpdk with a default install.
> 
> --------
> 
While I have no huge objections to this patchset, I don't like the fact that
install does completely different things depending upon whether certain variables
are defined or not. I believe the "old" default behaviour for install was
poorly named, and while it's behaviour should be kept, a new name should be given
to it to avoid having the target "install" so heavily overloaded.

/Bruce


More information about the dev mailing list