Merge ~raharper/cloud-init:fix/fedora-build into cloud-init:master
- Git
- lp:~raharper/cloud-init
- fix/fedora-build
- Merge into master
| Status: | Work in progress |
|---|---|
| Proposed branch: | ~raharper/cloud-init:fix/fedora-build |
| Merge into: | cloud-init:master |
| Diff against target: |
476 lines (+156/-43) 5 files modified
packages/brpm (+15/-7) packages/pkg-deps.json (+23/-10) packages/redhat/cloud-init.spec.in (+59/-12) tools/read-dependencies (+34/-1) tools/run-container (+25/-13) |
| Related bugs: |
| Reviewer | Review Type | Date Requested | Status |
|---|---|---|---|
| Chad Smith | Needs Fixing | ||
| Server Team CI bot | continuous-integration | Needs Fixing | |
| Dan Watkins | Needs Information | ||
|
Review via email:
|
|||
Commit message
update redhat specfile and tools to support python2 and python3
Note, this needs to rebase after the cloud-init-
Description of the change
| Server Team CI bot (server-team-bot) wrote : | # |
FAILED: Continuous integration, rev:4cbd01cfd7e
https:/
Executed test runs:
SUCCESS: Checkout
FAILED: Unit & Style Tests
Click here to trigger a rebuild:
https:/
| Ryan Harper (raharper) wrote : | # |
srpms from this branch now pass all builders on copr
https:/
- bd9d4b4... by Ryan Harper
-
drop fedora specific spec file
| Server Team CI bot (server-team-bot) wrote : | # |
PASSED: Continuous integration, rev:8aa87376f13
https:/
Executed test runs:
SUCCESS: Checkout
SUCCESS: Unit & Style Tests
SUCCESS: Ubuntu LTS: Build
SUCCESS: Ubuntu LTS: Integration
IN_PROGRESS: Declarative: Post Actions
Click here to trigger a rebuild:
https:/
| Dan Watkins (oddbloke) wrote : | # |
Overall this looks good, thanks! Just a few inline comments/questions.
| Ryan Harper (raharper) wrote : | # |
Thanks for the review; this needs some testing and I can see if we can keep the install section the same save the interpreter we run.
| Dan Watkins (oddbloke) wrote : | # |
Thanks for the responses, Ryan. The two outstanding issues I believe we have are: ensuring we haven't broken RH builds, and working out if we can/should run setup.py for Python 3 RPM builds.
| Dan Watkins (oddbloke) wrote : | # |
Oh, yep, just saw your summary comment; we are in agreement. :)
- cab1663... by Ryan Harper
-
Consolidate %install section by defining python_cmd value and always passing variant
- 2b5163b... by Ryan Harper
-
setup.py takes --distro for variant
- 12efb6d... by Ryan Harper
-
setup.py is awkward on arg parsing for --distro
| Server Team CI bot (server-team-bot) wrote : | # |
FAILED: Continuous integration, rev:12efb6d3e6d
https:/
Executed test runs:
FAILED: Checkout
Click here to trigger a rebuild:
https:/
| Chad Smith (chad.smith) wrote : | # |
I think we may have to solve the buildrequires_py* om the specfile and possibly how to copy with httpretty on centos8 for the package name changes?
| Ryan Harper (raharper) wrote : | # |
Thanks. I've a few questions for clarification.
Unmerged commits
- 12efb6d... by Ryan Harper
-
setup.py is awkward on arg parsing for --distro
- 2b5163b... by Ryan Harper
-
setup.py takes --distro for variant
- cab1663... by Ryan Harper
-
Consolidate %install section by defining python_cmd value and always passing variant
- bd9d4b4... by Ryan Harper
-
drop fedora specific spec file
- 5336b5f... by Ryan Harper
-
drop devel deps, fetch os_variant and pass to render-cloudcfg
- 8b97cb8... by Ryan Harper
-
have build env pick whether it uses python3 or not
- 1045123... by Ryan Harper
-
add --python2 param to brpm call if target build env is using py2
- d952e8d... by Ryan Harper
-
fix py3 macros and sitelib paths
- 25c3eeb... by Ryan Harper
-
add pyver to template
- 88d85a1... by Ryan Harper
-
work out how to pass variant and skip build for py3
Preview Diff
| 1 | diff --git a/packages/brpm b/packages/brpm |
| 2 | index a154ef2..502cfb4 100755 |
| 3 | --- a/packages/brpm |
| 4 | +++ b/packages/brpm |
| 5 | @@ -42,13 +42,14 @@ def run_helper(helper, args=None, strip=True): |
| 6 | return stdout |
| 7 | |
| 8 | |
| 9 | -def read_dependencies(distro, requirements_file='requirements.txt'): |
| 10 | +def read_dependencies(distro, pyver, requirements_file='requirements.txt'): |
| 11 | """Returns the Python package depedencies from requirements.txt files. |
| 12 | |
| 13 | @returns a tuple of (requirements, test_requirements) |
| 14 | """ |
| 15 | pkg_deps = run_helper( |
| 16 | - 'read-dependencies', args=['--distro', distro]).splitlines() |
| 17 | + 'read-dependencies', args=['--distro', distro, |
| 18 | + '--python-version', pyver]).splitlines() |
| 19 | test_deps = run_helper( |
| 20 | 'read-dependencies', args=[ |
| 21 | '--requirements-file', 'test-requirements.txt', |
| 22 | @@ -83,9 +84,10 @@ def generate_spec_contents(args, version_data, tmpl_fn, top_dir, arc_fn): |
| 23 | rpm_upstream_version = version_data['version'] |
| 24 | subs['rpm_upstream_version'] = rpm_upstream_version |
| 25 | |
| 26 | - deps, test_deps = read_dependencies(distro=args.distro) |
| 27 | - subs['buildrequires'] = deps + test_deps |
| 28 | - subs['requires'] = deps |
| 29 | + for pyver in ['2', '3']: |
| 30 | + deps, test_deps = read_dependencies(distro=args.distro, pyver=pyver) |
| 31 | + subs['buildrequires_py%s' % pyver] = deps + test_deps |
| 32 | + subs['requires_py%s' % pyver] = deps |
| 33 | |
| 34 | if args.boot == 'sysvinit': |
| 35 | subs['sysvinit'] = True |
| 36 | @@ -108,7 +110,7 @@ def main(): |
| 37 | parser.add_argument("-d", "--distro", dest="distro", |
| 38 | help="select distro (default: %(default)s)", |
| 39 | metavar="DISTRO", default='redhat', |
| 40 | - choices=('redhat', 'suse')) |
| 41 | + choices=('fedora', 'redhat', 'suse')) |
| 42 | parser.add_argument('--srpm', |
| 43 | help='Produce a source rpm', |
| 44 | action='store_true') |
| 45 | @@ -155,6 +157,12 @@ def main(): |
| 46 | 'make-tarball', ['--long', '--output=' + real_archive_fn]) |
| 47 | print("Archived the code in %r" % (real_archive_fn)) |
| 48 | |
| 49 | + if args.distro == "fedora": |
| 50 | + args.distro = "redhat" |
| 51 | + args.variant = "fedora" |
| 52 | + else: |
| 53 | + args.variant = args.distro |
| 54 | + |
| 55 | # Form the spec file to be used |
| 56 | tmpl_fn = util.abs_join(find_root(), 'packages', |
| 57 | args.distro, 'cloud-init.spec.in') |
| 58 | @@ -189,7 +197,7 @@ def main(): |
| 59 | for rpm_fn in globs: |
| 60 | tgt_fn = util.abs_join(os.getcwd(), os.path.basename(rpm_fn)) |
| 61 | shutil.move(rpm_fn, tgt_fn) |
| 62 | - print("Wrote out %s package %r" % (args.distro, tgt_fn)) |
| 63 | + print("Wrote out %s package %r" % (args.variant, tgt_fn)) |
| 64 | finally: |
| 65 | if workdir is not None: |
| 66 | shutil.rmtree(workdir) |
| 67 | diff --git a/packages/pkg-deps.json b/packages/pkg-deps.json |
| 68 | index 72409dd..0470187 100644 |
| 69 | --- a/packages/pkg-deps.json |
| 70 | +++ b/packages/pkg-deps.json |
| 71 | @@ -24,32 +24,43 @@ |
| 72 | }, |
| 73 | "redhat" : { |
| 74 | "build-requires" : [ |
| 75 | - "python-devel", |
| 76 | - "python-setuptools" |
| 77 | + "xfsprogs", |
| 78 | + "rpm-build" |
| 79 | ], |
| 80 | "renames" : { |
| 81 | + "httpretty" : { |
| 82 | + "3" : "python3-httpretty" |
| 83 | + }, |
| 84 | "jinja2" : { |
| 85 | - "3" : "python34-jinja2" |
| 86 | + "3" : "python3-jinja2" |
| 87 | }, |
| 88 | "jsonschema" : { |
| 89 | - "3" : "python34-jsonschema" |
| 90 | + "3" : "python3-jsonschema" |
| 91 | + }, |
| 92 | + "prettytable" : { |
| 93 | + "3": "python3-prettytable" |
| 94 | }, |
| 95 | "pyflakes" : { |
| 96 | "2" : "pyflakes", |
| 97 | - "3" : "python34-pyflakes" |
| 98 | + "3" : "python3-pyflakes" |
| 99 | }, |
| 100 | "pyyaml" : { |
| 101 | "2" : "PyYAML", |
| 102 | - "3" : "python34-PyYAML" |
| 103 | + "3" : "python3-PyYAML" |
| 104 | }, |
| 105 | "pyserial" : { |
| 106 | - "2" : "pyserial" |
| 107 | + "2" : "pyserial", |
| 108 | + "3" : "python3-pyserial" |
| 109 | }, |
| 110 | "requests" : { |
| 111 | - "3" : "python34-requests" |
| 112 | + "3" : "python3-requests" |
| 113 | }, |
| 114 | + "setuptools" : { |
| 115 | + "2" : "python-setuptools", |
| 116 | + "3" : "python3-setuptools" |
| 117 | + }, |
| 118 | "six" : { |
| 119 | - "3" : "python34-six" |
| 120 | + "3" : "python3-six" |
| 121 | } |
| 122 | }, |
| 123 | "requires" : [ |
| 124 | @@ -59,7 +70,9 @@ |
| 125 | "procps", |
| 126 | "rsyslog", |
| 127 | "shadow-utils", |
| 128 | - "sudo" |
| 129 | + "sudo", |
| 130 | + "util-linux", |
| 131 | + "xfsprogs" |
| 132 | ] |
| 133 | }, |
| 134 | "suse" : { |
| 135 | diff --git a/packages/redhat/cloud-init.spec.in b/packages/redhat/cloud-init.spec.in |
| 136 | index 057a578..0746bcd 100644 |
| 137 | --- a/packages/redhat/cloud-init.spec.in |
| 138 | +++ b/packages/redhat/cloud-init.spec.in |
| 139 | @@ -2,6 +2,8 @@ |
| 140 | %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} |
| 141 | |
| 142 | %define use_systemd (0%{?fedora} && 0%{?fedora} >= 18) || (0%{?rhel} && 0%{?rhel} >= 7) |
| 143 | +%define use_python3 (0%{?fedora} && 0%{?fedora} >= 29) || (0%{?rhel} && 0%{?rhel} >= 8) |
| 144 | +%define os_variant %(source /etc/os-release; echo $ID ;) |
| 145 | |
| 146 | %if %{use_systemd} |
| 147 | %define init_system systemd |
| 148 | @@ -9,6 +11,14 @@ |
| 149 | %define init_system sysvinit |
| 150 | %endif |
| 151 | |
| 152 | +%if %{use_python3} |
| 153 | +%define python_major 3 |
| 154 | +%define python_cmd python3 |
| 155 | +%define python_minor %(%{python_cmd} -c "import sys; %sys.stdout.write(str(sys.version_info.minor))") |
| 156 | +%else |
| 157 | +%define python_cmd python |
| 158 | +%endif |
| 159 | + |
| 160 | # See: http://www.zarb.org/~jasonc/macros.php |
| 161 | # Or: http://fedoraproject.org/wiki/Packaging:ScriptletSnippets |
| 162 | # Or: http://www.rpm.org/max-rpm/ch-rpm-inside.html |
| 163 | @@ -41,12 +51,29 @@ Requires(post): chkconfig |
| 164 | Requires(preun): chkconfig |
| 165 | %endif |
| 166 | |
| 167 | +%if "%{python_major}" == "3" |
| 168 | +BuildRequires: python3-devel |
| 169 | +BuildRequires: python3-setuptools |
| 170 | +%if "%{python_minor}" >= "8" |
| 171 | +BuildRequires: python3-distro |
| 172 | +%endif |
| 173 | +%else |
| 174 | +BuildRequires: python-devel |
| 175 | +BuildRequires: python-setuptools |
| 176 | +%endif |
| 177 | + |
| 178 | # These are runtime dependencies, but declared as BuildRequires so that |
| 179 | # - tests can be run here. |
| 180 | # - parts of cloud-init such (setup.py) use these dependencies. |
| 181 | -{% for r in requires %} |
| 182 | +%if %{use_python3} |
| 183 | +{% for r in requires_py3 %} |
| 184 | BuildRequires: {{r}} |
| 185 | {% endfor %} |
| 186 | +%else |
| 187 | +{% for r in requires_py2 %} |
| 188 | +BuildRequires: {{r}} |
| 189 | +{% endfor %} |
| 190 | +%endif |
| 191 | |
| 192 | # System util packages needed |
| 193 | %ifarch %{?ix86} x86_64 ia64 |
| 194 | @@ -58,11 +85,16 @@ Requires: dmidecode |
| 195 | Requires: python-argparse |
| 196 | %endif |
| 197 | |
| 198 | - |
| 199 | # Install 'dynamic' runtime reqs from *requirements.txt and pkg-deps.json |
| 200 | -{% for r in requires %} |
| 201 | +%if %{use_python3} |
| 202 | +{% for r in requires_py3 %} |
| 203 | +Requires: {{r}} |
| 204 | +{% endfor %} |
| 205 | +%else |
| 206 | +{% for r in requires_py2 %} |
| 207 | Requires: {{r}} |
| 208 | {% endfor %} |
| 209 | +%endif |
| 210 | |
| 211 | # Custom patches |
| 212 | {% for p in patches %} |
| 213 | @@ -93,14 +125,21 @@ ssh keys and to let the user run various scripts. |
| 214 | %patch{{loop.index0}} -p1 |
| 215 | {% endfor %} |
| 216 | |
| 217 | +%if "%{python_major}" == "3" |
| 218 | +# Change shebangs |
| 219 | +sed -i -e 's|#!/usr/bin/env python|#!/usr/bin/env python3|' \ |
| 220 | + -e 's|#!/usr/bin/python|#!/usr/bin/python3|' tools/* cloudinit/ssh_util.py |
| 221 | +%endif |
| 222 | + |
| 223 | + |
| 224 | %build |
| 225 | -%{__python} setup.py build |
| 226 | +%{python_cmd} setup.py build |
| 227 | |
| 228 | -%install |
| 229 | |
| 230 | -%{__python} setup.py install -O1 \ |
| 231 | +%install |
| 232 | +%{python_cmd} setup.py install -O1 \ |
| 233 | --skip-build --root $RPM_BUILD_ROOT \ |
| 234 | - --init-system=%{init_system} |
| 235 | + --init-system=%{init_system} --distro %{os_variant} |
| 236 | |
| 237 | # Note that /etc/rsyslog.d didn't exist by default until F15. |
| 238 | # el6 request: https://bugzilla.redhat.com/show_bug.cgi?id=740420 |
| 239 | @@ -109,7 +148,11 @@ cp -p tools/21-cloudinit.conf \ |
| 240 | $RPM_BUILD_ROOT/%{_sysconfdir}/rsyslog.d/21-cloudinit.conf |
| 241 | |
| 242 | # Remove the tests |
| 243 | +%if "%{python_major}" == "3" |
| 244 | +rm -rf $RPM_BUILD_ROOT%{python3_sitelib}/tests |
| 245 | +%else |
| 246 | rm -rf $RPM_BUILD_ROOT%{python_sitelib}/tests |
| 247 | +%endif |
| 248 | |
| 249 | # Required dirs... |
| 250 | mkdir -p $RPM_BUILD_ROOT/%{_sharedstatedir}/cloud |
| 251 | @@ -122,11 +165,12 @@ version_pys=$(cd "$RPM_BUILD_ROOT" && find . -name version.py -type f) |
| 252 | ( cd "$RPM_BUILD_ROOT" && |
| 253 | sed -i "s,@@PACKAGED_VERSION@@,%{version}-%{release}," $version_pys ) |
| 254 | |
| 255 | + |
| 256 | %clean |
| 257 | rm -rf $RPM_BUILD_ROOT |
| 258 | |
| 259 | -%post |
| 260 | |
| 261 | +%post |
| 262 | %if "%{init_system}" == "systemd" |
| 263 | if [ $1 -eq 1 ] |
| 264 | then |
| 265 | @@ -142,8 +186,8 @@ fi |
| 266 | /sbin/chkconfig --add %{_initrddir}/cloud-final |
| 267 | %endif |
| 268 | |
| 269 | -%preun |
| 270 | |
| 271 | +%preun |
| 272 | %if "%{init_system}" == "systemd" |
| 273 | if [ $1 -eq 0 ] |
| 274 | then |
| 275 | @@ -166,14 +210,14 @@ then |
| 276 | fi |
| 277 | %endif |
| 278 | |
| 279 | -%postun |
| 280 | |
| 281 | +%postun |
| 282 | %if "%{init_system}" == "systemd" |
| 283 | /bin/systemctl daemon-reload >/dev/null 2>&1 || : |
| 284 | %endif |
| 285 | |
| 286 | -%files |
| 287 | |
| 288 | +%files |
| 289 | /lib/udev/rules.d/66-azure-ephemeral.rules |
| 290 | |
| 291 | %if "%{init_system}" == "systemd" |
| 292 | @@ -188,7 +232,6 @@ fi |
| 293 | |
| 294 | %{_sysconfdir}/NetworkManager/dispatcher.d/hook-network-manager |
| 295 | %{_sysconfdir}/dhcp/dhclient-exit-hooks.d/hook-dhclient |
| 296 | - |
| 297 | # Program binaries |
| 298 | %{_bindir}/cloud-init* |
| 299 | %{_bindir}/cloud-id* |
| 300 | @@ -213,4 +256,8 @@ fi |
| 301 | %dir %{_sharedstatedir}/cloud |
| 302 | |
| 303 | # Python code is here... |
| 304 | +%if "%{python_major}" == "3" |
| 305 | +%{python3_sitelib}/* |
| 306 | +%else |
| 307 | %{python_sitelib}/* |
| 308 | +%endif |
| 309 | diff --git a/tools/read-dependencies b/tools/read-dependencies |
| 310 | index b4656e6..77c2ec5 100755 |
| 311 | --- a/tools/read-dependencies |
| 312 | +++ b/tools/read-dependencies |
| 313 | @@ -23,6 +23,7 @@ DEFAULT_REQUIREMENTS = 'requirements.txt' |
| 314 | # Map the appropriate package dir needed for each distro choice |
| 315 | DISTRO_PKG_TYPE_MAP = { |
| 316 | 'centos': 'redhat', |
| 317 | + 'fedora': 'fedora', |
| 318 | 'redhat': 'redhat', |
| 319 | 'debian': 'debian', |
| 320 | 'ubuntu': 'debian', |
| 321 | @@ -51,17 +52,41 @@ MAYBE_RELIABLE_YUM_INSTALL = [ |
| 322 | """, |
| 323 | 'reliable-yum-install'] |
| 324 | |
| 325 | +MAYBE_RELIABLE_DNF_INSTALL = [ |
| 326 | + 'sh', '-c', |
| 327 | + """ |
| 328 | + error() { echo "$@" 1>&2; } |
| 329 | + n=0; max=10; |
| 330 | + bcmd="dnf install --downloadonly --assumeyes --setopt=keepcache=1" |
| 331 | + while n=$(($n+1)); do |
| 332 | + error ":: running $bcmd $* [$n/$max]" |
| 333 | + $bcmd "$@" |
| 334 | + r=$? |
| 335 | + [ $r -eq 0 ] && break |
| 336 | + [ $n -ge $max ] && { error "gave up on $bcmd"; exit $r; } |
| 337 | + nap=$(($n*5)) |
| 338 | + error ":: failed [$r] ($n/$max). sleeping $nap." |
| 339 | + sleep $nap |
| 340 | + done |
| 341 | + error ":: running dnf install --cacheonly --assumeyes $*" |
| 342 | + dnf install --cacheonly --assumeyes "$@" |
| 343 | + """, |
| 344 | + 'reliable-dnf-install'] |
| 345 | + |
| 346 | + |
| 347 | ZYPPER_INSTALL = [ |
| 348 | 'zypper', '--non-interactive', '--gpg-auto-import-keys', 'install', |
| 349 | '--auto-agree-with-licenses'] |
| 350 | |
| 351 | DRY_DISTRO_INSTALL_PKG_CMD = { |
| 352 | 'centos': ['yum', 'install', '--assumeyes'], |
| 353 | + 'fedora': ['dnf', 'install', '--assumeyes'], |
| 354 | 'redhat': ['yum', 'install', '--assumeyes'], |
| 355 | } |
| 356 | |
| 357 | DISTRO_INSTALL_PKG_CMD = { |
| 358 | 'centos': MAYBE_RELIABLE_YUM_INSTALL, |
| 359 | + 'fedora': MAYBE_RELIABLE_DNF_INSTALL, |
| 360 | 'redhat': MAYBE_RELIABLE_YUM_INSTALL, |
| 361 | 'debian': ['apt', 'install', '-y'], |
| 362 | 'ubuntu': ['apt', 'install', '-y'], |
| 363 | @@ -73,6 +98,7 @@ DISTRO_INSTALL_PKG_CMD = { |
| 364 | # List of base system packages required to enable ci automation |
| 365 | CI_SYSTEM_BASE_PKGS = { |
| 366 | 'common': ['make', 'sudo', 'tar'], |
| 367 | + 'fedora': ['python3-tox'], |
| 368 | 'redhat': ['python-tox'], |
| 369 | 'centos': ['python-tox'], |
| 370 | 'ubuntu': ['devscripts', 'python3-dev', 'libssl-dev', 'tox', 'sbuild'], |
| 371 | @@ -192,6 +218,13 @@ def main(distro): |
| 372 | else: |
| 373 | topd = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) |
| 374 | |
| 375 | + # allow fedora to use redhat, mark it as variant |
| 376 | + if args.distro in ['fedora']: |
| 377 | + args.variant = args.distro |
| 378 | + args.distro = 'redhat' |
| 379 | + else: |
| 380 | + args.variant = args.distro |
| 381 | + |
| 382 | if args.test_distro: |
| 383 | # Give us all the system deps we need for continuous integration |
| 384 | if args.req_files: |
| 385 | @@ -234,7 +267,7 @@ def main(distro): |
| 386 | else: |
| 387 | all_deps = pip_pkg_names |
| 388 | if args.install: |
| 389 | - pkg_install(all_deps, args.distro, args.test_distro, args.dry_run) |
| 390 | + pkg_install(all_deps, args.variant, args.test_distro, args.dry_run) |
| 391 | else: |
| 392 | print('\n'.join(all_deps)) |
| 393 | |
| 394 | diff --git a/tools/run-container b/tools/run-container |
| 395 | index 1d24e15..114803c 100755 |
| 396 | --- a/tools/run-container |
| 397 | +++ b/tools/run-container |
| 398 | @@ -218,9 +218,10 @@ get_os_info() { |
| 399 | { error "Unable to determine OS_NAME/OS_VERSION"; return 1; } |
| 400 | } |
| 401 | |
| 402 | -yum_install() { |
| 403 | +_rpm_install() { |
| 404 | + install_cmd="$1"; shift; |
| 405 | local n=0 max=10 ret |
| 406 | - bcmd="yum install --downloadonly --assumeyes --setopt=keepcache=1" |
| 407 | + bcmd="$install_cmd install --downloadonly --assumeyes --setopt=keepcache=1" |
| 408 | while n=$((n+1)); do |
| 409 | error ":: running $bcmd $* [$n/$max]" |
| 410 | $bcmd "$@" |
| 411 | @@ -231,8 +232,16 @@ yum_install() { |
| 412 | error ":: failed [$ret] ($n/$max). sleeping $nap." |
| 413 | sleep $nap |
| 414 | done |
| 415 | - error ":: running yum install --cacheonly --assumeyes $*" |
| 416 | - yum install --cacheonly --assumeyes "$@" |
| 417 | + error ":: running $install_cmd install --cacheonly --assumeyes $*" |
| 418 | + $install_cmd install --cacheonly --assumeyes "$@" |
| 419 | +} |
| 420 | + |
| 421 | +yum_install() { |
| 422 | + _rpm_install "yum" "$@" |
| 423 | +} |
| 424 | + |
| 425 | +dnf_install() { |
| 426 | + _rpm_install "dnf" "$@" |
| 427 | } |
| 428 | |
| 429 | zypper_install() { |
| 430 | @@ -250,6 +259,7 @@ apt_install() { |
| 431 | install_packages() { |
| 432 | get_os_info || return |
| 433 | case "$OS_NAME" in |
| 434 | + fedora) dnf_install "$@";; |
| 435 | centos) yum_install "$@";; |
| 436 | opensuse) zypper_install "$@";; |
| 437 | debian|ubuntu) apt_install "$@";; |
| 438 | @@ -492,8 +502,15 @@ main() { |
| 439 | return |
| 440 | } |
| 441 | |
| 442 | + local distflag="" |
| 443 | + case "$OS_NAME" in |
| 444 | + centos) distflag="--distro=redhat";; |
| 445 | + fedora) distflag="--distro=fedora";; |
| 446 | + opensuse) distflag="--distro=suse";; |
| 447 | + esac |
| 448 | + |
| 449 | inside_as_cd "$name" root "$cdir" \ |
| 450 | - $pyexe ./tools/read-dependencies "--distro=${OS_NAME}" \ |
| 451 | + $pyexe ./tools/read-dependencies "$distflag" \ |
| 452 | --test-distro || { |
| 453 | errorrc "FAIL: failed to install dependencies with read-dependencies" |
| 454 | return |
| 455 | @@ -514,18 +531,13 @@ main() { |
| 456 | } |
| 457 | fi |
| 458 | |
| 459 | - local build_pkg="" build_srcpkg="" pkg_ext="" distflag="" |
| 460 | - case "$OS_NAME" in |
| 461 | - centos) distflag="--distro=redhat";; |
| 462 | - opensuse) distflag="--distro=suse";; |
| 463 | - esac |
| 464 | - |
| 465 | + local build_pkg="" build_srcpkg="" pkg_ext="" pyver="" |
| 466 | case "$OS_NAME" in |
| 467 | debian|ubuntu) |
| 468 | - build_pkg="./packages/bddeb -d" |
| 469 | + build_pkg="./packages/bddeb -d" |
| 470 | build_srcpkg="./packages/bddeb -S -d" |
| 471 | pkg_ext=".deb";; |
| 472 | - centos|opensuse) |
| 473 | + centos|fedora|opensuse|redhat) |
| 474 | build_pkg="./packages/brpm $distflag" |
| 475 | build_srcpkg="./packages/brpm $distflag --srpm" |
| 476 | pkg_ext=".rpm";; |

We should take an srpm out of this and test-build Fedora on COPR repo before landing.