diff options
author | 2016-06-15 20:29:06 +0200 | |
---|---|---|
committer | 2016-06-15 20:37:12 +0200 | |
commit | 199e427d5dea3051eec1726eb9c857aa3d5fdde2 (patch) | |
tree | 5477b3bd4868676a210bbd3ef67a469d34814e61 /debian/rules | |
parent | b5cdd645c9fc62341d55aebbfc93a1b648415512 (diff) |
Merge Ubuntu DPDK packaging as of 15th June 2016
As discussed this shall be our initial baseline.
If history is needed for any sort of debugging or analysis it can be
found at https://code.launchpad.net/~ubuntu-server/dpdk/+git/dpdk
Change-Id: Ie95c7effbbea34d723df14f6451c1f782000cbc1
Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
Diffstat (limited to 'debian/rules')
-rwxr-xr-x | debian/rules | 176 |
1 files changed, 176 insertions, 0 deletions
diff --git a/debian/rules b/debian/rules new file mode 100755 index 00000000..e8bf409d --- /dev/null +++ b/debian/rules @@ -0,0 +1,176 @@ +#!/usr/bin/make -f +# See debhelper(7) (uncomment to enable) +# output every command that modifies files on the build system. +#export DH_VERBOSE = 1 + +VERSION := $(shell dpkg-parsechangelog | sed -nr '/^Version:/s/Version: (.*:)?(.*)-(.*)/\2/p') + +# see EXAMPLES in dpkg-buildflags(1) and read /usr/share/dpkg/* +DPKG_EXPORT_BUILDFLAGS = 1 +include /usr/share/dpkg/default.mk + +DEB_HOST_GNU_CPU := $(shell dpkg-architecture -qDEB_HOST_GNU_CPU) + +# see FEATURE AREAS in dpkg-buildflags(1) +export DEB_BUILD_MAINT_OPTIONS = hardening=+all + +# build with debug symbols, dh_strip will create -dgbsyms packages by that +# also export -fPIC for the static build (already used by shared by default) +export EXTRA_CFLAGS = -g -fPIC + +# see ENVIRONMENT in dpkg-buildflags(1) +# package maintainers to append CFLAGS +#export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic +# package maintainers to append LDFLAGS +#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed + +ifneq (,$(filter $(DEB_HOST_ARCH), arm64)) +DPDK_CONFIG = "arm64-armv8a-linuxapp-gcc" +RTE_MACHINE = "armv8a" +RTE_TARGET = "arm64-armv8a-linuxapp-gcc" +else +DPDK_CONFIG = "$(DEB_HOST_GNU_CPU)-native-linuxapp-gcc" +RTE_MACHINE = "default" +RTE_TARGET = "$(DEB_HOST_GNU_CPU)-default-linuxapp-gcc" +endif +DPDK_STATIC_DIR = "debian/build/static-root" +DPDK_SHARED_DIR = "debian/build/shared-root" + +clean: + dh_testdir + rm -rf debian/build debian/tmp + dh_clean + +build-config: + dh_testdir + $(MAKE) O=$(DPDK_STATIC_DIR) T=$(DPDK_CONFIG) config + sed -ri -e 's,(RTE_MACHINE=).*,\1$(RTE_MACHINE),' \ + -e 's,(RTE_NEXT_ABI=).*,\1n,' \ + -e 's,(CONFIG_RTE_EAL_IGB_UIO=).*,\1n,' \ + -e 's,(CONFIG_RTE_KNI_KMOD=).*,\1n,' \ + -e 's,(LIBRTE_PMD_PCAP=).*,\1y,' \ + -e 's,(LIBRTE_PMD_XENVIRT=).*,\1y,' \ + $(DPDK_STATIC_DIR)/.config + +build-indep: build-config + dh_testdir + $(MAKE) O=$(DPDK_STATIC_DIR) doc-api-html doc-guides-html + +build-arch: build-config + dh_testdir + $(MAKE) O=$(DPDK_STATIC_DIR) build + # Unfortunately the decision about having static or shared libraries is + # made for the whole build, which then produces only .a or .so files + # (but not both). + # And the target layout for target selection has no field for the + # type of library. + # Right now I hack this by doing a second build which only differs in + # the selection of shared libs. + # Shared libs should be default, so the previous static build is only + # used to get static libraries. + cp -a $(DPDK_STATIC_DIR) $(DPDK_SHARED_DIR) + sed -ri 's,(RTE_BUILD_SHARED_LIB=).*,\1y,' \ + $(DPDK_SHARED_DIR)/.config + $(MAKE) O=$(DPDK_SHARED_DIR) build + +build: build-arch build-indep + +binary-indep: PACKAGE_NAME=dpdk-doc +binary-indep: DOCDIR=usr/share/doc/dpdk +binary-indep: export DH_OPTIONS=--indep +binary-indep: + dh_testroot + dh_prep + dh_testdir + dh_installdirs + dh_install + dh_installdocs + dh_installchangelogs + dh_lintian + # Package: dpdk-doc + # All files based on the install-doc rule (includes examples) + $(MAKE) O=$(DPDK_SHARED_DIR) prefix=/usr \ + DESTDIR=debian/dpdk-doc install-doc + dh_link + dh_compress + dh_fixperms + dh_installdeb + dh_gencontrol + dh_md5sums + dh_builddeb + +binary-arch: LIBDIR=usr/lib/$(shell dpkg-architecture -qDEB_HOST_MULTIARCH) +binary-arch: export DH_OPTIONS=--arch +binary-arch: + dh_testroot + dh_prep + dh_testdir + dh_installdirs + dh_install + dh_installdocs + dh_installchangelogs + dh_lintian + dh_systemd_enable + dh_installinit --no-start --no-restart-on-upgrade + dh_systemd_start --no-start --no-restart-on-upgrade + # Package: dpdk (runtime) + $(MAKE) O=$(DPDK_STATIC_DIR) prefix=/usr \ + DESTDIR=debian/dpdk install-runtime + $(MAKE) O=$(DPDK_SHARED_DIR) prefix=/usr \ + DESTDIR=debian/dpdk install-runtime + cp debian/dpdk.interfaces debian/dpdk/etc/dpdk/interfaces + rm debian/dpdk/usr/sbin/dpdk_nic_bind + ln -s /usr/share/dpdk/tools/dpdk_nic_bind.py \ + debian/dpdk/sbin/dpdk_nic_bind + # Package: dpdk-dev (build environment) + $(MAKE) O=$(DPDK_SHARED_DIR) prefix=/usr \ + DESTDIR=debian/dpdk-dev install-sdk + cp $(DPDK_SHARED_DIR)/.config debian/dpdk-dev/usr/share/dpdk/config + sed -e 's/SDK_TARGET/$(RTE_TARGET)/' debian/dpdk-sdk-env.sh.in > \ + debian/dpdk-dev/usr/share/dpdk/dpdk-sdk-env.sh + # Package: libdpdk-dev (bare headers, static devel libs and linker + # script) + mkdir -p debian/libdpdk-dev/$(LIBDIR) + # linker script + mv debian/dpdk/usr/lib/libdpdk.so debian/libdpdk-dev/$(LIBDIR)/ + # includes + mv debian/dpdk-dev/usr/include/dpdk debian/libdpdk-dev/usr/include/ + # all static libs are in the dev package + mv debian/dpdk/usr/lib/lib*.a debian/libdpdk-dev/$(LIBDIR)/ + # symlinks to last .so's are in the non versioned libdpdk-dev as well + # this allows multiple libdpdk-<NAME><VER> at different VER concurrently + # libdpdk-dev depends on all sublibs so symlinks are never broken + mv debian/dpdk/usr/lib/*.so debian/libdpdk-dev/$(LIBDIR)/ + # Package(s): libdpdk-<NAME><VER> (bare runtime libs) + for lib in $$(ls -1 debian/dpdk/usr/lib/*.so.*); do \ + BN=$$(basename $${lib}); \ + VER=$$(echo $${BN} | sed -e 's/^.*\.so\.//'); \ + LN=$$(echo $${BN} | sed -e 's/\.so\.[0-9]*$$//' | tr '_' '-'); \ + LNV="libdpdk-$${LN}$${VER}"; \ + echo "moving $${lib} for library $${LNV}"; \ + mkdir -p debian/$${LNV}/$(LIBDIR); \ + mv $${lib} debian/$${LNV}/$(LIBDIR); \ + done + # Package: dpdk-igb-uio-dkms + mkdir -p debian/dpdk-igb-uio-dkms/usr/src/dpdk-igb-uio-$(VERSION) + cp lib/librte_eal/linuxapp/igb_uio/* \ + debian/dpdk-igb-uio-dkms/usr/src/dpdk-igb-uio-$(VERSION) + # Package: dpdk-rte-kni-dkms + mkdir -p debian/dpdk-rte-kni-dkms/usr/src/dpdk-rte-kni-$(VERSION) + cp -a lib/librte_eal/linuxapp/kni/* \ + debian/dpdk-rte-kni-dkms/usr/src/dpdk-rte-kni-$(VERSION) + dh_dkms -V $(VERSION) + dh_python2 + dh_perl + dh_link + dh_compress + dh_fixperms + dh_strip + dh_makeshlibs + dh_shlibdeps + dh_installdeb + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-arch binary-indep |