aboutsummaryrefslogtreecommitdiff
path: root/1-build-srpms.sh
blob: 3f7cfb8db946ca0b966d07b4336beff58326cc7b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#!/bin/sh
# File: 1-build-srpms.sh
# Author: bgstack15
# SPDX-License-Identifier: GPL-3.0
# Startdate: 2022-05-17 10:20
# Title: Build SRPMs for radicale3 for el7
# Project: build-radicale-centos7
# Purpose: Build srpms for upload to copr
# History:
# Improve:
# Reference:
#    https://unix.stackexchange.com/questions/675833/how-can-i-duplicate-a-line-and-search-and-replace-on-the-duplicate-with-sed/675837#675837
# Dependencies:
#    git
#    Run this on CentOS 7
#    radicale-proxy-ldap-auth-fn.js.patch from this repo
# Documentation:
#    README.md

SCRIPTDIR="$( dirname "$(readlink -f "${0}" )" )"

. "${SCRIPTDIR}/lib.sh"

# If you actually compile these packages locally, you need to install these packages.
if test -n "${BUILD_PACKAGES}" ;
then
   need_packages=
   rpm -q python36-bcrypt 1>/dev/null || need_packages="${need_packages} python36-bcrypt"
   rpm -q python36-dateutil 1>/dev/null || need_packages="${need_packages} python36-dateutil"
   test -n "${need_packages}" && sudo yum install ${need_packages}
fi

mkdir -p "${WORKDIR}"
cd "${WORKDIR}"

# need python3-coverage
git clone https://src.fedoraproject.org/rpms/python-coverage python-coverage
( cd python-coverage ; git checkout -- *.spec ; git checkout "${FEDORA_VER}" ; cp -pf * ~/rpmbuild/SOURCES/ ; rpmbuild -bs *.spec )
# generated ~/rpmbuild/SRPMS/python-coverage*.src.rpm

# need python3-nose
git clone https://src.fedoraproject.org/rpms/python-nose python-nose
( cd python-nose ; git checkout -- *.spec ; git checkout "${FEDORA_VER}" ; cp -pf * ~/rpmbuild/SOURCES/ ; rpmbuild -bs *.spec )

# need python36-passlib
# This needs python36-bcrypt when compiling, for some inexplicable reason.
git clone https://src.fedoraproject.org/rpms/python-passlib python-passlib
(
   cd python-passlib
   git checkout -- *.spec ; git checkout "${FEDORA_VER}"
   sed -i -r python-passlib.spec \
      -e '/BuildRequires.*nose/aBuildRequires: python36-bcrypt'
   cp -pf * ~/rpmbuild/SOURCES/ ;
   rpmbuild -bs *.spec
)

# need a newer version of python36-dateutil than what CentOS 7 provides
git clone https://src.fedoraproject.org/rpms/python-dateutil python-dateutil
(
   cd python-dateutil
   git checkout -- *.spec ; git checkout "${FEDORA_VER}"
   # Disable tests. Fix some python3 to python36 names. Disable docs which are needlessly complicated.
   sed -i -r python-dateutil.spec \
      -e '/%bcond.*tests/s/_without/_with/' \
      -e '/^\w*Requires:.*(sphinx|setuptools|freezegun|hypothesis|pytest|six)/s/python3-/python36-/;' \
      -e '/docs.*html/{s/^/#/;s/%/%%/g;};' ;
   cp -pf * ~/rpmbuild/SOURCES/ ;
   rpmbuild -bs *.spec ;
)

# need python36-vobject to use adjusted dateutil package name, and also add buildrequires: python36-six
# This needs python36-dateutil when compiling
git clone https://src.fedoraproject.org/rpms/python-vobject python-vobject
(
   cd python-vobject ;
   git checkout -- *.spec ; git checkout "${FEDORA_VER}"
   sed -i -r python-vobject.spec \
      -e '/^\w*Requires:.*(dateutil)/s/python3-/python36-/;' \
      -e '/^Summary/aBuildRequires:      python36-six\' \
      -e 'Requires:       python36-six'
   cp -pf * ~/rpmbuild/SOURCES/ ;
   rpmbuild -bs *.spec ;
)

# and now prepare radicale3
git clone https://src.fedoraproject.org/rpms/radicale radicale
(
   cd radicale ;
   git checkout -- *.spec ; git checkout "${FEDORA_VER}"
   sed -i -r radicale.spec \
      -e '/^(\w*Requires(\(\w*\))?:|%package|%post|%files|#echo|#\/usr|%description|%\{\?python_provide|Conflicts|Suggests:|Recommends:)/{s/python3-/\%{pyver}-/g;}' \
      -e '/^sed/s/python3/%{pyver}/g;' \
      -e '/^SELinux|^httpd example/s/Python3/%{pyver}/;' \
      -e '/^\w*Requires(\(\w*\))?:/{s/policycoreutils-python-utils/policycoreutils-python/g;};' \
      -e 's/^(Suggests|Recommends):/Requires:/;' \
      -e '/%define.*radicale_major/a# stackrpms, 5\' \
         -e '%define pyver python3\' \
         -e '%if 0%{?centos}\' \
         -e '%define pyver python36\' \
         -e '%endif' \
      -e '/^%autosetup/s/$/ -p1/;' \
      -e '/Patch0:/aPatch1:           %{name}-proxy-ldap-auth-fn.js.patch' \
      -e '/BuildRequires:.*(defusedxml|passlib|dateutil|vobject)/{p;s/^BuildR/R/;}'
   cp -pf "${SCRIPTDIR}/"*.patch ~/rpmbuild/SOURCES/
   cp -pf * ~/rpmbuild/SOURCES/
   rpmbuild -bs *.spec ;
)

# Next steps: run script 2
bgstack15