X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=debian%2Frules;h=e2b018cd785217a1dcb6735ab697257dac878326;hb=a2ddb5e56bbd6a991eb8256004c0d3aec900b5b3;hp=068fd8e162fcf407e9f2877588c7015f65509492;hpb=28c6425a6978609a35fd412ba6471b2ececb9698;p=deb_dpdk.git diff --git a/debian/rules b/debian/rules old mode 100644 new mode 100755 index 068fd8e1..e2b018cd --- a/debian/rules +++ b/debian/rules @@ -4,13 +4,14 @@ export DH_VERBOSE=1 export DH_OPTIONS=-v -VERSION := $(shell dpkg-parsechangelog | sed -nr '/^Version:/s/Version: (.*:)?(.*)-(.*)/\2/p') +VERSION := $(shell dpkg-parsechangelog --show-field Version | sed -nr 's/(.*:)?([^-])(-.*)/\2/p') DPDK_ABI := $(shell echo $(VERSION) | cut -d '.' -f1-2) # see EXAMPLES in dpkg-buildflags(1) and read /usr/share/dpkg/* include /usr/share/dpkg/default.mk DEB_HOST_GNU_CPU := $(shell dpkg-architecture -qDEB_HOST_GNU_CPU) +DEB_HOST_MULTIARCH := $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) # see FEATURE AREAS in dpkg-buildflags(1) export DEB_BUILD_MAINT_OPTIONS = hardening=+all,-pie @@ -56,15 +57,18 @@ ifneq (,$(filter $(DEB_HOST_ARCH), arm64)) DPDK_CONFIG ?= "arm64-armv8a-linuxapp-gcc" RTE_MACHINE ?= "armv8a" RTE_TARGET ?= "arm64-armv8a-linuxapp-gcc" +INCLUDE_ARCH := arm else ifneq (,$(filter $(DEB_HOST_ARCH), ppc64el)) DPDK_CONFIG ?= "ppc_64-power8-linuxapp-gcc" RTE_MACHINE ?= "power8" RTE_TARGET ?= "ppc_64-power8-linuxapp-gcc" +INCLUDE_ARCH := ppc_64 else DPDK_CONFIG ?= "$(DEB_HOST_GNU_CPU)-native-linuxapp-gcc" RTE_MACHINE ?= "default" RTE_TARGET ?= "$(DEB_HOST_GNU_CPU)-default-linuxapp-gcc" +INCLUDE_ARCH := x86 endif endif DPDK_STATIC_DIR = "debian/build/static-root" @@ -162,6 +166,8 @@ override_dh_auto_clean: debian/control.modules debian/VERSION sed -i '/Package: dpdk-modules-/,/`tail -n1 debian/control.modules.in`/d' debian/control test -L config/defconfig_$(DPDK_CONFIG) && rm -f config/defconfig_$(DPDK_CONFIG) || true + rm -f debian/dpdk-igb-uio-dkms.dkms debian/dpdk-rte-kni-dkms.dkms + rm -f debian/dpdk-dev.preinst override_dh_auto_configure: # Add support for a custom defconfig file in the debian directory. @@ -180,7 +186,7 @@ ifeq (,$(filter dpdk_config=%,$(DEB_BUILD_OPTIONS))) -e 's,(CONFIG_RTE_KNI_KMOD=).*,\1$(DPDK_CONFIG_BUILD_KMOD),' \ -e 's,(LIBRTE_PMD_PCAP=).*,\1y,' \ -e 's,(LIBRTE_PMD_XENVIRT=).*,\1y,' \ - -e 's,(CONFIG_RTE_EAL_PMD_PATH=).*,\1"/usr/lib/$(shell dpkg-architecture -qDEB_HOST_MULTIARCH)/dpdk-pmds/",' \ + -e 's,(CONFIG_RTE_EAL_PMD_PATH=).*,\1"/usr/lib/$(DEB_HOST_MULTIARCH)/dpdk-pmds/",' \ $(DPDK_STATIC_DIR)/.config # xen not available on ppc64el ifneq (,$(filter $(DEB_HOST_ARCH), ppc64el)) @@ -225,8 +231,9 @@ ifeq (y,$(BUILD_DOCS)) # need to be around for dh_installman to be picked up $(MAKE) V=$(DH_VERBOSE) O=$(DPDK_SHARED_DIR) RTE_KERNELDIR=$(KSRC) doc-guides-man endif + $(MAKE) V=$(DH_VERBOSE) O=$(DPDK_SHARED_DIR) RTE_KERNELDIR=$(KSRC) test-build -override_dh_auto_install-arch: LIBDIR=/usr/lib/$(shell dpkg-architecture -qDEB_HOST_MULTIARCH) +override_dh_auto_install-arch: LIBDIR=/usr/lib/$(DEB_HOST_MULTIARCH) override_dh_auto_install-arch: # Package: dpdk (runtime) ifeq (y,$(BUILD_STATIC_LIB)) @@ -239,7 +246,7 @@ endif cp debian/dpdk.interfaces debian/dpdk/etc/dpdk/interfaces rm debian/dpdk/usr/sbin/dpdk-devbind mkdir -p debian/dpdk/sbin - ln -s /usr/share/dpdk/tools/dpdk-devbind.py \ + ln -s /usr/share/dpdk/usertools/dpdk-devbind.py \ debian/dpdk/sbin/dpdk-devbind # Package: dpdk-dev (build environment) # workaround to fix symbolic link creation @@ -252,11 +259,13 @@ endif sed -e 's/SDK_TARGET/$(RTE_TARGET)/' debian/dpdk-sdk-env.sh.in > \ debian/dpdk-dev/usr/share/dpdk/dpdk-sdk-env.sh # include the bundled autotest suite to be usable from the dpdk-dev package - mkdir -p debian/dpdk-dev/usr/share/dpdk/test - cp -a test/test/autotest* debian/dpdk-dev/usr/share/dpdk/test - cp $(DPDK_SHARED_DIR)/app/test debian/dpdk-dev/usr/share/dpdk/test/ - cp $(DPDK_SHARED_DIR)/app/testacl debian/dpdk-dev/usr/share/dpdk/test/ - cp $(DPDK_SHARED_DIR)/app/testpipeline debian/dpdk-dev/usr/share/dpdk/test/ + if grep -qs 'CONFIG_RTE_APP_TEST=y' $(DPDK_SHARED_DIR)/.config; then \ + mkdir -p debian/dpdk-dev/usr/share/dpdk/test; \ + cp -a test/test/autotest* debian/dpdk-dev/usr/share/dpdk/test; \ + cp $(DPDK_SHARED_DIR)/app/test debian/dpdk-dev/usr/share/dpdk/test/; \ + cp $(DPDK_SHARED_DIR)/app/testacl debian/dpdk-dev/usr/share/dpdk/test/; \ + cp $(DPDK_SHARED_DIR)/app/testpipeline debian/dpdk-dev/usr/share/dpdk/test/; \ + fi # since we move libs to multiarch dirs update the non aware symlink rm debian/dpdk-dev/usr/share/dpdk/$(RTE_TARGET)/lib ln -rs debian/dpdk-dev/$(LIBDIR)/ \ @@ -267,8 +276,34 @@ endif # linker script mv debian/dpdk/$(LIBDIR)/libdpdk.so debian/libdpdk-dev/$(LIBDIR)/ # includes - mkdir -p debian/libdpdk-dev/usr/include + # Some headers have architecture-specific content, but the upstream build + # system installs them in the same directory, breaking multiarch. + # Move them in /usr/include//dpdk instead. + mkdir -p debian/libdpdk-dev/usr/include/$(DEB_HOST_MULTIARCH)/dpdk + # Before moving the files, remove the symlink in usr/share/dpdk and copy them over, + # as the SDK subdir is architecture specific and requires the arch-specific headers + # in the top level + rm -f debian/dpdk-dev/usr/share/dpdk/$(RTE_TARGET)/include + mkdir -p debian/dpdk-dev/usr/share/dpdk/$(RTE_TARGET)/include + cp -r debian/dpdk-dev/usr/include/dpdk/* debian/dpdk-dev/usr/share/dpdk/$(RTE_TARGET)/include + # genereate the preinst to deal with the symlink -> directory transition smoothly + sed "s/@@RTE_TARGET@@/$(RTE_TARGET)/g" debian/dpdk-dev.preinst.in > debian/dpdk-dev.preinst + mv $(addprefix debian/dpdk-dev/usr/include/dpdk/,$(notdir $(wildcard lib/librte_eal/common/include/arch/$(INCLUDE_ARCH)/*.h))) \ + debian/libdpdk-dev/usr/include/$(DEB_HOST_MULTIARCH)/dpdk/ + mv debian/dpdk-dev/usr/include/dpdk/rte_config.h \ + debian/libdpdk-dev/usr/include/$(DEB_HOST_MULTIARCH)/dpdk/ mv debian/dpdk-dev/usr/include/dpdk debian/libdpdk-dev/usr/include/ + rmdir debian/dpdk-dev/usr/include + # backward compatibility: to ease things for the majority of users, + # which are on x86_64, symlink the x86 headers into the global + # directory. +ifeq (x86_64-linux-gnu,$(DEB_HOST_MULTIARCH)) + ln -rs debian/libdpdk-dev/usr/include/$(DEB_HOST_MULTIARCH)/dpdk/*.h \ + debian/libdpdk-dev/usr/include/dpdk +endif + # have the DKMS build include the correct per-arch directory + sed "s/@@DEB_HOST_MULTIARCH@@/$(DEB_HOST_MULTIARCH)/g" debian/dpdk-igb-uio-dkms.dkms.in > debian/dpdk-igb-uio-dkms.dkms + sed "s/@@DEB_HOST_MULTIARCH@@/$(DEB_HOST_MULTIARCH)/g" debian/dpdk-rte-kni-dkms.dkms.in > debian/dpdk-rte-kni-dkms.dkms # all static libs are in the dev package ifeq (y,$(BUILD_STATIC_LIB)) mv debian/dpdk/$(LIBDIR)/lib*.a debian/libdpdk-dev/$(LIBDIR)/ @@ -310,7 +345,7 @@ endif LIBS=$$(sed -e 's/GROUP ( \(.*\) )/\1/' -e 's/lib/-l/g' -e 's/\.so//g' \ $(CURDIR)/debian/libdpdk-dev/$(LIBDIR)/libdpdk.so); \ sed -e "s/@DPDK_LIBS@/$${LIBS}/" -e "s/@VERSION@/$(VERSION)/" \ - -e "s|@LIBDIR@|$(LIBDIR)|" \ + -e "s|@DEB_HOST_MULTIARCH@|$(DEB_HOST_MULTIARCH)|g" \ debian/libdpdk.pc.in > debian/libdpdk-dev/$(LIBDIR)/pkgconfig/libdpdk.pc # Package: dpdk-igb-uio-dkms mkdir -p debian/dpdk-igb-uio-dkms/usr/src/dpdk-igb-uio-$(VERSION)