Optimize RPM build process 84/9684/2
authorRenato Botelho do Couto <renato@netgate.com>
Thu, 30 Nov 2017 21:41:22 +0000 (15:41 -0600)
committerDamjan Marion <dmarion.lists@gmail.com>
Mon, 4 Dec 2017 11:36:28 +0000 (11:36 +0000)
* 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>
.gitignore
extras/rpm/Makefile
extras/rpm/vpp.spec

index 2810cb5..0f59724 100644 (file)
@@ -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/
index 5d965f9..4bbeab5 100644 (file)
@@ -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)
index b200df7..6bdecb4 100644 (file)
@@ -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