X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=debian%2Frules;h=16f1a67d1ef7e2291ce9d19c338dc4535a45078f;hb=b227dc901c12f12f5a0aaad0b030a9f26dbf02f0;hp=59569b9cbd02f4491144ec1bc0f874024730cbf6;hpb=6d0f627c533ccaeac81f11b8ea5639fd873caf61;p=deb_dpdk.git diff --git a/debian/rules b/debian/rules index 59569b9c..16f1a67d 100755 --- a/debian/rules +++ b/debian/rules @@ -11,6 +11,7 @@ DPDK_ABI := $(shell echo $(VERSION) | cut -d '.' -f1-2) 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 @@ -38,6 +39,7 @@ ifeq (yes, $(dpkg_version_lt)) endif export RTE_DEVEL_BUILD=n +export EXTRA_CFLAGS+=-g # People rebuilding this package can overwrite DPDK_CONFIG, RTE_MACHINE and # RTE_TARGET via DEB_BUILD_OPTIONS if they like @@ -55,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" @@ -179,13 +184,15 @@ 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)) sed -ri -e 's,(LIBRTE_PMD_XENVIRT=).*,\1n,' $(DPDK_STATIC_DIR)/.config endif endif + echo "CONFIG_RTE_MAJOR_ABI=\"$(DPDK_ABI)\"" >> \ + $(DPDK_STATIC_DIR)/.config dh_auto_configure override_dh_auto_build-indep: @@ -222,8 +229,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)) @@ -249,9 +257,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 app/test/autotest* debian/dpdk-dev/usr/share/dpdk/test - cp $(DPDK_SHARED_DIR)/app/test 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)/ \ @@ -262,7 +274,14 @@ 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 + 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/ # all static libs are in the dev package ifeq (y,$(BUILD_STATIC_LIB)) @@ -275,16 +294,15 @@ endif # Package(s): libdpdk- (bare runtime libs) for lib in $$(ls -1 debian/dpdk/$(LIBDIR)/*.so.*); do \ BN=$$(basename $${lib}); \ - VER=$$(echo $${BN} | sed -e 's/^.*\.so\.//'); \ - LN=$$(echo $${BN} | sed -e 's/\.so\.[0-9]*$$//' | tr '_' '-'); \ + LN=$$(echo $${BN} | sed -e 's/\.so\.[0-9\.]*$$//' | tr '_' '-'); \ if echo $${LN} | grep -q ".*[0-9]$$"; then \ - PKG=$${LN}-$${VER}; \ + PKG=$${LN}-$(DPDK_ABI); \ else \ - PKG=$${LN}$${VER}; \ + PKG=$${LN}$(DPDK_ABI); \ fi; \ LIBF="$$(basename $${lib})"; \ LIBD="debian/$${PKG}/$(LIBDIR)"; \ - echo "moving $${lib} for library $${PKG}"; \ + echo "moving $${lib} to dir $${LIBD} (PKG=$${PKG} BN=$${BN} LN={$${LN} LIBF=$${LIBF} LIBD=$${LIBD})"; \ mkdir -p $${LIBD}; \ mv $${lib} $${LIBD}; \ if [ "$${LIBF#librte_pmd_}x" != "$${LIBF}x" ]; then \ @@ -306,7 +324,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)