[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