VPP-498: Prepare vpp RPM packaging for use by downstream distros.
Change spec to add new macros to get rid of relative dir reference and use vpp version. Store version string in .version to store metadata in dist archive. New script to create dist archive. Add dist and wipedist targets to Makefile for builds of source RPMs. Change-Id: I7cf0164f0cb094ec70f3dc323ed7fa2ee82bd902 Signed-off-by: Thomas F Herbert <therbert@redhat.com>
This commit is contained in:

committed by
Damjan Marion

parent
dea6063219
commit
20a29c7b4d
21
Makefile
21
Makefile
@ -167,10 +167,27 @@ define make
|
||||
@make -C $(BR) PLATFORM=$(PLATFORM) TAG=$(1) $(2)
|
||||
endef
|
||||
|
||||
$(BR)/scripts/.version:
|
||||
ifneq ("$(wildcard /etc/redhat-release)","")
|
||||
$(shell $(BR)/scripts/version rpm-string > $(BR)/scripts/.version)
|
||||
else
|
||||
$(shell $(BR)/scripts/version > $(BR)/scripts/.version)
|
||||
endif
|
||||
|
||||
dist: $(BR)/scripts/.version
|
||||
$(MAKE) verstring=$(PLATFORM)-$(shell cat $(BR)/scripts/.version) prefix=$(PLATFORM) distversion
|
||||
|
||||
distversion: $(BR)/scripts/.version
|
||||
$(BR)/scripts/verdist ${BR} ${prefix}-$(shell $(BR)/scripts/version rpm-version) ${verstring}
|
||||
mv $(verstring).tar.gz $(BR)/rpm
|
||||
|
||||
build: $(BR)/.bootstrap.ok
|
||||
$(call make,$(PLATFORM)_debug,vpp-install)
|
||||
|
||||
wipe: $(BR)/.bootstrap.ok
|
||||
wipedist:
|
||||
$(RM) $(BR)/scripts/.version $(BR)/rpm/*.tar.gz
|
||||
|
||||
wipe: wipedist $(BR)/.bootstrap.ok
|
||||
$(call make,$(PLATFORM)_debug,vpp-wipe)
|
||||
|
||||
rebuild: wipe build
|
||||
@ -271,7 +288,7 @@ run-vat:
|
||||
pkg-deb:
|
||||
$(call make,$(PLATFORM),install-deb)
|
||||
|
||||
pkg-rpm:
|
||||
pkg-rpm: dist
|
||||
$(call make,$(PLATFORM),install-rpm)
|
||||
|
||||
ctags: ctags.files
|
||||
|
@ -89,7 +89,11 @@ install-rpm: $(patsubst %,%-find-source,$(ROOT_PACKAGES))
|
||||
$(ROOT_PACKAGES)) || exit 1; \
|
||||
\
|
||||
cd rpm ; \
|
||||
mkdir -p SOURCES ; \
|
||||
if test -f *.tar.gz ; then mv *.tar.gz SOURCES ; fi ; \
|
||||
rpmbuild -bb --define "_topdir $$PWD" --define \
|
||||
"_install_dir $(INSTALL_PREFIX)$(ARCH)" vpp.spec ; \
|
||||
"_install_dir $(INSTALL_PREFIX)$(ARCH)" \
|
||||
--define "_mu_build_root_dir $(MU_BUILD_ROOT_DIR)" \
|
||||
vpp.spec ; \
|
||||
mv $$(find RPMS -name \*.rpm -type f) ..
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
%define _vpp_install_dir ../%{_install_dir}
|
||||
%define _vpp_build_dir ../build-tool-native
|
||||
%define _mu_build_dir %{_mu_build_root_dir}
|
||||
%define _vpp_install_dir %{_install_dir}
|
||||
%define _vpp_build_dir build-tool-native
|
||||
%define _unitdir /lib/systemd/system
|
||||
%define _topdir %(pwd)
|
||||
%define _builddir %{_topdir}
|
||||
@ -27,6 +28,8 @@ Release: %{_release}
|
||||
Requires: vpp-lib = %{_version}-%{_release}, net-tools, pciutils, python
|
||||
BuildRequires: systemd
|
||||
|
||||
Source: %{name}-%{_version}-%{_release}.tar.gz
|
||||
|
||||
%description
|
||||
This package provides VPP executables: vpp, vpp_api_test, vpp_json_test
|
||||
vpp - the vector packet engine
|
||||
@ -76,6 +79,13 @@ Requires: vpp = %{_version}-%{_release}, vpp-lib = %{_version}-%{_release}
|
||||
%description python-api
|
||||
This package contains the python bindings for the vpp api
|
||||
|
||||
%prep
|
||||
%setup -q -n %{name}-%{_version}
|
||||
|
||||
%build
|
||||
make bootstrap
|
||||
make build-release
|
||||
|
||||
%pre
|
||||
# Add the vpp group
|
||||
groupadd -f -r vpp
|
||||
@ -86,22 +96,22 @@ groupadd -f -r vpp
|
||||
#
|
||||
mkdir -p -m755 %{buildroot}%{_bindir}
|
||||
mkdir -p -m755 %{buildroot}%{_unitdir}
|
||||
install -p -m 755 %{_vpp_install_dir}/*/bin/* %{buildroot}%{_bindir}
|
||||
install -p -m 755 %{_vpp_build_dir}/vppapigen/vppapigen %{buildroot}%{_bindir}
|
||||
install -p -m 755 ../../vppapigen/pyvppapigen.py %{buildroot}%{_bindir}
|
||||
install -p -m 755 %{_mu_build_dir}/%{_vpp_install_dir}/*/bin/* %{buildroot}%{_bindir}
|
||||
install -p -m 755 %{_mu_build_dir}/%{_vpp_build_dir}/vppapigen/vppapigen %{buildroot}%{_bindir}
|
||||
install -p -m 755 %{_mu_build_dir}/../vppapigen/pyvppapigen.py %{buildroot}%{_bindir}
|
||||
#
|
||||
# configs
|
||||
#
|
||||
mkdir -p -m755 %{buildroot}/etc/vpp
|
||||
mkdir -p -m755 %{buildroot}/etc/sysctl.d
|
||||
install -p -m 644 vpp.service %{buildroot}%{_unitdir}
|
||||
install -p -m 644 ../../vpp/conf/startup.uiopcigeneric.conf %{buildroot}/etc/vpp/startup.conf
|
||||
install -p -m 644 ../../vpp/conf/80-vpp.conf %{buildroot}/etc/sysctl.d
|
||||
install -p -m 644 %{_mu_build_dir}/rpm/vpp.service %{buildroot}%{_unitdir}
|
||||
install -p -m 644 %{_mu_build_dir}/../vpp/conf/startup.uiopcigeneric.conf %{buildroot}/etc/vpp/startup.conf
|
||||
install -p -m 644 %{_mu_build_dir}/../vpp/conf/80-vpp.conf %{buildroot}/etc/sysctl.d
|
||||
#
|
||||
# libraries
|
||||
#
|
||||
mkdir -p -m755 %{buildroot}%{_libdir}
|
||||
for file in $(find %{_vpp_install_dir}/*/lib* -type f -name '*.so.*.*.*' -print )
|
||||
for file in $(find %{_mu_build_dir}/%{_vpp_install_dir}/*/lib* -type f -name '*.so.*.*.*' -print )
|
||||
do
|
||||
install -p -m 755 $file %{buildroot}%{_libdir}
|
||||
done
|
||||
@ -116,7 +126,7 @@ done
|
||||
|
||||
# Python bindings
|
||||
mkdir -p -m755 %{buildroot}%{python2_sitelib}/vpp_papi
|
||||
for file in $(find %{_vpp_install_dir}/*/lib/python2.7/site-packages/ -type f -print | grep -v pyc | grep -v pyo)
|
||||
for file in $(find %{_mu_build_dir}/%{_vpp_install_dir}/*/lib/python2.7/site-packages/ -type f -print | grep -v pyc | grep -v pyo)
|
||||
do
|
||||
install -p -m 666 $file %{buildroot}%{python2_sitelib}/vpp_papi/
|
||||
done
|
||||
@ -124,7 +134,7 @@ done
|
||||
#
|
||||
# devel
|
||||
#
|
||||
for dir in $(find %{_vpp_install_dir}/*/include/ -maxdepth 0 -type d -print | grep -v dpdk)
|
||||
for dir in $(find %{_mu_build_dir}/%{_vpp_install_dir}/*/include/ -maxdepth 0 -type d -print | grep -v dpdk)
|
||||
do
|
||||
for subdir in $(cd ${dir} && find . -type d -print)
|
||||
do
|
||||
@ -137,16 +147,16 @@ do
|
||||
done
|
||||
|
||||
mkdir -p -m755 %{buildroot}%{python2_sitelib}/jvppgen
|
||||
install -p -m755 ../../vpp-api/java/jvpp/gen/jvpp_gen.py %{buildroot}/usr/bin
|
||||
for i in $(ls ../../vpp-api/java/jvpp/gen/jvppgen/*.py); do
|
||||
install -p -m755 %{_mu_build_dir}/../vpp-api/java/jvpp/gen/jvpp_gen.py %{buildroot}/usr/bin
|
||||
for i in $(ls %{_mu_build_dir}/../vpp-api/java/jvpp/gen/jvppgen/*.py); do
|
||||
install -p -m666 ${i} %{buildroot}%{python2_sitelib}/jvppgen
|
||||
done;
|
||||
|
||||
# sample plugin
|
||||
mkdir -p -m755 %{buildroot}/usr/share/doc/vpp/examples/sample-plugin/sample
|
||||
for file in $(cd %{_vpp_install_dir}/../../sample-plugin && find -type f -print)
|
||||
for file in $(cd %{_mu_build_dir}/%{_vpp_install_dir}/../../sample-plugin && find -type f -print)
|
||||
do
|
||||
install -p -m 644 %{_vpp_install_dir}/../../sample-plugin/$file \
|
||||
install -p -m 644 %{_mu_build_dir}/%{_vpp_install_dir}/../../sample-plugin/$file \
|
||||
%{buildroot}/usr/share/doc/vpp/examples/sample-plugin/$file
|
||||
done
|
||||
|
||||
@ -156,15 +166,15 @@ done
|
||||
#
|
||||
mkdir -p -m755 %{buildroot}/usr/lib/vpp_plugins
|
||||
mkdir -p -m755 %{buildroot}/usr/lib/vpp_api_test_plugins
|
||||
for file in $(cd %{_vpp_install_dir}/plugins/lib64/vpp_plugins && find -type f -print)
|
||||
for file in $(cd %{_mu_build_dir}/%{_vpp_install_dir}/plugins/lib64/vpp_plugins && find -type f -print)
|
||||
do
|
||||
install -p -m 644 %{_vpp_install_dir}/plugins/lib64/vpp_plugins/$file \
|
||||
install -p -m 644 %{_mu_build_dir}/%{_vpp_install_dir}/plugins/lib64/vpp_plugins/$file \
|
||||
%{buildroot}/usr/lib/vpp_plugins/$file
|
||||
done
|
||||
|
||||
for file in $(cd %{_vpp_install_dir}/plugins/lib64/vpp_api_test_plugins && find -type f -print)
|
||||
for file in $(cd %{_mu_build_dir}/%{_vpp_install_dir}/plugins/lib64/vpp_api_test_plugins && find -type f -print)
|
||||
do
|
||||
install -p -m 644 %{_vpp_install_dir}/plugins/lib64/vpp_api_test_plugins/$file \
|
||||
install -p -m 644 %{_mu_build_dir}/%{_vpp_install_dir}/plugins/lib64/vpp_api_test_plugins/$file \
|
||||
%{buildroot}/usr/lib/vpp_api_test_plugins/$file
|
||||
done
|
||||
|
||||
|
31
build-root/scripts/verdist
Executable file
31
build-root/scripts/verdist
Executable file
@ -0,0 +1,31 @@
|
||||
#!/bin/bash
|
||||
|
||||
#
|
||||
# Add version to dist tarball.
|
||||
#
|
||||
BR=$1
|
||||
prefix=$2
|
||||
verstring=$3
|
||||
BASE=`pwd`
|
||||
|
||||
git rev-parse 2> /dev/null
|
||||
if [ $? == 0 ]; then
|
||||
git archive --prefix=${prefix}/ HEAD | gzip -9 > ${verstring}.tar.gz
|
||||
else
|
||||
cd ..
|
||||
tar -c ${prefix} | gzip -9 > ${verstring}.tar.gz
|
||||
cp ${verstring}.tar.gz $BASE
|
||||
cd $BASE
|
||||
fi
|
||||
|
||||
mkdir ${BASE}/tmp
|
||||
cd ${BASE}/tmp
|
||||
tar -xzf ${BASE}/${verstring}.tar.gz
|
||||
rm ${BASE}/${verstring}.tar.gz
|
||||
|
||||
cp ${BR}/scripts/.version ${BASE}/tmp/${prefix}/build-root/scripts
|
||||
tar -c ${prefix} | gzip -9 > ${verstring}.tar.gz
|
||||
mv ${verstring}.tar.gz ${BASE}
|
||||
|
||||
cd ${BASE}
|
||||
rm -rf tmp
|
@ -1,8 +1,32 @@
|
||||
#!/bin/bash
|
||||
|
||||
TAG=$(git describe | cut -d- -f1 | sed -e 's/^v//')
|
||||
ADD=$(git describe | cut -s -d- -f2)
|
||||
CMT=$(git describe --dirty --match 'v*'| cut -s -d- -f3,4)
|
||||
path=$( cd "$(dirname "${BASH_SOURCE}")" ; pwd -P )
|
||||
|
||||
cd "$path"
|
||||
|
||||
git rev-parse 2> /dev/null
|
||||
if [ $? == 0 ]; then
|
||||
vstring=$(git describe)
|
||||
elif [ -f .version ]; then
|
||||
vstring=$(cat .version)
|
||||
else
|
||||
if [ -f ../rpm/*.gz ]; then
|
||||
vstring=$(ls ../rpm/*.gz)
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
TAG=$(echo ${vstring} | cut -d- -f1 | sed -e 's/^v//')
|
||||
ADD=$(echo ${vstring} | cut -s -d- -f2)
|
||||
|
||||
git rev-parse 2> /dev/null
|
||||
if [ $? == 0 ]; then
|
||||
CMT=$(git describe --dirty --match 'v*'| cut -s -d- -f3,4)
|
||||
else
|
||||
CMT=$(echo ${vstring} | cut -s -d- -f3,4)
|
||||
fi
|
||||
CMTR=$(echo $CMT | sed 's/-/_/')
|
||||
|
||||
if [ -n "${BUILD_NUMBER}" ]; then
|
||||
BLD="~b${BUILD_NUMBER}"
|
||||
@ -15,13 +39,16 @@ fi
|
||||
|
||||
if [ "$1" = "rpm-release" ]; then
|
||||
[ -z "${ADD}" ] && echo release && exit
|
||||
CMT=$(git describe --dirty --match 'v*'| cut -s -d- -f3,4 | sed 's/-/_/')
|
||||
echo ${ADD}${CMT:+~${CMT}}${BLD}
|
||||
echo ${ADD}${CMTR:+~${CMTR}}${BLD}
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ -n "${ADD}" ]; then
|
||||
echo ${TAG}-${ADD}${CMT:+~${CMT}}${BLD}
|
||||
else
|
||||
echo ${TAG}
|
||||
if [ -n "${ADD}" ]; then
|
||||
if [ "$1" = "rpm-string" ]; then
|
||||
echo ${TAG}-${ADD}${CMTR:+~${CMTR}}${BLD}
|
||||
else
|
||||
echo ${TAG}-${ADD}${CMT:+~${CMT}}${BLD}
|
||||
fi
|
||||
else
|
||||
echo ${TAG}
|
||||
fi
|
||||
|
Reference in New Issue
Block a user