summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRenato Botelho do Couto <renato@netgate.com>2017-11-30 15:41:22 -0600
committerDamjan Marion <dmarion.lists@gmail.com>2017-12-04 11:36:28 +0000
commite266ea3795747910127e189c5d341b93bb778091 (patch)
tree38f56730e808802e7e6cb2ccc63cc5bec5545885
parent37eba0db4262eb5cb63be8911f1af845b845739b (diff)
Optimize RPM build process
* Remove unused variable OS_VERSION_ID * Do all RPM building in build-root/rpmbuild * Add build-root/rpmbuild to .gitignore * Move redundant code to a target called 'spec' * Copy spec file to SPECS instead of SOURCES * Only set %{_topdir} macro when it's undefined, and because of that remove sed call to delete definition on spec file * Pass _version and _release using --define parameter instead of using sed to add them to .spec * Move rpm files to build-root after build finishes * Add dist tarball to .gitignore Change-Id: I230d60b62914056b353f7f8701d14754b0bf7f8c Signed-off-by: Renato Botelho do Couto <renato@netgate.com>
-rw-r--r--.gitignore2
-rw-r--r--extras/rpm/Makefile37
-rw-r--r--extras/rpm/vpp.spec2
3 files changed, 20 insertions, 21 deletions
diff --git a/.gitignore b/.gitignore
index 2810cb51385..0f597249055 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,7 +13,9 @@
/build-root/deb/.pybuild/
/build-root/*.deb
/build-root/*.rpm
+/build-root/*.tar.xz
/build-root/*.changes
+/build-root/rpmbuild/
/build-root/test-doc/
/build-root/test-cov/
/build-root/python/
diff --git a/extras/rpm/Makefile b/extras/rpm/Makefile
index 5d965f95c21..4bbeab55e60 100644
--- a/extras/rpm/Makefile
+++ b/extras/rpm/Makefile
@@ -13,7 +13,6 @@
ifneq ($(shell uname),Darwin)
OS_ID = $(shell grep '^ID=' /etc/os-release | cut -f2- -d= | sed -e 's/\"//g')
-OS_VERSION_ID= $(shell grep '^VERSION_ID=' /etc/os-release | cut -f2- -d= | sed -e 's/\"//g')
endif
TARBALL=$(shell realpath ../../build-root/vpp-latest.tar.xz)
@@ -21,38 +20,36 @@ TARBALL=$(shell realpath ../../build-root/vpp-latest.tar.xz)
BASENAME=$(shell basename $(TARBALL) | sed -e s/.tar.\*//)
VERSION=$(shell echo $(BASENAME) | cut -f2 -d-)
RELEASE=$(shell echo $(BASENAME) | cut -f3- -d- | sed -e s/-/_/g)
+BR=$(shell realpath $(CURDIR)/../../build-root)
+RPMBUILD=$(BR)/rpmbuild
PC=%
all: RPM
ifeq ($(filter opensuse,$(OS_ID)),$(OS_ID))
-TOPDIR=$(CURDIR)
SPEC_FILE='vpp-suse.spec'
else
-TOPDIR=$(PWD)
SPEC_FILE='vpp.spec'
endif
-srpm:
+spec:
@echo $(TARBALL)
- mkdir -p rpmbuild/{RPMS,SRPMS,BUILD,SOURCES,SPECS}
- cp $(TARBALL) rpmbuild/SOURCES/vpp-$(VERSION)-$(RELEASE).tar.xz
- cp $(SPEC_FILE) rpmbuild/SOURCES
- sed -i '1s/^/$(PC)define _version $(VERSION)\n/' rpmbuild/SOURCES/$(SPEC_FILE)
- sed -i '1s/^/$(PC)define _release $(RELEASE)\n/' rpmbuild/SOURCES/$(SPEC_FILE)
- sed -i '/define _topdir/d' rpmbuild/SOURCES/$(SPEC_FILE)
+ mkdir -p $(RPMBUILD)/{RPMS,SRPMS,BUILD,SOURCES,SPECS}
+ cp $(TARBALL) $(RPMBUILD)/SOURCES/vpp-$(VERSION)-$(RELEASE).tar.xz
+ cp $(SPEC_FILE) $(RPMBUILD)/SPECS
+
+srpm: spec
rpmbuild -bs \
- --define "_topdir rpmbuild" \
- rpmbuild/SOURCES/$(SPEC_FILE)
- mv $$(find rpmbuild/SRPMS -name \*.src.rpm -type f) .
+ --define "_topdir $(RPMBUILD)" \
+ --define "_version $(VERSION)" \
+ --define "_release $(RELEASE)" \
+ $(RPMBUILD)/SPECS/$(SPEC_FILE)
+ mv $$(find $(RPMBUILD)/SRPMS -name \*.src.rpm -type f) $(BR)
-RPM:
- @echo $(TARBALL)
- mkdir -p RPMS SOURCES
- cp $(TARBALL) SOURCES/vpp-$(VERSION)-$(RELEASE).tar.xz
+RPM: spec
rpmbuild -bb \
- --define "_topdir $(TOPDIR)" \
+ --define "_topdir $(RPMBUILD)" \
--define "_version $(VERSION)" \
--define "_release $(RELEASE)" \
- $(SPEC_FILE)
- mv $$(find RPMS -name \*.rpm -type f) .
+ $(RPMBUILD)/SPECS/$(SPEC_FILE)
+ mv $$(find $(RPMBUILD)/RPMS -name \*.rpm -type f) $(BR)
diff --git a/extras/rpm/vpp.spec b/extras/rpm/vpp.spec
index b200df7ee82..6bdecb4de43 100644
--- a/extras/rpm/vpp.spec
+++ b/extras/rpm/vpp.spec
@@ -1,7 +1,7 @@
%bcond_without aesni
+%{!?_topdir:%define _topdir %(pwd)}
%define _vpp_build_dir build-tool-native
%define _unitdir /lib/systemd/system
-%define _topdir %(pwd)
%define _builddir %{_topdir}
%define _tmp_build_dir %{name}-%{_version}.0
%define _mu_build_dir %{_topdir}/%{_tmp_build_dir}/build-root