Warning: Permanently added '2620:52:3:1:dead:beef:cafe:c18d' (ED25519) to the list of known hosts.

You can reproduce this build on your computer by running:

  sudo dnf install copr-rpmbuild
  /usr/bin/copr-rpmbuild --verbose --drop-resultdir --task-url https://copr.fedorainfracloud.org/backend/get-build-task/8582359-epel-7-x86_64 --chroot epel-7-x86_64


Version: 1.2
PID: 8786
Logging PID: 8787
Task:
{'allow_user_ssh': False,
 'appstream': True,
 'background': False,
 'bootstrap': 'on',
 'build_id': 8582359,
 'buildroot_pkgs': [],
 'chroot': 'epel-7-x86_64',
 'enable_net': True,
 'fedora_review': False,
 'git_hash': 'a33946dd9dd2a461de49198b52f16507cf831cb4',
 'git_repo': 'https://copr-dist-git.fedorainfracloud.org/git/elkhan/PyCharm/pycharm-community',
 'isolation': 'default',
 'memory_reqs': 2048,
 'package_name': 'pycharm-community',
 'package_version': '2024.3.2-1',
 'project_dirname': 'PyCharm',
 'project_name': 'PyCharm',
 'project_owner': 'elkhan',
 'repo_priority': None,
 'repos': [{'baseurl': 'https://download.copr.fedorainfracloud.org/results/elkhan/PyCharm/epel-7-x86_64/',
            'id': 'copr_base',
            'name': 'Copr repository',
            'priority': None}],
 'sandbox': 'elkhan/PyCharm--elkhan',
 'source_json': {},
 'source_type': None,
 'ssh_public_keys': None,
 'storage': None,
 'submitter': 'elkhan',
 'tags': [],
 'task_id': '8582359-epel-7-x86_64',
 'timeout': 18000,
 'uses_devel_repo': False,
 'with_opts': [],
 'without_opts': []}

Running: git clone https://copr-dist-git.fedorainfracloud.org/git/elkhan/PyCharm/pycharm-community /var/lib/copr-rpmbuild/workspace/workdir-jc5w8df4/pycharm-community --depth 500 --no-single-branch --recursive

cmd: ['git', 'clone', 'https://copr-dist-git.fedorainfracloud.org/git/elkhan/PyCharm/pycharm-community', '/var/lib/copr-rpmbuild/workspace/workdir-jc5w8df4/pycharm-community', '--depth', '500', '--no-single-branch', '--recursive']
cwd: .
rc: 0
stdout: 
stderr: Cloning into '/var/lib/copr-rpmbuild/workspace/workdir-jc5w8df4/pycharm-community'...

Running: git checkout a33946dd9dd2a461de49198b52f16507cf831cb4 --

cmd: ['git', 'checkout', 'a33946dd9dd2a461de49198b52f16507cf831cb4', '--']
cwd: /var/lib/copr-rpmbuild/workspace/workdir-jc5w8df4/pycharm-community
rc: 0
stdout: 
stderr: Note: switching to 'a33946dd9dd2a461de49198b52f16507cf831cb4'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at a33946d automatic import of pycharm-community

Running: dist-git-client sources
/usr/bin/tail: /var/lib/copr-rpmbuild/main.log: file truncated

cmd: ['dist-git-client', 'sources']
cwd: /var/lib/copr-rpmbuild/workspace/workdir-jc5w8df4/pycharm-community
rc: 0
stdout: 
stderr: INFO: Reading stdout from command: git rev-parse --abbrev-ref HEAD
INFO: Reading stdout from command: git rev-parse HEAD
INFO: Reading sources specification file: sources
INFO: Downloading pycharm-community-2024.3.2.tar.gz
INFO: Reading stdout from command: curl --help all
INFO: Calling: curl -H Pragma: -o pycharm-community-2024.3.2.tar.gz --location --connect-timeout 60 --retry 3 --retry-delay 10 --remote-time --show-error --fail --retry-all-errors https://copr-dist-git.fedorainfracloud.org/repo/pkgs/elkhan/PyCharm/pycharm-community/pycharm-community-2024.3.2.tar.gz/md5/49c553f351415b3f1045966048f4ef43/pycharm-community-2024.3.2.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  751M  100  751M    0     0  13.9M      0  0:00:53  0:00:53 --:--:-- 29.5M
INFO: Reading stdout from command: md5sum pycharm-community-2024.3.2.tar.gz

Running (timeout=18000): unbuffer mock --spec /var/lib/copr-rpmbuild/workspace/workdir-jc5w8df4/pycharm-community/pycharm-community.spec --sources /var/lib/copr-rpmbuild/workspace/workdir-jc5w8df4/pycharm-community --resultdir /var/lib/copr-rpmbuild/results --uniqueext 1738090627.921135 -r /var/lib/copr-rpmbuild/results/configs/child.cfg
INFO: mock.py version 6.0 starting (python version = 3.13.0, NVR = mock-6.0-1.fc41), args: /usr/libexec/mock/mock --spec /var/lib/copr-rpmbuild/workspace/workdir-jc5w8df4/pycharm-community/pycharm-community.spec --sources /var/lib/copr-rpmbuild/workspace/workdir-jc5w8df4/pycharm-community --resultdir /var/lib/copr-rpmbuild/results --uniqueext 1738090627.921135 -r /var/lib/copr-rpmbuild/results/configs/child.cfg
Start(bootstrap): init plugins
INFO: tmpfs initialized
INFO: selinux enabled
INFO: chroot_scan: initialized
INFO: compress_logs: initialized
Finish(bootstrap): init plugins
Start: init plugins
INFO: tmpfs initialized
INFO: selinux enabled
INFO: chroot_scan: initialized
INFO: compress_logs: initialized
Finish: init plugins
INFO: Signal handler active
Start: run
INFO: Start(/var/lib/copr-rpmbuild/workspace/workdir-jc5w8df4/pycharm-community/pycharm-community.spec)  Config(rhel+epel-7-x86_64)
Start: clean chroot
Finish: clean chroot
Mock Version: 6.0
INFO: Mock Version: 6.0
Start(bootstrap): chroot init
INFO: mounting tmpfs at /var/lib/mock/rhel+epel-7-x86_64-bootstrap-1738090627.921135/root.
INFO: calling preinit hooks
INFO: enabled root cache
INFO: enabled package manager cache
Start(bootstrap): cleaning package manager metadata
Finish(bootstrap): cleaning package manager metadata
INFO: Using 'dnf4' instead of 'yum' for bootstrap chroot
INFO: Package manager dnf4 detected and used (fallback)
Start(bootstrap): installing yum tooling
No matches found for the following disable plugin patterns: local, spacewalk, versionlock
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered with an entitlement server. You can use subscription-manager to register.

Copr repository                                  20 kB/s | 1.6 kB     00:00    
Red Hat Enterprise Linux                         28 MB/s |  64 MB     00:02    
Red Hat Enterprise Linux - Optional             4.2 MB/s | 7.8 MB     00:01    
Extra Packages for Enterprise Linux 7Server - x 5.2 MB/s | 4.8 MB     00:00    
Dependencies resolved.
===========================================================================================
 Package                                    Arch    Version                     Repo   Size
===========================================================================================
Installing:
 subscription-manager                       x86_64  1.24.54-1.el7_9             rhel  1.1 M
 yum                                        noarch  3.4.3-168.el7               rhel  1.2 M
 yum-utils                                  noarch  1.1.31-54.el7_8             rhel  122 k
Installing dependencies:
 acl                                        x86_64  2.2.51-15.el7               rhel   82 k
 audit-libs                                 x86_64  2.8.5-4.el7                 rhel  102 k
 basesystem                                 noarch  10.0-7.el7                  rhel  4.9 k
 bash                                       x86_64  4.2.46-35.el7_9             rhel  1.0 M
 binutils                                   x86_64  2.27-44.base.el7_9.1        rhel  5.9 M
 bzip2-libs                                 x86_64  1.0.6-13.el7                rhel   40 k
 ca-certificates                            noarch  2023.2.60_v7.0.306-72.el7_9 rhel  923 k
 chkconfig                                  x86_64  1.7.6-1.el7                 rhel  182 k
 coreutils                                  x86_64  8.22-24.el7_9.2             rhel  3.3 M
 cpio                                       x86_64  2.11-28.el7                 rhel  211 k
 cracklib                                   x86_64  2.9.0-11.el7                rhel   80 k
 cracklib-dicts                             x86_64  2.9.0-11.el7                rhel  3.6 M
 cryptsetup-libs                            x86_64  2.0.3-6.el7                 rhel  339 k
 curl                                       x86_64  7.29.0-59.el7_9.2           rhel  271 k
 cyrus-sasl-lib                             x86_64  2.1.26-24.el7_9             rhel  156 k
 dbus                                       x86_64  1:1.10.24-15.el7            rhel  245 k
 dbus-glib                                  x86_64  0.100-7.el7                 rhel  102 k
 dbus-libs                                  x86_64  1:1.10.24-15.el7            rhel  169 k
 dbus-python                                x86_64  1.1.1-9.el7                 rhel  206 k
 device-mapper                              x86_64  7:1.02.170-6.el7_9.5        rhel  297 k
 device-mapper-libs                         x86_64  7:1.02.170-6.el7_9.5        rhel  325 k
 diffutils                                  x86_64  3.3-6.el7_9                 rhel  322 k
 dmidecode                                  x86_64  1:3.2-5.el7_9.1             rhel   82 k
 dracut                                     x86_64  033-572.el7                 rhel  329 k
 elfutils-default-yama-scope                noarch  0.176-5.el7                 rhel   33 k
 elfutils-libelf                            x86_64  0.176-5.el7                 rhel  195 k
 elfutils-libs                              x86_64  0.176-5.el7                 rhel  291 k
 expat                                      x86_64  2.1.0-15.el7_9              rhel   83 k
 file-libs                                  x86_64  5.11-37.el7                 rhel  340 k
 filesystem                                 x86_64  3.2-25.el7                  rhel  1.0 M
 findutils                                  x86_64  1:4.5.11-6.el7              rhel  559 k
 gawk                                       x86_64  4.0.2-4.el7_3.1             rhel  874 k
 gdbm                                       x86_64  1.10-8.el7                  rhel   70 k
 glib2                                      x86_64  2.56.1-9.el7_9              rhel  2.5 M
 glibc                                      x86_64  2.17-326.el7_9.3            rhel  3.6 M
 glibc-common                               x86_64  2.17-326.el7_9.3            rhel   12 M
 gmp                                        x86_64  1:6.0.0-15.el7              rhel  281 k
 gnupg2                                     x86_64  2.0.22-5.el7_5              rhel  1.5 M
 gobject-introspection                      x86_64  1.56.1-1.el7                rhel  241 k
 gpgme                                      x86_64  1.3.2-5.el7                 rhel  146 k
 grep                                       x86_64  2.20-3.el7                  rhel  344 k
 gzip                                       x86_64  1.5-11.el7_9                rhel  130 k
 hardlink                                   x86_64  1:1.0-19.el7                rhel   14 k
 info                                       x86_64  5.1-5.el7                   rhel  233 k
 json-c                                     x86_64  0.11-4.el7_0                rhel   31 k
 keyutils-libs                              x86_64  1.5.8-3.el7                 rhel   25 k
 kmod                                       x86_64  20-28.el7                   rhel  123 k
 kmod-libs                                  x86_64  20-28.el7                   rhel   51 k
 kpartx                                     x86_64  0.4.9-136.el7_9             rhel   81 k
 krb5-libs                                  x86_64  1.15.1-55.el7_9             rhel  810 k
 libacl                                     x86_64  2.2.51-15.el7               rhel   27 k
 libassuan                                  x86_64  2.1.0-3.el7                 rhel   63 k
 libattr                                    x86_64  2.4.46-13.el7               rhel   18 k
 libblkid                                   x86_64  2.23.2-65.el7_9.1           rhel  183 k
 libcap                                     x86_64  2.22-11.el7                 rhel   47 k
 libcap-ng                                  x86_64  0.7.5-4.el7                 rhel   25 k
 libcom_err                                 x86_64  1.42.9-19.el7               rhel   42 k
 libcurl                                    x86_64  7.29.0-59.el7_9.2           rhel  223 k
 libdb                                      x86_64  5.3.21-25.el7               rhel  719 k
 libdb-utils                                x86_64  5.3.21-25.el7               rhel  133 k
 libffi                                     x86_64  3.0.13-19.el7               rhel   30 k
 libgcc                                     x86_64  4.8.5-44.el7                rhel  103 k
 libgcrypt                                  x86_64  1.5.3-14.el7                rhel  263 k
 libgpg-error                               x86_64  1.12-3.el7                  rhel   87 k
 libidn                                     x86_64  1.28-4.el7                  rhel  209 k
 libmount                                   x86_64  2.23.2-65.el7_9.1           rhel  185 k
 libnl                                      x86_64  1.1.4-3.el7                 rhel  128 k
 libpwquality                               x86_64  1.2.3-5.el7                 rhel   85 k
 libselinux                                 x86_64  2.5-15.el7                  rhel  162 k
 libsemanage                                x86_64  2.5-14.el7                  rhel  151 k
 libsepol                                   x86_64  2.5-10.el7                  rhel  297 k
 libsmartcols                               x86_64  2.23.2-65.el7_9.1           rhel  143 k
 libssh2                                    x86_64  1.8.0-4.el7_9.1             rhel   88 k
 libstdc++                                  x86_64  4.8.5-44.el7                rhel  306 k
 libtasn1                                   x86_64  4.10-1.el7                  rhel  320 k
 libuser                                    x86_64  0.60-9.el7                  rhel  400 k
 libutempter                                x86_64  1.1.6-4.el7                 rhel   25 k
 libuuid                                    x86_64  2.23.2-65.el7_9.1           rhel   84 k
 libverto                                   x86_64  0.2.5-4.el7                 rhel   16 k
 libxml2                                    x86_64  2.9.1-6.el7_9.6             rhel  668 k
 libxml2-python                             x86_64  2.9.1-6.el7_9.6             rhel  247 k
 lua                                        x86_64  5.1.4-15.el7                rhel  201 k
 lz4                                        x86_64  1.8.3-1.el7                 rhel   85 k
 ncurses                                    x86_64  5.9-14.20130511.el7_4       rhel  304 k
 ncurses-base                               noarch  5.9-14.20130511.el7_4       rhel   68 k
 ncurses-libs                               x86_64  5.9-14.20130511.el7_4       rhel  316 k
 nspr                                       x86_64  4.35.0-1.el7_9              rhel  128 k
 nss                                        x86_64  3.90.0-2.el7_9              rhel  905 k
 nss-pem                                    x86_64  1.0.3-7.el7_9.1             rhel   75 k
 nss-softokn                                x86_64  3.90.0-6.el7_9              rhel  384 k
 nss-softokn-freebl                         x86_64  3.90.0-6.el7_9              rhel  321 k
 nss-sysinit                                x86_64  3.90.0-2.el7_9              rhel   67 k
 nss-tools                                  x86_64  3.90.0-2.el7_9              rhel  557 k
 nss-util                                   x86_64  3.90.0-1.el7_9              rhel   80 k
 openldap                                   x86_64  2.4.44-25.el7_9             rhel  356 k
 openssl-libs                               x86_64  1:1.0.2k-26.el7_9           rhel  1.2 M
 p11-kit                                    x86_64  0.23.5-3.el7                rhel  252 k
 p11-kit-trust                              x86_64  0.23.5-3.el7                rhel  129 k
 pam                                        x86_64  1.1.8-23.el7                rhel  721 k
 passwd                                     x86_64  0.79-6.el7                  rhel  106 k
 pcre                                       x86_64  8.32-17.el7                 rhel  422 k
 pinentry                                   x86_64  0.8.1-17.el7                rhel   73 k
 pkgconfig                                  x86_64  1:0.27.1-4.el7              rhel   54 k
 popt                                       x86_64  1.13-16.el7                 rhel   42 k
 procps-ng                                  x86_64  3.3.10-28.el7               rhel  291 k
 pth                                        x86_64  2.0.7-23.el7                rhel   89 k
 pygpgme                                    x86_64  0.3-9.el7                   rhel   63 k
 pyliblzma                                  x86_64  0.5.3-11.el7                rhel   47 k
 python                                     x86_64  2.7.5-94.el7_9              rhel   97 k
 python-backports                           x86_64  1.0-8.el7                   rhel  5.8 k
 python-backports-ssl_match_hostname        noarch  3.5.0.1-1.el7               rhel   13 k
 python-chardet                             noarch  2.2.1-3.el7                 rhel  227 k
 python-dateutil                            noarch  1.5-7.el7                   rhel   85 k
 python-decorator                           noarch  3.4.0-3.el7                 rhel   27 k
 python-dmidecode                           x86_64  3.12.2-4.el7                rhel   83 k
 python-ethtool                             x86_64  0.8-8.el7                   rhel   34 k
 python-gobject-base                        x86_64  3.22.0-1.el7_4.1            rhel  294 k
 python-iniparse                            noarch  0.4-9.el7                   rhel   39 k
 python-inotify                             noarch  0.9.4-4.el7                 rhel   49 k
 python-ipaddress                           noarch  1.0.16-2.el7                rhel   34 k
 python-kitchen                             noarch  1.1.1-5.el7                 rhel  266 k
 python-libs                                x86_64  2.7.5-94.el7_9              rhel  5.6 M
 python-pycurl                              x86_64  7.19.0-19.el7               rhel   80 k
 python-requests                            noarch  2.6.0-10.el7                rhel   95 k
 python-setuptools                          noarch  0.9.8-7.el7                 rhel  397 k
 python-six                                 noarch  1.9.0-2.el7                 rhel   29 k
 python-syspurpose                          x86_64  1.24.54-1.el7_9             rhel  277 k
 python-urlgrabber                          noarch  3.10-10.el7                 rhel  109 k
 python-urllib3                             noarch  1.10.2-7.el7                rhel  103 k
 pyxattr                                    x86_64  0.5.1-5.el7                 rhel   28 k
 qrencode-libs                              x86_64  3.4.1-3.el7                 rhel   50 k
 readline                                   x86_64  6.2-11.el7                  rhel  193 k
 redhat-release-server                      x86_64  7.9-12.el7_9                rhel   32 k
 rpm                                        x86_64  4.11.3-48.el7_9             rhel  1.2 M
 rpm-build-libs                             x86_64  4.11.3-48.el7_9             rhel  108 k
 rpm-libs                                   x86_64  4.11.3-48.el7_9             rhel  279 k
 rpm-python                                 x86_64  4.11.3-48.el7_9             rhel   84 k
 sed                                        x86_64  4.2.2-7.el7                 rhel  231 k
 setup                                      noarch  2.8.71-11.el7               rhel  166 k
 shadow-utils                               x86_64  2:4.6-5.el7                 rhel  1.2 M
 shared-mime-info                           x86_64  1.8-5.el7                   rhel  312 k
 sqlite                                     x86_64  3.7.17-8.el7_7.1            rhel  394 k
 subscription-manager-rhsm                  x86_64  1.24.54-1.el7_9             rhel  336 k
 subscription-manager-rhsm-certificates     x86_64  1.24.54-1.el7_9             rhel  244 k
 systemd                                    x86_64  219-78.el7_9.9              rhel  5.1 M
 systemd-libs                               x86_64  219-78.el7_9.9              rhel  419 k
 tar                                        x86_64  2:1.26-35.el7               rhel  846 k
 tzdata                                     noarch  2024a-1.el7                 rhel  497 k
 usermode                                   x86_64  1.111-6.el7                 rhel  193 k
 ustr                                       x86_64  1.0.4-16.el7                rhel   92 k
 util-linux                                 x86_64  2.23.2-65.el7_9.1           rhel  2.0 M
 virt-what                                  x86_64  1.18-4.el7_9.1              rhel   30 k
 which                                      x86_64  2.20-7.el7                  rhel   41 k
 xz                                         x86_64  5.2.2-2.el7_9               rhel  229 k
 xz-libs                                    x86_64  5.2.2-2.el7_9               rhel  103 k
 yum-metadata-parser                        x86_64  1.1.4-10.el7                rhel   28 k
 zlib                                       x86_64  1.2.7-21.el7_9              rhel   90 k

Transaction Summary
===========================================================================================
Install  160 Packages

Total download size: 80 M
Installed size: 455 M
Downloading Packages:
(1/160): hardlink-1.0-19.el7.x86_64.rpm          54 kB/s |  14 kB     00:00    
(2/160): dbus-python-1.1.1-9.el7.x86_64.rpm     516 kB/s | 206 kB     00:00    
(3/160): libgpg-error-1.12-3.el7.x86_64.rpm     525 kB/s |  87 kB     00:00    
(4/160): cracklib-dicts-2.9.0-11.el7.x86_64.rpm 6.2 MB/s | 3.6 MB     00:00    
(5/160): basesystem-10.0-7.el7.noarch.rpm        27 kB/s | 4.9 kB     00:00    
(6/160): dbus-glib-0.100-7.el7.x86_64.rpm       420 kB/s | 102 kB     00:00    
(7/160): libutempter-1.1.6-4.el7.x86_64.rpm     179 kB/s |  25 kB     00:00    
(8/160): popt-1.13-16.el7.x86_64.rpm            292 kB/s |  42 kB     00:00    
(9/160): pyxattr-0.5.1-5.el7.x86_64.rpm         243 kB/s |  28 kB     00:00    
(10/160): libnl-1.1.4-3.el7.x86_64.rpm          420 kB/s | 128 kB     00:00    
(11/160): qrencode-libs-3.4.1-3.el7.x86_64.rpm  386 kB/s |  50 kB     00:00    
(12/160): cracklib-2.9.0-11.el7.x86_64.rpm      542 kB/s |  80 kB     00:00    
(13/160): gpgme-1.3.2-5.el7.x86_64.rpm          982 kB/s | 146 kB     00:00    
(14/160): libassuan-2.1.0-3.el7.x86_64.rpm      376 kB/s |  63 kB     00:00    
(15/160): pkgconfig-0.27.1-4.el7.x86_64.rpm     329 kB/s |  54 kB     00:00    
(16/160): pygpgme-0.3-9.el7.x86_64.rpm          531 kB/s |  63 kB     00:00    
(17/160): python-iniparse-0.4-9.el7.noarch.rpm  261 kB/s |  39 kB     00:00    
(18/160): python-inotify-0.9.4-4.el7.noarch.rpm 208 kB/s |  49 kB     00:00    
(19/160): ustr-1.0.4-16.el7.x86_64.rpm          733 kB/s |  92 kB     00:00    
(20/160): yum-metadata-parser-1.1.4-10.el7.x86_ 250 kB/s |  28 kB     00:00    
(21/160): python-dateutil-1.5-7.el7.noarch.rpm  211 kB/s |  85 kB     00:00    
(22/160): gdbm-1.10-8.el7.x86_64.rpm            343 kB/s |  70 kB     00:00    
(23/160): libverto-0.2.5-4.el7.x86_64.rpm        89 kB/s |  16 kB     00:00    
(24/160): keyutils-libs-1.5.8-3.el7.x86_64.rpm  112 kB/s |  25 kB     00:00    
(25/160): python-decorator-3.4.0-3.el7.noarch.r 185 kB/s |  27 kB     00:00    
(26/160): json-c-0.11-4.el7_0.x86_64.rpm        143 kB/s |  31 kB     00:00    
(27/160): python-kitchen-1.1.1-5.el7.noarch.rpm 871 kB/s | 266 kB     00:00    
(28/160): which-2.20-7.el7.x86_64.rpm           124 kB/s |  41 kB     00:00    
(29/160): pyliblzma-0.5.3-11.el7.x86_64.rpm     338 kB/s |  47 kB     00:00    
(30/160): python-backports-1.0-8.el7.x86_64.rpm  44 kB/s | 5.8 kB     00:00    
(31/160): p11-kit-trust-0.23.5-3.el7.x86_64.rpm 1.0 MB/s | 129 kB     00:00    
(32/160): ncurses-libs-5.9-14.20130511.el7_4.x8 798 kB/s | 316 kB     00:00    
(33/160): libcap-ng-0.7.5-4.el7.x86_64.rpm      209 kB/s |  25 kB     00:00    
(34/160): bzip2-libs-1.0.6-13.el7.x86_64.rpm    182 kB/s |  40 kB     00:00    
(35/160): pth-2.0.7-23.el7.x86_64.rpm           802 kB/s |  89 kB     00:00    
(36/160): libidn-1.28-4.el7.x86_64.rpm          1.4 MB/s | 209 kB     00:00    
(37/160): python-six-1.9.0-2.el7.noarch.rpm     122 kB/s |  29 kB     00:00    
(38/160): grep-2.20-3.el7.x86_64.rpm            2.0 MB/s | 344 kB     00:00    
(39/160): ncurses-base-5.9-14.20130511.el7_4.no 646 kB/s |  68 kB     00:00    
(40/160): pinentry-0.8.1-17.el7.x86_64.rpm      560 kB/s |  73 kB     00:00    
(41/160): ncurses-5.9-14.20130511.el7_4.x86_64. 956 kB/s | 304 kB     00:00    
(42/160): python-pycurl-7.19.0-19.el7.x86_64.rp 759 kB/s |  80 kB     00:00    
(43/160): lua-5.1.4-15.el7.x86_64.rpm           1.5 MB/s | 201 kB     00:00    
(44/160): gawk-4.0.2-4.el7_3.1.x86_64.rpm       3.8 MB/s | 874 kB     00:00    
(45/160): libgcrypt-1.5.3-14.el7.x86_64.rpm     1.6 MB/s | 263 kB     00:00    
(46/160): python-ipaddress-1.0.16-2.el7.noarch. 130 kB/s |  34 kB     00:00    
(47/160): gmp-6.0.0-15.el7.x86_64.rpm           2.1 MB/s | 281 kB     00:00    
(48/160): p11-kit-0.23.5-3.el7.x86_64.rpm       1.3 MB/s | 252 kB     00:00    
(49/160): pcre-8.32-17.el7.x86_64.rpm           3.2 MB/s | 422 kB     00:00    
(50/160): libtasn1-4.10-1.el7.x86_64.rpm        987 kB/s | 320 kB     00:00    
(51/160): python-setuptools-0.9.8-7.el7.noarch. 3.1 MB/s | 397 kB     00:00    
(52/160): python-gobject-base-3.22.0-1.el7_4.1. 1.9 MB/s | 294 kB     00:00    
(53/160): libattr-2.4.46-13.el7.x86_64.rpm      146 kB/s |  18 kB     00:00    
(54/160): libpwquality-1.2.3-5.el7.x86_64.rpm   489 kB/s |  85 kB     00:00    
(55/160): python-backports-ssl_match_hostname-3  56 kB/s |  13 kB     00:00    
(56/160): info-5.1-5.el7.x86_64.rpm             1.3 MB/s | 233 kB     00:00    
(57/160): libuser-0.60-9.el7.x86_64.rpm         3.1 MB/s | 400 kB     00:00    
(58/160): filesystem-3.2-25.el7.x86_64.rpm      2.6 MB/s | 1.0 MB     00:00    
(59/160): libsepol-2.5-10.el7.x86_64.rpm        2.2 MB/s | 297 kB     00:00    
(60/160): gnupg2-2.0.22-5.el7_5.x86_64.rpm      4.4 MB/s | 1.5 MB     00:00    
(61/160): gobject-introspection-1.56.1-1.el7.x8 1.2 MB/s | 241 kB     00:00    
(62/160): libsemanage-2.5-14.el7.x86_64.rpm     744 kB/s | 151 kB     00:00    
(63/160): tar-1.26-35.el7.x86_64.rpm            5.6 MB/s | 846 kB     00:00    
(64/160): findutils-4.5.11-6.el7.x86_64.rpm     4.2 MB/s | 559 kB     00:00    
(65/160): audit-libs-2.8.5-4.el7.x86_64.rpm     943 kB/s | 102 kB     00:00    
(66/160): python-ethtool-0.8-8.el7.x86_64.rpm   274 kB/s |  34 kB     00:00    
(67/160): libdb-5.3.21-25.el7.x86_64.rpm        3.3 MB/s | 719 kB     00:00    
(68/160): libdb-utils-5.3.21-25.el7.x86_64.rpm  571 kB/s | 133 kB     00:00    
(69/160): python-urllib3-1.10.2-7.el7.noarch.rp 696 kB/s | 103 kB     00:00    
(70/160): python-chardet-2.2.1-3.el7.noarch.rpm 898 kB/s | 227 kB     00:00    
(71/160): readline-6.2-11.el7.x86_64.rpm        1.4 MB/s | 193 kB     00:00    
(72/160): usermode-1.111-6.el7.x86_64.rpm       1.9 MB/s | 193 kB     00:00    
(73/160): shadow-utils-4.6-5.el7.x86_64.rpm     5.1 MB/s | 1.2 MB     00:00    
(74/160): acl-2.2.51-15.el7.x86_64.rpm          428 kB/s |  82 kB     00:00    
(75/160): kmod-20-28.el7.x86_64.rpm             849 kB/s | 123 kB     00:00    
(76/160): sqlite-3.7.17-8.el7_7.1.x86_64.rpm    981 kB/s | 394 kB     00:00    
(77/160): libacl-2.2.51-15.el7.x86_64.rpm       139 kB/s |  27 kB     00:00    
(78/160): libselinux-2.5-15.el7.x86_64.rpm      1.0 MB/s | 162 kB     00:00    
(79/160): passwd-0.79-6.el7.x86_64.rpm          895 kB/s | 106 kB     00:00    
(80/160): setup-2.8.71-11.el7.noarch.rpm        1.0 MB/s | 166 kB     00:00    
(81/160): cryptsetup-libs-2.0.3-6.el7.x86_64.rp 2.0 MB/s | 339 kB     00:00    
(82/160): kmod-libs-20-28.el7.x86_64.rpm        310 kB/s |  51 kB     00:00    
(83/160): libcap-2.22-11.el7.x86_64.rpm         258 kB/s |  47 kB     00:00    
(84/160): pam-1.1.8-23.el7.x86_64.rpm           4.6 MB/s | 721 kB     00:00    
(85/160): libffi-3.0.13-19.el7.x86_64.rpm       163 kB/s |  30 kB     00:00    
(86/160): python-urlgrabber-3.10-10.el7.noarch. 658 kB/s | 109 kB     00:00    
(87/160): shared-mime-info-1.8-5.el7.x86_64.rpm 1.8 MB/s | 312 kB     00:00    
(88/160): cpio-2.11-28.el7.x86_64.rpm           1.5 MB/s | 211 kB     00:00    
(89/160): chkconfig-1.7.6-1.el7.x86_64.rpm      1.1 MB/s | 182 kB     00:00    
(90/160): python-dmidecode-3.12.2-4.el7.x86_64. 183 kB/s |  83 kB     00:00    
(91/160): elfutils-libs-0.176-5.el7.x86_64.rpm  1.6 MB/s | 291 kB     00:00    
(92/160): dbus-libs-1.10.24-15.el7.x86_64.rpm   796 kB/s | 169 kB     00:00    
(93/160): libcom_err-1.42.9-19.el7.x86_64.rpm   403 kB/s |  42 kB     00:00    
(94/160): file-libs-5.11-37.el7.x86_64.rpm      1.8 MB/s | 340 kB     00:00    
(95/160): libgcc-4.8.5-44.el7.x86_64.rpm        609 kB/s | 103 kB     00:00    
(96/160): procps-ng-3.3.10-28.el7.x86_64.rpm    2.4 MB/s | 291 kB     00:00    
(97/160): sed-4.2.2-7.el7.x86_64.rpm            1.3 MB/s | 231 kB     00:00    
(98/160): yum-3.4.3-168.el7.noarch.rpm          7.7 MB/s | 1.2 MB     00:00    
(99/160): coreutils-8.22-24.el7_9.2.x86_64.rpm   16 MB/s | 3.3 MB     00:00    
(100/160): yum-utils-1.1.31-54.el7_8.noarch.rpm 398 kB/s | 122 kB     00:00    
(101/160): dbus-1.10.24-15.el7.x86_64.rpm       1.1 MB/s | 245 kB     00:00    
(102/160): dracut-033-572.el7.x86_64.rpm        3.0 MB/s | 329 kB     00:00    
(103/160): elfutils-libelf-0.176-5.el7.x86_64.r 1.2 MB/s | 195 kB     00:00    
(104/160): elfutils-default-yama-scope-0.176-5. 123 kB/s |  33 kB     00:00    
(105/160): lz4-1.8.3-1.el7.x86_64.rpm           535 kB/s |  85 kB     00:00    
(106/160): python-requests-2.6.0-10.el7.noarch. 581 kB/s |  95 kB     00:00    
(107/160): device-mapper-1.02.170-6.el7_9.5.x86 1.8 MB/s | 297 kB     00:00    
(108/160): device-mapper-libs-1.02.170-6.el7_9. 2.2 MB/s | 325 kB     00:00    
(109/160): dmidecode-3.2-5.el7_9.1.x86_64.rpm   455 kB/s |  82 kB     00:00    
(110/160): libstdc++-4.8.5-44.el7.x86_64.rpm    466 kB/s | 306 kB     00:00    
(111/160): glib2-2.56.1-9.el7_9.x86_64.rpm       15 MB/s | 2.5 MB     00:00    
(112/160): libblkid-2.23.2-65.el7_9.1.x86_64.rp 1.4 MB/s | 183 kB     00:00    
(113/160): libmount-2.23.2-65.el7_9.1.x86_64.rp 1.7 MB/s | 185 kB     00:00    
(114/160): libsmartcols-2.23.2-65.el7_9.1.x86_6 1.3 MB/s | 143 kB     00:00    
(115/160): libuuid-2.23.2-65.el7_9.1.x86_64.rpm 748 kB/s |  84 kB     00:00    
(116/160): util-linux-2.23.2-65.el7_9.1.x86_64.  14 MB/s | 2.0 MB     00:00    
(117/160): cyrus-sasl-lib-2.1.26-24.el7_9.x86_6 1.0 MB/s | 156 kB     00:00    
(118/160): bash-4.2.46-35.el7_9.x86_64.rpm      3.6 MB/s | 1.0 MB     00:00    
(119/160): binutils-2.27-44.base.el7_9.1.x86_64  27 MB/s | 5.9 MB     00:00    
(120/160): libxml2-python-2.9.1-6.el7_9.6.x86_6 2.0 MB/s | 247 kB     00:00    
(121/160): libxml2-2.9.1-6.el7_9.6.x86_64.rpm   1.8 MB/s | 668 kB     00:00    
(122/160): openldap-2.4.44-25.el7_9.x86_64.rpm  1.5 MB/s | 356 kB     00:00    
(123/160): gzip-1.5-11.el7_9.x86_64.rpm         300 kB/s | 130 kB     00:00    
(124/160): rpm-4.11.3-48.el7_9.x86_64.rpm       9.2 MB/s | 1.2 MB     00:00    
(125/160): rpm-build-libs-4.11.3-48.el7_9.x86_6 827 kB/s | 108 kB     00:00    
(126/160): rpm-python-4.11.3-48.el7_9.x86_64.rp 823 kB/s |  84 kB     00:00    
(127/160): virt-what-1.18-4.el7_9.1.x86_64.rpm  225 kB/s |  30 kB     00:00    
(128/160): rpm-libs-4.11.3-48.el7_9.x86_64.rpm  1.0 MB/s | 279 kB     00:00    
(129/160): ca-certificates-2023.2.60_v7.0.306-7 7.6 MB/s | 923 kB     00:00    
(130/160): diffutils-3.3-6.el7_9.x86_64.rpm     2.2 MB/s | 322 kB     00:00    
(131/160): expat-2.1.0-15.el7_9.x86_64.rpm      810 kB/s |  83 kB     00:00    
(132/160): kpartx-0.4.9-136.el7_9.x86_64.rpm    563 kB/s |  81 kB     00:00    
(133/160): krb5-libs-1.15.1-55.el7_9.x86_64.rpm 7.6 MB/s | 810 kB     00:00    
(134/160): libssh2-1.8.0-4.el7_9.1.x86_64.rpm   769 kB/s |  88 kB     00:00    
(135/160): nspr-4.35.0-1.el7_9.x86_64.rpm       1.3 MB/s | 128 kB     00:00    
(136/160): nss-3.90.0-2.el7_9.x86_64.rpm        7.9 MB/s | 905 kB     00:00    
(137/160): nss-softokn-3.90.0-6.el7_9.x86_64.rp 2.3 MB/s | 384 kB     00:00    
(138/160): nss-pem-1.0.3-7.el7_9.1.x86_64.rpm   384 kB/s |  75 kB     00:00    
(139/160): nss-softokn-freebl-3.90.0-6.el7_9.x8 2.5 MB/s | 321 kB     00:00    
(140/160): nss-sysinit-3.90.0-2.el7_9.x86_64.rp 549 kB/s |  67 kB     00:00    
(141/160): nss-util-3.90.0-1.el7_9.x86_64.rpm   671 kB/s |  80 kB     00:00    
(142/160): nss-tools-3.90.0-2.el7_9.x86_64.rpm  2.2 MB/s | 557 kB     00:00    
(143/160): openssl-libs-1.0.2k-26.el7_9.x86_64. 5.8 MB/s | 1.2 MB     00:00    
(144/160): xz-5.2.2-2.el7_9.x86_64.rpm          1.1 MB/s | 229 kB     00:00    
(145/160): xz-libs-5.2.2-2.el7_9.x86_64.rpm     754 kB/s | 103 kB     00:00    
(146/160): zlib-1.2.7-21.el7_9.x86_64.rpm       821 kB/s |  90 kB     00:00    
(147/160): curl-7.29.0-59.el7_9.2.x86_64.rpm    2.4 MB/s | 271 kB     00:00    
(148/160): python-2.7.5-94.el7_9.x86_64.rpm     754 kB/s |  97 kB     00:00    
(149/160): libcurl-7.29.0-59.el7_9.2.x86_64.rpm 1.2 MB/s | 223 kB     00:00    
(150/160): systemd-libs-219-78.el7_9.9.x86_64.r 1.9 MB/s | 419 kB     00:00    
(151/160): systemd-219-78.el7_9.9.x86_64.rpm     20 MB/s | 5.1 MB     00:00    
(152/160): python-libs-2.7.5-94.el7_9.x86_64.rp  15 MB/s | 5.6 MB     00:00    
(153/160): tzdata-2024a-1.el7.noarch.rpm        3.6 MB/s | 497 kB     00:00    
(154/160): subscription-manager-1.24.54-1.el7_9 6.7 MB/s | 1.1 MB     00:00    
(155/160): python-syspurpose-1.24.54-1.el7_9.x8 1.3 MB/s | 277 kB     00:00    
(156/160): subscription-manager-rhsm-1.24.54-1. 2.8 MB/s | 336 kB     00:00    
(157/160): subscription-manager-rhsm-certificat 1.7 MB/s | 244 kB     00:00    
(158/160): glibc-2.17-326.el7_9.3.x86_64.rpm     19 MB/s | 3.6 MB     00:00    
(159/160): glibc-common-2.17-326.el7_9.3.x86_64  31 MB/s |  12 MB     00:00    
(160/160): redhat-release-server-7.9-12.el7_9.x 117 kB/s |  32 kB     00:00    
--------------------------------------------------------------------------------
Total                                           7.9 MB/s |  80 MB     00:10     
Red Hat Enterprise Linux                        3.1 MB/s | 3.1 kB     00:00    
Importing GPG key 0xFD431D51:
 Userid     : "Red Hat, Inc. (release key 2) <security@redhat.com>"
 Fingerprint: 567E 347A D004 4ADE 55BA 8A5F 199E 2F91 FD43 1D51
 From       : /usr/share/distribution-gpg-keys/redhat/RPM-GPG-KEY-redhat7-release
Key imported successfully
Importing GPG key 0x2FA658E0:
 Userid     : "Red Hat, Inc. (auxiliary key) <security@redhat.com>"
 Fingerprint: 43A6 E49C 4A38 F4BE 9ABF 2A53 4568 9C88 2FA6 58E0
 From       : /usr/share/distribution-gpg-keys/redhat/RPM-GPG-KEY-redhat7-release
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Running scriptlet: filesystem-3.2-25.el7.x86_64                           1/1 
  Preparing        :                                                        1/1 
  Installing       : libgcc-4.8.5-44.el7.x86_64                           1/160 
  Running scriptlet: libgcc-4.8.5-44.el7.x86_64                           1/160 
  Installing       : redhat-release-server-7.9-12.el7_9.x86_64            2/160 
  Installing       : setup-2.8.71-11.el7.noarch                           3/160 
warning: /etc/hosts created as /etc/hosts.rpmnew

  Running scriptlet: setup-2.8.71-11.el7.noarch                           3/160 
  Installing       : filesystem-3.2-25.el7.x86_64                         4/160 
  Installing       : tzdata-2024a-1.el7.noarch                            5/160 
  Installing       : basesystem-10.0-7.el7.noarch                         6/160 
  Installing       : subscription-manager-rhsm-certificates-1.24.54-1     7/160 
  Installing       : ncurses-base-5.9-14.20130511.el7_4.noarch            8/160 
  Installing       : nss-softokn-freebl-3.90.0-6.el7_9.x86_64             9/160 
  Installing       : glibc-common-2.17-326.el7_9.3.x86_64                10/160 
  Running scriptlet: glibc-common-2.17-326.el7_9.3.x86_64                10/160 
  Running scriptlet: glibc-2.17-326.el7_9.3.x86_64                       11/160 
  Installing       : glibc-2.17-326.el7_9.3.x86_64                       11/160 
  Running scriptlet: glibc-2.17-326.el7_9.3.x86_64                       11/160 
warning: posix.fork(): .fork(), .exec(), .wait() and .redirect2null() are deprecated, use rpm.spawn() or rpm.execute() instead
warning: posix.wait(): .fork(), .exec(), .wait() and .redirect2null() are deprecated, use rpm.spawn() or rpm.execute() instead
warning: posix.exec(): .fork(), .exec(), .wait() and .redirect2null() are deprecated, use rpm.spawn() or rpm.execute() instead
  Installing       : nspr-4.35.0-1.el7_9.x86_64                          12/160 
  Running scriptlet: nspr-4.35.0-1.el7_9.x86_64                          12/160 
  Installing       : nss-util-3.90.0-1.el7_9.x86_64                      13/160 
  Running scriptlet: nss-util-3.90.0-1.el7_9.x86_64                      13/160 
  Installing       : libstdc++-4.8.5-44.el7.x86_64                       14/160 
  Running scriptlet: libstdc++-4.8.5-44.el7.x86_64                       14/160 
  Installing       : ncurses-libs-5.9-14.20130511.el7_4.x86_64           15/160 
  Running scriptlet: ncurses-libs-5.9-14.20130511.el7_4.x86_64           15/160 
  Installing       : bash-4.2.46-35.el7_9.x86_64                         16/160 
  Running scriptlet: bash-4.2.46-35.el7_9.x86_64                         16/160 
  Installing       : libsepol-2.5-10.el7.x86_64                          17/160 
  Running scriptlet: libsepol-2.5-10.el7.x86_64                          17/160 
  Installing       : pcre-8.32-17.el7.x86_64                             18/160 
  Running scriptlet: pcre-8.32-17.el7.x86_64                             18/160 
  Installing       : libselinux-2.5-15.el7.x86_64                        19/160 
  Running scriptlet: libselinux-2.5-15.el7.x86_64                        19/160 
  Installing       : zlib-1.2.7-21.el7_9.x86_64                          20/160 
  Running scriptlet: zlib-1.2.7-21.el7_9.x86_64                          20/160 
  Installing       : info-5.1-5.el7.x86_64                               21/160 
  Running scriptlet: info-5.1-5.el7.x86_64                               21/160 
  Installing       : xz-libs-5.2.2-2.el7_9.x86_64                        22/160 
  Running scriptlet: xz-libs-5.2.2-2.el7_9.x86_64                        22/160 
  Installing       : bzip2-libs-1.0.6-13.el7.x86_64                      23/160 
  Running scriptlet: bzip2-libs-1.0.6-13.el7.x86_64                      23/160 
  Installing       : libdb-5.3.21-25.el7.x86_64                          24/160 
  Running scriptlet: libdb-5.3.21-25.el7.x86_64                          24/160 
  Installing       : popt-1.13-16.el7.x86_64                             25/160 
  Running scriptlet: popt-1.13-16.el7.x86_64                             25/160 
  Installing       : elfutils-libelf-0.176-5.el7.x86_64                  26/160 
  Running scriptlet: elfutils-libelf-0.176-5.el7.x86_64                  26/160 
  Installing       : libgpg-error-1.12-3.el7.x86_64                      27/160 
  Running scriptlet: libgpg-error-1.12-3.el7.x86_64                      27/160 
  Installing       : libattr-2.4.46-13.el7.x86_64                        28/160 
  Running scriptlet: libattr-2.4.46-13.el7.x86_64                        28/160 
  Installing       : libacl-2.2.51-15.el7.x86_64                         29/160 
  Running scriptlet: libacl-2.2.51-15.el7.x86_64                         29/160 
  Installing       : libcap-2.22-11.el7.x86_64                           30/160 
  Running scriptlet: libcap-2.22-11.el7.x86_64                           30/160 
  Installing       : libffi-3.0.13-19.el7.x86_64                         31/160 
  Running scriptlet: libffi-3.0.13-19.el7.x86_64                         31/160 
  Installing       : chkconfig-1.7.6-1.el7.x86_64                        32/160 
  Installing       : libgcrypt-1.5.3-14.el7.x86_64                       33/160 
  Running scriptlet: libgcrypt-1.5.3-14.el7.x86_64                       33/160 
  Installing       : libxml2-2.9.1-6.el7_9.6.x86_64                      34/160 
  Running scriptlet: libxml2-2.9.1-6.el7_9.6.x86_64                      34/160 
  Installing       : readline-6.2-11.el7.x86_64                          35/160 
  Running scriptlet: readline-6.2-11.el7.x86_64                          35/160 
  Installing       : lua-5.1.4-15.el7.x86_64                             36/160 
  Installing       : sed-4.2.2-7.el7.x86_64                              37/160 
  Running scriptlet: sed-4.2.2-7.el7.x86_64                              37/160 
  Installing       : libcom_err-1.42.9-19.el7.x86_64                     38/160 
  Running scriptlet: libcom_err-1.42.9-19.el7.x86_64                     38/160 
  Installing       : libuuid-2.23.2-65.el7_9.1.x86_64                    39/160 
  Running scriptlet: libuuid-2.23.2-65.el7_9.1.x86_64                    39/160 
  Installing       : sqlite-3.7.17-8.el7_7.1.x86_64                      40/160 
  Running scriptlet: sqlite-3.7.17-8.el7_7.1.x86_64                      40/160 
  Installing       : grep-2.20-3.el7.x86_64                              41/160 
  Running scriptlet: grep-2.20-3.el7.x86_64                              41/160 
  Installing       : cpio-2.11-28.el7.x86_64                             42/160 
  Running scriptlet: cpio-2.11-28.el7.x86_64                             42/160 
  Installing       : diffutils-3.3-6.el7_9.x86_64                        43/160 
  Running scriptlet: diffutils-3.3-6.el7_9.x86_64                        43/160 
  Installing       : libcap-ng-0.7.5-4.el7.x86_64                        44/160 
  Running scriptlet: libcap-ng-0.7.5-4.el7.x86_64                        44/160 
  Installing       : audit-libs-2.8.5-4.el7.x86_64                       45/160 
  Running scriptlet: audit-libs-2.8.5-4.el7.x86_64                       45/160 
  Installing       : expat-2.1.0-15.el7_9.x86_64                         46/160 
  Running scriptlet: expat-2.1.0-15.el7_9.x86_64                         46/160 
  Installing       : nss-softokn-3.90.0-6.el7_9.x86_64                   47/160 
  Running scriptlet: nss-softokn-3.90.0-6.el7_9.x86_64                   47/160 
  Installing       : p11-kit-0.23.5-3.el7.x86_64                         48/160 
  Running scriptlet: p11-kit-0.23.5-3.el7.x86_64                         48/160 
  Installing       : libassuan-2.1.0-3.el7.x86_64                        49/160 
  Running scriptlet: libassuan-2.1.0-3.el7.x86_64                        49/160 
  Installing       : xz-5.2.2-2.el7_9.x86_64                             50/160 
  Installing       : gawk-4.0.2-4.el7_3.1.x86_64                         51/160 
  Running scriptlet: gawk-4.0.2-4.el7_3.1.x86_64                         51/160 
  Installing       : findutils-1:4.5.11-6.el7.x86_64                     52/160 
  Running scriptlet: findutils-1:4.5.11-6.el7.x86_64                     52/160 
  Installing       : file-libs-5.11-37.el7.x86_64                        53/160 
  Running scriptlet: file-libs-5.11-37.el7.x86_64                        53/160 
  Installing       : keyutils-libs-1.5.8-3.el7.x86_64                    54/160 
  Running scriptlet: keyutils-libs-1.5.8-3.el7.x86_64                    54/160 
  Installing       : lz4-1.8.3-1.el7.x86_64                              55/160 
  Running scriptlet: lz4-1.8.3-1.el7.x86_64                              55/160 
  Running scriptlet: pinentry-0.8.1-17.el7.x86_64                        56/160 
  Installing       : pinentry-0.8.1-17.el7.x86_64                        56/160 
  Running scriptlet: pinentry-0.8.1-17.el7.x86_64                        56/160 
  Installing       : tar-2:1.26-35.el7.x86_64                            57/160 
  Running scriptlet: tar-2:1.26-35.el7.x86_64                            57/160 
  Installing       : acl-2.2.51-15.el7.x86_64                            58/160 
  Installing       : libdb-utils-5.3.21-25.el7.x86_64                    59/160 
  Installing       : kmod-libs-20-28.el7.x86_64                          60/160 
  Running scriptlet: kmod-libs-20-28.el7.x86_64                          60/160 
  Installing       : which-2.20-7.el7.x86_64                             61/160 
  Running scriptlet: which-2.20-7.el7.x86_64                             61/160 
  Installing       : libidn-1.28-4.el7.x86_64                            62/160 
  Running scriptlet: libidn-1.28-4.el7.x86_64                            62/160 
  Installing       : ncurses-5.9-14.20130511.el7_4.x86_64                63/160 
  Installing       : gmp-1:6.0.0-15.el7.x86_64                           64/160 
  Running scriptlet: gmp-1:6.0.0-15.el7.x86_64                           64/160 
  Installing       : hardlink-1:1.0-19.el7.x86_64                        65/160 
  Installing       : libnl-1.1.4-3.el7.x86_64                            66/160 
  Running scriptlet: libnl-1.1.4-3.el7.x86_64                            66/160 
  Installing       : qrencode-libs-3.4.1-3.el7.x86_64                    67/160 
  Running scriptlet: qrencode-libs-3.4.1-3.el7.x86_64                    67/160 
  Installing       : ustr-1.0.4-16.el7.x86_64                            68/160 
  Running scriptlet: ustr-1.0.4-16.el7.x86_64                            68/160 
  Installing       : libsemanage-2.5-14.el7.x86_64                       69/160 
  Running scriptlet: libsemanage-2.5-14.el7.x86_64                       69/160 
  Installing       : gdbm-1.10-8.el7.x86_64                              70/160 
  Running scriptlet: gdbm-1.10-8.el7.x86_64                              70/160 
  Installing       : libverto-0.2.5-4.el7.x86_64                         71/160 
  Running scriptlet: libverto-0.2.5-4.el7.x86_64                         71/160 
  Installing       : json-c-0.11-4.el7_0.x86_64                          72/160 
  Running scriptlet: json-c-0.11-4.el7_0.x86_64                          72/160 
  Installing       : pth-2.0.7-23.el7.x86_64                             73/160 
  Running scriptlet: pth-2.0.7-23.el7.x86_64                             73/160 
  Installing       : libtasn1-4.10-1.el7.x86_64                          74/160 
  Running scriptlet: libtasn1-4.10-1.el7.x86_64                          74/160 
  Installing       : p11-kit-trust-0.23.5-3.el7.x86_64                   75/160 
  Running scriptlet: p11-kit-trust-0.23.5-3.el7.x86_64                   75/160 
  Running scriptlet: ca-certificates-2023.2.60_v7.0.306-72.el7_9.noar    76/160 
  Installing       : ca-certificates-2023.2.60_v7.0.306-72.el7_9.noar    76/160 
  Running scriptlet: ca-certificates-2023.2.60_v7.0.306-72.el7_9.noar    76/160 
  Running scriptlet: coreutils-8.22-24.el7_9.2.x86_64                    77/160 
  Installing       : coreutils-8.22-24.el7_9.2.x86_64                    77/160 
  Running scriptlet: coreutils-8.22-24.el7_9.2.x86_64                    77/160 
  Installing       : krb5-libs-1.15.1-55.el7_9.x86_64                    78/160 
  Running scriptlet: krb5-libs-1.15.1-55.el7_9.x86_64                    78/160 
  Installing       : openssl-libs-1:1.0.2k-26.el7_9.x86_64               79/160 
  Running scriptlet: openssl-libs-1:1.0.2k-26.el7_9.x86_64               79/160 
  Installing       : python-libs-2.7.5-94.el7_9.x86_64                   80/160 
  Running scriptlet: python-libs-2.7.5-94.el7_9.x86_64                   80/160 
  Installing       : python-2.7.5-94.el7_9.x86_64                        81/160 
  Installing       : libblkid-2.23.2-65.el7_9.1.x86_64                   82/160 
  Running scriptlet: libblkid-2.23.2-65.el7_9.1.x86_64                   82/160 
  Installing       : libmount-2.23.2-65.el7_9.1.x86_64                   83/160 
  Running scriptlet: libmount-2.23.2-65.el7_9.1.x86_64                   83/160 
  Installing       : glib2-2.56.1-9.el7_9.x86_64                         84/160 
  Running scriptlet: glib2-2.56.1-9.el7_9.x86_64                         84/160 
  Installing       : shared-mime-info-1.8-5.el7.x86_64                   85/160 
  Running scriptlet: shared-mime-info-1.8-5.el7.x86_64                   85/160 
  Installing       : python-iniparse-0.4-9.el7.noarch                    86/160 
  Installing       : python-six-1.9.0-2.el7.noarch                       87/160 
  Installing       : shadow-utils-2:4.6-5.el7.x86_64                     88/160 
  Installing       : gzip-1.5-11.el7_9.x86_64                            89/160 
  Running scriptlet: gzip-1.5-11.el7_9.x86_64                            89/160 
  Installing       : cracklib-2.9.0-11.el7.x86_64                        90/160 
  Running scriptlet: cracklib-2.9.0-11.el7.x86_64                        90/160 
  Installing       : cracklib-dicts-2.9.0-11.el7.x86_64                  91/160 
  Installing       : gobject-introspection-1.56.1-1.el7.x86_64           92/160 
  Running scriptlet: gobject-introspection-1.56.1-1.el7.x86_64           92/160 
  Installing       : python-dateutil-1.5-7.el7.noarch                    93/160 
  Installing       : python-ipaddress-1.0.16-2.el7.noarch                94/160 
  Installing       : python-chardet-2.2.1-3.el7.noarch                   95/160 
  Installing       : libxml2-python-2.9.1-6.el7_9.6.x86_64               96/160 
  Installing       : python-dmidecode-3.12.2-4.el7.x86_64                97/160 
  Installing       : python-kitchen-1.1.1-5.el7.noarch                   98/160 
  Installing       : python-gobject-base-3.22.0-1.el7_4.1.x86_64         99/160 
  Installing       : libpwquality-1.2.3-5.el7.x86_64                    100/160 
  Running scriptlet: libpwquality-1.2.3-5.el7.x86_64                    100/160 
  Installing       : pam-1.1.8-23.el7.x86_64                            101/160 
  Running scriptlet: pam-1.1.8-23.el7.x86_64                            101/160 
  Running scriptlet: libutempter-1.1.6-4.el7.x86_64                     102/160 
  Installing       : libutempter-1.1.6-4.el7.x86_64                     102/160 
  Running scriptlet: libutempter-1.1.6-4.el7.x86_64                     102/160 
  Installing       : pkgconfig-1:0.27.1-4.el7.x86_64                    103/160 
  Installing       : yum-metadata-parser-1.1.4-10.el7.x86_64            104/160 
  Installing       : pyxattr-0.5.1-5.el7.x86_64                         105/160 
  Installing       : python-inotify-0.9.4-4.el7.noarch                  106/160 
  Installing       : python-decorator-3.4.0-3.el7.noarch                107/160 
  Installing       : pyliblzma-0.5.3-11.el7.x86_64                      108/160 
  Installing       : python-backports-1.0-8.el7.x86_64                  109/160 
  Installing       : python-backports-ssl_match_hostname-3.5.0.1-1.el   110/160 
  Installing       : python-setuptools-0.9.8-7.el7.noarch               111/160 
  Installing       : python-urllib3-1.10.2-7.el7.noarch                 112/160 
  Installing       : python-requests-2.6.0-10.el7.noarch                113/160 
  Installing       : python-ethtool-0.8-8.el7.x86_64                    114/160 
  Installing       : python-syspurpose-1.24.54-1.el7_9.x86_64           115/160 
  Installing       : libssh2-1.8.0-4.el7_9.1.x86_64                     116/160 
  Running scriptlet: libssh2-1.8.0-4.el7_9.1.x86_64                     116/160 
  Installing       : cyrus-sasl-lib-2.1.26-24.el7_9.x86_64              117/160 
  Running scriptlet: cyrus-sasl-lib-2.1.26-24.el7_9.x86_64              117/160 
  Installing       : binutils-2.27-44.base.el7_9.1.x86_64               118/160 
  Running scriptlet: binutils-2.27-44.base.el7_9.1.x86_64               118/160 
  Installing       : nss-pem-1.0.3-7.el7_9.1.x86_64                     119/160 
  Installing       : nss-3.90.0-2.el7_9.x86_64                          120/160 
  Running scriptlet: nss-3.90.0-2.el7_9.x86_64                          120/160 
  Installing       : nss-sysinit-3.90.0-2.el7_9.x86_64                  121/160 
  Installing       : nss-tools-3.90.0-2.el7_9.x86_64                    122/160 
  Installing       : libcurl-7.29.0-59.el7_9.2.x86_64                   123/160 
  Running scriptlet: libcurl-7.29.0-59.el7_9.2.x86_64                   123/160 
  Installing       : curl-7.29.0-59.el7_9.2.x86_64                      124/160 
  Installing       : rpm-libs-4.11.3-48.el7_9.x86_64                    125/160 
  Running scriptlet: rpm-libs-4.11.3-48.el7_9.x86_64                    125/160 
  Installing       : rpm-4.11.3-48.el7_9.x86_64                         126/160 
  Installing       : openldap-2.4.44-25.el7_9.x86_64                    127/160 
  Running scriptlet: openldap-2.4.44-25.el7_9.x86_64                    127/160 
  Installing       : libuser-0.60-9.el7.x86_64                          128/160 
  Running scriptlet: libuser-0.60-9.el7.x86_64                          128/160 
  Installing       : gnupg2-2.0.22-5.el7_5.x86_64                       129/160 
  Running scriptlet: gnupg2-2.0.22-5.el7_5.x86_64                       129/160 
  Installing       : gpgme-1.3.2-5.el7.x86_64                           130/160 
  Running scriptlet: gpgme-1.3.2-5.el7.x86_64                           130/160 
  Installing       : pygpgme-0.3-9.el7.x86_64                           131/160 
  Installing       : rpm-build-libs-4.11.3-48.el7_9.x86_64              132/160 
  Running scriptlet: rpm-build-libs-4.11.3-48.el7_9.x86_64              132/160 
  Installing       : rpm-python-4.11.3-48.el7_9.x86_64                  133/160 
  Installing       : subscription-manager-rhsm-1.24.54-1.el7_9.x86_64   134/160 
  Installing       : passwd-0.79-6.el7.x86_64                           135/160 
  Installing       : python-pycurl-7.19.0-19.el7.x86_64                 136/160 
  Installing       : python-urlgrabber-3.10-10.el7.noarch               137/160 
  Installing       : yum-3.4.3-168.el7.noarch                           138/160 
warning: /etc/yum.conf created as /etc/yum.conf.rpmnew

  Installing       : dmidecode-1:3.2-5.el7_9.1.x86_64                   139/160 
  Installing       : libsmartcols-2.23.2-65.el7_9.1.x86_64              140/160 
  Running scriptlet: libsmartcols-2.23.2-65.el7_9.1.x86_64              140/160 
  Installing       : procps-ng-3.3.10-28.el7.x86_64                     141/160 
  Running scriptlet: procps-ng-3.3.10-28.el7.x86_64                     141/160 
  Installing       : util-linux-2.23.2-65.el7_9.1.x86_64                142/160 
  Running scriptlet: util-linux-2.23.2-65.el7_9.1.x86_64                142/160 
  Installing       : kpartx-0.4.9-136.el7_9.x86_64                      143/160 
  Installing       : device-mapper-7:1.02.170-6.el7_9.5.x86_64          144/160 
  Running scriptlet: device-mapper-7:1.02.170-6.el7_9.5.x86_64          144/160 
  Installing       : dracut-033-572.el7.x86_64                          145/160 
  Installing       : kmod-20-28.el7.x86_64                              146/160 
  Installing       : device-mapper-libs-7:1.02.170-6.el7_9.5.x86_64     147/160 
  Running scriptlet: device-mapper-libs-7:1.02.170-6.el7_9.5.x86_64     147/160 
  Installing       : cryptsetup-libs-2.0.3-6.el7.x86_64                 148/160 
  Running scriptlet: cryptsetup-libs-2.0.3-6.el7.x86_64                 148/160 
  Installing       : elfutils-libs-0.176-5.el7.x86_64                   149/160 
  Running scriptlet: elfutils-libs-0.176-5.el7.x86_64                   149/160 
  Installing       : systemd-libs-219-78.el7_9.9.x86_64                 150/160 
  Running scriptlet: systemd-libs-219-78.el7_9.9.x86_64                 150/160 
  Installing       : dbus-libs-1:1.10.24-15.el7.x86_64                  151/160 
  Running scriptlet: dbus-libs-1:1.10.24-15.el7.x86_64                  151/160 
  Running scriptlet: systemd-219-78.el7_9.9.x86_64                      152/160 
  Installing       : systemd-219-78.el7_9.9.x86_64                      152/160 
  Running scriptlet: systemd-219-78.el7_9.9.x86_64                      152/160 
Running in chroot, ignoring request.

  Running scriptlet: dbus-1:1.10.24-15.el7.x86_64                       153/160 
  Installing       : dbus-1:1.10.24-15.el7.x86_64                       153/160 
  Installing       : elfutils-default-yama-scope-0.176-5.el7.noarch     154/160 
  Running scriptlet: elfutils-default-yama-scope-0.176-5.el7.noarch     154/160 
  Installing       : dbus-glib-0.100-7.el7.x86_64                       155/160 
  Running scriptlet: dbus-glib-0.100-7.el7.x86_64                       155/160 
  Installing       : dbus-python-1.1.1-9.el7.x86_64                     156/160 
  Installing       : usermode-1.111-6.el7.x86_64                        157/160 
  Installing       : virt-what-1.18-4.el7_9.1.x86_64                    158/160 
  Installing       : subscription-manager-1.24.54-1.el7_9.x86_64        159/160 
  Running scriptlet: subscription-manager-1.24.54-1.el7_9.x86_64        159/160 
  Installing       : yum-utils-1.1.31-54.el7_8.noarch                   160/160 
  Running scriptlet: filesystem-3.2-25.el7.x86_64                       160/160 
  Running scriptlet: p11-kit-trust-0.23.5-3.el7.x86_64                  160/160 
  Running scriptlet: shared-mime-info-1.8-5.el7.x86_64                  160/160 
  Running scriptlet: rpm-4.11.3-48.el7_9.x86_64                         160/160 
  Running scriptlet: systemd-219-78.el7_9.9.x86_64                      160/160 
Installed products updated.

Installed:
  acl-2.2.51-15.el7.x86_64                                                      
  audit-libs-2.8.5-4.el7.x86_64                                                 
  basesystem-10.0-7.el7.noarch                                                  
  bash-4.2.46-35.el7_9.x86_64                                                   
  binutils-2.27-44.base.el7_9.1.x86_64                                          
  bzip2-libs-1.0.6-13.el7.x86_64                                                
  ca-certificates-2023.2.60_v7.0.306-72.el7_9.noarch                            
  chkconfig-1.7.6-1.el7.x86_64                                                  
  coreutils-8.22-24.el7_9.2.x86_64                                              
  cpio-2.11-28.el7.x86_64                                                       
  cracklib-2.9.0-11.el7.x86_64                                                  
  cracklib-dicts-2.9.0-11.el7.x86_64                                            
  cryptsetup-libs-2.0.3-6.el7.x86_64                                            
  curl-7.29.0-59.el7_9.2.x86_64                                                 
  cyrus-sasl-lib-2.1.26-24.el7_9.x86_64                                         
  dbus-1:1.10.24-15.el7.x86_64                                                  
  dbus-glib-0.100-7.el7.x86_64                                                  
  dbus-libs-1:1.10.24-15.el7.x86_64                                             
  dbus-python-1.1.1-9.el7.x86_64                                                
  device-mapper-7:1.02.170-6.el7_9.5.x86_64                                     
  device-mapper-libs-7:1.02.170-6.el7_9.5.x86_64                                
  diffutils-3.3-6.el7_9.x86_64                                                  
  dmidecode-1:3.2-5.el7_9.1.x86_64                                              
  dracut-033-572.el7.x86_64                                                     
  elfutils-default-yama-scope-0.176-5.el7.noarch                                
  elfutils-libelf-0.176-5.el7.x86_64                                            
  elfutils-libs-0.176-5.el7.x86_64                                              
  expat-2.1.0-15.el7_9.x86_64                                                   
  file-libs-5.11-37.el7.x86_64                                                  
  filesystem-3.2-25.el7.x86_64                                                  
  findutils-1:4.5.11-6.el7.x86_64                                               
  gawk-4.0.2-4.el7_3.1.x86_64                                                   
  gdbm-1.10-8.el7.x86_64                                                        
  glib2-2.56.1-9.el7_9.x86_64                                                   
  glibc-2.17-326.el7_9.3.x86_64                                                 
  glibc-common-2.17-326.el7_9.3.x86_64                                          
  gmp-1:6.0.0-15.el7.x86_64                                                     
  gnupg2-2.0.22-5.el7_5.x86_64                                                  
  gobject-introspection-1.56.1-1.el7.x86_64                                     
  gpgme-1.3.2-5.el7.x86_64                                                      
  grep-2.20-3.el7.x86_64                                                        
  gzip-1.5-11.el7_9.x86_64                                                      
  hardlink-1:1.0-19.el7.x86_64                                                  
  info-5.1-5.el7.x86_64                                                         
  json-c-0.11-4.el7_0.x86_64                                                    
  keyutils-libs-1.5.8-3.el7.x86_64                                              
  kmod-20-28.el7.x86_64                                                         
  kmod-libs-20-28.el7.x86_64                                                    
  kpartx-0.4.9-136.el7_9.x86_64                                                 
  krb5-libs-1.15.1-55.el7_9.x86_64                                              
  libacl-2.2.51-15.el7.x86_64                                                   
  libassuan-2.1.0-3.el7.x86_64                                                  
  libattr-2.4.46-13.el7.x86_64                                                  
  libblkid-2.23.2-65.el7_9.1.x86_64                                             
  libcap-2.22-11.el7.x86_64                                                     
  libcap-ng-0.7.5-4.el7.x86_64                                                  
  libcom_err-1.42.9-19.el7.x86_64                                               
  libcurl-7.29.0-59.el7_9.2.x86_64                                              
  libdb-5.3.21-25.el7.x86_64                                                    
  libdb-utils-5.3.21-25.el7.x86_64                                              
  libffi-3.0.13-19.el7.x86_64                                                   
  libgcc-4.8.5-44.el7.x86_64                                                    
  libgcrypt-1.5.3-14.el7.x86_64                                                 
  libgpg-error-1.12-3.el7.x86_64                                                
  libidn-1.28-4.el7.x86_64                                                      
  libmount-2.23.2-65.el7_9.1.x86_64                                             
  libnl-1.1.4-3.el7.x86_64                                                      
  libpwquality-1.2.3-5.el7.x86_64                                               
  libselinux-2.5-15.el7.x86_64                                                  
  libsemanage-2.5-14.el7.x86_64                                                 
  libsepol-2.5-10.el7.x86_64                                                    
  libsmartcols-2.23.2-65.el7_9.1.x86_64                                         
  libssh2-1.8.0-4.el7_9.1.x86_64                                                
  libstdc++-4.8.5-44.el7.x86_64                                                 
  libtasn1-4.10-1.el7.x86_64                                                    
  libuser-0.60-9.el7.x86_64                                                     
  libutempter-1.1.6-4.el7.x86_64                                                
  libuuid-2.23.2-65.el7_9.1.x86_64                                              
  libverto-0.2.5-4.el7.x86_64                                                   
  libxml2-2.9.1-6.el7_9.6.x86_64                                                
  libxml2-python-2.9.1-6.el7_9.6.x86_64                                         
  lua-5.1.4-15.el7.x86_64                                                       
  lz4-1.8.3-1.el7.x86_64                                                        
  ncurses-5.9-14.20130511.el7_4.x86_64                                          
  ncurses-base-5.9-14.20130511.el7_4.noarch                                     
  ncurses-libs-5.9-14.20130511.el7_4.x86_64                                     
  nspr-4.35.0-1.el7_9.x86_64                                                    
  nss-3.90.0-2.el7_9.x86_64                                                     
  nss-pem-1.0.3-7.el7_9.1.x86_64                                                
  nss-softokn-3.90.0-6.el7_9.x86_64                                             
  nss-softokn-freebl-3.90.0-6.el7_9.x86_64                                      
  nss-sysinit-3.90.0-2.el7_9.x86_64                                             
  nss-tools-3.90.0-2.el7_9.x86_64                                               
  nss-util-3.90.0-1.el7_9.x86_64                                                
  openldap-2.4.44-25.el7_9.x86_64                                               
  openssl-libs-1:1.0.2k-26.el7_9.x86_64                                         
  p11-kit-0.23.5-3.el7.x86_64                                                   
  p11-kit-trust-0.23.5-3.el7.x86_64                                             
  pam-1.1.8-23.el7.x86_64                                                       
  passwd-0.79-6.el7.x86_64                                                      
  pcre-8.32-17.el7.x86_64                                                       
  pinentry-0.8.1-17.el7.x86_64                                                  
  pkgconfig-1:0.27.1-4.el7.x86_64                                               
  popt-1.13-16.el7.x86_64                                                       
  procps-ng-3.3.10-28.el7.x86_64                                                
  pth-2.0.7-23.el7.x86_64                                                       
  pygpgme-0.3-9.el7.x86_64                                                      
  pyliblzma-0.5.3-11.el7.x86_64                                                 
  python-2.7.5-94.el7_9.x86_64                                                  
  python-backports-1.0-8.el7.x86_64                                             
  python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarch                      
  python-chardet-2.2.1-3.el7.noarch                                             
  python-dateutil-1.5-7.el7.noarch                                              
  python-decorator-3.4.0-3.el7.noarch                                           
  python-dmidecode-3.12.2-4.el7.x86_64                                          
  python-ethtool-0.8-8.el7.x86_64                                               
  python-gobject-base-3.22.0-1.el7_4.1.x86_64                                   
  python-iniparse-0.4-9.el7.noarch                                              
  python-inotify-0.9.4-4.el7.noarch                                             
  python-ipaddress-1.0.16-2.el7.noarch                                          
  python-kitchen-1.1.1-5.el7.noarch                                             
  python-libs-2.7.5-94.el7_9.x86_64                                             
  python-pycurl-7.19.0-19.el7.x86_64                                            
  python-requests-2.6.0-10.el7.noarch                                           
  python-setuptools-0.9.8-7.el7.noarch                                          
  python-six-1.9.0-2.el7.noarch                                                 
  python-syspurpose-1.24.54-1.el7_9.x86_64                                      
  python-urlgrabber-3.10-10.el7.noarch                                          
  python-urllib3-1.10.2-7.el7.noarch                                            
  pyxattr-0.5.1-5.el7.x86_64                                                    
  qrencode-libs-3.4.1-3.el7.x86_64                                              
  readline-6.2-11.el7.x86_64                                                    
  redhat-release-server-7.9-12.el7_9.x86_64                                     
  rpm-4.11.3-48.el7_9.x86_64                                                    
  rpm-build-libs-4.11.3-48.el7_9.x86_64                                         
  rpm-libs-4.11.3-48.el7_9.x86_64                                               
  rpm-python-4.11.3-48.el7_9.x86_64                                             
  sed-4.2.2-7.el7.x86_64                                                        
  setup-2.8.71-11.el7.noarch                                                    
  shadow-utils-2:4.6-5.el7.x86_64                                               
  shared-mime-info-1.8-5.el7.x86_64                                             
  sqlite-3.7.17-8.el7_7.1.x86_64                                                
  subscription-manager-1.24.54-1.el7_9.x86_64                                   
  subscription-manager-rhsm-1.24.54-1.el7_9.x86_64                              
  subscription-manager-rhsm-certificates-1.24.54-1.el7_9.x86_64                 
  systemd-219-78.el7_9.9.x86_64                                                 
  systemd-libs-219-78.el7_9.9.x86_64                                            
  tar-2:1.26-35.el7.x86_64                                                      
  tzdata-2024a-1.el7.noarch                                                     
  usermode-1.111-6.el7.x86_64                                                   
  ustr-1.0.4-16.el7.x86_64                                                      
  util-linux-2.23.2-65.el7_9.1.x86_64                                           
  virt-what-1.18-4.el7_9.1.x86_64                                               
  which-2.20-7.el7.x86_64                                                       
  xz-5.2.2-2.el7_9.x86_64                                                       
  xz-libs-5.2.2-2.el7_9.x86_64                                                  
  yum-3.4.3-168.el7.noarch                                                      
  yum-metadata-parser-1.1.4-10.el7.x86_64                                       
  yum-utils-1.1.31-54.el7_8.noarch                                              
  zlib-1.2.7-21.el7_9.x86_64                                                    

Complete!
Finish(bootstrap): installing yum tooling
Start(bootstrap): creating root cache
Finish(bootstrap): creating root cache
Finish(bootstrap): chroot init
Start: chroot init
INFO: mounting tmpfs at /var/lib/mock/rhel+epel-7-x86_64-1738090627.921135/root.
INFO: calling preinit hooks
INFO: enabled root cache
INFO: enabled package manager cache
Start: cleaning package manager metadata
Finish: cleaning package manager metadata
INFO: enabled HW Info plugin
INFO: Package manager yum detected and used (direct choice)
INFO: Buildroot is handled by package management installed into bootstrap:
  rpm-4.11.3-48.el7_9.x86_64
  yum-3.4.3-168.el7.noarch
  yum-utils-1.1.31-54.el7_8.noarch
Start: installing minimal buildroot with yum
Failed to set locale, defaulting to C
copr_base                                                | 2.1 kB     00:00     
epel                                                     | 4.3 kB     00:00     
rhel                                                     | 3.5 kB     00:00     
rhel-optional                                            | 3.2 kB     00:00     
epel/x86_64/updateinfo         FAILED                                          
http://mirror.fcix.net/fedora-archive/epel/7/x86_64/repodata/ee7ce72544e0fca006120c613404d937cc3da9d09c7d80aea269df31639f310c-updateinfo.xml.bz2: [Errno 14] HTTP Error 404 - Not Found
Trying other mirror.
To address this issue please refer to the below knowledge base article 

https://access.redhat.com/articles/1320623

If above article doesn't help to resolve this issue please open a ticket with Red Hat Support.

(1/10): copr_base/primary                                  | 1.6 kB   00:00     
(2/10): epel/x86_64/group                                  | 399 kB   00:00     
(3/10): epel/x86_64/primary_db                             | 8.7 MB   00:00     
(4/10): rhel/7Server/x86_64/group                          | 631 kB   00:00     
(5/10): rhel-optional/7Server/x86_64/group                 |  22 kB   00:00     
(6/10): epel/x86_64/updateinfo                             | 1.0 MB   00:00     
(7/10): rhel/7Server/x86_64/updateinfo                     | 4.3 MB   00:01     
(8/10): rhel-optional/7Server/x86_64/updateinfo            | 3.1 MB   00:00     
(9/10): rhel-optional/7Server/x86_64/primary_db            | 9.8 MB   00:01     
(10/10): rhel/7Server/x86_64/primary_db                    |  96 MB   00:03     
copr_base                                                                   3/3
Resolving Dependencies
--> Running transaction check
---> Package bash.x86_64 0:4.2.46-35.el7_9 will be installed
--> Processing Dependency: libc.so.6(GLIBC_2.11)(64bit) for package: bash-4.2.46-35.el7_9.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.14)(64bit) for package: bash-4.2.46-35.el7_9.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.15)(64bit) for package: bash-4.2.46-35.el7_9.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.2.5)(64bit) for package: bash-4.2.46-35.el7_9.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.3)(64bit) for package: bash-4.2.46-35.el7_9.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.3.4)(64bit) for package: bash-4.2.46-35.el7_9.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.4)(64bit) for package: bash-4.2.46-35.el7_9.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.8)(64bit) for package: bash-4.2.46-35.el7_9.x86_64
--> Processing Dependency: libdl.so.2(GLIBC_2.2.5)(64bit) for package: bash-4.2.46-35.el7_9.x86_64
--> Processing Dependency: rtld(GNU_HASH) for package: bash-4.2.46-35.el7_9.x86_64
--> Processing Dependency: libc.so.6()(64bit) for package: bash-4.2.46-35.el7_9.x86_64
--> Processing Dependency: libdl.so.2()(64bit) for package: bash-4.2.46-35.el7_9.x86_64
--> Processing Dependency: libtinfo.so.5()(64bit) for package: bash-4.2.46-35.el7_9.x86_64
---> Package bzip2.x86_64 0:1.0.6-13.el7 will be installed
--> Processing Dependency: bzip2-libs = 1.0.6-13.el7 for package: bzip2-1.0.6-13.el7.x86_64
--> Processing Dependency: libbz2.so.1()(64bit) for package: bzip2-1.0.6-13.el7.x86_64
---> Package coreutils.x86_64 0:8.22-24.el7_9.2 will be installed
--> Processing Dependency: gmp for package: coreutils-8.22-24.el7_9.2.x86_64
--> Processing Dependency: libacl.so.1(ACL_1.0)(64bit) for package: coreutils-8.22-24.el7_9.2.x86_64
--> Processing Dependency: libattr.so.1(ATTR_1.1)(64bit) for package: coreutils-8.22-24.el7_9.2.x86_64
--> Processing Dependency: libcrypto.so.10(libcrypto.so.10)(64bit) for package: coreutils-8.22-24.el7_9.2.x86_64
--> Processing Dependency: ncurses for package: coreutils-8.22-24.el7_9.2.x86_64
--> Processing Dependency: libacl.so.1()(64bit) for package: coreutils-8.22-24.el7_9.2.x86_64
--> Processing Dependency: libattr.so.1()(64bit) for package: coreutils-8.22-24.el7_9.2.x86_64
--> Processing Dependency: libcap.so.2()(64bit) for package: coreutils-8.22-24.el7_9.2.x86_64
--> Processing Dependency: libcrypto.so.10()(64bit) for package: coreutils-8.22-24.el7_9.2.x86_64
--> Processing Dependency: libgmp.so.10()(64bit) for package: coreutils-8.22-24.el7_9.2.x86_64
--> Processing Dependency: libselinux.so.1()(64bit) for package: coreutils-8.22-24.el7_9.2.x86_64
---> Package cpio.x86_64 0:2.11-28.el7 will be installed
---> Package diffutils.x86_64 0:3.3-6.el7_9 will be installed
---> Package epel-release.noarch 0:7-14 will be installed
--> Processing Dependency: redhat-release >= 7 for package: epel-release-7-14.noarch
---> Package epel-rpm-macros.noarch 0:7-38 will be installed
--> Processing Dependency: lua-srpm-macros for package: epel-rpm-macros-7-38.noarch
--> Processing Dependency: perl-generators-epel for package: epel-rpm-macros-7-38.noarch
--> Processing Dependency: python-rpm-macros for package: epel-rpm-macros-7-38.noarch
--> Processing Dependency: python-srpm-macros for package: epel-rpm-macros-7-38.noarch
--> Processing Dependency: python2-rpm-macros for package: epel-rpm-macros-7-38.noarch
---> Package findutils.x86_64 1:4.5.11-6.el7 will be installed
---> Package gawk.x86_64 0:4.0.2-4.el7_3.1 will be installed
---> Package gcc.x86_64 0:4.8.5-44.el7 will be installed
--> Processing Dependency: cpp = 4.8.5-44.el7 for package: gcc-4.8.5-44.el7.x86_64
--> Processing Dependency: libgomp = 4.8.5-44.el7 for package: gcc-4.8.5-44.el7.x86_64
--> Processing Dependency: binutils >= 2.20.51.0.2-12 for package: gcc-4.8.5-44.el7.x86_64
--> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc-4.8.5-44.el7.x86_64
--> Processing Dependency: libgcc >= 4.8.5-44.el7 for package: gcc-4.8.5-44.el7.x86_64
--> Processing Dependency: libgcc_s.so.1()(64bit) for package: gcc-4.8.5-44.el7.x86_64
--> Processing Dependency: libgomp.so.1()(64bit) for package: gcc-4.8.5-44.el7.x86_64
--> Processing Dependency: libmpc.so.3()(64bit) for package: gcc-4.8.5-44.el7.x86_64
--> Processing Dependency: libmpfr.so.4()(64bit) for package: gcc-4.8.5-44.el7.x86_64
--> Processing Dependency: libz.so.1()(64bit) for package: gcc-4.8.5-44.el7.x86_64
---> Package gcc-c++.x86_64 0:4.8.5-44.el7 will be installed
--> Processing Dependency: libstdc++ = 4.8.5-44.el7 for package: gcc-c++-4.8.5-44.el7.x86_64
--> Processing Dependency: libstdc++-devel = 4.8.5-44.el7 for package: gcc-c++-4.8.5-44.el7.x86_64
--> Processing Dependency: libstdc++.so.6()(64bit) for package: gcc-c++-4.8.5-44.el7.x86_64
---> Package grep.x86_64 0:2.20-3.el7 will be installed
--> Processing Dependency: libpcre.so.1()(64bit) for package: grep-2.20-3.el7.x86_64
---> Package gzip.x86_64 0:1.5-11.el7_9 will be installed
---> Package info.x86_64 0:5.1-5.el7 will be installed
---> Package make.x86_64 1:3.82-24.el7 will be installed
---> Package patch.x86_64 0:2.7.1-12.el7_7 will be installed
---> Package redhat-rpm-config.noarch 0:9.1.0-88.el7 will be installed
--> Processing Dependency: dwz >= 0.4 for package: redhat-rpm-config-9.1.0-88.el7.noarch
--> Processing Dependency: rpm >= 4.9.0 for package: redhat-rpm-config-9.1.0-88.el7.noarch
--> Processing Dependency: /usr/bin/perl for package: redhat-rpm-config-9.1.0-88.el7.noarch
--> Processing Dependency: perl(Getopt::Long) for package: redhat-rpm-config-9.1.0-88.el7.noarch
--> Processing Dependency: perl-srpm-macros for package: redhat-rpm-config-9.1.0-88.el7.noarch
--> Processing Dependency: zip for package: redhat-rpm-config-9.1.0-88.el7.noarch
---> Package rpm-build.x86_64 0:4.11.3-48.el7_9 will be installed
--> Processing Dependency: elfutils >= 0.128 for package: rpm-build-4.11.3-48.el7_9.x86_64
--> Processing Dependency: pkgconfig >= 1:0.24 for package: rpm-build-4.11.3-48.el7_9.x86_64
--> Processing Dependency: /usr/bin/gdb-add-index for package: rpm-build-4.11.3-48.el7_9.x86_64
--> Processing Dependency: file for package: rpm-build-4.11.3-48.el7_9.x86_64
--> Processing Dependency: libelf.so.1(ELFUTILS_1.0)(64bit) for package: rpm-build-4.11.3-48.el7_9.x86_64
--> Processing Dependency: libpopt.so.0(LIBPOPT_0)(64bit) for package: rpm-build-4.11.3-48.el7_9.x86_64
--> Processing Dependency: perl(File::Temp) for package: rpm-build-4.11.3-48.el7_9.x86_64
--> Processing Dependency: perl(Thread::Queue) for package: rpm-build-4.11.3-48.el7_9.x86_64
--> Processing Dependency: perl(threads) for package: rpm-build-4.11.3-48.el7_9.x86_64
--> Processing Dependency: libaudit.so.1()(64bit) for package: rpm-build-4.11.3-48.el7_9.x86_64
--> Processing Dependency: libdb-5.3.so()(64bit) for package: rpm-build-4.11.3-48.el7_9.x86_64
--> Processing Dependency: libelf.so.1()(64bit) for package: rpm-build-4.11.3-48.el7_9.x86_64
--> Processing Dependency: liblua-5.1.so()(64bit) for package: rpm-build-4.11.3-48.el7_9.x86_64
--> Processing Dependency: liblzma.so.5()(64bit) for package: rpm-build-4.11.3-48.el7_9.x86_64
--> Processing Dependency: libmagic.so.1()(64bit) for package: rpm-build-4.11.3-48.el7_9.x86_64
--> Processing Dependency: libnss3.so()(64bit) for package: rpm-build-4.11.3-48.el7_9.x86_64
--> Processing Dependency: libpopt.so.0()(64bit) for package: rpm-build-4.11.3-48.el7_9.x86_64
--> Processing Dependency: librpm.so.3()(64bit) for package: rpm-build-4.11.3-48.el7_9.x86_64
--> Processing Dependency: librpmbuild.so.3()(64bit) for package: rpm-build-4.11.3-48.el7_9.x86_64
--> Processing Dependency: librpmio.so.3()(64bit) for package: rpm-build-4.11.3-48.el7_9.x86_64
---> Package sed.x86_64 0:4.2.2-7.el7 will be installed
---> Package shadow-utils.x86_64 2:4.6-5.el7 will be installed
--> Processing Dependency: libsemanage.so.1(LIBSEMANAGE_1.0)(64bit) for package: 2:shadow-utils-4.6-5.el7.x86_64
--> Processing Dependency: setup for package: 2:shadow-utils-4.6-5.el7.x86_64
--> Processing Dependency: libsemanage.so.1()(64bit) for package: 2:shadow-utils-4.6-5.el7.x86_64
---> Package tar.x86_64 2:1.26-35.el7 will be installed
---> Package unzip.x86_64 0:6.0-24.el7_9 will be installed
---> Package util-linux.x86_64 0:2.23.2-65.el7_9.1 will be installed
--> Processing Dependency: libblkid = 2.23.2-65.el7_9.1 for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libmount = 2.23.2-65.el7_9.1 for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libsmartcols = 2.23.2-65.el7_9.1 for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libuuid = 2.23.2-65.el7_9.1 for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: pam >= 1.1.3-7 for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: /etc/pam.d/system-auth for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libblkid.so.1(BLKID_1.0)(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libblkid.so.1(BLKID_2.15)(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libblkid.so.1(BLKID_2.17)(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libblkid.so.1(BLKID_2.18)(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libblkid.so.1(BLKID_2.20)(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libblkid.so.1(BLKID_2.21)(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libmount.so.1(MOUNT_2.19)(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libmount.so.1(MOUNT_2.20)(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libmount.so.1(MOUNT_2.21)(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libmount.so.1(MOUNT_2.22)(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libmount.so.1(MOUNT_2.23)(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libmount.so.1(MOUNT_2.25)(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libpam.so.0(LIBPAM_1.0)(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libpam_misc.so.0(LIBPAM_MISC_1.0)(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libsmartcols.so.1(SMARTCOLS_2.25)(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libsystemd.so.0(LIBSYSTEMD_209)(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libudev.so.1(LIBUDEV_183)(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libutempter.so.0(UTEMPTER_1.1)(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libuuid.so.1(UUID_1.0)(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libblkid.so.1()(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libcap-ng.so.0()(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libmount.so.1()(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libpam.so.0()(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libpam_misc.so.0()(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libsmartcols.so.1()(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libsystemd.so.0()(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libudev.so.1()(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libuser.so.1()(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libutempter.so.0()(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
--> Processing Dependency: libuuid.so.1()(64bit) for package: util-linux-2.23.2-65.el7_9.1.x86_64
---> Package which.x86_64 0:2.20-7.el7 will be installed
---> Package xz.x86_64 0:5.2.2-2.el7_9 will be installed
--> Running transaction check
---> Package audit-libs.x86_64 0:2.8.5-4.el7 will be installed
---> Package binutils.x86_64 0:2.27-44.base.el7_9.1 will be installed
--> Processing Dependency: /usr/sbin/alternatives for package: binutils-2.27-44.base.el7_9.1.x86_64
--> Processing Dependency: /usr/sbin/alternatives for package: binutils-2.27-44.base.el7_9.1.x86_64
---> Package bzip2-libs.x86_64 0:1.0.6-13.el7 will be installed
---> Package cpp.x86_64 0:4.8.5-44.el7 will be installed
--> Processing Dependency: filesystem >= 3 for package: cpp-4.8.5-44.el7.x86_64
---> Package dwz.x86_64 0:0.11-3.el7 will be installed
---> Package elfutils.x86_64 0:0.176-5.el7 will be installed
--> Processing Dependency: elfutils-libs(x86-64) = 0.176-5.el7 for package: elfutils-0.176-5.el7.x86_64
--> Processing Dependency: libasm.so.1(ELFUTILS_1.0)(64bit) for package: elfutils-0.176-5.el7.x86_64
--> Processing Dependency: libdw.so.1(ELFUTILS_0.122)(64bit) for package: elfutils-0.176-5.el7.x86_64
--> Processing Dependency: libdw.so.1(ELFUTILS_0.126)(64bit) for package: elfutils-0.176-5.el7.x86_64
--> Processing Dependency: libdw.so.1(ELFUTILS_0.127)(64bit) for package: elfutils-0.176-5.el7.x86_64
--> Processing Dependency: libdw.so.1(ELFUTILS_0.130)(64bit) for package: elfutils-0.176-5.el7.x86_64
--> Processing Dependency: libdw.so.1(ELFUTILS_0.138)(64bit) for package: elfutils-0.176-5.el7.x86_64
--> Processing Dependency: libdw.so.1(ELFUTILS_0.148)(64bit) for package: elfutils-0.176-5.el7.x86_64
--> Processing Dependency: libdw.so.1(ELFUTILS_0.149)(64bit) for package: elfutils-0.176-5.el7.x86_64
--> Processing Dependency: libdw.so.1(ELFUTILS_0.158)(64bit) for package: elfutils-0.176-5.el7.x86_64
--> Processing Dependency: libdw.so.1(ELFUTILS_0.159)(64bit) for package: elfutils-0.176-5.el7.x86_64
--> Processing Dependency: libdw.so.1(ELFUTILS_0.160)(64bit) for package: elfutils-0.176-5.el7.x86_64
--> Processing Dependency: libdw.so.1(ELFUTILS_0.161)(64bit) for package: elfutils-0.176-5.el7.x86_64
--> Processing Dependency: libdw.so.1(ELFUTILS_0.165)(64bit) for package: elfutils-0.176-5.el7.x86_64
--> Processing Dependency: libdw.so.1(ELFUTILS_0.167)(64bit) for package: elfutils-0.176-5.el7.x86_64
--> Processing Dependency: libdw.so.1(ELFUTILS_0.171)(64bit) for package: elfutils-0.176-5.el7.x86_64
--> Processing Dependency: libdw.so.1(ELFUTILS_0.173)(64bit) for package: elfutils-0.176-5.el7.x86_64
--> Processing Dependency: libdw.so.1(ELFUTILS_0.175)(64bit) for package: elfutils-0.176-5.el7.x86_64
--> Processing Dependency: libasm.so.1()(64bit) for package: elfutils-0.176-5.el7.x86_64
--> Processing Dependency: libdw.so.1()(64bit) for package: elfutils-0.176-5.el7.x86_64
---> Package elfutils-libelf.x86_64 0:0.176-5.el7 will be installed
---> Package file.x86_64 0:5.11-37.el7 will be installed
---> Package file-libs.x86_64 0:5.11-37.el7 will be installed
---> Package gdb.x86_64 0:7.6.1-120.el7 will be installed
--> Processing Dependency: libexpat.so.1()(64bit) for package: gdb-7.6.1-120.el7.x86_64
--> Processing Dependency: libpython2.7.so.1.0()(64bit) for package: gdb-7.6.1-120.el7.x86_64
--> Processing Dependency: libreadline.so.6()(64bit) for package: gdb-7.6.1-120.el7.x86_64
---> Package glibc.x86_64 0:2.17-326.el7_9.3 will be installed
--> Processing Dependency: glibc-common = 2.17-326.el7_9.3 for package: glibc-2.17-326.el7_9.3.x86_64
--> Processing Dependency: basesystem for package: glibc-2.17-326.el7_9.3.x86_64
--> Processing Dependency: libfreebl3.so(NSSRAWHASH_3.12.3)(64bit) for package: glibc-2.17-326.el7_9.3.x86_64
--> Processing Dependency: libfreebl3.so()(64bit) for package: glibc-2.17-326.el7_9.3.x86_64
---> Package glibc-devel.x86_64 0:2.17-326.el7_9.3 will be installed
--> Processing Dependency: glibc-headers = 2.17-326.el7_9.3 for package: glibc-devel-2.17-326.el7_9.3.x86_64
--> Processing Dependency: glibc-headers for package: glibc-devel-2.17-326.el7_9.3.x86_64
---> Package gmp.x86_64 1:6.0.0-15.el7 will be installed
---> Package libacl.x86_64 0:2.2.51-15.el7 will be installed
---> Package libattr.x86_64 0:2.4.46-13.el7 will be installed
---> Package libblkid.x86_64 0:2.23.2-65.el7_9.1 will be installed
---> Package libcap.x86_64 0:2.22-11.el7 will be installed
---> Package libcap-ng.x86_64 0:0.7.5-4.el7 will be installed
---> Package libdb.x86_64 0:5.3.21-25.el7 will be installed
---> Package libgcc.x86_64 0:4.8.5-44.el7 will be installed
---> Package libgomp.x86_64 0:4.8.5-44.el7 will be installed
---> Package libmount.x86_64 0:2.23.2-65.el7_9.1 will be installed
---> Package libmpc.x86_64 0:1.0.1-3.el7 will be installed
---> Package libselinux.x86_64 0:2.5-15.el7 will be installed
--> Processing Dependency: libsepol(x86-64) >= 2.5-10 for package: libselinux-2.5-15.el7.x86_64
--> Processing Dependency: libsepol.so.1(LIBSEPOL_1.0)(64bit) for package: libselinux-2.5-15.el7.x86_64
--> Processing Dependency: libsepol.so.1()(64bit) for package: libselinux-2.5-15.el7.x86_64
---> Package libsemanage.x86_64 0:2.5-14.el7 will be installed
--> Processing Dependency: libustr-1.0.so.1(USTR_1.0)(64bit) for package: libsemanage-2.5-14.el7.x86_64
--> Processing Dependency: libustr-1.0.so.1(USTR_1.0.1)(64bit) for package: libsemanage-2.5-14.el7.x86_64
--> Processing Dependency: libustr-1.0.so.1()(64bit) for package: libsemanage-2.5-14.el7.x86_64
---> Package libsmartcols.x86_64 0:2.23.2-65.el7_9.1 will be installed
---> Package libstdc++.x86_64 0:4.8.5-44.el7 will be installed
---> Package libstdc++-devel.x86_64 0:4.8.5-44.el7 will be installed
---> Package libuser.x86_64 0:0.60-9.el7 will be installed
--> Processing Dependency: libglib-2.0.so.0()(64bit) for package: libuser-0.60-9.el7.x86_64
--> Processing Dependency: libgmodule-2.0.so.0()(64bit) for package: libuser-0.60-9.el7.x86_64
--> Processing Dependency: libgobject-2.0.so.0()(64bit) for package: libuser-0.60-9.el7.x86_64
--> Processing Dependency: libldap-2.4.so.2()(64bit) for package: libuser-0.60-9.el7.x86_64
---> Package libutempter.x86_64 0:1.1.6-4.el7 will be installed
---> Package libuuid.x86_64 0:2.23.2-65.el7_9.1 will be installed
---> Package lua.x86_64 0:5.1.4-15.el7 will be installed
---> Package lua-srpm-macros.noarch 0:1-13.el7 will be installed
---> Package mpfr.x86_64 0:3.1.1-4.el7 will be installed
---> Package ncurses.x86_64 0:5.9-14.20130511.el7_4 will be installed
---> Package ncurses-libs.x86_64 0:5.9-14.20130511.el7_4 will be installed
--> Processing Dependency: ncurses-base = 5.9-14.20130511.el7_4 for package: ncurses-libs-5.9-14.20130511.el7_4.x86_64
---> Package nss.x86_64 0:3.90.0-2.el7_9 will be installed
--> Processing Dependency: nspr >= 4.35.0 for package: nss-3.90.0-2.el7_9.x86_64
--> Processing Dependency: nss-softokn(x86-64) >= 3.90.0-1 for package: nss-3.90.0-2.el7_9.x86_64
--> Processing Dependency: nss-util >= 3.90.0-1 for package: nss-3.90.0-2.el7_9.x86_64
--> Processing Dependency: libnssutil3.so(NSSUTIL_3.12)(64bit) for package: nss-3.90.0-2.el7_9.x86_64
--> Processing Dependency: libnssutil3.so(NSSUTIL_3.12.3)(64bit) for package: nss-3.90.0-2.el7_9.x86_64
--> Processing Dependency: libnssutil3.so(NSSUTIL_3.12.5)(64bit) for package: nss-3.90.0-2.el7_9.x86_64
--> Processing Dependency: libnssutil3.so(NSSUTIL_3.13)(64bit) for package: nss-3.90.0-2.el7_9.x86_64
--> Processing Dependency: libnssutil3.so(NSSUTIL_3.14)(64bit) for package: nss-3.90.0-2.el7_9.x86_64
--> Processing Dependency: libnssutil3.so(NSSUTIL_3.15)(64bit) for package: nss-3.90.0-2.el7_9.x86_64
--> Processing Dependency: libnssutil3.so(NSSUTIL_3.17.1)(64bit) for package: nss-3.90.0-2.el7_9.x86_64
--> Processing Dependency: libnssutil3.so(NSSUTIL_3.21)(64bit) for package: nss-3.90.0-2.el7_9.x86_64
--> Processing Dependency: libnssutil3.so(NSSUTIL_3.24)(64bit) for package: nss-3.90.0-2.el7_9.x86_64
--> Processing Dependency: libnssutil3.so(NSSUTIL_3.31)(64bit) for package: nss-3.90.0-2.el7_9.x86_64
--> Processing Dependency: libnssutil3.so(NSSUTIL_3.38)(64bit) for package: nss-3.90.0-2.el7_9.x86_64
--> Processing Dependency: libnssutil3.so(NSSUTIL_3.39)(64bit) for package: nss-3.90.0-2.el7_9.x86_64
--> Processing Dependency: libnssutil3.so(NSSUTIL_3.59)(64bit) for package: nss-3.90.0-2.el7_9.x86_64
--> Processing Dependency: libnssutil3.so(NSSUTIL_3.82)(64bit) for package: nss-3.90.0-2.el7_9.x86_64
--> Processing Dependency: nss-pem(x86-64) for package: nss-3.90.0-2.el7_9.x86_64
--> Processing Dependency: nss-system-init for package: nss-3.90.0-2.el7_9.x86_64
--> Processing Dependency: libnspr4.so()(64bit) for package: nss-3.90.0-2.el7_9.x86_64
--> Processing Dependency: libnssutil3.so()(64bit) for package: nss-3.90.0-2.el7_9.x86_64
--> Processing Dependency: libplc4.so()(64bit) for package: nss-3.90.0-2.el7_9.x86_64
--> Processing Dependency: libplds4.so()(64bit) for package: nss-3.90.0-2.el7_9.x86_64
---> Package openssl-libs.x86_64 1:1.0.2k-26.el7_9 will be installed
--> Processing Dependency: ca-certificates >= 2008-5 for package: 1:openssl-libs-1.0.2k-26.el7_9.x86_64
--> Processing Dependency: libk5crypto.so.3(k5crypto_3_MIT)(64bit) for package: 1:openssl-libs-1.0.2k-26.el7_9.x86_64
--> Processing Dependency: libkrb5.so.3(krb5_3_MIT)(64bit) for package: 1:openssl-libs-1.0.2k-26.el7_9.x86_64
--> Processing Dependency: libcom_err.so.2()(64bit) for package: 1:openssl-libs-1.0.2k-26.el7_9.x86_64
--> Processing Dependency: libgssapi_krb5.so.2()(64bit) for package: 1:openssl-libs-1.0.2k-26.el7_9.x86_64
--> Processing Dependency: libk5crypto.so.3()(64bit) for package: 1:openssl-libs-1.0.2k-26.el7_9.x86_64
--> Processing Dependency: libkrb5.so.3()(64bit) for package: 1:openssl-libs-1.0.2k-26.el7_9.x86_64
---> Package pam.x86_64 0:1.1.8-23.el7 will be installed
--> Processing Dependency: cracklib-dicts >= 2.8 for package: pam-1.1.8-23.el7.x86_64
--> Processing Dependency: libpwquality >= 0.9.9 for package: pam-1.1.8-23.el7.x86_64
--> Processing Dependency: libcrack.so.2()(64bit) for package: pam-1.1.8-23.el7.x86_64
---> Package pcre.x86_64 0:8.32-17.el7 will be installed
---> Package perl.x86_64 4:5.16.3-299.el7_9 will be installed
--> Processing Dependency: perl-libs = 4:5.16.3-299.el7_9 for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Scalar::Util) >= 1.10 for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Socket) >= 1.3 for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Carp) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Cwd) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Exporter) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(File::Path) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(File::Spec) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(File::Spec::Functions) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(File::Spec::Unix) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Filter::Util::Call) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Pod::Simple::Search) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Pod::Simple::XHTML) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Scalar::Util) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Socket) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Storable) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Time::HiRes) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(Time::Local) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(constant) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl(threads::shared) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl-libs for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: perl-macros for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: libgdbm.so.4()(64bit) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: libgdbm_compat.so.4()(64bit) for package: 4:perl-5.16.3-299.el7_9.x86_64
--> Processing Dependency: libperl.so()(64bit) for package: 4:perl-5.16.3-299.el7_9.x86_64
---> Package perl-File-Temp.noarch 0:0.23.01-3.el7 will be installed
---> Package perl-Getopt-Long.noarch 0:2.40-3.el7 will be installed
--> Processing Dependency: perl(Pod::Usage) >= 1.14 for package: perl-Getopt-Long-2.40-3.el7.noarch
--> Processing Dependency: perl(Text::ParseWords) for package: perl-Getopt-Long-2.40-3.el7.noarch
---> Package perl-Thread-Queue.noarch 0:3.02-2.el7 will be installed
---> Package perl-generators-epel.noarch 0:1-1.el7 will be installed
---> Package perl-srpm-macros.noarch 0:1-8.el7 will be installed
---> Package perl-threads.x86_64 0:1.87-4.el7 will be installed
---> Package pkgconfig.x86_64 1:0.27.1-4.el7 will be installed
---> Package popt.x86_64 0:1.13-16.el7 will be installed
---> Package python-rpm-macros.noarch 0:3-34.el7 will be installed
---> Package python-srpm-macros.noarch 0:3-34.el7 will be installed
---> Package python2-rpm-macros.noarch 0:3-34.el7 will be installed
---> Package redhat-release-server.x86_64 0:7.9-12.el7_9 will be installed
---> Package rpm.x86_64 0:4.11.3-48.el7_9 will be installed
--> Processing Dependency: /usr/bin/db_stat for package: rpm-4.11.3-48.el7_9.x86_64
--> Processing Dependency: curl for package: rpm-4.11.3-48.el7_9.x86_64
---> Package rpm-build-libs.x86_64 0:4.11.3-48.el7_9 will be installed
--> Processing Dependency: /usr/bin/gpg2 for package: rpm-build-libs-4.11.3-48.el7_9.x86_64
---> Package rpm-libs.x86_64 0:4.11.3-48.el7_9 will be installed
---> Package setup.noarch 0:2.8.71-11.el7 will be installed
---> Package systemd-libs.x86_64 0:219-78.el7_9.9 will be installed
--> Processing Dependency: libgcrypt.so.11(GCRYPT_1.2)(64bit) for package: systemd-libs-219-78.el7_9.9.x86_64
--> Processing Dependency: libgcrypt.so.11()(64bit) for package: systemd-libs-219-78.el7_9.9.x86_64
--> Processing Dependency: libgpg-error.so.0()(64bit) for package: systemd-libs-219-78.el7_9.9.x86_64
--> Processing Dependency: liblz4.so.1()(64bit) for package: systemd-libs-219-78.el7_9.9.x86_64
---> Package xz-libs.x86_64 0:5.2.2-2.el7_9 will be installed
---> Package zip.x86_64 0:3.0-11.el7 will be installed
---> Package zlib.x86_64 0:1.2.7-21.el7_9 will be installed
--> Running transaction check
---> Package basesystem.noarch 0:10.0-7.el7 will be installed
---> Package ca-certificates.noarch 0:2023.2.60_v7.0.306-72.el7_9 will be installed
--> Processing Dependency: p11-kit >= 0.23.5 for package: ca-certificates-2023.2.60_v7.0.306-72.el7_9.noarch
--> Processing Dependency: p11-kit-trust >= 0.23.5 for package: ca-certificates-2023.2.60_v7.0.306-72.el7_9.noarch
---> Package chkconfig.x86_64 0:1.7.6-1.el7 will be installed
---> Package cracklib.x86_64 0:2.9.0-11.el7 will be installed
---> Package cracklib-dicts.x86_64 0:2.9.0-11.el7 will be installed
---> Package curl.x86_64 0:7.29.0-59.el7_9.2 will be installed
--> Processing Dependency: libcurl = 7.29.0-59.el7_9.2 for package: curl-7.29.0-59.el7_9.2.x86_64
--> Processing Dependency: libcurl.so.4()(64bit) for package: curl-7.29.0-59.el7_9.2.x86_64
---> Package elfutils-libs.x86_64 0:0.176-5.el7 will be installed
--> Processing Dependency: default-yama-scope for package: elfutils-libs-0.176-5.el7.x86_64
---> Package expat.x86_64 0:2.1.0-15.el7_9 will be installed
---> Package filesystem.x86_64 0:3.2-25.el7 will be installed
---> Package gdbm.x86_64 0:1.10-8.el7 will be installed
---> Package glib2.x86_64 0:2.56.1-9.el7_9 will be installed
--> Processing Dependency: shared-mime-info for package: glib2-2.56.1-9.el7_9.x86_64
--> Processing Dependency: libffi.so.6()(64bit) for package: glib2-2.56.1-9.el7_9.x86_64
---> Package glibc-common.x86_64 0:2.17-326.el7_9.3 will be installed
--> Processing Dependency: tzdata >= 2003a for package: glibc-common-2.17-326.el7_9.3.x86_64
---> Package glibc-headers.x86_64 0:2.17-326.el7_9.3 will be installed
--> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers-2.17-326.el7_9.3.x86_64
--> Processing Dependency: kernel-headers for package: glibc-headers-2.17-326.el7_9.3.x86_64
---> Package gnupg2.x86_64 0:2.0.22-5.el7_5 will be installed
--> Processing Dependency: libassuan.so.0(LIBASSUAN_1.0)(64bit) for package: gnupg2-2.0.22-5.el7_5.x86_64
--> Processing Dependency: pinentry for package: gnupg2-2.0.22-5.el7_5.x86_64
--> Processing Dependency: libassuan.so.0()(64bit) for package: gnupg2-2.0.22-5.el7_5.x86_64
--> Processing Dependency: libpth.so.20()(64bit) for package: gnupg2-2.0.22-5.el7_5.x86_64
---> Package krb5-libs.x86_64 0:1.15.1-55.el7_9 will be installed
--> Processing Dependency: keyutils-libs >= 1.5.8 for package: krb5-libs-1.15.1-55.el7_9.x86_64
--> Processing Dependency: libkeyutils.so.1(KEYUTILS_0.3)(64bit) for package: krb5-libs-1.15.1-55.el7_9.x86_64
--> Processing Dependency: libkeyutils.so.1(KEYUTILS_1.0)(64bit) for package: krb5-libs-1.15.1-55.el7_9.x86_64
--> Processing Dependency: libkeyutils.so.1(KEYUTILS_1.5)(64bit) for package: krb5-libs-1.15.1-55.el7_9.x86_64
--> Processing Dependency: libkeyutils.so.1()(64bit) for package: krb5-libs-1.15.1-55.el7_9.x86_64
--> Processing Dependency: libverto.so.1()(64bit) for package: krb5-libs-1.15.1-55.el7_9.x86_64
---> Package libcom_err.x86_64 0:1.42.9-19.el7 will be installed
---> Package libdb-utils.x86_64 0:5.3.21-25.el7 will be installed
---> Package libgcrypt.x86_64 0:1.5.3-14.el7 will be installed
---> Package libgpg-error.x86_64 0:1.12-3.el7 will be installed
---> Package libpwquality.x86_64 0:1.2.3-5.el7 will be installed
---> Package libsepol.x86_64 0:2.5-10.el7 will be installed
---> Package lz4.x86_64 0:1.8.3-1.el7 will be installed
---> Package ncurses-base.noarch 0:5.9-14.20130511.el7_4 will be installed
---> Package nspr.x86_64 0:4.35.0-1.el7_9 will be installed
---> Package nss-pem.x86_64 0:1.0.3-7.el7_9.1 will be installed
---> Package nss-softokn.x86_64 0:3.90.0-6.el7_9 will be installed
--> Processing Dependency: libsqlite3.so.0()(64bit) for package: nss-softokn-3.90.0-6.el7_9.x86_64
---> Package nss-softokn-freebl.x86_64 0:3.90.0-6.el7_9 will be installed
---> Package nss-sysinit.x86_64 0:3.90.0-2.el7_9 will be installed
---> Package nss-util.x86_64 0:3.90.0-1.el7_9 will be installed
---> Package openldap.x86_64 0:2.4.44-25.el7_9 will be installed
--> Processing Dependency: nss-tools for package: openldap-2.4.44-25.el7_9.x86_64
--> Processing Dependency: libsasl2.so.3()(64bit) for package: openldap-2.4.44-25.el7_9.x86_64
---> Package perl-Carp.noarch 0:1.26-244.el7 will be installed
---> Package perl-Exporter.noarch 0:5.68-3.el7 will be installed
---> Package perl-File-Path.noarch 0:2.09-2.el7 will be installed
---> Package perl-Filter.x86_64 0:1.49-3.el7 will be installed
---> Package perl-PathTools.x86_64 0:3.40-5.el7 will be installed
---> Package perl-Pod-Simple.noarch 1:3.28-4.el7 will be installed
--> Processing Dependency: perl(Pod::Escapes) >= 1.04 for package: 1:perl-Pod-Simple-3.28-4.el7.noarch
--> Processing Dependency: perl(Encode) for package: 1:perl-Pod-Simple-3.28-4.el7.noarch
---> Package perl-Pod-Usage.noarch 0:1.63-3.el7 will be installed
--> Processing Dependency: perl(Pod::Text) >= 3.15 for package: perl-Pod-Usage-1.63-3.el7.noarch
--> Processing Dependency: perl-Pod-Perldoc for package: perl-Pod-Usage-1.63-3.el7.noarch
---> Package perl-Scalar-List-Utils.x86_64 0:1.27-248.el7 will be installed
---> Package perl-Socket.x86_64 0:2.010-5.el7 will be installed
---> Package perl-Storable.x86_64 0:2.45-3.el7 will be installed
---> Package perl-Text-ParseWords.noarch 0:3.29-4.el7 will be installed
---> Package perl-Time-HiRes.x86_64 4:1.9725-3.el7 will be installed
---> Package perl-Time-Local.noarch 0:1.2300-2.el7 will be installed
---> Package perl-constant.noarch 0:1.27-2.el7 will be installed
---> Package perl-libs.x86_64 4:5.16.3-299.el7_9 will be installed
---> Package perl-macros.x86_64 4:5.16.3-299.el7_9 will be installed
---> Package perl-threads-shared.x86_64 0:1.43-6.el7 will be installed
---> Package python-libs.x86_64 0:2.7.5-94.el7_9 will be installed
---> Package readline.x86_64 0:6.2-11.el7 will be installed
---> Package ustr.x86_64 0:1.0.4-16.el7 will be installed
--> Running transaction check
---> Package cyrus-sasl-lib.x86_64 0:2.1.26-24.el7_9 will be installed
---> Package elfutils-default-yama-scope.noarch 0:0.176-5.el7 will be installed
--> Processing Dependency: systemd for package: elfutils-default-yama-scope-0.176-5.el7.noarch
--> Processing Dependency: systemd for package: elfutils-default-yama-scope-0.176-5.el7.noarch
---> Package kernel-headers.x86_64 0:3.10.0-1160.119.1.el7 will be installed
---> Package keyutils-libs.x86_64 0:1.5.8-3.el7 will be installed
---> Package libassuan.x86_64 0:2.1.0-3.el7 will be installed
---> Package libcurl.x86_64 0:7.29.0-59.el7_9.2 will be installed
--> Processing Dependency: libssh2(x86-64) >= 1.8.0 for package: libcurl-7.29.0-59.el7_9.2.x86_64
--> Processing Dependency: libidn.so.11(LIBIDN_1.0)(64bit) for package: libcurl-7.29.0-59.el7_9.2.x86_64
--> Processing Dependency: libidn.so.11()(64bit) for package: libcurl-7.29.0-59.el7_9.2.x86_64
--> Processing Dependency: libssh2.so.1()(64bit) for package: libcurl-7.29.0-59.el7_9.2.x86_64
---> Package libffi.x86_64 0:3.0.13-19.el7 will be installed
---> Package libverto.x86_64 0:0.2.5-4.el7 will be installed
---> Package nss-tools.x86_64 0:3.90.0-2.el7_9 will be installed
---> Package p11-kit.x86_64 0:0.23.5-3.el7 will be installed
---> Package p11-kit-trust.x86_64 0:0.23.5-3.el7 will be installed
--> Processing Dependency: libtasn1.so.6(LIBTASN1_0_3)(64bit) for package: p11-kit-trust-0.23.5-3.el7.x86_64
--> Processing Dependency: libtasn1.so.6()(64bit) for package: p11-kit-trust-0.23.5-3.el7.x86_64
---> Package perl-Encode.x86_64 0:2.51-7.el7 will be installed
---> Package perl-Pod-Escapes.noarch 1:1.04-299.el7_9 will be installed
---> Package perl-Pod-Perldoc.noarch 0:3.20-4.el7 will be installed
--> Processing Dependency: groff-base for package: perl-Pod-Perldoc-3.20-4.el7.noarch
--> Processing Dependency: perl(HTTP::Tiny) for package: perl-Pod-Perldoc-3.20-4.el7.noarch
--> Processing Dependency: perl(parent) for package: perl-Pod-Perldoc-3.20-4.el7.noarch
---> Package perl-podlators.noarch 0:2.5.1-3.el7 will be installed
---> Package pinentry.x86_64 0:0.8.1-17.el7 will be installed
---> Package pth.x86_64 0:2.0.7-23.el7 will be installed
---> Package shared-mime-info.x86_64 0:1.8-5.el7 will be installed
--> Processing Dependency: libxml2.so.2(LIBXML2_2.4.30)(64bit) for package: shared-mime-info-1.8-5.el7.x86_64
--> Processing Dependency: libxml2.so.2()(64bit) for package: shared-mime-info-1.8-5.el7.x86_64
---> Package sqlite.x86_64 0:3.7.17-8.el7_7.1 will be installed
---> Package tzdata.noarch 0:2024a-1.el7 will be installed
--> Running transaction check
---> Package groff-base.x86_64 0:1.22.2-8.el7 will be installed
---> Package libidn.x86_64 0:1.28-4.el7 will be installed
---> Package libssh2.x86_64 0:1.8.0-4.el7_9.1 will be installed
---> Package libtasn1.x86_64 0:4.10-1.el7 will be installed
---> Package libxml2.x86_64 0:2.9.1-6.el7_9.6 will be installed
---> Package perl-HTTP-Tiny.noarch 0:0.033-3.el7 will be installed
---> Package perl-parent.noarch 1:0.225-244.el7 will be installed
---> Package systemd.x86_64 0:219-78.el7_9.9 will be installed
--> Processing Dependency: kmod >= 18-4 for package: systemd-219-78.el7_9.9.x86_64
--> Processing Dependency: acl for package: systemd-219-78.el7_9.9.x86_64
--> Processing Dependency: dbus for package: systemd-219-78.el7_9.9.x86_64
--> Processing Dependency: libcryptsetup.so.12(CRYPTSETUP_2.0)(64bit) for package: systemd-219-78.el7_9.9.x86_64
--> Processing Dependency: libkmod.so.2(LIBKMOD_5)(64bit) for package: systemd-219-78.el7_9.9.x86_64
--> Processing Dependency: libcryptsetup.so.12()(64bit) for package: systemd-219-78.el7_9.9.x86_64
--> Processing Dependency: libkmod.so.2()(64bit) for package: systemd-219-78.el7_9.9.x86_64
--> Processing Dependency: libqrencode.so.3()(64bit) for package: systemd-219-78.el7_9.9.x86_64
--> Running transaction check
---> Package acl.x86_64 0:2.2.51-15.el7 will be installed
---> Package cryptsetup-libs.x86_64 0:2.0.3-6.el7 will be installed
--> Processing Dependency: libdevmapper.so.1.02(Base)(64bit) for package: cryptsetup-libs-2.0.3-6.el7.x86_64
--> Processing Dependency: libdevmapper.so.1.02(DM_1_02_97)(64bit) for package: cryptsetup-libs-2.0.3-6.el7.x86_64
--> Processing Dependency: libdevmapper.so.1.02()(64bit) for package: cryptsetup-libs-2.0.3-6.el7.x86_64
--> Processing Dependency: libjson-c.so.2()(64bit) for package: cryptsetup-libs-2.0.3-6.el7.x86_64
---> Package dbus.x86_64 1:1.10.24-15.el7 will be installed
--> Processing Dependency: dbus-libs(x86-64) = 1:1.10.24-15.el7 for package: 1:dbus-1.10.24-15.el7.x86_64
--> Processing Dependency: libdbus-1.so.3(LIBDBUS_1_3)(64bit) for package: 1:dbus-1.10.24-15.el7.x86_64
--> Processing Dependency: libdbus-1.so.3(LIBDBUS_PRIVATE_1.10.24)(64bit) for package: 1:dbus-1.10.24-15.el7.x86_64
--> Processing Dependency: libdbus-1.so.3()(64bit) for package: 1:dbus-1.10.24-15.el7.x86_64
---> Package kmod.x86_64 0:20-28.el7 will be installed
--> Processing Dependency: dracut for package: kmod-20-28.el7.x86_64
---> Package kmod-libs.x86_64 0:20-28.el7 will be installed
---> Package qrencode-libs.x86_64 0:3.4.1-3.el7 will be installed
--> Running transaction check
---> Package dbus-libs.x86_64 1:1.10.24-15.el7 will be installed
---> Package device-mapper-libs.x86_64 7:1.02.170-6.el7_9.5 will be installed
--> Processing Dependency: device-mapper = 7:1.02.170-6.el7_9.5 for package: 7:device-mapper-libs-1.02.170-6.el7_9.5.x86_64
---> Package dracut.x86_64 0:033-572.el7 will be installed
--> Processing Dependency: hardlink for package: dracut-033-572.el7.x86_64
--> Processing Dependency: kpartx for package: dracut-033-572.el7.x86_64
--> Processing Dependency: procps-ng for package: dracut-033-572.el7.x86_64
---> Package json-c.x86_64 0:0.11-4.el7_0 will be installed
--> Running transaction check
---> Package device-mapper.x86_64 7:1.02.170-6.el7_9.5 will be installed
---> Package hardlink.x86_64 1:1.0-19.el7 will be installed
---> Package kpartx.x86_64 0:0.4.9-136.el7_9 will be installed
---> Package procps-ng.x86_64 0:3.3.10-28.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                      Arch    Version                       Repository
                                                                           Size
================================================================================
Installing for group install "Buildsystem building group":
 bash                         x86_64  4.2.46-35.el7_9               rhel  1.0 M
 bzip2                        x86_64  1.0.6-13.el7                  rhel   52 k
 coreutils                    x86_64  8.22-24.el7_9.2               rhel  3.3 M
 cpio                         x86_64  2.11-28.el7                   rhel  211 k
 diffutils                    x86_64  3.3-6.el7_9                   rhel  322 k
 epel-release                 noarch  7-14                          epel   15 k
 epel-rpm-macros              noarch  7-38                          epel   19 k
 findutils                    x86_64  1:4.5.11-6.el7                rhel  559 k
 gawk                         x86_64  4.0.2-4.el7_3.1               rhel  874 k
 gcc                          x86_64  4.8.5-44.el7                  rhel   16 M
 gcc-c++                      x86_64  4.8.5-44.el7                  rhel  7.2 M
 grep                         x86_64  2.20-3.el7                    rhel  344 k
 gzip                         x86_64  1.5-11.el7_9                  rhel  130 k
 info                         x86_64  5.1-5.el7                     rhel  233 k
 make                         x86_64  1:3.82-24.el7                 rhel  421 k
 patch                        x86_64  2.7.1-12.el7_7                rhel  111 k
 redhat-rpm-config            noarch  9.1.0-88.el7                  rhel   81 k
 rpm-build                    x86_64  4.11.3-48.el7_9               rhel  150 k
 sed                          x86_64  4.2.2-7.el7                   rhel  231 k
 shadow-utils                 x86_64  2:4.6-5.el7                   rhel  1.2 M
 tar                          x86_64  2:1.26-35.el7                 rhel  846 k
 unzip                        x86_64  6.0-24.el7_9                  rhel  173 k
 util-linux                   x86_64  2.23.2-65.el7_9.1             rhel  2.0 M
 which                        x86_64  2.20-7.el7                    rhel   41 k
 xz                           x86_64  5.2.2-2.el7_9                 rhel  229 k
Installing for dependencies:
 acl                          x86_64  2.2.51-15.el7                 rhel   82 k
 audit-libs                   x86_64  2.8.5-4.el7                   rhel  102 k
 basesystem                   noarch  10.0-7.el7                    rhel  4.9 k
 binutils                     x86_64  2.27-44.base.el7_9.1          rhel  5.9 M
 bzip2-libs                   x86_64  1.0.6-13.el7                  rhel   40 k
 ca-certificates              noarch  2023.2.60_v7.0.306-72.el7_9   rhel  923 k
 chkconfig                    x86_64  1.7.6-1.el7                   rhel  182 k
 cpp                          x86_64  4.8.5-44.el7                  rhel  6.0 M
 cracklib                     x86_64  2.9.0-11.el7                  rhel   80 k
 cracklib-dicts               x86_64  2.9.0-11.el7                  rhel  3.6 M
 cryptsetup-libs              x86_64  2.0.3-6.el7                   rhel  339 k
 curl                         x86_64  7.29.0-59.el7_9.2             rhel  271 k
 cyrus-sasl-lib               x86_64  2.1.26-24.el7_9               rhel  156 k
 dbus                         x86_64  1:1.10.24-15.el7              rhel  245 k
 dbus-libs                    x86_64  1:1.10.24-15.el7              rhel  169 k
 device-mapper                x86_64  7:1.02.170-6.el7_9.5          rhel  297 k
 device-mapper-libs           x86_64  7:1.02.170-6.el7_9.5          rhel  325 k
 dracut                       x86_64  033-572.el7                   rhel  329 k
 dwz                          x86_64  0.11-3.el7                    rhel   99 k
 elfutils                     x86_64  0.176-5.el7                   rhel  308 k
 elfutils-default-yama-scope  noarch  0.176-5.el7                   rhel   33 k
 elfutils-libelf              x86_64  0.176-5.el7                   rhel  195 k
 elfutils-libs                x86_64  0.176-5.el7                   rhel  291 k
 expat                        x86_64  2.1.0-15.el7_9                rhel   83 k
 file                         x86_64  5.11-37.el7                   rhel   57 k
 file-libs                    x86_64  5.11-37.el7                   rhel  340 k
 filesystem                   x86_64  3.2-25.el7                    rhel  1.0 M
 gdb                          x86_64  7.6.1-120.el7                 rhel  2.4 M
 gdbm                         x86_64  1.10-8.el7                    rhel   70 k
 glib2                        x86_64  2.56.1-9.el7_9                rhel  2.5 M
 glibc                        x86_64  2.17-326.el7_9.3              rhel  3.6 M
 glibc-common                 x86_64  2.17-326.el7_9.3              rhel   12 M
 glibc-devel                  x86_64  2.17-326.el7_9.3              rhel  1.1 M
 glibc-headers                x86_64  2.17-326.el7_9.3              rhel  692 k
 gmp                          x86_64  1:6.0.0-15.el7                rhel  281 k
 gnupg2                       x86_64  2.0.22-5.el7_5                rhel  1.5 M
 groff-base                   x86_64  1.22.2-8.el7                  rhel  942 k
 hardlink                     x86_64  1:1.0-19.el7                  rhel   14 k
 json-c                       x86_64  0.11-4.el7_0                  rhel   31 k
 kernel-headers               x86_64  3.10.0-1160.119.1.el7         rhel  9.1 M
 keyutils-libs                x86_64  1.5.8-3.el7                   rhel   25 k
 kmod                         x86_64  20-28.el7                     rhel  123 k
 kmod-libs                    x86_64  20-28.el7                     rhel   51 k
 kpartx                       x86_64  0.4.9-136.el7_9               rhel   81 k
 krb5-libs                    x86_64  1.15.1-55.el7_9               rhel  810 k
 libacl                       x86_64  2.2.51-15.el7                 rhel   27 k
 libassuan                    x86_64  2.1.0-3.el7                   rhel   63 k
 libattr                      x86_64  2.4.46-13.el7                 rhel   18 k
 libblkid                     x86_64  2.23.2-65.el7_9.1             rhel  183 k
 libcap                       x86_64  2.22-11.el7                   rhel   47 k
 libcap-ng                    x86_64  0.7.5-4.el7                   rhel   25 k
 libcom_err                   x86_64  1.42.9-19.el7                 rhel   42 k
 libcurl                      x86_64  7.29.0-59.el7_9.2             rhel  223 k
 libdb                        x86_64  5.3.21-25.el7                 rhel  719 k
 libdb-utils                  x86_64  5.3.21-25.el7                 rhel  133 k
 libffi                       x86_64  3.0.13-19.el7                 rhel   30 k
 libgcc                       x86_64  4.8.5-44.el7                  rhel  103 k
 libgcrypt                    x86_64  1.5.3-14.el7                  rhel  263 k
 libgomp                      x86_64  4.8.5-44.el7                  rhel  159 k
 libgpg-error                 x86_64  1.12-3.el7                    rhel   87 k
 libidn                       x86_64  1.28-4.el7                    rhel  209 k
 libmount                     x86_64  2.23.2-65.el7_9.1             rhel  185 k
 libmpc                       x86_64  1.0.1-3.el7                   rhel   51 k
 libpwquality                 x86_64  1.2.3-5.el7                   rhel   85 k
 libselinux                   x86_64  2.5-15.el7                    rhel  162 k
 libsemanage                  x86_64  2.5-14.el7                    rhel  151 k
 libsepol                     x86_64  2.5-10.el7                    rhel  297 k
 libsmartcols                 x86_64  2.23.2-65.el7_9.1             rhel  143 k
 libssh2                      x86_64  1.8.0-4.el7_9.1               rhel   88 k
 libstdc++                    x86_64  4.8.5-44.el7                  rhel  306 k
 libstdc++-devel              x86_64  4.8.5-44.el7                  rhel  1.5 M
 libtasn1                     x86_64  4.10-1.el7                    rhel  320 k
 libuser                      x86_64  0.60-9.el7                    rhel  400 k
 libutempter                  x86_64  1.1.6-4.el7                   rhel   25 k
 libuuid                      x86_64  2.23.2-65.el7_9.1             rhel   84 k
 libverto                     x86_64  0.2.5-4.el7                   rhel   16 k
 libxml2                      x86_64  2.9.1-6.el7_9.6               rhel  668 k
 lua                          x86_64  5.1.4-15.el7                  rhel  201 k
 lua-srpm-macros              noarch  1-13.el7                      epel  6.0 k
 lz4                          x86_64  1.8.3-1.el7                   rhel   85 k
 mpfr                         x86_64  3.1.1-4.el7                   rhel  203 k
 ncurses                      x86_64  5.9-14.20130511.el7_4         rhel  304 k
 ncurses-base                 noarch  5.9-14.20130511.el7_4         rhel   68 k
 ncurses-libs                 x86_64  5.9-14.20130511.el7_4         rhel  316 k
 nspr                         x86_64  4.35.0-1.el7_9                rhel  128 k
 nss                          x86_64  3.90.0-2.el7_9                rhel  905 k
 nss-pem                      x86_64  1.0.3-7.el7_9.1               rhel   75 k
 nss-softokn                  x86_64  3.90.0-6.el7_9                rhel  384 k
 nss-softokn-freebl           x86_64  3.90.0-6.el7_9                rhel  321 k
 nss-sysinit                  x86_64  3.90.0-2.el7_9                rhel   67 k
 nss-tools                    x86_64  3.90.0-2.el7_9                rhel  557 k
 nss-util                     x86_64  3.90.0-1.el7_9                rhel   80 k
 openldap                     x86_64  2.4.44-25.el7_9               rhel  356 k
 openssl-libs                 x86_64  1:1.0.2k-26.el7_9             rhel  1.2 M
 p11-kit                      x86_64  0.23.5-3.el7                  rhel  252 k
 p11-kit-trust                x86_64  0.23.5-3.el7                  rhel  129 k
 pam                          x86_64  1.1.8-23.el7                  rhel  721 k
 pcre                         x86_64  8.32-17.el7                   rhel  422 k
 perl                         x86_64  4:5.16.3-299.el7_9            rhel  8.0 M
 perl-Carp                    noarch  1.26-244.el7                  rhel   19 k
 perl-Encode                  x86_64  2.51-7.el7                    rhel  1.5 M
 perl-Exporter                noarch  5.68-3.el7                    rhel   28 k
 perl-File-Path               noarch  2.09-2.el7                    rhel   27 k
 perl-File-Temp               noarch  0.23.01-3.el7                 rhel   56 k
 perl-Filter                  x86_64  1.49-3.el7                    rhel   76 k
 perl-Getopt-Long             noarch  2.40-3.el7                    rhel   56 k
 perl-HTTP-Tiny               noarch  0.033-3.el7                   rhel   38 k
 perl-PathTools               x86_64  3.40-5.el7                    rhel   83 k
 perl-Pod-Escapes             noarch  1:1.04-299.el7_9              rhel   52 k
 perl-Pod-Perldoc             noarch  3.20-4.el7                    rhel   87 k
 perl-Pod-Simple              noarch  1:3.28-4.el7                  rhel  216 k
 perl-Pod-Usage               noarch  1.63-3.el7                    rhel   27 k
 perl-Scalar-List-Utils       x86_64  1.27-248.el7                  rhel   36 k
 perl-Socket                  x86_64  2.010-5.el7                   rhel   49 k
 perl-Storable                x86_64  2.45-3.el7                    rhel   77 k
 perl-Text-ParseWords         noarch  3.29-4.el7                    rhel   14 k
 perl-Thread-Queue            noarch  3.02-2.el7                    rhel   17 k
 perl-Time-HiRes              x86_64  4:1.9725-3.el7                rhel   45 k
 perl-Time-Local              noarch  1.2300-2.el7                  rhel   24 k
 perl-constant                noarch  1.27-2.el7                    rhel   19 k
 perl-generators-epel         noarch  1-1.el7                       epel  4.1 k
 perl-libs                    x86_64  4:5.16.3-299.el7_9            rhel  690 k
 perl-macros                  x86_64  4:5.16.3-299.el7_9            rhel   44 k
 perl-parent                  noarch  1:0.225-244.el7               rhel   12 k
 perl-podlators               noarch  2.5.1-3.el7                   rhel  112 k
 perl-srpm-macros             noarch  1-8.el7                       rhel  4.7 k
 perl-threads                 x86_64  1.87-4.el7                    rhel   49 k
 perl-threads-shared          x86_64  1.43-6.el7                    rhel   39 k
 pinentry                     x86_64  0.8.1-17.el7                  rhel   73 k
 pkgconfig                    x86_64  1:0.27.1-4.el7                rhel   54 k
 popt                         x86_64  1.13-16.el7                   rhel   42 k
 procps-ng                    x86_64  3.3.10-28.el7                 rhel  291 k
 pth                          x86_64  2.0.7-23.el7                  rhel   89 k
 python-libs                  x86_64  2.7.5-94.el7_9                rhel  5.6 M
 python-rpm-macros            noarch  3-34.el7                      rhel  9.1 k
 python-srpm-macros           noarch  3-34.el7                      rhel  8.8 k
 python2-rpm-macros           noarch  3-34.el7                      rhel  8.1 k
 qrencode-libs                x86_64  3.4.1-3.el7                   rhel   50 k
 readline                     x86_64  6.2-11.el7                    rhel  193 k
 redhat-release-server        x86_64  7.9-12.el7_9                  rhel   32 k
 rpm                          x86_64  4.11.3-48.el7_9               rhel  1.2 M
 rpm-build-libs               x86_64  4.11.3-48.el7_9               rhel  108 k
 rpm-libs                     x86_64  4.11.3-48.el7_9               rhel  279 k
 setup                        noarch  2.8.71-11.el7                 rhel  166 k
 shared-mime-info             x86_64  1.8-5.el7                     rhel  312 k
 sqlite                       x86_64  3.7.17-8.el7_7.1              rhel  394 k
 systemd                      x86_64  219-78.el7_9.9                rhel  5.1 M
 systemd-libs                 x86_64  219-78.el7_9.9                rhel  419 k
 tzdata                       noarch  2024a-1.el7                   rhel  497 k
 ustr                         x86_64  1.0.4-16.el7                  rhel   92 k
 xz-libs                      x86_64  5.2.2-2.el7_9                 rhel  103 k
 zip                          x86_64  3.0-11.el7                    rhel  260 k
 zlib                         x86_64  1.2.7-21.el7_9                rhel   90 k

Transaction Summary
================================================================================
Install  25 Packages (+153 Dependent packages)

Total download size: 132 M
Installed size: 564 M
Downloading packages:
warning: /var/lib/mock/rhel+epel-7-x86_64-1738090627.921135/root/var/cache/yum/rhel/packages/audit-libs-2.8.5-4.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Public key for audit-libs-2.8.5-4.el7.x86_64.rpm is not installed
(1/178): audit-libs-2.8.5-4.el7.x86_64.rpm                 | 102 kB   00:00     
(2/178): acl-2.2.51-15.el7.x86_64.rpm                      |  82 kB   00:00     
(3/178): basesystem-10.0-7.el7.noarch.rpm                  | 4.9 kB   00:00     
(4/178): bash-4.2.46-35.el7_9.x86_64.rpm                   | 1.0 MB   00:00     
(5/178): bzip2-1.0.6-13.el7.x86_64.rpm                     |  52 kB   00:00     
(6/178): binutils-2.27-44.base.el7_9.1.x86_64.rpm          | 5.9 MB   00:00     
(7/178): bzip2-libs-1.0.6-13.el7.x86_64.rpm                |  40 kB   00:00     
(8/178): ca-certificates-2023.2.60_v7.0.306-72.el7_9.noarc | 923 kB   00:00     
(9/178): chkconfig-1.7.6-1.el7.x86_64.rpm                  | 182 kB   00:00     
(10/178): coreutils-8.22-24.el7_9.2.x86_64.rpm             | 3.3 MB   00:00     
(11/178): cpio-2.11-28.el7.x86_64.rpm                      | 211 kB   00:00     
(12/178): cracklib-2.9.0-11.el7.x86_64.rpm                 |  80 kB   00:00     
(13/178): cpp-4.8.5-44.el7.x86_64.rpm                      | 6.0 MB   00:00     
(14/178): cracklib-dicts-2.9.0-11.el7.x86_64.rpm           | 3.6 MB   00:00     
(15/178): cryptsetup-libs-2.0.3-6.el7.x86_64.rpm           | 339 kB   00:00     
(16/178): cyrus-sasl-lib-2.1.26-24.el7_9.x86_64.rpm        | 156 kB   00:00     
(17/178): curl-7.29.0-59.el7_9.2.x86_64.rpm                | 271 kB   00:00     
(18/178): dbus-1.10.24-15.el7.x86_64.rpm                   | 245 kB   00:00     
(19/178): dbus-libs-1.10.24-15.el7.x86_64.rpm              | 169 kB   00:00     
(20/178): device-mapper-1.02.170-6.el7_9.5.x86_64.rpm      | 297 kB   00:00     
(21/178): device-mapper-libs-1.02.170-6.el7_9.5.x86_64.rpm | 325 kB   00:00     
(22/178): diffutils-3.3-6.el7_9.x86_64.rpm                 | 322 kB   00:00     
(23/178): dracut-033-572.el7.x86_64.rpm                    | 329 kB   00:00     
(24/178): dwz-0.11-3.el7.x86_64.rpm                        |  99 kB   00:00     
(25/178): elfutils-0.176-5.el7.x86_64.rpm                  | 308 kB   00:00     
(26/178): elfutils-default-yama-scope-0.176-5.el7.noarch.r |  33 kB   00:00     
Public key for epel-rpm-macros-7-38.noarch.rpm is not installed
(27/178): epel-rpm-macros-7-38.noarch.rpm                  |  19 kB   00:00     
warning: /var/lib/mock/rhel+epel-7-x86_64-1738090627.921135/root/var/cache/yum/epel/packages/epel-rpm-macros-7-38.noarch.rpm: Header V4 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
(28/178): epel-release-7-14.noarch.rpm                     |  15 kB   00:00     
(29/178): elfutils-libelf-0.176-5.el7.x86_64.rpm           | 195 kB   00:00     
(30/178): elfutils-libs-0.176-5.el7.x86_64.rpm             | 291 kB   00:00     
(31/178): file-5.11-37.el7.x86_64.rpm                      |  57 kB   00:00     
(32/178): expat-2.1.0-15.el7_9.x86_64.rpm                  |  83 kB   00:00     
(33/178): file-libs-5.11-37.el7.x86_64.rpm                 | 340 kB   00:00     
(34/178): filesystem-3.2-25.el7.x86_64.rpm                 | 1.0 MB   00:00     
(35/178): findutils-4.5.11-6.el7.x86_64.rpm                | 559 kB   00:00     
(36/178): gawk-4.0.2-4.el7_3.1.x86_64.rpm                  | 874 kB   00:00     
(37/178): gcc-4.8.5-44.el7.x86_64.rpm                      |  16 MB   00:00     
(38/178): gcc-c++-4.8.5-44.el7.x86_64.rpm                  | 7.2 MB   00:00     
(39/178): gdbm-1.10-8.el7.x86_64.rpm                       |  70 kB   00:00     
(40/178): gdb-7.6.1-120.el7.x86_64.rpm                     | 2.4 MB   00:00     
(41/178): glib2-2.56.1-9.el7_9.x86_64.rpm                  | 2.5 MB   00:00     
(42/178): glibc-2.17-326.el7_9.3.x86_64.rpm                | 3.6 MB   00:00     
(43/178): glibc-common-2.17-326.el7_9.3.x86_64.rpm         |  12 MB   00:00     
(44/178): glibc-devel-2.17-326.el7_9.3.x86_64.rpm          | 1.1 MB   00:00     
(45/178): glibc-headers-2.17-326.el7_9.3.x86_64.rpm        | 692 kB   00:00     
(46/178): gmp-6.0.0-15.el7.x86_64.rpm                      | 281 kB   00:00     
(47/178): grep-2.20-3.el7.x86_64.rpm                       | 344 kB   00:00     
(48/178): gnupg2-2.0.22-5.el7_5.x86_64.rpm                 | 1.5 MB   00:00     
(49/178): gzip-1.5-11.el7_9.x86_64.rpm                     | 130 kB   00:00     
(50/178): groff-base-1.22.2-8.el7.x86_64.rpm               | 942 kB   00:00     
(51/178): hardlink-1.0-19.el7.x86_64.rpm                   |  14 kB   00:00     
(52/178): json-c-0.11-4.el7_0.x86_64.rpm                   |  31 kB   00:00     
(53/178): info-5.1-5.el7.x86_64.rpm                        | 233 kB   00:00     
(54/178): keyutils-libs-1.5.8-3.el7.x86_64.rpm             |  25 kB   00:00     
(55/178): kernel-headers-3.10.0-1160.119.1.el7.x86_64.rpm  | 9.1 MB   00:00     
(56/178): kmod-20-28.el7.x86_64.rpm                        | 123 kB   00:00     
(57/178): kmod-libs-20-28.el7.x86_64.rpm                   |  51 kB   00:00     
(58/178): kpartx-0.4.9-136.el7_9.x86_64.rpm                |  81 kB   00:00     
(59/178): libacl-2.2.51-15.el7.x86_64.rpm                  |  27 kB   00:00     
(60/178): krb5-libs-1.15.1-55.el7_9.x86_64.rpm             | 810 kB   00:00     
(61/178): libassuan-2.1.0-3.el7.x86_64.rpm                 |  63 kB   00:00     
(62/178): libattr-2.4.46-13.el7.x86_64.rpm                 |  18 kB   00:00     
(63/178): libblkid-2.23.2-65.el7_9.1.x86_64.rpm            | 183 kB   00:00     
(64/178): libcap-2.22-11.el7.x86_64.rpm                    |  47 kB   00:00     
(65/178): libcap-ng-0.7.5-4.el7.x86_64.rpm                 |  25 kB   00:00     
(66/178): libcom_err-1.42.9-19.el7.x86_64.rpm              |  42 kB   00:00     
(67/178): libcurl-7.29.0-59.el7_9.2.x86_64.rpm             | 223 kB   00:00     
(68/178): libdb-5.3.21-25.el7.x86_64.rpm                   | 719 kB   00:00     
(69/178): libffi-3.0.13-19.el7.x86_64.rpm                  |  30 kB   00:00     
(70/178): libdb-utils-5.3.21-25.el7.x86_64.rpm             | 133 kB   00:00     
(71/178): libgcc-4.8.5-44.el7.x86_64.rpm                   | 103 kB   00:00     
(72/178): libgcrypt-1.5.3-14.el7.x86_64.rpm                | 263 kB   00:00     
(73/178): libgomp-4.8.5-44.el7.x86_64.rpm                  | 159 kB   00:00     
(74/178): libgpg-error-1.12-3.el7.x86_64.rpm               |  87 kB   00:00     
(75/178): libidn-1.28-4.el7.x86_64.rpm                     | 209 kB   00:00     
(76/178): libmount-2.23.2-65.el7_9.1.x86_64.rpm            | 185 kB   00:00     
(77/178): libmpc-1.0.1-3.el7.x86_64.rpm                    |  51 kB   00:00     
(78/178): libpwquality-1.2.3-5.el7.x86_64.rpm              |  85 kB   00:00     
(79/178): libselinux-2.5-15.el7.x86_64.rpm                 | 162 kB   00:00     
(80/178): libsepol-2.5-10.el7.x86_64.rpm                   | 297 kB   00:00     
(81/178): libsemanage-2.5-14.el7.x86_64.rpm                | 151 kB   00:00     
(82/178): libsmartcols-2.23.2-65.el7_9.1.x86_64.rpm        | 143 kB   00:00     
(83/178): libssh2-1.8.0-4.el7_9.1.x86_64.rpm               |  88 kB   00:00     
(84/178): libstdc++-devel-4.8.5-44.el7.x86_64.rpm          | 1.5 MB   00:00     
(85/178): libstdc++-4.8.5-44.el7.x86_64.rpm                | 306 kB   00:00     
(86/178): libtasn1-4.10-1.el7.x86_64.rpm                   | 320 kB   00:00     
(87/178): libuser-0.60-9.el7.x86_64.rpm                    | 400 kB   00:00     
(88/178): libutempter-1.1.6-4.el7.x86_64.rpm               |  25 kB   00:00     
(89/178): libuuid-2.23.2-65.el7_9.1.x86_64.rpm             |  84 kB   00:00     
(90/178): libverto-0.2.5-4.el7.x86_64.rpm                  |  16 kB   00:00     
(91/178): lua-srpm-macros-1-13.el7.noarch.rpm              | 6.0 kB   00:00     
(92/178): libxml2-2.9.1-6.el7_9.6.x86_64.rpm               | 668 kB   00:00     
(93/178): lua-5.1.4-15.el7.x86_64.rpm                      | 201 kB   00:00     
(94/178): lz4-1.8.3-1.el7.x86_64.rpm                       |  85 kB   00:00     
(95/178): make-3.82-24.el7.x86_64.rpm                      | 421 kB   00:00     
(96/178): mpfr-3.1.1-4.el7.x86_64.rpm                      | 203 kB   00:00     
(97/178): ncurses-5.9-14.20130511.el7_4.x86_64.rpm         | 304 kB   00:00     
(98/178): ncurses-base-5.9-14.20130511.el7_4.noarch.rpm    |  68 kB   00:00     
(99/178): ncurses-libs-5.9-14.20130511.el7_4.x86_64.rpm    | 316 kB   00:00     
(100/178): nspr-4.35.0-1.el7_9.x86_64.rpm                  | 128 kB   00:00     
(101/178): nss-3.90.0-2.el7_9.x86_64.rpm                   | 905 kB   00:00     
(102/178): nss-pem-1.0.3-7.el7_9.1.x86_64.rpm              |  75 kB   00:00     
(103/178): nss-softokn-freebl-3.90.0-6.el7_9.x86_64.rpm    | 321 kB   00:00     
(104/178): nss-softokn-3.90.0-6.el7_9.x86_64.rpm           | 384 kB   00:00     
(105/178): nss-sysinit-3.90.0-2.el7_9.x86_64.rpm           |  67 kB   00:00     
(106/178): nss-tools-3.90.0-2.el7_9.x86_64.rpm             | 557 kB   00:00     
(107/178): nss-util-3.90.0-1.el7_9.x86_64.rpm              |  80 kB   00:00     
(108/178): openldap-2.4.44-25.el7_9.x86_64.rpm             | 356 kB   00:00     
(109/178): openssl-libs-1.0.2k-26.el7_9.x86_64.rpm         | 1.2 MB   00:00     
(110/178): p11-kit-0.23.5-3.el7.x86_64.rpm                 | 252 kB   00:00     
(111/178): p11-kit-trust-0.23.5-3.el7.x86_64.rpm           | 129 kB   00:00     
(112/178): patch-2.7.1-12.el7_7.x86_64.rpm                 | 111 kB   00:00     
(113/178): pam-1.1.8-23.el7.x86_64.rpm                     | 721 kB   00:00     
(114/178): pcre-8.32-17.el7.x86_64.rpm                     | 422 kB   00:00     
(115/178): perl-5.16.3-299.el7_9.x86_64.rpm                | 8.0 MB   00:00     
(116/178): perl-Carp-1.26-244.el7.noarch.rpm               |  19 kB   00:00     
(117/178): perl-Exporter-5.68-3.el7.noarch.rpm             |  28 kB   00:00     
(118/178): perl-Encode-2.51-7.el7.x86_64.rpm               | 1.5 MB   00:00     
(119/178): perl-File-Path-2.09-2.el7.noarch.rpm            |  27 kB   00:00     
(120/178): perl-File-Temp-0.23.01-3.el7.noarch.rpm         |  56 kB   00:00     
(121/178): perl-Filter-1.49-3.el7.x86_64.rpm               |  76 kB   00:00     
(122/178): perl-Getopt-Long-2.40-3.el7.noarch.rpm          |  56 kB   00:00     
(123/178): perl-HTTP-Tiny-0.033-3.el7.noarch.rpm           |  38 kB   00:00     
(124/178): perl-PathTools-3.40-5.el7.x86_64.rpm            |  83 kB   00:00     
(125/178): perl-Pod-Escapes-1.04-299.el7_9.noarch.rpm      |  52 kB   00:00     
(126/178): perl-Pod-Perldoc-3.20-4.el7.noarch.rpm          |  87 kB   00:00     
(127/178): perl-Pod-Simple-3.28-4.el7.noarch.rpm           | 216 kB   00:00     
(128/178): perl-Pod-Usage-1.63-3.el7.noarch.rpm            |  27 kB   00:00     
(129/178): perl-Scalar-List-Utils-1.27-248.el7.x86_64.rpm  |  36 kB   00:00     
(130/178): perl-Socket-2.010-5.el7.x86_64.rpm              |  49 kB   00:00     
(131/178): perl-Storable-2.45-3.el7.x86_64.rpm             |  77 kB   00:00     
(132/178): perl-Text-ParseWords-3.29-4.el7.noarch.rpm      |  14 kB   00:00     
(133/178): perl-Thread-Queue-3.02-2.el7.noarch.rpm         |  17 kB   00:00     
(134/178): perl-Time-HiRes-1.9725-3.el7.x86_64.rpm         |  45 kB   00:00     
(135/178): perl-generators-epel-1-1.el7.noarch.rpm         | 4.1 kB   00:00     
(136/178): perl-Time-Local-1.2300-2.el7.noarch.rpm         |  24 kB   00:00     
(137/178): perl-constant-1.27-2.el7.noarch.rpm             |  19 kB   00:00     
(138/178): perl-macros-5.16.3-299.el7_9.x86_64.rpm         |  44 kB   00:00     
(139/178): perl-libs-5.16.3-299.el7_9.x86_64.rpm           | 690 kB   00:00     
(140/178): perl-parent-0.225-244.el7.noarch.rpm            |  12 kB   00:00     
(141/178): perl-podlators-2.5.1-3.el7.noarch.rpm           | 112 kB   00:00     
(142/178): perl-srpm-macros-1-8.el7.noarch.rpm             | 4.7 kB   00:00     
(143/178): perl-threads-1.87-4.el7.x86_64.rpm              |  49 kB   00:00     
(144/178): perl-threads-shared-1.43-6.el7.x86_64.rpm       |  39 kB   00:00     
(145/178): pkgconfig-0.27.1-4.el7.x86_64.rpm               |  54 kB   00:00     
(146/178): pinentry-0.8.1-17.el7.x86_64.rpm                |  73 kB   00:00     
(147/178): popt-1.13-16.el7.x86_64.rpm                     |  42 kB   00:00     
(148/178): procps-ng-3.3.10-28.el7.x86_64.rpm              | 291 kB   00:00     
(149/178): pth-2.0.7-23.el7.x86_64.rpm                     |  89 kB   00:00     
(150/178): python-rpm-macros-3-34.el7.noarch.rpm           | 9.1 kB   00:00     
(151/178): python-srpm-macros-3-34.el7.noarch.rpm          | 8.8 kB   00:00     
(152/178): python-libs-2.7.5-94.el7_9.x86_64.rpm           | 5.6 MB   00:00     
(153/178): python2-rpm-macros-3-34.el7.noarch.rpm          | 8.1 kB   00:00     
(154/178): qrencode-libs-3.4.1-3.el7.x86_64.rpm            |  50 kB   00:00     
(155/178): readline-6.2-11.el7.x86_64.rpm                  | 193 kB   00:00     
(156/178): redhat-release-server-7.9-12.el7_9.x86_64.rpm   |  32 kB   00:00     
(157/178): redhat-rpm-config-9.1.0-88.el7.noarch.rpm       |  81 kB   00:00     
(158/178): rpm-4.11.3-48.el7_9.x86_64.rpm                  | 1.2 MB   00:00     
(159/178): rpm-build-4.11.3-48.el7_9.x86_64.rpm            | 150 kB   00:00     
(160/178): rpm-build-libs-4.11.3-48.el7_9.x86_64.rpm       | 108 kB   00:00     
(161/178): rpm-libs-4.11.3-48.el7_9.x86_64.rpm             | 279 kB   00:00     
(162/178): sed-4.2.2-7.el7.x86_64.rpm                      | 231 kB   00:00     
(163/178): setup-2.8.71-11.el7.noarch.rpm                  | 166 kB   00:00     
(164/178): shared-mime-info-1.8-5.el7.x86_64.rpm           | 312 kB   00:00     
(165/178): shadow-utils-4.6-5.el7.x86_64.rpm               | 1.2 MB   00:00     
(166/178): sqlite-3.7.17-8.el7_7.1.x86_64.rpm              | 394 kB   00:00     
(167/178): systemd-219-78.el7_9.9.x86_64.rpm               | 5.1 MB   00:00     
(168/178): systemd-libs-219-78.el7_9.9.x86_64.rpm          | 419 kB   00:00     
(169/178): tar-1.26-35.el7.x86_64.rpm                      | 846 kB   00:00     
(170/178): tzdata-2024a-1.el7.noarch.rpm                   | 497 kB   00:00     
(171/178): unzip-6.0-24.el7_9.x86_64.rpm                   | 173 kB   00:00     
(172/178): ustr-1.0.4-16.el7.x86_64.rpm                    |  92 kB   00:00     
(173/178): util-linux-2.23.2-65.el7_9.1.x86_64.rpm         | 2.0 MB   00:00     
(174/178): which-2.20-7.el7.x86_64.rpm                     |  41 kB   00:00     
(175/178): xz-5.2.2-2.el7_9.x86_64.rpm                     | 229 kB   00:00     
(176/178): xz-libs-5.2.2-2.el7_9.x86_64.rpm                | 103 kB   00:00     
(177/178): zlib-1.2.7-21.el7_9.x86_64.rpm                  |  90 kB   00:00     
(178/178): zip-3.0-11.el7.x86_64.rpm                       | 260 kB   00:00     
--------------------------------------------------------------------------------
Total                                              3.3 MB/s | 132 MB  00:40     
Retrieving key from file:///usr/share/distribution-gpg-keys/redhat/RPM-GPG-KEY-redhat7-release
Importing GPG key 0xFD431D51:
 Userid     : "Red Hat, Inc. (release key 2) <security@redhat.com>"
 Fingerprint: 567e 347a d004 4ade 55ba 8a5f 199e 2f91 fd43 1d51
 From       : /usr/share/distribution-gpg-keys/redhat/RPM-GPG-KEY-redhat7-release
Importing GPG key 0x2FA658E0:
 Userid     : "Red Hat, Inc. (auxiliary key) <security@redhat.com>"
 Fingerprint: 43a6 e49c 4a38 f4be 9abf 2a53 4568 9c88 2fa6 58e0
 From       : /usr/share/distribution-gpg-keys/redhat/RPM-GPG-KEY-redhat7-release
Retrieving key from file:///usr/share/distribution-gpg-keys/epel/RPM-GPG-KEY-EPEL-7
Importing GPG key 0x352C64E5:
 Userid     : "Fedora EPEL (7) <epel@fedoraproject.org>"
 Fingerprint: 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5
 From       : /usr/share/distribution-gpg-keys/epel/RPM-GPG-KEY-EPEL-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : libgcc-4.8.5-44.el7.x86_64                                 1/178 
  Installing : redhat-release-server-7.9-12.el7_9.x86_64                  2/178 
  Installing : setup-2.8.71-11.el7.noarch                                 3/178 
warning: /etc/hosts created as /etc/hosts.rpmnew
  Installing : filesystem-3.2-25.el7.x86_64                               4/178 
  Installing : python-srpm-macros-3-34.el7.noarch                         5/178 
  Installing : python-rpm-macros-3-34.el7.noarch                          6/178 
  Installing : basesystem-10.0-7.el7.noarch                               7/178 
  Installing : ncurses-base-5.9-14.20130511.el7_4.noarch                  8/178 
  Installing : perl-srpm-macros-1-8.el7.noarch                            9/178 
  Installing : kernel-headers-3.10.0-1160.119.1.el7.x86_64               10/178 
  Installing : tzdata-2024a-1.el7.noarch                                 11/178 
  Installing : nss-softokn-freebl-3.90.0-6.el7_9.x86_64                  12/178 
  Installing : glibc-common-2.17-326.el7_9.3.x86_64                      13/178 
  Installing : glibc-2.17-326.el7_9.3.x86_64                             14/178 
  Installing : nspr-4.35.0-1.el7_9.x86_64                                15/178 
  Installing : nss-util-3.90.0-1.el7_9.x86_64                            16/178 
  Installing : libstdc++-4.8.5-44.el7.x86_64                             17/178 
  Installing : ncurses-libs-5.9-14.20130511.el7_4.x86_64                 18/178 
  Installing : bash-4.2.46-35.el7_9.x86_64                               19/178 
  Installing : libsepol-2.5-10.el7.x86_64                                20/178 
  Installing : pcre-8.32-17.el7.x86_64                                   21/178 
  Installing : libselinux-2.5-15.el7.x86_64                              22/178 
  Installing : zlib-1.2.7-21.el7_9.x86_64                                23/178 
  Installing : info-5.1-5.el7.x86_64                                     24/178 
  Installing : bzip2-libs-1.0.6-13.el7.x86_64                            25/178 
  Installing : xz-libs-5.2.2-2.el7_9.x86_64                              26/178 
  Installing : elfutils-libelf-0.176-5.el7.x86_64                        27/178 
  Installing : libdb-5.3.21-25.el7.x86_64                                28/178 
  Installing : sed-4.2.2-7.el7.x86_64                                    29/178 
  Installing : 1:gmp-6.0.0-15.el7.x86_64                                 30/178 
  Installing : popt-1.13-16.el7.x86_64                                   31/178 
  Installing : libattr-2.4.46-13.el7.x86_64                              32/178 
  Installing : libacl-2.2.51-15.el7.x86_64                               33/178 
  Installing : libcap-2.22-11.el7.x86_64                                 34/178 
  Installing : readline-6.2-11.el7.x86_64                                35/178 
  Installing : libgpg-error-1.12-3.el7.x86_64                            36/178 
  Installing : libgcrypt-1.5.3-14.el7.x86_64                             37/178 
  Installing : lua-5.1.4-15.el7.x86_64                                   38/178 
  Installing : chkconfig-1.7.6-1.el7.x86_64                              39/178 
  Installing : mpfr-3.1.1-4.el7.x86_64                                   40/178 
  Installing : grep-2.20-3.el7.x86_64                                    41/178 
  Installing : libffi-3.0.13-19.el7.x86_64                               42/178 
  Installing : libuuid-2.23.2-65.el7_9.1.x86_64                          43/178 
  Installing : libcom_err-1.42.9-19.el7.x86_64                           44/178 
  Installing : libmpc-1.0.1-3.el7.x86_64                                 45/178 
  Installing : xz-5.2.2-2.el7_9.x86_64                                   46/178 
  Installing : gawk-4.0.2-4.el7_3.1.x86_64                               47/178 
  Installing : 1:findutils-4.5.11-6.el7.x86_64                           48/178 
  Installing : diffutils-3.3-6.el7_9.x86_64                              49/178 
  Installing : cpio-2.11-28.el7.x86_64                                   50/178 
  Installing : file-libs-5.11-37.el7.x86_64                              51/178 
  Installing : expat-2.1.0-15.el7_9.x86_64                               52/178 
  Installing : libcap-ng-0.7.5-4.el7.x86_64                              53/178 
  Installing : audit-libs-2.8.5-4.el7.x86_64                             54/178 
  Installing : p11-kit-0.23.5-3.el7.x86_64                               55/178 
  Installing : sqlite-3.7.17-8.el7_7.1.x86_64                            56/178 
  Installing : nss-softokn-3.90.0-6.el7_9.x86_64                         57/178 
  Installing : 2:tar-1.26-35.el7.x86_64                                  58/178 
  Installing : gdbm-1.10-8.el7.x86_64                                    59/178 
  Installing : lz4-1.8.3-1.el7.x86_64                                    60/178 
  Installing : file-5.11-37.el7.x86_64                                   61/178 
  Installing : cpp-4.8.5-44.el7.x86_64                                   62/178 
  Installing : pinentry-0.8.1-17.el7.x86_64                              63/178 
  Installing : libassuan-2.1.0-3.el7.x86_64                              64/178 
  Installing : acl-2.2.51-15.el7.x86_64                                  65/178 
  Installing : patch-2.7.1-12.el7_7.x86_64                               66/178 
  Installing : groff-base-1.22.2-8.el7.x86_64                            67/178 
  Installing : 1:perl-parent-0.225-244.el7.noarch                        68/178 
  Installing : perl-HTTP-Tiny-0.033-3.el7.noarch                         69/178 
  Installing : perl-podlators-2.5.1-3.el7.noarch                         70/178 
  Installing : perl-Pod-Perldoc-3.20-4.el7.noarch                        71/178 
  Installing : 1:perl-Pod-Escapes-1.04-299.el7_9.noarch                  72/178 
  Installing : perl-Text-ParseWords-3.29-4.el7.noarch                    73/178 
  Installing : perl-Encode-2.51-7.el7.x86_64                             74/178 
  Installing : perl-Pod-Usage-1.63-3.el7.noarch                          75/178 
  Installing : 4:perl-Time-HiRes-1.9725-3.el7.x86_64                     76/178 
  Installing : perl-threads-1.87-4.el7.x86_64                            77/178 
  Installing : perl-Storable-2.45-3.el7.x86_64                           78/178 
  Installing : perl-Carp-1.26-244.el7.noarch                             79/178 
  Installing : perl-Filter-1.49-3.el7.x86_64                             80/178 
  Installing : perl-Exporter-5.68-3.el7.noarch                           81/178 
  Installing : perl-constant-1.27-2.el7.noarch                           82/178 
  Installing : perl-Socket-2.010-5.el7.x86_64                            83/178 
  Installing : 4:perl-macros-5.16.3-299.el7_9.x86_64                     84/178 
  Installing : perl-Time-Local-1.2300-2.el7.noarch                       85/178 
  Installing : perl-File-Path-2.09-2.el7.noarch                          86/178 
  Installing : perl-File-Temp-0.23.01-3.el7.noarch                       87/178 
  Installing : perl-PathTools-3.40-5.el7.x86_64                          88/178 
  Installing : perl-threads-shared-1.43-6.el7.x86_64                     89/178 
  Installing : perl-Scalar-List-Utils-1.27-248.el7.x86_64                90/178 
  Installing : 4:perl-libs-5.16.3-299.el7_9.x86_64                       91/178 
  Installing : 1:perl-Pod-Simple-3.28-4.el7.noarch                       92/178 
  Installing : perl-Getopt-Long-2.40-3.el7.noarch                        93/178 
  Installing : 4:perl-5.16.3-299.el7_9.x86_64                            94/178 
  Installing : perl-Thread-Queue-3.02-2.el7.noarch                       95/178 
  Installing : libdb-utils-5.3.21-25.el7.x86_64                          96/178 
  Installing : dwz-0.11-3.el7.x86_64                                     97/178 
  Installing : kmod-libs-20-28.el7.x86_64                                98/178 
  Installing : libxml2-2.9.1-6.el7_9.6.x86_64                            99/178 
  Installing : bzip2-1.0.6-13.el7.x86_64                                100/178 
  Installing : unzip-6.0-24.el7_9.x86_64                                101/178 
  Installing : zip-3.0-11.el7.x86_64                                    102/178 
  Installing : libidn-1.28-4.el7.x86_64                                 103/178 
  Installing : libgomp-4.8.5-44.el7.x86_64                              104/178 
  Installing : glibc-headers-2.17-326.el7_9.3.x86_64                    105/178 
  Installing : glibc-devel-2.17-326.el7_9.3.x86_64                      106/178 
  Installing : ncurses-5.9-14.20130511.el7_4.x86_64                     107/178 
  Installing : libstdc++-devel-4.8.5-44.el7.x86_64                      108/178 
  Installing : pth-2.0.7-23.el7.x86_64                                  109/178 
  Installing : libsmartcols-2.23.2-65.el7_9.1.x86_64                    110/178 
  Installing : ustr-1.0.4-16.el7.x86_64                                 111/178 
  Installing : libsemanage-2.5-14.el7.x86_64                            112/178 
  Installing : libverto-0.2.5-4.el7.x86_64                              113/178 
  Installing : libtasn1-4.10-1.el7.x86_64                               114/178 
  Installing : p11-kit-trust-0.23.5-3.el7.x86_64                        115/178 
  Installing : ca-certificates-2023.2.60_v7.0.306-72.el7_9.noarch       116/178 
  Installing : 1:hardlink-1.0-19.el7.x86_64                             117/178 
  Installing : qrencode-libs-3.4.1-3.el7.x86_64                         118/178 
  Installing : keyutils-libs-1.5.8-3.el7.x86_64                         119/178 
  Installing : 1:openssl-libs-1.0.2k-26.el7_9.x86_64                    120/178 
  Installing : coreutils-8.22-24.el7_9.2.x86_64                         121/178 
  Installing : krb5-libs-1.15.1-55.el7_9.x86_64                         122/178 
  Installing : libblkid-2.23.2-65.el7_9.1.x86_64                        123/178 
  Installing : gzip-1.5-11.el7_9.x86_64                                 124/178 
  Installing : cracklib-2.9.0-11.el7.x86_64                             125/178 
  Installing : libmount-2.23.2-65.el7_9.1.x86_64                        126/178 
  Installing : glib2-2.56.1-9.el7_9.x86_64                              127/178 
  Installing : shared-mime-info-1.8-5.el7.x86_64                        128/178 
  Installing : binutils-2.27-44.base.el7_9.1.x86_64                     129/178 
  Installing : 2:shadow-utils-4.6-5.el7.x86_64                          130/178 
  Installing : 1:pkgconfig-0.27.1-4.el7.x86_64                          131/178 
  Installing : cracklib-dicts-2.9.0-11.el7.x86_64                       132/178 
  Installing : pam-1.1.8-23.el7.x86_64                                  133/178 
  Installing : libpwquality-1.2.3-5.el7.x86_64                          134/178 
  Installing : libutempter-1.1.6-4.el7.x86_64                           135/178 
  Installing : gcc-4.8.5-44.el7.x86_64                                  136/178 
  Installing : cyrus-sasl-lib-2.1.26-24.el7_9.x86_64                    137/178 
  Installing : nss-pem-1.0.3-7.el7_9.1.x86_64                           138/178 
  Installing : nss-3.90.0-2.el7_9.x86_64                                139/178 
  Installing : nss-sysinit-3.90.0-2.el7_9.x86_64                        140/178 
  Installing : nss-tools-3.90.0-2.el7_9.x86_64                          141/178 
  Installing : python-libs-2.7.5-94.el7_9.x86_64                        142/178 
  Installing : gdb-7.6.1-120.el7.x86_64                                 143/178 
  Installing : libssh2-1.8.0-4.el7_9.1.x86_64                           144/178 
  Installing : libcurl-7.29.0-59.el7_9.2.x86_64                         145/178 
  Installing : curl-7.29.0-59.el7_9.2.x86_64                            146/178 
  Installing : rpm-libs-4.11.3-48.el7_9.x86_64                          147/178 
  Installing : rpm-4.11.3-48.el7_9.x86_64                               148/178 
  Installing : openldap-2.4.44-25.el7_9.x86_64                          149/178 
  Installing : libuser-0.60-9.el7.x86_64                                150/178 
  Installing : gnupg2-2.0.22-5.el7_5.x86_64                             151/178 
  Installing : rpm-build-libs-4.11.3-48.el7_9.x86_64                    152/178 
  Installing : perl-generators-epel-1-1.el7.noarch                      153/178 
  Installing : lua-srpm-macros-1-13.el7.noarch                          154/178 
  Installing : redhat-rpm-config-9.1.0-88.el7.noarch                    155/178 
  Installing : json-c-0.11-4.el7_0.x86_64                               156/178 
  Installing : util-linux-2.23.2-65.el7_9.1.x86_64                      157/178 
  Installing : procps-ng-3.3.10-28.el7.x86_64                           158/178 
  Installing : 7:device-mapper-1.02.170-6.el7_9.5.x86_64                159/178 
  Installing : kpartx-0.4.9-136.el7_9.x86_64                            160/178 
  Installing : 7:device-mapper-libs-1.02.170-6.el7_9.5.x86_64           161/178 
  Installing : cryptsetup-libs-2.0.3-6.el7.x86_64                       162/178 
  Installing : dracut-033-572.el7.x86_64                                163/178 
  Installing : kmod-20-28.el7.x86_64                                    164/178 
  Installing : elfutils-libs-0.176-5.el7.x86_64                         165/178 
  Installing : systemd-libs-219-78.el7_9.9.x86_64                       166/178 
  Installing : 1:dbus-libs-1.10.24-15.el7.x86_64                        167/178 
  Installing : systemd-219-78.el7_9.9.x86_64                            168/178 
Running in chroot, ignoring request.
  Installing : 1:dbus-1.10.24-15.el7.x86_64                             169/178 
  Installing : elfutils-default-yama-scope-0.176-5.el7.noarch           170/178 
  Installing : elfutils-0.176-5.el7.x86_64                              171/178 
  Installing : python2-rpm-macros-3-34.el7.noarch                       172/178 
  Installing : epel-rpm-macros-7-38.noarch                              173/178 
  Installing : rpm-build-4.11.3-48.el7_9.x86_64                         174/178 
  Installing : gcc-c++-4.8.5-44.el7.x86_64                              175/178 
  Installing : 1:make-3.82-24.el7.x86_64                                176/178 
  Installing : which-2.20-7.el7.x86_64                                  177/178 
  Installing : epel-release-7-14.noarch                                 178/178 
  Verifying  : perl-HTTP-Tiny-0.033-3.el7.noarch                          1/178 
  Verifying  : gcc-c++-4.8.5-44.el7.x86_64                                2/178 
  Verifying  : acl-2.2.51-15.el7.x86_64                                   3/178 
  Verifying  : libblkid-2.23.2-65.el7_9.1.x86_64                          4/178 
  Verifying  : 1:pkgconfig-0.27.1-4.el7.x86_64                            5/178 
  Verifying  : libacl-2.2.51-15.el7.x86_64                                6/178 
  Verifying  : libcurl-7.29.0-59.el7_9.2.x86_64                           7/178 
  Verifying  : libdb-utils-5.3.21-25.el7.x86_64                           8/178 
  Verifying  : libcap-2.22-11.el7.x86_64                                  9/178 
  Verifying  : pcre-8.32-17.el7.x86_64                                   10/178 
  Verifying  : pth-2.0.7-23.el7.x86_64                                   11/178 
  Verifying  : readline-6.2-11.el7.x86_64                                12/178 
  Verifying  : sqlite-3.7.17-8.el7_7.1.x86_64                            13/178 
  Verifying  : epel-rpm-macros-7-38.noarch                               14/178 
  Verifying  : groff-base-1.22.2-8.el7.x86_64                            15/178 
  Verifying  : cpp-4.8.5-44.el7.x86_64                                   16/178 
  Verifying  : perl-generators-epel-1-1.el7.noarch                       17/178 
  Verifying  : libsmartcols-2.23.2-65.el7_9.1.x86_64                     18/178 
  Verifying  : shared-mime-info-1.8-5.el7.x86_64                         19/178 
  Verifying  : glibc-common-2.17-326.el7_9.3.x86_64                      20/178 
  Verifying  : 1:dbus-1.10.24-15.el7.x86_64                              21/178 
  Verifying  : libselinux-2.5-15.el7.x86_64                              22/178 
  Verifying  : util-linux-2.23.2-65.el7_9.1.x86_64                       23/178 
  Verifying  : libsemanage-2.5-14.el7.x86_64                             24/178 
  Verifying  : kmod-libs-20-28.el7.x86_64                                25/178 
  Verifying  : procps-ng-3.3.10-28.el7.x86_64                            26/178 
  Verifying  : openldap-2.4.44-25.el7_9.x86_64                           27/178 
  Verifying  : python2-rpm-macros-3-34.el7.noarch                        28/178 
  Verifying  : cracklib-dicts-2.9.0-11.el7.x86_64                        29/178 
  Verifying  : perl-File-Path-2.09-2.el7.noarch                          30/178 
  Verifying  : libstdc++-4.8.5-44.el7.x86_64                             31/178 
  Verifying  : libassuan-2.1.0-3.el7.x86_64                              32/178 
  Verifying  : 7:device-mapper-1.02.170-6.el7_9.5.x86_64                 33/178 
  Verifying  : perl-Text-ParseWords-3.29-4.el7.noarch                    34/178 
  Verifying  : python-srpm-macros-3-34.el7.noarch                        35/178 
  Verifying  : ustr-1.0.4-16.el7.x86_64                                  36/178 
  Verifying  : lua-5.1.4-15.el7.x86_64                                   37/178 
  Verifying  : libgcc-4.8.5-44.el7.x86_64                                38/178 
  Verifying  : libutempter-1.1.6-4.el7.x86_64                            39/178 
  Verifying  : file-5.11-37.el7.x86_64                                   40/178 
  Verifying  : libidn-1.28-4.el7.x86_64                                  41/178 
  Verifying  : libxml2-2.9.1-6.el7_9.6.x86_64                            42/178 
  Verifying  : setup-2.8.71-11.el7.noarch                                43/178 
  Verifying  : 4:perl-Time-HiRes-1.9725-3.el7.x86_64                     44/178 
  Verifying  : ncurses-libs-5.9-14.20130511.el7_4.x86_64                 45/178 
  Verifying  : chkconfig-1.7.6-1.el7.x86_64                              46/178 
  Verifying  : pam-1.1.8-23.el7.x86_64                                   47/178 
  Verifying  : binutils-2.27-44.base.el7_9.1.x86_64                      48/178 
  Verifying  : elfutils-default-yama-scope-0.176-5.el7.noarch            49/178 
  Verifying  : libmount-2.23.2-65.el7_9.1.x86_64                         50/178 
  Verifying  : dracut-033-572.el7.x86_64                                 51/178 
  Verifying  : 1:dbus-libs-1.10.24-15.el7.x86_64                         52/178 
  Verifying  : zlib-1.2.7-21.el7_9.x86_64                                53/178 
  Verifying  : cryptsetup-libs-2.0.3-6.el7.x86_64                        54/178 
  Verifying  : tzdata-2024a-1.el7.noarch                                 55/178 
  Verifying  : libssh2-1.8.0-4.el7_9.1.x86_64                            56/178 
  Verifying  : bzip2-1.0.6-13.el7.x86_64                                 57/178 
  Verifying  : 1:openssl-libs-1.0.2k-26.el7_9.x86_64                     58/178 
  Verifying  : libverto-0.2.5-4.el7.x86_64                               59/178 
  Verifying  : gdb-7.6.1-120.el7.x86_64                                  60/178 
  Verifying  : nss-pem-1.0.3-7.el7_9.1.x86_64                            61/178 
  Verifying  : 1:make-3.82-24.el7.x86_64                                 62/178 
  Verifying  : info-5.1-5.el7.x86_64                                     63/178 
  Verifying  : lua-srpm-macros-1-13.el7.noarch                           64/178 
  Verifying  : bzip2-libs-1.0.6-13.el7.x86_64                            65/178 
  Verifying  : 1:perl-parent-0.225-244.el7.noarch                        66/178 
  Verifying  : libsepol-2.5-10.el7.x86_64                                67/178 
  Verifying  : bash-4.2.46-35.el7_9.x86_64                               68/178 
  Verifying  : libmpc-1.0.1-3.el7.x86_64                                 69/178 
  Verifying  : nss-tools-3.90.0-2.el7_9.x86_64                           70/178 
  Verifying  : systemd-219-78.el7_9.9.x86_64                             71/178 
  Verifying  : perl-Pod-Usage-1.63-3.el7.noarch                          72/178 
  Verifying  : perl-Encode-2.51-7.el7.x86_64                             73/178 
  Verifying  : libuser-0.60-9.el7.x86_64                                 74/178 
  Verifying  : libtasn1-4.10-1.el7.x86_64                                75/178 
  Verifying  : perl-threads-1.87-4.el7.x86_64                            76/178 
  Verifying  : 1:hardlink-1.0-19.el7.x86_64                              77/178 
  Verifying  : cracklib-2.9.0-11.el7.x86_64                              78/178 
  Verifying  : nss-sysinit-3.90.0-2.el7_9.x86_64                         79/178 
  Verifying  : perl-Getopt-Long-2.40-3.el7.noarch                        80/178 
  Verifying  : kernel-headers-3.10.0-1160.119.1.el7.x86_64               81/178 
  Verifying  : cyrus-sasl-lib-2.1.26-24.el7_9.x86_64                     82/178 
  Verifying  : libgomp-4.8.5-44.el7.x86_64                               83/178 
  Verifying  : gnupg2-2.0.22-5.el7_5.x86_64                              84/178 
  Verifying  : epel-release-7-14.noarch                                  85/178 
  Verifying  : which-2.20-7.el7.x86_64                                   86/178 
  Verifying  : nss-softokn-3.90.0-6.el7_9.x86_64                         87/178 
  Verifying  : glibc-headers-2.17-326.el7_9.3.x86_64                     88/178 
  Verifying  : popt-1.13-16.el7.x86_64                                   89/178 
  Verifying  : libffi-3.0.13-19.el7.x86_64                               90/178 
  Verifying  : p11-kit-0.23.5-3.el7.x86_64                               91/178 
  Verifying  : 2:shadow-utils-4.6-5.el7.x86_64                           92/178 
  Verifying  : perl-Storable-2.45-3.el7.x86_64                           93/178 
  Verifying  : unzip-6.0-24.el7_9.x86_64                                 94/178 
  Verifying  : perl-File-Temp-0.23.01-3.el7.noarch                       95/178 
  Verifying  : 7:device-mapper-libs-1.02.170-6.el7_9.5.x86_64            96/178 
  Verifying  : libattr-2.4.46-13.el7.x86_64                              97/178 
  Verifying  : gawk-4.0.2-4.el7_3.1.x86_64                               98/178 
  Verifying  : audit-libs-2.8.5-4.el7.x86_64                             99/178 
  Verifying  : perl-srpm-macros-1-8.el7.noarch                          100/178 
  Verifying  : qrencode-libs-3.4.1-3.el7.x86_64                         101/178 
  Verifying  : python-rpm-macros-3-34.el7.noarch                        102/178 
  Verifying  : 1:perl-Pod-Escapes-1.04-299.el7_9.noarch                 103/178 
  Verifying  : grep-2.20-3.el7.x86_64                                   104/178 
  Verifying  : xz-libs-5.2.2-2.el7_9.x86_64                             105/178 
  Verifying  : nss-softokn-freebl-3.90.0-6.el7_9.x86_64                 106/178 
  Verifying  : patch-2.7.1-12.el7_7.x86_64                              107/178 
  Verifying  : filesystem-3.2-25.el7.x86_64                             108/178 
  Verifying  : perl-Carp-1.26-244.el7.noarch                            109/178 
  Verifying  : libdb-5.3.21-25.el7.x86_64                               110/178 
  Verifying  : krb5-libs-1.15.1-55.el7_9.x86_64                         111/178 
  Verifying  : rpm-build-4.11.3-48.el7_9.x86_64                         112/178 
  Verifying  : file-libs-5.11-37.el7.x86_64                             113/178 
  Verifying  : glibc-2.17-326.el7_9.3.x86_64                            114/178 
  Verifying  : gdbm-1.10-8.el7.x86_64                                   115/178 
  Verifying  : gcc-4.8.5-44.el7.x86_64                                  116/178 
  Verifying  : coreutils-8.22-24.el7_9.2.x86_64                         117/178 
  Verifying  : elfutils-libelf-0.176-5.el7.x86_64                       118/178 
  Verifying  : rpm-4.11.3-48.el7_9.x86_64                               119/178 
  Verifying  : rpm-libs-4.11.3-48.el7_9.x86_64                          120/178 
  Verifying  : systemd-libs-219-78.el7_9.9.x86_64                       121/178 
  Verifying  : 1:findutils-4.5.11-6.el7.x86_64                          122/178 
  Verifying  : nss-util-3.90.0-1.el7_9.x86_64                           123/178 
  Verifying  : ca-certificates-2023.2.60_v7.0.306-72.el7_9.noarch       124/178 
  Verifying  : perl-Pod-Perldoc-3.20-4.el7.noarch                       125/178 
  Verifying  : libuuid-2.23.2-65.el7_9.1.x86_64                         126/178 
  Verifying  : 4:perl-5.16.3-299.el7_9.x86_64                           127/178 
  Verifying  : glibc-devel-2.17-326.el7_9.3.x86_64                      128/178 
  Verifying  : mpfr-3.1.1-4.el7.x86_64                                  129/178 
  Verifying  : perl-Filter-1.49-3.el7.x86_64                            130/178 
  Verifying  : dwz-0.11-3.el7.x86_64                                    131/178 
  Verifying  : ncurses-5.9-14.20130511.el7_4.x86_64                     132/178 
  Verifying  : basesystem-10.0-7.el7.noarch                             133/178 
  Verifying  : ncurses-base-5.9-14.20130511.el7_4.noarch                134/178 
  Verifying  : diffutils-3.3-6.el7_9.x86_64                             135/178 
  Verifying  : redhat-release-server-7.9-12.el7_9.x86_64                136/178 
  Verifying  : nss-3.90.0-2.el7_9.x86_64                                137/178 
  Verifying  : kpartx-0.4.9-136.el7_9.x86_64                            138/178 
  Verifying  : lz4-1.8.3-1.el7.x86_64                                   139/178 
  Verifying  : 2:tar-1.26-35.el7.x86_64                                 140/178 
  Verifying  : perl-Exporter-5.68-3.el7.noarch                          141/178 
  Verifying  : perl-constant-1.27-2.el7.noarch                          142/178 
  Verifying  : perl-PathTools-3.40-5.el7.x86_64                         143/178 
  Verifying  : keyutils-libs-1.5.8-3.el7.x86_64                         144/178 
  Verifying  : pinentry-0.8.1-17.el7.x86_64                             145/178 
  Verifying  : perl-Socket-2.010-5.el7.x86_64                           146/178 
  Verifying  : 4:perl-macros-5.16.3-299.el7_9.x86_64                    147/178 
  Verifying  : glib2-2.56.1-9.el7_9.x86_64                              148/178 
  Verifying  : libgpg-error-1.12-3.el7.x86_64                           149/178 
  Verifying  : redhat-rpm-config-9.1.0-88.el7.noarch                    150/178 
  Verifying  : libcom_err-1.42.9-19.el7.x86_64                          151/178 
  Verifying  : perl-Thread-Queue-3.02-2.el7.noarch                      152/178 
  Verifying  : 1:perl-Pod-Simple-3.28-4.el7.noarch                      153/178 
  Verifying  : perl-Time-Local-1.2300-2.el7.noarch                      154/178 
  Verifying  : perl-threads-shared-1.43-6.el7.x86_64                    155/178 
  Verifying  : curl-7.29.0-59.el7_9.2.x86_64                            156/178 
  Verifying  : json-c-0.11-4.el7_0.x86_64                               157/178 
  Verifying  : expat-2.1.0-15.el7_9.x86_64                              158/178 
  Verifying  : libcap-ng-0.7.5-4.el7.x86_64                             159/178 
  Verifying  : 1:gmp-6.0.0-15.el7.x86_64                                160/178 
  Verifying  : perl-Scalar-List-Utils-1.27-248.el7.x86_64               161/178 
  Verifying  : p11-kit-trust-0.23.5-3.el7.x86_64                        162/178 
  Verifying  : sed-4.2.2-7.el7.x86_64                                   163/178 
  Verifying  : libgcrypt-1.5.3-14.el7.x86_64                            164/178 
  Verifying  : cpio-2.11-28.el7.x86_64                                  165/178 
  Verifying  : gzip-1.5-11.el7_9.x86_64                                 166/178 
  Verifying  : perl-podlators-2.5.1-3.el7.noarch                        167/178 
  Verifying  : elfutils-0.176-5.el7.x86_64                              168/178 
  Verifying  : zip-3.0-11.el7.x86_64                                    169/178 
  Verifying  : nspr-4.35.0-1.el7_9.x86_64                               170/178 
  Verifying  : python-libs-2.7.5-94.el7_9.x86_64                        171/178 
  Verifying  : libstdc++-devel-4.8.5-44.el7.x86_64                      172/178 
  Verifying  : libpwquality-1.2.3-5.el7.x86_64                          173/178 
  Verifying  : xz-5.2.2-2.el7_9.x86_64                                  174/178 
  Verifying  : 4:perl-libs-5.16.3-299.el7_9.x86_64                      175/178 
  Verifying  : rpm-build-libs-4.11.3-48.el7_9.x86_64                    176/178 
  Verifying  : elfutils-libs-0.176-5.el7.x86_64                         177/178 
  Verifying  : kmod-20-28.el7.x86_64                                    178/178 

Installed:
  bash.x86_64 0:4.2.46-35.el7_9             bzip2.x86_64 0:1.0.6-13.el7         
  coreutils.x86_64 0:8.22-24.el7_9.2        cpio.x86_64 0:2.11-28.el7           
  diffutils.x86_64 0:3.3-6.el7_9            epel-release.noarch 0:7-14          
  epel-rpm-macros.noarch 0:7-38             findutils.x86_64 1:4.5.11-6.el7     
  gawk.x86_64 0:4.0.2-4.el7_3.1             gcc.x86_64 0:4.8.5-44.el7           
  gcc-c++.x86_64 0:4.8.5-44.el7             grep.x86_64 0:2.20-3.el7            
  gzip.x86_64 0:1.5-11.el7_9                info.x86_64 0:5.1-5.el7             
  make.x86_64 1:3.82-24.el7                 patch.x86_64 0:2.7.1-12.el7_7       
  redhat-rpm-config.noarch 0:9.1.0-88.el7   rpm-build.x86_64 0:4.11.3-48.el7_9  
  sed.x86_64 0:4.2.2-7.el7                  shadow-utils.x86_64 2:4.6-5.el7     
  tar.x86_64 2:1.26-35.el7                  unzip.x86_64 0:6.0-24.el7_9         
  util-linux.x86_64 0:2.23.2-65.el7_9.1     which.x86_64 0:2.20-7.el7           
  xz.x86_64 0:5.2.2-2.el7_9                

Dependency Installed:
  acl.x86_64 0:2.2.51-15.el7                                                    
  audit-libs.x86_64 0:2.8.5-4.el7                                               
  basesystem.noarch 0:10.0-7.el7                                                
  binutils.x86_64 0:2.27-44.base.el7_9.1                                        
  bzip2-libs.x86_64 0:1.0.6-13.el7                                              
  ca-certificates.noarch 0:2023.2.60_v7.0.306-72.el7_9                          
  chkconfig.x86_64 0:1.7.6-1.el7                                                
  cpp.x86_64 0:4.8.5-44.el7                                                     
  cracklib.x86_64 0:2.9.0-11.el7                                                
  cracklib-dicts.x86_64 0:2.9.0-11.el7                                          
  cryptsetup-libs.x86_64 0:2.0.3-6.el7                                          
  curl.x86_64 0:7.29.0-59.el7_9.2                                               
  cyrus-sasl-lib.x86_64 0:2.1.26-24.el7_9                                       
  dbus.x86_64 1:1.10.24-15.el7                                                  
  dbus-libs.x86_64 1:1.10.24-15.el7                                             
  device-mapper.x86_64 7:1.02.170-6.el7_9.5                                     
  device-mapper-libs.x86_64 7:1.02.170-6.el7_9.5                                
  dracut.x86_64 0:033-572.el7                                                   
  dwz.x86_64 0:0.11-3.el7                                                       
  elfutils.x86_64 0:0.176-5.el7                                                 
  elfutils-default-yama-scope.noarch 0:0.176-5.el7                              
  elfutils-libelf.x86_64 0:0.176-5.el7                                          
  elfutils-libs.x86_64 0:0.176-5.el7                                            
  expat.x86_64 0:2.1.0-15.el7_9                                                 
  file.x86_64 0:5.11-37.el7                                                     
  file-libs.x86_64 0:5.11-37.el7                                                
  filesystem.x86_64 0:3.2-25.el7                                                
  gdb.x86_64 0:7.6.1-120.el7                                                    
  gdbm.x86_64 0:1.10-8.el7                                                      
  glib2.x86_64 0:2.56.1-9.el7_9                                                 
  glibc.x86_64 0:2.17-326.el7_9.3                                               
  glibc-common.x86_64 0:2.17-326.el7_9.3                                        
  glibc-devel.x86_64 0:2.17-326.el7_9.3                                         
  glibc-headers.x86_64 0:2.17-326.el7_9.3                                       
  gmp.x86_64 1:6.0.0-15.el7                                                     
  gnupg2.x86_64 0:2.0.22-5.el7_5                                                
  groff-base.x86_64 0:1.22.2-8.el7                                              
  hardlink.x86_64 1:1.0-19.el7                                                  
  json-c.x86_64 0:0.11-4.el7_0                                                  
  kernel-headers.x86_64 0:3.10.0-1160.119.1.el7                                 
  keyutils-libs.x86_64 0:1.5.8-3.el7                                            
  kmod.x86_64 0:20-28.el7                                                       
  kmod-libs.x86_64 0:20-28.el7                                                  
  kpartx.x86_64 0:0.4.9-136.el7_9                                               
  krb5-libs.x86_64 0:1.15.1-55.el7_9                                            
  libacl.x86_64 0:2.2.51-15.el7                                                 
  libassuan.x86_64 0:2.1.0-3.el7                                                
  libattr.x86_64 0:2.4.46-13.el7                                                
  libblkid.x86_64 0:2.23.2-65.el7_9.1                                           
  libcap.x86_64 0:2.22-11.el7                                                   
  libcap-ng.x86_64 0:0.7.5-4.el7                                                
  libcom_err.x86_64 0:1.42.9-19.el7                                             
  libcurl.x86_64 0:7.29.0-59.el7_9.2                                            
  libdb.x86_64 0:5.3.21-25.el7                                                  
  libdb-utils.x86_64 0:5.3.21-25.el7                                            
  libffi.x86_64 0:3.0.13-19.el7                                                 
  libgcc.x86_64 0:4.8.5-44.el7                                                  
  libgcrypt.x86_64 0:1.5.3-14.el7                                               
  libgomp.x86_64 0:4.8.5-44.el7                                                 
  libgpg-error.x86_64 0:1.12-3.el7                                              
  libidn.x86_64 0:1.28-4.el7                                                    
  libmount.x86_64 0:2.23.2-65.el7_9.1                                           
  libmpc.x86_64 0:1.0.1-3.el7                                                   
  libpwquality.x86_64 0:1.2.3-5.el7                                             
  libselinux.x86_64 0:2.5-15.el7                                                
  libsemanage.x86_64 0:2.5-14.el7                                               
  libsepol.x86_64 0:2.5-10.el7                                                  
  libsmartcols.x86_64 0:2.23.2-65.el7_9.1                                       
  libssh2.x86_64 0:1.8.0-4.el7_9.1                                              
  libstdc++.x86_64 0:4.8.5-44.el7                                               
  libstdc++-devel.x86_64 0:4.8.5-44.el7                                         
  libtasn1.x86_64 0:4.10-1.el7                                                  
  libuser.x86_64 0:0.60-9.el7                                                   
  libutempter.x86_64 0:1.1.6-4.el7                                              
  libuuid.x86_64 0:2.23.2-65.el7_9.1                                            
  libverto.x86_64 0:0.2.5-4.el7                                                 
  libxml2.x86_64 0:2.9.1-6.el7_9.6                                              
  lua.x86_64 0:5.1.4-15.el7                                                     
  lua-srpm-macros.noarch 0:1-13.el7                                             
  lz4.x86_64 0:1.8.3-1.el7                                                      
  mpfr.x86_64 0:3.1.1-4.el7                                                     
  ncurses.x86_64 0:5.9-14.20130511.el7_4                                        
  ncurses-base.noarch 0:5.9-14.20130511.el7_4                                   
  ncurses-libs.x86_64 0:5.9-14.20130511.el7_4                                   
  nspr.x86_64 0:4.35.0-1.el7_9                                                  
  nss.x86_64 0:3.90.0-2.el7_9                                                   
  nss-pem.x86_64 0:1.0.3-7.el7_9.1                                              
  nss-softokn.x86_64 0:3.90.0-6.el7_9                                           
  nss-softokn-freebl.x86_64 0:3.90.0-6.el7_9                                    
  nss-sysinit.x86_64 0:3.90.0-2.el7_9                                           
  nss-tools.x86_64 0:3.90.0-2.el7_9                                             
  nss-util.x86_64 0:3.90.0-1.el7_9                                              
  openldap.x86_64 0:2.4.44-25.el7_9                                             
  openssl-libs.x86_64 1:1.0.2k-26.el7_9                                         
  p11-kit.x86_64 0:0.23.5-3.el7                                                 
  p11-kit-trust.x86_64 0:0.23.5-3.el7                                           
  pam.x86_64 0:1.1.8-23.el7                                                     
  pcre.x86_64 0:8.32-17.el7                                                     
  perl.x86_64 4:5.16.3-299.el7_9                                                
  perl-Carp.noarch 0:1.26-244.el7                                               
  perl-Encode.x86_64 0:2.51-7.el7                                               
  perl-Exporter.noarch 0:5.68-3.el7                                             
  perl-File-Path.noarch 0:2.09-2.el7                                            
  perl-File-Temp.noarch 0:0.23.01-3.el7                                         
  perl-Filter.x86_64 0:1.49-3.el7                                               
  perl-Getopt-Long.noarch 0:2.40-3.el7                                          
  perl-HTTP-Tiny.noarch 0:0.033-3.el7                                           
  perl-PathTools.x86_64 0:3.40-5.el7                                            
  perl-Pod-Escapes.noarch 1:1.04-299.el7_9                                      
  perl-Pod-Perldoc.noarch 0:3.20-4.el7                                          
  perl-Pod-Simple.noarch 1:3.28-4.el7                                           
  perl-Pod-Usage.noarch 0:1.63-3.el7                                            
  perl-Scalar-List-Utils.x86_64 0:1.27-248.el7                                  
  perl-Socket.x86_64 0:2.010-5.el7                                              
  perl-Storable.x86_64 0:2.45-3.el7                                             
  perl-Text-ParseWords.noarch 0:3.29-4.el7                                      
  perl-Thread-Queue.noarch 0:3.02-2.el7                                         
  perl-Time-HiRes.x86_64 4:1.9725-3.el7                                         
  perl-Time-Local.noarch 0:1.2300-2.el7                                         
  perl-constant.noarch 0:1.27-2.el7                                             
  perl-generators-epel.noarch 0:1-1.el7                                         
  perl-libs.x86_64 4:5.16.3-299.el7_9                                           
  perl-macros.x86_64 4:5.16.3-299.el7_9                                         
  perl-parent.noarch 1:0.225-244.el7                                            
  perl-podlators.noarch 0:2.5.1-3.el7                                           
  perl-srpm-macros.noarch 0:1-8.el7                                             
  perl-threads.x86_64 0:1.87-4.el7                                              
  perl-threads-shared.x86_64 0:1.43-6.el7                                       
  pinentry.x86_64 0:0.8.1-17.el7                                                
  pkgconfig.x86_64 1:0.27.1-4.el7                                               
  popt.x86_64 0:1.13-16.el7                                                     
  procps-ng.x86_64 0:3.3.10-28.el7                                              
  pth.x86_64 0:2.0.7-23.el7                                                     
  python-libs.x86_64 0:2.7.5-94.el7_9                                           
  python-rpm-macros.noarch 0:3-34.el7                                           
  python-srpm-macros.noarch 0:3-34.el7                                          
  python2-rpm-macros.noarch 0:3-34.el7                                          
  qrencode-libs.x86_64 0:3.4.1-3.el7                                            
  readline.x86_64 0:6.2-11.el7                                                  
  redhat-release-server.x86_64 0:7.9-12.el7_9                                   
  rpm.x86_64 0:4.11.3-48.el7_9                                                  
  rpm-build-libs.x86_64 0:4.11.3-48.el7_9                                       
  rpm-libs.x86_64 0:4.11.3-48.el7_9                                             
  setup.noarch 0:2.8.71-11.el7                                                  
  shared-mime-info.x86_64 0:1.8-5.el7                                           
  sqlite.x86_64 0:3.7.17-8.el7_7.1                                              
  systemd.x86_64 0:219-78.el7_9.9                                               
  systemd-libs.x86_64 0:219-78.el7_9.9                                          
  tzdata.noarch 0:2024a-1.el7                                                   
  ustr.x86_64 0:1.0.4-16.el7                                                    
  xz-libs.x86_64 0:5.2.2-2.el7_9                                                
  zip.x86_64 0:3.0-11.el7                                                       
  zlib.x86_64 0:1.2.7-21.el7_9                                                  

Complete!
Finish: installing minimal buildroot with yum
Start: creating root cache
Finish: creating root cache
Finish: chroot init
INFO: Installed packages:
INFO: acl-2.2.51-15.el7.x86_64
audit-libs-2.8.5-4.el7.x86_64
basesystem-10.0-7.el7.noarch
bash-4.2.46-35.el7_9.x86_64
binutils-2.27-44.base.el7_9.1.x86_64
bzip2-1.0.6-13.el7.x86_64
bzip2-libs-1.0.6-13.el7.x86_64
ca-certificates-2023.2.60_v7.0.306-72.el7_9.noarch
chkconfig-1.7.6-1.el7.x86_64
coreutils-8.22-24.el7_9.2.x86_64
cpio-2.11-28.el7.x86_64
cpp-4.8.5-44.el7.x86_64
cracklib-2.9.0-11.el7.x86_64
cracklib-dicts-2.9.0-11.el7.x86_64
cryptsetup-libs-2.0.3-6.el7.x86_64
curl-7.29.0-59.el7_9.2.x86_64
cyrus-sasl-lib-2.1.26-24.el7_9.x86_64
dbus-1.10.24-15.el7.x86_64
dbus-libs-1.10.24-15.el7.x86_64
device-mapper-1.02.170-6.el7_9.5.x86_64
device-mapper-libs-1.02.170-6.el7_9.5.x86_64
diffutils-3.3-6.el7_9.x86_64
dracut-033-572.el7.x86_64
dwz-0.11-3.el7.x86_64
elfutils-0.176-5.el7.x86_64
elfutils-default-yama-scope-0.176-5.el7.noarch
elfutils-libelf-0.176-5.el7.x86_64
elfutils-libs-0.176-5.el7.x86_64
epel-release-7-14.noarch
epel-rpm-macros-7-38.noarch
expat-2.1.0-15.el7_9.x86_64
file-5.11-37.el7.x86_64
file-libs-5.11-37.el7.x86_64
filesystem-3.2-25.el7.x86_64
findutils-4.5.11-6.el7.x86_64
gawk-4.0.2-4.el7_3.1.x86_64
gcc-4.8.5-44.el7.x86_64
gcc-c++-4.8.5-44.el7.x86_64
gdb-7.6.1-120.el7.x86_64
gdbm-1.10-8.el7.x86_64
glib2-2.56.1-9.el7_9.x86_64
glibc-2.17-326.el7_9.3.x86_64
glibc-common-2.17-326.el7_9.3.x86_64
glibc-devel-2.17-326.el7_9.3.x86_64
glibc-headers-2.17-326.el7_9.3.x86_64
gmp-6.0.0-15.el7.x86_64
gnupg2-2.0.22-5.el7_5.x86_64
gpg-pubkey-2fa658e0-45700c69
gpg-pubkey-352c64e5-52ae6884
gpg-pubkey-fd431d51-4ae0493b
grep-2.20-3.el7.x86_64
groff-base-1.22.2-8.el7.x86_64
gzip-1.5-11.el7_9.x86_64
hardlink-1.0-19.el7.x86_64
info-5.1-5.el7.x86_64
json-c-0.11-4.el7_0.x86_64
kernel-headers-3.10.0-1160.119.1.el7.x86_64
keyutils-libs-1.5.8-3.el7.x86_64
kmod-20-28.el7.x86_64
kmod-libs-20-28.el7.x86_64
kpartx-0.4.9-136.el7_9.x86_64
krb5-libs-1.15.1-55.el7_9.x86_64
libacl-2.2.51-15.el7.x86_64
libassuan-2.1.0-3.el7.x86_64
libattr-2.4.46-13.el7.x86_64
libblkid-2.23.2-65.el7_9.1.x86_64
libcap-2.22-11.el7.x86_64
libcap-ng-0.7.5-4.el7.x86_64
libcom_err-1.42.9-19.el7.x86_64
libcurl-7.29.0-59.el7_9.2.x86_64
libdb-5.3.21-25.el7.x86_64
libdb-utils-5.3.21-25.el7.x86_64
libffi-3.0.13-19.el7.x86_64
libgcc-4.8.5-44.el7.x86_64
libgcrypt-1.5.3-14.el7.x86_64
libgomp-4.8.5-44.el7.x86_64
libgpg-error-1.12-3.el7.x86_64
libidn-1.28-4.el7.x86_64
libmount-2.23.2-65.el7_9.1.x86_64
libmpc-1.0.1-3.el7.x86_64
libpwquality-1.2.3-5.el7.x86_64
libselinux-2.5-15.el7.x86_64
libsemanage-2.5-14.el7.x86_64
libsepol-2.5-10.el7.x86_64
libsmartcols-2.23.2-65.el7_9.1.x86_64
libssh2-1.8.0-4.el7_9.1.x86_64
libstdc++-4.8.5-44.el7.x86_64
libstdc++-devel-4.8.5-44.el7.x86_64
libtasn1-4.10-1.el7.x86_64
libuser-0.60-9.el7.x86_64
libutempter-1.1.6-4.el7.x86_64
libuuid-2.23.2-65.el7_9.1.x86_64
libverto-0.2.5-4.el7.x86_64
libxml2-2.9.1-6.el7_9.6.x86_64
lua-5.1.4-15.el7.x86_64
lua-srpm-macros-1-13.el7.noarch
lz4-1.8.3-1.el7.x86_64
make-3.82-24.el7.x86_64
mpfr-3.1.1-4.el7.x86_64
ncurses-5.9-14.20130511.el7_4.x86_64
ncurses-base-5.9-14.20130511.el7_4.noarch
ncurses-libs-5.9-14.20130511.el7_4.x86_64
nspr-4.35.0-1.el7_9.x86_64
nss-3.90.0-2.el7_9.x86_64
nss-pem-1.0.3-7.el7_9.1.x86_64
nss-softokn-3.90.0-6.el7_9.x86_64
nss-softokn-freebl-3.90.0-6.el7_9.x86_64
nss-sysinit-3.90.0-2.el7_9.x86_64
nss-tools-3.90.0-2.el7_9.x86_64
nss-util-3.90.0-1.el7_9.x86_64
openldap-2.4.44-25.el7_9.x86_64
openssl-libs-1.0.2k-26.el7_9.x86_64
p11-kit-0.23.5-3.el7.x86_64
p11-kit-trust-0.23.5-3.el7.x86_64
pam-1.1.8-23.el7.x86_64
patch-2.7.1-12.el7_7.x86_64
pcre-8.32-17.el7.x86_64
perl-5.16.3-299.el7_9.x86_64
perl-Carp-1.26-244.el7.noarch
perl-Encode-2.51-7.el7.x86_64
perl-Exporter-5.68-3.el7.noarch
perl-File-Path-2.09-2.el7.noarch
perl-File-Temp-0.23.01-3.el7.noarch
perl-Filter-1.49-3.el7.x86_64
perl-Getopt-Long-2.40-3.el7.noarch
perl-HTTP-Tiny-0.033-3.el7.noarch
perl-PathTools-3.40-5.el7.x86_64
perl-Pod-Escapes-1.04-299.el7_9.noarch
perl-Pod-Perldoc-3.20-4.el7.noarch
perl-Pod-Simple-3.28-4.el7.noarch
perl-Pod-Usage-1.63-3.el7.noarch
perl-Scalar-List-Utils-1.27-248.el7.x86_64
perl-Socket-2.010-5.el7.x86_64
perl-Storable-2.45-3.el7.x86_64
perl-Text-ParseWords-3.29-4.el7.noarch
perl-Thread-Queue-3.02-2.el7.noarch
perl-Time-HiRes-1.9725-3.el7.x86_64
perl-Time-Local-1.2300-2.el7.noarch
perl-constant-1.27-2.el7.noarch
perl-generators-epel-1-1.el7.noarch
perl-libs-5.16.3-299.el7_9.x86_64
perl-macros-5.16.3-299.el7_9.x86_64
perl-parent-0.225-244.el7.noarch
perl-podlators-2.5.1-3.el7.noarch
perl-srpm-macros-1-8.el7.noarch
perl-threads-1.87-4.el7.x86_64
perl-threads-shared-1.43-6.el7.x86_64
pinentry-0.8.1-17.el7.x86_64
pkgconfig-0.27.1-4.el7.x86_64
popt-1.13-16.el7.x86_64
procps-ng-3.3.10-28.el7.x86_64
pth-2.0.7-23.el7.x86_64
python-libs-2.7.5-94.el7_9.x86_64
python-rpm-macros-3-34.el7.noarch
python-srpm-macros-3-34.el7.noarch
python2-rpm-macros-3-34.el7.noarch
qrencode-libs-3.4.1-3.el7.x86_64
readline-6.2-11.el7.x86_64
redhat-release-server-7.9-12.el7_9.x86_64
redhat-rpm-config-9.1.0-88.el7.noarch
rpm-4.11.3-48.el7_9.x86_64
rpm-build-4.11.3-48.el7_9.x86_64
rpm-build-libs-4.11.3-48.el7_9.x86_64
rpm-libs-4.11.3-48.el7_9.x86_64
sed-4.2.2-7.el7.x86_64
setup-2.8.71-11.el7.noarch
shadow-utils-4.6-5.el7.x86_64
shared-mime-info-1.8-5.el7.x86_64
sqlite-3.7.17-8.el7_7.1.x86_64
systemd-219-78.el7_9.9.x86_64
systemd-libs-219-78.el7_9.9.x86_64
tar-1.26-35.el7.x86_64
tzdata-2024a-1.el7.noarch
unzip-6.0-24.el7_9.x86_64
ustr-1.0.4-16.el7.x86_64
util-linux-2.23.2-65.el7_9.1.x86_64
which-2.20-7.el7.x86_64
xz-5.2.2-2.el7_9.x86_64
xz-libs-5.2.2-2.el7_9.x86_64
zip-3.0-11.el7.x86_64
zlib-1.2.7-21.el7_9.x86_64
Start: buildsrpm
Start: rpmbuild -bs
Building target platforms: x86_64
Building for target x86_64
Wrote: /builddir/build/SRPMS/pycharm-community-2024.3.2-1.el7_9.src.rpm
Finish: rpmbuild -bs
Finish: buildsrpm
INFO: Done(/var/lib/copr-rpmbuild/workspace/workdir-jc5w8df4/pycharm-community/pycharm-community.spec) Config(child) 3 minutes 33 seconds
INFO: Results and/or logs in: /var/lib/copr-rpmbuild/results
INFO: Cleaning up build root ('cleanup_on_success=True')
Start: clean chroot
INFO: unmounting tmpfs.
Finish: clean chroot
INFO: Start(/var/lib/copr-rpmbuild/results/pycharm-community-2024.3.2-1.el7_9.src.rpm)  Config(rhel+epel-7-x86_64)
Start(bootstrap): chroot init
INFO: mounting tmpfs at /var/lib/mock/rhel+epel-7-x86_64-bootstrap-1738090627.921135/root.
INFO: reusing tmpfs at /var/lib/mock/rhel+epel-7-x86_64-bootstrap-1738090627.921135/root.
INFO: calling preinit hooks
INFO: enabled root cache
INFO: enabled package manager cache
Start(bootstrap): cleaning package manager metadata
Finish(bootstrap): cleaning package manager metadata
INFO: Using 'dnf4' instead of 'yum' for bootstrap chroot
Finish(bootstrap): chroot init
Start: chroot init
INFO: mounting tmpfs at /var/lib/mock/rhel+epel-7-x86_64-1738090627.921135/root.
INFO: calling preinit hooks
INFO: enabled root cache
Start: unpacking root cache
Finish: unpacking root cache
INFO: enabled package manager cache
Start: cleaning package manager metadata
Finish: cleaning package manager metadata
INFO: enabled HW Info plugin
INFO: Buildroot is handled by package management installed into bootstrap:
  rpm-4.11.3-48.el7_9.x86_64
  yum-3.4.3-168.el7.noarch
  yum-utils-1.1.31-54.el7_8.noarch
Finish: chroot init
Start: build phase for pycharm-community-2024.3.2-1.el7_9.src.rpm
Start: build setup for pycharm-community-2024.3.2-1.el7_9.src.rpm
Building target platforms: x86_64
Building for target x86_64
Wrote: /builddir/build/SRPMS/pycharm-community-2024.3.2-1.el7_9.src.rpm
Failed to set locale, defaulting to C
copr_base                                                | 2.1 kB     00:00     
epel                                                     | 4.3 kB     00:00     
rhel                                                     | 3.5 kB     00:00     
rhel-optional                                            | 3.2 kB     00:00     
Getting requirements for pycharm-community-2024.3.2-1.el7_9.src
 --> desktop-file-utils-0.23-2.el7.x86_64
 --> libappstream-glib-0.7.8-2.el7.x86_64
 --> librsvg2-tools-2.40.20-1.el7.x86_64
 --> python3-devel-3.6.8-21.el7_9.x86_64
 --> javapackages-tools-3.4.1-11.el7.noarch
--> Running transaction check
---> Package desktop-file-utils.x86_64 0:0.23-2.el7 will be installed
--> Processing Dependency: emacs-filesystem for package: desktop-file-utils-0.23-2.el7.x86_64
---> Package javapackages-tools.noarch 0:3.4.1-11.el7 will be installed
--> Processing Dependency: python-javapackages = 3.4.1-11.el7 for package: javapackages-tools-3.4.1-11.el7.noarch
--> Processing Dependency: libxslt for package: javapackages-tools-3.4.1-11.el7.noarch
--> Processing Dependency: python for package: javapackages-tools-3.4.1-11.el7.noarch
---> Package libappstream-glib.x86_64 0:0.7.8-2.el7 will be installed
--> Processing Dependency: gdk-pixbuf2(x86-64) >= 2.31.5 for package: libappstream-glib-0.7.8-2.el7.x86_64
--> Processing Dependency: json-glib(x86-64) >= 1.1.1 for package: libappstream-glib-0.7.8-2.el7.x86_64
--> Processing Dependency: libsoup(x86-64) >= 2.51.92 for package: libappstream-glib-0.7.8-2.el7.x86_64
--> Processing Dependency: libgcab-1.0.so.0(LIBGCAB1_0.0)(64bit) for package: libappstream-glib-0.7.8-2.el7.x86_64
--> Processing Dependency: libgcab-1.0.so.0(LIBGCAB1_0.2)(64bit) for package: libappstream-glib-0.7.8-2.el7.x86_64
--> Processing Dependency: libarchive.so.13()(64bit) for package: libappstream-glib-0.7.8-2.el7.x86_64
--> Processing Dependency: libgcab-1.0.so.0()(64bit) for package: libappstream-glib-0.7.8-2.el7.x86_64
--> Processing Dependency: libgdk_pixbuf-2.0.so.0()(64bit) for package: libappstream-glib-0.7.8-2.el7.x86_64
--> Processing Dependency: libsoup-2.4.so.1()(64bit) for package: libappstream-glib-0.7.8-2.el7.x86_64
---> Package librsvg2-tools.x86_64 0:2.40.20-1.el7 will be installed
--> Processing Dependency: librsvg2(x86-64) = 2.40.20-1.el7 for package: librsvg2-tools-2.40.20-1.el7.x86_64
--> Processing Dependency: libatk-1.0.so.0()(64bit) for package: librsvg2-tools-2.40.20-1.el7.x86_64
--> Processing Dependency: libcairo-gobject.so.2()(64bit) for package: librsvg2-tools-2.40.20-1.el7.x86_64
--> Processing Dependency: libcairo.so.2()(64bit) for package: librsvg2-tools-2.40.20-1.el7.x86_64
--> Processing Dependency: libcroco-0.6.so.3()(64bit) for package: librsvg2-tools-2.40.20-1.el7.x86_64
--> Processing Dependency: libfontconfig.so.1()(64bit) for package: librsvg2-tools-2.40.20-1.el7.x86_64
--> Processing Dependency: libfreetype.so.6()(64bit) for package: librsvg2-tools-2.40.20-1.el7.x86_64
--> Processing Dependency: libgdk-3.so.0()(64bit) for package: librsvg2-tools-2.40.20-1.el7.x86_64
--> Processing Dependency: libgtk-3.so.0()(64bit) for package: librsvg2-tools-2.40.20-1.el7.x86_64
--> Processing Dependency: libpango-1.0.so.0()(64bit) for package: librsvg2-tools-2.40.20-1.el7.x86_64
--> Processing Dependency: libpangocairo-1.0.so.0()(64bit) for package: librsvg2-tools-2.40.20-1.el7.x86_64
--> Processing Dependency: libpangoft2-1.0.so.0()(64bit) for package: librsvg2-tools-2.40.20-1.el7.x86_64
--> Processing Dependency: libpng15.so.15()(64bit) for package: librsvg2-tools-2.40.20-1.el7.x86_64
--> Processing Dependency: librsvg-2.so.2()(64bit) for package: librsvg2-tools-2.40.20-1.el7.x86_64
---> Package python3-devel.x86_64 0:3.6.8-21.el7_9 will be installed
--> Processing Dependency: python(abi) = 3.6 for package: python3-devel-3.6.8-21.el7_9.x86_64
--> Processing Dependency: python3 = 3.6.8-21.el7_9 for package: python3-devel-3.6.8-21.el7_9.x86_64
--> Processing Dependency: python3-libs(x86-64) = 3.6.8-21.el7_9 for package: python3-devel-3.6.8-21.el7_9.x86_64
--> Processing Dependency: python3-rpm-generators for package: python3-devel-3.6.8-21.el7_9.x86_64
--> Processing Dependency: python3-rpm-macros for package: python3-devel-3.6.8-21.el7_9.x86_64
--> Processing Dependency: libpython3.6m.so.1.0()(64bit) for package: python3-devel-3.6.8-21.el7_9.x86_64
--> Running transaction check
---> Package atk.x86_64 0:2.28.1-2.el7 will be installed
---> Package cairo.x86_64 0:1.15.12-4.el7 will be installed
--> Processing Dependency: libEGL.so.1()(64bit) for package: cairo-1.15.12-4.el7.x86_64
--> Processing Dependency: libGL.so.1()(64bit) for package: cairo-1.15.12-4.el7.x86_64
--> Processing Dependency: libX11.so.6()(64bit) for package: cairo-1.15.12-4.el7.x86_64
--> Processing Dependency: libXext.so.6()(64bit) for package: cairo-1.15.12-4.el7.x86_64
--> Processing Dependency: libXrender.so.1()(64bit) for package: cairo-1.15.12-4.el7.x86_64
--> Processing Dependency: libpixman-1.so.0()(64bit) for package: cairo-1.15.12-4.el7.x86_64
--> Processing Dependency: libxcb-render.so.0()(64bit) for package: cairo-1.15.12-4.el7.x86_64
--> Processing Dependency: libxcb-shm.so.0()(64bit) for package: cairo-1.15.12-4.el7.x86_64
--> Processing Dependency: libxcb.so.1()(64bit) for package: cairo-1.15.12-4.el7.x86_64
---> Package cairo-gobject.x86_64 0:1.15.12-4.el7 will be installed
---> Package emacs-filesystem.noarch 1:24.3-23.el7_9.1 will be installed
---> Package fontconfig.x86_64 0:2.13.0-4.3.el7 will be installed
--> Processing Dependency: dejavu-sans-fonts for package: fontconfig-2.13.0-4.3.el7.x86_64
--> Processing Dependency: fontpackages-filesystem for package: fontconfig-2.13.0-4.3.el7.x86_64
---> Package freetype.x86_64 0:2.8-14.el7_9.1 will be installed
---> Package gdk-pixbuf2.x86_64 0:2.36.12-3.el7 will be installed
--> Processing Dependency: libjpeg.so.62(LIBJPEG_6.2)(64bit) for package: gdk-pixbuf2-2.36.12-3.el7.x86_64
--> Processing Dependency: libtiff.so.5(LIBTIFF_4.0)(64bit) for package: gdk-pixbuf2-2.36.12-3.el7.x86_64
--> Processing Dependency: libjasper.so.1()(64bit) for package: gdk-pixbuf2-2.36.12-3.el7.x86_64
--> Processing Dependency: libjpeg.so.62()(64bit) for package: gdk-pixbuf2-2.36.12-3.el7.x86_64
--> Processing Dependency: libtiff.so.5()(64bit) for package: gdk-pixbuf2-2.36.12-3.el7.x86_64
---> Package gtk3.x86_64 0:3.22.30-8.el7_9 will be installed
--> Processing Dependency: libXrandr(x86-64) >= 1.5.0 for package: gtk3-3.22.30-8.el7_9.x86_64
--> Processing Dependency: libepoxy(x86-64) >= 1.0 for package: gtk3-3.22.30-8.el7_9.x86_64
--> Processing Dependency: libwayland-client(x86-64) >= 1.9.91 for package: gtk3-3.22.30-8.el7_9.x86_64
--> Processing Dependency: libwayland-cursor(x86-64) >= 1.9.91 for package: gtk3-3.22.30-8.el7_9.x86_64
--> Processing Dependency: adwaita-icon-theme for package: gtk3-3.22.30-8.el7_9.x86_64
--> Processing Dependency: dconf(x86-64) for package: gtk3-3.22.30-8.el7_9.x86_64
--> Processing Dependency: gtk-update-icon-cache for package: gtk3-3.22.30-8.el7_9.x86_64
--> Processing Dependency: hicolor-icon-theme for package: gtk3-3.22.30-8.el7_9.x86_64
--> Processing Dependency: libxkbcommon.so.0(V_0.5.0)(64bit) for package: gtk3-3.22.30-8.el7_9.x86_64
--> Processing Dependency: libXcomposite.so.1()(64bit) for package: gtk3-3.22.30-8.el7_9.x86_64
--> Processing Dependency: libXcursor.so.1()(64bit) for package: gtk3-3.22.30-8.el7_9.x86_64
--> Processing Dependency: libXdamage.so.1()(64bit) for package: gtk3-3.22.30-8.el7_9.x86_64
--> Processing Dependency: libXfixes.so.3()(64bit) for package: gtk3-3.22.30-8.el7_9.x86_64
--> Processing Dependency: libXi.so.6()(64bit) for package: gtk3-3.22.30-8.el7_9.x86_64
--> Processing Dependency: libXinerama.so.1()(64bit) for package: gtk3-3.22.30-8.el7_9.x86_64
--> Processing Dependency: libXrandr.so.2()(64bit) for package: gtk3-3.22.30-8.el7_9.x86_64
--> Processing Dependency: libatk-bridge-2.0.so.0()(64bit) for package: gtk3-3.22.30-8.el7_9.x86_64
--> Processing Dependency: libcolord.so.2()(64bit) for package: gtk3-3.22.30-8.el7_9.x86_64
--> Processing Dependency: libcups.so.2()(64bit) for package: gtk3-3.22.30-8.el7_9.x86_64
--> Processing Dependency: libepoxy.so.0()(64bit) for package: gtk3-3.22.30-8.el7_9.x86_64
--> Processing Dependency: librest-0.7.so.0()(64bit) for package: gtk3-3.22.30-8.el7_9.x86_64
--> Processing Dependency: libwayland-client.so.0()(64bit) for package: gtk3-3.22.30-8.el7_9.x86_64
--> Processing Dependency: libwayland-cursor.so.0()(64bit) for package: gtk3-3.22.30-8.el7_9.x86_64
--> Processing Dependency: libwayland-egl.so.1()(64bit) for package: gtk3-3.22.30-8.el7_9.x86_64
--> Processing Dependency: libxkbcommon.so.0()(64bit) for package: gtk3-3.22.30-8.el7_9.x86_64
---> Package json-glib.x86_64 0:1.4.2-2.el7 will be installed
---> Package libarchive.x86_64 0:3.1.2-14.el7_7 will be installed
--> Processing Dependency: liblzo2.so.2()(64bit) for package: libarchive-3.1.2-14.el7_7.x86_64
---> Package libcroco.x86_64 0:0.6.12-6.el7_9 will be installed
---> Package libgcab1.x86_64 0:0.7-4.el7_4 will be installed
---> Package libpng.x86_64 2:1.5.13-8.el7 will be installed
---> Package librsvg2.x86_64 0:2.40.20-1.el7 will be installed
---> Package libsoup.x86_64 0:2.62.2-2.el7 will be installed
--> Processing Dependency: glib-networking(x86-64) >= 2.38.0 for package: libsoup-2.62.2-2.el7.x86_64
---> Package libxslt.x86_64 0:1.1.28-6.el7 will be installed
---> Package pango.x86_64 0:1.42.4-4.el7_7 will be installed
--> Processing Dependency: fribidi(x86-64) >= 1.0 for package: pango-1.42.4-4.el7_7.x86_64
--> Processing Dependency: harfbuzz(x86-64) >= 1.4.2 for package: pango-1.42.4-4.el7_7.x86_64
--> Processing Dependency: libXft(x86-64) >= 2.0.0 for package: pango-1.42.4-4.el7_7.x86_64
--> Processing Dependency: libthai(x86-64) >= 0.1.9 for package: pango-1.42.4-4.el7_7.x86_64
--> Processing Dependency: libthai.so.0(LIBTHAI_0.1)(64bit) for package: pango-1.42.4-4.el7_7.x86_64
--> Processing Dependency: libXft.so.2()(64bit) for package: pango-1.42.4-4.el7_7.x86_64
--> Processing Dependency: libfribidi.so.0()(64bit) for package: pango-1.42.4-4.el7_7.x86_64
--> Processing Dependency: libharfbuzz.so.0()(64bit) for package: pango-1.42.4-4.el7_7.x86_64
--> Processing Dependency: libthai.so.0()(64bit) for package: pango-1.42.4-4.el7_7.x86_64
---> Package python.x86_64 0:2.7.5-94.el7_9 will be installed
---> Package python-javapackages.noarch 0:3.4.1-11.el7 will be installed
--> Processing Dependency: python-lxml for package: python-javapackages-3.4.1-11.el7.noarch
---> Package python3.x86_64 0:3.6.8-21.el7_9 will be installed
--> Processing Dependency: python3-pip for package: python3-3.6.8-21.el7_9.x86_64
--> Processing Dependency: python3-setuptools for package: python3-3.6.8-21.el7_9.x86_64
---> Package python3-libs.x86_64 0:3.6.8-21.el7_9 will be installed
--> Processing Dependency: libtirpc.so.1()(64bit) for package: python3-libs-3.6.8-21.el7_9.x86_64
---> Package python3-rpm-generators.noarch 0:6-2.el7 will be installed
---> Package python3-rpm-macros.noarch 0:3-34.el7 will be installed
--> Running transaction check
---> Package adwaita-icon-theme.noarch 0:3.28.0-1.el7 will be installed
--> Processing Dependency: adwaita-cursor-theme = 3.28.0-1.el7 for package: adwaita-icon-theme-3.28.0-1.el7.noarch
---> Package at-spi2-atk.x86_64 0:2.26.2-1.el7 will be installed
--> Processing Dependency: at-spi2-core(x86-64) >= 2.25.3 for package: at-spi2-atk-2.26.2-1.el7.x86_64
--> Processing Dependency: libatspi.so.0()(64bit) for package: at-spi2-atk-2.26.2-1.el7.x86_64
---> Package colord-libs.x86_64 0:1.3.4-2.el7 will be installed
--> Processing Dependency: libgusb.so.2(LIBGUSB_0.1.0)(64bit) for package: colord-libs-1.3.4-2.el7.x86_64
--> Processing Dependency: libgusb.so.2(LIBGUSB_0.1.1)(64bit) for package: colord-libs-1.3.4-2.el7.x86_64
--> Processing Dependency: libgusb.so.2()(64bit) for package: colord-libs-1.3.4-2.el7.x86_64
--> Processing Dependency: liblcms2.so.2()(64bit) for package: colord-libs-1.3.4-2.el7.x86_64
--> Processing Dependency: libusb-1.0.so.0()(64bit) for package: colord-libs-1.3.4-2.el7.x86_64
---> Package cups-libs.x86_64 1:1.6.3-52.el7_9 will be installed
--> Processing Dependency: libavahi-client.so.3()(64bit) for package: 1:cups-libs-1.6.3-52.el7_9.x86_64
--> Processing Dependency: libavahi-common.so.3()(64bit) for package: 1:cups-libs-1.6.3-52.el7_9.x86_64
---> Package dconf.x86_64 0:0.28.0-4.el7 will be installed
---> Package dejavu-sans-fonts.noarch 0:2.33-6.el7 will be installed
--> Processing Dependency: dejavu-fonts-common = 2.33-6.el7 for package: dejavu-sans-fonts-2.33-6.el7.noarch
---> Package fontpackages-filesystem.noarch 0:1.44-8.el7 will be installed
---> Package fribidi.x86_64 0:1.0.2-1.el7_7.1 will be installed
---> Package glib-networking.x86_64 0:2.56.1-1.el7 will be installed
--> Processing Dependency: gsettings-desktop-schemas for package: glib-networking-2.56.1-1.el7.x86_64
--> Processing Dependency: libgnutls.so.28(GNUTLS_1_4)(64bit) for package: glib-networking-2.56.1-1.el7.x86_64
--> Processing Dependency: libgnutls.so.28(GNUTLS_2_12)(64bit) for package: glib-networking-2.56.1-1.el7.x86_64
--> Processing Dependency: libgnutls.so.28(GNUTLS_3_0_0)(64bit) for package: glib-networking-2.56.1-1.el7.x86_64
--> Processing Dependency: libgnutls.so.28(GNUTLS_3_1_0)(64bit) for package: glib-networking-2.56.1-1.el7.x86_64
--> Processing Dependency: libgnutls.so.28()(64bit) for package: glib-networking-2.56.1-1.el7.x86_64
--> Processing Dependency: libproxy.so.1()(64bit) for package: glib-networking-2.56.1-1.el7.x86_64
---> Package gtk-update-icon-cache.x86_64 0:3.22.30-8.el7_9 will be installed
---> Package harfbuzz.x86_64 0:1.7.5-2.el7 will be installed
--> Processing Dependency: libgraphite2.so.3()(64bit) for package: harfbuzz-1.7.5-2.el7.x86_64
---> Package hicolor-icon-theme.noarch 0:0.12-7.el7 will be installed
---> Package jasper-libs.x86_64 0:1.900.1-33.el7 will be installed
---> Package libX11.x86_64 0:1.6.7-5.el7_9 will be installed
--> Processing Dependency: libX11-common >= 1.6.7-5.el7_9 for package: libX11-1.6.7-5.el7_9.x86_64
---> Package libXcomposite.x86_64 0:0.4.4-4.1.el7 will be installed
---> Package libXcursor.x86_64 0:1.1.15-1.el7 will be installed
---> Package libXdamage.x86_64 0:1.1.4-4.1.el7 will be installed
---> Package libXext.x86_64 0:1.3.3-3.el7 will be installed
---> Package libXfixes.x86_64 0:5.0.3-1.el7 will be installed
---> Package libXft.x86_64 0:2.3.2-2.el7 will be installed
---> Package libXi.x86_64 0:1.7.9-1.el7 will be installed
---> Package libXinerama.x86_64 0:1.1.3-2.1.el7 will be installed
---> Package libXrandr.x86_64 0:1.5.1-2.el7 will be installed
---> Package libXrender.x86_64 0:0.9.10-1.el7 will be installed
---> Package libepoxy.x86_64 0:1.5.2-1.el7 will be installed
---> Package libglvnd-egl.x86_64 1:1.0.1-0.8.git5baa1e5.el7 will be installed
--> Processing Dependency: libglvnd(x86-64) = 1:1.0.1-0.8.git5baa1e5.el7 for package: 1:libglvnd-egl-1.0.1-0.8.git5baa1e5.el7.x86_64
--> Processing Dependency: mesa-libEGL(x86-64) >= 13.0.4-1 for package: 1:libglvnd-egl-1.0.1-0.8.git5baa1e5.el7.x86_64
--> Processing Dependency: libGLdispatch.so.0()(64bit) for package: 1:libglvnd-egl-1.0.1-0.8.git5baa1e5.el7.x86_64
---> Package libglvnd-glx.x86_64 1:1.0.1-0.8.git5baa1e5.el7 will be installed
--> Processing Dependency: mesa-libGL(x86-64) >= 13.0.4-1 for package: 1:libglvnd-glx-1.0.1-0.8.git5baa1e5.el7.x86_64
---> Package libjpeg-turbo.x86_64 0:1.2.90-8.el7 will be installed
---> Package libthai.x86_64 0:0.1.14-9.el7 will be installed
---> Package libtiff.x86_64 0:4.0.3-35.el7 will be installed
--> Processing Dependency: libjbig.so.2.0()(64bit) for package: libtiff-4.0.3-35.el7.x86_64
---> Package libtirpc.x86_64 0:0.2.4-0.16.el7 will be installed
---> Package libwayland-client.x86_64 0:1.15.0-1.el7 will be installed
---> Package libwayland-cursor.x86_64 0:1.15.0-1.el7 will be installed
---> Package libwayland-egl.x86_64 0:1.15.0-1.el7 will be installed
---> Package libxcb.x86_64 0:1.13-1.el7 will be installed
--> Processing Dependency: libXau.so.6()(64bit) for package: libxcb-1.13-1.el7.x86_64
---> Package libxkbcommon.x86_64 0:0.7.1-3.el7 will be installed
--> Processing Dependency: xkeyboard-config for package: libxkbcommon-0.7.1-3.el7.x86_64
---> Package lzo.x86_64 0:2.06-8.el7 will be installed
---> Package pixman.x86_64 0:0.34.0-1.el7 will be installed
---> Package python-lxml.x86_64 0:3.2.1-4.el7 will be installed
---> Package python3-pip.noarch 0:9.0.3-8.el7 will be installed
---> Package python3-setuptools.noarch 0:39.2.0-10.el7 will be installed
---> Package rest.x86_64 0:0.8.1-2.el7 will be installed
--> Running transaction check
---> Package adwaita-cursor-theme.noarch 0:3.28.0-1.el7 will be installed
---> Package at-spi2-core.x86_64 0:2.28.0-1.el7 will be installed
--> Processing Dependency: libXtst.so.6()(64bit) for package: at-spi2-core-2.28.0-1.el7.x86_64
---> Package avahi-libs.x86_64 0:0.6.31-20.el7 will be installed
---> Package dejavu-fonts-common.noarch 0:2.33-6.el7 will be installed
---> Package gnutls.x86_64 0:3.3.29-9.el7_6 will be installed
--> Processing Dependency: trousers >= 0.3.11.2 for package: gnutls-3.3.29-9.el7_6.x86_64
--> Processing Dependency: libhogweed.so.2()(64bit) for package: gnutls-3.3.29-9.el7_6.x86_64
--> Processing Dependency: libnettle.so.4()(64bit) for package: gnutls-3.3.29-9.el7_6.x86_64
---> Package graphite2.x86_64 0:1.3.10-1.el7_3 will be installed
---> Package gsettings-desktop-schemas.x86_64 0:3.28.0-3.el7 will be installed
---> Package jbigkit-libs.x86_64 0:2.0-11.el7 will be installed
---> Package lcms2.x86_64 0:2.6-3.el7 will be installed
---> Package libX11-common.noarch 0:1.6.7-5.el7_9 will be installed
---> Package libXau.x86_64 0:1.0.8-2.1.el7 will be installed
---> Package libglvnd.x86_64 1:1.0.1-0.8.git5baa1e5.el7 will be installed
---> Package libgusb.x86_64 0:0.2.9-1.el7 will be installed
---> Package libproxy.x86_64 0:0.4.11-11.el7 will be installed
--> Processing Dependency: libmodman.so.1()(64bit) for package: libproxy-0.4.11-11.el7.x86_64
---> Package libusbx.x86_64 0:1.0.21-1.el7 will be installed
---> Package mesa-libEGL.x86_64 0:18.3.4-12.el7_9 will be installed
--> Processing Dependency: mesa-libgbm = 18.3.4-12.el7_9 for package: mesa-libEGL-18.3.4-12.el7_9.x86_64
--> Processing Dependency: libdrm.so.2()(64bit) for package: mesa-libEGL-18.3.4-12.el7_9.x86_64
--> Processing Dependency: libgbm.so.1()(64bit) for package: mesa-libEGL-18.3.4-12.el7_9.x86_64
--> Processing Dependency: libglapi.so.0()(64bit) for package: mesa-libEGL-18.3.4-12.el7_9.x86_64
--> Processing Dependency: libwayland-server.so.0()(64bit) for package: mesa-libEGL-18.3.4-12.el7_9.x86_64
--> Processing Dependency: libxshmfence.so.1()(64bit) for package: mesa-libEGL-18.3.4-12.el7_9.x86_64
---> Package mesa-libGL.x86_64 0:18.3.4-12.el7_9 will be installed
--> Processing Dependency: libXxf86vm.so.1()(64bit) for package: mesa-libGL-18.3.4-12.el7_9.x86_64
---> Package xkeyboard-config.noarch 0:2.24-1.el7 will be installed
--> Running transaction check
---> Package libXtst.x86_64 0:1.2.3-1.el7 will be installed
---> Package libXxf86vm.x86_64 0:1.1.4-1.el7 will be installed
---> Package libdrm.x86_64 0:2.4.97-2.el7 will be installed
--> Processing Dependency: libpciaccess.so.0()(64bit) for package: libdrm-2.4.97-2.el7.x86_64
---> Package libmodman.x86_64 0:2.0.1-8.el7 will be installed
---> Package libwayland-server.x86_64 0:1.15.0-1.el7 will be installed
---> Package libxshmfence.x86_64 0:1.2-1.el7 will be installed
---> Package mesa-libgbm.x86_64 0:18.3.4-12.el7_9 will be installed
---> Package mesa-libglapi.x86_64 0:18.3.4-12.el7_9 will be installed
---> Package nettle.x86_64 0:2.7.1-9.el7_9 will be installed
---> Package trousers.x86_64 0:0.3.14-2.el7 will be installed
--> Running transaction check
---> Package libpciaccess.x86_64 0:0.14-1.el7 will be installed
--> Processing Dependency: hwdata for package: libpciaccess-0.14-1.el7.x86_64
--> Running transaction check
---> Package hwdata.x86_64 0:0.252-9.7.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                  Arch   Version                    Repository     Size
================================================================================
Installing:
 desktop-file-utils       x86_64 0.23-2.el7                 rhel           67 k
 javapackages-tools       noarch 3.4.1-11.el7               rhel           73 k
 libappstream-glib        x86_64 0.7.8-2.el7                rhel          286 k
 librsvg2-tools           x86_64 2.40.20-1.el7              rhel           32 k
 python3-devel            x86_64 3.6.8-21.el7_9             rhel-optional 217 k
Installing for dependencies:
 adwaita-cursor-theme     noarch 3.28.0-1.el7               rhel          641 k
 adwaita-icon-theme       noarch 3.28.0-1.el7               rhel           11 M
 at-spi2-atk              x86_64 2.26.2-1.el7               rhel           81 k
 at-spi2-core             x86_64 2.28.0-1.el7               rhel          158 k
 atk                      x86_64 2.28.1-2.el7               rhel          263 k
 avahi-libs               x86_64 0.6.31-20.el7              rhel           62 k
 cairo                    x86_64 1.15.12-4.el7              rhel          741 k
 cairo-gobject            x86_64 1.15.12-4.el7              rhel           26 k
 colord-libs              x86_64 1.3.4-2.el7                rhel          186 k
 cups-libs                x86_64 1:1.6.3-52.el7_9           rhel          359 k
 dconf                    x86_64 0.28.0-4.el7               rhel          106 k
 dejavu-fonts-common      noarch 2.33-6.el7                 rhel           64 k
 dejavu-sans-fonts        noarch 2.33-6.el7                 rhel          1.4 M
 emacs-filesystem         noarch 1:24.3-23.el7_9.1          rhel           58 k
 fontconfig               x86_64 2.13.0-4.3.el7             rhel          254 k
 fontpackages-filesystem  noarch 1.44-8.el7                 rhel          9.9 k
 freetype                 x86_64 2.8-14.el7_9.1             rhel          380 k
 fribidi                  x86_64 1.0.2-1.el7_7.1            rhel           80 k
 gdk-pixbuf2              x86_64 2.36.12-3.el7              rhel          570 k
 glib-networking          x86_64 2.56.1-1.el7               rhel          145 k
 gnutls                   x86_64 3.3.29-9.el7_6             rhel          681 k
 graphite2                x86_64 1.3.10-1.el7_3             rhel          115 k
 gsettings-desktop-schemas
                          x86_64 3.28.0-3.el7               rhel          606 k
 gtk-update-icon-cache    x86_64 3.22.30-8.el7_9            rhel           27 k
 gtk3                     x86_64 3.22.30-8.el7_9            rhel          4.4 M
 harfbuzz                 x86_64 1.7.5-2.el7                rhel          267 k
 hicolor-icon-theme       noarch 0.12-7.el7                 rhel           43 k
 hwdata                   x86_64 0.252-9.7.el7              rhel          2.5 M
 jasper-libs              x86_64 1.900.1-33.el7             rhel          150 k
 jbigkit-libs             x86_64 2.0-11.el7                 rhel           46 k
 json-glib                x86_64 1.4.2-2.el7                rhel          134 k
 lcms2                    x86_64 2.6-3.el7                  rhel          150 k
 libX11                   x86_64 1.6.7-5.el7_9              rhel          607 k
 libX11-common            noarch 1.6.7-5.el7_9              rhel          165 k
 libXau                   x86_64 1.0.8-2.1.el7              rhel           29 k
 libXcomposite            x86_64 0.4.4-4.1.el7              rhel           22 k
 libXcursor               x86_64 1.1.15-1.el7               rhel           30 k
 libXdamage               x86_64 1.1.4-4.1.el7              rhel           20 k
 libXext                  x86_64 1.3.3-3.el7                rhel           39 k
 libXfixes                x86_64 5.0.3-1.el7                rhel           18 k
 libXft                   x86_64 2.3.2-2.el7                rhel           58 k
 libXi                    x86_64 1.7.9-1.el7                rhel           40 k
 libXinerama              x86_64 1.1.3-2.1.el7              rhel           14 k
 libXrandr                x86_64 1.5.1-2.el7                rhel           27 k
 libXrender               x86_64 0.9.10-1.el7               rhel           26 k
 libXtst                  x86_64 1.2.3-1.el7                rhel           20 k
 libXxf86vm               x86_64 1.1.4-1.el7                rhel           18 k
 libarchive               x86_64 3.1.2-14.el7_7             rhel          319 k
 libcroco                 x86_64 0.6.12-6.el7_9             rhel          105 k
 libdrm                   x86_64 2.4.97-2.el7               rhel          151 k
 libepoxy                 x86_64 1.5.2-1.el7                rhel          211 k
 libgcab1                 x86_64 0.7-4.el7_4                rhel           66 k
 libglvnd                 x86_64 1:1.0.1-0.8.git5baa1e5.el7 rhel           90 k
 libglvnd-egl             x86_64 1:1.0.1-0.8.git5baa1e5.el7 rhel           44 k
 libglvnd-glx             x86_64 1:1.0.1-0.8.git5baa1e5.el7 rhel          125 k
 libgusb                  x86_64 0.2.9-1.el7                rhel           40 k
 libjpeg-turbo            x86_64 1.2.90-8.el7               rhel          135 k
 libmodman                x86_64 2.0.1-8.el7                rhel           28 k
 libpciaccess             x86_64 0.14-1.el7                 rhel           26 k
 libpng                   x86_64 2:1.5.13-8.el7             rhel          213 k
 libproxy                 x86_64 0.4.11-11.el7              rhel           65 k
 librsvg2                 x86_64 2.40.20-1.el7              rhel          132 k
 libsoup                  x86_64 2.62.2-2.el7               rhel          411 k
 libthai                  x86_64 0.1.14-9.el7               rhel          187 k
 libtiff                  x86_64 4.0.3-35.el7               rhel          172 k
 libtirpc                 x86_64 0.2.4-0.16.el7             rhel           89 k
 libusbx                  x86_64 1.0.21-1.el7               rhel           61 k
 libwayland-client        x86_64 1.15.0-1.el7               rhel           33 k
 libwayland-cursor        x86_64 1.15.0-1.el7               rhel           20 k
 libwayland-egl           x86_64 1.15.0-1.el7               rhel           13 k
 libwayland-server        x86_64 1.15.0-1.el7               rhel           39 k
 libxcb                   x86_64 1.13-1.el7                 rhel          214 k
 libxkbcommon             x86_64 0.7.1-3.el7                rhel          109 k
 libxshmfence             x86_64 1.2-1.el7                  rhel          7.1 k
 libxslt                  x86_64 1.1.28-6.el7               rhel          242 k
 lzo                      x86_64 2.06-8.el7                 rhel           59 k
 mesa-libEGL              x86_64 18.3.4-12.el7_9            rhel          110 k
 mesa-libGL               x86_64 18.3.4-12.el7_9            rhel          166 k
 mesa-libgbm              x86_64 18.3.4-12.el7_9            rhel           39 k
 mesa-libglapi            x86_64 18.3.4-12.el7_9            rhel           46 k
 nettle                   x86_64 2.7.1-9.el7_9              rhel          328 k
 pango                    x86_64 1.42.4-4.el7_7             rhel          280 k
 pixman                   x86_64 0.34.0-1.el7               rhel          248 k
 python                   x86_64 2.7.5-94.el7_9             rhel           97 k
 python-javapackages      noarch 3.4.1-11.el7               rhel           31 k
 python-lxml              x86_64 3.2.1-4.el7                rhel          758 k
 python3                  x86_64 3.6.8-21.el7_9             rhel           71 k
 python3-libs             x86_64 3.6.8-21.el7_9             rhel          6.9 M
 python3-pip              noarch 9.0.3-8.el7                rhel          1.6 M
 python3-rpm-generators   noarch 6-2.el7                    rhel           20 k
 python3-rpm-macros       noarch 3-34.el7                   rhel          8.1 k
 python3-setuptools       noarch 39.2.0-10.el7              rhel          629 k
 rest                     x86_64 0.8.1-2.el7                rhel           63 k
 trousers                 x86_64 0.3.14-2.el7               rhel          289 k
 xkeyboard-config         noarch 2.24-1.el7                 rhel          834 k

Transaction Summary
================================================================================
Install  5 Packages (+95 Dependent packages)

Total download size: 44 M
Installed size: 156 M
Downloading packages:
(1/100): adwaita-cursor-theme-3.28.0-1.el7.noarch.rpm      | 641 kB   00:00     
(2/100): adwaita-icon-theme-3.28.0-1.el7.noarch.rpm        |  11 MB   00:00     
(3/100): at-spi2-atk-2.26.2-1.el7.x86_64.rpm               |  81 kB   00:00     
(4/100): at-spi2-core-2.28.0-1.el7.x86_64.rpm              | 158 kB   00:00     
(5/100): avahi-libs-0.6.31-20.el7.x86_64.rpm               |  62 kB   00:00     
(6/100): atk-2.28.1-2.el7.x86_64.rpm                       | 263 kB   00:00     
(7/100): cairo-gobject-1.15.12-4.el7.x86_64.rpm            |  26 kB   00:00     
(8/100): cairo-1.15.12-4.el7.x86_64.rpm                    | 741 kB   00:00     
(9/100): colord-libs-1.3.4-2.el7.x86_64.rpm                | 186 kB   00:00     
(10/100): cups-libs-1.6.3-52.el7_9.x86_64.rpm              | 359 kB   00:00     
(11/100): dconf-0.28.0-4.el7.x86_64.rpm                    | 106 kB   00:00     
(12/100): dejavu-fonts-common-2.33-6.el7.noarch.rpm        |  64 kB   00:00     
(13/100): dejavu-sans-fonts-2.33-6.el7.noarch.rpm          | 1.4 MB   00:00     
(14/100): desktop-file-utils-0.23-2.el7.x86_64.rpm         |  67 kB   00:00     
(15/100): emacs-filesystem-24.3-23.el7_9.1.noarch.rpm      |  58 kB   00:00     
(16/100): fontconfig-2.13.0-4.3.el7.x86_64.rpm             | 254 kB   00:00     
(17/100): fontpackages-filesystem-1.44-8.el7.noarch.rpm    | 9.9 kB   00:00     
(18/100): freetype-2.8-14.el7_9.1.x86_64.rpm               | 380 kB   00:00     
(19/100): fribidi-1.0.2-1.el7_7.1.x86_64.rpm               |  80 kB   00:00     
(20/100): gdk-pixbuf2-2.36.12-3.el7.x86_64.rpm             | 570 kB   00:00     
(21/100): glib-networking-2.56.1-1.el7.x86_64.rpm          | 145 kB   00:00     
(22/100): gnutls-3.3.29-9.el7_6.x86_64.rpm                 | 681 kB   00:00     
(23/100): graphite2-1.3.10-1.el7_3.x86_64.rpm              | 115 kB   00:00     
(24/100): gtk-update-icon-cache-3.22.30-8.el7_9.x86_64.rpm |  27 kB   00:00     
(25/100): gsettings-desktop-schemas-3.28.0-3.el7.x86_64.rp | 606 kB   00:00     
(26/100): harfbuzz-1.7.5-2.el7.x86_64.rpm                  | 267 kB   00:00     
(27/100): gtk3-3.22.30-8.el7_9.x86_64.rpm                  | 4.4 MB   00:00     
(28/100): hicolor-icon-theme-0.12-7.el7.noarch.rpm         |  43 kB   00:00     
(29/100): hwdata-0.252-9.7.el7.x86_64.rpm                  | 2.5 MB   00:00     
(30/100): jasper-libs-1.900.1-33.el7.x86_64.rpm            | 150 kB   00:00     
(31/100): jbigkit-libs-2.0-11.el7.x86_64.rpm               |  46 kB   00:00     
(32/100): javapackages-tools-3.4.1-11.el7.noarch.rpm       |  73 kB   00:00     
(33/100): json-glib-1.4.2-2.el7.x86_64.rpm                 | 134 kB   00:00     
(34/100): lcms2-2.6-3.el7.x86_64.rpm                       | 150 kB   00:00     
(35/100): libX11-1.6.7-5.el7_9.x86_64.rpm                  | 607 kB   00:00     
(36/100): libX11-common-1.6.7-5.el7_9.noarch.rpm           | 165 kB   00:00     
(37/100): libXau-1.0.8-2.1.el7.x86_64.rpm                  |  29 kB   00:00     
(38/100): libXcomposite-0.4.4-4.1.el7.x86_64.rpm           |  22 kB   00:00     
(39/100): libXcursor-1.1.15-1.el7.x86_64.rpm               |  30 kB   00:00     
(40/100): libXdamage-1.1.4-4.1.el7.x86_64.rpm              |  20 kB   00:00     
(41/100): libXext-1.3.3-3.el7.x86_64.rpm                   |  39 kB   00:00     
(42/100): libXfixes-5.0.3-1.el7.x86_64.rpm                 |  18 kB   00:00     
(43/100): libXft-2.3.2-2.el7.x86_64.rpm                    |  58 kB   00:00     
(44/100): libXi-1.7.9-1.el7.x86_64.rpm                     |  40 kB   00:00     
(45/100): libXinerama-1.1.3-2.1.el7.x86_64.rpm             |  14 kB   00:00     
(46/100): libXrandr-1.5.1-2.el7.x86_64.rpm                 |  27 kB   00:00     
(47/100): libXrender-0.9.10-1.el7.x86_64.rpm               |  26 kB   00:00     
(48/100): libXtst-1.2.3-1.el7.x86_64.rpm                   |  20 kB   00:00     
(49/100): libXxf86vm-1.1.4-1.el7.x86_64.rpm                |  18 kB   00:00     
(50/100): libappstream-glib-0.7.8-2.el7.x86_64.rpm         | 286 kB   00:00     
(51/100): libarchive-3.1.2-14.el7_7.x86_64.rpm             | 319 kB   00:00     
(52/100): libcroco-0.6.12-6.el7_9.x86_64.rpm               | 105 kB   00:00     
(53/100): libdrm-2.4.97-2.el7.x86_64.rpm                   | 151 kB   00:00     
(54/100): libepoxy-1.5.2-1.el7.x86_64.rpm                  | 211 kB   00:00     
(55/100): libglvnd-1.0.1-0.8.git5baa1e5.el7.x86_64.rpm     |  90 kB   00:00     
(56/100): libgcab1-0.7-4.el7_4.x86_64.rpm                  |  66 kB   00:00     
(57/100): libglvnd-egl-1.0.1-0.8.git5baa1e5.el7.x86_64.rpm |  44 kB   00:00     
(58/100): libglvnd-glx-1.0.1-0.8.git5baa1e5.el7.x86_64.rpm | 125 kB   00:00     
(59/100): libgusb-0.2.9-1.el7.x86_64.rpm                   |  40 kB   00:00     
(60/100): libjpeg-turbo-1.2.90-8.el7.x86_64.rpm            | 135 kB   00:00     
(61/100): libmodman-2.0.1-8.el7.x86_64.rpm                 |  28 kB   00:00     
(62/100): libpciaccess-0.14-1.el7.x86_64.rpm               |  26 kB   00:00     
(63/100): libpng-1.5.13-8.el7.x86_64.rpm                   | 213 kB   00:00     
(64/100): libproxy-0.4.11-11.el7.x86_64.rpm                |  65 kB   00:00     
(65/100): librsvg2-2.40.20-1.el7.x86_64.rpm                | 132 kB   00:00     
(66/100): librsvg2-tools-2.40.20-1.el7.x86_64.rpm          |  32 kB   00:00     
(67/100): libsoup-2.62.2-2.el7.x86_64.rpm                  | 411 kB   00:00     
(68/100): libthai-0.1.14-9.el7.x86_64.rpm                  | 187 kB   00:00     
(69/100): libtirpc-0.2.4-0.16.el7.x86_64.rpm               |  89 kB   00:00     
(70/100): libtiff-4.0.3-35.el7.x86_64.rpm                  | 172 kB   00:00     
(71/100): libusbx-1.0.21-1.el7.x86_64.rpm                  |  61 kB   00:00     
(72/100): libwayland-client-1.15.0-1.el7.x86_64.rpm        |  33 kB   00:00     
(73/100): libwayland-cursor-1.15.0-1.el7.x86_64.rpm        |  20 kB   00:00     
(74/100): libwayland-egl-1.15.0-1.el7.x86_64.rpm           |  13 kB   00:00     
(75/100): libwayland-server-1.15.0-1.el7.x86_64.rpm        |  39 kB   00:00     
(76/100): libxcb-1.13-1.el7.x86_64.rpm                     | 214 kB   00:00     
(77/100): libxkbcommon-0.7.1-3.el7.x86_64.rpm              | 109 kB   00:00     
(78/100): libxshmfence-1.2-1.el7.x86_64.rpm                | 7.1 kB   00:00     
(79/100): libxslt-1.1.28-6.el7.x86_64.rpm                  | 242 kB   00:00     
(80/100): lzo-2.06-8.el7.x86_64.rpm                        |  59 kB   00:00     
(81/100): mesa-libEGL-18.3.4-12.el7_9.x86_64.rpm           | 110 kB   00:00     
(82/100): mesa-libGL-18.3.4-12.el7_9.x86_64.rpm            | 166 kB   00:00     
(83/100): mesa-libgbm-18.3.4-12.el7_9.x86_64.rpm           |  39 kB   00:00     
(84/100): mesa-libglapi-18.3.4-12.el7_9.x86_64.rpm         |  46 kB   00:00     
(85/100): nettle-2.7.1-9.el7_9.x86_64.rpm                  | 328 kB   00:00     
(86/100): pango-1.42.4-4.el7_7.x86_64.rpm                  | 280 kB   00:00     
(87/100): python-2.7.5-94.el7_9.x86_64.rpm                 |  97 kB   00:00     
(88/100): pixman-0.34.0-1.el7.x86_64.rpm                   | 248 kB   00:00     
(89/100): python-javapackages-3.4.1-11.el7.noarch.rpm      |  31 kB   00:00     
(90/100): python-lxml-3.2.1-4.el7.x86_64.rpm               | 758 kB   00:00     
(91/100): python3-3.6.8-21.el7_9.x86_64.rpm                |  71 kB   00:00     
(92/100): python3-devel-3.6.8-21.el7_9.x86_64.rpm          | 217 kB   00:00     
(93/100): python3-libs-3.6.8-21.el7_9.x86_64.rpm           | 6.9 MB   00:00     
(94/100): python3-pip-9.0.3-8.el7.noarch.rpm               | 1.6 MB   00:00     
(95/100): python3-rpm-generators-6-2.el7.noarch.rpm        |  20 kB   00:00     
(96/100): python3-rpm-macros-3-34.el7.noarch.rpm           | 8.1 kB   00:00     
(97/100): rest-0.8.1-2.el7.x86_64.rpm                      |  63 kB   00:00     
(98/100): python3-setuptools-39.2.0-10.el7.noarch.rpm      | 629 kB   00:00     
(99/100): trousers-0.3.14-2.el7.x86_64.rpm                 | 289 kB   00:00     
(100/100): xkeyboard-config-2.24-1.el7.noarch.rpm          | 834 kB   00:00     
--------------------------------------------------------------------------------
Total                                              2.0 MB/s |  44 MB  00:21     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : 2:libpng-1.5.13-8.el7.x86_64                               1/100 
  Installing : freetype-2.8-14.el7_9.1.x86_64                             2/100 
  Installing : libjpeg-turbo-1.2.90-8.el7.x86_64                          3/100 
  Installing : mesa-libglapi-18.3.4-12.el7_9.x86_64                       4/100 
  Installing : atk-2.28.1-2.el7.x86_64                                    5/100 
  Installing : python-2.7.5-94.el7_9.x86_64                               6/100 
  Installing : libwayland-client-1.15.0-1.el7.x86_64                      7/100 
  Installing : libxslt-1.1.28-6.el7.x86_64                                8/100 
  Installing : libusbx-1.0.21-1.el7.x86_64                                9/100 
  Installing : 1:libglvnd-1.0.1-0.8.git5baa1e5.el7.x86_64                10/100 
  Installing : libxshmfence-1.2-1.el7.x86_64                             11/100 
  Installing : fontpackages-filesystem-1.44-8.el7.noarch                 12/100 
  Installing : pixman-0.34.0-1.el7.x86_64                                13/100 
  Installing : libcroco-0.6.12-6.el7_9.x86_64                            14/100 
  Installing : json-glib-1.4.2-2.el7.x86_64                              15/100 
  Installing : libwayland-server-1.15.0-1.el7.x86_64                     16/100 
  Installing : dejavu-fonts-common-2.33-6.el7.noarch                     17/100 
  Installing : dejavu-sans-fonts-2.33-6.el7.noarch                       18/100 
  Installing : fontconfig-2.13.0-4.3.el7.x86_64                          19/100 
  Installing : libgusb-0.2.9-1.el7.x86_64                                20/100 
  Installing : python-lxml-3.2.1-4.el7.x86_64                            21/100 
  Installing : python-javapackages-3.4.1-11.el7.noarch                   22/100 
  Installing : libwayland-cursor-1.15.0-1.el7.x86_64                     23/100 
  Installing : jasper-libs-1.900.1-33.el7.x86_64                         24/100 
  Installing : python3-rpm-macros-3-34.el7.noarch                        25/100 
  Installing : lcms2-2.6-3.el7.x86_64                                    26/100 
  Installing : colord-libs-1.3.4-2.el7.x86_64                            27/100 
  Installing : jbigkit-libs-2.0-11.el7.x86_64                            28/100 
  Installing : libtiff-4.0.3-35.el7.x86_64                               29/100 
  Installing : dconf-0.28.0-4.el7.x86_64                                 30/100 
  Installing : libepoxy-1.5.2-1.el7.x86_64                               31/100 
  Installing : libthai-0.1.14-9.el7.x86_64                               32/100 
  Installing : libwayland-egl-1.15.0-1.el7.x86_64                        33/100 
  Installing : libtirpc-0.2.4-0.16.el7.x86_64                            34/100 
  Installing : python3-setuptools-39.2.0-10.el7.noarch                   35/100 
  Installing : python3-pip-9.0.3-8.el7.noarch                            36/100 
  Installing : python3-libs-3.6.8-21.el7_9.x86_64                        37/100 
  Installing : python3-3.6.8-21.el7_9.x86_64                             38/100 
  Installing : python3-rpm-generators-6-2.el7.noarch                     39/100 
  Installing : fribidi-1.0.2-1.el7_7.1.x86_64                            40/100 
  Installing : hicolor-icon-theme-0.12-7.el7.noarch                      41/100 
  Installing : lzo-2.06-8.el7.x86_64                                     42/100 
  Installing : libarchive-3.1.2-14.el7_7.x86_64                          43/100 
  Installing : trousers-0.3.14-2.el7.x86_64                              44/100 
  Installing : xkeyboard-config-2.24-1.el7.noarch                        45/100 
  Installing : libxkbcommon-0.7.1-3.el7.x86_64                           46/100 
  Installing : avahi-libs-0.6.31-20.el7.x86_64                           47/100 
  Installing : 1:cups-libs-1.6.3-52.el7_9.x86_64                         48/100 
  Installing : graphite2-1.3.10-1.el7_3.x86_64                           49/100 
  Installing : harfbuzz-1.7.5-2.el7.x86_64                               50/100 
  Installing : nettle-2.7.1-9.el7_9.x86_64                               51/100 
  Installing : gnutls-3.3.29-9.el7_6.x86_64                              52/100 
  Installing : libgcab1-0.7-4.el7_4.x86_64                               53/100 
  Installing : libmodman-2.0.1-8.el7.x86_64                              54/100 
  Installing : libproxy-0.4.11-11.el7.x86_64                             55/100 
  Installing : adwaita-cursor-theme-3.28.0-1.el7.noarch                  56/100 
  Installing : adwaita-icon-theme-3.28.0-1.el7.noarch                    57/100 
  Installing : hwdata-0.252-9.7.el7.x86_64                               58/100 
  Installing : libpciaccess-0.14-1.el7.x86_64                            59/100 
  Installing : libdrm-2.4.97-2.el7.x86_64                                60/100 
  Installing : mesa-libgbm-18.3.4-12.el7_9.x86_64                        61/100 
  Installing : 1:emacs-filesystem-24.3-23.el7_9.1.noarch                 62/100 
  Installing : libXau-1.0.8-2.1.el7.x86_64                               63/100 
  Installing : libxcb-1.13-1.el7.x86_64                                  64/100 
  Installing : gsettings-desktop-schemas-3.28.0-3.el7.x86_64             65/100 
  Installing : glib-networking-2.56.1-1.el7.x86_64                       66/100 
  Installing : libsoup-2.62.2-2.el7.x86_64                               67/100 
  Installing : rest-0.8.1-2.el7.x86_64                                   68/100 
  Installing : libX11-common-1.6.7-5.el7_9.noarch                        69/100 
  Installing : libX11-1.6.7-5.el7_9.x86_64                               70/100 
  Installing : libXext-1.3.3-3.el7.x86_64                                71/100 
  Installing : libXrender-0.9.10-1.el7.x86_64                            72/100 
  Installing : gdk-pixbuf2-2.36.12-3.el7.x86_64                          73/100 
  Installing : libXfixes-5.0.3-1.el7.x86_64                              74/100 
  Installing : libXdamage-1.1.4-4.1.el7.x86_64                           75/100 
  Installing : libXi-1.7.9-1.el7.x86_64                                  76/100 
  Installing : libXtst-1.2.3-1.el7.x86_64                                77/100 
  Installing : at-spi2-core-2.28.0-1.el7.x86_64                          78/100 
  Installing : at-spi2-atk-2.26.2-1.el7.x86_64                           79/100 
  Installing : libXcursor-1.1.15-1.el7.x86_64                            80/100 
  Installing : gtk-update-icon-cache-3.22.30-8.el7_9.x86_64              81/100 
  Installing : libXrandr-1.5.1-2.el7.x86_64                              82/100 
  Installing : libXft-2.3.2-2.el7.x86_64                                 83/100 
  Installing : libXinerama-1.1.3-2.1.el7.x86_64                          84/100 
  Installing : libXxf86vm-1.1.4-1.el7.x86_64                             85/100 
  Installing : 1:libglvnd-glx-1.0.1-0.8.git5baa1e5.el7.x86_64            86/100 
  Installing : mesa-libGL-18.3.4-12.el7_9.x86_64                         87/100 
  Installing : libXcomposite-0.4.4-4.1.el7.x86_64                        88/100 
  Installing : 1:libglvnd-egl-1.0.1-0.8.git5baa1e5.el7.x86_64            89/100 
  Installing : mesa-libEGL-18.3.4-12.el7_9.x86_64                        90/100 
  Installing : cairo-1.15.12-4.el7.x86_64                                91/100 
  Installing : pango-1.42.4-4.el7_7.x86_64                               92/100 
  Installing : cairo-gobject-1.15.12-4.el7.x86_64                        93/100 
  Installing : gtk3-3.22.30-8.el7_9.x86_64                               94/100 
  Installing : librsvg2-2.40.20-1.el7.x86_64                             95/100 
  Installing : librsvg2-tools-2.40.20-1.el7.x86_64                       96/100 
  Installing : libappstream-glib-0.7.8-2.el7.x86_64                      97/100 
  Installing : desktop-file-utils-0.23-2.el7.x86_64                      98/100 
  Installing : python3-devel-3.6.8-21.el7_9.x86_64                       99/100 
  Installing : javapackages-tools-3.4.1-11.el7.noarch                   100/100 
  Verifying  : libXext-1.3.3-3.el7.x86_64                                 1/100 
  Verifying  : libXi-1.7.9-1.el7.x86_64                                   2/100 
  Verifying  : libxkbcommon-0.7.1-3.el7.x86_64                            3/100 
  Verifying  : libXrender-0.9.10-1.el7.x86_64                             4/100 
  Verifying  : libwayland-server-1.15.0-1.el7.x86_64                      5/100 
  Verifying  : python-lxml-3.2.1-4.el7.x86_64                             6/100 
  Verifying  : colord-libs-1.3.4-2.el7.x86_64                             7/100 
  Verifying  : desktop-file-utils-0.23-2.el7.x86_64                       8/100 
  Verifying  : python3-3.6.8-21.el7_9.x86_64                              9/100 
  Verifying  : python-javapackages-3.4.1-11.el7.noarch                   10/100 
  Verifying  : libXcomposite-0.4.4-4.1.el7.x86_64                        11/100 
  Verifying  : json-glib-1.4.2-2.el7.x86_64                              12/100 
  Verifying  : libX11-common-1.6.7-5.el7_9.noarch                        13/100 
  Verifying  : 1:cups-libs-1.6.3-52.el7_9.x86_64                         14/100 
  Verifying  : cairo-gobject-1.15.12-4.el7.x86_64                        15/100 
  Verifying  : librsvg2-2.40.20-1.el7.x86_64                             16/100 
  Verifying  : python3-setuptools-39.2.0-10.el7.noarch                   17/100 
  Verifying  : gsettings-desktop-schemas-3.28.0-3.el7.x86_64             18/100 
  Verifying  : libXau-1.0.8-2.1.el7.x86_64                               19/100 
  Verifying  : gtk-update-icon-cache-3.22.30-8.el7_9.x86_64              20/100 
  Verifying  : 1:emacs-filesystem-24.3-23.el7_9.1.noarch                 21/100 
  Verifying  : at-spi2-atk-2.26.2-1.el7.x86_64                           22/100 
  Verifying  : libwayland-client-1.15.0-1.el7.x86_64                     23/100 
  Verifying  : hwdata-0.252-9.7.el7.x86_64                               24/100 
  Verifying  : libcroco-0.6.12-6.el7_9.x86_64                            25/100 
  Verifying  : adwaita-cursor-theme-3.28.0-1.el7.noarch                  26/100 
  Verifying  : libXtst-1.2.3-1.el7.x86_64                                27/100 
  Verifying  : libpciaccess-0.14-1.el7.x86_64                            28/100 
  Verifying  : mesa-libGL-18.3.4-12.el7_9.x86_64                         29/100 
  Verifying  : gnutls-3.3.29-9.el7_6.x86_64                              30/100 
  Verifying  : libmodman-2.0.1-8.el7.x86_64                              31/100 
  Verifying  : libgcab1-0.7-4.el7_4.x86_64                               32/100 
  Verifying  : python-2.7.5-94.el7_9.x86_64                              33/100 
  Verifying  : pixman-0.34.0-1.el7.x86_64                                34/100 
  Verifying  : javapackages-tools-3.4.1-11.el7.noarch                    35/100 
  Verifying  : freetype-2.8-14.el7_9.1.x86_64                            36/100 
  Verifying  : nettle-2.7.1-9.el7_9.x86_64                               37/100 
  Verifying  : 1:libglvnd-egl-1.0.1-0.8.git5baa1e5.el7.x86_64            38/100 
  Verifying  : libsoup-2.62.2-2.el7.x86_64                               39/100 
  Verifying  : jasper-libs-1.900.1-33.el7.x86_64                         40/100 
  Verifying  : graphite2-1.3.10-1.el7_3.x86_64                           41/100 
  Verifying  : libXfixes-5.0.3-1.el7.x86_64                              42/100 
  Verifying  : atk-2.28.1-2.el7.x86_64                                   43/100 
  Verifying  : libappstream-glib-0.7.8-2.el7.x86_64                      44/100 
  Verifying  : avahi-libs-0.6.31-20.el7.x86_64                           45/100 
  Verifying  : xkeyboard-config-2.24-1.el7.noarch                        46/100 
  Verifying  : fontconfig-2.13.0-4.3.el7.x86_64                          47/100 
  Verifying  : python3-rpm-generators-6-2.el7.noarch                     48/100 
  Verifying  : gdk-pixbuf2-2.36.12-3.el7.x86_64                          49/100 
  Verifying  : trousers-0.3.14-2.el7.x86_64                              50/100 
  Verifying  : 1:libglvnd-glx-1.0.1-0.8.git5baa1e5.el7.x86_64            51/100 
  Verifying  : libXcursor-1.1.15-1.el7.x86_64                            52/100 
  Verifying  : python3-pip-9.0.3-8.el7.noarch                            53/100 
  Verifying  : lzo-2.06-8.el7.x86_64                                     54/100 
  Verifying  : fontpackages-filesystem-1.44-8.el7.noarch                 55/100 
  Verifying  : hicolor-icon-theme-0.12-7.el7.noarch                      56/100 
  Verifying  : mesa-libglapi-18.3.4-12.el7_9.x86_64                      57/100 
  Verifying  : pango-1.42.4-4.el7_7.x86_64                               58/100 
  Verifying  : fribidi-1.0.2-1.el7_7.1.x86_64                            59/100 
  Verifying  : libdrm-2.4.97-2.el7.x86_64                                60/100 
  Verifying  : glib-networking-2.56.1-1.el7.x86_64                       61/100 
  Verifying  : libjpeg-turbo-1.2.90-8.el7.x86_64                         62/100 
  Verifying  : harfbuzz-1.7.5-2.el7.x86_64                               63/100 
  Verifying  : python3-devel-3.6.8-21.el7_9.x86_64                       64/100 
  Verifying  : rest-0.8.1-2.el7.x86_64                                   65/100 
  Verifying  : libXrandr-1.5.1-2.el7.x86_64                              66/100 
  Verifying  : 2:libpng-1.5.13-8.el7.x86_64                              67/100 
  Verifying  : gtk3-3.22.30-8.el7_9.x86_64                               68/100 
  Verifying  : mesa-libgbm-18.3.4-12.el7_9.x86_64                        69/100 
  Verifying  : libxshmfence-1.2-1.el7.x86_64                             70/100 
  Verifying  : libXdamage-1.1.4-4.1.el7.x86_64                           71/100 
  Verifying  : mesa-libEGL-18.3.4-12.el7_9.x86_64                        72/100 
  Verifying  : libtirpc-0.2.4-0.16.el7.x86_64                            73/100 
  Verifying  : at-spi2-core-2.28.0-1.el7.x86_64                          74/100 
  Verifying  : libXinerama-1.1.3-2.1.el7.x86_64                          75/100 
  Verifying  : libXxf86vm-1.1.4-1.el7.x86_64                             76/100 
  Verifying  : librsvg2-tools-2.40.20-1.el7.x86_64                       77/100 
  Verifying  : adwaita-icon-theme-3.28.0-1.el7.noarch                    78/100 
  Verifying  : libwayland-egl-1.15.0-1.el7.x86_64                        79/100 
  Verifying  : libtiff-4.0.3-35.el7.x86_64                               80/100 
  Verifying  : dejavu-fonts-common-2.33-6.el7.noarch                     81/100 
  Verifying  : libX11-1.6.7-5.el7_9.x86_64                               82/100 
  Verifying  : libthai-0.1.14-9.el7.x86_64                               83/100 
  Verifying  : python3-libs-3.6.8-21.el7_9.x86_64                        84/100 
  Verifying  : 1:libglvnd-1.0.1-0.8.git5baa1e5.el7.x86_64                85/100 
  Verifying  : libxcb-1.13-1.el7.x86_64                                  86/100 
  Verifying  : libXft-2.3.2-2.el7.x86_64                                 87/100 
  Verifying  : libepoxy-1.5.2-1.el7.x86_64                               88/100 
  Verifying  : libusbx-1.0.21-1.el7.x86_64                               89/100 
  Verifying  : libarchive-3.1.2-14.el7_7.x86_64                          90/100 
  Verifying  : dconf-0.28.0-4.el7.x86_64                                 91/100 
  Verifying  : libwayland-cursor-1.15.0-1.el7.x86_64                     92/100 
  Verifying  : libgusb-0.2.9-1.el7.x86_64                                93/100 
  Verifying  : jbigkit-libs-2.0-11.el7.x86_64                            94/100 
  Verifying  : cairo-1.15.12-4.el7.x86_64                                95/100 
  Verifying  : libproxy-0.4.11-11.el7.x86_64                             96/100 
  Verifying  : lcms2-2.6-3.el7.x86_64                                    97/100 
  Verifying  : dejavu-sans-fonts-2.33-6.el7.noarch                       98/100 
  Verifying  : libxslt-1.1.28-6.el7.x86_64                               99/100 
  Verifying  : python3-rpm-macros-3-34.el7.noarch                       100/100 

Installed:
  desktop-file-utils.x86_64 0:0.23-2.el7                                        
  javapackages-tools.noarch 0:3.4.1-11.el7                                      
  libappstream-glib.x86_64 0:0.7.8-2.el7                                        
  librsvg2-tools.x86_64 0:2.40.20-1.el7                                         
  python3-devel.x86_64 0:3.6.8-21.el7_9                                         

Dependency Installed:
  adwaita-cursor-theme.noarch 0:3.28.0-1.el7                                    
  adwaita-icon-theme.noarch 0:3.28.0-1.el7                                      
  at-spi2-atk.x86_64 0:2.26.2-1.el7                                             
  at-spi2-core.x86_64 0:2.28.0-1.el7                                            
  atk.x86_64 0:2.28.1-2.el7                                                     
  avahi-libs.x86_64 0:0.6.31-20.el7                                             
  cairo.x86_64 0:1.15.12-4.el7                                                  
  cairo-gobject.x86_64 0:1.15.12-4.el7                                          
  colord-libs.x86_64 0:1.3.4-2.el7                                              
  cups-libs.x86_64 1:1.6.3-52.el7_9                                             
  dconf.x86_64 0:0.28.0-4.el7                                                   
  dejavu-fonts-common.noarch 0:2.33-6.el7                                       
  dejavu-sans-fonts.noarch 0:2.33-6.el7                                         
  emacs-filesystem.noarch 1:24.3-23.el7_9.1                                     
  fontconfig.x86_64 0:2.13.0-4.3.el7                                            
  fontpackages-filesystem.noarch 0:1.44-8.el7                                   
  freetype.x86_64 0:2.8-14.el7_9.1                                              
  fribidi.x86_64 0:1.0.2-1.el7_7.1                                              
  gdk-pixbuf2.x86_64 0:2.36.12-3.el7                                            
  glib-networking.x86_64 0:2.56.1-1.el7                                         
  gnutls.x86_64 0:3.3.29-9.el7_6                                                
  graphite2.x86_64 0:1.3.10-1.el7_3                                             
  gsettings-desktop-schemas.x86_64 0:3.28.0-3.el7                               
  gtk-update-icon-cache.x86_64 0:3.22.30-8.el7_9                                
  gtk3.x86_64 0:3.22.30-8.el7_9                                                 
  harfbuzz.x86_64 0:1.7.5-2.el7                                                 
  hicolor-icon-theme.noarch 0:0.12-7.el7                                        
  hwdata.x86_64 0:0.252-9.7.el7                                                 
  jasper-libs.x86_64 0:1.900.1-33.el7                                           
  jbigkit-libs.x86_64 0:2.0-11.el7                                              
  json-glib.x86_64 0:1.4.2-2.el7                                                
  lcms2.x86_64 0:2.6-3.el7                                                      
  libX11.x86_64 0:1.6.7-5.el7_9                                                 
  libX11-common.noarch 0:1.6.7-5.el7_9                                          
  libXau.x86_64 0:1.0.8-2.1.el7                                                 
  libXcomposite.x86_64 0:0.4.4-4.1.el7                                          
  libXcursor.x86_64 0:1.1.15-1.el7                                              
  libXdamage.x86_64 0:1.1.4-4.1.el7                                             
  libXext.x86_64 0:1.3.3-3.el7                                                  
  libXfixes.x86_64 0:5.0.3-1.el7                                                
  libXft.x86_64 0:2.3.2-2.el7                                                   
  libXi.x86_64 0:1.7.9-1.el7                                                    
  libXinerama.x86_64 0:1.1.3-2.1.el7                                            
  libXrandr.x86_64 0:1.5.1-2.el7                                                
  libXrender.x86_64 0:0.9.10-1.el7                                              
  libXtst.x86_64 0:1.2.3-1.el7                                                  
  libXxf86vm.x86_64 0:1.1.4-1.el7                                               
  libarchive.x86_64 0:3.1.2-14.el7_7                                            
  libcroco.x86_64 0:0.6.12-6.el7_9                                              
  libdrm.x86_64 0:2.4.97-2.el7                                                  
  libepoxy.x86_64 0:1.5.2-1.el7                                                 
  libgcab1.x86_64 0:0.7-4.el7_4                                                 
  libglvnd.x86_64 1:1.0.1-0.8.git5baa1e5.el7                                    
  libglvnd-egl.x86_64 1:1.0.1-0.8.git5baa1e5.el7                                
  libglvnd-glx.x86_64 1:1.0.1-0.8.git5baa1e5.el7                                
  libgusb.x86_64 0:0.2.9-1.el7                                                  
  libjpeg-turbo.x86_64 0:1.2.90-8.el7                                           
  libmodman.x86_64 0:2.0.1-8.el7                                                
  libpciaccess.x86_64 0:0.14-1.el7                                              
  libpng.x86_64 2:1.5.13-8.el7                                                  
  libproxy.x86_64 0:0.4.11-11.el7                                               
  librsvg2.x86_64 0:2.40.20-1.el7                                               
  libsoup.x86_64 0:2.62.2-2.el7                                                 
  libthai.x86_64 0:0.1.14-9.el7                                                 
  libtiff.x86_64 0:4.0.3-35.el7                                                 
  libtirpc.x86_64 0:0.2.4-0.16.el7                                              
  libusbx.x86_64 0:1.0.21-1.el7                                                 
  libwayland-client.x86_64 0:1.15.0-1.el7                                       
  libwayland-cursor.x86_64 0:1.15.0-1.el7                                       
  libwayland-egl.x86_64 0:1.15.0-1.el7                                          
  libwayland-server.x86_64 0:1.15.0-1.el7                                       
  libxcb.x86_64 0:1.13-1.el7                                                    
  libxkbcommon.x86_64 0:0.7.1-3.el7                                             
  libxshmfence.x86_64 0:1.2-1.el7                                               
  libxslt.x86_64 0:1.1.28-6.el7                                                 
  lzo.x86_64 0:2.06-8.el7                                                       
  mesa-libEGL.x86_64 0:18.3.4-12.el7_9                                          
  mesa-libGL.x86_64 0:18.3.4-12.el7_9                                           
  mesa-libgbm.x86_64 0:18.3.4-12.el7_9                                          
  mesa-libglapi.x86_64 0:18.3.4-12.el7_9                                        
  nettle.x86_64 0:2.7.1-9.el7_9                                                 
  pango.x86_64 0:1.42.4-4.el7_7                                                 
  pixman.x86_64 0:0.34.0-1.el7                                                  
  python.x86_64 0:2.7.5-94.el7_9                                                
  python-javapackages.noarch 0:3.4.1-11.el7                                     
  python-lxml.x86_64 0:3.2.1-4.el7                                              
  python3.x86_64 0:3.6.8-21.el7_9                                               
  python3-libs.x86_64 0:3.6.8-21.el7_9                                          
  python3-pip.noarch 0:9.0.3-8.el7                                              
  python3-rpm-generators.noarch 0:6-2.el7                                       
  python3-rpm-macros.noarch 0:3-34.el7                                          
  python3-setuptools.noarch 0:39.2.0-10.el7                                     
  rest.x86_64 0:0.8.1-2.el7                                                     
  trousers.x86_64 0:0.3.14-2.el7                                                
  xkeyboard-config.noarch 0:2.24-1.el7                                          

Complete!
Finish: build setup for pycharm-community-2024.3.2-1.el7_9.src.rpm
Start: rpmbuild pycharm-community-2024.3.2-1.el7_9.src.rpm
Building target platforms: x86_64
Building for target x86_64
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.wtHfPo
+ umask 022
+ cd /builddir/build/BUILD
+ cd /builddir/build/BUILD
+ rm -rf pycharm-community-2024.3.2
+ /usr/bin/tar -xf -
+ /usr/bin/gzip -dc /builddir/build/SOURCES/pycharm-community-2024.3.2.tar.gz
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd pycharm-community-2024.3.2
+ /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ rm -rf plugins/cwm-plugin plugins/cwm-plugin-projector plugins/marketplace plugins/space
+ find bin -type f -name '*.py' -exec sed -e 's@/usr/bin/env python.*@/usr/bin/python3@g' -i '{}' ';'
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.2ZUeqP
+ umask 022
+ cd /builddir/build/BUILD
+ '[' /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64 '!=' / ']'
+ rm -rf /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64
++ dirname /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64
+ mkdir -p /builddir/build/BUILDROOT
+ mkdir /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64
+ cd pycharm-community-2024.3.2
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/java/pycharm-community
+ cp -arf ./bin ./jbr ./lib ./plugins ./build.txt ./product-info.json /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/java/pycharm-community/
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/pixmaps
+ install -m 0644 -p bin/pycharm.png /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/pixmaps/pycharm-community.png
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/scalable/apps
+ install -m 0644 -p bin/pycharm.svg /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/scalable/apps/pycharm-community.svg
+ for size in 16 22 24 32 48 64 128 256
+ dest=/builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/16x16/apps
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/16x16/apps
+ rsvg-convert -w 16 -h 16 bin/pycharm.svg -o /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/16x16/apps/pycharm-community.png
+ chmod 0644 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/16x16/apps/pycharm-community.png
+ touch -r bin/pycharm.svg /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/16x16/apps/pycharm-community.png
+ for size in 16 22 24 32 48 64 128 256
+ dest=/builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/22x22/apps
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/22x22/apps
+ rsvg-convert -w 22 -h 22 bin/pycharm.svg -o /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/22x22/apps/pycharm-community.png
+ chmod 0644 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/22x22/apps/pycharm-community.png
+ touch -r bin/pycharm.svg /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/22x22/apps/pycharm-community.png
+ for size in 16 22 24 32 48 64 128 256
+ dest=/builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/24x24/apps
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/24x24/apps
+ rsvg-convert -w 24 -h 24 bin/pycharm.svg -o /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/24x24/apps/pycharm-community.png
+ chmod 0644 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/24x24/apps/pycharm-community.png
+ touch -r bin/pycharm.svg /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/24x24/apps/pycharm-community.png
+ for size in 16 22 24 32 48 64 128 256
+ dest=/builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/32x32/apps
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/32x32/apps
+ rsvg-convert -w 32 -h 32 bin/pycharm.svg -o /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/32x32/apps/pycharm-community.png
+ chmod 0644 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/32x32/apps/pycharm-community.png
+ touch -r bin/pycharm.svg /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/32x32/apps/pycharm-community.png
+ for size in 16 22 24 32 48 64 128 256
+ dest=/builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/48x48/apps
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/48x48/apps
+ rsvg-convert -w 48 -h 48 bin/pycharm.svg -o /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/48x48/apps/pycharm-community.png
+ chmod 0644 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/48x48/apps/pycharm-community.png
+ touch -r bin/pycharm.svg /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/48x48/apps/pycharm-community.png
+ for size in 16 22 24 32 48 64 128 256
+ dest=/builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/64x64/apps
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/64x64/apps
+ rsvg-convert -w 64 -h 64 bin/pycharm.svg -o /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/64x64/apps/pycharm-community.png
+ chmod 0644 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/64x64/apps/pycharm-community.png
+ touch -r bin/pycharm.svg /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/64x64/apps/pycharm-community.png
+ for size in 16 22 24 32 48 64 128 256
+ dest=/builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/128x128/apps
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/128x128/apps
+ rsvg-convert -w 128 -h 128 bin/pycharm.svg -o /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/128x128/apps/pycharm-community.png
+ chmod 0644 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/128x128/apps/pycharm-community.png
+ touch -r bin/pycharm.svg /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/128x128/apps/pycharm-community.png
+ for size in 16 22 24 32 48 64 128 256
+ dest=/builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/256x256/apps
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/256x256/apps
+ rsvg-convert -w 256 -h 256 bin/pycharm.svg -o /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/256x256/apps/pycharm-community.png
+ chmod 0644 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/256x256/apps/pycharm-community.png
+ touch -r bin/pycharm.svg /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/icons/hicolor/256x256/apps/pycharm-community.png
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/appdata
+ install -m 0644 -p /builddir/build/SOURCES/pycharm-community.metainfo.xml /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/appdata/pycharm-community.metainfo.xml
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/bin
+ ln -s /usr/share/java/pycharm-community/bin/pycharm /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/bin/pycharm-community
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/applications
+ install -m 0644 -p /builddir/build/SOURCES/pycharm-community.desktop /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/applications/pycharm-community.desktop
+ install -d /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/mime/packages
+ install -m 0644 -p /builddir/build/SOURCES/pycharm-community.xml /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/mime/packages/pycharm-community.xml
+ tail -n +2 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/java/pycharm-community/plugins/python-ce/helpers/pycodestyle-2.10.0.py
# pycodestyle.py - Check Python source code formatting, according to
# PEP 8
#
# Copyright (C) 2006-2009 Johann C. Rocholl <johann@rocholl.net>
# Copyright (C) 2009-2014 Florent Xicluna <florent.xicluna@gmail.com>
# Copyright (C) 2014-2016 Ian Lee <ianlee1521@gmail.com>
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation files
# (the "Software"), to deal in the Software without restriction,
# including without limitation the rights to use, copy, modify, merge,
# publish, distribute, sublicense, and/or sell copies of the Software,
# and to permit persons to whom the Software is furnished to do so,
# subject to the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
r"""
Check Python source code formatting, according to PEP 8.

For usage and a list of options, try this:
$ python pycodestyle.py -h

This program and its regression test suite live here:
https://github.com/pycqa/pycodestyle

Groups of errors and warnings:
E errors
W warnings
100 indentation
200 whitespace
300 blank lines
400 imports
500 line length
600 deprecation
700 statements
900 syntax error
"""
import bisect
import configparser
import inspect
import io
import keyword
import os
import re
import sys
import time
import tokenize
import warnings
from fnmatch import fnmatch
from functools import lru_cache
from optparse import OptionParser

# this is a performance hack.  see https://bugs.python.org/issue43014
if (
        sys.version_info < (3, 10) and
        callable(getattr(tokenize, '_compile', None))
):  # pragma: no cover (<py310)
    tokenize._compile = lru_cache()(tokenize._compile)  # type: ignore

__version__ = '2.10.0'  # patched PY-37054

DEFAULT_EXCLUDE = '.svn,CVS,.bzr,.hg,.git,__pycache__,.tox'
DEFAULT_IGNORE = 'E121,E123,E126,E226,E24,E704,W503,W504'
try:
    if sys.platform == 'win32':
        USER_CONFIG = os.path.expanduser(r'~\.pycodestyle')
    else:
        USER_CONFIG = os.path.join(
            os.getenv('XDG_CONFIG_HOME') or os.path.expanduser('~/.config'),
            'pycodestyle'
        )
except ImportError:
    USER_CONFIG = None

PROJECT_CONFIG = ('setup.cfg', 'tox.ini')
TESTSUITE_PATH = os.path.join(os.path.dirname(__file__), 'testsuite')
MAX_LINE_LENGTH = 79
# Number of blank lines between various code parts.
BLANK_LINES_CONFIG = {
    # Top level class and function.
    'top_level': 2,
    # Methods and nested class and function.
    'method': 1,
}
MAX_DOC_LENGTH = 72
INDENT_SIZE = 4
REPORT_FORMAT = {
    'default': '%(path)s:%(row)d:%(col)d: %(code)s %(text)s',
    'pylint': '%(path)s:%(row)d: [%(code)s] %(text)s',
}

PyCF_ONLY_AST = 1024
SINGLETONS = frozenset(['False', 'None', 'True'])
KEYWORDS = frozenset(keyword.kwlist + ['print', 'async']) - SINGLETONS
UNARY_OPERATORS = frozenset(['>>', '**', '*', '+', '-'])
ARITHMETIC_OP = frozenset(['**', '*', '/', '//', '+', '-', '@'])
WS_OPTIONAL_OPERATORS = ARITHMETIC_OP.union(['^', '&', '|', '<<', '>>', '%'])
ASSIGNMENT_EXPRESSION_OP = [':='] if sys.version_info >= (3, 8) else []
WS_NEEDED_OPERATORS = frozenset([
    '**=', '*=', '/=', '//=', '+=', '-=', '!=', '<>', '<', '>',
    '%=', '^=', '&=', '|=', '==', '<=', '>=', '<<=', '>>=', '=',
    'and', 'in', 'is', 'or', '->'] +
    ASSIGNMENT_EXPRESSION_OP)
WHITESPACE = frozenset(' \t\xa0')
NEWLINE = frozenset([tokenize.NL, tokenize.NEWLINE])
SKIP_TOKENS = NEWLINE.union([tokenize.INDENT, tokenize.DEDENT])
# ERRORTOKEN is triggered by backticks in Python 3
SKIP_COMMENTS = SKIP_TOKENS.union([tokenize.COMMENT, tokenize.ERRORTOKEN])
BENCHMARK_KEYS = ['directories', 'files', 'logical lines', 'physical lines']

INDENT_REGEX = re.compile(r'([ \t]*)')
ERRORCODE_REGEX = re.compile(r'\b[A-Z]\d{3}\b')
DOCSTRING_REGEX = re.compile(r'u?r?["\']')
EXTRANEOUS_WHITESPACE_REGEX = re.compile(r'[\[({][ \t]|[ \t][\]}),;:](?!=)')
WHITESPACE_AFTER_COMMA_REGEX = re.compile(r'[,;:]\s*(?:  |\t)')
COMPARE_SINGLETON_REGEX = re.compile(r'(\bNone|\bFalse|\bTrue)?\s*([=!]=)'
                                     r'\s*(?(1)|(None|False|True))\b')
COMPARE_NEGATIVE_REGEX = re.compile(r'\b(?<!is\s)(not)\s+[^][)(}{ ]+\s+'
                                    r'(in|is)\s')
COMPARE_TYPE_REGEX = re.compile(r'(?:[=!]=|is(?:\s+not)?)\s+type(?:s.\w+Type'
                                r'|\s*\(\s*([^)]*[^ )])\s*\))')
KEYWORD_REGEX = re.compile(r'(\s*)\b(?:%s)\b(\s*)' % r'|'.join(KEYWORDS))
OPERATOR_REGEX = re.compile(r'(?:[^,\s])(\s*)(?:[-+*/|!<=>%&^]+|:=)(\s*)')
LAMBDA_REGEX = re.compile(r'\blambda\b')
HUNK_REGEX = re.compile(r'^@@ -\d+(?:,\d+)? \+(\d+)(?:,(\d+))? @@.*$')
STARTSWITH_DEF_REGEX = re.compile(r'^(async\s+def|def)\b')
STARTSWITH_TOP_LEVEL_REGEX = re.compile(r'^(async\s+def\s+|def\s+|class\s+|@)')
STARTSWITH_INDENT_STATEMENT_REGEX = re.compile(
    r'^\s*({})\b'.format('|'.join(s.replace(' ', r'\s+') for s in (
        'def', 'async def',
        'for', 'async for',
        'if', 'elif', 'else',
        'try', 'except', 'finally',
        'with', 'async with',
        'class',
        'while',
    )))
)
DUNDER_REGEX = re.compile(r"^__([^\s]+)__(?::\s*[a-zA-Z.0-9_\[\]\"]+)? = ")
BLANK_EXCEPT_REGEX = re.compile(r"except\s*:")

_checks = {'physical_line': {}, 'logical_line': {}, 'tree': {}}


def _get_parameters(function):
    return [parameter.name
            for parameter
            in inspect.signature(function).parameters.values()
            if parameter.kind == parameter.POSITIONAL_OR_KEYWORD]


def register_check(check, codes=None):
    """Register a new check object."""
    def _add_check(check, kind, codes, args):
        if check in _checks[kind]:
            _checks[kind][check][0].extend(codes or [])
        else:
            _checks[kind][check] = (codes or [''], args)
    if inspect.isfunction(check):
        args = _get_parameters(check)
        if args and args[0] in ('physical_line', 'logical_line'):
            if codes is None:
                codes = ERRORCODE_REGEX.findall(check.__doc__ or '')
            _add_check(check, args[0], codes, args)
    elif inspect.isclass(check):
        if _get_parameters(check.__init__)[:2] == ['self', 'tree']:
            _add_check(check, 'tree', codes, None)
    return check


########################################################################
# Plugins (check functions) for physical lines
########################################################################

@register_check
def tabs_or_spaces(physical_line, indent_char):
    r"""Never mix tabs and spaces.

    The most popular way of indenting Python is with spaces only.  The
    second-most popular way is with tabs only.  Code indented with a
    mixture of tabs and spaces should be converted to using spaces
    exclusively.  When invoking the Python command line interpreter with
    the -t option, it issues warnings about code that illegally mixes
    tabs and spaces.  When using -tt these warnings become errors.
    These options are highly recommended!

    Okay: if a == 0:\n    a = 1\n    b = 1
    E101: if a == 0:\n        a = 1\n\tb = 1
    """
    indent = INDENT_REGEX.match(physical_line).group(1)
    for offset, char in enumerate(indent):
        if char != indent_char:
            return offset, "E101 indentation contains mixed spaces and tabs"


@register_check
def tabs_obsolete(physical_line):
    r"""On new projects, spaces-only are strongly recommended over tabs.

    Okay: if True:\n    return
    W191: if True:\n\treturn
    """
    indent = INDENT_REGEX.match(physical_line).group(1)
    if '\t' in indent:
        return indent.index('\t'), "W191 indentation contains tabs"


@register_check
def trailing_whitespace(physical_line):
    r"""Trailing whitespace is superfluous.

    The warning returned varies on whether the line itself is blank,
    for easier filtering for those who want to indent their blank lines.

    Okay: spam(1)\n#
    W291: spam(1) \n#
    W293: class Foo(object):\n    \n    bang = 12
    """
    physical_line = physical_line.rstrip('\n')    # chr(10), newline
    physical_line = physical_line.rstrip('\r')    # chr(13), carriage return
    physical_line = physical_line.rstrip('\x0c')  # chr(12), form feed, ^L
    stripped = physical_line.rstrip(' \t\v')
    if physical_line != stripped:
        if stripped:
            return len(stripped), "W291 trailing whitespace"
        else:
            return 0, "W293 blank line contains whitespace"


@register_check
def trailing_blank_lines(physical_line, lines, line_number, total_lines):
    r"""Trailing blank lines are superfluous.

    Okay: spam(1)
    W391: spam(1)\n

    However the last line should end with a new line (warning W292).
    """
    if line_number == total_lines:
        stripped_last_line = physical_line.rstrip('\r\n')
        if physical_line and not stripped_last_line:
            return 0, "W391 blank line at end of file"
        if stripped_last_line == physical_line:
            return len(lines[-1]), "W292 no newline at end of file"


@register_check
def maximum_line_length(physical_line, max_line_length, multiline,
                        line_number, noqa):
    r"""Limit all lines to a maximum of 79 characters.

    There are still many devices around that are limited to 80 character
    lines; plus, limiting windows to 80 characters makes it possible to
    have several windows side-by-side.  The default wrapping on such
    devices looks ugly.  Therefore, please limit all lines to a maximum
    of 79 characters. For flowing long blocks of text (docstrings or
    comments), limiting the length to 72 characters is recommended.

    Reports error E501.
    """
    line = physical_line.rstrip()
    length = len(line)
    if length > max_line_length and not noqa:
        # Special case: ignore long shebang lines.
        if line_number == 1 and line.startswith('#!'):
            return
        # Special case for long URLs in multi-line docstrings or
        # comments, but still report the error when the 72 first chars
        # are whitespaces.
        chunks = line.split()
        if ((len(chunks) == 1 and multiline) or
            (len(chunks) == 2 and chunks[0] == '#')) and \
                len(line) - len(chunks[-1]) < max_line_length - 7:
            return
        if length > max_line_length:
            return (max_line_length, "E501 line too long "
                    "(%d > %d characters)" % (length, max_line_length))


########################################################################
# Plugins (check functions) for logical lines
########################################################################


def _is_one_liner(logical_line, indent_level, lines, line_number):
    if not STARTSWITH_TOP_LEVEL_REGEX.match(logical_line):
        return False

    line_idx = line_number - 1

    if line_idx < 1:
        prev_indent = 0
    else:
        prev_indent = expand_indent(lines[line_idx - 1])

    if prev_indent > indent_level:
        return False

    while line_idx < len(lines):
        line = lines[line_idx].strip()
        if not line.startswith('@') and STARTSWITH_TOP_LEVEL_REGEX.match(line):
            break
        else:
            line_idx += 1
    else:
        return False  # invalid syntax: EOF while searching for def/class

    next_idx = line_idx + 1
    while next_idx < len(lines):
        if lines[next_idx].strip():
            break
        else:
            next_idx += 1
    else:
        return True  # line is last in the file

    return expand_indent(lines[next_idx]) <= indent_level


@register_check
def blank_lines(logical_line, blank_lines, indent_level, line_number,
                blank_before, previous_logical,
                previous_unindented_logical_line, previous_indent_level,
                lines):
    r"""Separate top-level function and class definitions with two blank
    lines.

    Method definitions inside a class are separated by a single blank
    line.

    Extra blank lines may be used (sparingly) to separate groups of
    related functions.  Blank lines may be omitted between a bunch of
    related one-liners (e.g. a set of dummy implementations).

    Use blank lines in functions, sparingly, to indicate logical
    sections.

    Okay: def a():\n    pass\n\n\ndef b():\n    pass
    Okay: def a():\n    pass\n\n\nasync def b():\n    pass
    Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
    Okay: default = 1\nfoo = 1
    Okay: classify = 1\nfoo = 1

    E301: class Foo:\n    b = 0\n    def bar():\n        pass
    E302: def a():\n    pass\n\ndef b(n):\n    pass
    E302: def a():\n    pass\n\nasync def b(n):\n    pass
    E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
    E303: def a():\n\n\n\n    pass
    E304: @decorator\n\ndef a():\n    pass
    E305: def a():\n    pass\na()
    E306: def a():\n    def b():\n        pass\n    def c():\n        pass
    """  # noqa
    top_level_lines = BLANK_LINES_CONFIG['top_level']
    method_lines = BLANK_LINES_CONFIG['method']

    if not previous_logical and blank_before < top_level_lines:
        return  # Don't expect blank lines before the first line
    if previous_logical.startswith('@'):
        if blank_lines:
            yield 0, "E304 blank lines found after function decorator"
    elif (blank_lines > top_level_lines or
            (indent_level and blank_lines == method_lines + 1)
          ):
        yield 0, "E303 too many blank lines (%d)" % blank_lines
    elif STARTSWITH_TOP_LEVEL_REGEX.match(logical_line):
        # allow a group of one-liners
        if (
            _is_one_liner(logical_line, indent_level, lines, line_number) and
            blank_before == 0
        ):
            return
        if indent_level:
            if not (blank_before == method_lines or
                    previous_indent_level < indent_level or
                    DOCSTRING_REGEX.match(previous_logical)
                    ):
                ancestor_level = indent_level
                nested = False
                # Search backwards for a def ancestor or tree root
                # (top level).
                for line in lines[line_number - top_level_lines::-1]:
                    if line.strip() and expand_indent(line) < ancestor_level:
                        ancestor_level = expand_indent(line)
                        nested = STARTSWITH_DEF_REGEX.match(line.lstrip())
                        if nested or ancestor_level == 0:
                            break
                if nested:
                    yield 0, "E306 expected %s blank line before a " \
                        "nested definition, found 0" % (method_lines,)
                else:
                    yield 0, "E301 expected {} blank line, found 0".format(
                        method_lines)
        elif blank_before != top_level_lines:
            yield 0, "E302 expected %s blank lines, found %d" % (
                top_level_lines, blank_before)
    elif (logical_line and
            not indent_level and
            blank_before != top_level_lines and
            previous_unindented_logical_line.startswith(('def ', 'class '))
          ):
        yield 0, "E305 expected %s blank lines after " \
            "class or function definition, found %d" % (
                top_level_lines, blank_before)


@register_check
def extraneous_whitespace(logical_line):
    r"""Avoid extraneous whitespace.

    Avoid extraneous whitespace in these situations:
    - Immediately inside parentheses, brackets or braces.
    - Immediately before a comma, semicolon, or colon.

    Okay: spam(ham[1], {eggs: 2})
    E201: spam( ham[1], {eggs: 2})
    E201: spam(ham[ 1], {eggs: 2})
    E201: spam(ham[1], { eggs: 2})
    E202: spam(ham[1], {eggs: 2} )
    E202: spam(ham[1 ], {eggs: 2})
    E202: spam(ham[1], {eggs: 2 })

    E203: if x == 4: print x, y; x, y = y , x
    E203: if x == 4: print x, y ; x, y = y, x
    E203: if x == 4 : print x, y; x, y = y, x
    """
    line = logical_line
    for match in EXTRANEOUS_WHITESPACE_REGEX.finditer(line):
        text = match.group()
        char = text.strip()
        found = match.start()
        if text[-1].isspace():
            # assert char in '([{'
            yield found + 1, "E201 whitespace after '%s'" % char
        elif line[found - 1] != ',':
            code = ('E202' if char in '}])' else 'E203')  # if char in ',;:'
            yield found, f"{code} whitespace before '{char}'"


@register_check
def whitespace_around_keywords(logical_line):
    r"""Avoid extraneous whitespace around keywords.

    Okay: True and False
    E271: True and  False
    E272: True  and False
    E273: True and\tFalse
    E274: True\tand False
    """
    for match in KEYWORD_REGEX.finditer(logical_line):
        before, after = match.groups()

        if '\t' in before:
            yield match.start(1), "E274 tab before keyword"
        elif len(before) > 1:
            yield match.start(1), "E272 multiple spaces before keyword"

        if '\t' in after:
            yield match.start(2), "E273 tab after keyword"
        elif len(after) > 1:
            yield match.start(2), "E271 multiple spaces after keyword"


@register_check
def missing_whitespace_after_keyword(logical_line, tokens):
    r"""Keywords should be followed by whitespace.

    Okay: from foo import (bar, baz)
    E275: from foo import(bar, baz)
    E275: from importable.module import(bar, baz)
    E275: if(foo): bar
    """
    for tok0, tok1 in zip(tokens, tokens[1:]):
        # This must exclude the True/False/None singletons, which can
        # appear e.g. as "if x is None:", and async/await, which were
        # valid identifier names in old Python versions.
        if (tok0.end == tok1.start and
                keyword.iskeyword(tok0.string) and
                tok0.string not in SINGLETONS and
                tok0.string not in ('async', 'await') and
                not (tok0.string == 'except' and tok1.string == '*') and
                not (tok0.string == 'yield' and tok1.string == ')') and
                tok1.string not in ':\n'):
            yield tok0.end, "E275 missing whitespace after keyword"


@register_check
def missing_whitespace(logical_line):
    r"""Each comma, semicolon or colon should be followed by whitespace.

    Okay: [a, b]
    Okay: (3,)
    Okay: a[3,] = 1
    Okay: a[1:4]
    Okay: a[:4]
    Okay: a[1:]
    Okay: a[1:4:2]
    E231: ['a','b']
    E231: foo(bar,baz)
    E231: [{'a':'b'}]
    """
    line = logical_line
    for index in range(len(line) - 1):
        char = line[index]
        next_char = line[index + 1]
        if char in ',;:' and next_char not in WHITESPACE:
            before = line[:index]
            if char == ':' and before.count('[') > before.count(']') and \
                    before.rfind('{') < before.rfind('['):
                continue  # Slice syntax, no space required
            if char == ',' and next_char in ')]':
                continue  # Allow tuple with only one element: (3,)
            if char == ':' and next_char == '=' and sys.version_info >= (3, 8):
                continue  # Allow assignment expression
            yield index, "E231 missing whitespace after '%s'" % char


@register_check
def indentation(logical_line, previous_logical, indent_char,
                indent_level, previous_indent_level,
                indent_size):
    r"""Use indent_size (PEP8 says 4) spaces per indentation level.

    For really old code that you don't want to mess up, you can continue
    to use 8-space tabs.

    Okay: a = 1
    Okay: if a == 0:\n    a = 1
    E111:   a = 1
    E114:   # a = 1

    Okay: for item in items:\n    pass
    E112: for item in items:\npass
    E115: for item in items:\n# Hi\n    pass

    Okay: a = 1\nb = 2
    E113: a = 1\n    b = 2
    E116: a = 1\n    # b = 2
    """
    c = 0 if logical_line else 3
    tmpl = "E11%d %s" if logical_line else "E11%d %s (comment)"
    if indent_level % indent_size:
        yield 0, tmpl % (
            1 + c,
            "indentation is not a multiple of " + str(indent_size),
        )
    indent_expect = previous_logical.endswith(':')
    if indent_expect and indent_level <= previous_indent_level:
        yield 0, tmpl % (2 + c, "expected an indented block")
    elif not indent_expect and indent_level > previous_indent_level:
        yield 0, tmpl % (3 + c, "unexpected indentation")

    if indent_expect:
        expected_indent_amount = 8 if indent_char == '\t' else 4
        expected_indent_level = previous_indent_level + expected_indent_amount
        if indent_level > expected_indent_level:
            yield 0, tmpl % (7, 'over-indented')


@register_check
def continued_indentation(logical_line, tokens, indent_level, hang_closing,
                          indent_char, indent_size, noqa, verbose):
    r"""Continuation lines indentation.

    Continuation lines should align wrapped elements either vertically
    using Python's implicit line joining inside parentheses, brackets
    and braces, or using a hanging indent.

    When using a hanging indent these considerations should be applied:
    - there should be no arguments on the first line, and
    - further indentation should be used to clearly distinguish itself
      as a continuation line.

    Okay: a = (\n)
    E123: a = (\n    )

    Okay: a = (\n    42)
    E121: a = (\n   42)
    E122: a = (\n42)
    E123: a = (\n    42\n    )
    E124: a = (24,\n     42\n)
    E125: if (\n    b):\n    pass
    E126: a = (\n        42)
    E127: a = (24,\n      42)
    E128: a = (24,\n    42)
    E129: if (a or\n    b):\n    pass
    E131: a = (\n    42\n 24)
    """
    first_row = tokens[0][2][0]
    nrows = 1 + tokens[-1][2][0] - first_row
    if noqa or nrows == 1:
        return

    # indent_next tells us whether the next block is indented; assuming
    # that it is indented by 4 spaces, then we should not allow 4-space
    # indents on the final continuation line; in turn, some other
    # indents are allowed to have an extra 4 spaces.
    indent_next = logical_line.endswith(':')

    row = depth = 0
    valid_hangs = (indent_size,) if indent_char != '\t' \
        else (indent_size, indent_size * 2)
    # remember how many brackets were opened on each line
    parens = [0] * nrows
    # relative indents of physical lines
    rel_indent = [0] * nrows
    # for each depth, collect a list of opening rows
    open_rows = [[0]]
    # for each depth, memorize the hanging indentation
    hangs = [None]
    # visual indents
    indent_chances = {}
    last_indent = tokens[0][2]
    visual_indent = None
    last_token_multiline = False
    # for each depth, memorize the visual indent column
    indent = [last_indent[1]]
    if verbose >= 3:
        print(">>> " + tokens[0][4].rstrip())

    for token_type, text, start, end, line in tokens:

        newline = row < start[0] - first_row
        if newline:
            row = start[0] - first_row
            newline = not last_token_multiline and token_type not in NEWLINE

        if newline:
            # this is the beginning of a continuation line.
            last_indent = start
            if verbose >= 3:
                print("... " + line.rstrip())

            # record the initial indent.
            rel_indent[row] = expand_indent(line) - indent_level

            # identify closing bracket
            close_bracket = (token_type == tokenize.OP and text in ']})')

            # is the indent relative to an opening bracket line?
            for open_row in reversed(open_rows[depth]):
                hang = rel_indent[row] - rel_indent[open_row]
                hanging_indent = hang in valid_hangs
                if hanging_indent:
                    break
            if hangs[depth]:
                hanging_indent = (hang == hangs[depth])
            # is there any chance of visual indent?
            visual_indent = (not close_bracket and hang > 0 and
                             indent_chances.get(start[1]))

            if close_bracket and indent[depth]:
                # closing bracket for visual indent
                if start[1] != indent[depth]:
                    yield (start, "E124 closing bracket does not match "
                           "visual indentation")
            elif close_bracket and not hang:
                # closing bracket matches indentation of opening
                # bracket's line
                if hang_closing:
                    yield start, "E133 closing bracket is missing indentation"
            elif indent[depth] and start[1] < indent[depth]:
                if visual_indent is not True:
                    # visual indent is broken
                    yield (start, "E128 continuation line "
                           "under-indented for visual indent")
            elif hanging_indent or (indent_next and
                                    rel_indent[row] == 2 * indent_size):
                # hanging indent is verified
                if close_bracket and not hang_closing:
                    yield (start, "E123 closing bracket does not match "
                           "indentation of opening bracket's line")
                hangs[depth] = hang
            elif visual_indent is True:
                # visual indent is verified
                indent[depth] = start[1]
            elif visual_indent in (text, str):
                # ignore token lined up with matching one from a
                # previous line
                pass
            else:
                # indent is broken
                if hang <= 0:
                    error = "E122", "missing indentation or outdented"
                elif indent[depth]:
                    error = "E127", "over-indented for visual indent"
                elif not close_bracket and hangs[depth]:
                    error = "E131", "unaligned for hanging indent"
                else:
                    hangs[depth] = hang
                    if hang > indent_size:
                        error = "E126", "over-indented for hanging indent"
                    else:
                        error = "E121", "under-indented for hanging indent"
                yield start, "%s continuation line %s" % error

        # look for visual indenting
        if (parens[row] and
                token_type not in (tokenize.NL, tokenize.COMMENT) and
                not indent[depth]):
            indent[depth] = start[1]
            indent_chances[start[1]] = True
            if verbose >= 4:
                print(f"bracket depth {depth} indent to {start[1]}")
        # deal with implicit string concatenation
        elif (token_type in (tokenize.STRING, tokenize.COMMENT) or
              text in ('u', 'ur', 'b', 'br')):
            indent_chances[start[1]] = str
        # visual indent after assert/raise/with
        elif not row and not depth and text in ["assert", "raise", "with"]:
            indent_chances[end[1] + 1] = True
        # special case for the "if" statement because len("if (") == 4
        elif not indent_chances and not row and not depth and text == 'if':
            indent_chances[end[1] + 1] = True
        elif text == ':' and line[end[1]:].isspace():
            open_rows[depth].append(row)

        # keep track of bracket depth
        if token_type == tokenize.OP:
            if text in '([{':
                depth += 1
                indent.append(0)
                hangs.append(None)
                if len(open_rows) == depth:
                    open_rows.append([])
                open_rows[depth].append(row)
                parens[row] += 1
                if verbose >= 4:
                    print("bracket depth %s seen, col %s, visual min = %s" %
                          (depth, start[1], indent[depth]))
            elif text in ')]}' and depth > 0:
                # parent indents should not be more than this one
                prev_indent = indent.pop() or last_indent[1]
                hangs.pop()
                for d in range(depth):
                    if indent[d] > prev_indent:
                        indent[d] = 0
                for ind in list(indent_chances):
                    if ind >= prev_indent:
                        del indent_chances[ind]
                del open_rows[depth + 1:]
                depth -= 1
                if depth:
                    indent_chances[indent[depth]] = True
                for idx in range(row, -1, -1):
                    if parens[idx]:
                        parens[idx] -= 1
                        break
            assert len(indent) == depth + 1
            if start[1] not in indent_chances:
                # allow lining up tokens
                indent_chances[start[1]] = text

        last_token_multiline = (start[0] != end[0])
        if last_token_multiline:
            rel_indent[end[0] - first_row] = rel_indent[row]

    if indent_next and expand_indent(line) == indent_level + indent_size:
        pos = (start[0], indent[0] + indent_size)
        if visual_indent:
            code = "E129 visually indented line"
        else:
            code = "E125 continuation line"
        yield pos, "%s with same indent as next logical line" % code


@register_check
def whitespace_before_parameters(logical_line, tokens):
    r"""Avoid extraneous whitespace.

    Avoid extraneous whitespace in the following situations:
    - before the open parenthesis that starts the argument list of a
      function call.
    - before the open parenthesis that starts an indexing or slicing.

    Okay: spam(1)
    E211: spam (1)

    Okay: dict['key'] = list[index]
    E211: dict ['key'] = list[index]
    E211: dict['key'] = list [index]
    """
    prev_type, prev_text, __, prev_end, __ = tokens[0]
    for index in range(1, len(tokens)):
        token_type, text, start, end, __ = tokens[index]
        if (
            token_type == tokenize.OP and
            text in '([' and
            start != prev_end and
            (prev_type == tokenize.NAME or prev_text in '}])') and
            # Syntax "class A (B):" is allowed, but avoid it
            (index < 2 or tokens[index - 2][1] != 'class') and
            # Allow "return (a.foo for a in range(5))"
            not keyword.iskeyword(prev_text) and
            # 'match' and 'case' are only soft keywords
            (
                sys.version_info < (3, 9) or
                not keyword.issoftkeyword(prev_text)
            )
        ):
            yield prev_end, "E211 whitespace before '%s'" % text
        prev_type = token_type
        prev_text = text
        prev_end = end


@register_check
def whitespace_around_operator(logical_line):
    r"""Avoid extraneous whitespace around an operator.

    Okay: a = 12 + 3
    E221: a = 4  + 5
    E222: a = 4 +  5
    E223: a = 4\t+ 5
    E224: a = 4 +\t5
    """
    for match in OPERATOR_REGEX.finditer(logical_line):
        before, after = match.groups()

        if '\t' in before:
            yield match.start(1), "E223 tab before operator"
        elif len(before) > 1:
            yield match.start(1), "E221 multiple spaces before operator"

        if '\t' in after:
            yield match.start(2), "E224 tab after operator"
        elif len(after) > 1:
            yield match.start(2), "E222 multiple spaces after operator"


@register_check
def missing_whitespace_around_operator(logical_line, tokens):
    r"""Surround operators with a single space on either side.

    - Always surround these binary operators with a single space on
      either side: assignment (=), augmented assignment (+=, -= etc.),
      comparisons (==, <, >, !=, <=, >=, in, not in, is, is not),
      Booleans (and, or, not).

    - If operators with different priorities are used, consider adding
      whitespace around the operators with the lowest priorities.

    Okay: i = i + 1
    Okay: submitted += 1
    Okay: x = x * 2 - 1
    Okay: hypot2 = x * x + y * y
    Okay: c = (a + b) * (a - b)
    Okay: foo(bar, key='word', *args, **kwargs)
    Okay: alpha[:-i]

    E225: i=i+1
    E225: submitted +=1
    E225: x = x /2 - 1
    E225: z = x **y
    E225: z = 1and 1
    E226: c = (a+b) * (a-b)
    E226: hypot2 = x*x + y*y
    E227: c = a|b
    E228: msg = fmt%(errno, errmsg)
    """
    parens = 0
    need_space = False
    prev_type = tokenize.OP
    prev_text = prev_end = None
    operator_types = (tokenize.OP, tokenize.NAME)
    for token_type, text, start, end, line in tokens:
        if token_type in SKIP_COMMENTS:
            continue
        if text in ('(', 'lambda'):
            parens += 1
        elif text == ')':
            parens -= 1
        if need_space:
            if start != prev_end:
                # Found a (probably) needed space
                if need_space is not True and not need_space[1]:
                    yield (need_space[0],
                           "E225 missing whitespace around operator")
                need_space = False
            elif text == '>' and prev_text in ('<', '-'):
                # Tolerate the "<>" operator, even if running Python 3
                # Deal with Python 3's annotated return value "->"
                pass
            elif (
                    # def f(a, /, b):
                    #           ^
                    # def f(a, b, /):
                    #              ^
                    # f = lambda a, /:
                    #                ^
                    prev_text == '/' and text in {',', ')', ':'} or
                    # def f(a, b, /):
                    #               ^
                    prev_text == ')' and text == ':'
            ):
                # Tolerate the "/" operator in function definition
                # For more info see PEP570
                pass
            else:
                if need_space is True or need_space[1]:
                    # A needed trailing space was not found
                    yield prev_end, "E225 missing whitespace around operator"
                elif prev_text != '**':
                    code, optype = 'E226', 'arithmetic'
                    if prev_text == '%':
                        code, optype = 'E228', 'modulo'
                    elif prev_text not in ARITHMETIC_OP:
                        code, optype = 'E227', 'bitwise or shift'
                    yield (need_space[0], "%s missing whitespace "
                           "around %s operator" % (code, optype))
                need_space = False
        elif token_type in operator_types and prev_end is not None:
            if text == '=' and parens:
                # Allow keyword args or defaults: foo(bar=None).
                pass
            elif text in WS_NEEDED_OPERATORS:
                need_space = True
            elif text in UNARY_OPERATORS:
                # Check if the operator is used as a binary operator
                # Allow unary operators: -123, -x, +1.
                # Allow argument unpacking: foo(*args, **kwargs).
                if prev_type == tokenize.OP and prev_text in '}])' or (
                    prev_type != tokenize.OP and
                    prev_text not in KEYWORDS and (
                        sys.version_info < (3, 9) or
                        not keyword.issoftkeyword(prev_text)
                    )
                ):
                    need_space = None
            elif text in WS_OPTIONAL_OPERATORS:
                need_space = None

            if need_space is None:
                # Surrounding space is optional, but ensure that
                # trailing space matches opening space
                need_space = (prev_end, start != prev_end)
            elif need_space and start == prev_end:
                # A needed opening space was not found
                yield prev_end, "E225 missing whitespace around operator"
                need_space = False
        prev_type = token_type
        prev_text = text
        prev_end = end


@register_check
def whitespace_around_comma(logical_line):
    r"""Avoid extraneous whitespace after a comma or a colon.

    Note: these checks are disabled by default

    Okay: a = (1, 2)
    E241: a = (1,  2)
    E242: a = (1,\t2)
    """
    line = logical_line
    for m in WHITESPACE_AFTER_COMMA_REGEX.finditer(line):
        found = m.start() + 1
        if '\t' in m.group():
            yield found, "E242 tab after '%s'" % m.group()[0]
        else:
            yield found, "E241 multiple spaces after '%s'" % m.group()[0]


@register_check
def whitespace_around_named_parameter_equals(logical_line, tokens):
    r"""Don't use spaces around the '=' sign in function arguments.

    Don't use spaces around the '=' sign when used to indicate a
    keyword argument or a default parameter value, except when
    using a type annotation.

    Okay: def complex(real, imag=0.0):
    Okay: return magic(r=real, i=imag)
    Okay: boolean(a == b)
    Okay: boolean(a != b)
    Okay: boolean(a <= b)
    Okay: boolean(a >= b)
    Okay: def foo(arg: int = 42):
    Okay: async def foo(arg: int = 42):

    E251: def complex(real, imag = 0.0):
    E251: return magic(r = real, i = imag)
    E252: def complex(real, image: float=0.0):
    """
    parens = 0
    no_space = False
    require_space = False
    prev_end = None
    annotated_func_arg = False
    in_def = bool(STARTSWITH_DEF_REGEX.match(logical_line))

    message = "E251 unexpected spaces around keyword / parameter equals"
    missing_message = "E252 missing whitespace around parameter equals"

    for token_type, text, start, end, line in tokens:
        if token_type == tokenize.NL:
            continue
        if no_space:
            no_space = False
            if start != prev_end:
                yield (prev_end, message)
        if require_space:
            require_space = False
            if start == prev_end:
                yield (prev_end, missing_message)
        if token_type == tokenize.OP:
            if text in '([':
                parens += 1
            elif text in ')]':
                parens -= 1
            elif in_def and text == ':' and parens == 1:
                annotated_func_arg = True
            elif parens == 1 and text == ',':
                annotated_func_arg = False
            elif parens and text == '=':
                if annotated_func_arg and parens == 1:
                    require_space = True
                    if start == prev_end:
                        yield (prev_end, missing_message)
                else:
                    no_space = True
                    if start != prev_end:
                        yield (prev_end, message)
            if not parens:
                annotated_func_arg = False

        prev_end = end


@register_check
def whitespace_before_comment(logical_line, tokens):
    """Separate inline comments by at least two spaces.

    An inline comment is a comment on the same line as a statement.
    Inline comments should be separated by at least two spaces from the
    statement. They should start with a # and a single space.

    Each line of a block comment starts with a # and one or multiple
    spaces as there can be indented text inside the comment.

    Okay: x = x + 1  # Increment x
    Okay: x = x + 1    # Increment x
    Okay: # Block comments:
    Okay: #  - Block comment list
    Okay: # \xa0- Block comment list
    E261: x = x + 1 # Increment x
    E262: x = x + 1  #Increment x
    E262: x = x + 1  #  Increment x
    E262: x = x + 1  # \xa0Increment x
    E265: #Block comment
    E266: ### Block comment
    """
    prev_end = (0, 0)
    for token_type, text, start, end, line in tokens:
        if token_type == tokenize.COMMENT:
            inline_comment = line[:start[1]].strip()
            if inline_comment:
                if prev_end[0] == start[0] and start[1] < prev_end[1] + 2:
                    yield (prev_end,
                           "E261 at least two spaces before inline comment")
            symbol, sp, comment = text.partition(' ')
            bad_prefix = symbol not in '#:' and (symbol.lstrip('#')[:1] or '#')
            if inline_comment:
                if bad_prefix or comment[:1] in WHITESPACE:
                    yield start, "E262 inline comment should start with '# '"
            elif bad_prefix and (bad_prefix != '!' or start[0] > 1):
                if bad_prefix != '#':
                    yield start, "E265 block comment should start with '# '"
                elif comment:
                    yield start, "E266 too many leading '#' for block comment"
        elif token_type != tokenize.NL:
            prev_end = end


@register_check
def imports_on_separate_lines(logical_line):
    r"""Place imports on separate lines.

    Okay: import os\nimport sys
    E401: import sys, os

    Okay: from subprocess import Popen, PIPE
    Okay: from myclas import MyClass
    Okay: from foo.bar.yourclass import YourClass
    Okay: import myclass
    Okay: import foo.bar.yourclass
    """
    line = logical_line
    if line.startswith('import '):
        found = line.find(',')
        if -1 < found and ';' not in line[:found]:
            yield found, "E401 multiple imports on one line"


@register_check
def module_imports_on_top_of_file(
        logical_line, indent_level, checker_state, noqa):
    r"""Place imports at the top of the file.

    Always put imports at the top of the file, just after any module
    comments and docstrings, and before module globals and constants.

    Okay: import os
    Okay: # this is a comment\nimport os
    Okay: '''this is a module docstring'''\nimport os
    Okay: r'''this is a module docstring'''\nimport os
    Okay:
    try:\n\timport x\nexcept ImportError:\n\tpass\nelse:\n\tpass\nimport y
    Okay:
    try:\n\timport x\nexcept ImportError:\n\tpass\nfinally:\n\tpass\nimport y
    E402: a=1\nimport os
    E402: 'One string'\n"Two string"\nimport os
    E402: a=1\nfrom sys import x

    Okay: if x:\n    import os
    """  # noqa
    def is_string_literal(line):
        if line[0] in 'uUbB':
            line = line[1:]
        if line and line[0] in 'rR':
            line = line[1:]
        return line and (line[0] == '"' or line[0] == "'")

    allowed_keywords = (
        'try', 'except', 'else', 'finally', 'with', 'if', 'elif')

    if indent_level:  # Allow imports in conditional statement/function
        return
    if not logical_line:  # Allow empty lines or comments
        return
    if noqa:
        return
    line = logical_line
    if line.startswith('import ') or line.startswith('from '):
        if checker_state.get('seen_non_imports', False):
            yield 0, "E402 module level import not at top of file"
    elif re.match(DUNDER_REGEX, line):
        return
    elif any(line.startswith(kw) for kw in allowed_keywords):
        # Allow certain keywords intermixed with imports in order to
        # support conditional or filtered importing
        return
    elif is_string_literal(line):
        # The first literal is a docstring, allow it. Otherwise, report
        # error.
        if checker_state.get('seen_docstring', False):
            checker_state['seen_non_imports'] = True
        else:
            checker_state['seen_docstring'] = True
    else:
        checker_state['seen_non_imports'] = True


@register_check
def compound_statements(logical_line):
    r"""Compound statements (on the same line) are generally
    discouraged.

    While sometimes it's okay to put an if/for/while with a small body
    on the same line, never do this for multi-clause statements.
    Also avoid folding such long lines!

    Always use a def statement instead of an assignment statement that
    binds a lambda expression directly to a name.

    Okay: if foo == 'blah':\n    do_blah_thing()
    Okay: do_one()
    Okay: do_two()
    Okay: do_three()

    E701: if foo == 'blah': do_blah_thing()
    E701: for x in lst: total += x
    E701: while t < 10: t = delay()
    E701: if foo == 'blah': do_blah_thing()
    E701: else: do_non_blah_thing()
    E701: try: something()
    E701: finally: cleanup()
    E701: if foo == 'blah': one(); two(); three()
    E702: do_one(); do_two(); do_three()
    E703: do_four();  # useless semicolon
    E704: def f(x): return 2*x
    E731: f = lambda x: 2*x
    """
    line = logical_line
    last_char = len(line) - 1
    found = line.find(':')
    prev_found = 0
    counts = {char: 0 for char in '{}[]()'}
    while -1 < found < last_char:
        update_counts(line[prev_found:found], counts)
        if ((counts['{'] <= counts['}'] and   # {'a': 1} (dict)
             counts['['] <= counts[']'] and   # [1:2] (slice)
             counts['('] <= counts[')']) and  # (annotation)
            not (sys.version_info >= (3, 8) and
                 line[found + 1] == '=')):  # assignment expression
            lambda_kw = LAMBDA_REGEX.search(line, 0, found)
            if lambda_kw:
                before = line[:lambda_kw.start()].rstrip()
                if before[-1:] == '=' and before[:-1].strip().isidentifier():
                    yield 0, ("E731 do not assign a lambda expression, use a "
                              "def")
                break
            if STARTSWITH_DEF_REGEX.match(line):
                yield 0, "E704 multiple statements on one line (def)"
            elif STARTSWITH_INDENT_STATEMENT_REGEX.match(line):
                yield found, "E701 multiple statements on one line (colon)"
        prev_found = found
        found = line.find(':', found + 1)
    found = line.find(';')
    while -1 < found:
        if found < last_char:
            yield found, "E702 multiple statements on one line (semicolon)"
        else:
            yield found, "E703 statement ends with a semicolon"
        found = line.find(';', found + 1)


@register_check
def explicit_line_join(logical_line, tokens):
    r"""Avoid explicit line join between brackets.

    The preferred way of wrapping long lines is by using Python's
    implied line continuation inside parentheses, brackets and braces.
    Long lines can be broken over multiple lines by wrapping expressions
    in parentheses.  These should be used in preference to using a
    backslash for line continuation.

    E502: aaa = [123, \\n       123]
    E502: aaa = ("bbb " \\n       "ccc")

    Okay: aaa = [123,\n       123]
    Okay: aaa = ("bbb "\n       "ccc")
    Okay: aaa = "bbb " \\n    "ccc"
    Okay: aaa = 123  # \\
    """
    prev_start = prev_end = parens = 0
    comment = False
    backslash = None
    for token_type, text, start, end, line in tokens:
        if token_type == tokenize.COMMENT:
            comment = True
        if start[0] != prev_start and parens and backslash and not comment:
            yield backslash, "E502 the backslash is redundant between brackets"
        if end[0] != prev_end:
            if line.rstrip('\r\n').endswith('\\'):
                backslash = (end[0], len(line.splitlines()[-1]) - 1)
            else:
                backslash = None
            prev_start = prev_end = end[0]
        else:
            prev_start = start[0]
        if token_type == tokenize.OP:
            if text in '([{':
                parens += 1
            elif text in ')]}':
                parens -= 1


# The % character is strictly speaking a binary operator, but the
# common usage seems to be to put it next to the format parameters,
# after a line break.
_SYMBOLIC_OPS = frozenset("()[]{},:.;@=%~") | frozenset(("...",))


def _is_binary_operator(token_type, text):
    return (
        token_type == tokenize.OP or
        text in {'and', 'or'}
    ) and (
        text not in _SYMBOLIC_OPS
    )


def _break_around_binary_operators(tokens):
    """Private function to reduce duplication.

    This factors out the shared details between
    :func:`break_before_binary_operator` and
    :func:`break_after_binary_operator`.
    """
    line_break = False
    unary_context = True
    # Previous non-newline token types and text
    previous_token_type = None
    previous_text = None
    for token_type, text, start, end, line in tokens:
        if token_type == tokenize.COMMENT:
            continue
        if ('\n' in text or '\r' in text) and token_type != tokenize.STRING:
            line_break = True
        else:
            yield (token_type, text, previous_token_type, previous_text,
                   line_break, unary_context, start)
            unary_context = text in '([{,;'
            line_break = False
            previous_token_type = token_type
            previous_text = text


@register_check
def break_before_binary_operator(logical_line, tokens):
    r"""
    Avoid breaks before binary operators.

    The preferred place to break around a binary operator is after the
    operator, not before it.

    W503: (width == 0\n + height == 0)
    W503: (width == 0\n and height == 0)
    W503: var = (1\n       & ~2)
    W503: var = (1\n       / -2)
    W503: var = (1\n       + -1\n       + -2)

    Okay: foo(\n    -x)
    Okay: foo(x\n    [])
    Okay: x = '''\n''' + ''
    Okay: foo(x,\n    -y)
    Okay: foo(x,  # comment\n    -y)
    """
    for context in _break_around_binary_operators(tokens):
        (token_type, text, previous_token_type, previous_text,
         line_break, unary_context, start) = context
        if (_is_binary_operator(token_type, text) and line_break and
                not unary_context and
                not _is_binary_operator(previous_token_type,
                                        previous_text)):
            yield start, "W503 line break before binary operator"


@register_check
def break_after_binary_operator(logical_line, tokens):
    r"""
    Avoid breaks after binary operators.

    The preferred place to break around a binary operator is before the
    operator, not after it.

    W504: (width == 0 +\n height == 0)
    W504: (width == 0 and\n height == 0)
    W504: var = (1 &\n       ~2)

    Okay: foo(\n    -x)
    Okay: foo(x\n    [])
    Okay: x = '''\n''' + ''
    Okay: x = '' + '''\n'''
    Okay: foo(x,\n    -y)
    Okay: foo(x,  # comment\n    -y)

    The following should be W504 but unary_context is tricky with these
    Okay: var = (1 /\n       -2)
    Okay: var = (1 +\n       -1 +\n       -2)
    """
    prev_start = None
    for context in _break_around_binary_operators(tokens):
        (token_type, text, previous_token_type, previous_text,
         line_break, unary_context, start) = context
        if (_is_binary_operator(previous_token_type, previous_text) and
                line_break and
                not unary_context and
                not _is_binary_operator(token_type, text)):
            yield prev_start, "W504 line break after binary operator"
        prev_start = start


@register_check
def comparison_to_singleton(logical_line, noqa):
    r"""Comparison to singletons should use "is" or "is not".

    Comparisons to singletons like None should always be done
    with "is" or "is not", never the equality operators.

    Okay: if arg is not None:
    E711: if arg != None:
    E711: if None == arg:
    E712: if arg == True:
    E712: if False == arg:

    Also, beware of writing if x when you really mean if x is not None
    -- e.g. when testing whether a variable or argument that defaults to
    None was set to some other value.  The other value might have a type
    (such as a container) that could be false in a boolean context!
    """
    if noqa:
        return

    for match in COMPARE_SINGLETON_REGEX.finditer(logical_line):
        singleton = match.group(1) or match.group(3)
        same = (match.group(2) == '==')

        msg = "'if cond is %s:'" % (('' if same else 'not ') + singleton)
        if singleton in ('None',):
            code = 'E711'
        else:
            code = 'E712'
            nonzero = ((singleton == 'True' and same) or
                       (singleton == 'False' and not same))
            msg += " or 'if %scond:'" % ('' if nonzero else 'not ')
        yield match.start(2), ("%s comparison to %s should be %s" %
                               (code, singleton, msg))


@register_check
def comparison_negative(logical_line):
    r"""Negative comparison should be done using "not in" and "is not".

    Okay: if x not in y:\n    pass
    Okay: assert (X in Y or X is Z)
    Okay: if not (X in Y):\n    pass
    Okay: zz = x is not y
    E713: Z = not X in Y
    E713: if not X.B in Y:\n    pass
    E714: if not X is Y:\n    pass
    E714: Z = not X.B is Y
    """
    match = COMPARE_NEGATIVE_REGEX.search(logical_line)
    if match:
        pos = match.start(1)
        if match.group(2) == 'in':
            yield pos, "E713 test for membership should be 'not in'"
        else:
            yield pos, "E714 test for object identity should be 'is not'"


@register_check
def comparison_type(logical_line, noqa):
    r"""Object type comparisons should always use isinstance().

    Do not compare types directly.

    Okay: if isinstance(obj, int):
    E721: if type(obj) is type(1):

    When checking if an object is a string, keep in mind that it might
    be a unicode string too! In Python 2.3, str and unicode have a
    common base class, basestring, so you can do:

    Okay: if isinstance(obj, basestring):
    Okay: if type(a1) is type(b1):
    """
    match = COMPARE_TYPE_REGEX.search(logical_line)
    if match and not noqa:
        inst = match.group(1)
        if inst and inst.isidentifier() and inst not in SINGLETONS:
            return  # Allow comparison for types which are not obvious
        yield match.start(), "E721 do not compare types, use 'isinstance()'"


@register_check
def bare_except(logical_line, noqa):
    r"""When catching exceptions, mention specific exceptions when
    possible.

    Okay: except Exception:
    Okay: except BaseException:
    E722: except:
    """
    if noqa:
        return

    match = BLANK_EXCEPT_REGEX.match(logical_line)
    if match:
        yield match.start(), "E722 do not use bare 'except'"


@register_check
def ambiguous_identifier(logical_line, tokens):
    r"""Never use the characters 'l', 'O', or 'I' as variable names.

    In some fonts, these characters are indistinguishable from the
    numerals one and zero. When tempted to use 'l', use 'L' instead.

    Okay: L = 0
    Okay: o = 123
    Okay: i = 42
    E741: l = 0
    E741: O = 123
    E741: I = 42

    Variables can be bound in several other contexts, including class
    and function definitions, lambda functions, 'global' and 'nonlocal'
    statements, exception handlers, and 'with' and 'for' statements.
    In addition, we have a special handling for function parameters.

    Okay: except AttributeError as o:
    Okay: with lock as L:
    Okay: foo(l=12)
    Okay: foo(l=I)
    Okay: for a in foo(l=12):
    Okay: lambda arg: arg * l
    Okay: lambda a=l[I:5]: None
    Okay: lambda x=a.I: None
    Okay: if l >= 12:
    E741: except AttributeError as O:
    E741: with lock as l:
    E741: global I
    E741: nonlocal l
    E741: def foo(l):
    E741: def foo(l=12):
    E741: l = foo(l=12)
    E741: for l in range(10):
    E741: [l for l in lines if l]
    E741: lambda l: None
    E741: lambda a=x[1:5], l: None
    E741: lambda **l:
    E741: def f(**l):
    E742: class I(object):
    E743: def l(x):
    """
    func_depth = None  # set to brace depth if 'def' or 'lambda' is found
    seen_colon = False  # set to true if we're done with function parameters
    brace_depth = 0
    idents_to_avoid = ('l', 'O', 'I')
    prev_type, prev_text, prev_start, prev_end, __ = tokens[0]
    for index in range(1, len(tokens)):
        token_type, text, start, end, line = tokens[index]
        ident = pos = None
        # find function definitions
        if prev_text in {'def', 'lambda'}:
            func_depth = brace_depth
            seen_colon = False
        elif (
                func_depth is not None and
                text == ':' and
                brace_depth == func_depth
        ):
            seen_colon = True
        # update parameter parentheses level
        if text in '([{':
            brace_depth += 1
        elif text in ')]}':
            brace_depth -= 1
        # identifiers on the lhs of an assignment operator
        if text == ':=' or (text == '=' and brace_depth == 0):
            if prev_text in idents_to_avoid:
                ident = prev_text
                pos = prev_start
        # identifiers bound to values with 'as', 'for',
        # 'global', or 'nonlocal'
        if prev_text in ('as', 'for', 'global', 'nonlocal'):
            if text in idents_to_avoid:
                ident = text
                pos = start
        # function / lambda parameter definitions
        if (
                func_depth is not None and
                not seen_colon and
                index < len(tokens) - 1 and tokens[index + 1][1] in ':,=)' and
                prev_text in {'lambda', ',', '*', '**', '('} and
                text in idents_to_avoid
        ):
            ident = text
            pos = start
        if prev_text == 'class':
            if text in idents_to_avoid:
                yield start, "E742 ambiguous class definition '%s'" % text
        if prev_text == 'def':
            if text in idents_to_avoid:
                yield start, "E743 ambiguous function definition '%s'" % text
        if ident:
            yield pos, "E741 ambiguous variable name '%s'" % ident
        prev_text = text
        prev_start = start


@register_check
def python_3000_invalid_escape_sequence(logical_line, tokens, noqa):
    r"""Invalid escape sequences are deprecated in Python 3.6.

    Okay: regex = r'\.png$'
    W605: regex = '\.png$'
    """
    if noqa:
        return

    # https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals
    valid = [
        '\n',
        '\\',
        '\'',
        '"',
        'a',
        'b',
        'f',
        'n',
        'r',
        't',
        'v',
        '0', '1', '2', '3', '4', '5', '6', '7',
        'x',

        # Escape sequences only recognized in string literals
        'N',
        'u',
        'U',
    ]

    for token_type, text, start, end, line in tokens:
        if token_type == tokenize.STRING:
            start_line, start_col = start
            quote = text[-3:] if text[-3:] in ('"""', "'''") else text[-1]
            # Extract string modifiers (e.g. u or r)
            quote_pos = text.index(quote)
            prefix = text[:quote_pos].lower()
            start = quote_pos + len(quote)
            string = text[start:-len(quote)]

            if 'r' not in prefix:
                pos = string.find('\\')
                while pos >= 0:
                    pos += 1
                    if string[pos] not in valid:
                        line = start_line + string.count('\n', 0, pos)
                        if line == start_line:
                            col = start_col + len(prefix) + len(quote) + pos
                        else:
                            col = pos - string.rfind('\n', 0, pos) - 1
                        yield (
                            (line, col - 1),
                            "W605 invalid escape sequence '\\%s'" %
                            string[pos],
                        )
                    pos = string.find('\\', pos + 1)


@register_check
def python_3000_async_await_keywords(logical_line, tokens):
    """'async' and 'await' are reserved keywords starting at Python 3.7.

    W606: async = 42
    W606: await = 42
    Okay: async def read(db):\n    data = await db.fetch('SELECT ...')
    """
    # The Python tokenize library before Python 3.5 recognizes
    # async/await as a NAME token. Therefore, use a state machine to
    # look for the possible async/await constructs as defined by the
    # Python grammar:
    # https://docs.python.org/3/reference/grammar.html

    state = None
    for token_type, text, start, end, line in tokens:
        error = False

        if token_type == tokenize.NL:
            continue

        if state is None:
            if token_type == tokenize.NAME:
                if text == 'async':
                    state = ('async_stmt', start)
                elif text == 'await':
                    state = ('await', start)
                elif (token_type == tokenize.NAME and
                      text in ('def', 'for')):
                    state = ('define', start)

        elif state[0] == 'async_stmt':
            if token_type == tokenize.NAME and text in ('def', 'with', 'for'):
                # One of funcdef, with_stmt, or for_stmt. Return to
                # looking for async/await names.
                state = None
            else:
                error = True
        elif state[0] == 'await':
            if token_type == tokenize.NAME:
                # An await expression. Return to looking for async/await
                # names.
                state = None
            elif token_type == tokenize.OP and text == '(':
                state = None
            else:
                error = True
        elif state[0] == 'define':
            if token_type == tokenize.NAME and text in ('async', 'await'):
                error = True
            else:
                state = None

        if error:
            yield (
                state[1],
                "W606 'async' and 'await' are reserved keywords starting with "
                "Python 3.7",
            )
            state = None

    # Last token
    if state is not None:
        yield (
            state[1],
            "W606 'async' and 'await' are reserved keywords starting with "
            "Python 3.7",
        )


########################################################################
@register_check
def maximum_doc_length(logical_line, max_doc_length, noqa, tokens):
    r"""Limit all doc lines to a maximum of 72 characters.

    For flowing long blocks of text (docstrings or comments), limiting
    the length to 72 characters is recommended.

    Reports warning W505
    """
    if max_doc_length is None or noqa:
        return

    prev_token = None
    skip_lines = set()
    # Skip lines that
    for token_type, text, start, end, line in tokens:
        if token_type not in SKIP_COMMENTS.union([tokenize.STRING]):
            skip_lines.add(line)

    for token_type, text, start, end, line in tokens:
        # Skip lines that aren't pure strings
        if token_type == tokenize.STRING and skip_lines:
            continue
        if token_type in (tokenize.STRING, tokenize.COMMENT):
            # Only check comment-only lines
            if prev_token is None or prev_token in SKIP_TOKENS:
                lines = line.splitlines()
                for line_num, physical_line in enumerate(lines):
                    if start[0] + line_num == 1 and line.startswith('#!'):
                        return
                    length = len(physical_line)
                    chunks = physical_line.split()
                    if token_type == tokenize.COMMENT:
                        if (len(chunks) == 2 and
                                length - len(chunks[-1]) < MAX_DOC_LENGTH):
                            continue
                    if len(chunks) == 1 and line_num + 1 < len(lines):
                        if (len(chunks) == 1 and
                                length - len(chunks[-1]) < MAX_DOC_LENGTH):
                            continue
                    if length > max_doc_length:
                        doc_error = (start[0] + line_num, max_doc_length)
                        yield (doc_error, "W505 doc line too long "
                                          "(%d > %d characters)"
                               % (length, max_doc_length))
        prev_token = token_type


########################################################################
# Helper functions
########################################################################


def readlines(filename):
    """Read the source code."""
    try:
        with tokenize.open(filename) as f:
            return f.readlines()
    except (LookupError, SyntaxError, UnicodeError):
        # Fall back if file encoding is improperly declared
        with open(filename, encoding='latin-1') as f:
            return f.readlines()


def stdin_get_value():
    """Read the value from stdin."""
    return io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8', errors='ignore').read()


noqa = lru_cache(512)(re.compile(r'# no(?:qa|pep8)\b', re.I).search)


def expand_indent(line):
    r"""Return the amount of indentation.

    Tabs are expanded to the next multiple of 8.

    >>> expand_indent('    ')
    4
    >>> expand_indent('\t')
    8
    >>> expand_indent('       \t')
    8
    >>> expand_indent('        \t')
    16
    """
    line = line.rstrip('\n\r')
    if '\t' not in line:
        return len(line) - len(line.lstrip())
    result = 0
    for char in line:
        if char == '\t':
            result = result // 8 * 8 + 8
        elif char == ' ':
            result += 1
        else:
            break
    return result


def mute_string(text):
    """Replace contents with 'xxx' to prevent syntax matching.

    >>> mute_string('"abc"')
    '"xxx"'
    >>> mute_string("'''abc'''")
    "'''xxx'''"
    >>> mute_string("r'abc'")
    "r'xxx'"
    """
    # String modifiers (e.g. u or r)
    start = text.index(text[-1]) + 1
    end = len(text) - 1
    # Triple quotes
    if text[-3:] in ('"""', "'''"):
        start += 2
        end -= 2
    return text[:start] + 'x' * (end - start) + text[end:]


def parse_udiff(diff, patterns=None, parent='.'):
    """Return a dictionary of matching lines."""
    # For each file of the diff, the entry key is the filename,
    # and the value is a set of row numbers to consider.
    rv = {}
    path = nrows = None
    for line in diff.splitlines():
        if nrows:
            if line[:1] != '-':
                nrows -= 1
            continue
        if line[:3] == '@@ ':
            hunk_match = HUNK_REGEX.match(line)
            (row, nrows) = (int(g or '1') for g in hunk_match.groups())
            rv[path].update(range(row, row + nrows))
        elif line[:3] == '+++':
            path = line[4:].split('\t', 1)[0]
            # Git diff will use (i)ndex, (w)ork tree, (c)ommit and
            # (o)bject instead of a/b/c/d as prefixes for patches
            if path[:2] in ('b/', 'w/', 'i/'):
                path = path[2:]
            rv[path] = set()
    return {
        os.path.join(parent, filepath): rows
        for (filepath, rows) in rv.items()
        if rows and filename_match(filepath, patterns)
    }


def normalize_paths(value, parent=os.curdir):
    """Parse a comma-separated list of paths.

    Return a list of absolute paths.
    """
    if not value:
        return []
    if isinstance(value, list):
        return value
    paths = []
    for path in value.split(','):
        path = path.strip()
        if '/' in path:
            path = os.path.abspath(os.path.join(parent, path))
        paths.append(path.rstrip('/'))
    return paths


def filename_match(filename, patterns, default=True):
    """Check if patterns contains a pattern that matches filename.

    If patterns is unspecified, this always returns True.
    """
    if not patterns:
        return default
    return any(fnmatch(filename, pattern) for pattern in patterns)


def update_counts(s, counts):
    r"""Adds one to the counts of each appearance of characters in s,
        for characters in counts"""
    for char in s:
        if char in counts:
            counts[char] += 1


def _is_eol_token(token):
    return token[0] in NEWLINE or token[4][token[3][1]:].lstrip() == '\\\n'


########################################################################
# Framework to run all checks
########################################################################


class Checker:
    """Load a Python source file, tokenize it, check coding style."""

    def __init__(self, filename=None, lines=None,
                 options=None, report=None, **kwargs):
        if options is None:
            options = StyleGuide(kwargs).options
        else:
            assert not kwargs
        self._io_error = None
        self._physical_checks = options.physical_checks
        self._logical_checks = options.logical_checks
        self._ast_checks = options.ast_checks
        self.max_line_length = options.max_line_length
        self.max_doc_length = options.max_doc_length
        self.indent_size = options.indent_size
        self.multiline = False  # in a multiline string?
        self.hang_closing = options.hang_closing
        self.indent_size = options.indent_size
        self.verbose = options.verbose
        self.filename = filename
        # Dictionary where a checker can store its custom state.
        self._checker_states = {}
        if filename is None:
            self.filename = 'stdin'
            self.lines = lines or []
        elif filename == '-':
            self.filename = 'stdin'
            self.lines = stdin_get_value().splitlines(True)
        elif lines is None:
            try:
                self.lines = readlines(filename)
            except OSError:
                (exc_type, exc) = sys.exc_info()[:2]
                self._io_error = f'{exc_type.__name__}: {exc}'
                self.lines = []
        else:
            self.lines = lines
        if self.lines:
            ord0 = ord(self.lines[0][0])
            if ord0 in (0xef, 0xfeff):  # Strip the UTF-8 BOM
                if ord0 == 0xfeff:
                    self.lines[0] = self.lines[0][1:]
                elif self.lines[0][:3] == '\xef\xbb\xbf':
                    self.lines[0] = self.lines[0][3:]
        self.report = report or options.report
        self.report_error = self.report.error
        self.noqa = False

    def report_invalid_syntax(self):
        """Check if the syntax is valid."""
        (exc_type, exc) = sys.exc_info()[:2]
        if len(exc.args) > 1:
            offset = exc.args[1]
            if len(offset) > 2:
                offset = offset[1:3]
        else:
            offset = (1, 0)
        self.report_error(offset[0], offset[1] or 0,
                          f'E901 {exc_type.__name__}: {exc.args[0]}',
                          self.report_invalid_syntax)

    def readline(self):
        """Get the next line from the input buffer."""
        if self.line_number >= self.total_lines:
            return ''
        line = self.lines[self.line_number]
        self.line_number += 1
        if self.indent_char is None and line[:1] in WHITESPACE:
            self.indent_char = line[0]
        return line

    def run_check(self, check, argument_names):
        """Run a check plugin."""
        arguments = []
        for name in argument_names:
            arguments.append(getattr(self, name))
        return check(*arguments)

    def init_checker_state(self, name, argument_names):
        """Prepare custom state for the specific checker plugin."""
        if 'checker_state' in argument_names:
            self.checker_state = self._checker_states.setdefault(name, {})

    def check_physical(self, line):
        """Run all physical checks on a raw input line."""
        self.physical_line = line
        for name, check, argument_names in self._physical_checks:
            self.init_checker_state(name, argument_names)
            result = self.run_check(check, argument_names)
            if result is not None:
                (offset, text) = result
                self.report_error(self.line_number, offset, text, check)
                if text[:4] == 'E101':
                    self.indent_char = line[0]

    def build_tokens_line(self):
        """Build a logical line from tokens."""
        logical = []
        comments = []
        length = 0
        prev_row = prev_col = mapping = None
        for token_type, text, start, end, line in self.tokens:
            if token_type in SKIP_TOKENS:
                continue
            if not mapping:
                mapping = [(0, start)]
            if token_type == tokenize.COMMENT:
                comments.append(text)
                continue
            if token_type == tokenize.STRING:
                text = mute_string(text)
            if prev_row:
                (start_row, start_col) = start
                if prev_row != start_row:    # different row
                    prev_text = self.lines[prev_row - 1][prev_col - 1]
                    if prev_text == ',' or (prev_text not in '{[(' and
                                            text not in '}])'):
                        text = ' ' + text
                elif prev_col != start_col:  # different column
                    text = line[prev_col:start_col] + text
            logical.append(text)
            length += len(text)
            mapping.append((length, end))
            (prev_row, prev_col) = end
        self.logical_line = ''.join(logical)
        self.noqa = comments and noqa(''.join(comments))
        return mapping

    def check_logical(self):
        """Build a line from tokens and run all logical checks on it."""
        self.report.increment_logical_line()
        mapping = self.build_tokens_line()
        if not mapping:
            return

        mapping_offsets = [offset for offset, _ in mapping]
        (start_row, start_col) = mapping[0][1]
        start_line = self.lines[start_row - 1]
        self.indent_level = expand_indent(start_line[:start_col])
        if self.blank_before < self.blank_lines:
            self.blank_before = self.blank_lines
        if self.verbose >= 2:
            print(self.logical_line[:80].rstrip())
        for name, check, argument_names in self._logical_checks:
            if self.verbose >= 4:
                print('   ' + name)
            self.init_checker_state(name, argument_names)
            for offset, text in self.run_check(check, argument_names) or ():
                if not isinstance(offset, tuple):
                    # As mappings are ordered, bisecting is a fast way
                    # to find a given offset in them.
                    token_offset, pos = mapping[bisect.bisect_left(
                        mapping_offsets, offset)]
                    offset = (pos[0], pos[1] + offset - token_offset)
                self.report_error(offset[0], offset[1], text, check)
        if self.logical_line:
            self.previous_indent_level = self.indent_level
            self.previous_logical = self.logical_line
            if not self.indent_level:
                self.previous_unindented_logical_line = self.logical_line
        self.blank_lines = 0
        self.tokens = []

    def check_ast(self):
        """Build the file's AST and run all AST checks."""
        try:
            tree = compile(''.join(self.lines), '', 'exec', PyCF_ONLY_AST)
        except (ValueError, SyntaxError, TypeError):
            return self.report_invalid_syntax()
        for name, cls, __ in self._ast_checks:
            checker = cls(tree, self.filename)
            for lineno, offset, text, check in checker.run():
                if not self.lines or not noqa(self.lines[lineno - 1]):
                    self.report_error(lineno, offset, text, check)

    def generate_tokens(self):
        """Tokenize file, run physical line checks and yield tokens."""
        if self._io_error:
            self.report_error(1, 0, 'E902 %s' % self._io_error, readlines)
        tokengen = tokenize.generate_tokens(self.readline)
        try:
            prev_physical = ''
            for token in tokengen:
                if token[2][0] > self.total_lines:
                    return
                self.noqa = token[4] and noqa(token[4])
                self.maybe_check_physical(token, prev_physical)
                yield token
                prev_physical = token[4]
        except (SyntaxError, tokenize.TokenError):
            self.report_invalid_syntax()

    def maybe_check_physical(self, token, prev_physical):
        """If appropriate for token, check current physical line(s)."""
        # Called after every token, but act only on end of line.

        # a newline token ends a single physical line.
        if _is_eol_token(token):
            # if the file does not end with a newline, the NEWLINE
            # token is inserted by the parser, but it does not contain
            # the previous physical line in `token[4]`
            if token[4] == '':
                self.check_physical(prev_physical)
            else:
                self.check_physical(token[4])
        elif token[0] == tokenize.STRING and '\n' in token[1]:
            # Less obviously, a string that contains newlines is a
            # multiline string, either triple-quoted or with internal
            # newlines backslash-escaped. Check every physical line in
            # the string *except* for the last one: its newline is
            # outside of the multiline string, so we consider it a
            # regular physical line, and will check it like any other
            # physical line.
            #
            # Subtleties:
            # - we don't *completely* ignore the last line; if it
            #   contains the magical "# noqa" comment, we disable all
            #   physical checks for the entire multiline string
            # - have to wind self.line_number back because initially it
            #   points to the last line of the string, and we want
            #   check_physical() to give accurate feedback
            if noqa(token[4]):
                return
            self.multiline = True
            self.line_number = token[2][0]
            _, src, (_, offset), _, _ = token
            src = self.lines[self.line_number - 1][:offset] + src
            for line in src.split('\n')[:-1]:
                self.check_physical(line + '\n')
                self.line_number += 1
            self.multiline = False

    def check_all(self, expected=None, line_offset=0):
        """Run all checks on the input file."""
        self.report.init_file(self.filename, self.lines, expected, line_offset)
        self.total_lines = len(self.lines)
        if self._ast_checks:
            self.check_ast()
        self.line_number = 0
        self.indent_char = None
        self.indent_level = self.previous_indent_level = 0
        self.previous_logical = ''
        self.previous_unindented_logical_line = ''
        self.tokens = []
        self.blank_lines = self.blank_before = 0
        parens = 0
        for token in self.generate_tokens():
            self.tokens.append(token)
            token_type, text = token[0:2]
            if self.verbose >= 3:
                if token[2][0] == token[3][0]:
                    pos = '[{}:{}]'.format(token[2][1] or '', token[3][1])
                else:
                    pos = 'l.%s' % token[3][0]
                print('l.%s\t%s\t%s\t%r' %
                      (token[2][0], pos, tokenize.tok_name[token[0]], text))
            if token_type == tokenize.OP:
                if text in '([{':
                    parens += 1
                elif text in '}])':
                    parens -= 1
            elif not parens:
                if token_type in NEWLINE:
                    if token_type == tokenize.NEWLINE:
                        self.check_logical()
                        self.blank_before = 0
                    elif len(self.tokens) == 1:
                        # The physical line contains only this token.
                        self.blank_lines += 1
                        del self.tokens[0]
                    else:
                        self.check_logical()
        if self.tokens:
            self.check_physical(self.lines[-1])
            self.check_logical()
        return self.report.get_file_results()


class BaseReport:
    """Collect the results of the checks."""

    print_filename = False

    def __init__(self, options):
        self._benchmark_keys = options.benchmark_keys
        self._ignore_code = options.ignore_code
        # Results
        self.elapsed = 0
        self.total_errors = 0
        self.counters = dict.fromkeys(self._benchmark_keys, 0)
        self.messages = {}

    def start(self):
        """Start the timer."""
        self._start_time = time.time()

    def stop(self):
        """Stop the timer."""
        self.elapsed = time.time() - self._start_time

    def init_file(self, filename, lines, expected, line_offset):
        """Signal a new file."""
        self.filename = filename
        self.lines = lines
        self.expected = expected or ()
        self.line_offset = line_offset
        self.file_errors = 0
        self.counters['files'] += 1
        self.counters['physical lines'] += len(lines)

    def increment_logical_line(self):
        """Signal a new logical line."""
        self.counters['logical lines'] += 1

    def error(self, line_number, offset, text, check):
        """Report an error, according to options."""
        code = text[:4]
        if self._ignore_code(code):
            return
        if code in self.counters:
            self.counters[code] += 1
        else:
            self.counters[code] = 1
            self.messages[code] = text[5:]
        # Don't care about expected errors or warnings
        if code in self.expected:
            return
        if self.print_filename and not self.file_errors:
            print(self.filename)
        self.file_errors += 1
        self.total_errors += 1
        return code

    def get_file_results(self):
        """Return the count of errors and warnings for this file."""
        return self.file_errors

    def get_count(self, prefix=''):
        """Return the total count of errors and warnings."""
        return sum(self.counters[key]
                   for key in self.messages if key.startswith(prefix))

    def get_statistics(self, prefix=''):
        """Get statistics for message codes that start with the prefix.

        prefix='' matches all errors and warnings
        prefix='E' matches all errors
        prefix='W' matches all warnings
        prefix='E4' matches all errors that have to do with imports
        """
        return ['%-7s %s %s' % (self.counters[key], key, self.messages[key])
                for key in sorted(self.messages) if key.startswith(prefix)]

    def print_statistics(self, prefix=''):
        """Print overall statistics (number of errors and warnings)."""
        for line in self.get_statistics(prefix):
            print(line)

    def print_benchmark(self):
        """Print benchmark numbers."""
        print('{:<7.2f} {}'.format(self.elapsed, 'seconds elapsed'))
        if self.elapsed:
            for key in self._benchmark_keys:
                print('%-7d %s per second (%d total)' %
                      (self.counters[key] / self.elapsed, key,
                       self.counters[key]))


class FileReport(BaseReport):
    """Collect the results of the checks and print the filenames."""

    print_filename = True


class StandardReport(BaseReport):
    """Collect and print the results of the checks."""

    def __init__(self, options):
        super().__init__(options)
        self._fmt = REPORT_FORMAT.get(options.format.lower(),
                                      options.format)
        self._repeat = options.repeat
        self._show_source = options.show_source
        self._show_pep8 = options.show_pep8

    def init_file(self, filename, lines, expected, line_offset):
        """Signal a new file."""
        self._deferred_print = []
        return super().init_file(
            filename, lines, expected, line_offset)

    def error(self, line_number, offset, text, check):
        """Report an error, according to options."""
        code = super().error(line_number, offset, text, check)
        if code and (self.counters[code] == 1 or self._repeat):
            self._deferred_print.append(
                (line_number, offset, code, text[5:], check.__doc__))
        return code

    def get_file_results(self):
        """Print results and return the overall count for this file."""
        self._deferred_print.sort()
        for line_number, offset, code, text, doc in self._deferred_print:
            print(self._fmt % {
                'path': self.filename,
                'row': self.line_offset + line_number, 'col': offset + 1,
                'code': code, 'text': text,
            })
            if self._show_source:
                if line_number > len(self.lines):
                    line = ''
                else:
                    line = self.lines[line_number - 1]
                print(line.rstrip())
                print(re.sub(r'\S', ' ', line[:offset]) + '^')
            if self._show_pep8 and doc:
                print('    ' + doc.strip())

            # stdout is block buffered when not stdout.isatty().
            # line can be broken where buffer boundary since other
            # processes write to same file.
            # flush() after print() to avoid buffer boundary.
            # Typical buffer size is 8192. line written safely when
            # len(line) < 8192.
            sys.stdout.flush()
        return self.file_errors


class DiffReport(StandardReport):
    """Collect and print the results for the changed lines only."""

    def __init__(self, options):
        super().__init__(options)
        self._selected = options.selected_lines

    def error(self, line_number, offset, text, check):
        if line_number not in self._selected[self.filename]:
            return
        return super().error(line_number, offset, text, check)


class StyleGuide:
    """Initialize a PEP-8 instance with few options."""

    def __init__(self, *args, **kwargs):
        # build options from the command line
        self.checker_class = kwargs.pop('checker_class', Checker)
        parse_argv = kwargs.pop('parse_argv', False)
        config_file = kwargs.pop('config_file', False)
        parser = kwargs.pop('parser', None)
        # build options from dict
        options_dict = dict(*args, **kwargs)
        arglist = None if parse_argv else options_dict.get('paths', None)
        verbose = options_dict.get('verbose', None)
        options, self.paths = process_options(
            arglist, parse_argv, config_file, parser, verbose)
        if options_dict:
            options.__dict__.update(options_dict)
            if 'paths' in options_dict:
                self.paths = options_dict['paths']

        self.runner = self.input_file
        self.options = options

        if not options.reporter:
            options.reporter = BaseReport if options.quiet else StandardReport

        options.select = tuple(options.select or ())
        if not (options.select or options.ignore or
                options.testsuite or options.doctest) and DEFAULT_IGNORE:
            # The default choice: ignore controversial checks
            options.ignore = tuple(DEFAULT_IGNORE.split(','))
        else:
            # Ignore all checks which are not explicitly selected
            options.ignore = ('',) if options.select else tuple(options.ignore)
        options.benchmark_keys = BENCHMARK_KEYS[:]
        options.ignore_code = self.ignore_code
        options.physical_checks = self.get_checks('physical_line')
        options.logical_checks = self.get_checks('logical_line')
        options.ast_checks = self.get_checks('tree')
        self.init_report()

    def init_report(self, reporter=None):
        """Initialize the report instance."""
        self.options.report = (reporter or self.options.reporter)(self.options)
        return self.options.report

    def check_files(self, paths=None):
        """Run all checks on the paths."""
        if paths is None:
            paths = self.paths
        report = self.options.report
        runner = self.runner
        report.start()
        try:
            for path in paths:
                if os.path.isdir(path):
                    self.input_dir(path)
                elif not self.excluded(path):
                    runner(path)
        except KeyboardInterrupt:
            print('... stopped')
        report.stop()
        return report

    def input_file(self, filename, lines=None, expected=None, line_offset=0):
        """Run all checks on a Python source file."""
        if self.options.verbose:
            print('checking %s' % filename)
        fchecker = self.checker_class(
            filename, lines=lines, options=self.options)
        return fchecker.check_all(expected=expected, line_offset=line_offset)

    def input_dir(self, dirname):
        """Check all files in this directory and all subdirectories."""
        dirname = dirname.rstrip('/')
        if self.excluded(dirname):
            return 0
        counters = self.options.report.counters
        verbose = self.options.verbose
        filepatterns = self.options.filename
        runner = self.runner
        for root, dirs, files in os.walk(dirname):
            if verbose:
                print('directory ' + root)
            counters['directories'] += 1
            for subdir in sorted(dirs):
                if self.excluded(subdir, root):
                    dirs.remove(subdir)
            for filename in sorted(files):
                # contain a pattern that matches?
                if (
                    filename_match(filename, filepatterns) and
                    not self.excluded(filename, root)
                ):
                    runner(os.path.join(root, filename))

    def excluded(self, filename, parent=None):
        """Check if the file should be excluded.

        Check if 'options.exclude' contains a pattern matching filename.
        """
        if not self.options.exclude:
            return False
        basename = os.path.basename(filename)
        if filename_match(basename, self.options.exclude):
            return True
        if parent:
            filename = os.path.join(parent, filename)
        filename = os.path.abspath(filename)
        return filename_match(filename, self.options.exclude)

    def ignore_code(self, code):
        """Check if the error code should be ignored.

        If 'options.select' contains a prefix of the error code,
        return False.  Else, if 'options.ignore' contains a prefix of
        the error code, return True.
        """
        if len(code) < 4 and any(s.startswith(code)
                                 for s in self.options.select):
            return False
        return (code.startswith(self.options.ignore) and
                not code.startswith(self.options.select))

    def get_checks(self, argument_name):
        """Get all the checks for this category.

        Find all globally visible functions where the first argument
        name starts with argument_name and which contain selected tests.
        """
        checks = []
        for check, attrs in _checks[argument_name].items():
            (codes, args) = attrs
            if any(not (code and self.ignore_code(code)) for code in codes):
                checks.append((check.__name__, check, args))
        return sorted(checks)


def get_parser(prog='pycodestyle', version=__version__):
    """Create the parser for the program."""
    parser = OptionParser(prog=prog, version=version,
                          usage="%prog [options] input ...")
    parser.config_options = [
        'exclude', 'filename', 'select', 'ignore', 'max-line-length',
        'max-doc-length', 'indent-size', 'hang-closing', 'count', 'format',
        'quiet', 'show-pep8', 'show-source', 'statistics', 'verbose']
    parser.add_option('-v', '--verbose', default=0, action='count',
                      help="print status messages, or debug with -vv")
    parser.add_option('-q', '--quiet', default=0, action='count',
                      help="report only file names, or nothing with -qq")
    parser.add_option('-r', '--repeat', default=True, action='store_true',
                      help="(obsolete) show all occurrences of the same error")
    parser.add_option('--first', action='store_false', dest='repeat',
                      help="show first occurrence of each error")
    parser.add_option('--exclude', metavar='patterns', default=DEFAULT_EXCLUDE,
                      help="exclude files or directories which match these "
                           "comma separated patterns (default: %default)")
    parser.add_option('--filename', metavar='patterns', default='*.py',
                      help="when parsing directories, only check filenames "
                           "matching these comma separated patterns "
                           "(default: %default)")
    parser.add_option('--select', metavar='errors', default='',
                      help="select errors and warnings (e.g. E,W6)")
    parser.add_option('--ignore', metavar='errors', default='',
                      help="skip errors and warnings (e.g. E4,W) "
                           "(default: %s)" % DEFAULT_IGNORE)
    parser.add_option('--show-source', action='store_true',
                      help="show source code for each error")
    parser.add_option('--show-pep8', action='store_true',
                      help="show text of PEP 8 for each error "
                           "(implies --first)")
    parser.add_option('--statistics', action='store_true',
                      help="count errors and warnings")
    parser.add_option('--count', action='store_true',
                      help="print total number of errors and warnings "
                           "to standard error and set exit code to 1 if "
                           "total is not null")
    parser.add_option('--max-line-length', type='int', metavar='n',
                      default=MAX_LINE_LENGTH,
                      help="set maximum allowed line length "
                           "(default: %default)")
    parser.add_option('--max-doc-length', type='int', metavar='n',
                      default=None,
                      help="set maximum allowed doc line length and perform "
                           "these checks (unchecked if not set)")
    parser.add_option('--indent-size', type='int', metavar='n',
                      default=INDENT_SIZE,
                      help="set how many spaces make up an indent "
                           "(default: %default)")
    parser.add_option('--hang-closing', action='store_true',
                      help="hang closing bracket instead of matching "
                           "indentation of opening bracket's line")
    parser.add_option('--format', metavar='format', default='default',
                      help="set the error format [default|pylint|<custom>]")
    parser.add_option('--diff', action='store_true',
                      help="report changes only within line number ranges in "
                           "the unified diff received on STDIN")
    group = parser.add_option_group("Testing Options")
    if os.path.exists(TESTSUITE_PATH):
        group.add_option('--testsuite', metavar='dir',
                         help="run regression tests from dir")
        group.add_option('--doctest', action='store_true',
                         help="run doctest on myself")
    group.add_option('--benchmark', action='store_true',
                     help="measure processing speed")
    return parser


def read_config(options, args, arglist, parser):
    """Read and parse configurations.

    If a config file is specified on the command line with the
    "--config" option, then only it is used for configuration.

    Otherwise, the user configuration (~/.config/pycodestyle) and any
    local configurations in the current directory or above will be
    merged together (in that order) using the read method of
    ConfigParser.
    """
    config = configparser.RawConfigParser()

    cli_conf = options.config

    local_dir = os.curdir

    if USER_CONFIG and os.path.isfile(USER_CONFIG):
        if options.verbose:
            print('user configuration: %s' % USER_CONFIG)
        config.read(USER_CONFIG)

    parent = tail = args and os.path.abspath(os.path.commonprefix(args))
    while tail:
        if config.read(os.path.join(parent, fn) for fn in PROJECT_CONFIG):
            local_dir = parent
            if options.verbose:
                print('local configuration: in %s' % parent)
            break
        (parent, tail) = os.path.split(parent)

    if cli_conf and os.path.isfile(cli_conf):
        if options.verbose:
            print('cli configuration: %s' % cli_conf)
        config.read(cli_conf)

    pycodestyle_section = None
    if config.has_section(parser.prog):
        pycodestyle_section = parser.prog
    elif config.has_section('pep8'):
        pycodestyle_section = 'pep8'  # Deprecated
        warnings.warn('[pep8] section is deprecated. Use [pycodestyle].')

    if pycodestyle_section:
        option_list = {o.dest: o.type or o.action for o in parser.option_list}

        # First, read the default values
        (new_options, __) = parser.parse_args([])

        # Second, parse the configuration
        for opt in config.options(pycodestyle_section):
            if opt.replace('_', '-') not in parser.config_options:
                print("  unknown option '%s' ignored" % opt)
                continue
            if options.verbose > 1:
                print("  {} = {}".format(opt,
                                         config.get(pycodestyle_section, opt)))
            normalized_opt = opt.replace('-', '_')
            opt_type = option_list[normalized_opt]
            if opt_type in ('int', 'count'):
                value = config.getint(pycodestyle_section, opt)
            elif opt_type in ('store_true', 'store_false'):
                value = config.getboolean(pycodestyle_section, opt)
            else:
                value = config.get(pycodestyle_section, opt)
                if normalized_opt == 'exclude':
                    value = normalize_paths(value, local_dir)
            setattr(new_options, normalized_opt, value)

        # Third, overwrite with the command-line options
        (options, __) = parser.parse_args(arglist, values=new_options)
    options.doctest = options.testsuite = False
    return options


def process_options(arglist=None, parse_argv=False, config_file=None,
                    parser=None, verbose=None):
    """Process options passed either via arglist or command line args.

    Passing in the ``config_file`` parameter allows other tools, such as
    flake8 to specify their own options to be processed in pycodestyle.
    """
    if not parser:
        parser = get_parser()
    if not parser.has_option('--config'):
        group = parser.add_option_group("Configuration", description=(
            "The project options are read from the [%s] section of the "
            "tox.ini file or the setup.cfg file located in any parent folder "
            "of the path(s) being processed.  Allowed options are: %s." %
            (parser.prog, ', '.join(parser.config_options))))
        group.add_option('--config', metavar='path', default=config_file,
                         help="user config file location")
    # Don't read the command line if the module is used as a library.
    if not arglist and not parse_argv:
        arglist = []
    # If parse_argv is True and arglist is None, arguments are
    # parsed from the command line (sys.argv)
    (options, args) = parser.parse_args(arglist)
    options.reporter = None

    # If explicitly specified verbosity, override any `-v` CLI flag
    if verbose is not None:
        options.verbose = verbose

    if options.ensure_value('testsuite', False):
        args.append(options.testsuite)
    elif not options.ensure_value('doctest', False):
        if parse_argv and not args:
            if options.diff or any(os.path.exists(name)
                                   for name in PROJECT_CONFIG):
                args = ['.']
            else:
                parser.error('input not specified')
        options = read_config(options, args, arglist, parser)
        options.reporter = parse_argv and options.quiet == 1 and FileReport

    options.filename = _parse_multi_options(options.filename)
    options.exclude = normalize_paths(options.exclude)
    options.select = _parse_multi_options(options.select)
    options.ignore = _parse_multi_options(options.ignore)

    if options.diff:
        options.reporter = DiffReport
        stdin = stdin_get_value()
        options.selected_lines = parse_udiff(stdin, options.filename, args[0])
        args = sorted(options.selected_lines)

    return options, args


def _parse_multi_options(options, split_token=','):
    r"""Split and strip and discard empties.

    Turns the following:

    A,
    B,

    into ["A", "B"]
    """
    if options:
        return [o.strip() for o in options.split(split_token) if o.strip()]
    else:
        return options


def _main():
    """Parse options and run checks on Python source."""
    import signal

    # Handle "Broken pipe" gracefully
    try:
        signal.signal(signal.SIGPIPE, lambda signum, frame: sys.exit(1))
    except AttributeError:
        pass    # not supported on Windows

    style_guide = StyleGuide(parse_argv=True)
    options = style_guide.options

    if options.doctest or options.testsuite:
        from testsuite.support import run_tests
        report = run_tests(style_guide)
    else:
        report = style_guide.check_files()

    if options.statistics:
        report.print_statistics()

    if options.benchmark:
        report.print_benchmark()

    if options.testsuite and not options.quiet:
        report.print_results()

    if report.total_errors:
        if options.count:
            sys.stderr.write(str(report.total_errors) + '\n')
        sys.exit(1)


if __name__ == '__main__':
    _main()
# pycodestyle.py - Check Python source code formatting, according to
# PEP 8
#
# Copyright (C) 2006-2009 Johann C. Rocholl <johann@rocholl.net>
# Copyright (C) 2009-2014 Florent Xicluna <florent.xicluna@gmail.com>
# Copyright (C) 2014-2016 Ian Lee <ianlee1521@gmail.com>
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation files
# (the "Software"), to deal in the Software without restriction,
# including without limitation the rights to use, copy, modify, merge,
# publish, distribute, sublicense, and/or sell copies of the Software,
# and to permit persons to whom the Software is furnished to do so,
# subject to the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
r"""
Check Python source code formatting, according to PEP 8.

For usage and a list of options, try this:
$ python pycodestyle.py -h

This program and its regression test suite live here:
https://github.com/pycqa/pycodestyle

Groups of errors and warnings:
E errors
W warnings
100 indentation
200 whitespace
300 blank lines
400 imports
500 line length
600 deprecation
700 statements
900 syntax error
"""
import bisect
import configparser
import inspect
import io
import keyword
import os
import re
import sys
import time
import tokenize
import warnings
from fnmatch import fnmatch
from functools import lru_cache
from optparse import OptionParser

# this is a performance hack.  see https://bugs.python.org/issue43014
if (
        sys.version_info < (3, 10) and
        callable(getattr(tokenize, '_compile', None))
):  # pragma: no cover (<py310)
    tokenize._compile = lru_cache(tokenize._compile)  # type: ignore

__version__ = '2.11.0'  # patched PY-37054

DEFAULT_EXCLUDE = '.svn,CVS,.bzr,.hg,.git,__pycache__,.tox'
DEFAULT_IGNORE = 'E121,E123,E126,E226,E24,E704,W503,W504'
try:
    if sys.platform == 'win32':  # pragma: win32 cover
        USER_CONFIG = os.path.expanduser(r'~\.pycodestyle')
    else:  # pragma: win32 no cover
        USER_CONFIG = os.path.join(
            os.getenv('XDG_CONFIG_HOME') or os.path.expanduser('~/.config'),
            'pycodestyle'
        )
except ImportError:
    USER_CONFIG = None

PROJECT_CONFIG = ('setup.cfg', 'tox.ini')
MAX_LINE_LENGTH = 79
# Number of blank lines between various code parts.
BLANK_LINES_CONFIG = {
    # Top level class and function.
    'top_level': 2,
    # Methods and nested class and function.
    'method': 1,
}
MAX_DOC_LENGTH = 72
INDENT_SIZE = 4
REPORT_FORMAT = {
    'default': '%(path)s:%(row)d:%(col)d: %(code)s %(text)s',
    'pylint': '%(path)s:%(row)d: [%(code)s] %(text)s',
}

PyCF_ONLY_AST = 1024
SINGLETONS = frozenset(['False', 'None', 'True'])
KEYWORDS = frozenset(keyword.kwlist + ['print']) - SINGLETONS
UNARY_OPERATORS = frozenset(['>>', '**', '*', '+', '-'])
ARITHMETIC_OP = frozenset(['**', '*', '/', '//', '+', '-', '@'])
WS_OPTIONAL_OPERATORS = ARITHMETIC_OP.union(['^', '&', '|', '<<', '>>', '%'])
WS_NEEDED_OPERATORS = frozenset([
    '**=', '*=', '/=', '//=', '+=', '-=', '!=', '<', '>',
    '%=', '^=', '&=', '|=', '==', '<=', '>=', '<<=', '>>=', '=',
    'and', 'in', 'is', 'or', '->', ':='])
WHITESPACE = frozenset(' \t\xa0')
NEWLINE = frozenset([tokenize.NL, tokenize.NEWLINE])
SKIP_TOKENS = NEWLINE.union([tokenize.INDENT, tokenize.DEDENT])
# ERRORTOKEN is triggered by backticks in Python 3
SKIP_COMMENTS = SKIP_TOKENS.union([tokenize.COMMENT, tokenize.ERRORTOKEN])
BENCHMARK_KEYS = ['directories', 'files', 'logical lines', 'physical lines']

INDENT_REGEX = re.compile(r'([ \t]*)')
ERRORCODE_REGEX = re.compile(r'\b[A-Z]\d{3}\b')
DOCSTRING_REGEX = re.compile(r'u?r?["\']')
EXTRANEOUS_WHITESPACE_REGEX = re.compile(r'[\[({][ \t]|[ \t][\]}),;:](?!=)')
WHITESPACE_AFTER_COMMA_REGEX = re.compile(r'[,;:]\s*(?:  |\t)')
COMPARE_SINGLETON_REGEX = re.compile(r'(\bNone|\bFalse|\bTrue)?\s*([=!]=)'
                                     r'\s*(?(1)|(None|False|True))\b')
COMPARE_NEGATIVE_REGEX = re.compile(r'\b(?<!is\s)(not)\s+[^][)(}{ ]+\s+'
                                    r'(in|is)\s')
COMPARE_TYPE_REGEX = re.compile(
    r'[=!]=\s+type(?:\s*\(\s*([^)]*[^ )])\s*\))'
    r'|\btype(?:\s*\(\s*([^)]*[^ )])\s*\))\s+[=!]='
)
KEYWORD_REGEX = re.compile(r'(\s*)\b(?:%s)\b(\s*)' % r'|'.join(KEYWORDS))
OPERATOR_REGEX = re.compile(r'(?:[^,\s])(\s*)(?:[-+*/|!<=>%&^]+|:=)(\s*)')
LAMBDA_REGEX = re.compile(r'\blambda\b')
HUNK_REGEX = re.compile(r'^@@ -\d+(?:,\d+)? \+(\d+)(?:,(\d+))? @@.*$')
STARTSWITH_DEF_REGEX = re.compile(r'^(async\s+def|def)\b')
STARTSWITH_TOP_LEVEL_REGEX = re.compile(r'^(async\s+def\s+|def\s+|class\s+|@)')
STARTSWITH_INDENT_STATEMENT_REGEX = re.compile(
    r'^\s*({})\b'.format('|'.join(s.replace(' ', r'\s+') for s in (
        'def', 'async def',
        'for', 'async for',
        'if', 'elif', 'else',
        'try', 'except', 'finally',
        'with', 'async with',
        'class',
        'while',
    )))
)
DUNDER_REGEX = re.compile(r"^__([^\s]+)__(?::\s*[a-zA-Z.0-9_\[\]\"]+)? = ")
BLANK_EXCEPT_REGEX = re.compile(r"except\s*:")

if sys.version_info >= (3, 12):  # pragma: >=3.12 cover
    FSTRING_START = tokenize.FSTRING_START
    FSTRING_MIDDLE = tokenize.FSTRING_MIDDLE
    FSTRING_END = tokenize.FSTRING_END
else:  # pragma: <3.12 cover
    FSTRING_START = FSTRING_MIDDLE = FSTRING_END = -1

_checks = {'physical_line': {}, 'logical_line': {}, 'tree': {}}


def _get_parameters(function):
    return [parameter.name
            for parameter
            in inspect.signature(function).parameters.values()
            if parameter.kind == parameter.POSITIONAL_OR_KEYWORD]


def register_check(check, codes=None):
    """Register a new check object."""
    def _add_check(check, kind, codes, args):
        if check in _checks[kind]:
            _checks[kind][check][0].extend(codes or [])
        else:
            _checks[kind][check] = (codes or [''], args)
    if inspect.isfunction(check):
        args = _get_parameters(check)
        if args and args[0] in ('physical_line', 'logical_line'):
            if codes is None:
                codes = ERRORCODE_REGEX.findall(check.__doc__ or '')
            _add_check(check, args[0], codes, args)
    elif inspect.isclass(check):
        if _get_parameters(check.__init__)[:2] == ['self', 'tree']:
            _add_check(check, 'tree', codes, None)
    return check


########################################################################
# Plugins (check functions) for physical lines
########################################################################

@register_check
def tabs_or_spaces(physical_line, indent_char):
    r"""Never mix tabs and spaces.

    The most popular way of indenting Python is with spaces only.  The
    second-most popular way is with tabs only.  Code indented with a
    mixture of tabs and spaces should be converted to using spaces
    exclusively.  When invoking the Python command line interpreter with
    the -t option, it issues warnings about code that illegally mixes
    tabs and spaces.  When using -tt these warnings become errors.
    These options are highly recommended!

    Okay: if a == 0:\n    a = 1\n    b = 1
    """
    indent = INDENT_REGEX.match(physical_line).group(1)
    for offset, char in enumerate(indent):
        if char != indent_char:
            return offset, "E101 indentation contains mixed spaces and tabs"


@register_check
def tabs_obsolete(physical_line):
    r"""On new projects, spaces-only are strongly recommended over tabs.

    Okay: if True:\n    return
    W191: if True:\n\treturn
    """
    indent = INDENT_REGEX.match(physical_line).group(1)
    if '\t' in indent:
        return indent.index('\t'), "W191 indentation contains tabs"


@register_check
def trailing_whitespace(physical_line):
    r"""Trailing whitespace is superfluous.

    The warning returned varies on whether the line itself is blank,
    for easier filtering for those who want to indent their blank lines.

    Okay: spam(1)\n#
    W291: spam(1) \n#
    W293: class Foo(object):\n    \n    bang = 12
    """
    physical_line = physical_line.rstrip('\n')    # chr(10), newline
    physical_line = physical_line.rstrip('\r')    # chr(13), carriage return
    physical_line = physical_line.rstrip('\x0c')  # chr(12), form feed, ^L
    stripped = physical_line.rstrip(' \t\v')
    if physical_line != stripped:
        if stripped:
            return len(stripped), "W291 trailing whitespace"
        else:
            return 0, "W293 blank line contains whitespace"


@register_check
def trailing_blank_lines(physical_line, lines, line_number, total_lines):
    r"""Trailing blank lines are superfluous.

    Okay: spam(1)
    W391: spam(1)\n

    However the last line should end with a new line (warning W292).
    """
    if line_number == total_lines:
        stripped_last_line = physical_line.rstrip('\r\n')
        if physical_line and not stripped_last_line:
            return 0, "W391 blank line at end of file"
        if stripped_last_line == physical_line:
            return len(lines[-1]), "W292 no newline at end of file"


@register_check
def maximum_line_length(physical_line, max_line_length, multiline,
                        line_number, noqa):
    r"""Limit all lines to a maximum of 79 characters.

    There are still many devices around that are limited to 80 character
    lines; plus, limiting windows to 80 characters makes it possible to
    have several windows side-by-side.  The default wrapping on such
    devices looks ugly.  Therefore, please limit all lines to a maximum
    of 79 characters. For flowing long blocks of text (docstrings or
    comments), limiting the length to 72 characters is recommended.

    Reports error E501.
    """
    line = physical_line.rstrip()
    length = len(line)
    if length > max_line_length and not noqa:
        # Special case: ignore long shebang lines.
        if line_number == 1 and line.startswith('#!'):
            return
        # Special case for long URLs in multi-line docstrings or
        # comments, but still report the error when the 72 first chars
        # are whitespaces.
        chunks = line.split()
        if ((len(chunks) == 1 and multiline) or
            (len(chunks) == 2 and chunks[0] == '#')) and \
                len(line) - len(chunks[-1]) < max_line_length - 7:
            return
        if length > max_line_length:
            return (max_line_length, "E501 line too long "
                    "(%d > %d characters)" % (length, max_line_length))


########################################################################
# Plugins (check functions) for logical lines
########################################################################


def _is_one_liner(logical_line, indent_level, lines, line_number):
    if not STARTSWITH_TOP_LEVEL_REGEX.match(logical_line):
        return False

    line_idx = line_number - 1

    if line_idx < 1:
        prev_indent = 0
    else:
        prev_indent = expand_indent(lines[line_idx - 1])

    if prev_indent > indent_level:
        return False

    while line_idx < len(lines):
        line = lines[line_idx].strip()
        if not line.startswith('@') and STARTSWITH_TOP_LEVEL_REGEX.match(line):
            break
        else:
            line_idx += 1
    else:
        return False  # invalid syntax: EOF while searching for def/class

    next_idx = line_idx + 1
    while next_idx < len(lines):
        if lines[next_idx].strip():
            break
        else:
            next_idx += 1
    else:
        return True  # line is last in the file

    return expand_indent(lines[next_idx]) <= indent_level


@register_check
def blank_lines(logical_line, blank_lines, indent_level, line_number,
                blank_before, previous_logical,
                previous_unindented_logical_line, previous_indent_level,
                lines):
    r"""Separate top-level function and class definitions with two blank
    lines.

    Method definitions inside a class are separated by a single blank
    line.

    Extra blank lines may be used (sparingly) to separate groups of
    related functions.  Blank lines may be omitted between a bunch of
    related one-liners (e.g. a set of dummy implementations).

    Use blank lines in functions, sparingly, to indicate logical
    sections.

    Okay: def a():\n    pass\n\n\ndef b():\n    pass
    Okay: def a():\n    pass\n\n\nasync def b():\n    pass
    Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
    Okay: default = 1\nfoo = 1
    Okay: classify = 1\nfoo = 1

    E301: class Foo:\n    b = 0\n    def bar():\n        pass
    E302: def a():\n    pass\n\ndef b(n):\n    pass
    E302: def a():\n    pass\n\nasync def b(n):\n    pass
    E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
    E303: def a():\n\n\n\n    pass
    E304: @decorator\n\ndef a():\n    pass
    E305: def a():\n    pass\na()
    E306: def a():\n    def b():\n        pass\n    def c():\n        pass
    """  # noqa
    top_level_lines = BLANK_LINES_CONFIG['top_level']
    method_lines = BLANK_LINES_CONFIG['method']

    if not previous_logical and blank_before < top_level_lines:
        return  # Don't expect blank lines before the first line
    if previous_logical.startswith('@'):
        if blank_lines:
            yield 0, "E304 blank lines found after function decorator"
    elif (blank_lines > top_level_lines or
            (indent_level and blank_lines == method_lines + 1)
          ):
        yield 0, "E303 too many blank lines (%d)" % blank_lines
    elif STARTSWITH_TOP_LEVEL_REGEX.match(logical_line):
        # allow a group of one-liners
        if (
            _is_one_liner(logical_line, indent_level, lines, line_number) and
            blank_before == 0
        ):
            return
        if indent_level:
            if not (blank_before == method_lines or
                    previous_indent_level < indent_level or
                    DOCSTRING_REGEX.match(previous_logical)
                    ):
                ancestor_level = indent_level
                nested = False
                # Search backwards for a def ancestor or tree root
                # (top level).
                for line in lines[line_number - top_level_lines::-1]:
                    if line.strip() and expand_indent(line) < ancestor_level:
                        ancestor_level = expand_indent(line)
                        nested = STARTSWITH_DEF_REGEX.match(line.lstrip())
                        if nested or ancestor_level == 0:
                            break
                if nested:
                    yield 0, "E306 expected %s blank line before a " \
                        "nested definition, found 0" % (method_lines,)
                else:
                    yield 0, "E301 expected {} blank line, found 0".format(
                        method_lines)
        elif blank_before != top_level_lines:
            yield 0, "E302 expected %s blank lines, found %d" % (
                top_level_lines, blank_before)
    elif (logical_line and
            not indent_level and
            blank_before != top_level_lines and
            previous_unindented_logical_line.startswith(('def ', 'class '))
          ):
        yield 0, "E305 expected %s blank lines after " \
            "class or function definition, found %d" % (
                top_level_lines, blank_before)


@register_check
def extraneous_whitespace(logical_line):
    r"""Avoid extraneous whitespace.

    Avoid extraneous whitespace in these situations:
    - Immediately inside parentheses, brackets or braces.
    - Immediately before a comma, semicolon, or colon.

    Okay: spam(ham[1], {eggs: 2})
    E201: spam( ham[1], {eggs: 2})
    E201: spam(ham[ 1], {eggs: 2})
    E201: spam(ham[1], { eggs: 2})
    E202: spam(ham[1], {eggs: 2} )
    E202: spam(ham[1 ], {eggs: 2})
    E202: spam(ham[1], {eggs: 2 })

    E203: if x == 4: print x, y; x, y = y , x
    E203: if x == 4: print x, y ; x, y = y, x
    E203: if x == 4 : print x, y; x, y = y, x
    """
    line = logical_line
    for match in EXTRANEOUS_WHITESPACE_REGEX.finditer(line):
        text = match.group()
        char = text.strip()
        found = match.start()
        if text[-1].isspace():
            # assert char in '([{'
            yield found + 1, "E201 whitespace after '%s'" % char
        elif line[found - 1] != ',':
            code = ('E202' if char in '}])' else 'E203')  # if char in ',;:'
            yield found, f"{code} whitespace before '{char}'"


@register_check
def whitespace_around_keywords(logical_line):
    r"""Avoid extraneous whitespace around keywords.

    Okay: True and False
    E271: True and  False
    E272: True  and False
    E273: True and\tFalse
    E274: True\tand False
    """
    for match in KEYWORD_REGEX.finditer(logical_line):
        before, after = match.groups()

        if '\t' in before:
            yield match.start(1), "E274 tab before keyword"
        elif len(before) > 1:
            yield match.start(1), "E272 multiple spaces before keyword"

        if '\t' in after:
            yield match.start(2), "E273 tab after keyword"
        elif len(after) > 1:
            yield match.start(2), "E271 multiple spaces after keyword"


@register_check
def missing_whitespace_after_keyword(logical_line, tokens):
    r"""Keywords should be followed by whitespace.

    Okay: from foo import (bar, baz)
    E275: from foo import(bar, baz)
    E275: from importable.module import(bar, baz)
    E275: if(foo): bar
    """
    for tok0, tok1 in zip(tokens, tokens[1:]):
        # This must exclude the True/False/None singletons, which can
        # appear e.g. as "if x is None:", and async/await, which were
        # valid identifier names in old Python versions.
        if (tok0.end == tok1.start and
                keyword.iskeyword(tok0.string) and
                tok0.string not in SINGLETONS and
                not (tok0.string == 'except' and tok1.string == '*') and
                not (tok0.string == 'yield' and tok1.string == ')') and
                tok1.string not in ':\n'):
            yield tok0.end, "E275 missing whitespace after keyword"


@register_check
def indentation(logical_line, previous_logical, indent_char,
                indent_level, previous_indent_level,
                indent_size):
    r"""Use indent_size (PEP8 says 4) spaces per indentation level.

    For really old code that you don't want to mess up, you can continue
    to use 8-space tabs.

    Okay: a = 1
    Okay: if a == 0:\n    a = 1
    E111:   a = 1
    E114:   # a = 1

    Okay: for item in items:\n    pass
    E112: for item in items:\npass
    E115: for item in items:\n# Hi\n    pass

    Okay: a = 1\nb = 2
    E113: a = 1\n    b = 2
    E116: a = 1\n    # b = 2
    """
    c = 0 if logical_line else 3
    tmpl = "E11%d %s" if logical_line else "E11%d %s (comment)"
    if indent_level % indent_size:
        yield 0, tmpl % (
            1 + c,
            "indentation is not a multiple of " + str(indent_size),
        )
    indent_expect = previous_logical.endswith(':')
    if indent_expect and indent_level <= previous_indent_level:
        yield 0, tmpl % (2 + c, "expected an indented block")
    elif not indent_expect and indent_level > previous_indent_level:
        yield 0, tmpl % (3 + c, "unexpected indentation")

    if indent_expect:
        expected_indent_amount = 8 if indent_char == '\t' else 4
        expected_indent_level = previous_indent_level + expected_indent_amount
        if indent_level > expected_indent_level:
            yield 0, tmpl % (7, 'over-indented')


@register_check
def continued_indentation(logical_line, tokens, indent_level, hang_closing,
                          indent_char, indent_size, noqa, verbose):
    r"""Continuation lines indentation.

    Continuation lines should align wrapped elements either vertically
    using Python's implicit line joining inside parentheses, brackets
    and braces, or using a hanging indent.

    When using a hanging indent these considerations should be applied:
    - there should be no arguments on the first line, and
    - further indentation should be used to clearly distinguish itself
      as a continuation line.

    Okay: a = (\n)
    E123: a = (\n    )

    Okay: a = (\n    42)
    E121: a = (\n   42)
    E122: a = (\n42)
    E123: a = (\n    42\n    )
    E124: a = (24,\n     42\n)
    E125: if (\n    b):\n    pass
    E126: a = (\n        42)
    E127: a = (24,\n      42)
    E128: a = (24,\n    42)
    E129: if (a or\n    b):\n    pass
    E131: a = (\n    42\n 24)
    """
    first_row = tokens[0][2][0]
    nrows = 1 + tokens[-1][2][0] - first_row
    if noqa or nrows == 1:
        return

    # indent_next tells us whether the next block is indented; assuming
    # that it is indented by 4 spaces, then we should not allow 4-space
    # indents on the final continuation line; in turn, some other
    # indents are allowed to have an extra 4 spaces.
    indent_next = logical_line.endswith(':')

    row = depth = 0
    valid_hangs = (indent_size,) if indent_char != '\t' \
        else (indent_size, indent_size * 2)
    # remember how many brackets were opened on each line
    parens = [0] * nrows
    # relative indents of physical lines
    rel_indent = [0] * nrows
    # for each depth, collect a list of opening rows
    open_rows = [[0]]
    # for each depth, memorize the hanging indentation
    hangs = [None]
    # visual indents
    indent_chances = {}
    last_indent = tokens[0][2]
    visual_indent = None
    last_token_multiline = False
    # for each depth, memorize the visual indent column
    indent = [last_indent[1]]
    if verbose >= 3:
        print(">>> " + tokens[0][4].rstrip())

    for token_type, text, start, end, line in tokens:

        newline = row < start[0] - first_row
        if newline:
            row = start[0] - first_row
            newline = not last_token_multiline and token_type not in NEWLINE

        if newline:
            # this is the beginning of a continuation line.
            last_indent = start
            if verbose >= 3:
                print("... " + line.rstrip())

            # record the initial indent.
            rel_indent[row] = expand_indent(line) - indent_level

            # identify closing bracket
            close_bracket = (token_type == tokenize.OP and text in ']})')

            # is the indent relative to an opening bracket line?
            for open_row in reversed(open_rows[depth]):
                hang = rel_indent[row] - rel_indent[open_row]
                hanging_indent = hang in valid_hangs
                if hanging_indent:
                    break
            if hangs[depth]:
                hanging_indent = (hang == hangs[depth])
            # is there any chance of visual indent?
            visual_indent = (not close_bracket and hang > 0 and
                             indent_chances.get(start[1]))

            if close_bracket and indent[depth]:
                # closing bracket for visual indent
                if start[1] != indent[depth]:
                    yield (start, "E124 closing bracket does not match "
                           "visual indentation")
            elif close_bracket and not hang:
                # closing bracket matches indentation of opening
                # bracket's line
                if hang_closing:
                    yield start, "E133 closing bracket is missing indentation"
            elif indent[depth] and start[1] < indent[depth]:
                if visual_indent is not True:
                    # visual indent is broken
                    yield (start, "E128 continuation line "
                           "under-indented for visual indent")
            elif hanging_indent or (indent_next and
                                    rel_indent[row] == 2 * indent_size):
                # hanging indent is verified
                if close_bracket and not hang_closing:
                    yield (start, "E123 closing bracket does not match "
                           "indentation of opening bracket's line")
                hangs[depth] = hang
            elif visual_indent is True:
                # visual indent is verified
                indent[depth] = start[1]
            elif visual_indent in (text, str):
                # ignore token lined up with matching one from a
                # previous line
                pass
            else:
                # indent is broken
                if hang <= 0:
                    error = "E122", "missing indentation or outdented"
                elif indent[depth]:
                    error = "E127", "over-indented for visual indent"
                elif not close_bracket and hangs[depth]:
                    error = "E131", "unaligned for hanging indent"
                else:
                    hangs[depth] = hang
                    if hang > indent_size:
                        error = "E126", "over-indented for hanging indent"
                    else:
                        error = "E121", "under-indented for hanging indent"
                yield start, "%s continuation line %s" % error

        # look for visual indenting
        if (parens[row] and
                token_type not in (tokenize.NL, tokenize.COMMENT) and
                not indent[depth]):
            indent[depth] = start[1]
            indent_chances[start[1]] = True
            if verbose >= 4:
                print(f"bracket depth {depth} indent to {start[1]}")
        # deal with implicit string concatenation
        elif token_type in (tokenize.STRING, tokenize.COMMENT, FSTRING_START):
            indent_chances[start[1]] = str
        # visual indent after assert/raise/with
        elif not row and not depth and text in ["assert", "raise", "with"]:
            indent_chances[end[1] + 1] = True
        # special case for the "if" statement because len("if (") == 4
        elif not indent_chances and not row and not depth and text == 'if':
            indent_chances[end[1] + 1] = True
        elif text == ':' and line[end[1]:].isspace():
            open_rows[depth].append(row)

        # keep track of bracket depth
        if token_type == tokenize.OP:
            if text in '([{':
                depth += 1
                indent.append(0)
                hangs.append(None)
                if len(open_rows) == depth:
                    open_rows.append([])
                open_rows[depth].append(row)
                parens[row] += 1
                if verbose >= 4:
                    print("bracket depth %s seen, col %s, visual min = %s" %
                          (depth, start[1], indent[depth]))
            elif text in ')]}' and depth > 0:
                # parent indents should not be more than this one
                prev_indent = indent.pop() or last_indent[1]
                hangs.pop()
                for d in range(depth):
                    if indent[d] > prev_indent:
                        indent[d] = 0
                for ind in list(indent_chances):
                    if ind >= prev_indent:
                        del indent_chances[ind]
                del open_rows[depth + 1:]
                depth -= 1
                if depth:
                    indent_chances[indent[depth]] = True
                for idx in range(row, -1, -1):
                    if parens[idx]:
                        parens[idx] -= 1
                        break
            assert len(indent) == depth + 1
            if start[1] not in indent_chances:
                # allow lining up tokens
                indent_chances[start[1]] = text

        last_token_multiline = (start[0] != end[0])
        if last_token_multiline:
            rel_indent[end[0] - first_row] = rel_indent[row]

    if indent_next and expand_indent(line) == indent_level + indent_size:
        pos = (start[0], indent[0] + indent_size)
        if visual_indent:
            code = "E129 visually indented line"
        else:
            code = "E125 continuation line"
        yield pos, "%s with same indent as next logical line" % code


@register_check
def whitespace_before_parameters(logical_line, tokens):
    r"""Avoid extraneous whitespace.

    Avoid extraneous whitespace in the following situations:
    - before the open parenthesis that starts the argument list of a
      function call.
    - before the open parenthesis that starts an indexing or slicing.

    Okay: spam(1)
    E211: spam (1)

    Okay: dict['key'] = list[index]
    E211: dict ['key'] = list[index]
    E211: dict['key'] = list [index]
    """
    prev_type, prev_text, __, prev_end, __ = tokens[0]
    for index in range(1, len(tokens)):
        token_type, text, start, end, __ = tokens[index]
        if (
            token_type == tokenize.OP and
            text in '([' and
            start != prev_end and
            (prev_type == tokenize.NAME or prev_text in '}])') and
            # Syntax "class A (B):" is allowed, but avoid it
            (index < 2 or tokens[index - 2][1] != 'class') and
            # Allow "return (a.foo for a in range(5))"
            not keyword.iskeyword(prev_text) and
            (
                sys.version_info < (3, 9) or
                # 3.12+: type is a soft keyword but no braces after
                prev_text == 'type' or
                not keyword.issoftkeyword(prev_text)
            )
        ):
            yield prev_end, "E211 whitespace before '%s'" % text
        prev_type = token_type
        prev_text = text
        prev_end = end


@register_check
def whitespace_around_operator(logical_line):
    r"""Avoid extraneous whitespace around an operator.

    Okay: a = 12 + 3
    E221: a = 4  + 5
    E222: a = 4 +  5
    E223: a = 4\t+ 5
    E224: a = 4 +\t5
    """
    for match in OPERATOR_REGEX.finditer(logical_line):
        before, after = match.groups()

        if '\t' in before:
            yield match.start(1), "E223 tab before operator"
        elif len(before) > 1:
            yield match.start(1), "E221 multiple spaces before operator"

        if '\t' in after:
            yield match.start(2), "E224 tab after operator"
        elif len(after) > 1:
            yield match.start(2), "E222 multiple spaces after operator"


@register_check
def missing_whitespace(logical_line, tokens):
    r"""Surround operators with the correct amount of whitespace.

    - Always surround these binary operators with a single space on
      either side: assignment (=), augmented assignment (+=, -= etc.),
      comparisons (==, <, >, !=, <=, >=, in, not in, is, is not),
      Booleans (and, or, not).

    - Each comma, semicolon or colon should be followed by whitespace.

    - If operators with different priorities are used, consider adding
      whitespace around the operators with the lowest priorities.

    Okay: i = i + 1
    Okay: submitted += 1
    Okay: x = x * 2 - 1
    Okay: hypot2 = x * x + y * y
    Okay: c = (a + b) * (a - b)
    Okay: foo(bar, key='word', *args, **kwargs)
    Okay: alpha[:-i]
    Okay: [a, b]
    Okay: (3,)
    Okay: a[3,] = 1
    Okay: a[1:4]
    Okay: a[:4]
    Okay: a[1:]
    Okay: a[1:4:2]

    E225: i=i+1
    E225: submitted +=1
    E225: x = x /2 - 1
    E225: z = x **y
    E225: z = 1and 1
    E226: c = (a+b) * (a-b)
    E226: hypot2 = x*x + y*y
    E227: c = a|b
    E228: msg = fmt%(errno, errmsg)
    E231: ['a','b']
    E231: foo(bar,baz)
    E231: [{'a':'b'}]
    """
    need_space = False
    prev_type = tokenize.OP
    prev_text = prev_end = None
    operator_types = (tokenize.OP, tokenize.NAME)
    brace_stack = []
    for token_type, text, start, end, line in tokens:
        if token_type == tokenize.OP and text in {'[', '(', '{'}:
            brace_stack.append(text)
        elif token_type == FSTRING_START:  # pragma: >=3.12 cover
            brace_stack.append('f')
        elif token_type == tokenize.NAME and text == 'lambda':
            brace_stack.append('l')
        elif brace_stack:
            if token_type == tokenize.OP and text in {']', ')', '}'}:
                brace_stack.pop()
            elif token_type == FSTRING_END:  # pragma: >=3.12 cover
                brace_stack.pop()
            elif (
                    brace_stack[-1] == 'l' and
                    token_type == tokenize.OP and
                    text == ':'
            ):
                brace_stack.pop()

        if token_type in SKIP_COMMENTS:
            continue

        if token_type == tokenize.OP and text in {',', ';', ':'}:
            next_char = line[end[1]:end[1] + 1]
            if next_char not in WHITESPACE and next_char not in '\r\n':
                # slice
                if text == ':' and brace_stack[-1:] == ['[']:
                    pass
                # 3.12+ fstring format specifier
                elif text == ':' and brace_stack[-2:] == ['f', '{']:  # pragma: >=3.12 cover  # noqa: E501
                    pass
                # tuple (and list for some reason?)
                elif text == ',' and next_char in ')]':
                    pass
                else:
                    yield start, f'E231 missing whitespace after {text!r}'

        if need_space:
            if start != prev_end:
                # Found a (probably) needed space
                if need_space is not True and not need_space[1]:
                    yield (need_space[0],
                           "E225 missing whitespace around operator")
                need_space = False
            elif (
                    # def f(a, /, b):
                    #           ^
                    # def f(a, b, /):
                    #              ^
                    # f = lambda a, /:
                    #                ^
                    prev_text == '/' and text in {',', ')', ':'} or
                    # def f(a, b, /):
                    #               ^
                    prev_text == ')' and text == ':'
            ):
                # Tolerate the "/" operator in function definition
                # For more info see PEP570
                pass
            else:
                if need_space is True or need_space[1]:
                    # A needed trailing space was not found
                    yield prev_end, "E225 missing whitespace around operator"
                elif prev_text != '**':
                    code, optype = 'E226', 'arithmetic'
                    if prev_text == '%':
                        code, optype = 'E228', 'modulo'
                    elif prev_text not in ARITHMETIC_OP:
                        code, optype = 'E227', 'bitwise or shift'
                    yield (need_space[0], "%s missing whitespace "
                           "around %s operator" % (code, optype))
                need_space = False
        elif token_type in operator_types and prev_end is not None:
            if (
                    text == '=' and (
                        # allow lambda default args: lambda x=None: None
                        brace_stack[-1:] == ['l'] or
                        # allow keyword args or defaults: foo(bar=None).
                        brace_stack[-1:] == ['('] or
                        # allow python 3.8 fstring repr specifier
                        brace_stack[-2:] == ['f', '{']
                    )
            ):
                pass
            elif text in WS_NEEDED_OPERATORS:
                need_space = True
            elif text in UNARY_OPERATORS:
                # Check if the operator is used as a binary operator
                # Allow unary operators: -123, -x, +1.
                # Allow argument unpacking: foo(*args, **kwargs).
                if prev_type == tokenize.OP and prev_text in '}])' or (
                    prev_type != tokenize.OP and
                    prev_text not in KEYWORDS and (
                        sys.version_info < (3, 9) or
                        not keyword.issoftkeyword(prev_text)
                    )
                ):
                    need_space = None
            elif text in WS_OPTIONAL_OPERATORS:
                need_space = None

            if need_space is None:
                # Surrounding space is optional, but ensure that
                # trailing space matches opening space
                need_space = (prev_end, start != prev_end)
            elif need_space and start == prev_end:
                # A needed opening space was not found
                yield prev_end, "E225 missing whitespace around operator"
                need_space = False
        prev_type = token_type
        prev_text = text
        prev_end = end


@register_check
def whitespace_around_comma(logical_line):
    r"""Avoid extraneous whitespace after a comma or a colon.

    Note: these checks are disabled by default

    Okay: a = (1, 2)
    E241: a = (1,  2)
    E242: a = (1,\t2)
    """
    line = logical_line
    for m in WHITESPACE_AFTER_COMMA_REGEX.finditer(line):
        found = m.start() + 1
        if '\t' in m.group():
            yield found, "E242 tab after '%s'" % m.group()[0]
        else:
            yield found, "E241 multiple spaces after '%s'" % m.group()[0]


@register_check
def whitespace_around_named_parameter_equals(logical_line, tokens):
    r"""Don't use spaces around the '=' sign in function arguments.

    Don't use spaces around the '=' sign when used to indicate a
    keyword argument or a default parameter value, except when
    using a type annotation.

    Okay: def complex(real, imag=0.0):
    Okay: return magic(r=real, i=imag)
    Okay: boolean(a == b)
    Okay: boolean(a != b)
    Okay: boolean(a <= b)
    Okay: boolean(a >= b)
    Okay: def foo(arg: int = 42):
    Okay: async def foo(arg: int = 42):

    E251: def complex(real, imag = 0.0):
    E251: return magic(r = real, i = imag)
    E252: def complex(real, image: float=0.0):
    """
    parens = 0
    no_space = False
    require_space = False
    prev_end = None
    annotated_func_arg = False
    in_def = bool(STARTSWITH_DEF_REGEX.match(logical_line))

    message = "E251 unexpected spaces around keyword / parameter equals"
    missing_message = "E252 missing whitespace around parameter equals"

    for token_type, text, start, end, line in tokens:
        if token_type == tokenize.NL:
            continue
        if no_space:
            no_space = False
            if start != prev_end:
                yield (prev_end, message)
        if require_space:
            require_space = False
            if start == prev_end:
                yield (prev_end, missing_message)
        if token_type == tokenize.OP:
            if text in '([':
                parens += 1
            elif text in ')]':
                parens -= 1
            elif in_def and text == ':' and parens == 1:
                annotated_func_arg = True
            elif parens == 1 and text == ',':
                annotated_func_arg = False
            elif parens and text == '=':
                if annotated_func_arg and parens == 1:
                    require_space = True
                    if start == prev_end:
                        yield (prev_end, missing_message)
                else:
                    no_space = True
                    if start != prev_end:
                        yield (prev_end, message)
            if not parens:
                annotated_func_arg = False

        prev_end = end


@register_check
def whitespace_before_comment(logical_line, tokens):
    """Separate inline comments by at least two spaces.

    An inline comment is a comment on the same line as a statement.
    Inline comments should be separated by at least two spaces from the
    statement. They should start with a # and a single space.

    Each line of a block comment starts with a # and one or multiple
    spaces as there can be indented text inside the comment.

    Okay: x = x + 1  # Increment x
    Okay: x = x + 1    # Increment x
    Okay: # Block comments:
    Okay: #  - Block comment list
    Okay: # \xa0- Block comment list
    E261: x = x + 1 # Increment x
    E262: x = x + 1  #Increment x
    E262: x = x + 1  #  Increment x
    E262: x = x + 1  # \xa0Increment x
    E265: #Block comment
    E266: ### Block comment
    """
    prev_end = (0, 0)
    for token_type, text, start, end, line in tokens:
        if token_type == tokenize.COMMENT:
            inline_comment = line[:start[1]].strip()
            if inline_comment:
                if prev_end[0] == start[0] and start[1] < prev_end[1] + 2:
                    yield (prev_end,
                           "E261 at least two spaces before inline comment")
            symbol, sp, comment = text.partition(' ')
            bad_prefix = symbol not in '#:' and (symbol.lstrip('#')[:1] or '#')
            if inline_comment:
                if bad_prefix or comment[:1] in WHITESPACE:
                    yield start, "E262 inline comment should start with '# '"
            elif bad_prefix and (bad_prefix != '!' or start[0] > 1):
                if bad_prefix != '#':
                    yield start, "E265 block comment should start with '# '"
                elif comment:
                    yield start, "E266 too many leading '#' for block comment"
        elif token_type != tokenize.NL:
            prev_end = end


@register_check
def imports_on_separate_lines(logical_line):
    r"""Place imports on separate lines.

    Okay: import os\nimport sys
    E401: import sys, os

    Okay: from subprocess import Popen, PIPE
    Okay: from myclas import MyClass
    Okay: from foo.bar.yourclass import YourClass
    Okay: import myclass
    Okay: import foo.bar.yourclass
    """
    line = logical_line
    if line.startswith('import '):
        found = line.find(',')
        if -1 < found and ';' not in line[:found]:
            yield found, "E401 multiple imports on one line"


@register_check
def module_imports_on_top_of_file(
        logical_line, indent_level, checker_state, noqa):
    r"""Place imports at the top of the file.

    Always put imports at the top of the file, just after any module
    comments and docstrings, and before module globals and constants.

    Okay: import os
    Okay: # this is a comment\nimport os
    Okay: '''this is a module docstring'''\nimport os
    Okay: r'''this is a module docstring'''\nimport os
    E402: a=1\nimport os
    E402: 'One string'\n"Two string"\nimport os
    E402: a=1\nfrom sys import x

    Okay: if x:\n    import os
    """  # noqa
    def is_string_literal(line):
        if line[0] in 'uUbB':
            line = line[1:]
        if line and line[0] in 'rR':
            line = line[1:]
        return line and (line[0] == '"' or line[0] == "'")

    allowed_keywords = (
        'try', 'except', 'else', 'finally', 'with', 'if', 'elif')

    if indent_level:  # Allow imports in conditional statement/function
        return
    if not logical_line:  # Allow empty lines or comments
        return
    if noqa:
        return
    line = logical_line
    if line.startswith('import ') or line.startswith('from '):
        if checker_state.get('seen_non_imports', False):
            yield 0, "E402 module level import not at top of file"
    elif re.match(DUNDER_REGEX, line):
        return
    elif any(line.startswith(kw) for kw in allowed_keywords):
        # Allow certain keywords intermixed with imports in order to
        # support conditional or filtered importing
        return
    elif is_string_literal(line):
        # The first literal is a docstring, allow it. Otherwise, report
        # error.
        if checker_state.get('seen_docstring', False):
            checker_state['seen_non_imports'] = True
        else:
            checker_state['seen_docstring'] = True
    else:
        checker_state['seen_non_imports'] = True


@register_check
def compound_statements(logical_line):
    r"""Compound statements (on the same line) are generally
    discouraged.

    While sometimes it's okay to put an if/for/while with a small body
    on the same line, never do this for multi-clause statements.
    Also avoid folding such long lines!

    Always use a def statement instead of an assignment statement that
    binds a lambda expression directly to a name.

    Okay: if foo == 'blah':\n    do_blah_thing()
    Okay: do_one()
    Okay: do_two()
    Okay: do_three()

    E701: if foo == 'blah': do_blah_thing()
    E701: for x in lst: total += x
    E701: while t < 10: t = delay()
    E701: if foo == 'blah': do_blah_thing()
    E701: else: do_non_blah_thing()
    E701: try: something()
    E701: finally: cleanup()
    E701: if foo == 'blah': one(); two(); three()
    E702: do_one(); do_two(); do_three()
    E703: do_four();  # useless semicolon
    E704: def f(x): return 2*x
    E731: f = lambda x: 2*x
    """
    line = logical_line
    last_char = len(line) - 1
    found = line.find(':')
    prev_found = 0
    counts = {char: 0 for char in '{}[]()'}
    while -1 < found < last_char:
        update_counts(line[prev_found:found], counts)
        if (
                counts['{'] <= counts['}'] and  # {'a': 1} (dict)
                counts['['] <= counts[']'] and  # [1:2] (slice)
                counts['('] <= counts[')'] and  # (annotation)
                line[found + 1] != '='  # assignment expression
        ):
            lambda_kw = LAMBDA_REGEX.search(line, 0, found)
            if lambda_kw:
                before = line[:lambda_kw.start()].rstrip()
                if before[-1:] == '=' and before[:-1].strip().isidentifier():
                    yield 0, ("E731 do not assign a lambda expression, use a "
                              "def")
                break
            if STARTSWITH_DEF_REGEX.match(line):
                yield 0, "E704 multiple statements on one line (def)"
            elif STARTSWITH_INDENT_STATEMENT_REGEX.match(line):
                yield found, "E701 multiple statements on one line (colon)"
        prev_found = found
        found = line.find(':', found + 1)
    found = line.find(';')
    while -1 < found:
        if found < last_char:
            yield found, "E702 multiple statements on one line (semicolon)"
        else:
            yield found, "E703 statement ends with a semicolon"
        found = line.find(';', found + 1)


@register_check
def explicit_line_join(logical_line, tokens):
    r"""Avoid explicit line join between brackets.

    The preferred way of wrapping long lines is by using Python's
    implied line continuation inside parentheses, brackets and braces.
    Long lines can be broken over multiple lines by wrapping expressions
    in parentheses.  These should be used in preference to using a
    backslash for line continuation.

    E502: aaa = [123, \\n       123]
    E502: aaa = ("bbb " \\n       "ccc")

    Okay: aaa = [123,\n       123]
    Okay: aaa = ("bbb "\n       "ccc")
    Okay: aaa = "bbb " \\n    "ccc"
    Okay: aaa = 123  # \\
    """
    prev_start = prev_end = parens = 0
    comment = False
    backslash = None
    for token_type, text, start, end, line in tokens:
        if token_type == tokenize.COMMENT:
            comment = True
        if start[0] != prev_start and parens and backslash and not comment:
            yield backslash, "E502 the backslash is redundant between brackets"
        if end[0] != prev_end:
            if line.rstrip('\r\n').endswith('\\'):
                backslash = (end[0], len(line.splitlines()[-1]) - 1)
            else:
                backslash = None
            prev_start = prev_end = end[0]
        else:
            prev_start = start[0]
        if token_type == tokenize.OP:
            if text in '([{':
                parens += 1
            elif text in ')]}':
                parens -= 1


# The % character is strictly speaking a binary operator, but the
# common usage seems to be to put it next to the format parameters,
# after a line break.
_SYMBOLIC_OPS = frozenset("()[]{},:.;@=%~") | frozenset(("...",))


def _is_binary_operator(token_type, text):
    return (
        token_type == tokenize.OP or
        text in {'and', 'or'}
    ) and (
        text not in _SYMBOLIC_OPS
    )


def _break_around_binary_operators(tokens):
    """Private function to reduce duplication.

    This factors out the shared details between
    :func:`break_before_binary_operator` and
    :func:`break_after_binary_operator`.
    """
    line_break = False
    unary_context = True
    # Previous non-newline token types and text
    previous_token_type = None
    previous_text = None
    for token_type, text, start, end, line in tokens:
        if token_type == tokenize.COMMENT:
            continue
        if ('\n' in text or '\r' in text) and token_type != tokenize.STRING:
            line_break = True
        else:
            yield (token_type, text, previous_token_type, previous_text,
                   line_break, unary_context, start)
            unary_context = text in '([{,;'
            line_break = False
            previous_token_type = token_type
            previous_text = text


@register_check
def break_before_binary_operator(logical_line, tokens):
    r"""
    Avoid breaks before binary operators.

    The preferred place to break around a binary operator is after the
    operator, not before it.

    W503: (width == 0\n + height == 0)
    W503: (width == 0\n and height == 0)
    W503: var = (1\n       & ~2)
    W503: var = (1\n       / -2)
    W503: var = (1\n       + -1\n       + -2)

    Okay: foo(\n    -x)
    Okay: foo(x\n    [])
    Okay: x = '''\n''' + ''
    Okay: foo(x,\n    -y)
    Okay: foo(x,  # comment\n    -y)
    """
    for context in _break_around_binary_operators(tokens):
        (token_type, text, previous_token_type, previous_text,
         line_break, unary_context, start) = context
        if (_is_binary_operator(token_type, text) and line_break and
                not unary_context and
                not _is_binary_operator(previous_token_type,
                                        previous_text)):
            yield start, "W503 line break before binary operator"


@register_check
def break_after_binary_operator(logical_line, tokens):
    r"""
    Avoid breaks after binary operators.

    The preferred place to break around a binary operator is before the
    operator, not after it.

    W504: (width == 0 +\n height == 0)
    W504: (width == 0 and\n height == 0)
    W504: var = (1 &\n       ~2)

    Okay: foo(\n    -x)
    Okay: foo(x\n    [])
    Okay: x = '''\n''' + ''
    Okay: x = '' + '''\n'''
    Okay: foo(x,\n    -y)
    Okay: foo(x,  # comment\n    -y)

    The following should be W504 but unary_context is tricky with these
    Okay: var = (1 /\n       -2)
    Okay: var = (1 +\n       -1 +\n       -2)
    """
    prev_start = None
    for context in _break_around_binary_operators(tokens):
        (token_type, text, previous_token_type, previous_text,
         line_break, unary_context, start) = context
        if (_is_binary_operator(previous_token_type, previous_text) and
                line_break and
                not unary_context and
                not _is_binary_operator(token_type, text)):
            yield prev_start, "W504 line break after binary operator"
        prev_start = start


@register_check
def comparison_to_singleton(logical_line, noqa):
    r"""Comparison to singletons should use "is" or "is not".

    Comparisons to singletons like None should always be done
    with "is" or "is not", never the equality operators.

    Okay: if arg is not None:
    E711: if arg != None:
    E711: if None == arg:
    E712: if arg == True:
    E712: if False == arg:

    Also, beware of writing if x when you really mean if x is not None
    -- e.g. when testing whether a variable or argument that defaults to
    None was set to some other value.  The other value might have a type
    (such as a container) that could be false in a boolean context!
    """
    if noqa:
        return

    for match in COMPARE_SINGLETON_REGEX.finditer(logical_line):
        singleton = match.group(1) or match.group(3)
        same = (match.group(2) == '==')

        msg = "'if cond is %s:'" % (('' if same else 'not ') + singleton)
        if singleton in ('None',):
            code = 'E711'
        else:
            code = 'E712'
            nonzero = ((singleton == 'True' and same) or
                       (singleton == 'False' and not same))
            msg += " or 'if %scond:'" % ('' if nonzero else 'not ')
        yield match.start(2), ("%s comparison to %s should be %s" %
                               (code, singleton, msg))


@register_check
def comparison_negative(logical_line):
    r"""Negative comparison should be done using "not in" and "is not".

    Okay: if x not in y:\n    pass
    Okay: assert (X in Y or X is Z)
    Okay: if not (X in Y):\n    pass
    Okay: zz = x is not y
    E713: Z = not X in Y
    E713: if not X.B in Y:\n    pass
    E714: if not X is Y:\n    pass
    E714: Z = not X.B is Y
    """
    match = COMPARE_NEGATIVE_REGEX.search(logical_line)
    if match:
        pos = match.start(1)
        if match.group(2) == 'in':
            yield pos, "E713 test for membership should be 'not in'"
        else:
            yield pos, "E714 test for object identity should be 'is not'"


@register_check
def comparison_type(logical_line, noqa):
    r"""Object type comparisons should `is` / `is not` / `isinstance()`.

    Do not compare types directly.

    Okay: if isinstance(obj, int):
    Okay: if type(obj) is int:
    E721: if type(obj) == type(1):
    """
    match = COMPARE_TYPE_REGEX.search(logical_line)
    if match and not noqa:
        inst = match.group(1)
        if inst and inst.isidentifier() and inst not in SINGLETONS:
            return  # Allow comparison for types which are not obvious
        yield (
            match.start(),
            "E721 do not compare types, for exact checks use `is` / `is not`, "
            "for instance checks use `isinstance()`",
        )


@register_check
def bare_except(logical_line, noqa):
    r"""When catching exceptions, mention specific exceptions when
    possible.

    Okay: except Exception:
    Okay: except BaseException:
    E722: except:
    """
    if noqa:
        return

    match = BLANK_EXCEPT_REGEX.match(logical_line)
    if match:
        yield match.start(), "E722 do not use bare 'except'"


@register_check
def ambiguous_identifier(logical_line, tokens):
    r"""Never use the characters 'l', 'O', or 'I' as variable names.

    In some fonts, these characters are indistinguishable from the
    numerals one and zero. When tempted to use 'l', use 'L' instead.

    Okay: L = 0
    Okay: o = 123
    Okay: i = 42
    E741: l = 0
    E741: O = 123
    E741: I = 42

    Variables can be bound in several other contexts, including class
    and function definitions, lambda functions, 'global' and 'nonlocal'
    statements, exception handlers, and 'with' and 'for' statements.
    In addition, we have a special handling for function parameters.

    Okay: except AttributeError as o:
    Okay: with lock as L:
    Okay: foo(l=12)
    Okay: foo(l=I)
    Okay: for a in foo(l=12):
    Okay: lambda arg: arg * l
    Okay: lambda a=l[I:5]: None
    Okay: lambda x=a.I: None
    Okay: if l >= 12:
    E741: except AttributeError as O:
    E741: with lock as l:
    E741: global I
    E741: nonlocal l
    E741: def foo(l):
    E741: def foo(l=12):
    E741: l = foo(l=12)
    E741: for l in range(10):
    E741: [l for l in lines if l]
    E741: lambda l: None
    E741: lambda a=x[1:5], l: None
    E741: lambda **l:
    E741: def f(**l):
    E742: class I(object):
    E743: def l(x):
    """
    func_depth = None  # set to brace depth if 'def' or 'lambda' is found
    seen_colon = False  # set to true if we're done with function parameters
    brace_depth = 0
    idents_to_avoid = ('l', 'O', 'I')
    prev_type, prev_text, prev_start, prev_end, __ = tokens[0]
    for index in range(1, len(tokens)):
        token_type, text, start, end, line = tokens[index]
        ident = pos = None
        # find function definitions
        if prev_text in {'def', 'lambda'}:
            func_depth = brace_depth
            seen_colon = False
        elif (
                func_depth is not None and
                text == ':' and
                brace_depth == func_depth
        ):
            seen_colon = True
        # update parameter parentheses level
        if text in '([{':
            brace_depth += 1
        elif text in ')]}':
            brace_depth -= 1
        # identifiers on the lhs of an assignment operator
        if text == ':=' or (text == '=' and brace_depth == 0):
            if prev_text in idents_to_avoid:
                ident = prev_text
                pos = prev_start
        # identifiers bound to values with 'as', 'for',
        # 'global', or 'nonlocal'
        if prev_text in ('as', 'for', 'global', 'nonlocal'):
            if text in idents_to_avoid:
                ident = text
                pos = start
        # function / lambda parameter definitions
        if (
                func_depth is not None and
                not seen_colon and
                index < len(tokens) - 1 and tokens[index + 1][1] in ':,=)' and
                prev_text in {'lambda', ',', '*', '**', '('} and
                text in idents_to_avoid
        ):
            ident = text
            pos = start
        if prev_text == 'class':
            if text in idents_to_avoid:
                yield start, "E742 ambiguous class definition '%s'" % text
        if prev_text == 'def':
            if text in idents_to_avoid:
                yield start, "E743 ambiguous function definition '%s'" % text
        if ident:
            yield pos, "E741 ambiguous variable name '%s'" % ident
        prev_text = text
        prev_start = start


@register_check
def python_3000_invalid_escape_sequence(logical_line, tokens, noqa):
    r"""Invalid escape sequences are deprecated in Python 3.6.

    Okay: regex = r'\.png$'
    W605: regex = '\.png$'
    """
    if noqa:
        return

    # https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals
    valid = [
        '\n',
        '\\',
        '\'',
        '"',
        'a',
        'b',
        'f',
        'n',
        'r',
        't',
        'v',
        '0', '1', '2', '3', '4', '5', '6', '7',
        'x',

        # Escape sequences only recognized in string literals
        'N',
        'u',
        'U',
    ]

    prefixes = []
    for token_type, text, start, _, _ in tokens:
        if token_type in {tokenize.STRING, FSTRING_START}:
            # Extract string modifiers (e.g. u or r)
            prefixes.append(text[:text.index(text[-1])].lower())

        if token_type in {tokenize.STRING, FSTRING_MIDDLE}:
            if 'r' not in prefixes[-1]:
                start_line, start_col = start
                pos = text.find('\\')
                while pos >= 0:
                    pos += 1
                    if text[pos] not in valid:
                        line = start_line + text.count('\n', 0, pos)
                        if line == start_line:
                            col = start_col + pos
                        else:
                            col = pos - text.rfind('\n', 0, pos) - 1
                        yield (
                            (line, col - 1),
                            f"W605 invalid escape sequence '\\{text[pos]}'"
                        )
                    pos = text.find('\\', pos + 1)

        if token_type in {tokenize.STRING, FSTRING_END}:
            prefixes.pop()


########################################################################
@register_check
def maximum_doc_length(logical_line, max_doc_length, noqa, tokens):
    r"""Limit all doc lines to a maximum of 72 characters.

    For flowing long blocks of text (docstrings or comments), limiting
    the length to 72 characters is recommended.

    Reports warning W505
    """
    if max_doc_length is None or noqa:
        return

    prev_token = None
    skip_lines = set()
    # Skip lines that
    for token_type, text, start, end, line in tokens:
        if token_type not in SKIP_COMMENTS.union([tokenize.STRING]):
            skip_lines.add(line)

    for token_type, text, start, end, line in tokens:
        # Skip lines that aren't pure strings
        if token_type == tokenize.STRING and skip_lines:
            continue
        if token_type in (tokenize.STRING, tokenize.COMMENT):
            # Only check comment-only lines
            if prev_token is None or prev_token in SKIP_TOKENS:
                lines = line.splitlines()
                for line_num, physical_line in enumerate(lines):
                    if start[0] + line_num == 1 and line.startswith('#!'):
                        return
                    length = len(physical_line)
                    chunks = physical_line.split()
                    if token_type == tokenize.COMMENT:
                        if (len(chunks) == 2 and
                                length - len(chunks[-1]) < MAX_DOC_LENGTH):
                            continue
                    if len(chunks) == 1 and line_num + 1 < len(lines):
                        if (len(chunks) == 1 and
                                length - len(chunks[-1]) < MAX_DOC_LENGTH):
                            continue
                    if length > max_doc_length:
                        doc_error = (start[0] + line_num, max_doc_length)
                        yield (doc_error, "W505 doc line too long "
                                          "(%d > %d characters)"
                               % (length, max_doc_length))
        prev_token = token_type


########################################################################
# Helper functions
########################################################################


def readlines(filename):
    """Read the source code."""
    try:
        with tokenize.open(filename) as f:
            return f.readlines()
    except (LookupError, SyntaxError, UnicodeError):
        # Fall back if file encoding is improperly declared
        with open(filename, encoding='latin-1') as f:
            return f.readlines()


def stdin_get_value():
    """Read the value from stdin."""
    return io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8', errors='ignore').read()


noqa = lru_cache(512)(re.compile(r'# no(?:qa|pep8)\b', re.I).search)


def expand_indent(line):
    r"""Return the amount of indentation.

    Tabs are expanded to the next multiple of 8.
    """
    line = line.rstrip('\n\r')
    if '\t' not in line:
        return len(line) - len(line.lstrip())
    result = 0
    for char in line:
        if char == '\t':
            result = result // 8 * 8 + 8
        elif char == ' ':
            result += 1
        else:
            break
    return result


def mute_string(text):
    """Replace contents with 'xxx' to prevent syntax matching."""
    # String modifiers (e.g. u or r)
    start = text.index(text[-1]) + 1
    end = len(text) - 1
    # Triple quotes
    if text[-3:] in ('"""', "'''"):
        start += 2
        end -= 2
    return text[:start] + 'x' * (end - start) + text[end:]


def parse_udiff(diff, patterns=None, parent='.'):
    """Return a dictionary of matching lines."""
    # For each file of the diff, the entry key is the filename,
    # and the value is a set of row numbers to consider.
    rv = {}
    path = nrows = None
    for line in diff.splitlines():
        if nrows:
            if line[:1] != '-':
                nrows -= 1
            continue
        if line[:3] == '@@ ':
            hunk_match = HUNK_REGEX.match(line)
            (row, nrows) = (int(g or '1') for g in hunk_match.groups())
            rv[path].update(range(row, row + nrows))
        elif line[:3] == '+++':
            path = line[4:].split('\t', 1)[0]
            # Git diff will use (i)ndex, (w)ork tree, (c)ommit and
            # (o)bject instead of a/b/c/d as prefixes for patches
            if path[:2] in ('b/', 'w/', 'i/'):
                path = path[2:]
            rv[path] = set()
    return {
        os.path.join(parent, filepath): rows
        for (filepath, rows) in rv.items()
        if rows and filename_match(filepath, patterns)
    }


def normalize_paths(value, parent=os.curdir):
    """Parse a comma-separated list of paths.

    Return a list of absolute paths.
    """
    if not value:
        return []
    if isinstance(value, list):
        return value
    paths = []
    for path in value.split(','):
        path = path.strip()
        if '/' in path:
            path = os.path.abspath(os.path.join(parent, path))
        paths.append(path.rstrip('/'))
    return paths


def filename_match(filename, patterns, default=True):
    """Check if patterns contains a pattern that matches filename.

    If patterns is unspecified, this always returns True.
    """
    if not patterns:
        return default
    return any(fnmatch(filename, pattern) for pattern in patterns)


def update_counts(s, counts):
    r"""Adds one to the counts of each appearance of characters in s,
        for characters in counts"""
    for char in s:
        if char in counts:
            counts[char] += 1


def _is_eol_token(token):
    return token[0] in NEWLINE or token[4][token[3][1]:].lstrip() == '\\\n'


########################################################################
# Framework to run all checks
########################################################################


class Checker:
    """Load a Python source file, tokenize it, check coding style."""

    def __init__(self, filename=None, lines=None,
                 options=None, report=None, **kwargs):
        if options is None:
            options = StyleGuide(kwargs).options
        else:
            assert not kwargs
        self._io_error = None
        self._physical_checks = options.physical_checks
        self._logical_checks = options.logical_checks
        self._ast_checks = options.ast_checks
        self.max_line_length = options.max_line_length
        self.max_doc_length = options.max_doc_length
        self.indent_size = options.indent_size
        self.fstring_start = 0
        self.multiline = False  # in a multiline string?
        self.hang_closing = options.hang_closing
        self.indent_size = options.indent_size
        self.verbose = options.verbose
        self.filename = filename
        # Dictionary where a checker can store its custom state.
        self._checker_states = {}
        if filename is None:
            self.filename = 'stdin'
            self.lines = lines or []
        elif filename == '-':
            self.filename = 'stdin'
            self.lines = stdin_get_value().splitlines(True)
        elif lines is None:
            try:
                self.lines = readlines(filename)
            except OSError:
                (exc_type, exc) = sys.exc_info()[:2]
                self._io_error = f'{exc_type.__name__}: {exc}'
                self.lines = []
        else:
            self.lines = lines
        if self.lines:
            ord0 = ord(self.lines[0][0])
            if ord0 in (0xef, 0xfeff):  # Strip the UTF-8 BOM
                if ord0 == 0xfeff:
                    self.lines[0] = self.lines[0][1:]
                elif self.lines[0][:3] == '\xef\xbb\xbf':
                    self.lines[0] = self.lines[0][3:]
        self.report = report or options.report
        self.report_error = self.report.error
        self.noqa = False

    def report_invalid_syntax(self):
        """Check if the syntax is valid."""
        (exc_type, exc) = sys.exc_info()[:2]
        if len(exc.args) > 1:
            offset = exc.args[1]
            if len(offset) > 2:
                offset = offset[1:3]
        else:
            offset = (1, 0)
        self.report_error(offset[0], offset[1] or 0,
                          f'E901 {exc_type.__name__}: {exc.args[0]}',
                          self.report_invalid_syntax)

    def readline(self):
        """Get the next line from the input buffer."""
        if self.line_number >= self.total_lines:
            return ''
        line = self.lines[self.line_number]
        self.line_number += 1
        if self.indent_char is None and line[:1] in WHITESPACE:
            self.indent_char = line[0]
        return line

    def run_check(self, check, argument_names):
        """Run a check plugin."""
        arguments = []
        for name in argument_names:
            arguments.append(getattr(self, name))
        return check(*arguments)

    def init_checker_state(self, name, argument_names):
        """Prepare custom state for the specific checker plugin."""
        if 'checker_state' in argument_names:
            self.checker_state = self._checker_states.setdefault(name, {})

    def check_physical(self, line):
        """Run all physical checks on a raw input line."""
        self.physical_line = line
        for name, check, argument_names in self._physical_checks:
            self.init_checker_state(name, argument_names)
            result = self.run_check(check, argument_names)
            if result is not None:
                (offset, text) = result
                self.report_error(self.line_number, offset, text, check)
                if text[:4] == 'E101':
                    self.indent_char = line[0]

    def build_tokens_line(self):
        """Build a logical line from tokens."""
        logical = []
        comments = []
        length = 0
        prev_row = prev_col = mapping = None
        for token_type, text, start, end, line in self.tokens:
            if token_type in SKIP_TOKENS:
                continue
            if not mapping:
                mapping = [(0, start)]
            if token_type == tokenize.COMMENT:
                comments.append(text)
                continue
            if token_type == tokenize.STRING:
                text = mute_string(text)
            elif token_type == FSTRING_MIDDLE:  # pragma: >=3.12 cover
                text = 'x' * len(text)
            if prev_row:
                (start_row, start_col) = start
                if prev_row != start_row:    # different row
                    prev_text = self.lines[prev_row - 1][prev_col - 1]
                    if prev_text == ',' or (prev_text not in '{[(' and
                                            text not in '}])'):
                        text = ' ' + text
                elif prev_col != start_col:  # different column
                    text = line[prev_col:start_col] + text
            logical.append(text)
            length += len(text)
            mapping.append((length, end))
            (prev_row, prev_col) = end
        self.logical_line = ''.join(logical)
        self.noqa = comments and noqa(''.join(comments))
        return mapping

    def check_logical(self):
        """Build a line from tokens and run all logical checks on it."""
        self.report.increment_logical_line()
        mapping = self.build_tokens_line()
        if not mapping:
            return

        mapping_offsets = [offset for offset, _ in mapping]
        (start_row, start_col) = mapping[0][1]
        start_line = self.lines[start_row - 1]
        self.indent_level = expand_indent(start_line[:start_col])
        if self.blank_before < self.blank_lines:
            self.blank_before = self.blank_lines
        if self.verbose >= 2:
            print(self.logical_line[:80].rstrip())
        for name, check, argument_names in self._logical_checks:
            if self.verbose >= 4:
                print('   ' + name)
            self.init_checker_state(name, argument_names)
            for offset, text in self.run_check(check, argument_names) or ():
                if not isinstance(offset, tuple):
                    # As mappings are ordered, bisecting is a fast way
                    # to find a given offset in them.
                    token_offset, pos = mapping[bisect.bisect_left(
                        mapping_offsets, offset)]
                    offset = (pos[0], pos[1] + offset - token_offset)
                self.report_error(offset[0], offset[1], text, check)
        if self.logical_line:
            self.previous_indent_level = self.indent_level
            self.previous_logical = self.logical_line
            if not self.indent_level:
                self.previous_unindented_logical_line = self.logical_line
        self.blank_lines = 0
        self.tokens = []

    def check_ast(self):
        """Build the file's AST and run all AST checks."""
        try:
            tree = compile(''.join(self.lines), '', 'exec', PyCF_ONLY_AST)
        except (ValueError, SyntaxError, TypeError):
            return self.report_invalid_syntax()
        for name, cls, __ in self._ast_checks:
            checker = cls(tree, self.filename)
            for lineno, offset, text, check in checker.run():
                if not self.lines or not noqa(self.lines[lineno - 1]):
                    self.report_error(lineno, offset, text, check)

    def generate_tokens(self):
        """Tokenize file, run physical line checks and yield tokens."""
        if self._io_error:
            self.report_error(1, 0, 'E902 %s' % self._io_error, readlines)
        tokengen = tokenize.generate_tokens(self.readline)
        try:
            prev_physical = ''
            for token in tokengen:
                if token[2][0] > self.total_lines:
                    return
                self.noqa = token[4] and noqa(token[4])
                self.maybe_check_physical(token, prev_physical)
                yield token
                prev_physical = token[4]
        except (SyntaxError, tokenize.TokenError):
            self.report_invalid_syntax()

    def maybe_check_physical(self, token, prev_physical):
        """If appropriate for token, check current physical line(s)."""
        # Called after every token, but act only on end of line.

        if token.type == FSTRING_START:  # pragma: >=3.12 cover
            self.fstring_start = token.start[0]
        # a newline token ends a single physical line.
        elif _is_eol_token(token):
            # if the file does not end with a newline, the NEWLINE
            # token is inserted by the parser, but it does not contain
            # the previous physical line in `token[4]`
            if token.line == '':
                self.check_physical(prev_physical)
            else:
                self.check_physical(token.line)
        elif (
                token.type == tokenize.STRING and '\n' in token.string or
                token.type == FSTRING_END
        ):
            # Less obviously, a string that contains newlines is a
            # multiline string, either triple-quoted or with internal
            # newlines backslash-escaped. Check every physical line in
            # the string *except* for the last one: its newline is
            # outside of the multiline string, so we consider it a
            # regular physical line, and will check it like any other
            # physical line.
            #
            # Subtleties:
            # - we don't *completely* ignore the last line; if it
            #   contains the magical "# noqa" comment, we disable all
            #   physical checks for the entire multiline string
            # - have to wind self.line_number back because initially it
            #   points to the last line of the string, and we want
            #   check_physical() to give accurate feedback
            if noqa(token.line):
                return
            if token.type == FSTRING_END:  # pragma: >=3.12 cover
                start = self.fstring_start
            else:
                start = token.start[0]
            end = token.end[0]

            self.multiline = True
            self.line_number = start
            for line_number in range(start, end):
                self.check_physical(self.lines[line_number - 1] + '\n')
                self.line_number += 1
            self.multiline = False

    def check_all(self, expected=None, line_offset=0):
        """Run all checks on the input file."""
        self.report.init_file(self.filename, self.lines, expected, line_offset)
        self.total_lines = len(self.lines)
        if self._ast_checks:
            self.check_ast()
        self.line_number = 0
        self.indent_char = None
        self.indent_level = self.previous_indent_level = 0
        self.previous_logical = ''
        self.previous_unindented_logical_line = ''
        self.tokens = []
        self.blank_lines = self.blank_before = 0
        parens = 0
        for token in self.generate_tokens():
            self.tokens.append(token)
            token_type, text = token[0:2]
            if self.verbose >= 3:
                if token[2][0] == token[3][0]:
                    pos = '[{}:{}]'.format(token[2][1] or '', token[3][1])
                else:
                    pos = 'l.%s' % token[3][0]
                print('l.%s\t%s\t%s\t%r' %
                      (token[2][0], pos, tokenize.tok_name[token[0]], text))
            if token_type == tokenize.OP:
                if text in '([{':
                    parens += 1
                elif text in '}])':
                    parens -= 1
            elif not parens:
                if token_type in NEWLINE:
                    if token_type == tokenize.NEWLINE:
                        self.check_logical()
                        self.blank_before = 0
                    elif len(self.tokens) == 1:
                        # The physical line contains only this token.
                        self.blank_lines += 1
                        del self.tokens[0]
                    else:
                        self.check_logical()
        if self.tokens:
            self.check_physical(self.lines[-1])
            self.check_logical()
        return self.report.get_file_results()


class BaseReport:
    """Collect the results of the checks."""

    print_filename = False

    def __init__(self, options):
        self._benchmark_keys = options.benchmark_keys
        self._ignore_code = options.ignore_code
        # Results
        self.elapsed = 0
        self.total_errors = 0
        self.counters = dict.fromkeys(self._benchmark_keys, 0)
        self.messages = {}

    def start(self):
        """Start the timer."""
        self._start_time = time.time()

    def stop(self):
        """Stop the timer."""
        self.elapsed = time.time() - self._start_time

    def init_file(self, filename, lines, expected, line_offset):
        """Signal a new file."""
        self.filename = filename
        self.lines = lines
        self.expected = expected or ()
        self.line_offset = line_offset
        self.file_errors = 0
        self.counters['files'] += 1
        self.counters['physical lines'] += len(lines)

    def increment_logical_line(self):
        """Signal a new logical line."""
        self.counters['logical lines'] += 1

    def error(self, line_number, offset, text, check):
        """Report an error, according to options."""
        code = text[:4]
        if self._ignore_code(code):
            return
        if code in self.counters:
            self.counters[code] += 1
        else:
            self.counters[code] = 1
            self.messages[code] = text[5:]
        # Don't care about expected errors or warnings
        if code in self.expected:
            return
        if self.print_filename and not self.file_errors:
            print(self.filename)
        self.file_errors += 1
        self.total_errors += 1
        return code

    def get_file_results(self):
        """Return the count of errors and warnings for this file."""
        return self.file_errors

    def get_count(self, prefix=''):
        """Return the total count of errors and warnings."""
        return sum(self.counters[key]
                   for key in self.messages if key.startswith(prefix))

    def get_statistics(self, prefix=''):
        """Get statistics for message codes that start with the prefix.

        prefix='' matches all errors and warnings
        prefix='E' matches all errors
        prefix='W' matches all warnings
        prefix='E4' matches all errors that have to do with imports
        """
        return ['%-7s %s %s' % (self.counters[key], key, self.messages[key])
                for key in sorted(self.messages) if key.startswith(prefix)]

    def print_statistics(self, prefix=''):
        """Print overall statistics (number of errors and warnings)."""
        for line in self.get_statistics(prefix):
            print(line)

    def print_benchmark(self):
        """Print benchmark numbers."""
        print('{:<7.2f} {}'.format(self.elapsed, 'seconds elapsed'))
        if self.elapsed:
            for key in self._benchmark_keys:
                print('%-7d %s per second (%d total)' %
                      (self.counters[key] / self.elapsed, key,
                       self.counters[key]))


class FileReport(BaseReport):
    """Collect the results of the checks and print the filenames."""

    print_filename = True


class StandardReport(BaseReport):
    """Collect and print the results of the checks."""

    def __init__(self, options):
        super().__init__(options)
        self._fmt = REPORT_FORMAT.get(options.format.lower(),
                                      options.format)
        self._repeat = options.repeat
        self._show_source = options.show_source
        self._show_pep8 = options.show_pep8

    def init_file(self, filename, lines, expected, line_offset):
        """Signal a new file."""
        self._deferred_print = []
        return super().init_file(
            filename, lines, expected, line_offset)

    def error(self, line_number, offset, text, check):
        """Report an error, according to options."""
        code = super().error(line_number, offset, text, check)
        if code and (self.counters[code] == 1 or self._repeat):
            self._deferred_print.append(
                (line_number, offset, code, text[5:], check.__doc__))
        return code

    def get_file_results(self):
        """Print results and return the overall count for this file."""
        self._deferred_print.sort()
        for line_number, offset, code, text, doc in self._deferred_print:
            print(self._fmt % {
                'path': self.filename,
                'row': self.line_offset + line_number, 'col': offset + 1,
                'code': code, 'text': text,
            })
            if self._show_source:
                if line_number > len(self.lines):
                    line = ''
                else:
                    line = self.lines[line_number - 1]
                print(line.rstrip())
                print(re.sub(r'\S', ' ', line[:offset]) + '^')
            if self._show_pep8 and doc:
                print('    ' + doc.strip())

            # stdout is block buffered when not stdout.isatty().
            # line can be broken where buffer boundary since other
            # processes write to same file.
            # flush() after print() to avoid buffer boundary.
            # Typical buffer size is 8192. line written safely when
            # len(line) < 8192.
            sys.stdout.flush()
        return self.file_errors


class DiffReport(StandardReport):
    """Collect and print the results for the changed lines only."""

    def __init__(self, options):
        super().__init__(options)
        self._selected = options.selected_lines

    def error(self, line_number, offset, text, check):
        if line_number not in self._selected[self.filename]:
            return
        return super().error(line_number, offset, text, check)


class StyleGuide:
    """Initialize a PEP-8 instance with few options."""

    def __init__(self, *args, **kwargs):
        # build options from the command line
        self.checker_class = kwargs.pop('checker_class', Checker)
        parse_argv = kwargs.pop('parse_argv', False)
        config_file = kwargs.pop('config_file', False)
        parser = kwargs.pop('parser', None)
        # build options from dict
        options_dict = dict(*args, **kwargs)
        arglist = None if parse_argv else options_dict.get('paths', None)
        verbose = options_dict.get('verbose', None)
        options, self.paths = process_options(
            arglist, parse_argv, config_file, parser, verbose)
        if options_dict:
            options.__dict__.update(options_dict)
            if 'paths' in options_dict:
                self.paths = options_dict['paths']

        self.runner = self.input_file
        self.options = options

        if not options.reporter:
            options.reporter = BaseReport if options.quiet else StandardReport

        options.select = tuple(options.select or ())
        if not (options.select or options.ignore) and DEFAULT_IGNORE:
            # The default choice: ignore controversial checks
            options.ignore = tuple(DEFAULT_IGNORE.split(','))
        else:
            # Ignore all checks which are not explicitly selected
            options.ignore = ('',) if options.select else tuple(options.ignore)
        options.benchmark_keys = BENCHMARK_KEYS[:]
        options.ignore_code = self.ignore_code
        options.physical_checks = self.get_checks('physical_line')
        options.logical_checks = self.get_checks('logical_line')
        options.ast_checks = self.get_checks('tree')
        self.init_report()

    def init_report(self, reporter=None):
        """Initialize the report instance."""
        self.options.report = (reporter or self.options.reporter)(self.options)
        return self.options.report

    def check_files(self, paths=None):
        """Run all checks on the paths."""
        if paths is None:
            paths = self.paths
        report = self.options.report
        runner = self.runner
        report.start()
        try:
            for path in paths:
                if os.path.isdir(path):
                    self.input_dir(path)
                elif not self.excluded(path):
                    runner(path)
        except KeyboardInterrupt:
            print('... stopped')
        report.stop()
        return report

    def input_file(self, filename, lines=None, expected=None, line_offset=0):
        """Run all checks on a Python source file."""
        if self.options.verbose:
            print('checking %s' % filename)
        fchecker = self.checker_class(
            filename, lines=lines, options=self.options)
        return fchecker.check_all(expected=expected, line_offset=line_offset)

    def input_dir(self, dirname):
        """Check all files in this directory and all subdirectories."""
        dirname = dirname.rstrip('/')
        if self.excluded(dirname):
            return 0
        counters = self.options.report.counters
        verbose = self.options.verbose
        filepatterns = self.options.filename
        runner = self.runner
        for root, dirs, files in os.walk(dirname):
            if verbose:
                print('directory ' + root)
            counters['directories'] += 1
            for subdir in sorted(dirs):
                if self.excluded(subdir, root):
                    dirs.remove(subdir)
            for filename in sorted(files):
                # contain a pattern that matches?
                if (
                    filename_match(filename, filepatterns) and
                    not self.excluded(filename, root)
                ):
                    runner(os.path.join(root, filename))

    def excluded(self, filename, parent=None):
        """Check if the file should be excluded.

        Check if 'options.exclude' contains a pattern matching filename.
        """
        if not self.options.exclude:
            return False
        basename = os.path.basename(filename)
        if filename_match(basename, self.options.exclude):
            return True
        if parent:
            filename = os.path.join(parent, filename)
        filename = os.path.abspath(filename)
        return filename_match(filename, self.options.exclude)

    def ignore_code(self, code):
        """Check if the error code should be ignored.

        If 'options.select' contains a prefix of the error code,
        return False.  Else, if 'options.ignore' contains a prefix of
        the error code, return True.
        """
        if len(code) < 4 and any(s.startswith(code)
                                 for s in self.options.select):
            return False
        return (code.startswith(self.options.ignore) and
                not code.startswith(self.options.select))

    def get_checks(self, argument_name):
        """Get all the checks for this category.

        Find all globally visible functions where the first argument
        name starts with argument_name and which contain selected tests.
        """
        checks = []
        for check, attrs in _checks[argument_name].items():
            (codes, args) = attrs
            if any(not (code and self.ignore_code(code)) for code in codes):
                checks.append((check.__name__, check, args))
        return sorted(checks)


def get_parser(prog='pycodestyle', version=__version__):
    """Create the parser for the program."""
    parser = OptionParser(prog=prog, version=version,
                          usage="%prog [options] input ...")
    parser.config_options = [
        'exclude', 'filename', 'select', 'ignore', 'max-line-length',
        'max-doc-length', 'indent-size', 'hang-closing', 'count', 'format',
        'quiet', 'show-pep8', 'show-source', 'statistics', 'verbose']
    parser.add_option('-v', '--verbose', default=0, action='count',
                      help="print status messages, or debug with -vv")
    parser.add_option('-q', '--quiet', default=0, action='count',
                      help="report only file names, or nothing with -qq")
    parser.add_option('-r', '--repeat', default=True, action='store_true',
                      help="(obsolete) show all occurrences of the same error")
    parser.add_option('--first', action='store_false', dest='repeat',
                      help="show first occurrence of each error")
    parser.add_option('--exclude', metavar='patterns', default=DEFAULT_EXCLUDE,
                      help="exclude files or directories which match these "
                           "comma separated patterns (default: %default)")
    parser.add_option('--filename', metavar='patterns', default='*.py',
                      help="when parsing directories, only check filenames "
                           "matching these comma separated patterns "
                           "(default: %default)")
    parser.add_option('--select', metavar='errors', default='',
                      help="select errors and warnings (e.g. E,W6)")
    parser.add_option('--ignore', metavar='errors', default='',
                      help="skip errors and warnings (e.g. E4,W) "
                           "(default: %s)" % DEFAULT_IGNORE)
    parser.add_option('--show-source', action='store_true',
                      help="show source code for each error")
    parser.add_option('--show-pep8', action='store_true',
                      help="show text of PEP 8 for each error "
                           "(implies --first)")
    parser.add_option('--statistics', action='store_true',
                      help="count errors and warnings")
    parser.add_option('--count', action='store_true',
                      help="print total number of errors and warnings "
                           "to standard error and set exit code to 1 if "
                           "total is not null")
    parser.add_option('--max-line-length', type='int', metavar='n',
                      default=MAX_LINE_LENGTH,
                      help="set maximum allowed line length "
                           "(default: %default)")
    parser.add_option('--max-doc-length', type='int', metavar='n',
                      default=None,
                      help="set maximum allowed doc line length and perform "
                           "these checks (unchecked if not set)")
    parser.add_option('--indent-size', type='int', metavar='n',
                      default=INDENT_SIZE,
                      help="set how many spaces make up an indent "
                           "(default: %default)")
    parser.add_option('--hang-closing', action='store_true',
                      help="hang closing bracket instead of matching "
                           "indentation of opening bracket's line")
    parser.add_option('--format', metavar='format', default='default',
                      help="set the error format [default|pylint|<custom>]")
    parser.add_option('--diff', action='store_true',
                      help="report changes only within line number ranges in "
                           "the unified diff received on STDIN")
    group = parser.add_option_group("Testing Options")
    group.add_option('--benchmark', action='store_true',
                     help="measure processing speed")
    return parser


def read_config(options, args, arglist, parser):
    """Read and parse configurations.

    If a config file is specified on the command line with the
    "--config" option, then only it is used for configuration.

    Otherwise, the user configuration (~/.config/pycodestyle) and any
    local configurations in the current directory or above will be
    merged together (in that order) using the read method of
    ConfigParser.
    """
    config = configparser.RawConfigParser()

    cli_conf = options.config

    local_dir = os.curdir

    if USER_CONFIG and os.path.isfile(USER_CONFIG):
        if options.verbose:
            print('user configuration: %s' % USER_CONFIG)
        config.read(USER_CONFIG)

    parent = tail = args and os.path.abspath(os.path.commonprefix(args))
    while tail:
        if config.read(os.path.join(parent, fn) for fn in PROJECT_CONFIG):
            local_dir = parent
            if options.verbose:
                print('local configuration: in %s' % parent)
            break
        (parent, tail) = os.path.split(parent)

    if cli_conf and os.path.isfile(cli_conf):
        if options.verbose:
            print('cli configuration: %s' % cli_conf)
        config.read(cli_conf)

    pycodestyle_section = None
    if config.has_section(parser.prog):
        pycodestyle_section = parser.prog
    elif config.has_section('pep8'):
        pycodestyle_section = 'pep8'  # Deprecated
        warnings.warn('[pep8] section is deprecated. Use [pycodestyle].')

    if pycodestyle_section:
        option_list = {o.dest: o.type or o.action for o in parser.option_list}

        # First, read the default values
        (new_options, __) = parser.parse_args([])

        # Second, parse the configuration
        for opt in config.options(pycodestyle_section):
            if opt.replace('_', '-') not in parser.config_options:
                print("  unknown option '%s' ignored" % opt)
                continue
            if options.verbose > 1:
                print("  {} = {}".format(opt,
                                         config.get(pycodestyle_section, opt)))
            normalized_opt = opt.replace('-', '_')
            opt_type = option_list[normalized_opt]
            if opt_type in ('int', 'count'):
                value = config.getint(pycodestyle_section, opt)
            elif opt_type in ('store_true', 'store_false'):
                value = config.getboolean(pycodestyle_section, opt)
            else:
                value = config.get(pycodestyle_section, opt)
                if normalized_opt == 'exclude':
                    value = normalize_paths(value, local_dir)
            setattr(new_options, normalized_opt, value)

        # Third, overwrite with the command-line options
        (options, __) = parser.parse_args(arglist, values=new_options)
    return options


def process_options(arglist=None, parse_argv=False, config_file=None,
                    parser=None, verbose=None):
    """Process options passed either via arglist or command line args.

    Passing in the ``config_file`` parameter allows other tools, such as
    flake8 to specify their own options to be processed in pycodestyle.
    """
    if not parser:
        parser = get_parser()
    if not parser.has_option('--config'):
        group = parser.add_option_group("Configuration", description=(
            "The project options are read from the [%s] section of the "
            "tox.ini file or the setup.cfg file located in any parent folder "
            "of the path(s) being processed.  Allowed options are: %s." %
            (parser.prog, ', '.join(parser.config_options))))
        group.add_option('--config', metavar='path', default=config_file,
                         help="user config file location")
    # Don't read the command line if the module is used as a library.
    if not arglist and not parse_argv:
        arglist = []
    # If parse_argv is True and arglist is None, arguments are
    # parsed from the command line (sys.argv)
    (options, args) = parser.parse_args(arglist)
    options.reporter = None

    # If explicitly specified verbosity, override any `-v` CLI flag
    if verbose is not None:
        options.verbose = verbose

    if parse_argv and not args:
        if options.diff or any(os.path.exists(name)
                               for name in PROJECT_CONFIG):
            args = ['.']
        else:
            parser.error('input not specified')
    options = read_config(options, args, arglist, parser)
    options.reporter = parse_argv and options.quiet == 1 and FileReport

    options.filename = _parse_multi_options(options.filename)
    options.exclude = normalize_paths(options.exclude)
    options.select = _parse_multi_options(options.select)
    options.ignore = _parse_multi_options(options.ignore)

    if options.diff:
        options.reporter = DiffReport
        stdin = stdin_get_value()
        options.selected_lines = parse_udiff(stdin, options.filename, args[0])
        args = sorted(options.selected_lines)

    return options, args


def _parse_multi_options(options, split_token=','):
    r"""Split and strip and discard empties.

    Turns the following:

    A,
    B,

    into ["A", "B"]
    """
    if options:
        return [o.strip() for o in options.split(split_token) if o.strip()]
    else:
        return options


def _main():
    """Parse options and run checks on Python source."""
    import signal

    # Handle "Broken pipe" gracefully
    try:
        signal.signal(signal.SIGPIPE, lambda signum, frame: sys.exit(1))
    except AttributeError:
        pass    # not supported on Windows

    style_guide = StyleGuide(parse_argv=True)
    options = style_guide.options

    report = style_guide.check_files()

    if options.statistics:
        report.print_statistics()

    if options.benchmark:
        report.print_benchmark()

    if report.total_errors:
        if options.count:
            sys.stderr.write(str(report.total_errors) + '\n')
        sys.exit(1)


if __name__ == '__main__':
    _main()
+ sed -i '1 i #!/usr/bin/env python3' /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/java/pycharm-community/plugins/python-ce/helpers/pycodestyle-2.10.0.py
+ tail -n +2 /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/java/pycharm-community/plugins/python-ce/helpers/pycodestyle.py
+ sed -i '1 i #!/usr/bin/env python3' /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/java/pycharm-community/plugins/python-ce/helpers/pycodestyle.py
+ /usr/lib/rpm/check-buildroot
+ /usr/lib/rpm/redhat/brp-compress
+ /usr/lib/rpm/redhat/brp-strip /bin/true
+ /usr/lib/rpm/redhat/brp-strip-comment-note /bin/true /usr/bin/objdump
+ /usr/lib/rpm/redhat/brp-strip-static-archive /bin/true
+ /usr/lib/rpm/redhat/brp-python-hardlink
Executing(%check): /bin/sh -e /var/tmp/rpm-tmp.ODCt99
+ umask 022
+ cd /builddir/build/BUILD
+ cd pycharm-community-2024.3.2
+ appstream-util validate-relax --nonet /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/appdata/pycharm-community.metainfo.xml
/builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/appdata/pycharm-community.metainfo.xml: OK
+ desktop-file-validate /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/applications/pycharm-community.desktop
+ exit 0
Processing files: pycharm-community-2024.3.2-1.el7_9.x86_64
Executing(%license): /bin/sh -e /var/tmp/rpm-tmp.I9pApv
+ umask 022
+ cd /builddir/build/BUILD
+ cd pycharm-community-2024.3.2
+ LICENSEDIR=/builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/licenses/pycharm-community-2024.3.2
+ export LICENSEDIR
+ /usr/bin/mkdir -p /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/licenses/pycharm-community-2024.3.2
+ cp -pr license/LICENSE.txt license/NOTICE.txt license/javahelp_license.txt license/javolution_license.txt license/launcher-third-party-libraries.html license/saxon-conditions.html license/third-party-libraries.html license/third-party-libraries.json license/yourkit-license-redist.txt /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/licenses/pycharm-community-2024.3.2
+ exit 0
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LANG = "C.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LANG = "C.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LANG = "C.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LANG = "C.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Provides: application() application(pycharm-community.desktop) mimehandler(application/x-python-code) mimehandler(application/xml) mimehandler(text/markdown) mimehandler(text/plain) mimehandler(text/x-python) pycharm-community = 2024.3.2-1.el7_9 pycharm-community(x86-64) = 2024.3.2-1.el7_9
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: /bin/sh libc.so.6()(64bit) libc.so.6(GLIBC_2.14)(64bit) libc.so.6(GLIBC_2.15)(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.4)(64bit) libc.so.6(GLIBC_2.4)(64bit) libc.so.6(GLIBC_2.9)(64bit) libdl.so.2()(64bit) libdl.so.2(GLIBC_2.2.5)(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libgcc_s.so.1(GCC_3.3)(64bit) libgcc_s.so.1(GCC_4.2.0)(64bit) libpthread.so.0()(64bit) libpthread.so.0(GLIBC_2.12)(64bit) libpthread.so.0(GLIBC_2.2.5)(64bit) librt.so.1()(64bit) librt.so.1(GLIBC_2.2.5)(64bit) rtld(GNU_HASH)
Obsoletes: pycharm-community-jre < 2024.3.2-1.el7_9
Processing files: pycharm-community-doc-2024.3.2-1.el7_9.noarch
Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.w5XOSH
+ umask 022
+ cd /builddir/build/BUILD
+ cd pycharm-community-2024.3.2
+ DOCDIR=/builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/doc/pycharm-community-doc-2024.3.2
+ export DOCDIR
+ /usr/bin/mkdir -p /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/doc/pycharm-community-doc-2024.3.2
+ cp -pr help/ /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/doc/pycharm-community-doc-2024.3.2
+ cp -pr Install-Linux-tar.txt /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64/usr/share/doc/pycharm-community-doc-2024.3.2
+ exit 0
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LANG = "C.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LANG = "C.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LANG = "C.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LANG = "C.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Provides: pycharm-community-doc = 2024.3.2-1.el7_9
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Checking for unpackaged file(s): /usr/lib/rpm/check-files /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64
Wrote: /builddir/build/RPMS/pycharm-community-2024.3.2-1.el7_9.x86_64.rpm
Wrote: /builddir/build/RPMS/pycharm-community-doc-2024.3.2-1.el7_9.noarch.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.QplAvU
+ umask 022
+ cd /builddir/build/BUILD
+ cd pycharm-community-2024.3.2
+ /usr/bin/rm -rf /builddir/build/BUILDROOT/pycharm-community-2024.3.2-1.el7_9.x86_64
+ exit 0
Finish: rpmbuild pycharm-community-2024.3.2-1.el7_9.src.rpm
Finish: build phase for pycharm-community-2024.3.2-1.el7_9.src.rpm
INFO: Done(/var/lib/copr-rpmbuild/results/pycharm-community-2024.3.2-1.el7_9.src.rpm) Config(child) 7 minutes 47 seconds
INFO: Results and/or logs in: /var/lib/copr-rpmbuild/results
INFO: Cleaning up build root ('cleanup_on_success=True')
Start: clean chroot
INFO: unmounting tmpfs.
Finish: clean chroot
Finish: run
Running RPMResults tool
Package info:
{
    "packages": [
        {
            "name": "pycharm-community",
            "epoch": null,
            "version": "2024.3.2",
            "release": "1.el7_9",
            "arch": "src"
        },
        {
            "name": "pycharm-community",
            "epoch": null,
            "version": "2024.3.2",
            "release": "1.el7_9",
            "arch": "x86_64"
        },
        {
            "name": "pycharm-community-doc",
            "epoch": null,
            "version": "2024.3.2",
            "release": "1.el7_9",
            "arch": "noarch"
        }
    ]
}
RPMResults finished