From a03c3a9318926c1b03d30a6aba6d10d8ba471475 Mon Sep 17 00:00:00 2001
From: Sorin Sbarnea <ssbarnea@redhat.com>
Date: Fri, 29 Nov 2019 10:00:13 +0000
Subject: Enable multi-platform rpm building

- make: fix python detection for multiple interpreters
- make: create generic `package` and `package-install` targets
- build_rpm.sh: move package installation into package-install
- build_rpm.sh: fix dnf/yum detection
- build_rpm.sh: install md2man rpm only on platfroms where is available
- build_rpm.sh: temporary skip packaging docs and debug on rhel-8
- docs: `make package-install`

This change is validated by new CI jobs run by rdoproject. See link
below for result.

Depends-On: https://review.rdoproject.org/r/#/c/23943/
Signed-off-by: Sorin Sbarnea <ssbarnea@redhat.com>
---
 Makefile             | 15 ++++++++++++---
 contrib/build_rpm.sh | 32 ++++++++++++++------------------
 install.md           |  4 +++-
 3 files changed, 29 insertions(+), 22 deletions(-)

diff --git a/Makefile b/Makefile
index 8795dd5ff..bb8b37cfb 100644
--- a/Makefile
+++ b/Makefile
@@ -32,7 +32,9 @@ BUILDTAGS ?= \
 	exclude_graphdriver_devicemapper \
 	seccomp \
 	varlink
-PYTHON ?= $(shell command -v python python3)
+PYTHON ?= $(shell command -v python python3|head -n1)
+PKG_MANAGER ?= $(shell command -v dnf yum|head -n1)
+
 
 GO_BUILD=$(GO) build
 # Go module support: set `-mod=vendor` to use the vendored sources
@@ -543,12 +545,19 @@ vendor-in-container:
 	install.libseccomp.sudo \
 	lint \
 	pause \
+	package \
+	package-install \
 	shell \
 	uninstall \
 	validate \
 	validate.completions \
 	vendor
 
-rpm:
-	@echo "Building rpms ..."
+package:  ## Build rpm packages
+	## TODO(ssbarnea): make version number predictable, it should not change
+	## on each execution, producing duplicates.
+	rm -f  ~/rpmbuild/RPMS/x86_64/* ~/rpmbuild/RPMS/noarch/*
 	./contrib/build_rpm.sh
+
+package-install: package  ## Install rpm packages
+	sudo ${PKG_MANAGER} -y install --allowerasing ${HOME}/rpmbuild/RPMS/*/*.rpm
diff --git a/contrib/build_rpm.sh b/contrib/build_rpm.sh
index ceb4ca176..e41763fa7 100755
--- a/contrib/build_rpm.sh
+++ b/contrib/build_rpm.sh
@@ -6,7 +6,7 @@ pkg_manager=`command -v dnf yum | head -n1`
 echo "Package manager binary: $pkg_manager"
 
 
-if [ $pkg_manager == "*yum" ]; then
+if [[ $pkg_manager == *yum ]]; then
     echo "[virt7-container-common-candidate]
 name=virt7-container-common-candidate
 baseurl=https://cbs.centos.org/repos/virt7-container-common-candidate/x86_64/os/
@@ -28,7 +28,7 @@ declare -a PKGS=(device-mapper-devel \
                 go-compilers-golang-compiler \
                 )
 
-if [ $pkg_manager == "*dnf" ]; then
+if [[ $pkg_manager == *dnf ]]; then
     PKGS+=(python3-devel \
         python3-varlink \
         )
@@ -36,26 +36,22 @@ if [ $pkg_manager == "*dnf" ]; then
     if ! grep -i -q 'Red Hat\|CentOS' /etc/redhat-release; then
         PKGS+=(btrfs-progs-devel)
     fi
-
-fi
-
-# golang-github-cpuguy83-go-md2man is needed for building man pages
-# It is not available by default in CentOS 8 making it optional
-if [ -z "$extra_arg" ]; then
-    PKGS+=(golang-github-cpuguy83-go-md2man)
+    # disable doc until go-md2man rpm becomes available
+    # disable debug to avoid error: Empty %files file ~/rpmbuild/BUILD/libpod-.../debugsourcefiles.list
+    export extra_arg="--without doc --without debug"
+else
+    if ! grep -i -q 'Red Hat\|CentOS' /etc/redhat-release; then
+        PKGS+=(golang-github-cpuguy83-go-md2man)
+    fi
 fi
 
 echo ${PKGS[*]}
 sudo $pkg_manager install -y ${PKGS[*]}
 
 make -f .copr/Makefile
-rpmbuild --rebuild ${extra_arg:-""} podman-*.src.rpm
-
-# Test to make sure the install of the binary works
-sudo $pkg_manager -y install ~/rpmbuild/RPMS/x86_64/podman-*.x86_64.rpm
-
-
-# If we built python/varlink packages, we should test their installs too
-if [ $pkg_manager == "*dnf" ]; then
-    sudo $pkg_manager -y install ~/rpmbuild/RPMS/noarch/python*
+# workaround for https://github.com/containers/libpod/issues/4627
+if [ -d ~/rpmbuild/BUILD ]; then
+    chmod -R +w ~/rpmbuild/BUILD
 fi
+
+rpmbuild --rebuild ${extra_arg:-} podman-*.src.rpm
diff --git a/install.md b/install.md
index bd3732083..218994587 100644
--- a/install.md
+++ b/install.md
@@ -95,7 +95,9 @@ system](https://bodhi.fedoraproject.org/updates/?packages=podman).
 
 **Required**
 
-Fedora, CentOS, RHEL, and related distributions:
+Fedora, CentOS, RHEL, and related distributions you should try to run
+`make package-install` which will install dependencies, build the source,
+produce rpms for the current platform and install them in the end.
 
 ```bash
 sudo yum install -y \
-- 
cgit v1.2.3-54-g00ecf