diff options
author | Damjan Marion <damarion@cisco.com> | 2019-01-18 13:28:22 +0100 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2019-01-20 16:14:24 +0000 |
commit | 4d2f86a1ebcfc952080386603354c4767d2c8825 (patch) | |
tree | d20ed373877bfbf145d3b7ed0773a0cdbfaee32e | |
parent | e67c1d8242fec255e7449fedcbdec5c66bb3f7b2 (diff) |
Rework of debian packaging
Change-Id: Ifede85d3af36f3ee6c6f8f92dcf5db0ed8f1bfeb
Signed-off-by: Damjan Marion <damarion@cisco.com>
Signed-off-by: Dave Barach <dave@barachs.net>
33 files changed, 235 insertions, 603 deletions
@@ -489,7 +489,10 @@ run-vat: @$(SUDO) $(BR)/install-$(PLATFORM)_debug-native/vpp/bin/vpp_api_test pkg-deb: - $(call make,$(PLATFORM),install-deb) + $(call make,$(PLATFORM),vpp-package-deb) + +pkg-deb-debug: + $(call make,$(PLATFORM)_debug,vpp-package-deb) pkg-rpm: dist make -C extras/rpm @@ -575,5 +578,3 @@ ifeq ($(OS_ID)-$(OS_VERSION_ID),ubuntu-18.04) $(call banner,"Running tests") @make COMPRESS_FAILED_TEST_LOGS=yes RETRIES=3 test endif - - diff --git a/build-data/packages/vpp.mk b/build-data/packages/vpp.mk index 2a1b9a77de9..9ce557a9946 100644 --- a/build-data/packages/vpp.mk +++ b/build-data/packages/vpp.mk @@ -44,3 +44,10 @@ vpp_configure = \ #vpp_make_args = --no-print-directory vpp_build = $(CMAKE) --build $(PACKAGE_BUILD_DIR) vpp_install = $(CMAKE) --build $(PACKAGE_BUILD_DIR) -- install | grep -v 'Set runtime path' + +vpp-package-deb: vpp-install + @$(CMAKE) --build $(PACKAGE_BUILD_DIR)/vpp -- package-deb + @find $(PACKAGE_BUILD_DIR) \ + -maxdepth 1 \ + \( -name '*.changes' -o -name '*.deb' -o -name '*.buildinfo' \) \ + -exec mv {} $(CURDIR) \; diff --git a/build-data/platforms.mk b/build-data/platforms.mk index d06720272c6..bc794ff48eb 100644 --- a/build-data/platforms.mk +++ b/build-data/platforms.mk @@ -15,86 +15,3 @@ $(foreach d,$(SOURCE_PATH_BUILD_DATA_DIRS), \ $(eval -include $(d)/platforms/*.mk)) -.PHONY: install-deb -install-deb: $(patsubst %,%-find-source,$(ROOT_PACKAGES)) - @$(BUILD_ENV) ; \ - set -eu$(BUILD_DEBUG) ; \ - $(MAKE) -C $(MU_BUILD_ROOT_DIR) \ - $(patsubst %,%-install, \ - $(ROOT_PACKAGES)) || exit 1; \ - \ - : generate file manifests ; \ - find $(INSTALL_PREFIX)$(ARCH)/*/bin -type f -print \ - | sed -e 's:.*:../& /usr/bin:' | grep -v vppapigen \ - > deb/debian/vpp.install ; \ - \ - : core api definitions ; \ - ./scripts/find-api-core-contents $(INSTALL_PREFIX)$(ARCH) \ - deb/debian/vpp.install ; \ - \ - : need symbolic links in the lib pkg ; \ - find $(INSTALL_PREFIX)$(ARCH)/*/lib* \( -type f -o -type l \) \ - -print | egrep -e '*\.so\.*\.*\.*' \ - | grep -v plugins\/ \ - | sed -e 's:.*:../& /usr/lib/$(MACHINE)-linux-gnu:' \ - > deb/debian/vpp-lib.install ; \ - \ - : vnet api definitions ; \ - ./scripts/find-api-lib-contents $(INSTALL_PREFIX)$(ARCH) \ - deb/debian/vpp-lib.install ; \ - \ - : dev package ; \ - ./scripts/find-dev-contents $(INSTALL_PREFIX)$(ARCH) \ - deb/debian/vpp-dev.install ; \ - \ - : plugins package ; \ - ./scripts/find-plugins-contents $(INSTALL_PREFIX)$(ARCH) \ - deb/debian/vpp-plugins.install ; \ - \ - : vpp-api-lua package ; \ - ./scripts/find-vpp-api-lua-contents $(INSTALL_PREFIX)$(ARCH) \ - deb/debian/vpp-api-lua.install ; \ - \ - : vpp-api-java package ; \ - ./scripts/find-vpp-api-java-contents $(INSTALL_PREFIX)$(ARCH) \ - deb/debian/vpp-api-java.install ; \ - \ - : bin package needs startup config ; \ - echo ../../src/vpp/conf/startup.conf /etc/vpp \ - >> deb/debian/vpp.install ; \ - \ - : and sysctl config ; \ - echo ../../src/vpp/conf/80-vpp.conf /etc/sysctl.d \ - >> deb/debian/vpp.install ; \ - \ - : bash completion for vppctl ; \ - echo ../../src/scripts/vppctl_completion /etc/bash_completion.d \ - >> deb/debian/vpp.install ; \ - \ - : add log directory ; \ - echo /var/log/vpp/ \ - >> deb/debian/vpp.dirs ; \ - \ - : dev package needs a couple of additions ; \ - echo ../$(INSTALL_PREFIX)$(ARCH)/vpp/bin/vppapigen /usr/bin \ - >> deb/debian/vpp-dev.install ; \ - echo ../$(INSTALL_PREFIX)$(ARCH)/vpp/share/vpp/vppapigen_c.py /usr/share/vpp \ - >> deb/debian/vpp-dev.install ; \ - echo ../$(INSTALL_PREFIX)$(ARCH)/vpp/share/vpp/vppapigen_json.py /usr/share/vpp \ - >> deb/debian/vpp-dev.install ; \ - echo ../../extras/japi/java/jvpp/gen/jvpp_gen.py /usr/bin \ - >> deb/debian/vpp-dev.install ; \ - for i in $$(ls ../src/vpp-api/java/jvpp/gen/jvppgen/*.py); do \ - echo ../$${i} /usr/lib/python2.7/dist-packages/jvppgen \ - >> deb/debian/vpp-dev.install; \ - done; \ - \ - : generate changelog; \ - ./scripts/generate-deb-changelog \ - \ - : Go fabricate the actual Debian packages ; \ - ( \ - cd deb && \ - dpkg-buildpackage -us -uc -b \ - ) - diff --git a/build-root/deb/debian/.gitignore b/build-root/deb/debian/.gitignore deleted file mode 100644 index 489f8eb2c33..00000000000 --- a/build-root/deb/debian/.gitignore +++ /dev/null @@ -1,14 +0,0 @@ -changelog -files -*debhelper* -*.substvars -*.install -*.dirs -vpp/ -vpp-dev/ -vpp-lib/ -vpp-dbg/ -vppctl/ -vpp-api-lua/ -vpp-api-java/ -vpp-api-python/ diff --git a/build-root/deb/debian/README.vpp b/build-root/deb/debian/README.vpp deleted file mode 100755 index b343c786823..00000000000 --- a/build-root/deb/debian/README.vpp +++ /dev/null @@ -1,56 +0,0 @@ -Building DEB packages -===================== - -REQUIREMENTS: - You will need a working Internet connection to execute the build, because - the build procedure for the included "dpdk" project attempts to contact the - Internet host "dpdk.org". - -There are three main parts to the process: - a) Stage the source tree so that dpkg-source will recognize its organization - and create a valid DSC source package for you; - b) Ensure that the tools required for building DEB packages are installed; - and - c) Launch the build. - -1) Create, or have on hand, a local clone of the git repository, with no -untracked files or local modifications pending, up-to-date with the branch or -commit reference from which you wish to construct the source release. - -The branch and repository origins will differ based on local conditions. - -Example: -$ git clone -b master ssh://git@example.com:7999/~username/open-vpp - -("-b master" can be omitted since master is the default branch) - -2) Rename the checkout with a version number embedded in its name as is -conventional for code releases. Again, your version number may vary. - -Example: -$ mv open-vpp open-vpp-0.0.0 - -3) Ensure that the dpkg-buildpackage program is installed. - -E.g., - -# apt-get install dpkg-dev - -4) From the PARENT directory of the debian/ directory, run: - -$ cd open-vpp-0.0.0 -$ dpkg-buildpackage -I .git -us -uc - -(The -us and -uc flags omit GPG signatures from the .dsc and .changes files, -respectively. You can add them later, or if you are preparing a signed release -and have the signing key on hand, leave off the flags.) - -5) Get rid of the source directory; you now either have a source package with -which you can re-create it at any time, or there were problems with the build, -and you should go back to your git checkout to fix them. - -$ rm -r open-vpp-0.0.0 - -END - -vim:set ai et sw=4 ts=4 tw=80: diff --git a/build-root/deb/debian/compat b/build-root/deb/debian/compat deleted file mode 100755 index ec635144f60..00000000000 --- a/build-root/deb/debian/compat +++ /dev/null @@ -1 +0,0 @@ -9 diff --git a/build-root/deb/debian/control b/build-root/deb/debian/control deleted file mode 100644 index 4ed42b36e7d..00000000000 --- a/build-root/deb/debian/control +++ /dev/null @@ -1,67 +0,0 @@ -Source: vpp -Section: net -Priority: extra -Maintainer: Cisco OpenVPP Packaging Team <bogus.address@cisco.com> -Build-Depends: debhelper (>= 9), dh-systemd, dh-python, chrpath, python-all -Standards-Version: 3.9.4 - -Package: vpp -Architecture: any -Depends: vpp-lib (= ${source:Version}), ${shlibs:Depends}, ${misc:Depends}, ${python:Depends} -Description: Vector Packet Processing--executables - This package provides VPP executables: vpp, vpp_api_test, vpp_json_test - vpp - the vector packet engine - vpp_api_test - vector packet engine API test tool - vpp_json_test - vector packet engine JSON test tool - -Package: vpp-dbg -Architecture: any -Depends: ${misc:Depends} -Description: Vector Packet Processing--debug symbols - -Package: vpp-dev -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, ${python:Depends} -Description: Vector Packet Processing--development support - This package contains development support files for the VPP libraries - . - -Package: vpp-lib -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Description: Vector Packet Processing--runtime libraries - This package contains the VPP shared libraries, including: - . - vppinfra - foundation library supporting vectors, hashes, bitmaps, pools, and string formatting. - svm - vm library - vlib - vector processing library - vlib-api - binary API library - vnet - network stack library - -Package: vpp-plugins -Architecture: any -Depends: vpp (= ${source:Version}), ${shlibs:Depends}, ${misc:Depends} -Description: Vector Packet Processing--runtime plugins - This package contains VPP plugins - . - -Package: vpp-api-lua -Architecture: any -Depends: ${misc:Depends}, vpp (= ${source:Version}) -Description: VPP LUA API bindings - This package contains VPP lua api bindings - . - -Package: vpp-api-java -Architecture: any -Depends: ${misc:Depends}, vpp (= ${source:Version}) -Description: VPP Java API bindings - This package contains VPP java api bindings - . - -Package: vpp-api-python -Architecture: any -Depends: ${python:Depends}, ${misc:Depends}, vpp (= ${source:Version}) -Description: VPP Python API bindings - This package contains VPP python api bindings - . diff --git a/build-root/deb/debian/rules b/build-root/deb/debian/rules deleted file mode 100755 index 39be1b57e04..00000000000 --- a/build-root/deb/debian/rules +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/make -f -# See debhelper(7) (uncomment to enable) -# output every command that modifies files on the build system. -DH_VERBOSE = 1 - -# see EXAMPLES in dpkg-buildflags(1) and read /usr/share/dpkg/* -DPKG_EXPORT_BUILDFLAGS = 1 -include /usr/share/dpkg/default.mk - -# see FEATURE AREAS in dpkg-buildflags(1) -#export DEB_BUILD_MAINT_OPTIONS = hardening=+all - -# 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 - -export PYBUILD_NAME = vpp-api-python -export PYBUILD_DIR = ../../src/vpp-api/python -export PYBUILD_DESTDIR_python2=debian/vpp-api-python/ -export PYBUILD_DISABLE_python2=test -export PYBUILD_SYSTEM=distutils - -# main packaging script based on dh7 syntax -%: - dh $@ --with systemd,python2 --buildsystem=pybuild - -override_dh_install: - dh_install --exclude .git - ../scripts/remove-rpath . - -override_dh_shlibdeps: - @dh_shlibdeps 2>&1 \ - | { grep -v -e "probably a plugin" -e "similar warnings have been skipped" || true; } - -override_dh_strip: - dh_strip --dbg-package=vpp-dbg diff --git a/build-root/deb/debian/source/format b/build-root/deb/debian/source/format deleted file mode 100755 index 89ae9db8f88..00000000000 --- a/build-root/deb/debian/source/format +++ /dev/null @@ -1 +0,0 @@ -3.0 (native) diff --git a/build-root/deb/debian/vpp-bin.README.Debian b/build-root/deb/debian/vpp-bin.README.Debian deleted file mode 100644 index 192289696ef..00000000000 --- a/build-root/deb/debian/vpp-bin.README.Debian +++ /dev/null @@ -1,53 +0,0 @@ -To run vpp with the debug shell: - -sudo vpp unix interactive - -which will result in a prompt that looks like: - -DBGvpd# - -To give it a spin, we can create a tap interface and try a simple ping -(with trace). - -To create the tap: - -DBGvpd# tap connect foobar -Created tap-0 for Linux tap 'foobar' -DBGvpd# show int - -To assign it an ip address (and 'up' the interface): - -DBGvpd# set int ip address tap-0 192.168.1.1/24 -DBGvpd# set int state tap-0 up - -To turn on packet tracing for the tap interface: -DBGvpd# trace add tapcli-rx 10 - -Now, to set up and try the other end from the unix prompt: -vagrant@vagrant-ubuntu-trusty-64:~$ sudo ip addr add 192.168.1.2/24 dev foobar -vagrant@vagrant-ubuntu-trusty-64:~$ ping -c 3 192.168.1.1 - -To look at the trace, back in the vpp CLI: -DBGvpd# show trace - -And to stop tracing: - -DBGvpd# clear trace - -Other fun things to look at: - -The vlib packet processing graph: -DBGvpd# show vlib graph - -which will produce output like: - - Name Next Previous -ip4-icmp-input error-punt [0] ip4-local - ip4-icmp-echo-request [1] - vpe-icmp4-oam [2] - -To read this, the first column (Name) is the name of the node. -The second column (Next) is the name of the children of that node. -The third column (Previous) is the name of the parents of this node. - -END diff --git a/build-root/deb/debian/vpp.upstart b/build-root/deb/debian/vpp.upstart deleted file mode 100644 index 4a451dd45d0..00000000000 --- a/build-root/deb/debian/vpp.upstart +++ /dev/null @@ -1,20 +0,0 @@ -description "vector packet processing engine" -author "Cisco Systems, Inc <vpp-dev@lists.fd.io>" - -manual - -respawn - -pre-start script - # should be there via dkms, but if not, start anyway - modprobe uio_pci_generic || true -end script - - -script - exec vpp -c /etc/vpp/startup.conf -end script - -post-stop script - rm -f /dev/shm/db /dev/shm/global_vm /dev/shm/vpe-api || true -end script diff --git a/build-root/scripts/csit-test-branch b/build-root/scripts/csit-test-branch deleted file mode 100755 index 23cfae1e1b7..00000000000 --- a/build-root/scripts/csit-test-branch +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -# Copyright (c) 2015 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -echo latest diff --git a/build-root/scripts/find-api-core-contents b/build-root/scripts/find-api-core-contents deleted file mode 100755 index 8e24584be39..00000000000 --- a/build-root/scripts/find-api-core-contents +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -# Copyright (c) 2015 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -for i in $(find ${1}/vpp/share/vpp/api/core -name *.api.json -type f -print); do - echo ../${i} /usr/share/vpp/api/ >> ${2} -done -for i in $(find ${1}/vlib-api -name *.api.json -type f -print); do - echo ../${i} /usr/share/vpp/api/ >> ${2} -done - diff --git a/build-root/scripts/find-api-lib-contents b/build-root/scripts/find-api-lib-contents deleted file mode 100755 index b0742662415..00000000000 --- a/build-root/scripts/find-api-lib-contents +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -# Copyright (c) 2015 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -for i in $(find ${1}/vnet -name *.api.json -type f -print); do - echo ../${i} /usr/share/vpp/api/ >> ${2} -done - diff --git a/build-root/scripts/find-dev-contents b/build-root/scripts/find-dev-contents deleted file mode 100755 index 0f1104591b8..00000000000 --- a/build-root/scripts/find-dev-contents +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash - -# Copyright (c) 2015 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# includes -paths=`find $1/*/include -type f -print | grep -v '/dpdk/include/'` -rm -f $2 - -for path in $paths -do - relpath=`echo $path | sed -e 's:.*/include/::'` - dir=`dirname $relpath` - if [ $dir = "." ] ; then - echo ../$path /usr/include >> $2 - else - echo ../$path /usr/include/$dir >> $2 - fi -done - -# Perf monitor .json tarball -for i in $(find ${1}/vpp/share/vpp/plugins/perfmon -name *.tar.xz -type f -print); do - echo ../${i} /usr/share/vpp/plugins/perfmon >> ${2} -done - -# sample plugin -paths=`(cd ..; find src/examples/sample-plugin -type f -print | grep -v autom4te)` - -for path in $paths -do - relpath=`echo $path | sed -e 's:.*src/examples/::'` - dir=`dirname $relpath` - if [ $dir = "sample-plugin" ] ; then - echo ../../$path /usr/share/doc/vpp/examples/sample-plugin/ >> $2 - else - echo ../../$path \ - /usr/share/doc/vpp/examples/$dir >> $2 - fi -done diff --git a/build-root/scripts/find-vpp-api-java-contents b/build-root/scripts/find-vpp-api-java-contents deleted file mode 100755 index b4cf52fcf58..00000000000 --- a/build-root/scripts/find-vpp-api-java-contents +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -# Copyright (c) 2015 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -rm -f $2 - -for i in $(find ${1}/japi/share/java/ -type f -print); do - echo ../${i} /usr/share/java >> ${2} -done - diff --git a/build-root/scripts/find-vpp-api-lua-contents b/build-root/scripts/find-vpp-api-lua-contents deleted file mode 100755 index 576bbb82562..00000000000 --- a/build-root/scripts/find-vpp-api-lua-contents +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -# Copyright (c) 2015 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#i for now put everything into examples directory - -echo ../../src/vpp-api/lua /usr/share/vpp/examples > ${2} - diff --git a/build-root/scripts/find-vpp-api-python-contents b/build-root/scripts/find-vpp-api-python-contents deleted file mode 100755 index f6de6f2fffa..00000000000 --- a/build-root/scripts/find-vpp-api-python-contents +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -# Copyright (c) 2015 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -rm -f $2 - -for i in $(find ${1}/vpp/lib/python2.7/site-packages/ -type f -print); do - echo ../${i} /usr/lib/python2.7/site-packages/vpp_papi >> ${2} -done - diff --git a/build-root/scripts/generate-deb-changelog b/build-root/scripts/generate-deb-changelog deleted file mode 100755 index d3112f778ac..00000000000 --- a/build-root/scripts/generate-deb-changelog +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash - -# Copyright (c) 2015 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -CHANGELOG=deb/debian/changelog -DIST=unstable -FIRST=1 - -print_changelog_item() { - DATE=$(git log -1 --format=%cD ${TAG}) - DEBFULLNAME=$(git log -1 --format=%an ${TAG}) - DEBEMAIL=$(git log -1 --format=%ae ${TAG}) - - if [ ${FIRST} = 0 ]; then echo >> ${CHANGELOG}; fi - FIRST=0 - - echo "vpp (${VER}) ${DIST}; urgency=low" >> ${CHANGELOG} - echo >> ${CHANGELOG} - echo "${DESC}" >> ${CHANGELOG} - echo >> ${CHANGELOG} - echo " -- ${DEBFULLNAME} <${DEBEMAIL}> ${DATE}" >> ${CHANGELOG} -} - -VER=$(scripts/version) -TAG=HEAD -ADDS=$(echo ${VER} | sed -e 's/~.*//'| cut -s -d- -f2) - -rm -f ${CHANGELOG} - -if [ -n "${ADDS}" ]; then - DESC=" * includes ${ADDS} commits after $(echo ${VER}| cut -d- -f1) release" - print_changelog_item -fi - -for TAG in $(git tag -l 'v[0-9][0-9].[0-9][0-9]' | sort -r ); do - VER=$(echo ${TAG}| sed -e 's/^v//') - DESC=$(git tag -l -n20 ${TAG} | tail -n+2 | sed -e 's/^ */ /') - print_changelog_item -done diff --git a/build-root/scripts/remove-rpath b/build-root/scripts/remove-rpath index 3e20b06dbfa..f7c05f1e908 100755..120000 --- a/build-root/scripts/remove-rpath +++ b/build-root/scripts/remove-rpath @@ -1,37 +1 @@ -#!/bin/bash - -# Copyright (c) 2015 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -if [ -z $1 ]; then - echo "Please specify path" - exit 1 -fi - -which chrpath &> /dev/null - -if [ $? -ne 0 ] ; then - echo "Please install chrpath tool" - exit 1 -fi - -libs=$(find $1 -type f -name \*.so\*) -execs=$(find $1 -type f -path \*/bin/\* ) - -for i in $libs $execs; do - chrpath $i 2> /dev/null | grep -q build-root - if [ $? -eq 0 ] ; then - chrpath -d $i - fi -done - +../../src/scripts/remove-rpath
\ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 09d132ad2ca..05ecd0b4e4b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -97,7 +97,7 @@ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") find_package(OpenSSL REQUIRED) set(SUBDIRS vppinfra svm vlib vlibmemory vlibapi vnet vpp vat vcl plugins - vpp-api tools/vppapigen tools/g2 tools/elftool tools/perftool cmake + vpp-api tools/vppapigen tools/g2 tools/elftool tools/perftool cmake pkg ) elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin") set(SUBDIRS vppinfra) diff --git a/src/cmake/plugin.cmake b/src/cmake/plugin.cmake index 1cff910db5f..af3033f0cbd 100644 --- a/src/cmake/plugin.cmake +++ b/src/cmake/plugin.cmake @@ -21,7 +21,7 @@ macro(add_vpp_plugin name) set(plugin_name ${name}_plugin) set(api_includes) if(NOT PLUGIN_COMPONENT) - set(PLUGIN_COMPONENT vpp-plugin-misc) + set(PLUGIN_COMPONENT vpp-plugin-core) endif() if(NOT PLUGIN_DEV_COMPONENT) if(NOT VPP_EXTERNAL_PROJECT) @@ -92,4 +92,3 @@ macro(add_vpp_plugin name) COMPONENT ${PLUGIN_COMPONENT} ) endmacro() - diff --git a/src/pkg/CMakeLists.txt b/src/pkg/CMakeLists.txt new file mode 100644 index 00000000000..a725e668405 --- /dev/null +++ b/src/pkg/CMakeLists.txt @@ -0,0 +1,43 @@ +# Copyright (c) 2019 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +get_cmake_property(VPP_COMPONENTS COMPONENTS) +string(REPLACE ";" " " VPP_COMPONENTS "${VPP_COMPONENTS}") + +execute_process( + COMMAND date -R + OUTPUT_VARIABLE TIMESTAMP + OUTPUT_STRIP_TRAILING_WHITESPACE +) + +foreach(f rules changelog) + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/debian/${f}.in + ${CMAKE_BINARY_DIR}/debian/${f} + ) +endforeach() + +foreach(f control copyright vpp.postinst vpp.postrm vpp.postinst vpp.service) + file(COPY + ${CMAKE_CURRENT_SOURCE_DIR}/debian/${f} + DESTINATION ${CMAKE_BINARY_DIR}/debian + ) +endforeach() + +file(WRITE ${CMAKE_BINARY_DIR}/debian/compat "9\n") + +add_custom_target(package-deb + COMMENT "Building .deb packages..." + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + COMMAND "dpkg-buildpackage" "-us" "-uc" "-b" +) diff --git a/src/pkg/debian/changelog.in b/src/pkg/debian/changelog.in new file mode 100644 index 00000000000..4d9b87ab553 --- /dev/null +++ b/src/pkg/debian/changelog.in @@ -0,0 +1,6 @@ +vpp (@VPP_VERSION@) unstable; urgency=low + + * no description + + -- fd.io VPP <vpp-dev@fd.io> @TIMESTAMP@ + diff --git a/src/pkg/debian/control b/src/pkg/debian/control new file mode 100644 index 00000000000..c9d4c4642de --- /dev/null +++ b/src/pkg/debian/control @@ -0,0 +1,75 @@ +Source: vpp +Section: net +Priority: extra +Maintainer: fd.io VPP Packaging Team <vpp-dev@fd.io> +Build-Depends: debhelper (>= 9), + dh-systemd, + dh-python, + python-all +Standards-Version: 3.9.4 + +Package: vpp +Architecture: any +Depends: libvppinfra (= ${source:Version}), + ${shlibs:Depends}, + ${misc:Depends}, + ${python:Depends} +Description: Vector Packet Processing--executables + This package provides VPP executables: vpp, vpp_api_test, vpp_json_test + vpp - the vector packet engine + vpp_api_test - vector packet engine API test tool + vpp_json_test - vector packet engine JSON test tool + +Package: vpp-dbg +Architecture: any +Depends: ${misc:Depends} +Description: Vector Packet Processing--debug symbols + +Package: vpp-dev +Architecture: any +Depends: libvppinfra-dev (= ${source:Version}), + ${misc:Depends}, + ${python:Depends} +Description: Vector Packet Processing--development support + This package contains development support files for the VPP libraries + . + +Package: libvppinfra +Architecture: any +Depends: ${shlibs:Depends}, + ${misc:Depends} +Description: Vector Packet Processing--runtime libraries + This package contains the VPP shared libraries, including: + . + +Package: libvppinfra-dev +Architecture: any +Depends: ${misc:Depends} +Description: Vector Packet Processing--runtime libraries + This package contains the VPP shared libraries, including: + . + +Package: vpp-plugin-core +Architecture: any +Depends: vpp (= ${source:Version}), + ${misc:Depends} +Description: Vector Packet Processing--runtime core plugins + This package contains VPP core plugins + . + +Package: vpp-plugin-dpdk +Architecture: any +Depends: vpp (= ${source:Version}), + ${misc:Depends} +Description: Vector Packet Processing--runtime dpdk plugin + This package contains the VPP dpdk plugin + . + +Package: vpp-api-python +Architecture: any +Depends: vpp (= ${source:Version}), + ${python2:Depends}, + ${misc:Depends} +Description: VPP Python API bindings + This package contains VPP python api bindings + . diff --git a/build-root/deb/debian/copyright b/src/pkg/debian/copyright index f9775c158f9..f9775c158f9 100644 --- a/build-root/deb/debian/copyright +++ b/src/pkg/debian/copyright diff --git a/src/pkg/debian/rules.in b/src/pkg/debian/rules.in new file mode 100755 index 00000000000..4d2bb408116 --- /dev/null +++ b/src/pkg/debian/rules.in @@ -0,0 +1,45 @@ +#!/usr/bin/make -f +# See debhelper(7) (uncomment to enable) +# output every command that modifies files on the build system. +DH_VERBOSE = 1 + +# see EXAMPLES in dpkg-buildflags(1) and read /usr/share/dpkg/* +DPKG_EXPORT_BUILDFLAGS = 1 +include /usr/share/dpkg/default.mk + +export PYBUILD_NAME = vpp-api-python +export PYBUILD_DIR = @CMAKE_SOURCE_DIR@/vpp-api/python +export PYBUILD_DESTDIR_python2=debian/vpp-api-python/ +export PYBUILD_DISABLE_python2=test +export PYBUILD_SYSTEM=distutils + +# main packaging script based on dh7 syntax +%: + dh $@ --with systemd,python2 --buildsystem=pybuild + +override_dh_shlibdeps: + @dh_shlibdeps -X_plugin 2>&1 \ + | { grep -v -e "probably a plugin" || true; } + +override_dh_strip: + dh_strip --dbg-package=vpp-dbg + +DEB_HOST_MULTIARCH = $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) + +override_dh_install: + for c in @VPP_COMPONENTS@; do \ + @CMAKE_COMMAND@ \ + -D CMAKE_INSTALL_CONFIG_NAME=@CMAKE_BUILD_TYPE@ \ + -D CMAKE_INSTALL_COMPONENT=$$c \ + -D CMAKE_INSTALL_PREFIX=@CMAKE_BINARY_DIR@/debian/$$c \ + -P @CMAKE_BINARY_DIR@/cmake_install.cmake ; \ + if [ -d debian/$$c/lib ] ; then \ + mv debian/$$c/lib debian/$$c/$(DEB_HOST_MULTIARCH) ; \ + mkdir -p debian/$$c/usr/lib ; \ + mv debian/$$c/$(DEB_HOST_MULTIARCH) debian/$$c/usr/lib ; \ + fi ; \ + if [ -d debian/$$c/bin ] ; then \ + mv debian/$$c/bin debian/$$c/usr/bin ; \ + fi ; \ + @CMAKE_SOURCE_DIR@/scripts/remove-rpath debian/$$c ; \ + done diff --git a/build-root/deb/debian/vpp.postinst b/src/pkg/debian/vpp.postinst index 78fcac226a8..78fcac226a8 100644 --- a/build-root/deb/debian/vpp.postinst +++ b/src/pkg/debian/vpp.postinst diff --git a/build-root/deb/debian/vpp.postrm b/src/pkg/debian/vpp.postrm index 24b4842fd0a..24b4842fd0a 100644 --- a/build-root/deb/debian/vpp.postrm +++ b/src/pkg/debian/vpp.postrm diff --git a/build-root/deb/debian/vpp.preinst b/src/pkg/debian/vpp.preinst index d33cacfc3fa..d33cacfc3fa 100644 --- a/build-root/deb/debian/vpp.preinst +++ b/src/pkg/debian/vpp.preinst diff --git a/build-root/deb/debian/vpp.service b/src/pkg/debian/vpp.service index 2e86941de8b..2e86941de8b 100644 --- a/build-root/deb/debian/vpp.service +++ b/src/pkg/debian/vpp.service diff --git a/build-root/scripts/find-plugins-contents b/src/scripts/remove-rpath index 9b39cc88e60..3e20b06dbfa 100755 --- a/build-root/scripts/find-plugins-contents +++ b/src/scripts/remove-rpath @@ -13,16 +13,25 @@ # See the License for the specific language governing permissions and # limitations under the License. -rm -f $2 +if [ -z $1 ]; then + echo "Please specify path" + exit 1 +fi -for i in ${1}/vpp/lib/vpp_plugins/*.so; do - echo ../${i} /usr/lib/vpp_plugins >> ${2} -done +which chrpath &> /dev/null -for i in ${1}/vpp/lib/vpp_api_test_plugins/*.so; do - echo ../${i} /usr/lib/vpp_api_test_plugins >> ${2} -done +if [ $? -ne 0 ] ; then + echo "Please install chrpath tool" + exit 1 +fi -for i in $(find ${1}/plugins ${1}/vpp/share/vpp/api/plugins/ -name *.api.json -type f -print); do - echo ../${i} /usr/share/vpp/api/ >> ${2} +libs=$(find $1 -type f -name \*.so\*) +execs=$(find $1 -type f -path \*/bin/\* ) + +for i in $libs $execs; do + chrpath $i 2> /dev/null | grep -q build-root + if [ $? -eq 0 ] ; then + chrpath -d $i + fi done + diff --git a/src/vat/main.c b/src/vat/main.c index 295ccec2515..a5421140fb3 100644 --- a/src/vat/main.c +++ b/src/vat/main.c @@ -15,6 +15,7 @@ #include "vat.h" #include "plugin.h" #include <signal.h> +#include <limits.h> vat_main_t vat_main; @@ -283,6 +284,37 @@ setup_signal_handlers (void) } } +static void +vat_find_plugin_path () +{ + extern char *vat_plugin_path; + char *p, path[PATH_MAX]; + int rv; + u8 *s; + + /* find executable path */ + if ((rv = readlink ("/proc/self/exe", path, PATH_MAX - 1)) == -1) + return; + + /* readlink doesn't provide null termination */ + path[rv] = 0; + + /* strip filename */ + if ((p = strrchr (path, '/')) == 0) + return; + *p = 0; + + /* strip bin/ */ + if ((p = strrchr (path, '/')) == 0) + return; + *p = 0; + + s = format (0, "%s/lib/" CLIB_TARGET_TRIPLET "/vpp_api_test_plugins:" + "%s/lib/vpp_api_test_plugins", path, path); + vec_add1 (s, 0); + vat_plugin_path = (char *) s; +} + int main (int argc, char **argv) { @@ -309,6 +341,8 @@ main (int argc, char **argv) vec_validate (vam->cmd_reply, 0); vec_reset_length (vam->cmd_reply); + vat_find_plugin_path (); + unformat_init_command_line (a, argv); while (unformat_check_input (a) != UNFORMAT_END_OF_INPUT) |