Warning: Permanently added '34.230.64.236' (ED25519) to the list of known hosts. Running: /usr/bin/copr-rpmbuild --verbose --drop-resultdir --build-id 5719083 --chroot fedora-38-x86_64 --detached Version: 0.64 PID: 10527 Logging PID: 10528 Task: {'appstream': False, 'background': True, 'build_id': 5719083, 'buildroot_pkgs': [], 'chroot': 'fedora-38-x86_64', 'enable_net': False, 'fedora_review': False, 'git_hash': '3cf1cf387e90663b6e2d49c753e6e86a94ef6a22', 'git_repo': 'https://copr-dist-git.fedorainfracloud.org/git/@copr/PyPI/python-kcapi', 'isolation': 'default', 'memory_reqs': 2048, 'package_name': 'python-kcapi', 'package_version': '1.1.2-1', 'project_dirname': 'PyPI', 'project_name': 'PyPI', 'project_owner': '@copr', 'repos': [{'baseurl': 'https://download.copr.fedorainfracloud.org/results/@copr/PyPI/fedora-38-x86_64/', 'id': 'copr_base', 'name': 'Copr repository'}], 'sandbox': '@copr/PyPI--ksurma', 'source_json': {}, 'source_type': None, 'submitter': 'ksurma', 'tags': [], 'task_id': '5719083-fedora-38-x86_64', 'timeout': 18000, 'uses_devel_repo': False, 'with_opts': [], 'without_opts': []} Running: git clone https://copr-dist-git.fedorainfracloud.org/git/@copr/PyPI/python-kcapi /var/lib/copr-rpmbuild/workspace/workdir-btjrufgw/python-kcapi --depth 500 --no-single-branch --recursive cmd: ['git', 'clone', 'https://copr-dist-git.fedorainfracloud.org/git/@copr/PyPI/python-kcapi', '/var/lib/copr-rpmbuild/workspace/workdir-btjrufgw/python-kcapi', '--depth', '500', '--no-single-branch', '--recursive'] cwd: . rc: 0 stdout: stderr: Cloning into '/var/lib/copr-rpmbuild/workspace/workdir-btjrufgw/python-kcapi'... Running: git checkout 3cf1cf387e90663b6e2d49c753e6e86a94ef6a22 cmd: ['git', 'checkout', '3cf1cf387e90663b6e2d49c753e6e86a94ef6a22'] cwd: /var/lib/copr-rpmbuild/workspace/workdir-btjrufgw/python-kcapi rc: 0 stdout: stderr: Note: switching to '3cf1cf387e90663b6e2d49c753e6e86a94ef6a22'. 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 Or undo this operation with: git switch - Turn off this advice by setting config variable advice.detachedHead to false HEAD is now at 3cf1cf3 automatic import of python-kcapi Running: copr-distgit-client sources cmd: ['copr-distgit-client', 'sources'] cwd: /var/lib/copr-rpmbuild/workspace/workdir-btjrufgw/python-kcapi 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 kcapi-1.1.2.tar.gz INFO: Calling: curl -H Pragma: -o kcapi-1.1.2.tar.gz --location --remote-time --show-error --fail https://copr-dist-git.fedorainfracloud.org/repo/pkgs/@copr/PyPI/python-kcapi/kcapi-1.1.2.tar.gz/md5/21575af3cdc093efb935c8be67dcfd80/kcapi-1.1.2.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 31152 100 31152 0 0 777k 0 --:--:-- --:--:-- --:--:-- 780k INFO: Reading stdout from command: md5sum kcapi-1.1.2.tar.gz /usr/bin/tail: /var/lib/copr-rpmbuild/main.log: file truncated Running (timeout=18000): unbuffer mock --buildsrpm --spec /var/lib/copr-rpmbuild/workspace/workdir-btjrufgw/python-kcapi/python-kcapi.spec --sources /var/lib/copr-rpmbuild/workspace/workdir-btjrufgw/python-kcapi --resultdir /var/lib/copr-rpmbuild/results --uniqueext 1680034723.105560 -r /var/lib/copr-rpmbuild/results/configs/child.cfg INFO: mock.py version 3.5 starting (python version = 3.11.0, NVR = mock-3.5-1.fc37)... 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-btjrufgw/python-kcapi/python-kcapi.spec) Config(fedora-38-x86_64) Start: clean chroot Finish: clean chroot Start(bootstrap): chroot init INFO: mounting tmpfs at /var/lib/mock/fedora-38-x86_64-bootstrap-1680034723.105560/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: enabled HW Info plugin Mock Version: 3.5 INFO: Mock Version: 3.5 Start(bootstrap): dnf install 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 108 MB/s | 20 MB 00:00 fedora 51 MB/s | 83 MB 00:01 updates 1.7 kB/s | 257 B 00:00 Dependencies resolved. ================================================================================ Package Arch Version Repo Size ================================================================================ Installing: dnf noarch 4.14.0-2.fc38 fedora 478 k dnf-plugins-core noarch 4.3.1-2.fc38 fedora 33 k Installing dependencies: alternatives x86_64 1.22-1.fc38 fedora 38 k audit-libs x86_64 3.1-2.fc38 fedora 117 k basesystem noarch 11-15.fc38 fedora 7.0 k bash x86_64 5.2.15-3.fc38 fedora 1.8 M bzip2-libs x86_64 1.0.8-13.fc38 fedora 41 k ca-certificates noarch 2023.2.60-2.fc38 fedora 845 k coreutils x86_64 9.1-11.fc38 fedora 1.1 M coreutils-common x86_64 9.1-11.fc38 fedora 2.0 M crypto-policies noarch 20230301-1.gita12f7b2.fc38 fedora 93 k curl x86_64 7.87.0-6.fc38 fedora 346 k cyrus-sasl-lib x86_64 2.1.28-9.fc38 fedora 794 k dbus-libs x86_64 1:1.14.6-1.fc38 fedora 156 k dnf-data noarch 4.14.0-2.fc38 fedora 40 k elfutils-default-yama-scope noarch 0.189-1.fc38 fedora 15 k elfutils-libelf x86_64 0.189-1.fc38 fedora 196 k elfutils-libs x86_64 0.189-1.fc38 fedora 260 k expat x86_64 2.5.0-2.fc38 fedora 110 k fedora-gpg-keys noarch 38-0.5 fedora 126 k fedora-release noarch 38-0.30 fedora 12 k fedora-release-common noarch 38-0.30 fedora 22 k fedora-release-identity-basic noarch 38-0.30 fedora 13 k fedora-repos noarch 38-0.5 fedora 9.4 k file-libs x86_64 5.44-3.fc38 fedora 730 k filesystem x86_64 3.18-3.fc38 fedora 1.1 M findutils x86_64 1:4.9.0-3.fc38 fedora 492 k gawk x86_64 5.1.1-5.fc38 fedora 1.0 M gdbm-libs x86_64 1:1.23-3.fc38 fedora 56 k glib2 x86_64 2.76.1-1.fc38 fedora 2.8 M glibc x86_64 2.37-1.fc38 fedora 2.1 M glibc-common x86_64 2.37-1.fc38 fedora 313 k glibc-minimal-langpack x86_64 2.37-1.fc38 fedora 35 k gmp x86_64 1:6.2.1-4.fc38 fedora 313 k gnupg2 x86_64 2.4.0-3.fc38 fedora 2.6 M gnutls x86_64 3.8.0-2.fc38 fedora 1.1 M gpgme x86_64 1.17.1-3.fc38 fedora 210 k grep x86_64 3.8-3.fc38 fedora 293 k ima-evm-utils x86_64 1.4-7.fc38 fedora 62 k json-c x86_64 0.16-4.fc38 fedora 41 k keyutils-libs x86_64 1.6.1-6.fc38 fedora 31 k krb5-libs x86_64 1.20.1-8.fc38 fedora 727 k libacl x86_64 2.3.1-6.fc38 fedora 23 k libarchive x86_64 3.6.1-4.fc38 fedora 400 k libassuan x86_64 2.5.5-6.fc38 fedora 67 k libattr x86_64 2.5.1-6.fc38 fedora 18 k libb2 x86_64 0.98.1-8.fc38 fedora 25 k libblkid x86_64 2.38.1-4.fc38 fedora 106 k libbrotli x86_64 1.0.9-11.fc38 fedora 317 k libcap x86_64 2.48-6.fc38 fedora 67 k libcap-ng x86_64 0.8.3-5.fc38 fedora 32 k libcom_err x86_64 1.46.5-4.fc38 fedora 26 k libcomps x86_64 0.1.18-6.fc38 fedora 77 k libcurl x86_64 7.87.0-6.fc38 fedora 304 k libdnf x86_64 0.68.0-2.fc38 fedora 662 k libeconf x86_64 0.4.0-5.fc38 fedora 27 k libevent x86_64 2.1.12-8.fc38 fedora 257 k libffi x86_64 3.4.4-2.fc38 fedora 38 k libfsverity x86_64 1.4-9.fc38 fedora 19 k libgcc x86_64 13.0.1-0.8.fc38 fedora 102 k libgcrypt x86_64 1.10.1-7.fc38 fedora 511 k libgomp x86_64 13.0.1-0.8.fc38 fedora 310 k libgpg-error x86_64 1.46-2.fc38 fedora 228 k libidn2 x86_64 2.3.4-2.fc38 fedora 160 k libksba x86_64 1.6.3-2.fc38 fedora 159 k libmodulemd x86_64 2.14.0-5.fc38 fedora 233 k libmount x86_64 2.38.1-4.fc38 fedora 135 k libnghttp2 x86_64 1.52.0-1.fc38 fedora 75 k libnsl2 x86_64 2.0.0-5.fc38 fedora 30 k libpsl x86_64 0.21.2-2.fc38 fedora 65 k librepo x86_64 1.15.1-2.fc38 fedora 96 k libreport-filesystem noarch 2.17.9-1.fc38 fedora 15 k libselinux x86_64 3.5-1.fc38 fedora 87 k libsemanage x86_64 3.5-2.fc38 fedora 120 k libsepol x86_64 3.5-1.fc38 fedora 324 k libsigsegv x86_64 2.14-4.fc38 fedora 27 k libsmartcols x86_64 2.38.1-4.fc38 fedora 64 k libsolv x86_64 0.7.22-4.fc38 fedora 412 k libssh x86_64 0.10.4-4.fc38 fedora 209 k libssh-config noarch 0.10.4-4.fc38 fedora 8.9 k libstdc++ x86_64 13.0.1-0.8.fc38 fedora 852 k libtasn1 x86_64 4.19.0-2.fc38 fedora 74 k libtirpc x86_64 1.3.3-1.fc38 fedora 94 k libunistring x86_64 1.1-3.fc38 fedora 545 k libunistring1.0 x86_64 1.0-1.fc38 fedora 539 k libuuid x86_64 2.38.1-4.fc38 fedora 28 k libverto x86_64 0.3.2-5.fc38 fedora 21 k libxcrypt x86_64 4.4.33-7.fc38 fedora 120 k libxml2 x86_64 2.10.3-3.fc38 fedora 700 k libyaml x86_64 0.2.5-9.fc38 fedora 59 k libzstd x86_64 1.5.4-1.fc38 fedora 302 k lua-libs x86_64 5.4.4-9.fc38 fedora 133 k lz4-libs x86_64 1.9.4-2.fc38 fedora 67 k mpdecimal x86_64 2.5.1-6.fc38 fedora 89 k mpfr x86_64 4.1.1-3.fc38 fedora 600 k ncurses-base noarch 6.4-3.20230114.fc38 fedora 87 k ncurses-libs x86_64 6.4-3.20230114.fc38 fedora 333 k nettle x86_64 3.8-3.fc38 fedora 412 k npth x86_64 1.6-12.fc38 fedora 24 k openldap x86_64 2.6.4-1.fc38 fedora 254 k openssl-libs x86_64 1:3.0.8-2.fc38 fedora 2.1 M p11-kit x86_64 0.24.1-6.fc38 fedora 359 k p11-kit-trust x86_64 0.24.1-6.fc38 fedora 136 k pcre2 x86_64 10.42-1.fc38.1 fedora 234 k pcre2-syntax noarch 10.42-1.fc38.1 fedora 144 k popt x86_64 1.19-2.fc38 fedora 67 k publicsuffix-list-dafsa noarch 20221208-2.fc38 fedora 59 k python-pip-wheel noarch 22.3.1-2.fc38 fedora 1.4 M python-setuptools-wheel noarch 65.5.1-2.fc38 fedora 715 k python3 x86_64 3.11.2-1.fc38 fedora 28 k python3-dateutil noarch 1:2.8.2-5.fc38 fedora 360 k python3-dbus x86_64 1.3.2-2.fc38 fedora 157 k python3-distro noarch 1.8.0-2.fc38 fedora 49 k python3-dnf noarch 4.14.0-2.fc38 fedora 604 k python3-dnf-plugins-core noarch 4.3.1-2.fc38 fedora 277 k python3-gpg x86_64 1.17.1-3.fc38 fedora 296 k python3-hawkey x86_64 0.68.0-2.fc38 fedora 108 k python3-libcomps x86_64 0.1.18-6.fc38 fedora 47 k python3-libdnf x86_64 0.68.0-2.fc38 fedora 823 k python3-libs x86_64 3.11.2-1.fc38 fedora 9.6 M python3-rpm x86_64 4.18.1-1.fc38 fedora 72 k python3-six noarch 1.16.0-9.fc38 fedora 42 k readline x86_64 8.2-3.fc38 fedora 212 k rpm x86_64 4.18.1-1.fc38 fedora 571 k rpm-build-libs x86_64 4.18.1-1.fc38 fedora 94 k rpm-libs x86_64 4.18.1-1.fc38 fedora 313 k rpm-sequoia x86_64 1.3.0-1.fc38 fedora 855 k rpm-sign-libs x86_64 4.18.1-1.fc38 fedora 26 k sed x86_64 4.8-12.fc38 fedora 306 k setup noarch 2.14.3-2.fc38 fedora 152 k shadow-utils x86_64 2:4.13-6.fc38 fedora 1.3 M sqlite-libs x86_64 3.40.1-2.fc38 fedora 666 k systemd-libs x86_64 253-6.fc38 fedora 652 k tpm2-tss x86_64 4.0.1-3.fc38 fedora 675 k tzdata noarch 2022g-2.fc38 fedora 716 k xz-libs x86_64 5.4.1-1.fc38 fedora 108 k zchunk-libs x86_64 1.3.0-1.fc38 fedora 51 k zlib x86_64 1.2.13-3.fc38 fedora 95 k Transaction Summary ================================================================================ Install 138 Packages Total download size: 58 M Installed size: 202 M Downloading Packages: (1/138): alternatives-1.22-1.fc38.x86_64.rpm 656 kB/s | 38 kB 00:00 (2/138): basesystem-11-15.fc38.noarch.rpm 119 kB/s | 7.0 kB 00:00 (3/138): audit-libs-3.1-2.fc38.x86_64.rpm 1.9 MB/s | 117 kB 00:00 (4/138): bzip2-libs-1.0.8-13.fc38.x86_64.rpm 5.3 MB/s | 41 kB 00:00 (5/138): bash-5.2.15-3.fc38.x86_64.rpm 130 MB/s | 1.8 MB 00:00 (6/138): ca-certificates-2023.2.60-2.fc38.noarc 58 MB/s | 845 kB 00:00 (7/138): coreutils-9.1-11.fc38.x86_64.rpm 128 MB/s | 1.1 MB 00:00 (8/138): coreutils-common-9.1-11.fc38.x86_64.rp 235 MB/s | 2.0 MB 00:00 (9/138): crypto-policies-20230301-1.gita12f7b2. 18 MB/s | 93 kB 00:00 (10/138): curl-7.87.0-6.fc38.x86_64.rpm 60 MB/s | 346 kB 00:00 (11/138): dbus-libs-1.14.6-1.fc38.x86_64.rpm 58 MB/s | 156 kB 00:00 (12/138): dnf-4.14.0-2.fc38.noarch.rpm 94 MB/s | 478 kB 00:00 (13/138): cyrus-sasl-lib-2.1.28-9.fc38.x86_64.r 102 MB/s | 794 kB 00:00 (14/138): dnf-data-4.14.0-2.fc38.noarch.rpm 15 MB/s | 40 kB 00:00 (15/138): dnf-plugins-core-4.3.1-2.fc38.noarch. 16 MB/s | 33 kB 00:00 (16/138): elfutils-default-yama-scope-0.189-1.f 7.2 MB/s | 15 kB 00:00 (17/138): elfutils-libelf-0.189-1.fc38.x86_64.r 57 MB/s | 196 kB 00:00 (18/138): elfutils-libs-0.189-1.fc38.x86_64.rpm 63 MB/s | 260 kB 00:00 (19/138): expat-2.5.0-2.fc38.x86_64.rpm 34 MB/s | 110 kB 00:00 (20/138): fedora-gpg-keys-38-0.5.noarch.rpm 47 MB/s | 126 kB 00:00 (21/138): fedora-release-38-0.30.noarch.rpm 6.2 MB/s | 12 kB 00:00 (22/138): fedora-release-common-38-0.30.noarch. 8.7 MB/s | 22 kB 00:00 (23/138): fedora-release-identity-basic-38-0.30 9.2 MB/s | 13 kB 00:00 (24/138): fedora-repos-38-0.5.noarch.rpm 5.9 MB/s | 9.4 kB 00:00 (25/138): file-libs-5.44-3.fc38.x86_64.rpm 141 MB/s | 730 kB 00:00 (26/138): filesystem-3.18-3.fc38.x86_64.rpm 150 MB/s | 1.1 MB 00:00 (27/138): findutils-4.9.0-3.fc38.x86_64.rpm 67 MB/s | 492 kB 00:00 (28/138): gawk-5.1.1-5.fc38.x86_64.rpm 200 MB/s | 1.0 MB 00:00 (29/138): gdbm-libs-1.23-3.fc38.x86_64.rpm 17 MB/s | 56 kB 00:00 (30/138): glib2-2.76.1-1.fc38.x86_64.rpm 231 MB/s | 2.8 MB 00:00 (31/138): glibc-2.37-1.fc38.x86_64.rpm 151 MB/s | 2.1 MB 00:00 (32/138): glibc-common-2.37-1.fc38.x86_64.rpm 25 MB/s | 313 kB 00:00 (33/138): glibc-minimal-langpack-2.37-1.fc38.x8 8.0 MB/s | 35 kB 00:00 (34/138): gmp-6.2.1-4.fc38.x86_64.rpm 95 MB/s | 313 kB 00:00 (35/138): gnutls-3.8.0-2.fc38.x86_64.rpm 132 MB/s | 1.1 MB 00:00 (36/138): gpgme-1.17.1-3.fc38.x86_64.rpm 39 MB/s | 210 kB 00:00 (37/138): gnupg2-2.4.0-3.fc38.x86_64.rpm 183 MB/s | 2.6 MB 00:00 (38/138): grep-3.8-3.fc38.x86_64.rpm 51 MB/s | 293 kB 00:00 (39/138): ima-evm-utils-1.4-7.fc38.x86_64.rpm 14 MB/s | 62 kB 00:00 (40/138): json-c-0.16-4.fc38.x86_64.rpm 24 MB/s | 41 kB 00:00 (41/138): keyutils-libs-1.6.1-6.fc38.x86_64.rpm 13 MB/s | 31 kB 00:00 (42/138): libacl-2.3.1-6.fc38.x86_64.rpm 10 MB/s | 23 kB 00:00 (43/138): krb5-libs-1.20.1-8.fc38.x86_64.rpm 127 MB/s | 727 kB 00:00 (44/138): libassuan-2.5.5-6.fc38.x86_64.rpm 26 MB/s | 67 kB 00:00 (45/138): libarchive-3.6.1-4.fc38.x86_64.rpm 74 MB/s | 400 kB 00:00 (46/138): libattr-2.5.1-6.fc38.x86_64.rpm 9.1 MB/s | 18 kB 00:00 (47/138): libb2-0.98.1-8.fc38.x86_64.rpm 16 MB/s | 25 kB 00:00 (48/138): libcap-2.48-6.fc38.x86_64.rpm 31 MB/s | 67 kB 00:00 (49/138): libblkid-2.38.1-4.fc38.x86_64.rpm 25 MB/s | 106 kB 00:00 (50/138): libbrotli-1.0.9-11.fc38.x86_64.rpm 72 MB/s | 317 kB 00:00 (51/138): libcap-ng-0.8.3-5.fc38.x86_64.rpm 20 MB/s | 32 kB 00:00 (52/138): libcom_err-1.46.5-4.fc38.x86_64.rpm 13 MB/s | 26 kB 00:00 (53/138): libcomps-0.1.18-6.fc38.x86_64.rpm 30 MB/s | 77 kB 00:00 (54/138): libcurl-7.87.0-6.fc38.x86_64.rpm 90 MB/s | 304 kB 00:00 (55/138): libeconf-0.4.0-5.fc38.x86_64.rpm 15 MB/s | 27 kB 00:00 (56/138): libdnf-0.68.0-2.fc38.x86_64.rpm 120 MB/s | 662 kB 00:00 (57/138): libffi-3.4.4-2.fc38.x86_64.rpm 10 MB/s | 38 kB 00:00 (58/138): libevent-2.1.12-8.fc38.x86_64.rpm 48 MB/s | 257 kB 00:00 (59/138): libfsverity-1.4-9.fc38.x86_64.rpm 9.7 MB/s | 19 kB 00:00 (60/138): libgcc-13.0.1-0.8.fc38.x86_64.rpm 47 MB/s | 102 kB 00:00 (61/138): libgcrypt-1.10.1-7.fc38.x86_64.rpm 123 MB/s | 511 kB 00:00 (62/138): libgomp-13.0.1-0.8.fc38.x86_64.rpm 71 MB/s | 310 kB 00:00 (63/138): libgpg-error-1.46-2.fc38.x86_64.rpm 50 MB/s | 228 kB 00:00 (64/138): libidn2-2.3.4-2.fc38.x86_64.rpm 66 MB/s | 160 kB 00:00 (65/138): libksba-1.6.3-2.fc38.x86_64.rpm 47 MB/s | 159 kB 00:00 (66/138): libmodulemd-2.14.0-5.fc38.x86_64.rpm 72 MB/s | 233 kB 00:00 (67/138): libmount-2.38.1-4.fc38.x86_64.rpm 40 MB/s | 135 kB 00:00 (68/138): libnsl2-2.0.0-5.fc38.x86_64.rpm 17 MB/s | 30 kB 00:00 (69/138): libnghttp2-1.52.0-1.fc38.x86_64.rpm 28 MB/s | 75 kB 00:00 (70/138): libpsl-0.21.2-2.fc38.x86_64.rpm 28 MB/s | 65 kB 00:00 (71/138): librepo-1.15.1-2.fc38.x86_64.rpm 47 MB/s | 96 kB 00:00 (72/138): libreport-filesystem-2.17.9-1.fc38.no 8.4 MB/s | 15 kB 00:00 (73/138): libselinux-3.5-1.fc38.x86_64.rpm 38 MB/s | 87 kB 00:00 (74/138): libsemanage-3.5-2.fc38.x86_64.rpm 63 MB/s | 120 kB 00:00 (75/138): libsigsegv-2.14-4.fc38.x86_64.rpm 16 MB/s | 27 kB 00:00 (76/138): libsepol-3.5-1.fc38.x86_64.rpm 91 MB/s | 324 kB 00:00 (77/138): libsmartcols-2.38.1-4.fc38.x86_64.rpm 22 MB/s | 64 kB 00:00 (78/138): libsolv-0.7.22-4.fc38.x86_64.rpm 112 MB/s | 412 kB 00:00 (79/138): libssh-config-0.10.4-4.fc38.noarch.rp 3.5 MB/s | 8.9 kB 00:00 (80/138): libssh-0.10.4-4.fc38.x86_64.rpm 55 MB/s | 209 kB 00:00 (81/138): libtasn1-4.19.0-2.fc38.x86_64.rpm 26 MB/s | 74 kB 00:00 (82/138): libstdc++-13.0.1-0.8.fc38.x86_64.rpm 152 MB/s | 852 kB 00:00 (83/138): libtirpc-1.3.3-1.fc38.x86_64.rpm 21 MB/s | 94 kB 00:00 (84/138): libunistring-1.1-3.fc38.x86_64.rpm 155 MB/s | 545 kB 00:00 (85/138): libuuid-2.38.1-4.fc38.x86_64.rpm 11 MB/s | 28 kB 00:00 (86/138): libunistring1.0-1.0-1.fc38.x86_64.rpm 127 MB/s | 539 kB 00:00 (87/138): libverto-0.3.2-5.fc38.x86_64.rpm 8.4 MB/s | 21 kB 00:00 (88/138): libxcrypt-4.4.33-7.fc38.x86_64.rpm 59 MB/s | 120 kB 00:00 (89/138): libxml2-2.10.3-3.fc38.x86_64.rpm 162 MB/s | 700 kB 00:00 (90/138): libyaml-0.2.5-9.fc38.x86_64.rpm 13 MB/s | 59 kB 00:00 (91/138): libzstd-1.5.4-1.fc38.x86_64.rpm 66 MB/s | 302 kB 00:00 (92/138): lua-libs-5.4.4-9.fc38.x86_64.rpm 64 MB/s | 133 kB 00:00 (93/138): lz4-libs-1.9.4-2.fc38.x86_64.rpm 31 MB/s | 67 kB 00:00 (94/138): mpdecimal-2.5.1-6.fc38.x86_64.rpm 32 MB/s | 89 kB 00:00 (95/138): ncurses-base-6.4-3.20230114.fc38.noar 34 MB/s | 87 kB 00:00 (96/138): mpfr-4.1.1-3.fc38.x86_64.rpm 113 MB/s | 600 kB 00:00 (97/138): ncurses-libs-6.4-3.20230114.fc38.x86_ 71 MB/s | 333 kB 00:00 (98/138): nettle-3.8-3.fc38.x86_64.rpm 118 MB/s | 412 kB 00:00 (99/138): npth-1.6-12.fc38.x86_64.rpm 10 MB/s | 24 kB 00:00 (100/138): openldap-2.6.4-1.fc38.x86_64.rpm 64 MB/s | 254 kB 00:00 (101/138): p11-kit-0.24.1-6.fc38.x86_64.rpm 67 MB/s | 359 kB 00:00 (102/138): openssl-libs-3.0.8-2.fc38.x86_64.rpm 205 MB/s | 2.1 MB 00:00 (103/138): p11-kit-trust-0.24.1-6.fc38.x86_64.r 19 MB/s | 136 kB 00:00 (104/138): pcre2-10.42-1.fc38.1.x86_64.rpm 56 MB/s | 234 kB 00:00 (105/138): popt-1.19-2.fc38.x86_64.rpm 27 MB/s | 67 kB 00:00 (106/138): pcre2-syntax-10.42-1.fc38.1.noarch.r 43 MB/s | 144 kB 00:00 (107/138): publicsuffix-list-dafsa-20221208-2.f 18 MB/s | 59 kB 00:00 (108/138): python-pip-wheel-22.3.1-2.fc38.noarc 250 MB/s | 1.4 MB 00:00 (109/138): python-setuptools-wheel-65.5.1-2.fc3 98 MB/s | 715 kB 00:00 (110/138): python3-3.11.2-1.fc38.x86_64.rpm 4.1 MB/s | 28 kB 00:00 (111/138): python3-dateutil-2.8.2-5.fc38.noarch 109 MB/s | 360 kB 00:00 (112/138): python3-dbus-1.3.2-2.fc38.x86_64.rpm 58 MB/s | 157 kB 00:00 (113/138): python3-distro-1.8.0-2.fc38.noarch.r 15 MB/s | 49 kB 00:00 (114/138): python3-dnf-4.14.0-2.fc38.noarch.rpm 137 MB/s | 604 kB 00:00 (115/138): python3-dnf-plugins-core-4.3.1-2.fc3 56 MB/s | 277 kB 00:00 (116/138): python3-gpg-1.17.1-3.fc38.x86_64.rpm 57 MB/s | 296 kB 00:00 (117/138): python3-hawkey-0.68.0-2.fc38.x86_64. 49 MB/s | 108 kB 00:00 (118/138): python3-libcomps-0.1.18-6.fc38.x86_6 27 MB/s | 47 kB 00:00 (119/138): python3-libdnf-0.68.0-2.fc38.x86_64. 69 MB/s | 823 kB 00:00 (120/138): python3-rpm-4.18.1-1.fc38.x86_64.rpm 5.9 MB/s | 72 kB 00:00 (121/138): python3-six-1.16.0-9.fc38.noarch.rpm 5.0 MB/s | 42 kB 00:00 (122/138): python3-libs-3.11.2-1.fc38.x86_64.rp 314 MB/s | 9.6 MB 00:00 (123/138): readline-8.2-3.fc38.x86_64.rpm 13 MB/s | 212 kB 00:00 (124/138): rpm-4.18.1-1.fc38.x86_64.rpm 45 MB/s | 571 kB 00:00 (125/138): rpm-build-libs-4.18.1-1.fc38.x86_64. 38 MB/s | 94 kB 00:00 (126/138): rpm-libs-4.18.1-1.fc38.x86_64.rpm 69 MB/s | 313 kB 00:00 (127/138): rpm-sequoia-1.3.0-1.fc38.x86_64.rpm 142 MB/s | 855 kB 00:00 (128/138): rpm-sign-libs-4.18.1-1.fc38.x86_64.r 5.6 MB/s | 26 kB 00:00 (129/138): sed-4.8-12.fc38.x86_64.rpm 104 MB/s | 306 kB 00:00 (130/138): setup-2.14.3-2.fc38.noarch.rpm 57 MB/s | 152 kB 00:00 (131/138): shadow-utils-4.13-6.fc38.x86_64.rpm 173 MB/s | 1.3 MB 00:00 (132/138): sqlite-libs-3.40.1-2.fc38.x86_64.rpm 84 MB/s | 666 kB 00:00 (133/138): systemd-libs-253-6.fc38.x86_64.rpm 84 MB/s | 652 kB 00:00 (134/138): tpm2-tss-4.0.1-3.fc38.x86_64.rpm 144 MB/s | 675 kB 00:00 (135/138): xz-libs-5.4.1-1.fc38.x86_64.rpm 49 MB/s | 108 kB 00:00 (136/138): tzdata-2022g-2.fc38.noarch.rpm 152 MB/s | 716 kB 00:00 (137/138): zchunk-libs-1.3.0-1.fc38.x86_64.rpm 14 MB/s | 51 kB 00:00 (138/138): zlib-1.2.13-3.fc38.x86_64.rpm 32 MB/s | 95 kB 00:00 -------------------------------------------------------------------------------- Total 143 MB/s | 58 MB 00:00 fedora 1.6 MB/s | 1.6 kB 00:00 Importing GPG key 0xEB10B464: Userid : "Fedora (38) " Fingerprint: 6A51 BBAB BA3D 5467 B617 1221 809A 8D7C EB10 B464 From : /usr/share/distribution-gpg-keys/fedora/RPM-GPG-KEY-fedora-38-primary Key imported successfully Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Running scriptlet: filesystem-3.18-3.fc38.x86_64 1/1 Preparing : 1/1 Installing : libgcc-13.0.1-0.8.fc38.x86_64 1/138 Running scriptlet: libgcc-13.0.1-0.8.fc38.x86_64 1/138 Installing : tzdata-2022g-2.fc38.noarch 2/138 Installing : crypto-policies-20230301-1.gita12f7b2.fc38.noarc 3/138 Running scriptlet: crypto-policies-20230301-1.gita12f7b2.fc38.noarc 3/138 Installing : fedora-release-identity-basic-38-0.30.noarch 4/138 Installing : python-setuptools-wheel-65.5.1-2.fc38.noarch 5/138 Installing : publicsuffix-list-dafsa-20221208-2.fc38.noarch 6/138 Installing : pcre2-syntax-10.42-1.fc38.1.noarch 7/138 Installing : ncurses-base-6.4-3.20230114.fc38.noarch 8/138 Installing : libssh-config-0.10.4-4.fc38.noarch 9/138 Installing : libreport-filesystem-2.17.9-1.fc38.noarch 10/138 Installing : dnf-data-4.14.0-2.fc38.noarch 11/138 warning: /etc/dnf/dnf.conf created as /etc/dnf/dnf.conf.rpmnew Installing : fedora-gpg-keys-38-0.5.noarch 12/138 Installing : fedora-release-38-0.30.noarch 13/138 Installing : fedora-repos-38-0.5.noarch 14/138 Installing : fedora-release-common-38-0.30.noarch 15/138 Installing : setup-2.14.3-2.fc38.noarch 16/138 Running scriptlet: setup-2.14.3-2.fc38.noarch 16/138 Installing : filesystem-3.18-3.fc38.x86_64 17/138 Installing : basesystem-11-15.fc38.noarch 18/138 Installing : glibc-minimal-langpack-2.37-1.fc38.x86_64 19/138 Installing : glibc-common-2.37-1.fc38.x86_64 20/138 Running scriptlet: glibc-2.37-1.fc38.x86_64 21/138 Installing : glibc-2.37-1.fc38.x86_64 21/138 Running scriptlet: glibc-2.37-1.fc38.x86_64 21/138 Installing : ncurses-libs-6.4-3.20230114.fc38.x86_64 22/138 Installing : bash-5.2.15-3.fc38.x86_64 23/138 Running scriptlet: bash-5.2.15-3.fc38.x86_64 23/138 Installing : zlib-1.2.13-3.fc38.x86_64 24/138 Installing : bzip2-libs-1.0.8-13.fc38.x86_64 25/138 Installing : libzstd-1.5.4-1.fc38.x86_64 26/138 Installing : xz-libs-5.4.1-1.fc38.x86_64 27/138 Installing : sqlite-libs-3.40.1-2.fc38.x86_64 28/138 Installing : libcap-2.48-6.fc38.x86_64 29/138 Installing : gmp-1:6.2.1-4.fc38.x86_64 30/138 Installing : libgpg-error-1.46-2.fc38.x86_64 31/138 Installing : popt-1.19-2.fc38.x86_64 32/138 Installing : libxml2-2.10.3-3.fc38.x86_64 33/138 Installing : libuuid-2.38.1-4.fc38.x86_64 34/138 Installing : lua-libs-5.4.4-9.fc38.x86_64 35/138 Installing : elfutils-libelf-0.189-1.fc38.x86_64 36/138 Installing : file-libs-5.44-3.fc38.x86_64 37/138 Installing : readline-8.2-3.fc38.x86_64 38/138 Installing : libattr-2.5.1-6.fc38.x86_64 39/138 Installing : libacl-2.3.1-6.fc38.x86_64 40/138 Installing : libffi-3.4.4-2.fc38.x86_64 41/138 Installing : p11-kit-0.24.1-6.fc38.x86_64 42/138 Installing : libstdc++-13.0.1-0.8.fc38.x86_64 43/138 Installing : libxcrypt-4.4.33-7.fc38.x86_64 44/138 Installing : pcre2-10.42-1.fc38.1.x86_64 45/138 Installing : libassuan-2.5.5-6.fc38.x86_64 46/138 Installing : expat-2.5.0-2.fc38.x86_64 47/138 Installing : gdbm-libs-1:1.23-3.fc38.x86_64 48/138 Installing : json-c-0.16-4.fc38.x86_64 49/138 Installing : keyutils-libs-1.6.1-6.fc38.x86_64 50/138 Installing : libcom_err-1.46.5-4.fc38.x86_64 51/138 Installing : libgomp-13.0.1-0.8.fc38.x86_64 52/138 Installing : libsepol-3.5-1.fc38.x86_64 53/138 Installing : libselinux-3.5-1.fc38.x86_64 54/138 Installing : sed-4.8-12.fc38.x86_64 55/138 Installing : libsmartcols-2.38.1-4.fc38.x86_64 56/138 Installing : libtasn1-4.19.0-2.fc38.x86_64 57/138 Installing : libunistring1.0-1.0-1.fc38.x86_64 58/138 Installing : libidn2-2.3.4-2.fc38.x86_64 59/138 Installing : lz4-libs-1.9.4-2.fc38.x86_64 60/138 Installing : systemd-libs-253-6.fc38.x86_64 61/138 Installing : dbus-libs-1:1.14.6-1.fc38.x86_64 62/138 Installing : libpsl-0.21.2-2.fc38.x86_64 63/138 Installing : findutils-1:4.9.0-3.fc38.x86_64 64/138 Installing : libb2-0.98.1-8.fc38.x86_64 65/138 Installing : cyrus-sasl-lib-2.1.28-9.fc38.x86_64 66/138 Installing : libcomps-0.1.18-6.fc38.x86_64 67/138 Installing : grep-3.8-3.fc38.x86_64 68/138 Installing : libblkid-2.38.1-4.fc38.x86_64 69/138 Installing : libmount-2.38.1-4.fc38.x86_64 70/138 Installing : libgcrypt-1.10.1-7.fc38.x86_64 71/138 Installing : libksba-1.6.3-2.fc38.x86_64 72/138 Installing : mpfr-4.1.1-3.fc38.x86_64 73/138 Installing : nettle-3.8-3.fc38.x86_64 74/138 Installing : elfutils-default-yama-scope-0.189-1.fc38.noarch 75/138 Running scriptlet: elfutils-default-yama-scope-0.189-1.fc38.noarch 75/138 Installing : elfutils-libs-0.189-1.fc38.x86_64 76/138 Installing : alternatives-1.22-1.fc38.x86_64 77/138 Installing : p11-kit-trust-0.24.1-6.fc38.x86_64 78/138 Running scriptlet: p11-kit-trust-0.24.1-6.fc38.x86_64 78/138 Installing : libbrotli-1.0.9-11.fc38.x86_64 79/138 Installing : libcap-ng-0.8.3-5.fc38.x86_64 80/138 Installing : audit-libs-3.1-2.fc38.x86_64 81/138 Installing : libsemanage-3.5-2.fc38.x86_64 82/138 Installing : libeconf-0.4.0-5.fc38.x86_64 83/138 Installing : shadow-utils-2:4.13-6.fc38.x86_64 84/138 Installing : libnghttp2-1.52.0-1.fc38.x86_64 85/138 Installing : libsigsegv-2.14-4.fc38.x86_64 86/138 Installing : gawk-5.1.1-5.fc38.x86_64 87/138 Installing : libunistring-1.1-3.fc38.x86_64 88/138 Installing : gnutls-3.8.0-2.fc38.x86_64 89/138 Installing : glib2-2.76.1-1.fc38.x86_64 90/138 Installing : libverto-0.3.2-5.fc38.x86_64 91/138 Installing : libyaml-0.2.5-9.fc38.x86_64 92/138 Installing : mpdecimal-2.5.1-6.fc38.x86_64 93/138 Installing : npth-1.6-12.fc38.x86_64 94/138 Installing : coreutils-common-9.1-11.fc38.x86_64 95/138 Installing : openssl-libs-1:3.0.8-2.fc38.x86_64 96/138 Installing : coreutils-9.1-11.fc38.x86_64 97/138 Running scriptlet: ca-certificates-2023.2.60-2.fc38.noarch 98/138 Installing : ca-certificates-2023.2.60-2.fc38.noarch 98/138 Running scriptlet: ca-certificates-2023.2.60-2.fc38.noarch 98/138 Installing : rpm-sequoia-1.3.0-1.fc38.x86_64 99/138 Installing : rpm-libs-4.18.1-1.fc38.x86_64 100/138 Installing : krb5-libs-1.20.1-8.fc38.x86_64 101/138 Installing : libtirpc-1.3.3-1.fc38.x86_64 102/138 Installing : libmodulemd-2.14.0-5.fc38.x86_64 103/138 Installing : libfsverity-1.4-9.fc38.x86_64 104/138 Installing : zchunk-libs-1.3.0-1.fc38.x86_64 105/138 Installing : libsolv-0.7.22-4.fc38.x86_64 106/138 Installing : libnsl2-2.0.0-5.fc38.x86_64 107/138 Installing : libssh-0.10.4-4.fc38.x86_64 108/138 Installing : rpm-build-libs-4.18.1-1.fc38.x86_64 109/138 Installing : python-pip-wheel-22.3.1-2.fc38.noarch 110/138 Installing : python3-3.11.2-1.fc38.x86_64 111/138 Installing : python3-libs-3.11.2-1.fc38.x86_64 112/138 Installing : python3-dbus-1.3.2-2.fc38.x86_64 113/138 Installing : python3-libcomps-0.1.18-6.fc38.x86_64 114/138 Installing : python3-distro-1.8.0-2.fc38.noarch 115/138 Installing : python3-six-1.16.0-9.fc38.noarch 116/138 Installing : python3-dateutil-1:2.8.2-5.fc38.noarch 117/138 Installing : libarchive-3.6.1-4.fc38.x86_64 118/138 Installing : libevent-2.1.12-8.fc38.x86_64 119/138 Installing : openldap-2.6.4-1.fc38.x86_64 120/138 Installing : libcurl-7.87.0-6.fc38.x86_64 121/138 Installing : gnupg2-2.4.0-3.fc38.x86_64 122/138 Installing : gpgme-1.17.1-3.fc38.x86_64 123/138 Installing : librepo-1.15.1-2.fc38.x86_64 124/138 Installing : libdnf-0.68.0-2.fc38.x86_64 125/138 Installing : python3-libdnf-0.68.0-2.fc38.x86_64 126/138 Installing : python3-hawkey-0.68.0-2.fc38.x86_64 127/138 Installing : python3-gpg-1.17.1-3.fc38.x86_64 128/138 Installing : curl-7.87.0-6.fc38.x86_64 129/138 Running scriptlet: tpm2-tss-4.0.1-3.fc38.x86_64 130/138 useradd: Warning: missing or non-executable shell '/usr/sbin/nologin' Installing : tpm2-tss-4.0.1-3.fc38.x86_64 130/138 Installing : ima-evm-utils-1.4-7.fc38.x86_64 131/138 Installing : rpm-sign-libs-4.18.1-1.fc38.x86_64 132/138 Installing : python3-rpm-4.18.1-1.fc38.x86_64 133/138 Installing : python3-dnf-4.14.0-2.fc38.noarch 134/138 Installing : python3-dnf-plugins-core-4.3.1-2.fc38.noarch 135/138 Installing : dnf-plugins-core-4.3.1-2.fc38.noarch 136/138 Installing : dnf-4.14.0-2.fc38.noarch 137/138 Running scriptlet: dnf-4.14.0-2.fc38.noarch 137/138 Running scriptlet: rpm-4.18.1-1.fc38.x86_64 138/138 Installing : rpm-4.18.1-1.fc38.x86_64 138/138 Running scriptlet: filesystem-3.18-3.fc38.x86_64 138/138 Running scriptlet: ca-certificates-2023.2.60-2.fc38.noarch 138/138 Running scriptlet: rpm-4.18.1-1.fc38.x86_64 138/138 Verifying : alternatives-1.22-1.fc38.x86_64 1/138 Verifying : audit-libs-3.1-2.fc38.x86_64 2/138 Verifying : basesystem-11-15.fc38.noarch 3/138 Verifying : bash-5.2.15-3.fc38.x86_64 4/138 Verifying : bzip2-libs-1.0.8-13.fc38.x86_64 5/138 Verifying : ca-certificates-2023.2.60-2.fc38.noarch 6/138 Verifying : coreutils-9.1-11.fc38.x86_64 7/138 Verifying : coreutils-common-9.1-11.fc38.x86_64 8/138 Verifying : crypto-policies-20230301-1.gita12f7b2.fc38.noarc 9/138 Verifying : curl-7.87.0-6.fc38.x86_64 10/138 Verifying : cyrus-sasl-lib-2.1.28-9.fc38.x86_64 11/138 Verifying : dbus-libs-1:1.14.6-1.fc38.x86_64 12/138 Verifying : dnf-4.14.0-2.fc38.noarch 13/138 Verifying : dnf-data-4.14.0-2.fc38.noarch 14/138 Verifying : dnf-plugins-core-4.3.1-2.fc38.noarch 15/138 Verifying : elfutils-default-yama-scope-0.189-1.fc38.noarch 16/138 Verifying : elfutils-libelf-0.189-1.fc38.x86_64 17/138 Verifying : elfutils-libs-0.189-1.fc38.x86_64 18/138 Verifying : expat-2.5.0-2.fc38.x86_64 19/138 Verifying : fedora-gpg-keys-38-0.5.noarch 20/138 Verifying : fedora-release-38-0.30.noarch 21/138 Verifying : fedora-release-common-38-0.30.noarch 22/138 Verifying : fedora-release-identity-basic-38-0.30.noarch 23/138 Verifying : fedora-repos-38-0.5.noarch 24/138 Verifying : file-libs-5.44-3.fc38.x86_64 25/138 Verifying : filesystem-3.18-3.fc38.x86_64 26/138 Verifying : findutils-1:4.9.0-3.fc38.x86_64 27/138 Verifying : gawk-5.1.1-5.fc38.x86_64 28/138 Verifying : gdbm-libs-1:1.23-3.fc38.x86_64 29/138 Verifying : glib2-2.76.1-1.fc38.x86_64 30/138 Verifying : glibc-2.37-1.fc38.x86_64 31/138 Verifying : glibc-common-2.37-1.fc38.x86_64 32/138 Verifying : glibc-minimal-langpack-2.37-1.fc38.x86_64 33/138 Verifying : gmp-1:6.2.1-4.fc38.x86_64 34/138 Verifying : gnupg2-2.4.0-3.fc38.x86_64 35/138 Verifying : gnutls-3.8.0-2.fc38.x86_64 36/138 Verifying : gpgme-1.17.1-3.fc38.x86_64 37/138 Verifying : grep-3.8-3.fc38.x86_64 38/138 Verifying : ima-evm-utils-1.4-7.fc38.x86_64 39/138 Verifying : json-c-0.16-4.fc38.x86_64 40/138 Verifying : keyutils-libs-1.6.1-6.fc38.x86_64 41/138 Verifying : krb5-libs-1.20.1-8.fc38.x86_64 42/138 Verifying : libacl-2.3.1-6.fc38.x86_64 43/138 Verifying : libarchive-3.6.1-4.fc38.x86_64 44/138 Verifying : libassuan-2.5.5-6.fc38.x86_64 45/138 Verifying : libattr-2.5.1-6.fc38.x86_64 46/138 Verifying : libb2-0.98.1-8.fc38.x86_64 47/138 Verifying : libblkid-2.38.1-4.fc38.x86_64 48/138 Verifying : libbrotli-1.0.9-11.fc38.x86_64 49/138 Verifying : libcap-2.48-6.fc38.x86_64 50/138 Verifying : libcap-ng-0.8.3-5.fc38.x86_64 51/138 Verifying : libcom_err-1.46.5-4.fc38.x86_64 52/138 Verifying : libcomps-0.1.18-6.fc38.x86_64 53/138 Verifying : libcurl-7.87.0-6.fc38.x86_64 54/138 Verifying : libdnf-0.68.0-2.fc38.x86_64 55/138 Verifying : libeconf-0.4.0-5.fc38.x86_64 56/138 Verifying : libevent-2.1.12-8.fc38.x86_64 57/138 Verifying : libffi-3.4.4-2.fc38.x86_64 58/138 Verifying : libfsverity-1.4-9.fc38.x86_64 59/138 Verifying : libgcc-13.0.1-0.8.fc38.x86_64 60/138 Verifying : libgcrypt-1.10.1-7.fc38.x86_64 61/138 Verifying : libgomp-13.0.1-0.8.fc38.x86_64 62/138 Verifying : libgpg-error-1.46-2.fc38.x86_64 63/138 Verifying : libidn2-2.3.4-2.fc38.x86_64 64/138 Verifying : libksba-1.6.3-2.fc38.x86_64 65/138 Verifying : libmodulemd-2.14.0-5.fc38.x86_64 66/138 Verifying : libmount-2.38.1-4.fc38.x86_64 67/138 Verifying : libnghttp2-1.52.0-1.fc38.x86_64 68/138 Verifying : libnsl2-2.0.0-5.fc38.x86_64 69/138 Verifying : libpsl-0.21.2-2.fc38.x86_64 70/138 Verifying : librepo-1.15.1-2.fc38.x86_64 71/138 Verifying : libreport-filesystem-2.17.9-1.fc38.noarch 72/138 Verifying : libselinux-3.5-1.fc38.x86_64 73/138 Verifying : libsemanage-3.5-2.fc38.x86_64 74/138 Verifying : libsepol-3.5-1.fc38.x86_64 75/138 Verifying : libsigsegv-2.14-4.fc38.x86_64 76/138 Verifying : libsmartcols-2.38.1-4.fc38.x86_64 77/138 Verifying : libsolv-0.7.22-4.fc38.x86_64 78/138 Verifying : libssh-0.10.4-4.fc38.x86_64 79/138 Verifying : libssh-config-0.10.4-4.fc38.noarch 80/138 Verifying : libstdc++-13.0.1-0.8.fc38.x86_64 81/138 Verifying : libtasn1-4.19.0-2.fc38.x86_64 82/138 Verifying : libtirpc-1.3.3-1.fc38.x86_64 83/138 Verifying : libunistring-1.1-3.fc38.x86_64 84/138 Verifying : libunistring1.0-1.0-1.fc38.x86_64 85/138 Verifying : libuuid-2.38.1-4.fc38.x86_64 86/138 Verifying : libverto-0.3.2-5.fc38.x86_64 87/138 Verifying : libxcrypt-4.4.33-7.fc38.x86_64 88/138 Verifying : libxml2-2.10.3-3.fc38.x86_64 89/138 Verifying : libyaml-0.2.5-9.fc38.x86_64 90/138 Verifying : libzstd-1.5.4-1.fc38.x86_64 91/138 Verifying : lua-libs-5.4.4-9.fc38.x86_64 92/138 Verifying : lz4-libs-1.9.4-2.fc38.x86_64 93/138 Verifying : mpdecimal-2.5.1-6.fc38.x86_64 94/138 Verifying : mpfr-4.1.1-3.fc38.x86_64 95/138 Verifying : ncurses-base-6.4-3.20230114.fc38.noarch 96/138 Verifying : ncurses-libs-6.4-3.20230114.fc38.x86_64 97/138 Verifying : nettle-3.8-3.fc38.x86_64 98/138 Verifying : npth-1.6-12.fc38.x86_64 99/138 Verifying : openldap-2.6.4-1.fc38.x86_64 100/138 Verifying : openssl-libs-1:3.0.8-2.fc38.x86_64 101/138 Verifying : p11-kit-0.24.1-6.fc38.x86_64 102/138 Verifying : p11-kit-trust-0.24.1-6.fc38.x86_64 103/138 Verifying : pcre2-10.42-1.fc38.1.x86_64 104/138 Verifying : pcre2-syntax-10.42-1.fc38.1.noarch 105/138 Verifying : popt-1.19-2.fc38.x86_64 106/138 Verifying : publicsuffix-list-dafsa-20221208-2.fc38.noarch 107/138 Verifying : python-pip-wheel-22.3.1-2.fc38.noarch 108/138 Verifying : python-setuptools-wheel-65.5.1-2.fc38.noarch 109/138 Verifying : python3-3.11.2-1.fc38.x86_64 110/138 Verifying : python3-dateutil-1:2.8.2-5.fc38.noarch 111/138 Verifying : python3-dbus-1.3.2-2.fc38.x86_64 112/138 Verifying : python3-distro-1.8.0-2.fc38.noarch 113/138 Verifying : python3-dnf-4.14.0-2.fc38.noarch 114/138 Verifying : python3-dnf-plugins-core-4.3.1-2.fc38.noarch 115/138 Verifying : python3-gpg-1.17.1-3.fc38.x86_64 116/138 Verifying : python3-hawkey-0.68.0-2.fc38.x86_64 117/138 Verifying : python3-libcomps-0.1.18-6.fc38.x86_64 118/138 Verifying : python3-libdnf-0.68.0-2.fc38.x86_64 119/138 Verifying : python3-libs-3.11.2-1.fc38.x86_64 120/138 Verifying : python3-rpm-4.18.1-1.fc38.x86_64 121/138 Verifying : python3-six-1.16.0-9.fc38.noarch 122/138 Verifying : readline-8.2-3.fc38.x86_64 123/138 Verifying : rpm-4.18.1-1.fc38.x86_64 124/138 Verifying : rpm-build-libs-4.18.1-1.fc38.x86_64 125/138 Verifying : rpm-libs-4.18.1-1.fc38.x86_64 126/138 Verifying : rpm-sequoia-1.3.0-1.fc38.x86_64 127/138 Verifying : rpm-sign-libs-4.18.1-1.fc38.x86_64 128/138 Verifying : sed-4.8-12.fc38.x86_64 129/138 Verifying : setup-2.14.3-2.fc38.noarch 130/138 Verifying : shadow-utils-2:4.13-6.fc38.x86_64 131/138 Verifying : sqlite-libs-3.40.1-2.fc38.x86_64 132/138 Verifying : systemd-libs-253-6.fc38.x86_64 133/138 Verifying : tpm2-tss-4.0.1-3.fc38.x86_64 134/138 Verifying : tzdata-2022g-2.fc38.noarch 135/138 Verifying : xz-libs-5.4.1-1.fc38.x86_64 136/138 Verifying : zchunk-libs-1.3.0-1.fc38.x86_64 137/138 Verifying : zlib-1.2.13-3.fc38.x86_64 138/138 Installed products updated. Installed: alternatives-1.22-1.fc38.x86_64 audit-libs-3.1-2.fc38.x86_64 basesystem-11-15.fc38.noarch bash-5.2.15-3.fc38.x86_64 bzip2-libs-1.0.8-13.fc38.x86_64 ca-certificates-2023.2.60-2.fc38.noarch coreutils-9.1-11.fc38.x86_64 coreutils-common-9.1-11.fc38.x86_64 crypto-policies-20230301-1.gita12f7b2.fc38.noarch curl-7.87.0-6.fc38.x86_64 cyrus-sasl-lib-2.1.28-9.fc38.x86_64 dbus-libs-1:1.14.6-1.fc38.x86_64 dnf-4.14.0-2.fc38.noarch dnf-data-4.14.0-2.fc38.noarch dnf-plugins-core-4.3.1-2.fc38.noarch elfutils-default-yama-scope-0.189-1.fc38.noarch elfutils-libelf-0.189-1.fc38.x86_64 elfutils-libs-0.189-1.fc38.x86_64 expat-2.5.0-2.fc38.x86_64 fedora-gpg-keys-38-0.5.noarch fedora-release-38-0.30.noarch fedora-release-common-38-0.30.noarch fedora-release-identity-basic-38-0.30.noarch fedora-repos-38-0.5.noarch file-libs-5.44-3.fc38.x86_64 filesystem-3.18-3.fc38.x86_64 findutils-1:4.9.0-3.fc38.x86_64 gawk-5.1.1-5.fc38.x86_64 gdbm-libs-1:1.23-3.fc38.x86_64 glib2-2.76.1-1.fc38.x86_64 glibc-2.37-1.fc38.x86_64 glibc-common-2.37-1.fc38.x86_64 glibc-minimal-langpack-2.37-1.fc38.x86_64 gmp-1:6.2.1-4.fc38.x86_64 gnupg2-2.4.0-3.fc38.x86_64 gnutls-3.8.0-2.fc38.x86_64 gpgme-1.17.1-3.fc38.x86_64 grep-3.8-3.fc38.x86_64 ima-evm-utils-1.4-7.fc38.x86_64 json-c-0.16-4.fc38.x86_64 keyutils-libs-1.6.1-6.fc38.x86_64 krb5-libs-1.20.1-8.fc38.x86_64 libacl-2.3.1-6.fc38.x86_64 libarchive-3.6.1-4.fc38.x86_64 libassuan-2.5.5-6.fc38.x86_64 libattr-2.5.1-6.fc38.x86_64 libb2-0.98.1-8.fc38.x86_64 libblkid-2.38.1-4.fc38.x86_64 libbrotli-1.0.9-11.fc38.x86_64 libcap-2.48-6.fc38.x86_64 libcap-ng-0.8.3-5.fc38.x86_64 libcom_err-1.46.5-4.fc38.x86_64 libcomps-0.1.18-6.fc38.x86_64 libcurl-7.87.0-6.fc38.x86_64 libdnf-0.68.0-2.fc38.x86_64 libeconf-0.4.0-5.fc38.x86_64 libevent-2.1.12-8.fc38.x86_64 libffi-3.4.4-2.fc38.x86_64 libfsverity-1.4-9.fc38.x86_64 libgcc-13.0.1-0.8.fc38.x86_64 libgcrypt-1.10.1-7.fc38.x86_64 libgomp-13.0.1-0.8.fc38.x86_64 libgpg-error-1.46-2.fc38.x86_64 libidn2-2.3.4-2.fc38.x86_64 libksba-1.6.3-2.fc38.x86_64 libmodulemd-2.14.0-5.fc38.x86_64 libmount-2.38.1-4.fc38.x86_64 libnghttp2-1.52.0-1.fc38.x86_64 libnsl2-2.0.0-5.fc38.x86_64 libpsl-0.21.2-2.fc38.x86_64 librepo-1.15.1-2.fc38.x86_64 libreport-filesystem-2.17.9-1.fc38.noarch libselinux-3.5-1.fc38.x86_64 libsemanage-3.5-2.fc38.x86_64 libsepol-3.5-1.fc38.x86_64 libsigsegv-2.14-4.fc38.x86_64 libsmartcols-2.38.1-4.fc38.x86_64 libsolv-0.7.22-4.fc38.x86_64 libssh-0.10.4-4.fc38.x86_64 libssh-config-0.10.4-4.fc38.noarch libstdc++-13.0.1-0.8.fc38.x86_64 libtasn1-4.19.0-2.fc38.x86_64 libtirpc-1.3.3-1.fc38.x86_64 libunistring-1.1-3.fc38.x86_64 libunistring1.0-1.0-1.fc38.x86_64 libuuid-2.38.1-4.fc38.x86_64 libverto-0.3.2-5.fc38.x86_64 libxcrypt-4.4.33-7.fc38.x86_64 libxml2-2.10.3-3.fc38.x86_64 libyaml-0.2.5-9.fc38.x86_64 libzstd-1.5.4-1.fc38.x86_64 lua-libs-5.4.4-9.fc38.x86_64 lz4-libs-1.9.4-2.fc38.x86_64 mpdecimal-2.5.1-6.fc38.x86_64 mpfr-4.1.1-3.fc38.x86_64 ncurses-base-6.4-3.20230114.fc38.noarch ncurses-libs-6.4-3.20230114.fc38.x86_64 nettle-3.8-3.fc38.x86_64 npth-1.6-12.fc38.x86_64 openldap-2.6.4-1.fc38.x86_64 openssl-libs-1:3.0.8-2.fc38.x86_64 p11-kit-0.24.1-6.fc38.x86_64 p11-kit-trust-0.24.1-6.fc38.x86_64 pcre2-10.42-1.fc38.1.x86_64 pcre2-syntax-10.42-1.fc38.1.noarch popt-1.19-2.fc38.x86_64 publicsuffix-list-dafsa-20221208-2.fc38.noarch python-pip-wheel-22.3.1-2.fc38.noarch python-setuptools-wheel-65.5.1-2.fc38.noarch python3-3.11.2-1.fc38.x86_64 python3-dateutil-1:2.8.2-5.fc38.noarch python3-dbus-1.3.2-2.fc38.x86_64 python3-distro-1.8.0-2.fc38.noarch python3-dnf-4.14.0-2.fc38.noarch python3-dnf-plugins-core-4.3.1-2.fc38.noarch python3-gpg-1.17.1-3.fc38.x86_64 python3-hawkey-0.68.0-2.fc38.x86_64 python3-libcomps-0.1.18-6.fc38.x86_64 python3-libdnf-0.68.0-2.fc38.x86_64 python3-libs-3.11.2-1.fc38.x86_64 python3-rpm-4.18.1-1.fc38.x86_64 python3-six-1.16.0-9.fc38.noarch readline-8.2-3.fc38.x86_64 rpm-4.18.1-1.fc38.x86_64 rpm-build-libs-4.18.1-1.fc38.x86_64 rpm-libs-4.18.1-1.fc38.x86_64 rpm-sequoia-1.3.0-1.fc38.x86_64 rpm-sign-libs-4.18.1-1.fc38.x86_64 sed-4.8-12.fc38.x86_64 setup-2.14.3-2.fc38.noarch shadow-utils-2:4.13-6.fc38.x86_64 sqlite-libs-3.40.1-2.fc38.x86_64 systemd-libs-253-6.fc38.x86_64 tpm2-tss-4.0.1-3.fc38.x86_64 tzdata-2022g-2.fc38.noarch xz-libs-5.4.1-1.fc38.x86_64 zchunk-libs-1.3.0-1.fc38.x86_64 zlib-1.2.13-3.fc38.x86_64 Complete! Finish(bootstrap): dnf install Start(bootstrap): creating root cache Finish(bootstrap): creating root cache Finish(bootstrap): chroot init Start: chroot init INFO: mounting tmpfs at /var/lib/mock/fedora-38-x86_64-1680034723.105560/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 Mock Version: 3.5 INFO: Mock Version: 3.5 Start: dnf install No matches found for the following disable plugin patterns: local, spacewalk, versionlock Copr repository 66 kB/s | 3.0 kB 00:00 Copr repository 63 MB/s | 20 MB 00:00 fedora 43 kB/s | 18 kB 00:00 updates 89 kB/s | 25 kB 00:00 Dependencies resolved. ================================================================================ Package Arch Version Repo Size ================================================================================ Installing group/module packages: bash x86_64 5.2.15-3.fc38 fedora 1.8 M bzip2 x86_64 1.0.8-13.fc38 fedora 52 k coreutils x86_64 9.1-11.fc38 fedora 1.1 M cpio x86_64 2.13-14.fc38 fedora 276 k diffutils x86_64 3.9-1.fc38 fedora 397 k fedora-release-common noarch 38-0.30 fedora 22 k findutils x86_64 1:4.9.0-3.fc38 fedora 492 k gawk x86_64 5.1.1-5.fc38 fedora 1.0 M glibc-minimal-langpack x86_64 2.37-1.fc38 fedora 35 k grep x86_64 3.8-3.fc38 fedora 293 k gzip x86_64 1.12-3.fc38 fedora 166 k info x86_64 7.0.2-2.fc38 fedora 181 k patch x86_64 2.7.6-19.fc38 fedora 126 k redhat-rpm-config noarch 252-1.fc38 fedora 83 k rpm-build x86_64 4.18.1-1.fc38 fedora 76 k sed x86_64 4.8-12.fc38 fedora 306 k shadow-utils x86_64 2:4.13-6.fc38 fedora 1.3 M tar x86_64 2:1.34-8.fc38 fedora 889 k unzip x86_64 6.0-60.fc38 fedora 184 k util-linux x86_64 2.38.1-4.fc38 fedora 2.3 M which x86_64 2.21-39.fc38 fedora 42 k xz x86_64 5.4.1-1.fc38 fedora 419 k Installing dependencies: alternatives x86_64 1.22-1.fc38 fedora 38 k ansible-srpm-macros noarch 1-9.1.fc38 fedora 8.8 k audit-libs x86_64 3.1-2.fc38 fedora 117 k authselect x86_64 1.4.2-2.fc38 fedora 144 k authselect-libs x86_64 1.4.2-2.fc38 fedora 249 k basesystem noarch 11-15.fc38 fedora 7.0 k binutils x86_64 2.39-9.fc38 fedora 5.4 M binutils-gold x86_64 2.39-9.fc38 fedora 784 k bzip2-libs x86_64 1.0.8-13.fc38 fedora 41 k ca-certificates noarch 2023.2.60-2.fc38 fedora 845 k coreutils-common x86_64 9.1-11.fc38 fedora 2.0 M cracklib x86_64 2.9.7-31.fc38 fedora 92 k crypto-policies noarch 20230301-1.gita12f7b2.fc38 fedora 93 k curl x86_64 7.87.0-6.fc38 fedora 346 k cyrus-sasl-lib x86_64 2.1.28-9.fc38 fedora 794 k debugedit x86_64 5.0-7.fc38 fedora 78 k dwz x86_64 0.15-2.fc38 fedora 135 k ed x86_64 1.19-2.fc38 fedora 78 k efi-srpm-macros noarch 5-7.fc38 fedora 22 k elfutils x86_64 0.189-1.fc38 fedora 536 k elfutils-debuginfod-client x86_64 0.189-1.fc38 fedora 39 k elfutils-default-yama-scope noarch 0.189-1.fc38 fedora 15 k elfutils-libelf x86_64 0.189-1.fc38 fedora 196 k elfutils-libs x86_64 0.189-1.fc38 fedora 260 k fedora-gpg-keys noarch 38-0.5 fedora 126 k fedora-release noarch 38-0.30 fedora 12 k fedora-release-identity-basic noarch 38-0.30 fedora 13 k fedora-repos noarch 38-0.5 fedora 9.4 k file x86_64 5.44-3.fc38 fedora 49 k file-libs x86_64 5.44-3.fc38 fedora 730 k filesystem x86_64 3.18-3.fc38 fedora 1.1 M fonts-srpm-macros noarch 1:2.0.5-11.fc38 fedora 26 k fpc-srpm-macros noarch 1.3-7.fc38 fedora 7.8 k gdb-minimal x86_64 13.1-2.fc38 fedora 4.2 M gdbm-libs x86_64 1:1.23-3.fc38 fedora 56 k ghc-srpm-macros noarch 1.6.1-1.fc38 fedora 8.0 k glibc x86_64 2.37-1.fc38 fedora 2.1 M glibc-common x86_64 2.37-1.fc38 fedora 313 k glibc-gconv-extra x86_64 2.37-1.fc38 fedora 1.6 M gmp x86_64 1:6.2.1-4.fc38 fedora 313 k gnat-srpm-macros noarch 6-2.fc38 fedora 8.8 k go-srpm-macros noarch 3.2.0-2.fc38 fedora 27 k jansson x86_64 2.13.1-6.fc38 fedora 44 k kernel-srpm-macros noarch 1.0-16.fc38 fedora 9.3 k keyutils-libs x86_64 1.6.1-6.fc38 fedora 31 k krb5-libs x86_64 1.20.1-8.fc38 fedora 727 k libacl x86_64 2.3.1-6.fc38 fedora 23 k libarchive x86_64 3.6.1-4.fc38 fedora 400 k libattr x86_64 2.5.1-6.fc38 fedora 18 k libblkid x86_64 2.38.1-4.fc38 fedora 106 k libbrotli x86_64 1.0.9-11.fc38 fedora 317 k libcap x86_64 2.48-6.fc38 fedora 67 k libcap-ng x86_64 0.8.3-5.fc38 fedora 32 k libcom_err x86_64 1.46.5-4.fc38 fedora 26 k libcurl x86_64 7.87.0-6.fc38 fedora 304 k libdb x86_64 5.3.28-55.fc38 fedora 758 k libeconf x86_64 0.4.0-5.fc38 fedora 27 k libevent x86_64 2.1.12-8.fc38 fedora 257 k libfdisk x86_64 2.38.1-4.fc38 fedora 161 k libffi x86_64 3.4.4-2.fc38 fedora 38 k libgcc x86_64 13.0.1-0.8.fc38 fedora 102 k libgomp x86_64 13.0.1-0.8.fc38 fedora 310 k libidn2 x86_64 2.3.4-2.fc38 fedora 160 k libmount x86_64 2.38.1-4.fc38 fedora 135 k libnghttp2 x86_64 1.52.0-1.fc38 fedora 75 k libnsl2 x86_64 2.0.0-5.fc38 fedora 30 k libpkgconf x86_64 1.8.0-6.fc38 fedora 35 k libpsl x86_64 0.21.2-2.fc38 fedora 65 k libpwquality x86_64 1.4.5-3.fc38 fedora 119 k libselinux x86_64 3.5-1.fc38 fedora 87 k libsemanage x86_64 3.5-2.fc38 fedora 120 k libsepol x86_64 3.5-1.fc38 fedora 324 k libsigsegv x86_64 2.14-4.fc38 fedora 27 k libsmartcols x86_64 2.38.1-4.fc38 fedora 64 k libssh x86_64 0.10.4-4.fc38 fedora 209 k libssh-config noarch 0.10.4-4.fc38 fedora 8.9 k libstdc++ x86_64 13.0.1-0.8.fc38 fedora 852 k libtasn1 x86_64 4.19.0-2.fc38 fedora 74 k libtirpc x86_64 1.3.3-1.fc38 fedora 94 k libunistring1.0 x86_64 1.0-1.fc38 fedora 539 k libutempter x86_64 1.2.1-8.fc38 fedora 26 k libuuid x86_64 2.38.1-4.fc38 fedora 28 k libverto x86_64 0.3.2-5.fc38 fedora 21 k libxcrypt x86_64 4.4.33-7.fc38 fedora 120 k libxml2 x86_64 2.10.3-3.fc38 fedora 700 k libzstd x86_64 1.5.4-1.fc38 fedora 302 k lua-libs x86_64 5.4.4-9.fc38 fedora 133 k lua-srpm-macros noarch 1-8.fc38 fedora 8.6 k lz4-libs x86_64 1.9.4-2.fc38 fedora 67 k mpfr x86_64 4.1.1-3.fc38 fedora 600 k ncurses-base noarch 6.4-3.20230114.fc38 fedora 87 k ncurses-libs x86_64 6.4-3.20230114.fc38 fedora 333 k ocaml-srpm-macros noarch 7-3.fc38 fedora 13 k openblas-srpm-macros noarch 2-13.fc38 fedora 7.5 k openldap x86_64 2.6.4-1.fc38 fedora 254 k openssl-libs x86_64 1:3.0.8-2.fc38 fedora 2.1 M p11-kit x86_64 0.24.1-6.fc38 fedora 359 k p11-kit-trust x86_64 0.24.1-6.fc38 fedora 136 k package-notes-srpm-macros noarch 0.5-7.fc38 fedora 11 k pam x86_64 1.5.2-16.fc38 fedora 560 k pam-libs x86_64 1.5.2-16.fc38 fedora 58 k pcre2 x86_64 10.42-1.fc38.1 fedora 234 k pcre2-syntax noarch 10.42-1.fc38.1 fedora 144 k perl-srpm-macros noarch 1-48.fc38 fedora 8.4 k pkgconf x86_64 1.8.0-6.fc38 fedora 41 k pkgconf-m4 noarch 1.8.0-6.fc38 fedora 14 k pkgconf-pkg-config x86_64 1.8.0-6.fc38 fedora 9.6 k popt x86_64 1.19-2.fc38 fedora 67 k publicsuffix-list-dafsa noarch 20221208-2.fc38 fedora 59 k pyproject-srpm-macros noarch 1.6.3-1.fc38 fedora 14 k python-srpm-macros noarch 3.11-10.fc38 fedora 26 k qt5-srpm-macros noarch 5.15.8-2.fc38 fedora 8.1 k readline x86_64 8.2-3.fc38 fedora 212 k rpm x86_64 4.18.1-1.fc38 fedora 571 k rpm-build-libs x86_64 4.18.1-1.fc38 fedora 94 k rpm-libs x86_64 4.18.1-1.fc38 fedora 313 k rpm-sequoia x86_64 1.3.0-1.fc38 fedora 855 k rpmautospec-rpm-macros noarch 0.3.5-1.fc38 fedora 9.3 k rust-srpm-macros noarch 24-1.fc38 fedora 12 k setup noarch 2.14.3-2.fc38 fedora 152 k sqlite-libs x86_64 3.40.1-2.fc38 fedora 666 k systemd-libs x86_64 253-6.fc38 fedora 652 k tzdata noarch 2022g-2.fc38 fedora 716 k util-linux-core x86_64 2.38.1-4.fc38 fedora 473 k xxhash-libs x86_64 0.8.1-4.fc38 fedora 40 k xz-libs x86_64 5.4.1-1.fc38 fedora 108 k zip x86_64 3.0-36.fc38 fedora 265 k zlib x86_64 1.2.13-3.fc38 fedora 95 k zstd x86_64 1.5.4-1.fc38 fedora 475 k Installing Groups: Buildsystem building group Transaction Summary ================================================================================ Install 151 Packages Total size: 53 M Installed size: 183 M Downloading Packages: [SKIPPED] alternatives-1.22-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] ansible-srpm-macros-1-9.1.fc38.noarch.rpm: Already downloaded [SKIPPED] audit-libs-3.1-2.fc38.x86_64.rpm: Already downloaded [SKIPPED] authselect-1.4.2-2.fc38.x86_64.rpm: Already downloaded [SKIPPED] authselect-libs-1.4.2-2.fc38.x86_64.rpm: Already downloaded [SKIPPED] basesystem-11-15.fc38.noarch.rpm: Already downloaded [SKIPPED] bash-5.2.15-3.fc38.x86_64.rpm: Already downloaded [SKIPPED] binutils-2.39-9.fc38.x86_64.rpm: Already downloaded [SKIPPED] binutils-gold-2.39-9.fc38.x86_64.rpm: Already downloaded [SKIPPED] bzip2-1.0.8-13.fc38.x86_64.rpm: Already downloaded [SKIPPED] bzip2-libs-1.0.8-13.fc38.x86_64.rpm: Already downloaded [SKIPPED] ca-certificates-2023.2.60-2.fc38.noarch.rpm: Already downloaded [SKIPPED] coreutils-9.1-11.fc38.x86_64.rpm: Already downloaded [SKIPPED] coreutils-common-9.1-11.fc38.x86_64.rpm: Already downloaded [SKIPPED] cpio-2.13-14.fc38.x86_64.rpm: Already downloaded [SKIPPED] cracklib-2.9.7-31.fc38.x86_64.rpm: Already downloaded [SKIPPED] crypto-policies-20230301-1.gita12f7b2.fc38.noarch.rpm: Already downloaded [SKIPPED] curl-7.87.0-6.fc38.x86_64.rpm: Already downloaded [SKIPPED] cyrus-sasl-lib-2.1.28-9.fc38.x86_64.rpm: Already downloaded [SKIPPED] debugedit-5.0-7.fc38.x86_64.rpm: Already downloaded [SKIPPED] diffutils-3.9-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] dwz-0.15-2.fc38.x86_64.rpm: Already downloaded [SKIPPED] ed-1.19-2.fc38.x86_64.rpm: Already downloaded [SKIPPED] efi-srpm-macros-5-7.fc38.noarch.rpm: Already downloaded [SKIPPED] elfutils-0.189-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] elfutils-debuginfod-client-0.189-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] elfutils-default-yama-scope-0.189-1.fc38.noarch.rpm: Already downloaded [SKIPPED] elfutils-libelf-0.189-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] elfutils-libs-0.189-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] fedora-gpg-keys-38-0.5.noarch.rpm: Already downloaded [SKIPPED] fedora-release-38-0.30.noarch.rpm: Already downloaded [SKIPPED] fedora-release-common-38-0.30.noarch.rpm: Already downloaded [SKIPPED] fedora-release-identity-basic-38-0.30.noarch.rpm: Already downloaded [SKIPPED] fedora-repos-38-0.5.noarch.rpm: Already downloaded [SKIPPED] file-5.44-3.fc38.x86_64.rpm: Already downloaded [SKIPPED] file-libs-5.44-3.fc38.x86_64.rpm: Already downloaded [SKIPPED] filesystem-3.18-3.fc38.x86_64.rpm: Already downloaded [SKIPPED] findutils-4.9.0-3.fc38.x86_64.rpm: Already downloaded [SKIPPED] fonts-srpm-macros-2.0.5-11.fc38.noarch.rpm: Already downloaded [SKIPPED] fpc-srpm-macros-1.3-7.fc38.noarch.rpm: Already downloaded [SKIPPED] gawk-5.1.1-5.fc38.x86_64.rpm: Already downloaded [SKIPPED] gdb-minimal-13.1-2.fc38.x86_64.rpm: Already downloaded [SKIPPED] gdbm-libs-1.23-3.fc38.x86_64.rpm: Already downloaded [SKIPPED] ghc-srpm-macros-1.6.1-1.fc38.noarch.rpm: Already downloaded [SKIPPED] glibc-2.37-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] glibc-common-2.37-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] glibc-gconv-extra-2.37-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] glibc-minimal-langpack-2.37-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] gmp-6.2.1-4.fc38.x86_64.rpm: Already downloaded [SKIPPED] gnat-srpm-macros-6-2.fc38.noarch.rpm: Already downloaded [SKIPPED] go-srpm-macros-3.2.0-2.fc38.noarch.rpm: Already downloaded [SKIPPED] grep-3.8-3.fc38.x86_64.rpm: Already downloaded [SKIPPED] gzip-1.12-3.fc38.x86_64.rpm: Already downloaded [SKIPPED] info-7.0.2-2.fc38.x86_64.rpm: Already downloaded [SKIPPED] jansson-2.13.1-6.fc38.x86_64.rpm: Already downloaded [SKIPPED] kernel-srpm-macros-1.0-16.fc38.noarch.rpm: Already downloaded [SKIPPED] keyutils-libs-1.6.1-6.fc38.x86_64.rpm: Already downloaded [SKIPPED] krb5-libs-1.20.1-8.fc38.x86_64.rpm: Already downloaded [SKIPPED] libacl-2.3.1-6.fc38.x86_64.rpm: Already downloaded [SKIPPED] libarchive-3.6.1-4.fc38.x86_64.rpm: Already downloaded [SKIPPED] libattr-2.5.1-6.fc38.x86_64.rpm: Already downloaded [SKIPPED] libblkid-2.38.1-4.fc38.x86_64.rpm: Already downloaded [SKIPPED] libbrotli-1.0.9-11.fc38.x86_64.rpm: Already downloaded [SKIPPED] libcap-2.48-6.fc38.x86_64.rpm: Already downloaded [SKIPPED] libcap-ng-0.8.3-5.fc38.x86_64.rpm: Already downloaded [SKIPPED] libcom_err-1.46.5-4.fc38.x86_64.rpm: Already downloaded [SKIPPED] libcurl-7.87.0-6.fc38.x86_64.rpm: Already downloaded [SKIPPED] libdb-5.3.28-55.fc38.x86_64.rpm: Already downloaded [SKIPPED] libeconf-0.4.0-5.fc38.x86_64.rpm: Already downloaded [SKIPPED] libevent-2.1.12-8.fc38.x86_64.rpm: Already downloaded [SKIPPED] libfdisk-2.38.1-4.fc38.x86_64.rpm: Already downloaded [SKIPPED] libffi-3.4.4-2.fc38.x86_64.rpm: Already downloaded [SKIPPED] libgcc-13.0.1-0.8.fc38.x86_64.rpm: Already downloaded [SKIPPED] libgomp-13.0.1-0.8.fc38.x86_64.rpm: Already downloaded [SKIPPED] libidn2-2.3.4-2.fc38.x86_64.rpm: Already downloaded [SKIPPED] libmount-2.38.1-4.fc38.x86_64.rpm: Already downloaded [SKIPPED] libnghttp2-1.52.0-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] libnsl2-2.0.0-5.fc38.x86_64.rpm: Already downloaded [SKIPPED] libpkgconf-1.8.0-6.fc38.x86_64.rpm: Already downloaded [SKIPPED] libpsl-0.21.2-2.fc38.x86_64.rpm: Already downloaded [SKIPPED] libpwquality-1.4.5-3.fc38.x86_64.rpm: Already downloaded [SKIPPED] libselinux-3.5-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] libsemanage-3.5-2.fc38.x86_64.rpm: Already downloaded [SKIPPED] libsepol-3.5-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] libsigsegv-2.14-4.fc38.x86_64.rpm: Already downloaded [SKIPPED] libsmartcols-2.38.1-4.fc38.x86_64.rpm: Already downloaded [SKIPPED] libssh-0.10.4-4.fc38.x86_64.rpm: Already downloaded [SKIPPED] libssh-config-0.10.4-4.fc38.noarch.rpm: Already downloaded [SKIPPED] libstdc++-13.0.1-0.8.fc38.x86_64.rpm: Already downloaded [SKIPPED] libtasn1-4.19.0-2.fc38.x86_64.rpm: Already downloaded [SKIPPED] libtirpc-1.3.3-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] libunistring1.0-1.0-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] libutempter-1.2.1-8.fc38.x86_64.rpm: Already downloaded [SKIPPED] libuuid-2.38.1-4.fc38.x86_64.rpm: Already downloaded [SKIPPED] libverto-0.3.2-5.fc38.x86_64.rpm: Already downloaded [SKIPPED] libxcrypt-4.4.33-7.fc38.x86_64.rpm: Already downloaded [SKIPPED] libxml2-2.10.3-3.fc38.x86_64.rpm: Already downloaded [SKIPPED] libzstd-1.5.4-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] lua-libs-5.4.4-9.fc38.x86_64.rpm: Already downloaded [SKIPPED] lua-srpm-macros-1-8.fc38.noarch.rpm: Already downloaded [SKIPPED] lz4-libs-1.9.4-2.fc38.x86_64.rpm: Already downloaded [SKIPPED] mpfr-4.1.1-3.fc38.x86_64.rpm: Already downloaded [SKIPPED] ncurses-base-6.4-3.20230114.fc38.noarch.rpm: Already downloaded [SKIPPED] ncurses-libs-6.4-3.20230114.fc38.x86_64.rpm: Already downloaded [SKIPPED] ocaml-srpm-macros-7-3.fc38.noarch.rpm: Already downloaded [SKIPPED] openblas-srpm-macros-2-13.fc38.noarch.rpm: Already downloaded [SKIPPED] openldap-2.6.4-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] openssl-libs-3.0.8-2.fc38.x86_64.rpm: Already downloaded [SKIPPED] p11-kit-0.24.1-6.fc38.x86_64.rpm: Already downloaded [SKIPPED] p11-kit-trust-0.24.1-6.fc38.x86_64.rpm: Already downloaded [SKIPPED] package-notes-srpm-macros-0.5-7.fc38.noarch.rpm: Already downloaded [SKIPPED] pam-1.5.2-16.fc38.x86_64.rpm: Already downloaded [SKIPPED] pam-libs-1.5.2-16.fc38.x86_64.rpm: Already downloaded [SKIPPED] patch-2.7.6-19.fc38.x86_64.rpm: Already downloaded [SKIPPED] pcre2-10.42-1.fc38.1.x86_64.rpm: Already downloaded [SKIPPED] pcre2-syntax-10.42-1.fc38.1.noarch.rpm: Already downloaded [SKIPPED] perl-srpm-macros-1-48.fc38.noarch.rpm: Already downloaded [SKIPPED] pkgconf-1.8.0-6.fc38.x86_64.rpm: Already downloaded [SKIPPED] pkgconf-m4-1.8.0-6.fc38.noarch.rpm: Already downloaded [SKIPPED] pkgconf-pkg-config-1.8.0-6.fc38.x86_64.rpm: Already downloaded [SKIPPED] popt-1.19-2.fc38.x86_64.rpm: Already downloaded [SKIPPED] publicsuffix-list-dafsa-20221208-2.fc38.noarch.rpm: Already downloaded [SKIPPED] pyproject-srpm-macros-1.6.3-1.fc38.noarch.rpm: Already downloaded [SKIPPED] python-srpm-macros-3.11-10.fc38.noarch.rpm: Already downloaded [SKIPPED] qt5-srpm-macros-5.15.8-2.fc38.noarch.rpm: Already downloaded [SKIPPED] readline-8.2-3.fc38.x86_64.rpm: Already downloaded [SKIPPED] redhat-rpm-config-252-1.fc38.noarch.rpm: Already downloaded [SKIPPED] rpm-4.18.1-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] rpm-build-4.18.1-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] rpm-build-libs-4.18.1-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] rpm-libs-4.18.1-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] rpm-sequoia-1.3.0-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] rpmautospec-rpm-macros-0.3.5-1.fc38.noarch.rpm: Already downloaded [SKIPPED] rust-srpm-macros-24-1.fc38.noarch.rpm: Already downloaded [SKIPPED] sed-4.8-12.fc38.x86_64.rpm: Already downloaded [SKIPPED] setup-2.14.3-2.fc38.noarch.rpm: Already downloaded [SKIPPED] shadow-utils-4.13-6.fc38.x86_64.rpm: Already downloaded [SKIPPED] sqlite-libs-3.40.1-2.fc38.x86_64.rpm: Already downloaded [SKIPPED] systemd-libs-253-6.fc38.x86_64.rpm: Already downloaded [SKIPPED] tar-1.34-8.fc38.x86_64.rpm: Already downloaded [SKIPPED] tzdata-2022g-2.fc38.noarch.rpm: Already downloaded [SKIPPED] unzip-6.0-60.fc38.x86_64.rpm: Already downloaded [SKIPPED] util-linux-2.38.1-4.fc38.x86_64.rpm: Already downloaded [SKIPPED] util-linux-core-2.38.1-4.fc38.x86_64.rpm: Already downloaded [SKIPPED] which-2.21-39.fc38.x86_64.rpm: Already downloaded [SKIPPED] xxhash-libs-0.8.1-4.fc38.x86_64.rpm: Already downloaded [SKIPPED] xz-5.4.1-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] xz-libs-5.4.1-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] zip-3.0-36.fc38.x86_64.rpm: Already downloaded [SKIPPED] zlib-1.2.13-3.fc38.x86_64.rpm: Already downloaded [SKIPPED] zstd-1.5.4-1.fc38.x86_64.rpm: Already downloaded fedora 1.6 MB/s | 1.6 kB 00:00 Importing GPG key 0xEB10B464: Userid : "Fedora (38) " Fingerprint: 6A51 BBAB BA3D 5467 B617 1221 809A 8D7C EB10 B464 From : /usr/share/distribution-gpg-keys/fedora/RPM-GPG-KEY-fedora-38-primary Key imported successfully Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Running scriptlet: filesystem-3.18-3.fc38.x86_64 1/1 Preparing : 1/1 Installing : libgcc-13.0.1-0.8.fc38.x86_64 1/151 Running scriptlet: libgcc-13.0.1-0.8.fc38.x86_64 1/151 Installing : crypto-policies-20230301-1.gita12f7b2.fc38.noarc 2/151 Running scriptlet: crypto-policies-20230301-1.gita12f7b2.fc38.noarc 2/151 Installing : tzdata-2022g-2.fc38.noarch 3/151 Installing : fedora-release-identity-basic-38-0.30.noarch 4/151 Installing : rust-srpm-macros-24-1.fc38.noarch 5/151 Installing : qt5-srpm-macros-5.15.8-2.fc38.noarch 6/151 Installing : pyproject-srpm-macros-1.6.3-1.fc38.noarch 7/151 Installing : publicsuffix-list-dafsa-20221208-2.fc38.noarch 8/151 Installing : pkgconf-m4-1.8.0-6.fc38.noarch 9/151 Installing : perl-srpm-macros-1-48.fc38.noarch 10/151 Installing : pcre2-syntax-10.42-1.fc38.1.noarch 11/151 Installing : package-notes-srpm-macros-0.5-7.fc38.noarch 12/151 Installing : openblas-srpm-macros-2-13.fc38.noarch 13/151 Installing : ocaml-srpm-macros-7-3.fc38.noarch 14/151 Installing : ncurses-base-6.4-3.20230114.fc38.noarch 15/151 Installing : libssh-config-0.10.4-4.fc38.noarch 16/151 Installing : kernel-srpm-macros-1.0-16.fc38.noarch 17/151 Installing : gnat-srpm-macros-6-2.fc38.noarch 18/151 Installing : ghc-srpm-macros-1.6.1-1.fc38.noarch 19/151 Installing : fpc-srpm-macros-1.3-7.fc38.noarch 20/151 Installing : fedora-gpg-keys-38-0.5.noarch 21/151 Installing : fedora-release-38-0.30.noarch 22/151 Installing : fedora-repos-38-0.5.noarch 23/151 Installing : fedora-release-common-38-0.30.noarch 24/151 Installing : setup-2.14.3-2.fc38.noarch 25/151 warning: /etc/hosts created as /etc/hosts.rpmnew Running scriptlet: setup-2.14.3-2.fc38.noarch 25/151 Installing : filesystem-3.18-3.fc38.x86_64 26/151 Installing : basesystem-11-15.fc38.noarch 27/151 Installing : glibc-gconv-extra-2.37-1.fc38.x86_64 28/151 Running scriptlet: glibc-gconv-extra-2.37-1.fc38.x86_64 28/151 Installing : glibc-minimal-langpack-2.37-1.fc38.x86_64 29/151 Installing : glibc-common-2.37-1.fc38.x86_64 30/151 Running scriptlet: glibc-2.37-1.fc38.x86_64 31/151 Installing : glibc-2.37-1.fc38.x86_64 31/151 Running scriptlet: glibc-2.37-1.fc38.x86_64 31/151 Installing : ncurses-libs-6.4-3.20230114.fc38.x86_64 32/151 Installing : bash-5.2.15-3.fc38.x86_64 33/151 Running scriptlet: bash-5.2.15-3.fc38.x86_64 33/151 Installing : zlib-1.2.13-3.fc38.x86_64 34/151 Installing : xz-libs-5.4.1-1.fc38.x86_64 35/151 Installing : bzip2-libs-1.0.8-13.fc38.x86_64 36/151 Installing : libzstd-1.5.4-1.fc38.x86_64 37/151 Installing : elfutils-libelf-0.189-1.fc38.x86_64 38/151 Installing : libstdc++-13.0.1-0.8.fc38.x86_64 39/151 Installing : libuuid-2.38.1-4.fc38.x86_64 40/151 Installing : popt-1.19-2.fc38.x86_64 41/151 Installing : libblkid-2.38.1-4.fc38.x86_64 42/151 Installing : readline-8.2-3.fc38.x86_64 43/151 Installing : gmp-1:6.2.1-4.fc38.x86_64 44/151 Installing : libattr-2.5.1-6.fc38.x86_64 45/151 Installing : libacl-2.3.1-6.fc38.x86_64 46/151 Installing : libcap-2.48-6.fc38.x86_64 47/151 Installing : libxcrypt-4.4.33-7.fc38.x86_64 48/151 Installing : libeconf-0.4.0-5.fc38.x86_64 49/151 Installing : lz4-libs-1.9.4-2.fc38.x86_64 50/151 Installing : systemd-libs-253-6.fc38.x86_64 51/151 Installing : mpfr-4.1.1-3.fc38.x86_64 52/151 Installing : dwz-0.15-2.fc38.x86_64 53/151 Installing : unzip-6.0-60.fc38.x86_64 54/151 Installing : file-libs-5.44-3.fc38.x86_64 55/151 Installing : file-5.44-3.fc38.x86_64 56/151 Installing : sqlite-libs-3.40.1-2.fc38.x86_64 57/151 Installing : alternatives-1.22-1.fc38.x86_64 58/151 Installing : libcap-ng-0.8.3-5.fc38.x86_64 59/151 Installing : audit-libs-3.1-2.fc38.x86_64 60/151 Installing : pam-libs-1.5.2-16.fc38.x86_64 61/151 Installing : libcom_err-1.46.5-4.fc38.x86_64 62/151 Installing : libsepol-3.5-1.fc38.x86_64 63/151 Installing : libsmartcols-2.38.1-4.fc38.x86_64 64/151 Installing : libunistring1.0-1.0-1.fc38.x86_64 65/151 Installing : libidn2-2.3.4-2.fc38.x86_64 66/151 Installing : lua-libs-5.4.4-9.fc38.x86_64 67/151 Installing : pcre2-10.42-1.fc38.1.x86_64 68/151 Installing : libselinux-3.5-1.fc38.x86_64 69/151 Installing : sed-4.8-12.fc38.x86_64 70/151 Installing : grep-3.8-3.fc38.x86_64 71/151 Installing : findutils-1:4.9.0-3.fc38.x86_64 72/151 Installing : xz-5.4.1-1.fc38.x86_64 73/151 Installing : libmount-2.38.1-4.fc38.x86_64 74/151 Installing : util-linux-core-2.38.1-4.fc38.x86_64 75/151 Installing : libsemanage-3.5-2.fc38.x86_64 76/151 Installing : shadow-utils-2:4.13-6.fc38.x86_64 77/151 Running scriptlet: libutempter-1.2.1-8.fc38.x86_64 78/151 Installing : libutempter-1.2.1-8.fc38.x86_64 78/151 Installing : tar-2:1.34-8.fc38.x86_64 79/151 Installing : libpsl-0.21.2-2.fc38.x86_64 80/151 Installing : zip-3.0-36.fc38.x86_64 81/151 Installing : zstd-1.5.4-1.fc38.x86_64 82/151 Installing : libfdisk-2.38.1-4.fc38.x86_64 83/151 Installing : bzip2-1.0.8-13.fc38.x86_64 84/151 Installing : libxml2-2.10.3-3.fc38.x86_64 85/151 Installing : ed-1.19-2.fc38.x86_64 86/151 Installing : patch-2.7.6-19.fc38.x86_64 87/151 Installing : elfutils-default-yama-scope-0.189-1.fc38.noarch 88/151 Running scriptlet: elfutils-default-yama-scope-0.189-1.fc38.noarch 88/151 Installing : cpio-2.13-14.fc38.x86_64 89/151 Installing : diffutils-3.9-1.fc38.x86_64 90/151 Installing : gdbm-libs-1:1.23-3.fc38.x86_64 91/151 Installing : cyrus-sasl-lib-2.1.28-9.fc38.x86_64 92/151 Installing : jansson-2.13.1-6.fc38.x86_64 93/151 Installing : keyutils-libs-1.6.1-6.fc38.x86_64 94/151 Installing : libbrotli-1.0.9-11.fc38.x86_64 95/151 Installing : libdb-5.3.28-55.fc38.x86_64 96/151 Installing : libffi-3.4.4-2.fc38.x86_64 97/151 Installing : p11-kit-0.24.1-6.fc38.x86_64 98/151 Installing : libgomp-13.0.1-0.8.fc38.x86_64 99/151 Installing : libnghttp2-1.52.0-1.fc38.x86_64 100/151 Installing : libpkgconf-1.8.0-6.fc38.x86_64 101/151 Installing : pkgconf-1.8.0-6.fc38.x86_64 102/151 Installing : pkgconf-pkg-config-1.8.0-6.fc38.x86_64 103/151 Installing : libsigsegv-2.14-4.fc38.x86_64 104/151 Installing : gawk-5.1.1-5.fc38.x86_64 105/151 Installing : libtasn1-4.19.0-2.fc38.x86_64 106/151 Installing : p11-kit-trust-0.24.1-6.fc38.x86_64 107/151 Running scriptlet: p11-kit-trust-0.24.1-6.fc38.x86_64 107/151 Installing : libverto-0.3.2-5.fc38.x86_64 108/151 Installing : xxhash-libs-0.8.1-4.fc38.x86_64 109/151 Installing : coreutils-common-9.1-11.fc38.x86_64 110/151 Installing : openssl-libs-1:3.0.8-2.fc38.x86_64 111/151 Installing : coreutils-9.1-11.fc38.x86_64 112/151 Running scriptlet: ca-certificates-2023.2.60-2.fc38.noarch 113/151 Installing : ca-certificates-2023.2.60-2.fc38.noarch 113/151 Running scriptlet: ca-certificates-2023.2.60-2.fc38.noarch 113/151 Installing : krb5-libs-1.20.1-8.fc38.x86_64 114/151 Installing : libtirpc-1.3.3-1.fc38.x86_64 115/151 Running scriptlet: authselect-libs-1.4.2-2.fc38.x86_64 116/151 Installing : authselect-libs-1.4.2-2.fc38.x86_64 116/151 Installing : gzip-1.12-3.fc38.x86_64 117/151 Installing : rpm-sequoia-1.3.0-1.fc38.x86_64 118/151 Installing : rpm-libs-4.18.1-1.fc38.x86_64 119/151 Installing : cracklib-2.9.7-31.fc38.x86_64 120/151 Installing : libpwquality-1.4.5-3.fc38.x86_64 121/151 Installing : authselect-1.4.2-2.fc38.x86_64 122/151 Installing : libnsl2-2.0.0-5.fc38.x86_64 123/151 Installing : pam-1.5.2-16.fc38.x86_64 124/151 Installing : libssh-0.10.4-4.fc38.x86_64 125/151 Installing : libarchive-3.6.1-4.fc38.x86_64 126/151 Installing : libevent-2.1.12-8.fc38.x86_64 127/151 Installing : openldap-2.6.4-1.fc38.x86_64 128/151 Installing : libcurl-7.87.0-6.fc38.x86_64 129/151 Installing : elfutils-libs-0.189-1.fc38.x86_64 130/151 Installing : elfutils-debuginfod-client-0.189-1.fc38.x86_64 131/151 Installing : binutils-gold-2.39-9.fc38.x86_64 132/151 Installing : binutils-2.39-9.fc38.x86_64 133/151 Running scriptlet: binutils-2.39-9.fc38.x86_64 133/151 Installing : elfutils-0.189-1.fc38.x86_64 134/151 Installing : gdb-minimal-13.1-2.fc38.x86_64 135/151 Installing : debugedit-5.0-7.fc38.x86_64 136/151 Installing : rpm-build-libs-4.18.1-1.fc38.x86_64 137/151 Installing : curl-7.87.0-6.fc38.x86_64 138/151 Running scriptlet: rpm-4.18.1-1.fc38.x86_64 139/151 Installing : rpm-4.18.1-1.fc38.x86_64 139/151 Installing : efi-srpm-macros-5-7.fc38.noarch 140/151 Installing : lua-srpm-macros-1-8.fc38.noarch 141/151 Installing : rpmautospec-rpm-macros-0.3.5-1.fc38.noarch 142/151 Installing : ansible-srpm-macros-1-9.1.fc38.noarch 143/151 Installing : fonts-srpm-macros-1:2.0.5-11.fc38.noarch 144/151 Installing : go-srpm-macros-3.2.0-2.fc38.noarch 145/151 Installing : python-srpm-macros-3.11-10.fc38.noarch 146/151 Installing : redhat-rpm-config-252-1.fc38.noarch 147/151 Installing : rpm-build-4.18.1-1.fc38.x86_64 148/151 Installing : util-linux-2.38.1-4.fc38.x86_64 149/151 Installing : which-2.21-39.fc38.x86_64 150/151 Installing : info-7.0.2-2.fc38.x86_64 151/151 Running scriptlet: filesystem-3.18-3.fc38.x86_64 151/151 Running scriptlet: ca-certificates-2023.2.60-2.fc38.noarch 151/151 Running scriptlet: authselect-libs-1.4.2-2.fc38.x86_64 151/151 Running scriptlet: rpm-4.18.1-1.fc38.x86_64 151/151 Running scriptlet: info-7.0.2-2.fc38.x86_64 151/151 Verifying : alternatives-1.22-1.fc38.x86_64 1/151 Verifying : ansible-srpm-macros-1-9.1.fc38.noarch 2/151 Verifying : audit-libs-3.1-2.fc38.x86_64 3/151 Verifying : authselect-1.4.2-2.fc38.x86_64 4/151 Verifying : authselect-libs-1.4.2-2.fc38.x86_64 5/151 Verifying : basesystem-11-15.fc38.noarch 6/151 Verifying : bash-5.2.15-3.fc38.x86_64 7/151 Verifying : binutils-2.39-9.fc38.x86_64 8/151 Verifying : binutils-gold-2.39-9.fc38.x86_64 9/151 Verifying : bzip2-1.0.8-13.fc38.x86_64 10/151 Verifying : bzip2-libs-1.0.8-13.fc38.x86_64 11/151 Verifying : ca-certificates-2023.2.60-2.fc38.noarch 12/151 Verifying : coreutils-9.1-11.fc38.x86_64 13/151 Verifying : coreutils-common-9.1-11.fc38.x86_64 14/151 Verifying : cpio-2.13-14.fc38.x86_64 15/151 Verifying : cracklib-2.9.7-31.fc38.x86_64 16/151 Verifying : crypto-policies-20230301-1.gita12f7b2.fc38.noarc 17/151 Verifying : curl-7.87.0-6.fc38.x86_64 18/151 Verifying : cyrus-sasl-lib-2.1.28-9.fc38.x86_64 19/151 Verifying : debugedit-5.0-7.fc38.x86_64 20/151 Verifying : diffutils-3.9-1.fc38.x86_64 21/151 Verifying : dwz-0.15-2.fc38.x86_64 22/151 Verifying : ed-1.19-2.fc38.x86_64 23/151 Verifying : efi-srpm-macros-5-7.fc38.noarch 24/151 Verifying : elfutils-0.189-1.fc38.x86_64 25/151 Verifying : elfutils-debuginfod-client-0.189-1.fc38.x86_64 26/151 Verifying : elfutils-default-yama-scope-0.189-1.fc38.noarch 27/151 Verifying : elfutils-libelf-0.189-1.fc38.x86_64 28/151 Verifying : elfutils-libs-0.189-1.fc38.x86_64 29/151 Verifying : fedora-gpg-keys-38-0.5.noarch 30/151 Verifying : fedora-release-38-0.30.noarch 31/151 Verifying : fedora-release-common-38-0.30.noarch 32/151 Verifying : fedora-release-identity-basic-38-0.30.noarch 33/151 Verifying : fedora-repos-38-0.5.noarch 34/151 Verifying : file-5.44-3.fc38.x86_64 35/151 Verifying : file-libs-5.44-3.fc38.x86_64 36/151 Verifying : filesystem-3.18-3.fc38.x86_64 37/151 Verifying : findutils-1:4.9.0-3.fc38.x86_64 38/151 Verifying : fonts-srpm-macros-1:2.0.5-11.fc38.noarch 39/151 Verifying : fpc-srpm-macros-1.3-7.fc38.noarch 40/151 Verifying : gawk-5.1.1-5.fc38.x86_64 41/151 Verifying : gdb-minimal-13.1-2.fc38.x86_64 42/151 Verifying : gdbm-libs-1:1.23-3.fc38.x86_64 43/151 Verifying : ghc-srpm-macros-1.6.1-1.fc38.noarch 44/151 Verifying : glibc-2.37-1.fc38.x86_64 45/151 Verifying : glibc-common-2.37-1.fc38.x86_64 46/151 Verifying : glibc-gconv-extra-2.37-1.fc38.x86_64 47/151 Verifying : glibc-minimal-langpack-2.37-1.fc38.x86_64 48/151 Verifying : gmp-1:6.2.1-4.fc38.x86_64 49/151 Verifying : gnat-srpm-macros-6-2.fc38.noarch 50/151 Verifying : go-srpm-macros-3.2.0-2.fc38.noarch 51/151 Verifying : grep-3.8-3.fc38.x86_64 52/151 Verifying : gzip-1.12-3.fc38.x86_64 53/151 Verifying : info-7.0.2-2.fc38.x86_64 54/151 Verifying : jansson-2.13.1-6.fc38.x86_64 55/151 Verifying : kernel-srpm-macros-1.0-16.fc38.noarch 56/151 Verifying : keyutils-libs-1.6.1-6.fc38.x86_64 57/151 Verifying : krb5-libs-1.20.1-8.fc38.x86_64 58/151 Verifying : libacl-2.3.1-6.fc38.x86_64 59/151 Verifying : libarchive-3.6.1-4.fc38.x86_64 60/151 Verifying : libattr-2.5.1-6.fc38.x86_64 61/151 Verifying : libblkid-2.38.1-4.fc38.x86_64 62/151 Verifying : libbrotli-1.0.9-11.fc38.x86_64 63/151 Verifying : libcap-2.48-6.fc38.x86_64 64/151 Verifying : libcap-ng-0.8.3-5.fc38.x86_64 65/151 Verifying : libcom_err-1.46.5-4.fc38.x86_64 66/151 Verifying : libcurl-7.87.0-6.fc38.x86_64 67/151 Verifying : libdb-5.3.28-55.fc38.x86_64 68/151 Verifying : libeconf-0.4.0-5.fc38.x86_64 69/151 Verifying : libevent-2.1.12-8.fc38.x86_64 70/151 Verifying : libfdisk-2.38.1-4.fc38.x86_64 71/151 Verifying : libffi-3.4.4-2.fc38.x86_64 72/151 Verifying : libgcc-13.0.1-0.8.fc38.x86_64 73/151 Verifying : libgomp-13.0.1-0.8.fc38.x86_64 74/151 Verifying : libidn2-2.3.4-2.fc38.x86_64 75/151 Verifying : libmount-2.38.1-4.fc38.x86_64 76/151 Verifying : libnghttp2-1.52.0-1.fc38.x86_64 77/151 Verifying : libnsl2-2.0.0-5.fc38.x86_64 78/151 Verifying : libpkgconf-1.8.0-6.fc38.x86_64 79/151 Verifying : libpsl-0.21.2-2.fc38.x86_64 80/151 Verifying : libpwquality-1.4.5-3.fc38.x86_64 81/151 Verifying : libselinux-3.5-1.fc38.x86_64 82/151 Verifying : libsemanage-3.5-2.fc38.x86_64 83/151 Verifying : libsepol-3.5-1.fc38.x86_64 84/151 Verifying : libsigsegv-2.14-4.fc38.x86_64 85/151 Verifying : libsmartcols-2.38.1-4.fc38.x86_64 86/151 Verifying : libssh-0.10.4-4.fc38.x86_64 87/151 Verifying : libssh-config-0.10.4-4.fc38.noarch 88/151 Verifying : libstdc++-13.0.1-0.8.fc38.x86_64 89/151 Verifying : libtasn1-4.19.0-2.fc38.x86_64 90/151 Verifying : libtirpc-1.3.3-1.fc38.x86_64 91/151 Verifying : libunistring1.0-1.0-1.fc38.x86_64 92/151 Verifying : libutempter-1.2.1-8.fc38.x86_64 93/151 Verifying : libuuid-2.38.1-4.fc38.x86_64 94/151 Verifying : libverto-0.3.2-5.fc38.x86_64 95/151 Verifying : libxcrypt-4.4.33-7.fc38.x86_64 96/151 Verifying : libxml2-2.10.3-3.fc38.x86_64 97/151 Verifying : libzstd-1.5.4-1.fc38.x86_64 98/151 Verifying : lua-libs-5.4.4-9.fc38.x86_64 99/151 Verifying : lua-srpm-macros-1-8.fc38.noarch 100/151 Verifying : lz4-libs-1.9.4-2.fc38.x86_64 101/151 Verifying : mpfr-4.1.1-3.fc38.x86_64 102/151 Verifying : ncurses-base-6.4-3.20230114.fc38.noarch 103/151 Verifying : ncurses-libs-6.4-3.20230114.fc38.x86_64 104/151 Verifying : ocaml-srpm-macros-7-3.fc38.noarch 105/151 Verifying : openblas-srpm-macros-2-13.fc38.noarch 106/151 Verifying : openldap-2.6.4-1.fc38.x86_64 107/151 Verifying : openssl-libs-1:3.0.8-2.fc38.x86_64 108/151 Verifying : p11-kit-0.24.1-6.fc38.x86_64 109/151 Verifying : p11-kit-trust-0.24.1-6.fc38.x86_64 110/151 Verifying : package-notes-srpm-macros-0.5-7.fc38.noarch 111/151 Verifying : pam-1.5.2-16.fc38.x86_64 112/151 Verifying : pam-libs-1.5.2-16.fc38.x86_64 113/151 Verifying : patch-2.7.6-19.fc38.x86_64 114/151 Verifying : pcre2-10.42-1.fc38.1.x86_64 115/151 Verifying : pcre2-syntax-10.42-1.fc38.1.noarch 116/151 Verifying : perl-srpm-macros-1-48.fc38.noarch 117/151 Verifying : pkgconf-1.8.0-6.fc38.x86_64 118/151 Verifying : pkgconf-m4-1.8.0-6.fc38.noarch 119/151 Verifying : pkgconf-pkg-config-1.8.0-6.fc38.x86_64 120/151 Verifying : popt-1.19-2.fc38.x86_64 121/151 Verifying : publicsuffix-list-dafsa-20221208-2.fc38.noarch 122/151 Verifying : pyproject-srpm-macros-1.6.3-1.fc38.noarch 123/151 Verifying : python-srpm-macros-3.11-10.fc38.noarch 124/151 Verifying : qt5-srpm-macros-5.15.8-2.fc38.noarch 125/151 Verifying : readline-8.2-3.fc38.x86_64 126/151 Verifying : redhat-rpm-config-252-1.fc38.noarch 127/151 Verifying : rpm-4.18.1-1.fc38.x86_64 128/151 Verifying : rpm-build-4.18.1-1.fc38.x86_64 129/151 Verifying : rpm-build-libs-4.18.1-1.fc38.x86_64 130/151 Verifying : rpm-libs-4.18.1-1.fc38.x86_64 131/151 Verifying : rpm-sequoia-1.3.0-1.fc38.x86_64 132/151 Verifying : rpmautospec-rpm-macros-0.3.5-1.fc38.noarch 133/151 Verifying : rust-srpm-macros-24-1.fc38.noarch 134/151 Verifying : sed-4.8-12.fc38.x86_64 135/151 Verifying : setup-2.14.3-2.fc38.noarch 136/151 Verifying : shadow-utils-2:4.13-6.fc38.x86_64 137/151 Verifying : sqlite-libs-3.40.1-2.fc38.x86_64 138/151 Verifying : systemd-libs-253-6.fc38.x86_64 139/151 Verifying : tar-2:1.34-8.fc38.x86_64 140/151 Verifying : tzdata-2022g-2.fc38.noarch 141/151 Verifying : unzip-6.0-60.fc38.x86_64 142/151 Verifying : util-linux-2.38.1-4.fc38.x86_64 143/151 Verifying : util-linux-core-2.38.1-4.fc38.x86_64 144/151 Verifying : which-2.21-39.fc38.x86_64 145/151 Verifying : xxhash-libs-0.8.1-4.fc38.x86_64 146/151 Verifying : xz-5.4.1-1.fc38.x86_64 147/151 Verifying : xz-libs-5.4.1-1.fc38.x86_64 148/151 Verifying : zip-3.0-36.fc38.x86_64 149/151 Verifying : zlib-1.2.13-3.fc38.x86_64 150/151 Verifying : zstd-1.5.4-1.fc38.x86_64 151/151 Installed: alternatives-1.22-1.fc38.x86_64 ansible-srpm-macros-1-9.1.fc38.noarch audit-libs-3.1-2.fc38.x86_64 authselect-1.4.2-2.fc38.x86_64 authselect-libs-1.4.2-2.fc38.x86_64 basesystem-11-15.fc38.noarch bash-5.2.15-3.fc38.x86_64 binutils-2.39-9.fc38.x86_64 binutils-gold-2.39-9.fc38.x86_64 bzip2-1.0.8-13.fc38.x86_64 bzip2-libs-1.0.8-13.fc38.x86_64 ca-certificates-2023.2.60-2.fc38.noarch coreutils-9.1-11.fc38.x86_64 coreutils-common-9.1-11.fc38.x86_64 cpio-2.13-14.fc38.x86_64 cracklib-2.9.7-31.fc38.x86_64 crypto-policies-20230301-1.gita12f7b2.fc38.noarch curl-7.87.0-6.fc38.x86_64 cyrus-sasl-lib-2.1.28-9.fc38.x86_64 debugedit-5.0-7.fc38.x86_64 diffutils-3.9-1.fc38.x86_64 dwz-0.15-2.fc38.x86_64 ed-1.19-2.fc38.x86_64 efi-srpm-macros-5-7.fc38.noarch elfutils-0.189-1.fc38.x86_64 elfutils-debuginfod-client-0.189-1.fc38.x86_64 elfutils-default-yama-scope-0.189-1.fc38.noarch elfutils-libelf-0.189-1.fc38.x86_64 elfutils-libs-0.189-1.fc38.x86_64 fedora-gpg-keys-38-0.5.noarch fedora-release-38-0.30.noarch fedora-release-common-38-0.30.noarch fedora-release-identity-basic-38-0.30.noarch fedora-repos-38-0.5.noarch file-5.44-3.fc38.x86_64 file-libs-5.44-3.fc38.x86_64 filesystem-3.18-3.fc38.x86_64 findutils-1:4.9.0-3.fc38.x86_64 fonts-srpm-macros-1:2.0.5-11.fc38.noarch fpc-srpm-macros-1.3-7.fc38.noarch gawk-5.1.1-5.fc38.x86_64 gdb-minimal-13.1-2.fc38.x86_64 gdbm-libs-1:1.23-3.fc38.x86_64 ghc-srpm-macros-1.6.1-1.fc38.noarch glibc-2.37-1.fc38.x86_64 glibc-common-2.37-1.fc38.x86_64 glibc-gconv-extra-2.37-1.fc38.x86_64 glibc-minimal-langpack-2.37-1.fc38.x86_64 gmp-1:6.2.1-4.fc38.x86_64 gnat-srpm-macros-6-2.fc38.noarch go-srpm-macros-3.2.0-2.fc38.noarch grep-3.8-3.fc38.x86_64 gzip-1.12-3.fc38.x86_64 info-7.0.2-2.fc38.x86_64 jansson-2.13.1-6.fc38.x86_64 kernel-srpm-macros-1.0-16.fc38.noarch keyutils-libs-1.6.1-6.fc38.x86_64 krb5-libs-1.20.1-8.fc38.x86_64 libacl-2.3.1-6.fc38.x86_64 libarchive-3.6.1-4.fc38.x86_64 libattr-2.5.1-6.fc38.x86_64 libblkid-2.38.1-4.fc38.x86_64 libbrotli-1.0.9-11.fc38.x86_64 libcap-2.48-6.fc38.x86_64 libcap-ng-0.8.3-5.fc38.x86_64 libcom_err-1.46.5-4.fc38.x86_64 libcurl-7.87.0-6.fc38.x86_64 libdb-5.3.28-55.fc38.x86_64 libeconf-0.4.0-5.fc38.x86_64 libevent-2.1.12-8.fc38.x86_64 libfdisk-2.38.1-4.fc38.x86_64 libffi-3.4.4-2.fc38.x86_64 libgcc-13.0.1-0.8.fc38.x86_64 libgomp-13.0.1-0.8.fc38.x86_64 libidn2-2.3.4-2.fc38.x86_64 libmount-2.38.1-4.fc38.x86_64 libnghttp2-1.52.0-1.fc38.x86_64 libnsl2-2.0.0-5.fc38.x86_64 libpkgconf-1.8.0-6.fc38.x86_64 libpsl-0.21.2-2.fc38.x86_64 libpwquality-1.4.5-3.fc38.x86_64 libselinux-3.5-1.fc38.x86_64 libsemanage-3.5-2.fc38.x86_64 libsepol-3.5-1.fc38.x86_64 libsigsegv-2.14-4.fc38.x86_64 libsmartcols-2.38.1-4.fc38.x86_64 libssh-0.10.4-4.fc38.x86_64 libssh-config-0.10.4-4.fc38.noarch libstdc++-13.0.1-0.8.fc38.x86_64 libtasn1-4.19.0-2.fc38.x86_64 libtirpc-1.3.3-1.fc38.x86_64 libunistring1.0-1.0-1.fc38.x86_64 libutempter-1.2.1-8.fc38.x86_64 libuuid-2.38.1-4.fc38.x86_64 libverto-0.3.2-5.fc38.x86_64 libxcrypt-4.4.33-7.fc38.x86_64 libxml2-2.10.3-3.fc38.x86_64 libzstd-1.5.4-1.fc38.x86_64 lua-libs-5.4.4-9.fc38.x86_64 lua-srpm-macros-1-8.fc38.noarch lz4-libs-1.9.4-2.fc38.x86_64 mpfr-4.1.1-3.fc38.x86_64 ncurses-base-6.4-3.20230114.fc38.noarch ncurses-libs-6.4-3.20230114.fc38.x86_64 ocaml-srpm-macros-7-3.fc38.noarch openblas-srpm-macros-2-13.fc38.noarch openldap-2.6.4-1.fc38.x86_64 openssl-libs-1:3.0.8-2.fc38.x86_64 p11-kit-0.24.1-6.fc38.x86_64 p11-kit-trust-0.24.1-6.fc38.x86_64 package-notes-srpm-macros-0.5-7.fc38.noarch pam-1.5.2-16.fc38.x86_64 pam-libs-1.5.2-16.fc38.x86_64 patch-2.7.6-19.fc38.x86_64 pcre2-10.42-1.fc38.1.x86_64 pcre2-syntax-10.42-1.fc38.1.noarch perl-srpm-macros-1-48.fc38.noarch pkgconf-1.8.0-6.fc38.x86_64 pkgconf-m4-1.8.0-6.fc38.noarch pkgconf-pkg-config-1.8.0-6.fc38.x86_64 popt-1.19-2.fc38.x86_64 publicsuffix-list-dafsa-20221208-2.fc38.noarch pyproject-srpm-macros-1.6.3-1.fc38.noarch python-srpm-macros-3.11-10.fc38.noarch qt5-srpm-macros-5.15.8-2.fc38.noarch readline-8.2-3.fc38.x86_64 redhat-rpm-config-252-1.fc38.noarch rpm-4.18.1-1.fc38.x86_64 rpm-build-4.18.1-1.fc38.x86_64 rpm-build-libs-4.18.1-1.fc38.x86_64 rpm-libs-4.18.1-1.fc38.x86_64 rpm-sequoia-1.3.0-1.fc38.x86_64 rpmautospec-rpm-macros-0.3.5-1.fc38.noarch rust-srpm-macros-24-1.fc38.noarch sed-4.8-12.fc38.x86_64 setup-2.14.3-2.fc38.noarch shadow-utils-2:4.13-6.fc38.x86_64 sqlite-libs-3.40.1-2.fc38.x86_64 systemd-libs-253-6.fc38.x86_64 tar-2:1.34-8.fc38.x86_64 tzdata-2022g-2.fc38.noarch unzip-6.0-60.fc38.x86_64 util-linux-2.38.1-4.fc38.x86_64 util-linux-core-2.38.1-4.fc38.x86_64 which-2.21-39.fc38.x86_64 xxhash-libs-0.8.1-4.fc38.x86_64 xz-5.4.1-1.fc38.x86_64 xz-libs-5.4.1-1.fc38.x86_64 zip-3.0-36.fc38.x86_64 zlib-1.2.13-3.fc38.x86_64 zstd-1.5.4-1.fc38.x86_64 Complete! Finish: dnf install Start: creating root cache Finish: creating root cache Finish: chroot init INFO: Installed packages: INFO: libacl-2.3.1-6.fc38.x86_64 sed-4.8-12.fc38.x86_64 glibc-2.37-1.fc38.x86_64 libverto-0.3.2-5.fc38.x86_64 authselect-libs-1.4.2-2.fc38.x86_64 pyproject-srpm-macros-1.6.3-1.fc38.noarch libsigsegv-2.14-4.fc38.x86_64 xxhash-libs-0.8.1-4.fc38.x86_64 lua-srpm-macros-1-8.fc38.noarch libxml2-2.10.3-3.fc38.x86_64 findutils-4.9.0-3.fc38.x86_64 python-srpm-macros-3.11-10.fc38.noarch libdb-5.3.28-55.fc38.x86_64 tar-1.34-8.fc38.x86_64 diffutils-3.9-1.fc38.x86_64 gzip-1.12-3.fc38.x86_64 pam-libs-1.5.2-16.fc38.x86_64 kernel-srpm-macros-1.0-16.fc38.noarch pkgconf-pkg-config-1.8.0-6.fc38.x86_64 binutils-gold-2.39-9.fc38.x86_64 libidn2-2.3.4-2.fc38.x86_64 gmp-6.2.1-4.fc38.x86_64 libxcrypt-4.4.33-7.fc38.x86_64 libevent-2.1.12-8.fc38.x86_64 elfutils-0.189-1.fc38.x86_64 libpkgconf-1.8.0-6.fc38.x86_64 ghc-srpm-macros-1.6.1-1.fc38.noarch libsepol-3.5-1.fc38.x86_64 ncurses-libs-6.4-3.20230114.fc38.x86_64 glibc-gconv-extra-2.37-1.fc38.x86_64 debugedit-5.0-7.fc38.x86_64 filesystem-3.18-3.fc38.x86_64 readline-8.2-3.fc38.x86_64 sqlite-libs-3.40.1-2.fc38.x86_64 libunistring1.0-1.0-1.fc38.x86_64 pkgconf-m4-1.8.0-6.fc38.noarch fedora-repos-38-0.5.noarch rpm-sequoia-1.3.0-1.fc38.x86_64 rpm-build-4.18.1-1.fc38.x86_64 unzip-6.0-60.fc38.x86_64 package-notes-srpm-macros-0.5-7.fc38.noarch libblkid-2.38.1-4.fc38.x86_64 pcre2-10.42-1.fc38.1.x86_64 libffi-3.4.4-2.fc38.x86_64 info-7.0.2-2.fc38.x86_64 xz-libs-5.4.1-1.fc38.x86_64 zstd-1.5.4-1.fc38.x86_64 zlib-1.2.13-3.fc38.x86_64 rust-srpm-macros-24-1.fc38.noarch rpm-4.18.1-1.fc38.x86_64 audit-libs-3.1-2.fc38.x86_64 grep-3.8-3.fc38.x86_64 binutils-2.39-9.fc38.x86_64 go-srpm-macros-3.2.0-2.fc38.noarch gnat-srpm-macros-6-2.fc38.noarch libselinux-3.5-1.fc38.x86_64 shadow-utils-4.13-6.fc38.x86_64 libeconf-0.4.0-5.fc38.x86_64 bzip2-1.0.8-13.fc38.x86_64 gdbm-libs-1.23-3.fc38.x86_64 libcap-2.48-6.fc38.x86_64 libcap-ng-0.8.3-5.fc38.x86_64 rpm-libs-4.18.1-1.fc38.x86_64 libssh-config-0.10.4-4.fc38.noarch fedora-gpg-keys-38-0.5.noarch libnsl2-2.0.0-5.fc38.x86_64 libcurl-7.87.0-6.fc38.x86_64 ca-certificates-2023.2.60-2.fc38.noarch ocaml-srpm-macros-7-3.fc38.noarch libssh-0.10.4-4.fc38.x86_64 elfutils-debuginfod-client-0.189-1.fc38.x86_64 file-5.44-3.fc38.x86_64 elfutils-default-yama-scope-0.189-1.fc38.noarch dwz-0.15-2.fc38.x86_64 libuuid-2.38.1-4.fc38.x86_64 gpg-pubkey-eb10b464-6202d9c6 fonts-srpm-macros-2.0.5-11.fc38.noarch cyrus-sasl-lib-2.1.28-9.fc38.x86_64 gdb-minimal-13.1-2.fc38.x86_64 libtirpc-1.3.3-1.fc38.x86_64 redhat-rpm-config-252-1.fc38.noarch pkgconf-1.8.0-6.fc38.x86_64 keyutils-libs-1.6.1-6.fc38.x86_64 xz-5.4.1-1.fc38.x86_64 crypto-policies-20230301-1.gita12f7b2.fc38.noarch popt-1.19-2.fc38.x86_64 openldap-2.6.4-1.fc38.x86_64 ncurses-base-6.4-3.20230114.fc38.noarch cracklib-2.9.7-31.fc38.x86_64 libgomp-13.0.1-0.8.fc38.x86_64 ed-1.19-2.fc38.x86_64 alternatives-1.22-1.fc38.x86_64 pam-1.5.2-16.fc38.x86_64 libbrotli-1.0.9-11.fc38.x86_64 libarchive-3.6.1-4.fc38.x86_64 fedora-release-common-38-0.30.noarch libsmartcols-2.38.1-4.fc38.x86_64 openssl-libs-3.0.8-2.fc38.x86_64 bzip2-libs-1.0.8-13.fc38.x86_64 systemd-libs-253-6.fc38.x86_64 publicsuffix-list-dafsa-20221208-2.fc38.noarch qt5-srpm-macros-5.15.8-2.fc38.noarch libstdc++-13.0.1-0.8.fc38.x86_64 libtasn1-4.19.0-2.fc38.x86_64 perl-srpm-macros-1-48.fc38.noarch rpm-build-libs-4.18.1-1.fc38.x86_64 libgcc-13.0.1-0.8.fc38.x86_64 elfutils-libelf-0.189-1.fc38.x86_64 libnghttp2-1.52.0-1.fc38.x86_64 mpfr-4.1.1-3.fc38.x86_64 patch-2.7.6-19.fc38.x86_64 which-2.21-39.fc38.x86_64 rpmautospec-rpm-macros-0.3.5-1.fc38.noarch openblas-srpm-macros-2-13.fc38.noarch krb5-libs-1.20.1-8.fc38.x86_64 pcre2-syntax-10.42-1.fc38.1.noarch ansible-srpm-macros-1-9.1.fc38.noarch libattr-2.5.1-6.fc38.x86_64 gawk-5.1.1-5.fc38.x86_64 p11-kit-trust-0.24.1-6.fc38.x86_64 libmount-2.38.1-4.fc38.x86_64 util-linux-core-2.38.1-4.fc38.x86_64 curl-7.87.0-6.fc38.x86_64 libpwquality-1.4.5-3.fc38.x86_64 jansson-2.13.1-6.fc38.x86_64 glibc-common-2.37-1.fc38.x86_64 libpsl-0.21.2-2.fc38.x86_64 util-linux-2.38.1-4.fc38.x86_64 tzdata-2022g-2.fc38.noarch p11-kit-0.24.1-6.fc38.x86_64 efi-srpm-macros-5-7.fc38.noarch libfdisk-2.38.1-4.fc38.x86_64 coreutils-common-9.1-11.fc38.x86_64 libsemanage-3.5-2.fc38.x86_64 coreutils-9.1-11.fc38.x86_64 fedora-release-identity-basic-38-0.30.noarch glibc-minimal-langpack-2.37-1.fc38.x86_64 authselect-1.4.2-2.fc38.x86_64 file-libs-5.44-3.fc38.x86_64 bash-5.2.15-3.fc38.x86_64 libcom_err-1.46.5-4.fc38.x86_64 zip-3.0-36.fc38.x86_64 setup-2.14.3-2.fc38.noarch lua-libs-5.4.4-9.fc38.x86_64 basesystem-11-15.fc38.noarch lz4-libs-1.9.4-2.fc38.x86_64 libzstd-1.5.4-1.fc38.x86_64 cpio-2.13-14.fc38.x86_64 fpc-srpm-macros-1.3-7.fc38.noarch libutempter-1.2.1-8.fc38.x86_64 elfutils-libs-0.189-1.fc38.x86_64 fedora-release-38-0.30.noarch Start: buildsrpm Start: rpmbuild -bs Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1679961600 Wrote: /builddir/build/SRPMS/python-kcapi-1.1.2-1.fc38.src.rpm Finish: rpmbuild -bs cp: ‘var/lib/mock/fedora-38-x86_64-1680034723.105560/root/var/log’: No such file or directory INFO: chroot_scan: 3 files copied to /var/lib/copr-rpmbuild/results/chroot_scan INFO: /var/lib/mock/fedora-38-x86_64-1680034723.105560/root/var/log/dnf.rpm.log /var/lib/mock/fedora-38-x86_64-1680034723.105560/root/var/log/dnf.librepo.log /var/lib/mock/fedora-38-x86_64-1680034723.105560/root/var/log/dnf.log Finish: buildsrpm INFO: Done(/var/lib/copr-rpmbuild/workspace/workdir-btjrufgw/python-kcapi/python-kcapi.spec) Config(child) 0 minutes 56 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 (timeout=18000): unbuffer mock --rebuild /var/lib/copr-rpmbuild/results/python-kcapi-1.1.2-1.fc38.src.rpm --resultdir /var/lib/copr-rpmbuild/results --uniqueext 1680034723.105560 -r /var/lib/copr-rpmbuild/results/configs/child.cfg INFO: mock.py version 3.5 starting (python version = 3.11.0, NVR = mock-3.5-1.fc37)... 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/results/python-kcapi-1.1.2-1.fc38.src.rpm) Config(fedora-38-x86_64) Start: clean chroot Finish: clean chroot Start(bootstrap): chroot init INFO: mounting tmpfs at /var/lib/mock/fedora-38-x86_64-bootstrap-1680034723.105560/root. INFO: reusing tmpfs at /var/lib/mock/fedora-38-x86_64-bootstrap-1680034723.105560/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: enabled HW Info plugin Mock Version: 3.5 INFO: Mock Version: 3.5 Finish(bootstrap): chroot init Start: chroot init INFO: mounting tmpfs at /var/lib/mock/fedora-38-x86_64-1680034723.105560/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 Mock Version: 3.5 INFO: Mock Version: 3.5 Start: dnf update No matches found for the following disable plugin patterns: local, spacewalk, versionlock Copr repository 13 kB/s | 3.0 kB 00:00 fedora 67 kB/s | 18 kB 00:00 updates 103 kB/s | 25 kB 00:00 Dependencies resolved. Nothing to do. Complete! Finish: dnf update Finish: chroot init Start: build phase for python-kcapi-1.1.2-1.fc38.src.rpm Start: build setup for python-kcapi-1.1.2-1.fc38.src.rpm Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1679961600 Wrote: /builddir/build/SRPMS/python-kcapi-1.1.2-1.fc38.src.rpm No matches found for the following disable plugin patterns: local, spacewalk, versionlock Copr repository 13 kB/s | 3.0 kB 00:00 fedora 66 kB/s | 18 kB 00:00 updates 77 kB/s | 25 kB 00:00 Dependencies resolved. ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: python3-devel x86_64 3.11.2-1.fc38 fedora 269 k Installing dependencies: expat x86_64 2.5.0-2.fc38 fedora 110 k libb2 x86_64 0.98.1-8.fc38 fedora 25 k mpdecimal x86_64 2.5.1-6.fc38 fedora 89 k pyproject-rpm-macros noarch 1.6.3-1.fc38 fedora 41 k python-pip-wheel noarch 22.3.1-2.fc38 fedora 1.4 M python-rpm-macros noarch 3.11-10.fc38 fedora 20 k python-setuptools-wheel noarch 65.5.1-2.fc38 fedora 715 k python3 x86_64 3.11.2-1.fc38 fedora 28 k python3-libs x86_64 3.11.2-1.fc38 fedora 9.6 M python3-packaging noarch 23.0-1.fc38 fedora 106 k python3-rpm-generators noarch 14-2.fc38 fedora 31 k python3-rpm-macros noarch 3.11-10.fc38 fedora 15 k Transaction Summary ================================================================================ Install 13 Packages Total size: 12 M Installed size: 48 M Downloading Packages: [SKIPPED] expat-2.5.0-2.fc38.x86_64.rpm: Already downloaded [SKIPPED] libb2-0.98.1-8.fc38.x86_64.rpm: Already downloaded [SKIPPED] mpdecimal-2.5.1-6.fc38.x86_64.rpm: Already downloaded [SKIPPED] pyproject-rpm-macros-1.6.3-1.fc38.noarch.rpm: Already downloaded [SKIPPED] python-pip-wheel-22.3.1-2.fc38.noarch.rpm: Already downloaded [SKIPPED] python-rpm-macros-3.11-10.fc38.noarch.rpm: Already downloaded [SKIPPED] python-setuptools-wheel-65.5.1-2.fc38.noarch.rpm: Already downloaded [SKIPPED] python3-3.11.2-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] python3-devel-3.11.2-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] python3-libs-3.11.2-1.fc38.x86_64.rpm: Already downloaded [SKIPPED] python3-packaging-23.0-1.fc38.noarch.rpm: Already downloaded [SKIPPED] python3-rpm-generators-14-2.fc38.noarch.rpm: Already downloaded [SKIPPED] python3-rpm-macros-3.11-10.fc38.noarch.rpm: Already downloaded Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : python-rpm-macros-3.11-10.fc38.noarch 1/13 Installing : python3-rpm-macros-3.11-10.fc38.noarch 2/13 Installing : pyproject-rpm-macros-1.6.3-1.fc38.noarch 3/13 Installing : python-setuptools-wheel-65.5.1-2.fc38.noarch 4/13 Installing : python-pip-wheel-22.3.1-2.fc38.noarch 5/13 Installing : mpdecimal-2.5.1-6.fc38.x86_64 6/13 Installing : libb2-0.98.1-8.fc38.x86_64 7/13 Installing : expat-2.5.0-2.fc38.x86_64 8/13 Installing : python3-3.11.2-1.fc38.x86_64 9/13 Installing : python3-libs-3.11.2-1.fc38.x86_64 10/13 Installing : python3-packaging-23.0-1.fc38.noarch 11/13 Installing : python3-rpm-generators-14-2.fc38.noarch 12/13 Installing : python3-devel-3.11.2-1.fc38.x86_64 13/13 Running scriptlet: python3-devel-3.11.2-1.fc38.x86_64 13/13 Verifying : expat-2.5.0-2.fc38.x86_64 1/13 Verifying : libb2-0.98.1-8.fc38.x86_64 2/13 Verifying : mpdecimal-2.5.1-6.fc38.x86_64 3/13 Verifying : pyproject-rpm-macros-1.6.3-1.fc38.noarch 4/13 Verifying : python-pip-wheel-22.3.1-2.fc38.noarch 5/13 Verifying : python-rpm-macros-3.11-10.fc38.noarch 6/13 Verifying : python-setuptools-wheel-65.5.1-2.fc38.noarch 7/13 Verifying : python3-3.11.2-1.fc38.x86_64 8/13 Verifying : python3-devel-3.11.2-1.fc38.x86_64 9/13 Verifying : python3-libs-3.11.2-1.fc38.x86_64 10/13 Verifying : python3-packaging-23.0-1.fc38.noarch 11/13 Verifying : python3-rpm-generators-14-2.fc38.noarch 12/13 Verifying : python3-rpm-macros-3.11-10.fc38.noarch 13/13 Installed: expat-2.5.0-2.fc38.x86_64 libb2-0.98.1-8.fc38.x86_64 mpdecimal-2.5.1-6.fc38.x86_64 pyproject-rpm-macros-1.6.3-1.fc38.noarch python-pip-wheel-22.3.1-2.fc38.noarch python-rpm-macros-3.11-10.fc38.noarch python-setuptools-wheel-65.5.1-2.fc38.noarch python3-3.11.2-1.fc38.x86_64 python3-devel-3.11.2-1.fc38.x86_64 python3-libs-3.11.2-1.fc38.x86_64 python3-packaging-23.0-1.fc38.noarch python3-rpm-generators-14-2.fc38.noarch python3-rpm-macros-3.11-10.fc38.noarch Complete! Finish: build setup for python-kcapi-1.1.2-1.fc38.src.rpm Start: rpmbuild python-kcapi-1.1.2-1.fc38.src.rpm Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1679961600 Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.QCc1WT + umask 022 + cd /builddir/build/BUILD + cd /builddir/build/BUILD + rm -rf kcapi-1.1.2 + /usr/lib/rpm/rpmuncompress -x /builddir/build/SOURCES/kcapi-1.1.2.tar.gz + STATUS=0 + '[' 0 -ne 0 ']' + cd kcapi-1.1.2 + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + RPM_EC=0 ++ jobs -p + exit 0 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.TaSbwZ + umask 022 + cd /builddir/build/BUILD + cd kcapi-1.1.2 + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + export CFLAGS + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + export CXXFLAGS + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FFLAGS + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + export LDFLAGS + LT_SYS_LIBRARY_PATH=/usr/lib64: + export LT_SYS_LIBRARY_PATH + CC=gcc + export CC + CXX=g++ + export CXX + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(pip) >= 19' + echo 'python3dist(packaging)' + '[' -f pyproject.toml ']' + echo '(python3dist(toml) if python3-devel < 3.11)' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/kcapi-1.1.2/.pyproject-builddir + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + TMPDIR=/builddir/build/BUILD/kcapi-1.1.2/.pyproject-builddir + RPM_TOXENV=py311 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/kcapi-1.1.2/pyproject-wheeldir Handling setuptools>=61.0 from build-system.requires Requirement not satisfied: setuptools>=61.0 Exiting dependency generation pass: build backend + rm -rfv '*.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/python-kcapi-1.1.2-1.fc38.buildreqs.nosrc.rpm INFO: Going to install missing dynamic buildrequires No matches found for the following disable plugin patterns: local, spacewalk, versionlock Copr repository 13 kB/s | 3.0 kB 00:00 fedora 63 kB/s | 18 kB 00:00 updates 75 kB/s | 25 kB 00:00 Package pyproject-rpm-macros-1.6.3-1.fc38.noarch is already installed. Package python3-devel-3.11.2-1.fc38.x86_64 is already installed. Package python3-devel-3.11.2-1.fc38.x86_64 is already installed. Package python3-packaging-23.0-1.fc38.noarch is already installed. Dependencies resolved. ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: python3-pip noarch 22.3.1-2.fc38 fedora 3.1 M python3-setuptools noarch 67.6.1-1.fc38 copr_base 1.3 M Transaction Summary ================================================================================ Install 2 Packages Total size: 4.4 M Total download size: 1.3 M Installed size: 22 M Downloading Packages: [SKIPPED] python3-pip-22.3.1-2.fc38.noarch.rpm: Already downloaded (2/2): python3-setuptools-67.6.1-1.fc38.noarch. 5.6 MB/s | 1.3 MB 00:00 -------------------------------------------------------------------------------- Total 5.5 MB/s | 1.3 MB 00:00 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : python3-setuptools-67.6.1-1.fc38.noarch 1/2 Installing : python3-pip-22.3.1-2.fc38.noarch 2/2 Running scriptlet: python3-pip-22.3.1-2.fc38.noarch 2/2 Verifying : python3-setuptools-67.6.1-1.fc38.noarch 1/2 Verifying : python3-pip-22.3.1-2.fc38.noarch 2/2 Installed: python3-pip-22.3.1-2.fc38.noarch python3-setuptools-67.6.1-1.fc38.noarch Complete! Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1679961600 Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.AonzuS + umask 022 + cd /builddir/build/BUILD + cd /builddir/build/BUILD + rm -rf kcapi-1.1.2 + /usr/lib/rpm/rpmuncompress -x /builddir/build/SOURCES/kcapi-1.1.2.tar.gz + STATUS=0 + '[' 0 -ne 0 ']' + cd kcapi-1.1.2 + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + RPM_EC=0 ++ jobs -p + exit 0 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.fyDWek + umask 022 + cd /builddir/build/BUILD + cd kcapi-1.1.2 + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + export CFLAGS + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + export CXXFLAGS + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FFLAGS + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + export LDFLAGS + LT_SYS_LIBRARY_PATH=/usr/lib64: + export LT_SYS_LIBRARY_PATH + CC=gcc + export CC + CXX=g++ + export CXX + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(pip) >= 19' + echo 'python3dist(packaging)' + '[' -f pyproject.toml ']' + echo '(python3dist(toml) if python3-devel < 3.11)' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/kcapi-1.1.2/.pyproject-builddir + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + TMPDIR=/builddir/build/BUILD/kcapi-1.1.2/.pyproject-builddir + RPM_TOXENV=py311 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/kcapi-1.1.2/pyproject-wheeldir Handling setuptools>=61.0 from build-system.requires Requirement satisfied: setuptools>=61.0 (installed: setuptools 67.6.1) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'readme' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `readme = '# Keycloak API\n\nPython module to automate Keycloak or Red Hat Single Sign-On (RHSSO) configuration.\n\n## How To Install\n\n```sh\npip install kcapi\n```\n\n\n## Testing\n\nTo run the test you would need a Keycloak instance, you can run one locally or in the [cloud]( https://developers.redhat.com/developer-sandbox/get-started) then you just have to follow this steps: \n\n```shell script\npython3.10 -m venv .venv\nsource .venv/bin/activate\npip install requests\n\n# Setup SSO server - go to https://developers.redhat.com/developer-sandbox/get-started,\n# launch sandbox environment, +Add, select some "Red Hat Single Sign-On..." template.\nexport KC_USER=admin\nexport KC_PASSWORD=admin_password\nexport KC_REALM=myrealm # do not use master realm, it cannot be removed\nexport KC_ENDPOINT=https://my-first-sso-me-me-dev.apps.sandbox.x8i5.p1.openshiftapps.com\n\npython -m unittest\n```\n\n\n## API\n\n### OpenID\n\nThis class takes care of OpenID login using [password owner credentials](https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.3) flow.\n\n\n#### Constructor\n\n```python\nfrom rhsso import OpenID\n\noid_client = OpenID({\n "client_id": "admin-cli",\n "username": USER,\n "password": PASSWORD,\n "grant_type":"password",\n "realm" : "master"\n }, endpoint)\n```\n\n- **client_id**: Client Identifier in Keycloak.\n- **username**: Login username for the Realm.\n- **password**: Login password for the Realm.\n- **grant_type**: The grant type you want to use (usually ``password``).\n- **endpoint**: A Keycloak or RHSSO URL endpoint, something like: ``https://my_keycloak.com``. \n\n\n#### Methods\n\n##### getToken\n\nThis will initiate a session with the Keycloak server and will return a OpenID token back.\n\n```python\noid_client.getToken() #glTeDLlmmpLYoAAUMcFQqNOMjw5dA\n```\n\n##### createAdminClient\n\nThis static method should be used in order to access the master Realm in Keycloak.\n\n```python\n oidc = OpenID.createAdminClient(self.USER, self.PASSWORD)\n oidc.getToken() #glTeDLlmmpLYoAAUMcFQqNOMjw5dA\n```\n### Keycloak\n\nThis class builds all the Keycloak configuration REST resources by using REST conventions we can target the majority of Keycloak services.\n\n#### Constructor\n\n```Python\nkc = Keycloak(token, self.ENDPOINT)\n```\n\nThe constructor takes two parameters:\n\n- **token**: A token with enough priviledge to perform the desired operation.\n- **endpoint**: A Keycloak or RHSSO URL endpoint, something like: ``https://my_keycloak.com``. \n\n\n#### Methods\n\n#### build\nThis methods build a REST client (capabilities detailed below) targeting a specific Keycloak REST resource.\n\n```python\ngroups = kc.build(\'groups\', \'my_realm\')\n\n# Create a group called DC\nstate = groups.create({"name": "DC"}).isOk()\n\n```\n> In this example we build the \'groups\' API for ``my_realm`` Realm.\n\n##### Supported Resources\n\nHere is a quick list of supported resources:\n\n- **users**: [users API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_user).\n- **clients**: [client API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_client). \n- **groups**: [groups API](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/groups).\n- **roles**: [roles API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_role_for_the_realm_or_client_2)\n- **identity-provider**: [identity provider API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_get_identity_providers)\n\n\n> As long as you find a REST endpoint that follow the standard you can use this method to build a client around it, an example of this is the non well documented ``components`` endpoint.\n\n- **components**: This API allows you configure things like [user federation](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/user-storage-federation) or [Realm keys](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.2/html/server_administration_guide/admin_permissions#realm_keys).\n\n- **authentication**: Provide access to built-in and/or custom authentication flows.\n
\n\n#### admin\nSimilar to the ``build`` method but the client points to the ``master`` realm, allowing us operation such as realm creation.\n\n```python\n main_realm = kc.admin()\n\n # Creates a realm called my_realm\n main_realm.create({"enabled": "true", "id": my_realm, "realm": my_realm})\n```\n\n\n### REST API\n\nWhen you use the ``build`` or ``admin`` methods you will get back a **REST** class pointing to the Keycloak resource, keep in mind that this class don\'t check that the resource is valid, this is done to keep it flexible and to make it easy to adapt to new Keycloak REST API changes in the future. \n\n#### Usage\n\nIn order to create one you need to ``build`` method we have used before:\n\n```python\nbatman = {\n "enabled":\'true\',\n "attributes":{},\n "username":"batman",\n "firstName":"Bruce",\n "lastName":"Wayne",\n "emailVerified":""\n}\n\nusers = kc.build(\'users\', \'DC\')\n\n# Create a user called batman in DC\nstate = users.create(batman).isOk()\n```\n\n#### Methods\n\nFollowing the example above lets see the methods we have starting with the usual CRUD methods:\n\n#### create\n\nThis method ``POST`` a dictionary into any given resource:\n\n```python\nbatman = {\n "enabled":\'true\',\n "attributes":{},\n "username":"batman",\n "firstName":"Bruce",\n "lastName":"Wayne",\n "emailVerified":""\n}\n\nstate = users.create(batman).isOk()\n```\n\n- **dictionary**: Dictionary with the fields we want to POST to the server.\n\n\n\n\n#### update\n\nThis method performs a ``PUT`` on the resource.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nstate = users.update(id, batman_update).isOk()\n```\n- **id**: Id of the resource in Keycloak.\n- **dictionary**: Dictionary representing the updated fields. \n\n#### remove\nThis method sends a ``DELETE`` to the pointed resource.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nstate = users.remove(id).isOk()\n```\n- **id**: Id of the resource in Keycloak.\n- **dictionary**: Dictionary representing the updated fields. \n\n\n#### get\nSend a ``GET`` request to retrieve a specific Keycloak resource.\n\n```python\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nuser = users.get(id).response()\n```\n\n#### all\n\nReturn all objects of a particular resource type.\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\n# Create a user called batman in DC\nuser_list = users.all() #\xa0[ {id:\'xxx-yyy\', username: \'batman\', ...} ] \n```\n#### findFirst\nFinds a resource by passing an arbitrary key/value pair.\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\nusers.findFirst({"key":"username", "value": \'batman\'})\n```\n\n#### exist\nCheck if a resource matching the provided ``id`` exists:\n```Python\nusers = kc.build(\'users\', \'DC\')\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nusers.exists(id) #True\n```\n\n#### existByKV\nCheck if a resource matching the provided key/value pair, exists.\n\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\nusers.existByKV("username", \'batman\') #False\n```\n\n\n### ResponseHandler\n\nEach **CRUD** method returns a ``ResponseHandler`` class with the following methods.\n\n#### Methods\n\n\n#### response\nreturns the requests [response object](https://docs.python-requests.org/en/latest/api/#requests.Response).\n\n```Python\nusers.update(id, batman_update).response().status_code #HTTP 201\n```\n\n\n#### isOk\n\nReturn ``True`` if the request complete successfully otherwise it will raise an exception.\n\n```Python\nstate = users.update(id, batman_update).isOk() # Return True here.\n```\n\n#### verify\n\nDoes the same as ``isOk`` but it allow you to chain more methods.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\ncookies = users.update(id, batman_update).verify().response().cookies # Get cookies.\n```\n\n\n## Specialisations\n\n### Realms \n\n### KeycloakCaches \n\nThis class handles the Keycloak caches. \n\n#### Instantiation \n\n```python\n# Creates a REST API instance target the Realms API. \nrealms = kc.build(\'realms\', \'my_realm\') \n\n# Gets the cache Realms cache API. \ncaches = realms.caches(self.REALM)\n```\n\n#### clearUserCache \nThis method tells Keycloak to clear the user cache.\n\n```python\ncaches.clearUserCache()\n```\n\n\n#### clearRealmCache \nThis method tells Keycloak to clear the realm cache.\n\n```python\ncaches.clearRealmCache()\n```\n\n\n#### clearKeyCache \nThis method tells Keycloak to clear the external public key cache for clients and identity providers.\n\n```python\ncaches.clearKeyCache()\n```\n\n> For more information on how this caches works follow this [link](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_installation_and_configuration_guide/server_cache_configuration).\n\n\n### Users\n\n#### updateCredentials\n\nUpdate user credentials.\n\n```js\nuser_credentials = {\n \'temporary\': False,\n \'value\':\'12345\'\n}\n\nstate = users.updateCredentials(user_info, user_credentials).isOk() # Updated user password.\n```\nWhere:\n- **temporary**: Boolean where if ``True`` provide a temporary password just for the first login. \n- **value**: String with the password.\n\n\n#### joinGroup\n\nAdd a user into a existing [group](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/groups).\n\nFirst we need a group:\n```python\ndef createDCGroup():\n group = kc.build(\'groups\', \'heroes\')\n return group.create({"name": "DC"}).isOk()\n```\n\nThen we can join the group the following way:\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "username", "value": "batman"}\n group = {"key": "name", "value": "DC"}\n\n users.joinGroup(user, group).isOk()\n```\n\n> The API works by matching the first occurrence between the provided ``key/value`` for the two resources (User and Group), this can help in various situation for example if we want to target the user by ``uuid``.\n\n\nUsing ``uuid`` as user identifier.\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "uuid", "value": "23e4567-e89b-..."}\n group = {"key": "name", "value": "DC"}\n\n users.joinGroup(user, group).isOk()\n```\n\nOr we want to use the group ``id``:\n\n```python\n user = {"key": "uuid", "value": "23e4567-e89b-..."}\n group = {"key": "id", "value": "f8d91722-a1f0-45e..."}\n\n users.joinGroup(user, group).isOk()\n```\n> If the field criteria don\'t return a unique value, the first entry in the list will be used.\n#### leaveGroup\n\nRemove a user from a group.\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "username", "value": "batman"}\n group = {"key": "uuid", "value": "123e4567-e89b-..."}\n\n users.leaveGroup(user, group).isOk()\n\n user = {"key": "uuid", "value": "12d3-a456-4"}\n group = {"key": "id", "value": "123e4567-e89b-..."}\n\n users.leaveGroup(user, group).isOk()\n\n```\n\n> The same rules for ``key/value`` discussed above also applies here.\n\n\n### Groups\n\nTo manage the relationship between realm level [roles](keycloak.org/docs/latest/server_admin/#assigning-permissions-and-access-using-roles-and-groups) and groups, we can use the **RealmsRolesMapping**.\n\nTo get an instance of this class you need to instantiate the ``group`` resource class:\n\n```Python\ngroups = kc.build(\'groups\', \'heroes\')\n```\n\nAnd use the method ``realmRoles`` passing a valid [group dictionary](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_grouprepresentation):\n\n```python\nrealmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\n```\n\nThen we get a class with following methods:\n\n#### add\n\nAdd a list of existing roles to a group.\n\n```python\ndef makeRoles(self):\n roles = kc.build(\'roles\', self.realm)\n lvl1 = roles.create({"name": "level-1"}).isOk()\n lvl2 = roles.create({"name": "level-2"}).isOk()\n return lvl1 and lvl2\n\n\nif makeRoles():\n realmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\n realmsRoles.add(["level-1", "level-2"])\n```\n\n#### remove\nRemove a list of associated roles from a group.\n\n```python\nrealmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\nrealmsRoles.remove(["level-1", "level-2"])\n```\n\n\n## Roles \n\n\n#### composite\nIn Keycloak we can map roles to other roles, this method allow you to do just that. \n\n```python\nrole_watch = self.kc.build(\'roles\', \'my-realm\').find(\'watch\')\nadded = role_watch.add_composite(\'view\')\n```'` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'readme' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'readme' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'license' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `license = 'MIT'` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'license' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'license' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'dependencies' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `dependencies = ['requests']` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'dependencies' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'dependencies' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) HOOK STDOUT: running egg_info HOOK STDOUT: writing kcapi.egg-info/PKG-INFO HOOK STDOUT: writing dependency_links to kcapi.egg-info/dependency_links.txt HOOK STDOUT: writing requirements to kcapi.egg-info/requires.txt HOOK STDOUT: writing top-level names to kcapi.egg-info/top_level.txt HOOK STDOUT: reading manifest file 'kcapi.egg-info/SOURCES.txt' HOOK STDOUT: adding license file 'LICENSE' HOOK STDOUT: writing manifest file 'kcapi.egg-info/SOURCES.txt' Handling wheel from get_requires_for_build_wheel Requirement not satisfied: wheel Exiting dependency generation pass: get_requires_for_build_wheel + rm -rfv '*.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/python-kcapi-1.1.2-1.fc38.buildreqs.nosrc.rpm INFO: Going to install missing dynamic buildrequires No matches found for the following disable plugin patterns: local, spacewalk, versionlock Copr repository 13 kB/s | 3.0 kB 00:00 fedora 44 kB/s | 18 kB 00:00 updates 99 kB/s | 25 kB 00:00 Package pyproject-rpm-macros-1.6.3-1.fc38.noarch is already installed. Package python3-devel-3.11.2-1.fc38.x86_64 is already installed. Package python3-devel-3.11.2-1.fc38.x86_64 is already installed. Package python3-packaging-23.0-1.fc38.noarch is already installed. Package python3-pip-22.3.1-2.fc38.noarch is already installed. Package python3-setuptools-67.6.1-1.fc38.noarch is already installed. Dependencies resolved. ================================================================================ Package Architecture Version Repository Size ================================================================================ Installing: python3-wheel noarch 1:0.38.4-2.fc38 fedora 103 k Transaction Summary ================================================================================ Install 1 Package Total download size: 103 k Installed size: 290 k Downloading Packages: python3-wheel-0.38.4-2.fc38.noarch.rpm 3.4 MB/s | 103 kB 00:00 -------------------------------------------------------------------------------- Total 297 kB/s | 103 kB 00:00 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : python3-wheel-1:0.38.4-2.fc38.noarch 1/1 Running scriptlet: python3-wheel-1:0.38.4-2.fc38.noarch 1/1 Verifying : python3-wheel-1:0.38.4-2.fc38.noarch 1/1 Installed: python3-wheel-1:0.38.4-2.fc38.noarch Complete! Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1679961600 Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.DWU4KD + umask 022 + cd /builddir/build/BUILD + cd /builddir/build/BUILD + rm -rf kcapi-1.1.2 + /usr/lib/rpm/rpmuncompress -x /builddir/build/SOURCES/kcapi-1.1.2.tar.gz + STATUS=0 + '[' 0 -ne 0 ']' + cd kcapi-1.1.2 + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + RPM_EC=0 ++ jobs -p + exit 0 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.aJYQsJ + umask 022 + cd /builddir/build/BUILD + cd kcapi-1.1.2 + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + export CFLAGS + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + export CXXFLAGS + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FFLAGS + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + export LDFLAGS + LT_SYS_LIBRARY_PATH=/usr/lib64: + export LT_SYS_LIBRARY_PATH + CC=gcc + export CC + CXX=g++ + export CXX + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(pip) >= 19' + echo 'python3dist(packaging)' + '[' -f pyproject.toml ']' + echo '(python3dist(toml) if python3-devel < 3.11)' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/kcapi-1.1.2/.pyproject-builddir + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + TMPDIR=/builddir/build/BUILD/kcapi-1.1.2/.pyproject-builddir + RPM_TOXENV=py311 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/kcapi-1.1.2/pyproject-wheeldir Handling setuptools>=61.0 from build-system.requires Requirement satisfied: setuptools>=61.0 (installed: setuptools 67.6.1) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'readme' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `readme = '# Keycloak API\n\nPython module to automate Keycloak or Red Hat Single Sign-On (RHSSO) configuration.\n\n## How To Install\n\n```sh\npip install kcapi\n```\n\n\n## Testing\n\nTo run the test you would need a Keycloak instance, you can run one locally or in the [cloud]( https://developers.redhat.com/developer-sandbox/get-started) then you just have to follow this steps: \n\n```shell script\npython3.10 -m venv .venv\nsource .venv/bin/activate\npip install requests\n\n# Setup SSO server - go to https://developers.redhat.com/developer-sandbox/get-started,\n# launch sandbox environment, +Add, select some "Red Hat Single Sign-On..." template.\nexport KC_USER=admin\nexport KC_PASSWORD=admin_password\nexport KC_REALM=myrealm # do not use master realm, it cannot be removed\nexport KC_ENDPOINT=https://my-first-sso-me-me-dev.apps.sandbox.x8i5.p1.openshiftapps.com\n\npython -m unittest\n```\n\n\n## API\n\n### OpenID\n\nThis class takes care of OpenID login using [password owner credentials](https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.3) flow.\n\n\n#### Constructor\n\n```python\nfrom rhsso import OpenID\n\noid_client = OpenID({\n "client_id": "admin-cli",\n "username": USER,\n "password": PASSWORD,\n "grant_type":"password",\n "realm" : "master"\n }, endpoint)\n```\n\n- **client_id**: Client Identifier in Keycloak.\n- **username**: Login username for the Realm.\n- **password**: Login password for the Realm.\n- **grant_type**: The grant type you want to use (usually ``password``).\n- **endpoint**: A Keycloak or RHSSO URL endpoint, something like: ``https://my_keycloak.com``. \n\n\n#### Methods\n\n##### getToken\n\nThis will initiate a session with the Keycloak server and will return a OpenID token back.\n\n```python\noid_client.getToken() #glTeDLlmmpLYoAAUMcFQqNOMjw5dA\n```\n\n##### createAdminClient\n\nThis static method should be used in order to access the master Realm in Keycloak.\n\n```python\n oidc = OpenID.createAdminClient(self.USER, self.PASSWORD)\n oidc.getToken() #glTeDLlmmpLYoAAUMcFQqNOMjw5dA\n```\n### Keycloak\n\nThis class builds all the Keycloak configuration REST resources by using REST conventions we can target the majority of Keycloak services.\n\n#### Constructor\n\n```Python\nkc = Keycloak(token, self.ENDPOINT)\n```\n\nThe constructor takes two parameters:\n\n- **token**: A token with enough priviledge to perform the desired operation.\n- **endpoint**: A Keycloak or RHSSO URL endpoint, something like: ``https://my_keycloak.com``. \n\n\n#### Methods\n\n#### build\nThis methods build a REST client (capabilities detailed below) targeting a specific Keycloak REST resource.\n\n```python\ngroups = kc.build(\'groups\', \'my_realm\')\n\n# Create a group called DC\nstate = groups.create({"name": "DC"}).isOk()\n\n```\n> In this example we build the \'groups\' API for ``my_realm`` Realm.\n\n##### Supported Resources\n\nHere is a quick list of supported resources:\n\n- **users**: [users API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_user).\n- **clients**: [client API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_client). \n- **groups**: [groups API](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/groups).\n- **roles**: [roles API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_role_for_the_realm_or_client_2)\n- **identity-provider**: [identity provider API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_get_identity_providers)\n\n\n> As long as you find a REST endpoint that follow the standard you can use this method to build a client around it, an example of this is the non well documented ``components`` endpoint.\n\n- **components**: This API allows you configure things like [user federation](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/user-storage-federation) or [Realm keys](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.2/html/server_administration_guide/admin_permissions#realm_keys).\n\n- **authentication**: Provide access to built-in and/or custom authentication flows.\n
\n\n#### admin\nSimilar to the ``build`` method but the client points to the ``master`` realm, allowing us operation such as realm creation.\n\n```python\n main_realm = kc.admin()\n\n # Creates a realm called my_realm\n main_realm.create({"enabled": "true", "id": my_realm, "realm": my_realm})\n```\n\n\n### REST API\n\nWhen you use the ``build`` or ``admin`` methods you will get back a **REST** class pointing to the Keycloak resource, keep in mind that this class don\'t check that the resource is valid, this is done to keep it flexible and to make it easy to adapt to new Keycloak REST API changes in the future. \n\n#### Usage\n\nIn order to create one you need to ``build`` method we have used before:\n\n```python\nbatman = {\n "enabled":\'true\',\n "attributes":{},\n "username":"batman",\n "firstName":"Bruce",\n "lastName":"Wayne",\n "emailVerified":""\n}\n\nusers = kc.build(\'users\', \'DC\')\n\n# Create a user called batman in DC\nstate = users.create(batman).isOk()\n```\n\n#### Methods\n\nFollowing the example above lets see the methods we have starting with the usual CRUD methods:\n\n#### create\n\nThis method ``POST`` a dictionary into any given resource:\n\n```python\nbatman = {\n "enabled":\'true\',\n "attributes":{},\n "username":"batman",\n "firstName":"Bruce",\n "lastName":"Wayne",\n "emailVerified":""\n}\n\nstate = users.create(batman).isOk()\n```\n\n- **dictionary**: Dictionary with the fields we want to POST to the server.\n\n\n\n\n#### update\n\nThis method performs a ``PUT`` on the resource.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nstate = users.update(id, batman_update).isOk()\n```\n- **id**: Id of the resource in Keycloak.\n- **dictionary**: Dictionary representing the updated fields. \n\n#### remove\nThis method sends a ``DELETE`` to the pointed resource.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nstate = users.remove(id).isOk()\n```\n- **id**: Id of the resource in Keycloak.\n- **dictionary**: Dictionary representing the updated fields. \n\n\n#### get\nSend a ``GET`` request to retrieve a specific Keycloak resource.\n\n```python\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nuser = users.get(id).response()\n```\n\n#### all\n\nReturn all objects of a particular resource type.\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\n# Create a user called batman in DC\nuser_list = users.all() #\xa0[ {id:\'xxx-yyy\', username: \'batman\', ...} ] \n```\n#### findFirst\nFinds a resource by passing an arbitrary key/value pair.\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\nusers.findFirst({"key":"username", "value": \'batman\'})\n```\n\n#### exist\nCheck if a resource matching the provided ``id`` exists:\n```Python\nusers = kc.build(\'users\', \'DC\')\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nusers.exists(id) #True\n```\n\n#### existByKV\nCheck if a resource matching the provided key/value pair, exists.\n\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\nusers.existByKV("username", \'batman\') #False\n```\n\n\n### ResponseHandler\n\nEach **CRUD** method returns a ``ResponseHandler`` class with the following methods.\n\n#### Methods\n\n\n#### response\nreturns the requests [response object](https://docs.python-requests.org/en/latest/api/#requests.Response).\n\n```Python\nusers.update(id, batman_update).response().status_code #HTTP 201\n```\n\n\n#### isOk\n\nReturn ``True`` if the request complete successfully otherwise it will raise an exception.\n\n```Python\nstate = users.update(id, batman_update).isOk() # Return True here.\n```\n\n#### verify\n\nDoes the same as ``isOk`` but it allow you to chain more methods.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\ncookies = users.update(id, batman_update).verify().response().cookies # Get cookies.\n```\n\n\n## Specialisations\n\n### Realms \n\n### KeycloakCaches \n\nThis class handles the Keycloak caches. \n\n#### Instantiation \n\n```python\n# Creates a REST API instance target the Realms API. \nrealms = kc.build(\'realms\', \'my_realm\') \n\n# Gets the cache Realms cache API. \ncaches = realms.caches(self.REALM)\n```\n\n#### clearUserCache \nThis method tells Keycloak to clear the user cache.\n\n```python\ncaches.clearUserCache()\n```\n\n\n#### clearRealmCache \nThis method tells Keycloak to clear the realm cache.\n\n```python\ncaches.clearRealmCache()\n```\n\n\n#### clearKeyCache \nThis method tells Keycloak to clear the external public key cache for clients and identity providers.\n\n```python\ncaches.clearKeyCache()\n```\n\n> For more information on how this caches works follow this [link](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_installation_and_configuration_guide/server_cache_configuration).\n\n\n### Users\n\n#### updateCredentials\n\nUpdate user credentials.\n\n```js\nuser_credentials = {\n \'temporary\': False,\n \'value\':\'12345\'\n}\n\nstate = users.updateCredentials(user_info, user_credentials).isOk() # Updated user password.\n```\nWhere:\n- **temporary**: Boolean where if ``True`` provide a temporary password just for the first login. \n- **value**: String with the password.\n\n\n#### joinGroup\n\nAdd a user into a existing [group](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/groups).\n\nFirst we need a group:\n```python\ndef createDCGroup():\n group = kc.build(\'groups\', \'heroes\')\n return group.create({"name": "DC"}).isOk()\n```\n\nThen we can join the group the following way:\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "username", "value": "batman"}\n group = {"key": "name", "value": "DC"}\n\n users.joinGroup(user, group).isOk()\n```\n\n> The API works by matching the first occurrence between the provided ``key/value`` for the two resources (User and Group), this can help in various situation for example if we want to target the user by ``uuid``.\n\n\nUsing ``uuid`` as user identifier.\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "uuid", "value": "23e4567-e89b-..."}\n group = {"key": "name", "value": "DC"}\n\n users.joinGroup(user, group).isOk()\n```\n\nOr we want to use the group ``id``:\n\n```python\n user = {"key": "uuid", "value": "23e4567-e89b-..."}\n group = {"key": "id", "value": "f8d91722-a1f0-45e..."}\n\n users.joinGroup(user, group).isOk()\n```\n> If the field criteria don\'t return a unique value, the first entry in the list will be used.\n#### leaveGroup\n\nRemove a user from a group.\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "username", "value": "batman"}\n group = {"key": "uuid", "value": "123e4567-e89b-..."}\n\n users.leaveGroup(user, group).isOk()\n\n user = {"key": "uuid", "value": "12d3-a456-4"}\n group = {"key": "id", "value": "123e4567-e89b-..."}\n\n users.leaveGroup(user, group).isOk()\n\n```\n\n> The same rules for ``key/value`` discussed above also applies here.\n\n\n### Groups\n\nTo manage the relationship between realm level [roles](keycloak.org/docs/latest/server_admin/#assigning-permissions-and-access-using-roles-and-groups) and groups, we can use the **RealmsRolesMapping**.\n\nTo get an instance of this class you need to instantiate the ``group`` resource class:\n\n```Python\ngroups = kc.build(\'groups\', \'heroes\')\n```\n\nAnd use the method ``realmRoles`` passing a valid [group dictionary](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_grouprepresentation):\n\n```python\nrealmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\n```\n\nThen we get a class with following methods:\n\n#### add\n\nAdd a list of existing roles to a group.\n\n```python\ndef makeRoles(self):\n roles = kc.build(\'roles\', self.realm)\n lvl1 = roles.create({"name": "level-1"}).isOk()\n lvl2 = roles.create({"name": "level-2"}).isOk()\n return lvl1 and lvl2\n\n\nif makeRoles():\n realmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\n realmsRoles.add(["level-1", "level-2"])\n```\n\n#### remove\nRemove a list of associated roles from a group.\n\n```python\nrealmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\nrealmsRoles.remove(["level-1", "level-2"])\n```\n\n\n## Roles \n\n\n#### composite\nIn Keycloak we can map roles to other roles, this method allow you to do just that. \n\n```python\nrole_watch = self.kc.build(\'roles\', \'my-realm\').find(\'watch\')\nadded = role_watch.add_composite(\'view\')\n```'` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'readme' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'readme' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'license' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `license = 'MIT'` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'license' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'license' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'dependencies' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `dependencies = ['requests']` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'dependencies' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'dependencies' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) HOOK STDOUT: running egg_info HOOK STDOUT: writing kcapi.egg-info/PKG-INFO HOOK STDOUT: writing dependency_links to kcapi.egg-info/dependency_links.txt HOOK STDOUT: writing requirements to kcapi.egg-info/requires.txt HOOK STDOUT: writing top-level names to kcapi.egg-info/top_level.txt HOOK STDOUT: reading manifest file 'kcapi.egg-info/SOURCES.txt' HOOK STDOUT: adding license file 'LICENSE' HOOK STDOUT: writing manifest file 'kcapi.egg-info/SOURCES.txt' Handling wheel from get_requires_for_build_wheel Requirement satisfied: wheel (installed: wheel 0.38.4) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'readme' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `readme = '# Keycloak API\n\nPython module to automate Keycloak or Red Hat Single Sign-On (RHSSO) configuration.\n\n## How To Install\n\n```sh\npip install kcapi\n```\n\n\n## Testing\n\nTo run the test you would need a Keycloak instance, you can run one locally or in the [cloud]( https://developers.redhat.com/developer-sandbox/get-started) then you just have to follow this steps: \n\n```shell script\npython3.10 -m venv .venv\nsource .venv/bin/activate\npip install requests\n\n# Setup SSO server - go to https://developers.redhat.com/developer-sandbox/get-started,\n# launch sandbox environment, +Add, select some "Red Hat Single Sign-On..." template.\nexport KC_USER=admin\nexport KC_PASSWORD=admin_password\nexport KC_REALM=myrealm # do not use master realm, it cannot be removed\nexport KC_ENDPOINT=https://my-first-sso-me-me-dev.apps.sandbox.x8i5.p1.openshiftapps.com\n\npython -m unittest\n```\n\n\n## API\n\n### OpenID\n\nThis class takes care of OpenID login using [password owner credentials](https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.3) flow.\n\n\n#### Constructor\n\n```python\nfrom rhsso import OpenID\n\noid_client = OpenID({\n "client_id": "admin-cli",\n "username": USER,\n "password": PASSWORD,\n "grant_type":"password",\n "realm" : "master"\n }, endpoint)\n```\n\n- **client_id**: Client Identifier in Keycloak.\n- **username**: Login username for the Realm.\n- **password**: Login password for the Realm.\n- **grant_type**: The grant type you want to use (usually ``password``).\n- **endpoint**: A Keycloak or RHSSO URL endpoint, something like: ``https://my_keycloak.com``. \n\n\n#### Methods\n\n##### getToken\n\nThis will initiate a session with the Keycloak server and will return a OpenID token back.\n\n```python\noid_client.getToken() #glTeDLlmmpLYoAAUMcFQqNOMjw5dA\n```\n\n##### createAdminClient\n\nThis static method should be used in order to access the master Realm in Keycloak.\n\n```python\n oidc = OpenID.createAdminClient(self.USER, self.PASSWORD)\n oidc.getToken() #glTeDLlmmpLYoAAUMcFQqNOMjw5dA\n```\n### Keycloak\n\nThis class builds all the Keycloak configuration REST resources by using REST conventions we can target the majority of Keycloak services.\n\n#### Constructor\n\n```Python\nkc = Keycloak(token, self.ENDPOINT)\n```\n\nThe constructor takes two parameters:\n\n- **token**: A token with enough priviledge to perform the desired operation.\n- **endpoint**: A Keycloak or RHSSO URL endpoint, something like: ``https://my_keycloak.com``. \n\n\n#### Methods\n\n#### build\nThis methods build a REST client (capabilities detailed below) targeting a specific Keycloak REST resource.\n\n```python\ngroups = kc.build(\'groups\', \'my_realm\')\n\n# Create a group called DC\nstate = groups.create({"name": "DC"}).isOk()\n\n```\n> In this example we build the \'groups\' API for ``my_realm`` Realm.\n\n##### Supported Resources\n\nHere is a quick list of supported resources:\n\n- **users**: [users API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_user).\n- **clients**: [client API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_client). \n- **groups**: [groups API](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/groups).\n- **roles**: [roles API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_role_for_the_realm_or_client_2)\n- **identity-provider**: [identity provider API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_get_identity_providers)\n\n\n> As long as you find a REST endpoint that follow the standard you can use this method to build a client around it, an example of this is the non well documented ``components`` endpoint.\n\n- **components**: This API allows you configure things like [user federation](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/user-storage-federation) or [Realm keys](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.2/html/server_administration_guide/admin_permissions#realm_keys).\n\n- **authentication**: Provide access to built-in and/or custom authentication flows.\n
\n\n#### admin\nSimilar to the ``build`` method but the client points to the ``master`` realm, allowing us operation such as realm creation.\n\n```python\n main_realm = kc.admin()\n\n # Creates a realm called my_realm\n main_realm.create({"enabled": "true", "id": my_realm, "realm": my_realm})\n```\n\n\n### REST API\n\nWhen you use the ``build`` or ``admin`` methods you will get back a **REST** class pointing to the Keycloak resource, keep in mind that this class don\'t check that the resource is valid, this is done to keep it flexible and to make it easy to adapt to new Keycloak REST API changes in the future. \n\n#### Usage\n\nIn order to create one you need to ``build`` method we have used before:\n\n```python\nbatman = {\n "enabled":\'true\',\n "attributes":{},\n "username":"batman",\n "firstName":"Bruce",\n "lastName":"Wayne",\n "emailVerified":""\n}\n\nusers = kc.build(\'users\', \'DC\')\n\n# Create a user called batman in DC\nstate = users.create(batman).isOk()\n```\n\n#### Methods\n\nFollowing the example above lets see the methods we have starting with the usual CRUD methods:\n\n#### create\n\nThis method ``POST`` a dictionary into any given resource:\n\n```python\nbatman = {\n "enabled":\'true\',\n "attributes":{},\n "username":"batman",\n "firstName":"Bruce",\n "lastName":"Wayne",\n "emailVerified":""\n}\n\nstate = users.create(batman).isOk()\n```\n\n- **dictionary**: Dictionary with the fields we want to POST to the server.\n\n\n\n\n#### update\n\nThis method performs a ``PUT`` on the resource.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nstate = users.update(id, batman_update).isOk()\n```\n- **id**: Id of the resource in Keycloak.\n- **dictionary**: Dictionary representing the updated fields. \n\n#### remove\nThis method sends a ``DELETE`` to the pointed resource.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nstate = users.remove(id).isOk()\n```\n- **id**: Id of the resource in Keycloak.\n- **dictionary**: Dictionary representing the updated fields. \n\n\n#### get\nSend a ``GET`` request to retrieve a specific Keycloak resource.\n\n```python\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nuser = users.get(id).response()\n```\n\n#### all\n\nReturn all objects of a particular resource type.\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\n# Create a user called batman in DC\nuser_list = users.all() #\xa0[ {id:\'xxx-yyy\', username: \'batman\', ...} ] \n```\n#### findFirst\nFinds a resource by passing an arbitrary key/value pair.\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\nusers.findFirst({"key":"username", "value": \'batman\'})\n```\n\n#### exist\nCheck if a resource matching the provided ``id`` exists:\n```Python\nusers = kc.build(\'users\', \'DC\')\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nusers.exists(id) #True\n```\n\n#### existByKV\nCheck if a resource matching the provided key/value pair, exists.\n\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\nusers.existByKV("username", \'batman\') #False\n```\n\n\n### ResponseHandler\n\nEach **CRUD** method returns a ``ResponseHandler`` class with the following methods.\n\n#### Methods\n\n\n#### response\nreturns the requests [response object](https://docs.python-requests.org/en/latest/api/#requests.Response).\n\n```Python\nusers.update(id, batman_update).response().status_code #HTTP 201\n```\n\n\n#### isOk\n\nReturn ``True`` if the request complete successfully otherwise it will raise an exception.\n\n```Python\nstate = users.update(id, batman_update).isOk() # Return True here.\n```\n\n#### verify\n\nDoes the same as ``isOk`` but it allow you to chain more methods.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\ncookies = users.update(id, batman_update).verify().response().cookies # Get cookies.\n```\n\n\n## Specialisations\n\n### Realms \n\n### KeycloakCaches \n\nThis class handles the Keycloak caches. \n\n#### Instantiation \n\n```python\n# Creates a REST API instance target the Realms API. \nrealms = kc.build(\'realms\', \'my_realm\') \n\n# Gets the cache Realms cache API. \ncaches = realms.caches(self.REALM)\n```\n\n#### clearUserCache \nThis method tells Keycloak to clear the user cache.\n\n```python\ncaches.clearUserCache()\n```\n\n\n#### clearRealmCache \nThis method tells Keycloak to clear the realm cache.\n\n```python\ncaches.clearRealmCache()\n```\n\n\n#### clearKeyCache \nThis method tells Keycloak to clear the external public key cache for clients and identity providers.\n\n```python\ncaches.clearKeyCache()\n```\n\n> For more information on how this caches works follow this [link](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_installation_and_configuration_guide/server_cache_configuration).\n\n\n### Users\n\n#### updateCredentials\n\nUpdate user credentials.\n\n```js\nuser_credentials = {\n \'temporary\': False,\n \'value\':\'12345\'\n}\n\nstate = users.updateCredentials(user_info, user_credentials).isOk() # Updated user password.\n```\nWhere:\n- **temporary**: Boolean where if ``True`` provide a temporary password just for the first login. \n- **value**: String with the password.\n\n\n#### joinGroup\n\nAdd a user into a existing [group](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/groups).\n\nFirst we need a group:\n```python\ndef createDCGroup():\n group = kc.build(\'groups\', \'heroes\')\n return group.create({"name": "DC"}).isOk()\n```\n\nThen we can join the group the following way:\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "username", "value": "batman"}\n group = {"key": "name", "value": "DC"}\n\n users.joinGroup(user, group).isOk()\n```\n\n> The API works by matching the first occurrence between the provided ``key/value`` for the two resources (User and Group), this can help in various situation for example if we want to target the user by ``uuid``.\n\n\nUsing ``uuid`` as user identifier.\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "uuid", "value": "23e4567-e89b-..."}\n group = {"key": "name", "value": "DC"}\n\n users.joinGroup(user, group).isOk()\n```\n\nOr we want to use the group ``id``:\n\n```python\n user = {"key": "uuid", "value": "23e4567-e89b-..."}\n group = {"key": "id", "value": "f8d91722-a1f0-45e..."}\n\n users.joinGroup(user, group).isOk()\n```\n> If the field criteria don\'t return a unique value, the first entry in the list will be used.\n#### leaveGroup\n\nRemove a user from a group.\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "username", "value": "batman"}\n group = {"key": "uuid", "value": "123e4567-e89b-..."}\n\n users.leaveGroup(user, group).isOk()\n\n user = {"key": "uuid", "value": "12d3-a456-4"}\n group = {"key": "id", "value": "123e4567-e89b-..."}\n\n users.leaveGroup(user, group).isOk()\n\n```\n\n> The same rules for ``key/value`` discussed above also applies here.\n\n\n### Groups\n\nTo manage the relationship between realm level [roles](keycloak.org/docs/latest/server_admin/#assigning-permissions-and-access-using-roles-and-groups) and groups, we can use the **RealmsRolesMapping**.\n\nTo get an instance of this class you need to instantiate the ``group`` resource class:\n\n```Python\ngroups = kc.build(\'groups\', \'heroes\')\n```\n\nAnd use the method ``realmRoles`` passing a valid [group dictionary](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_grouprepresentation):\n\n```python\nrealmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\n```\n\nThen we get a class with following methods:\n\n#### add\n\nAdd a list of existing roles to a group.\n\n```python\ndef makeRoles(self):\n roles = kc.build(\'roles\', self.realm)\n lvl1 = roles.create({"name": "level-1"}).isOk()\n lvl2 = roles.create({"name": "level-2"}).isOk()\n return lvl1 and lvl2\n\n\nif makeRoles():\n realmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\n realmsRoles.add(["level-1", "level-2"])\n```\n\n#### remove\nRemove a list of associated roles from a group.\n\n```python\nrealmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\nrealmsRoles.remove(["level-1", "level-2"])\n```\n\n\n## Roles \n\n\n#### composite\nIn Keycloak we can map roles to other roles, this method allow you to do just that. \n\n```python\nrole_watch = self.kc.build(\'roles\', \'my-realm\').find(\'watch\')\nadded = role_watch.add_composite(\'view\')\n```'` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'readme' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'readme' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'license' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `license = 'MIT'` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'license' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'license' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'dependencies' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `dependencies = ['requests']` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'dependencies' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'dependencies' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 985, in run_command log.info("running %s", command) Message: 'running %s' Arguments: ('dist_info',) --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/usr/lib/python3.11/site-packages/setuptools/command/dist_info.py", line 98, in run self.egg_info.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 311, in run writer(self, ep.name, os.path.join(self.egg_info, ep.name)) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 684, in write_pkg_info log.info("writing %s", filename) Message: 'writing %s' Arguments: ('kcapi.egg-info/PKG-INFO',) --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/usr/lib/python3.11/site-packages/setuptools/command/dist_info.py", line 98, in run self.egg_info.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 311, in run writer(self, ep.name, os.path.join(self.egg_info, ep.name)) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 747, in overwrite_arg write_arg(cmd, basename, filename, True) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 755, in write_arg cmd.write_or_delete_file(argname, filename, value, force) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 273, in write_or_delete_file self.write_file(what, filename, data) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 289, in write_file log.info("writing %s to %s", what, filename) Message: 'writing %s to %s' Arguments: ('dependency_links', 'kcapi.egg-info/dependency_links.txt') --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/usr/lib/python3.11/site-packages/setuptools/command/dist_info.py", line 98, in run self.egg_info.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 311, in run writer(self, ep.name, os.path.join(self.egg_info, ep.name)) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 727, in write_requirements cmd.write_or_delete_file("requirements", filename, data.getvalue()) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 273, in write_or_delete_file self.write_file(what, filename, data) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 289, in write_file log.info("writing %s to %s", what, filename) Message: 'writing %s to %s' Arguments: ('requirements', 'kcapi.egg-info/requires.txt') --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/usr/lib/python3.11/site-packages/setuptools/command/dist_info.py", line 98, in run self.egg_info.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 311, in run writer(self, ep.name, os.path.join(self.egg_info, ep.name)) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 743, in write_toplevel_names cmd.write_file("top-level names", filename, '\n'.join(sorted(pkgs)) + '\n') File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 289, in write_file log.info("writing %s to %s", what, filename) Message: 'writing %s to %s' Arguments: ('top-level names', 'kcapi.egg-info/top_level.txt') --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/usr/lib/python3.11/site-packages/setuptools/command/dist_info.py", line 98, in run self.egg_info.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 318, in run self.find_sources() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 326, in find_sources mm.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 570, in run self.add_defaults() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 615, in add_defaults self.read_manifest() File "/usr/lib/python3.11/site-packages/setuptools/command/sdist.py", line 196, in read_manifest log.info("reading manifest file '%s'", self.manifest) Message: "reading manifest file '%s'" Arguments: ('kcapi.egg-info/SOURCES.txt',) --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/usr/lib/python3.11/site-packages/setuptools/command/dist_info.py", line 98, in run self.egg_info.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 318, in run self.find_sources() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 326, in find_sources mm.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 573, in run self.add_license_files() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 628, in add_license_files log.info("adding license file '%s'", lf) Message: "adding license file '%s'" Arguments: ('LICENSE',) --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/usr/lib/python3.11/site-packages/setuptools/command/dist_info.py", line 98, in run self.egg_info.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 318, in run self.find_sources() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 326, in find_sources mm.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 578, in run self.write_manifest() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 594, in write_manifest self.execute(write_file, (self.manifest, files), msg) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 339, in execute util.execute(func, args, msg, dry_run=self.dry_run) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/util.py", line 335, in execute log.info(msg) Message: "writing manifest file 'kcapi.egg-info/SOURCES.txt'" Arguments: () --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/usr/lib/python3.11/site-packages/setuptools/command/dist_info.py", line 102, in run log.info("creating '{}'".format(os.path.abspath(self.dist_info_dir))) Message: "creating '/builddir/build/BUILD/kcapi-1.1.2/kcapi-1.1.2.dist-info'" Arguments: () Handling requests from hook generated metadata: Requires-Dist Requirement not satisfied: requests + rm -rfv kcapi-1.1.2.dist-info/ removed 'kcapi-1.1.2.dist-info/LICENSE' removed 'kcapi-1.1.2.dist-info/METADATA' removed 'kcapi-1.1.2.dist-info/top_level.txt' removed directory 'kcapi-1.1.2.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/python-kcapi-1.1.2-1.fc38.buildreqs.nosrc.rpm INFO: Going to install missing dynamic buildrequires No matches found for the following disable plugin patterns: local, spacewalk, versionlock Copr repository 13 kB/s | 3.0 kB 00:00 fedora 67 kB/s | 18 kB 00:00 updates 103 kB/s | 25 kB 00:00 Package pyproject-rpm-macros-1.6.3-1.fc38.noarch is already installed. Package python3-devel-3.11.2-1.fc38.x86_64 is already installed. Package python3-devel-3.11.2-1.fc38.x86_64 is already installed. Package python3-packaging-23.0-1.fc38.noarch is already installed. Package python3-pip-22.3.1-2.fc38.noarch is already installed. Package python3-setuptools-67.6.1-1.fc38.noarch is already installed. Package python3-wheel-1:0.38.4-2.fc38.noarch is already installed. Dependencies resolved. ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: python3-requests noarch 2.28.2-1.fc38 fedora 155 k Installing dependencies: python3-charset-normalizer noarch 3.1.0-1.fc38 copr_base 97 k python3-idna noarch 3.4-2.fc38 fedora 110 k python3-pysocks noarch 1.7.1-16.fc38 fedora 40 k python3-six noarch 1.16.0-9.fc38 fedora 42 k python3-urllib3 noarch 1.26.12-2.fc38 fedora 252 k Transaction Summary ================================================================================ Install 6 Packages Total download size: 697 k Installed size: 2.4 M Downloading Packages: (1/6): python3-pysocks-1.7.1-16.fc38.noarch.rpm 1.4 MB/s | 40 kB 00:00 (2/6): python3-idna-3.4-2.fc38.noarch.rpm 3.7 MB/s | 110 kB 00:00 (3/6): python3-charset-normalizer-3.1.0-1.fc38. 3.0 MB/s | 97 kB 00:00 (4/6): python3-requests-2.28.2-1.fc38.noarch.rp 35 MB/s | 155 kB 00:00 (5/6): python3-six-1.16.0-9.fc38.noarch.rpm 13 MB/s | 42 kB 00:00 (6/6): python3-urllib3-1.26.12-2.fc38.noarch.rp 41 MB/s | 252 kB 00:00 -------------------------------------------------------------------------------- Total 2.0 MB/s | 697 kB 00:00 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : python3-idna-3.4-2.fc38.noarch 1/6 Installing : python3-six-1.16.0-9.fc38.noarch 2/6 Installing : python3-pysocks-1.7.1-16.fc38.noarch 3/6 Installing : python3-urllib3-1.26.12-2.fc38.noarch 4/6 Installing : python3-charset-normalizer-3.1.0-1.fc38.noarch 5/6 Installing : python3-requests-2.28.2-1.fc38.noarch 6/6 Running scriptlet: python3-requests-2.28.2-1.fc38.noarch 6/6 Verifying : python3-charset-normalizer-3.1.0-1.fc38.noarch 1/6 Verifying : python3-idna-3.4-2.fc38.noarch 2/6 Verifying : python3-pysocks-1.7.1-16.fc38.noarch 3/6 Verifying : python3-requests-2.28.2-1.fc38.noarch 4/6 Verifying : python3-six-1.16.0-9.fc38.noarch 5/6 Verifying : python3-urllib3-1.26.12-2.fc38.noarch 6/6 Installed: python3-charset-normalizer-3.1.0-1.fc38.noarch python3-idna-3.4-2.fc38.noarch python3-pysocks-1.7.1-16.fc38.noarch python3-requests-2.28.2-1.fc38.noarch python3-six-1.16.0-9.fc38.noarch python3-urllib3-1.26.12-2.fc38.noarch Complete! Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1679961600 Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.7NrFQM + umask 022 + cd /builddir/build/BUILD + cd /builddir/build/BUILD + rm -rf kcapi-1.1.2 + /usr/lib/rpm/rpmuncompress -x /builddir/build/SOURCES/kcapi-1.1.2.tar.gz + STATUS=0 + '[' 0 -ne 0 ']' + cd kcapi-1.1.2 + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + RPM_EC=0 ++ jobs -p + exit 0 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.5I0qXM + umask 022 + cd /builddir/build/BUILD + cd kcapi-1.1.2 + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + export CFLAGS + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + export CXXFLAGS + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FFLAGS + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + export LDFLAGS + LT_SYS_LIBRARY_PATH=/usr/lib64: + export LT_SYS_LIBRARY_PATH + CC=gcc + export CC + CXX=g++ + export CXX + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(pip) >= 19' + echo 'python3dist(packaging)' + '[' -f pyproject.toml ']' + echo '(python3dist(toml) if python3-devel < 3.11)' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/kcapi-1.1.2/.pyproject-builddir + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + TMPDIR=/builddir/build/BUILD/kcapi-1.1.2/.pyproject-builddir + RPM_TOXENV=py311 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/kcapi-1.1.2/pyproject-wheeldir Handling setuptools>=61.0 from build-system.requires Requirement satisfied: setuptools>=61.0 (installed: setuptools 67.6.1) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'readme' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `readme = '# Keycloak API\n\nPython module to automate Keycloak or Red Hat Single Sign-On (RHSSO) configuration.\n\n## How To Install\n\n```sh\npip install kcapi\n```\n\n\n## Testing\n\nTo run the test you would need a Keycloak instance, you can run one locally or in the [cloud]( https://developers.redhat.com/developer-sandbox/get-started) then you just have to follow this steps: \n\n```shell script\npython3.10 -m venv .venv\nsource .venv/bin/activate\npip install requests\n\n# Setup SSO server - go to https://developers.redhat.com/developer-sandbox/get-started,\n# launch sandbox environment, +Add, select some "Red Hat Single Sign-On..." template.\nexport KC_USER=admin\nexport KC_PASSWORD=admin_password\nexport KC_REALM=myrealm # do not use master realm, it cannot be removed\nexport KC_ENDPOINT=https://my-first-sso-me-me-dev.apps.sandbox.x8i5.p1.openshiftapps.com\n\npython -m unittest\n```\n\n\n## API\n\n### OpenID\n\nThis class takes care of OpenID login using [password owner credentials](https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.3) flow.\n\n\n#### Constructor\n\n```python\nfrom rhsso import OpenID\n\noid_client = OpenID({\n "client_id": "admin-cli",\n "username": USER,\n "password": PASSWORD,\n "grant_type":"password",\n "realm" : "master"\n }, endpoint)\n```\n\n- **client_id**: Client Identifier in Keycloak.\n- **username**: Login username for the Realm.\n- **password**: Login password for the Realm.\n- **grant_type**: The grant type you want to use (usually ``password``).\n- **endpoint**: A Keycloak or RHSSO URL endpoint, something like: ``https://my_keycloak.com``. \n\n\n#### Methods\n\n##### getToken\n\nThis will initiate a session with the Keycloak server and will return a OpenID token back.\n\n```python\noid_client.getToken() #glTeDLlmmpLYoAAUMcFQqNOMjw5dA\n```\n\n##### createAdminClient\n\nThis static method should be used in order to access the master Realm in Keycloak.\n\n```python\n oidc = OpenID.createAdminClient(self.USER, self.PASSWORD)\n oidc.getToken() #glTeDLlmmpLYoAAUMcFQqNOMjw5dA\n```\n### Keycloak\n\nThis class builds all the Keycloak configuration REST resources by using REST conventions we can target the majority of Keycloak services.\n\n#### Constructor\n\n```Python\nkc = Keycloak(token, self.ENDPOINT)\n```\n\nThe constructor takes two parameters:\n\n- **token**: A token with enough priviledge to perform the desired operation.\n- **endpoint**: A Keycloak or RHSSO URL endpoint, something like: ``https://my_keycloak.com``. \n\n\n#### Methods\n\n#### build\nThis methods build a REST client (capabilities detailed below) targeting a specific Keycloak REST resource.\n\n```python\ngroups = kc.build(\'groups\', \'my_realm\')\n\n# Create a group called DC\nstate = groups.create({"name": "DC"}).isOk()\n\n```\n> In this example we build the \'groups\' API for ``my_realm`` Realm.\n\n##### Supported Resources\n\nHere is a quick list of supported resources:\n\n- **users**: [users API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_user).\n- **clients**: [client API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_client). \n- **groups**: [groups API](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/groups).\n- **roles**: [roles API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_role_for_the_realm_or_client_2)\n- **identity-provider**: [identity provider API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_get_identity_providers)\n\n\n> As long as you find a REST endpoint that follow the standard you can use this method to build a client around it, an example of this is the non well documented ``components`` endpoint.\n\n- **components**: This API allows you configure things like [user federation](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/user-storage-federation) or [Realm keys](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.2/html/server_administration_guide/admin_permissions#realm_keys).\n\n- **authentication**: Provide access to built-in and/or custom authentication flows.\n
\n\n#### admin\nSimilar to the ``build`` method but the client points to the ``master`` realm, allowing us operation such as realm creation.\n\n```python\n main_realm = kc.admin()\n\n # Creates a realm called my_realm\n main_realm.create({"enabled": "true", "id": my_realm, "realm": my_realm})\n```\n\n\n### REST API\n\nWhen you use the ``build`` or ``admin`` methods you will get back a **REST** class pointing to the Keycloak resource, keep in mind that this class don\'t check that the resource is valid, this is done to keep it flexible and to make it easy to adapt to new Keycloak REST API changes in the future. \n\n#### Usage\n\nIn order to create one you need to ``build`` method we have used before:\n\n```python\nbatman = {\n "enabled":\'true\',\n "attributes":{},\n "username":"batman",\n "firstName":"Bruce",\n "lastName":"Wayne",\n "emailVerified":""\n}\n\nusers = kc.build(\'users\', \'DC\')\n\n# Create a user called batman in DC\nstate = users.create(batman).isOk()\n```\n\n#### Methods\n\nFollowing the example above lets see the methods we have starting with the usual CRUD methods:\n\n#### create\n\nThis method ``POST`` a dictionary into any given resource:\n\n```python\nbatman = {\n "enabled":\'true\',\n "attributes":{},\n "username":"batman",\n "firstName":"Bruce",\n "lastName":"Wayne",\n "emailVerified":""\n}\n\nstate = users.create(batman).isOk()\n```\n\n- **dictionary**: Dictionary with the fields we want to POST to the server.\n\n\n\n\n#### update\n\nThis method performs a ``PUT`` on the resource.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nstate = users.update(id, batman_update).isOk()\n```\n- **id**: Id of the resource in Keycloak.\n- **dictionary**: Dictionary representing the updated fields. \n\n#### remove\nThis method sends a ``DELETE`` to the pointed resource.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nstate = users.remove(id).isOk()\n```\n- **id**: Id of the resource in Keycloak.\n- **dictionary**: Dictionary representing the updated fields. \n\n\n#### get\nSend a ``GET`` request to retrieve a specific Keycloak resource.\n\n```python\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nuser = users.get(id).response()\n```\n\n#### all\n\nReturn all objects of a particular resource type.\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\n# Create a user called batman in DC\nuser_list = users.all() #\xa0[ {id:\'xxx-yyy\', username: \'batman\', ...} ] \n```\n#### findFirst\nFinds a resource by passing an arbitrary key/value pair.\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\nusers.findFirst({"key":"username", "value": \'batman\'})\n```\n\n#### exist\nCheck if a resource matching the provided ``id`` exists:\n```Python\nusers = kc.build(\'users\', \'DC\')\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nusers.exists(id) #True\n```\n\n#### existByKV\nCheck if a resource matching the provided key/value pair, exists.\n\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\nusers.existByKV("username", \'batman\') #False\n```\n\n\n### ResponseHandler\n\nEach **CRUD** method returns a ``ResponseHandler`` class with the following methods.\n\n#### Methods\n\n\n#### response\nreturns the requests [response object](https://docs.python-requests.org/en/latest/api/#requests.Response).\n\n```Python\nusers.update(id, batman_update).response().status_code #HTTP 201\n```\n\n\n#### isOk\n\nReturn ``True`` if the request complete successfully otherwise it will raise an exception.\n\n```Python\nstate = users.update(id, batman_update).isOk() # Return True here.\n```\n\n#### verify\n\nDoes the same as ``isOk`` but it allow you to chain more methods.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\ncookies = users.update(id, batman_update).verify().response().cookies # Get cookies.\n```\n\n\n## Specialisations\n\n### Realms \n\n### KeycloakCaches \n\nThis class handles the Keycloak caches. \n\n#### Instantiation \n\n```python\n# Creates a REST API instance target the Realms API. \nrealms = kc.build(\'realms\', \'my_realm\') \n\n# Gets the cache Realms cache API. \ncaches = realms.caches(self.REALM)\n```\n\n#### clearUserCache \nThis method tells Keycloak to clear the user cache.\n\n```python\ncaches.clearUserCache()\n```\n\n\n#### clearRealmCache \nThis method tells Keycloak to clear the realm cache.\n\n```python\ncaches.clearRealmCache()\n```\n\n\n#### clearKeyCache \nThis method tells Keycloak to clear the external public key cache for clients and identity providers.\n\n```python\ncaches.clearKeyCache()\n```\n\n> For more information on how this caches works follow this [link](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_installation_and_configuration_guide/server_cache_configuration).\n\n\n### Users\n\n#### updateCredentials\n\nUpdate user credentials.\n\n```js\nuser_credentials = {\n \'temporary\': False,\n \'value\':\'12345\'\n}\n\nstate = users.updateCredentials(user_info, user_credentials).isOk() # Updated user password.\n```\nWhere:\n- **temporary**: Boolean where if ``True`` provide a temporary password just for the first login. \n- **value**: String with the password.\n\n\n#### joinGroup\n\nAdd a user into a existing [group](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/groups).\n\nFirst we need a group:\n```python\ndef createDCGroup():\n group = kc.build(\'groups\', \'heroes\')\n return group.create({"name": "DC"}).isOk()\n```\n\nThen we can join the group the following way:\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "username", "value": "batman"}\n group = {"key": "name", "value": "DC"}\n\n users.joinGroup(user, group).isOk()\n```\n\n> The API works by matching the first occurrence between the provided ``key/value`` for the two resources (User and Group), this can help in various situation for example if we want to target the user by ``uuid``.\n\n\nUsing ``uuid`` as user identifier.\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "uuid", "value": "23e4567-e89b-..."}\n group = {"key": "name", "value": "DC"}\n\n users.joinGroup(user, group).isOk()\n```\n\nOr we want to use the group ``id``:\n\n```python\n user = {"key": "uuid", "value": "23e4567-e89b-..."}\n group = {"key": "id", "value": "f8d91722-a1f0-45e..."}\n\n users.joinGroup(user, group).isOk()\n```\n> If the field criteria don\'t return a unique value, the first entry in the list will be used.\n#### leaveGroup\n\nRemove a user from a group.\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "username", "value": "batman"}\n group = {"key": "uuid", "value": "123e4567-e89b-..."}\n\n users.leaveGroup(user, group).isOk()\n\n user = {"key": "uuid", "value": "12d3-a456-4"}\n group = {"key": "id", "value": "123e4567-e89b-..."}\n\n users.leaveGroup(user, group).isOk()\n\n```\n\n> The same rules for ``key/value`` discussed above also applies here.\n\n\n### Groups\n\nTo manage the relationship between realm level [roles](keycloak.org/docs/latest/server_admin/#assigning-permissions-and-access-using-roles-and-groups) and groups, we can use the **RealmsRolesMapping**.\n\nTo get an instance of this class you need to instantiate the ``group`` resource class:\n\n```Python\ngroups = kc.build(\'groups\', \'heroes\')\n```\n\nAnd use the method ``realmRoles`` passing a valid [group dictionary](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_grouprepresentation):\n\n```python\nrealmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\n```\n\nThen we get a class with following methods:\n\n#### add\n\nAdd a list of existing roles to a group.\n\n```python\ndef makeRoles(self):\n roles = kc.build(\'roles\', self.realm)\n lvl1 = roles.create({"name": "level-1"}).isOk()\n lvl2 = roles.create({"name": "level-2"}).isOk()\n return lvl1 and lvl2\n\n\nif makeRoles():\n realmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\n realmsRoles.add(["level-1", "level-2"])\n```\n\n#### remove\nRemove a list of associated roles from a group.\n\n```python\nrealmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\nrealmsRoles.remove(["level-1", "level-2"])\n```\n\n\n## Roles \n\n\n#### composite\nIn Keycloak we can map roles to other roles, this method allow you to do just that. \n\n```python\nrole_watch = self.kc.build(\'roles\', \'my-realm\').find(\'watch\')\nadded = role_watch.add_composite(\'view\')\n```'` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'readme' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'readme' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'license' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `license = 'MIT'` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'license' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'license' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'dependencies' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `dependencies = ['requests']` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'dependencies' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'dependencies' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) HOOK STDOUT: running egg_info HOOK STDOUT: writing kcapi.egg-info/PKG-INFO HOOK STDOUT: writing dependency_links to kcapi.egg-info/dependency_links.txt HOOK STDOUT: writing requirements to kcapi.egg-info/requires.txt HOOK STDOUT: writing top-level names to kcapi.egg-info/top_level.txt HOOK STDOUT: reading manifest file 'kcapi.egg-info/SOURCES.txt' HOOK STDOUT: adding license file 'LICENSE' HOOK STDOUT: writing manifest file 'kcapi.egg-info/SOURCES.txt' Handling wheel from get_requires_for_build_wheel Requirement satisfied: wheel (installed: wheel 0.38.4) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'readme' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `readme = '# Keycloak API\n\nPython module to automate Keycloak or Red Hat Single Sign-On (RHSSO) configuration.\n\n## How To Install\n\n```sh\npip install kcapi\n```\n\n\n## Testing\n\nTo run the test you would need a Keycloak instance, you can run one locally or in the [cloud]( https://developers.redhat.com/developer-sandbox/get-started) then you just have to follow this steps: \n\n```shell script\npython3.10 -m venv .venv\nsource .venv/bin/activate\npip install requests\n\n# Setup SSO server - go to https://developers.redhat.com/developer-sandbox/get-started,\n# launch sandbox environment, +Add, select some "Red Hat Single Sign-On..." template.\nexport KC_USER=admin\nexport KC_PASSWORD=admin_password\nexport KC_REALM=myrealm # do not use master realm, it cannot be removed\nexport KC_ENDPOINT=https://my-first-sso-me-me-dev.apps.sandbox.x8i5.p1.openshiftapps.com\n\npython -m unittest\n```\n\n\n## API\n\n### OpenID\n\nThis class takes care of OpenID login using [password owner credentials](https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.3) flow.\n\n\n#### Constructor\n\n```python\nfrom rhsso import OpenID\n\noid_client = OpenID({\n "client_id": "admin-cli",\n "username": USER,\n "password": PASSWORD,\n "grant_type":"password",\n "realm" : "master"\n }, endpoint)\n```\n\n- **client_id**: Client Identifier in Keycloak.\n- **username**: Login username for the Realm.\n- **password**: Login password for the Realm.\n- **grant_type**: The grant type you want to use (usually ``password``).\n- **endpoint**: A Keycloak or RHSSO URL endpoint, something like: ``https://my_keycloak.com``. \n\n\n#### Methods\n\n##### getToken\n\nThis will initiate a session with the Keycloak server and will return a OpenID token back.\n\n```python\noid_client.getToken() #glTeDLlmmpLYoAAUMcFQqNOMjw5dA\n```\n\n##### createAdminClient\n\nThis static method should be used in order to access the master Realm in Keycloak.\n\n```python\n oidc = OpenID.createAdminClient(self.USER, self.PASSWORD)\n oidc.getToken() #glTeDLlmmpLYoAAUMcFQqNOMjw5dA\n```\n### Keycloak\n\nThis class builds all the Keycloak configuration REST resources by using REST conventions we can target the majority of Keycloak services.\n\n#### Constructor\n\n```Python\nkc = Keycloak(token, self.ENDPOINT)\n```\n\nThe constructor takes two parameters:\n\n- **token**: A token with enough priviledge to perform the desired operation.\n- **endpoint**: A Keycloak or RHSSO URL endpoint, something like: ``https://my_keycloak.com``. \n\n\n#### Methods\n\n#### build\nThis methods build a REST client (capabilities detailed below) targeting a specific Keycloak REST resource.\n\n```python\ngroups = kc.build(\'groups\', \'my_realm\')\n\n# Create a group called DC\nstate = groups.create({"name": "DC"}).isOk()\n\n```\n> In this example we build the \'groups\' API for ``my_realm`` Realm.\n\n##### Supported Resources\n\nHere is a quick list of supported resources:\n\n- **users**: [users API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_user).\n- **clients**: [client API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_client). \n- **groups**: [groups API](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/groups).\n- **roles**: [roles API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_role_for_the_realm_or_client_2)\n- **identity-provider**: [identity provider API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_get_identity_providers)\n\n\n> As long as you find a REST endpoint that follow the standard you can use this method to build a client around it, an example of this is the non well documented ``components`` endpoint.\n\n- **components**: This API allows you configure things like [user federation](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/user-storage-federation) or [Realm keys](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.2/html/server_administration_guide/admin_permissions#realm_keys).\n\n- **authentication**: Provide access to built-in and/or custom authentication flows.\n
\n\n#### admin\nSimilar to the ``build`` method but the client points to the ``master`` realm, allowing us operation such as realm creation.\n\n```python\n main_realm = kc.admin()\n\n # Creates a realm called my_realm\n main_realm.create({"enabled": "true", "id": my_realm, "realm": my_realm})\n```\n\n\n### REST API\n\nWhen you use the ``build`` or ``admin`` methods you will get back a **REST** class pointing to the Keycloak resource, keep in mind that this class don\'t check that the resource is valid, this is done to keep it flexible and to make it easy to adapt to new Keycloak REST API changes in the future. \n\n#### Usage\n\nIn order to create one you need to ``build`` method we have used before:\n\n```python\nbatman = {\n "enabled":\'true\',\n "attributes":{},\n "username":"batman",\n "firstName":"Bruce",\n "lastName":"Wayne",\n "emailVerified":""\n}\n\nusers = kc.build(\'users\', \'DC\')\n\n# Create a user called batman in DC\nstate = users.create(batman).isOk()\n```\n\n#### Methods\n\nFollowing the example above lets see the methods we have starting with the usual CRUD methods:\n\n#### create\n\nThis method ``POST`` a dictionary into any given resource:\n\n```python\nbatman = {\n "enabled":\'true\',\n "attributes":{},\n "username":"batman",\n "firstName":"Bruce",\n "lastName":"Wayne",\n "emailVerified":""\n}\n\nstate = users.create(batman).isOk()\n```\n\n- **dictionary**: Dictionary with the fields we want to POST to the server.\n\n\n\n\n#### update\n\nThis method performs a ``PUT`` on the resource.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nstate = users.update(id, batman_update).isOk()\n```\n- **id**: Id of the resource in Keycloak.\n- **dictionary**: Dictionary representing the updated fields. \n\n#### remove\nThis method sends a ``DELETE`` to the pointed resource.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nstate = users.remove(id).isOk()\n```\n- **id**: Id of the resource in Keycloak.\n- **dictionary**: Dictionary representing the updated fields. \n\n\n#### get\nSend a ``GET`` request to retrieve a specific Keycloak resource.\n\n```python\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nuser = users.get(id).response()\n```\n\n#### all\n\nReturn all objects of a particular resource type.\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\n# Create a user called batman in DC\nuser_list = users.all() #\xa0[ {id:\'xxx-yyy\', username: \'batman\', ...} ] \n```\n#### findFirst\nFinds a resource by passing an arbitrary key/value pair.\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\nusers.findFirst({"key":"username", "value": \'batman\'})\n```\n\n#### exist\nCheck if a resource matching the provided ``id`` exists:\n```Python\nusers = kc.build(\'users\', \'DC\')\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nusers.exists(id) #True\n```\n\n#### existByKV\nCheck if a resource matching the provided key/value pair, exists.\n\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\nusers.existByKV("username", \'batman\') #False\n```\n\n\n### ResponseHandler\n\nEach **CRUD** method returns a ``ResponseHandler`` class with the following methods.\n\n#### Methods\n\n\n#### response\nreturns the requests [response object](https://docs.python-requests.org/en/latest/api/#requests.Response).\n\n```Python\nusers.update(id, batman_update).response().status_code #HTTP 201\n```\n\n\n#### isOk\n\nReturn ``True`` if the request complete successfully otherwise it will raise an exception.\n\n```Python\nstate = users.update(id, batman_update).isOk() # Return True here.\n```\n\n#### verify\n\nDoes the same as ``isOk`` but it allow you to chain more methods.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\ncookies = users.update(id, batman_update).verify().response().cookies # Get cookies.\n```\n\n\n## Specialisations\n\n### Realms \n\n### KeycloakCaches \n\nThis class handles the Keycloak caches. \n\n#### Instantiation \n\n```python\n# Creates a REST API instance target the Realms API. \nrealms = kc.build(\'realms\', \'my_realm\') \n\n# Gets the cache Realms cache API. \ncaches = realms.caches(self.REALM)\n```\n\n#### clearUserCache \nThis method tells Keycloak to clear the user cache.\n\n```python\ncaches.clearUserCache()\n```\n\n\n#### clearRealmCache \nThis method tells Keycloak to clear the realm cache.\n\n```python\ncaches.clearRealmCache()\n```\n\n\n#### clearKeyCache \nThis method tells Keycloak to clear the external public key cache for clients and identity providers.\n\n```python\ncaches.clearKeyCache()\n```\n\n> For more information on how this caches works follow this [link](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_installation_and_configuration_guide/server_cache_configuration).\n\n\n### Users\n\n#### updateCredentials\n\nUpdate user credentials.\n\n```js\nuser_credentials = {\n \'temporary\': False,\n \'value\':\'12345\'\n}\n\nstate = users.updateCredentials(user_info, user_credentials).isOk() # Updated user password.\n```\nWhere:\n- **temporary**: Boolean where if ``True`` provide a temporary password just for the first login. \n- **value**: String with the password.\n\n\n#### joinGroup\n\nAdd a user into a existing [group](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/groups).\n\nFirst we need a group:\n```python\ndef createDCGroup():\n group = kc.build(\'groups\', \'heroes\')\n return group.create({"name": "DC"}).isOk()\n```\n\nThen we can join the group the following way:\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "username", "value": "batman"}\n group = {"key": "name", "value": "DC"}\n\n users.joinGroup(user, group).isOk()\n```\n\n> The API works by matching the first occurrence between the provided ``key/value`` for the two resources (User and Group), this can help in various situation for example if we want to target the user by ``uuid``.\n\n\nUsing ``uuid`` as user identifier.\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "uuid", "value": "23e4567-e89b-..."}\n group = {"key": "name", "value": "DC"}\n\n users.joinGroup(user, group).isOk()\n```\n\nOr we want to use the group ``id``:\n\n```python\n user = {"key": "uuid", "value": "23e4567-e89b-..."}\n group = {"key": "id", "value": "f8d91722-a1f0-45e..."}\n\n users.joinGroup(user, group).isOk()\n```\n> If the field criteria don\'t return a unique value, the first entry in the list will be used.\n#### leaveGroup\n\nRemove a user from a group.\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "username", "value": "batman"}\n group = {"key": "uuid", "value": "123e4567-e89b-..."}\n\n users.leaveGroup(user, group).isOk()\n\n user = {"key": "uuid", "value": "12d3-a456-4"}\n group = {"key": "id", "value": "123e4567-e89b-..."}\n\n users.leaveGroup(user, group).isOk()\n\n```\n\n> The same rules for ``key/value`` discussed above also applies here.\n\n\n### Groups\n\nTo manage the relationship between realm level [roles](keycloak.org/docs/latest/server_admin/#assigning-permissions-and-access-using-roles-and-groups) and groups, we can use the **RealmsRolesMapping**.\n\nTo get an instance of this class you need to instantiate the ``group`` resource class:\n\n```Python\ngroups = kc.build(\'groups\', \'heroes\')\n```\n\nAnd use the method ``realmRoles`` passing a valid [group dictionary](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_grouprepresentation):\n\n```python\nrealmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\n```\n\nThen we get a class with following methods:\n\n#### add\n\nAdd a list of existing roles to a group.\n\n```python\ndef makeRoles(self):\n roles = kc.build(\'roles\', self.realm)\n lvl1 = roles.create({"name": "level-1"}).isOk()\n lvl2 = roles.create({"name": "level-2"}).isOk()\n return lvl1 and lvl2\n\n\nif makeRoles():\n realmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\n realmsRoles.add(["level-1", "level-2"])\n```\n\n#### remove\nRemove a list of associated roles from a group.\n\n```python\nrealmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\nrealmsRoles.remove(["level-1", "level-2"])\n```\n\n\n## Roles \n\n\n#### composite\nIn Keycloak we can map roles to other roles, this method allow you to do just that. \n\n```python\nrole_watch = self.kc.build(\'roles\', \'my-realm\').find(\'watch\')\nadded = role_watch.add_composite(\'view\')\n```'` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'readme' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'readme' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'license' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `license = 'MIT'` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'license' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'license' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'dependencies' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `dependencies = ['requests']` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'dependencies' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'dependencies' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 985, in run_command log.info("running %s", command) Message: 'running %s' Arguments: ('dist_info',) --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/usr/lib/python3.11/site-packages/setuptools/command/dist_info.py", line 98, in run self.egg_info.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 311, in run writer(self, ep.name, os.path.join(self.egg_info, ep.name)) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 684, in write_pkg_info log.info("writing %s", filename) Message: 'writing %s' Arguments: ('kcapi.egg-info/PKG-INFO',) --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/usr/lib/python3.11/site-packages/setuptools/command/dist_info.py", line 98, in run self.egg_info.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 311, in run writer(self, ep.name, os.path.join(self.egg_info, ep.name)) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 747, in overwrite_arg write_arg(cmd, basename, filename, True) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 755, in write_arg cmd.write_or_delete_file(argname, filename, value, force) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 273, in write_or_delete_file self.write_file(what, filename, data) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 289, in write_file log.info("writing %s to %s", what, filename) Message: 'writing %s to %s' Arguments: ('dependency_links', 'kcapi.egg-info/dependency_links.txt') --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/usr/lib/python3.11/site-packages/setuptools/command/dist_info.py", line 98, in run self.egg_info.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 311, in run writer(self, ep.name, os.path.join(self.egg_info, ep.name)) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 727, in write_requirements cmd.write_or_delete_file("requirements", filename, data.getvalue()) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 273, in write_or_delete_file self.write_file(what, filename, data) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 289, in write_file log.info("writing %s to %s", what, filename) Message: 'writing %s to %s' Arguments: ('requirements', 'kcapi.egg-info/requires.txt') --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/usr/lib/python3.11/site-packages/setuptools/command/dist_info.py", line 98, in run self.egg_info.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 311, in run writer(self, ep.name, os.path.join(self.egg_info, ep.name)) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 743, in write_toplevel_names cmd.write_file("top-level names", filename, '\n'.join(sorted(pkgs)) + '\n') File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 289, in write_file log.info("writing %s to %s", what, filename) Message: 'writing %s to %s' Arguments: ('top-level names', 'kcapi.egg-info/top_level.txt') --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/usr/lib/python3.11/site-packages/setuptools/command/dist_info.py", line 98, in run self.egg_info.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 318, in run self.find_sources() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 326, in find_sources mm.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 570, in run self.add_defaults() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 615, in add_defaults self.read_manifest() File "/usr/lib/python3.11/site-packages/setuptools/command/sdist.py", line 196, in read_manifest log.info("reading manifest file '%s'", self.manifest) Message: "reading manifest file '%s'" Arguments: ('kcapi.egg-info/SOURCES.txt',) --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/usr/lib/python3.11/site-packages/setuptools/command/dist_info.py", line 98, in run self.egg_info.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 318, in run self.find_sources() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 326, in find_sources mm.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 573, in run self.add_license_files() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 628, in add_license_files log.info("adding license file '%s'", lf) Message: "adding license file '%s'" Arguments: ('LICENSE',) --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/usr/lib/python3.11/site-packages/setuptools/command/dist_info.py", line 98, in run self.egg_info.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 318, in run self.find_sources() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 326, in find_sources mm.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 578, in run self.write_manifest() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 594, in write_manifest self.execute(write_file, (self.manifest, files), msg) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 339, in execute util.execute(func, args, msg, dry_run=self.dry_run) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/util.py", line 335, in execute log.info(msg) Message: "writing manifest file 'kcapi.egg-info/SOURCES.txt'" Arguments: () --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/usr/lib/python3.11/site-packages/setuptools/command/dist_info.py", line 102, in run log.info("creating '{}'".format(os.path.abspath(self.dist_info_dir))) Message: "creating '/builddir/build/BUILD/kcapi-1.1.2/kcapi-1.1.2.dist-info'" Arguments: () Handling requests from hook generated metadata: Requires-Dist Requirement satisfied: requests (installed: requests 2.28.2) + rm -rfv kcapi-1.1.2.dist-info/ removed 'kcapi-1.1.2.dist-info/LICENSE' removed 'kcapi-1.1.2.dist-info/METADATA' removed 'kcapi-1.1.2.dist-info/top_level.txt' removed directory 'kcapi-1.1.2.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/python-kcapi-1.1.2-1.fc38.buildreqs.nosrc.rpm INFO: Going to install missing dynamic buildrequires No matches found for the following disable plugin patterns: local, spacewalk, versionlock Copr repository 13 kB/s | 3.0 kB 00:00 fedora 66 kB/s | 18 kB 00:00 updates 102 kB/s | 25 kB 00:00 Package pyproject-rpm-macros-1.6.3-1.fc38.noarch is already installed. Package python3-devel-3.11.2-1.fc38.x86_64 is already installed. Package python3-devel-3.11.2-1.fc38.x86_64 is already installed. Package python3-packaging-23.0-1.fc38.noarch is already installed. Package python3-pip-22.3.1-2.fc38.noarch is already installed. Package python3-requests-2.28.2-1.fc38.noarch is already installed. Package python3-setuptools-67.6.1-1.fc38.noarch is already installed. Package python3-wheel-1:0.38.4-2.fc38.noarch is already installed. Dependencies resolved. Nothing to do. Complete! Building target platforms: x86_64 Building for target x86_64 setting SOURCE_DATE_EPOCH=1679961600 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.LBlrsX + umask 022 + cd /builddir/build/BUILD + cd kcapi-1.1.2 + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + export CFLAGS + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + export CXXFLAGS + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FFLAGS + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + export LDFLAGS + LT_SYS_LIBRARY_PATH=/usr/lib64: + export LT_SYS_LIBRARY_PATH + CC=gcc + export CC + CXX=g++ + export CXX + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(pip) >= 19' + echo 'python3dist(packaging)' + '[' -f pyproject.toml ']' + echo '(python3dist(toml) if python3-devel < 3.11)' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/kcapi-1.1.2/.pyproject-builddir + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 ' + TMPDIR=/builddir/build/BUILD/kcapi-1.1.2/.pyproject-builddir + RPM_TOXENV=py311 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/kcapi-1.1.2/pyproject-wheeldir Handling setuptools>=61.0 from build-system.requires Requirement satisfied: setuptools>=61.0 (installed: setuptools 67.6.1) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'readme' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `readme = '# Keycloak API\n\nPython module to automate Keycloak or Red Hat Single Sign-On (RHSSO) configuration.\n\n## How To Install\n\n```sh\npip install kcapi\n```\n\n\n## Testing\n\nTo run the test you would need a Keycloak instance, you can run one locally or in the [cloud]( https://developers.redhat.com/developer-sandbox/get-started) then you just have to follow this steps: \n\n```shell script\npython3.10 -m venv .venv\nsource .venv/bin/activate\npip install requests\n\n# Setup SSO server - go to https://developers.redhat.com/developer-sandbox/get-started,\n# launch sandbox environment, +Add, select some "Red Hat Single Sign-On..." template.\nexport KC_USER=admin\nexport KC_PASSWORD=admin_password\nexport KC_REALM=myrealm # do not use master realm, it cannot be removed\nexport KC_ENDPOINT=https://my-first-sso-me-me-dev.apps.sandbox.x8i5.p1.openshiftapps.com\n\npython -m unittest\n```\n\n\n## API\n\n### OpenID\n\nThis class takes care of OpenID login using [password owner credentials](https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.3) flow.\n\n\n#### Constructor\n\n```python\nfrom rhsso import OpenID\n\noid_client = OpenID({\n "client_id": "admin-cli",\n "username": USER,\n "password": PASSWORD,\n "grant_type":"password",\n "realm" : "master"\n }, endpoint)\n```\n\n- **client_id**: Client Identifier in Keycloak.\n- **username**: Login username for the Realm.\n- **password**: Login password for the Realm.\n- **grant_type**: The grant type you want to use (usually ``password``).\n- **endpoint**: A Keycloak or RHSSO URL endpoint, something like: ``https://my_keycloak.com``. \n\n\n#### Methods\n\n##### getToken\n\nThis will initiate a session with the Keycloak server and will return a OpenID token back.\n\n```python\noid_client.getToken() #glTeDLlmmpLYoAAUMcFQqNOMjw5dA\n```\n\n##### createAdminClient\n\nThis static method should be used in order to access the master Realm in Keycloak.\n\n```python\n oidc = OpenID.createAdminClient(self.USER, self.PASSWORD)\n oidc.getToken() #glTeDLlmmpLYoAAUMcFQqNOMjw5dA\n```\n### Keycloak\n\nThis class builds all the Keycloak configuration REST resources by using REST conventions we can target the majority of Keycloak services.\n\n#### Constructor\n\n```Python\nkc = Keycloak(token, self.ENDPOINT)\n```\n\nThe constructor takes two parameters:\n\n- **token**: A token with enough priviledge to perform the desired operation.\n- **endpoint**: A Keycloak or RHSSO URL endpoint, something like: ``https://my_keycloak.com``. \n\n\n#### Methods\n\n#### build\nThis methods build a REST client (capabilities detailed below) targeting a specific Keycloak REST resource.\n\n```python\ngroups = kc.build(\'groups\', \'my_realm\')\n\n# Create a group called DC\nstate = groups.create({"name": "DC"}).isOk()\n\n```\n> In this example we build the \'groups\' API for ``my_realm`` Realm.\n\n##### Supported Resources\n\nHere is a quick list of supported resources:\n\n- **users**: [users API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_user).\n- **clients**: [client API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_client). \n- **groups**: [groups API](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/groups).\n- **roles**: [roles API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_role_for_the_realm_or_client_2)\n- **identity-provider**: [identity provider API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_get_identity_providers)\n\n\n> As long as you find a REST endpoint that follow the standard you can use this method to build a client around it, an example of this is the non well documented ``components`` endpoint.\n\n- **components**: This API allows you configure things like [user federation](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/user-storage-federation) or [Realm keys](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.2/html/server_administration_guide/admin_permissions#realm_keys).\n\n- **authentication**: Provide access to built-in and/or custom authentication flows.\n
\n\n#### admin\nSimilar to the ``build`` method but the client points to the ``master`` realm, allowing us operation such as realm creation.\n\n```python\n main_realm = kc.admin()\n\n # Creates a realm called my_realm\n main_realm.create({"enabled": "true", "id": my_realm, "realm": my_realm})\n```\n\n\n### REST API\n\nWhen you use the ``build`` or ``admin`` methods you will get back a **REST** class pointing to the Keycloak resource, keep in mind that this class don\'t check that the resource is valid, this is done to keep it flexible and to make it easy to adapt to new Keycloak REST API changes in the future. \n\n#### Usage\n\nIn order to create one you need to ``build`` method we have used before:\n\n```python\nbatman = {\n "enabled":\'true\',\n "attributes":{},\n "username":"batman",\n "firstName":"Bruce",\n "lastName":"Wayne",\n "emailVerified":""\n}\n\nusers = kc.build(\'users\', \'DC\')\n\n# Create a user called batman in DC\nstate = users.create(batman).isOk()\n```\n\n#### Methods\n\nFollowing the example above lets see the methods we have starting with the usual CRUD methods:\n\n#### create\n\nThis method ``POST`` a dictionary into any given resource:\n\n```python\nbatman = {\n "enabled":\'true\',\n "attributes":{},\n "username":"batman",\n "firstName":"Bruce",\n "lastName":"Wayne",\n "emailVerified":""\n}\n\nstate = users.create(batman).isOk()\n```\n\n- **dictionary**: Dictionary with the fields we want to POST to the server.\n\n\n\n\n#### update\n\nThis method performs a ``PUT`` on the resource.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nstate = users.update(id, batman_update).isOk()\n```\n- **id**: Id of the resource in Keycloak.\n- **dictionary**: Dictionary representing the updated fields. \n\n#### remove\nThis method sends a ``DELETE`` to the pointed resource.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nstate = users.remove(id).isOk()\n```\n- **id**: Id of the resource in Keycloak.\n- **dictionary**: Dictionary representing the updated fields. \n\n\n#### get\nSend a ``GET`` request to retrieve a specific Keycloak resource.\n\n```python\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nuser = users.get(id).response()\n```\n\n#### all\n\nReturn all objects of a particular resource type.\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\n# Create a user called batman in DC\nuser_list = users.all() #\xa0[ {id:\'xxx-yyy\', username: \'batman\', ...} ] \n```\n#### findFirst\nFinds a resource by passing an arbitrary key/value pair.\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\nusers.findFirst({"key":"username", "value": \'batman\'})\n```\n\n#### exist\nCheck if a resource matching the provided ``id`` exists:\n```Python\nusers = kc.build(\'users\', \'DC\')\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nusers.exists(id) #True\n```\n\n#### existByKV\nCheck if a resource matching the provided key/value pair, exists.\n\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\nusers.existByKV("username", \'batman\') #False\n```\n\n\n### ResponseHandler\n\nEach **CRUD** method returns a ``ResponseHandler`` class with the following methods.\n\n#### Methods\n\n\n#### response\nreturns the requests [response object](https://docs.python-requests.org/en/latest/api/#requests.Response).\n\n```Python\nusers.update(id, batman_update).response().status_code #HTTP 201\n```\n\n\n#### isOk\n\nReturn ``True`` if the request complete successfully otherwise it will raise an exception.\n\n```Python\nstate = users.update(id, batman_update).isOk() # Return True here.\n```\n\n#### verify\n\nDoes the same as ``isOk`` but it allow you to chain more methods.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\ncookies = users.update(id, batman_update).verify().response().cookies # Get cookies.\n```\n\n\n## Specialisations\n\n### Realms \n\n### KeycloakCaches \n\nThis class handles the Keycloak caches. \n\n#### Instantiation \n\n```python\n# Creates a REST API instance target the Realms API. \nrealms = kc.build(\'realms\', \'my_realm\') \n\n# Gets the cache Realms cache API. \ncaches = realms.caches(self.REALM)\n```\n\n#### clearUserCache \nThis method tells Keycloak to clear the user cache.\n\n```python\ncaches.clearUserCache()\n```\n\n\n#### clearRealmCache \nThis method tells Keycloak to clear the realm cache.\n\n```python\ncaches.clearRealmCache()\n```\n\n\n#### clearKeyCache \nThis method tells Keycloak to clear the external public key cache for clients and identity providers.\n\n```python\ncaches.clearKeyCache()\n```\n\n> For more information on how this caches works follow this [link](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_installation_and_configuration_guide/server_cache_configuration).\n\n\n### Users\n\n#### updateCredentials\n\nUpdate user credentials.\n\n```js\nuser_credentials = {\n \'temporary\': False,\n \'value\':\'12345\'\n}\n\nstate = users.updateCredentials(user_info, user_credentials).isOk() # Updated user password.\n```\nWhere:\n- **temporary**: Boolean where if ``True`` provide a temporary password just for the first login. \n- **value**: String with the password.\n\n\n#### joinGroup\n\nAdd a user into a existing [group](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/groups).\n\nFirst we need a group:\n```python\ndef createDCGroup():\n group = kc.build(\'groups\', \'heroes\')\n return group.create({"name": "DC"}).isOk()\n```\n\nThen we can join the group the following way:\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "username", "value": "batman"}\n group = {"key": "name", "value": "DC"}\n\n users.joinGroup(user, group).isOk()\n```\n\n> The API works by matching the first occurrence between the provided ``key/value`` for the two resources (User and Group), this can help in various situation for example if we want to target the user by ``uuid``.\n\n\nUsing ``uuid`` as user identifier.\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "uuid", "value": "23e4567-e89b-..."}\n group = {"key": "name", "value": "DC"}\n\n users.joinGroup(user, group).isOk()\n```\n\nOr we want to use the group ``id``:\n\n```python\n user = {"key": "uuid", "value": "23e4567-e89b-..."}\n group = {"key": "id", "value": "f8d91722-a1f0-45e..."}\n\n users.joinGroup(user, group).isOk()\n```\n> If the field criteria don\'t return a unique value, the first entry in the list will be used.\n#### leaveGroup\n\nRemove a user from a group.\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "username", "value": "batman"}\n group = {"key": "uuid", "value": "123e4567-e89b-..."}\n\n users.leaveGroup(user, group).isOk()\n\n user = {"key": "uuid", "value": "12d3-a456-4"}\n group = {"key": "id", "value": "123e4567-e89b-..."}\n\n users.leaveGroup(user, group).isOk()\n\n```\n\n> The same rules for ``key/value`` discussed above also applies here.\n\n\n### Groups\n\nTo manage the relationship between realm level [roles](keycloak.org/docs/latest/server_admin/#assigning-permissions-and-access-using-roles-and-groups) and groups, we can use the **RealmsRolesMapping**.\n\nTo get an instance of this class you need to instantiate the ``group`` resource class:\n\n```Python\ngroups = kc.build(\'groups\', \'heroes\')\n```\n\nAnd use the method ``realmRoles`` passing a valid [group dictionary](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_grouprepresentation):\n\n```python\nrealmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\n```\n\nThen we get a class with following methods:\n\n#### add\n\nAdd a list of existing roles to a group.\n\n```python\ndef makeRoles(self):\n roles = kc.build(\'roles\', self.realm)\n lvl1 = roles.create({"name": "level-1"}).isOk()\n lvl2 = roles.create({"name": "level-2"}).isOk()\n return lvl1 and lvl2\n\n\nif makeRoles():\n realmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\n realmsRoles.add(["level-1", "level-2"])\n```\n\n#### remove\nRemove a list of associated roles from a group.\n\n```python\nrealmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\nrealmsRoles.remove(["level-1", "level-2"])\n```\n\n\n## Roles \n\n\n#### composite\nIn Keycloak we can map roles to other roles, this method allow you to do just that. \n\n```python\nrole_watch = self.kc.build(\'roles\', \'my-realm\').find(\'watch\')\nadded = role_watch.add_composite(\'view\')\n```'` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'readme' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'readme' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'license' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `license = 'MIT'` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'license' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'license' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'dependencies' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `dependencies = ['requests']` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'dependencies' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'dependencies' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) HOOK STDOUT: running egg_info HOOK STDOUT: writing kcapi.egg-info/PKG-INFO HOOK STDOUT: writing dependency_links to kcapi.egg-info/dependency_links.txt HOOK STDOUT: writing requirements to kcapi.egg-info/requires.txt HOOK STDOUT: writing top-level names to kcapi.egg-info/top_level.txt HOOK STDOUT: reading manifest file 'kcapi.egg-info/SOURCES.txt' HOOK STDOUT: adding license file 'LICENSE' HOOK STDOUT: writing manifest file 'kcapi.egg-info/SOURCES.txt' Handling wheel from get_requires_for_build_wheel Requirement satisfied: wheel (installed: wheel 0.38.4) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'readme' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `readme = '# Keycloak API\n\nPython module to automate Keycloak or Red Hat Single Sign-On (RHSSO) configuration.\n\n## How To Install\n\n```sh\npip install kcapi\n```\n\n\n## Testing\n\nTo run the test you would need a Keycloak instance, you can run one locally or in the [cloud]( https://developers.redhat.com/developer-sandbox/get-started) then you just have to follow this steps: \n\n```shell script\npython3.10 -m venv .venv\nsource .venv/bin/activate\npip install requests\n\n# Setup SSO server - go to https://developers.redhat.com/developer-sandbox/get-started,\n# launch sandbox environment, +Add, select some "Red Hat Single Sign-On..." template.\nexport KC_USER=admin\nexport KC_PASSWORD=admin_password\nexport KC_REALM=myrealm # do not use master realm, it cannot be removed\nexport KC_ENDPOINT=https://my-first-sso-me-me-dev.apps.sandbox.x8i5.p1.openshiftapps.com\n\npython -m unittest\n```\n\n\n## API\n\n### OpenID\n\nThis class takes care of OpenID login using [password owner credentials](https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.3) flow.\n\n\n#### Constructor\n\n```python\nfrom rhsso import OpenID\n\noid_client = OpenID({\n "client_id": "admin-cli",\n "username": USER,\n "password": PASSWORD,\n "grant_type":"password",\n "realm" : "master"\n }, endpoint)\n```\n\n- **client_id**: Client Identifier in Keycloak.\n- **username**: Login username for the Realm.\n- **password**: Login password for the Realm.\n- **grant_type**: The grant type you want to use (usually ``password``).\n- **endpoint**: A Keycloak or RHSSO URL endpoint, something like: ``https://my_keycloak.com``. \n\n\n#### Methods\n\n##### getToken\n\nThis will initiate a session with the Keycloak server and will return a OpenID token back.\n\n```python\noid_client.getToken() #glTeDLlmmpLYoAAUMcFQqNOMjw5dA\n```\n\n##### createAdminClient\n\nThis static method should be used in order to access the master Realm in Keycloak.\n\n```python\n oidc = OpenID.createAdminClient(self.USER, self.PASSWORD)\n oidc.getToken() #glTeDLlmmpLYoAAUMcFQqNOMjw5dA\n```\n### Keycloak\n\nThis class builds all the Keycloak configuration REST resources by using REST conventions we can target the majority of Keycloak services.\n\n#### Constructor\n\n```Python\nkc = Keycloak(token, self.ENDPOINT)\n```\n\nThe constructor takes two parameters:\n\n- **token**: A token with enough priviledge to perform the desired operation.\n- **endpoint**: A Keycloak or RHSSO URL endpoint, something like: ``https://my_keycloak.com``. \n\n\n#### Methods\n\n#### build\nThis methods build a REST client (capabilities detailed below) targeting a specific Keycloak REST resource.\n\n```python\ngroups = kc.build(\'groups\', \'my_realm\')\n\n# Create a group called DC\nstate = groups.create({"name": "DC"}).isOk()\n\n```\n> In this example we build the \'groups\' API for ``my_realm`` Realm.\n\n##### Supported Resources\n\nHere is a quick list of supported resources:\n\n- **users**: [users API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_user).\n- **clients**: [client API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_client). \n- **groups**: [groups API](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/groups).\n- **roles**: [roles API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_role_for_the_realm_or_client_2)\n- **identity-provider**: [identity provider API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_get_identity_providers)\n\n\n> As long as you find a REST endpoint that follow the standard you can use this method to build a client around it, an example of this is the non well documented ``components`` endpoint.\n\n- **components**: This API allows you configure things like [user federation](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/user-storage-federation) or [Realm keys](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.2/html/server_administration_guide/admin_permissions#realm_keys).\n\n- **authentication**: Provide access to built-in and/or custom authentication flows.\n
\n\n#### admin\nSimilar to the ``build`` method but the client points to the ``master`` realm, allowing us operation such as realm creation.\n\n```python\n main_realm = kc.admin()\n\n # Creates a realm called my_realm\n main_realm.create({"enabled": "true", "id": my_realm, "realm": my_realm})\n```\n\n\n### REST API\n\nWhen you use the ``build`` or ``admin`` methods you will get back a **REST** class pointing to the Keycloak resource, keep in mind that this class don\'t check that the resource is valid, this is done to keep it flexible and to make it easy to adapt to new Keycloak REST API changes in the future. \n\n#### Usage\n\nIn order to create one you need to ``build`` method we have used before:\n\n```python\nbatman = {\n "enabled":\'true\',\n "attributes":{},\n "username":"batman",\n "firstName":"Bruce",\n "lastName":"Wayne",\n "emailVerified":""\n}\n\nusers = kc.build(\'users\', \'DC\')\n\n# Create a user called batman in DC\nstate = users.create(batman).isOk()\n```\n\n#### Methods\n\nFollowing the example above lets see the methods we have starting with the usual CRUD methods:\n\n#### create\n\nThis method ``POST`` a dictionary into any given resource:\n\n```python\nbatman = {\n "enabled":\'true\',\n "attributes":{},\n "username":"batman",\n "firstName":"Bruce",\n "lastName":"Wayne",\n "emailVerified":""\n}\n\nstate = users.create(batman).isOk()\n```\n\n- **dictionary**: Dictionary with the fields we want to POST to the server.\n\n\n\n\n#### update\n\nThis method performs a ``PUT`` on the resource.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nstate = users.update(id, batman_update).isOk()\n```\n- **id**: Id of the resource in Keycloak.\n- **dictionary**: Dictionary representing the updated fields. \n\n#### remove\nThis method sends a ``DELETE`` to the pointed resource.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nstate = users.remove(id).isOk()\n```\n- **id**: Id of the resource in Keycloak.\n- **dictionary**: Dictionary representing the updated fields. \n\n\n#### get\nSend a ``GET`` request to retrieve a specific Keycloak resource.\n\n```python\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nuser = users.get(id).response()\n```\n\n#### all\n\nReturn all objects of a particular resource type.\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\n# Create a user called batman in DC\nuser_list = users.all() #\xa0[ {id:\'xxx-yyy\', username: \'batman\', ...} ] \n```\n#### findFirst\nFinds a resource by passing an arbitrary key/value pair.\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\nusers.findFirst({"key":"username", "value": \'batman\'})\n```\n\n#### exist\nCheck if a resource matching the provided ``id`` exists:\n```Python\nusers = kc.build(\'users\', \'DC\')\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nusers.exists(id) #True\n```\n\n#### existByKV\nCheck if a resource matching the provided key/value pair, exists.\n\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\nusers.existByKV("username", \'batman\') #False\n```\n\n\n### ResponseHandler\n\nEach **CRUD** method returns a ``ResponseHandler`` class with the following methods.\n\n#### Methods\n\n\n#### response\nreturns the requests [response object](https://docs.python-requests.org/en/latest/api/#requests.Response).\n\n```Python\nusers.update(id, batman_update).response().status_code #HTTP 201\n```\n\n\n#### isOk\n\nReturn ``True`` if the request complete successfully otherwise it will raise an exception.\n\n```Python\nstate = users.update(id, batman_update).isOk() # Return True here.\n```\n\n#### verify\n\nDoes the same as ``isOk`` but it allow you to chain more methods.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\ncookies = users.update(id, batman_update).verify().response().cookies # Get cookies.\n```\n\n\n## Specialisations\n\n### Realms \n\n### KeycloakCaches \n\nThis class handles the Keycloak caches. \n\n#### Instantiation \n\n```python\n# Creates a REST API instance target the Realms API. \nrealms = kc.build(\'realms\', \'my_realm\') \n\n# Gets the cache Realms cache API. \ncaches = realms.caches(self.REALM)\n```\n\n#### clearUserCache \nThis method tells Keycloak to clear the user cache.\n\n```python\ncaches.clearUserCache()\n```\n\n\n#### clearRealmCache \nThis method tells Keycloak to clear the realm cache.\n\n```python\ncaches.clearRealmCache()\n```\n\n\n#### clearKeyCache \nThis method tells Keycloak to clear the external public key cache for clients and identity providers.\n\n```python\ncaches.clearKeyCache()\n```\n\n> For more information on how this caches works follow this [link](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_installation_and_configuration_guide/server_cache_configuration).\n\n\n### Users\n\n#### updateCredentials\n\nUpdate user credentials.\n\n```js\nuser_credentials = {\n \'temporary\': False,\n \'value\':\'12345\'\n}\n\nstate = users.updateCredentials(user_info, user_credentials).isOk() # Updated user password.\n```\nWhere:\n- **temporary**: Boolean where if ``True`` provide a temporary password just for the first login. \n- **value**: String with the password.\n\n\n#### joinGroup\n\nAdd a user into a existing [group](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/groups).\n\nFirst we need a group:\n```python\ndef createDCGroup():\n group = kc.build(\'groups\', \'heroes\')\n return group.create({"name": "DC"}).isOk()\n```\n\nThen we can join the group the following way:\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "username", "value": "batman"}\n group = {"key": "name", "value": "DC"}\n\n users.joinGroup(user, group).isOk()\n```\n\n> The API works by matching the first occurrence between the provided ``key/value`` for the two resources (User and Group), this can help in various situation for example if we want to target the user by ``uuid``.\n\n\nUsing ``uuid`` as user identifier.\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "uuid", "value": "23e4567-e89b-..."}\n group = {"key": "name", "value": "DC"}\n\n users.joinGroup(user, group).isOk()\n```\n\nOr we want to use the group ``id``:\n\n```python\n user = {"key": "uuid", "value": "23e4567-e89b-..."}\n group = {"key": "id", "value": "f8d91722-a1f0-45e..."}\n\n users.joinGroup(user, group).isOk()\n```\n> If the field criteria don\'t return a unique value, the first entry in the list will be used.\n#### leaveGroup\n\nRemove a user from a group.\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "username", "value": "batman"}\n group = {"key": "uuid", "value": "123e4567-e89b-..."}\n\n users.leaveGroup(user, group).isOk()\n\n user = {"key": "uuid", "value": "12d3-a456-4"}\n group = {"key": "id", "value": "123e4567-e89b-..."}\n\n users.leaveGroup(user, group).isOk()\n\n```\n\n> The same rules for ``key/value`` discussed above also applies here.\n\n\n### Groups\n\nTo manage the relationship between realm level [roles](keycloak.org/docs/latest/server_admin/#assigning-permissions-and-access-using-roles-and-groups) and groups, we can use the **RealmsRolesMapping**.\n\nTo get an instance of this class you need to instantiate the ``group`` resource class:\n\n```Python\ngroups = kc.build(\'groups\', \'heroes\')\n```\n\nAnd use the method ``realmRoles`` passing a valid [group dictionary](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_grouprepresentation):\n\n```python\nrealmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\n```\n\nThen we get a class with following methods:\n\n#### add\n\nAdd a list of existing roles to a group.\n\n```python\ndef makeRoles(self):\n roles = kc.build(\'roles\', self.realm)\n lvl1 = roles.create({"name": "level-1"}).isOk()\n lvl2 = roles.create({"name": "level-2"}).isOk()\n return lvl1 and lvl2\n\n\nif makeRoles():\n realmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\n realmsRoles.add(["level-1", "level-2"])\n```\n\n#### remove\nRemove a list of associated roles from a group.\n\n```python\nrealmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\nrealmsRoles.remove(["level-1", "level-2"])\n```\n\n\n## Roles \n\n\n#### composite\nIn Keycloak we can map roles to other roles, this method allow you to do just that. \n\n```python\nrole_watch = self.kc.build(\'roles\', \'my-realm\').find(\'watch\')\nadded = role_watch.add_composite(\'view\')\n```'` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'readme' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'readme' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'license' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `license = 'MIT'` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'license' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'license' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'dependencies' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `dependencies = ['requests']` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'dependencies' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'dependencies' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 985, in run_command log.info("running %s", command) Message: 'running %s' Arguments: ('dist_info',) --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/usr/lib/python3.11/site-packages/setuptools/command/dist_info.py", line 98, in run self.egg_info.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 311, in run writer(self, ep.name, os.path.join(self.egg_info, ep.name)) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 684, in write_pkg_info log.info("writing %s", filename) Message: 'writing %s' Arguments: ('kcapi.egg-info/PKG-INFO',) --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/usr/lib/python3.11/site-packages/setuptools/command/dist_info.py", line 98, in run self.egg_info.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 311, in run writer(self, ep.name, os.path.join(self.egg_info, ep.name)) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 747, in overwrite_arg write_arg(cmd, basename, filename, True) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 755, in write_arg cmd.write_or_delete_file(argname, filename, value, force) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 273, in write_or_delete_file self.write_file(what, filename, data) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 289, in write_file log.info("writing %s to %s", what, filename) Message: 'writing %s to %s' Arguments: ('dependency_links', 'kcapi.egg-info/dependency_links.txt') --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/usr/lib/python3.11/site-packages/setuptools/command/dist_info.py", line 98, in run self.egg_info.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 311, in run writer(self, ep.name, os.path.join(self.egg_info, ep.name)) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 727, in write_requirements cmd.write_or_delete_file("requirements", filename, data.getvalue()) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 273, in write_or_delete_file self.write_file(what, filename, data) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 289, in write_file log.info("writing %s to %s", what, filename) Message: 'writing %s to %s' Arguments: ('requirements', 'kcapi.egg-info/requires.txt') --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/usr/lib/python3.11/site-packages/setuptools/command/dist_info.py", line 98, in run self.egg_info.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 311, in run writer(self, ep.name, os.path.join(self.egg_info, ep.name)) File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 743, in write_toplevel_names cmd.write_file("top-level names", filename, '\n'.join(sorted(pkgs)) + '\n') File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 289, in write_file log.info("writing %s to %s", what, filename) Message: 'writing %s to %s' Arguments: ('top-level names', 'kcapi.egg-info/top_level.txt') --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/usr/lib/python3.11/site-packages/setuptools/command/dist_info.py", line 98, in run self.egg_info.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 318, in run self.find_sources() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 326, in find_sources mm.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 570, in run self.add_defaults() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 615, in add_defaults self.read_manifest() File "/usr/lib/python3.11/site-packages/setuptools/command/sdist.py", line 196, in read_manifest log.info("reading manifest file '%s'", self.manifest) Message: "reading manifest file '%s'" Arguments: ('kcapi.egg-info/SOURCES.txt',) --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/usr/lib/python3.11/site-packages/setuptools/command/dist_info.py", line 98, in run self.egg_info.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 318, in run self.find_sources() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 326, in find_sources mm.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 573, in run self.add_license_files() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 628, in add_license_files log.info("adding license file '%s'", lf) Message: "adding license file '%s'" Arguments: ('LICENSE',) --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/usr/lib/python3.11/site-packages/setuptools/command/dist_info.py", line 98, in run self.egg_info.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 318, in run self.find_sources() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 326, in find_sources mm.run() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 578, in run self.write_manifest() File "/usr/lib/python3.11/site-packages/setuptools/command/egg_info.py", line 594, in write_manifest self.execute(write_file, (self.manifest, files), msg) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 339, in execute util.execute(func, args, msg, dry_run=self.dry_run) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/util.py", line 335, in execute log.info(msg) Message: "writing manifest file 'kcapi.egg-info/SOURCES.txt'" Arguments: () --- Logging error --- Traceback (most recent call last): File "/usr/lib64/python3.11/logging/__init__.py", line 1113, in emit stream.write(msg + self.terminator) ValueError: I/O operation on closed file. Call stack: File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 550, in main(sys.argv[1:]) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 532, in main generate_requires( File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 444, in generate_requires generate_run_requirements(backend, requirements, build_wheel=build_wheel, wheeldir=wheeldir) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 354, in generate_run_requirements generate_run_requirements_hook(backend, requirements) File "/usr/lib/rpm/redhat/pyproject_buildrequires.py", line 310, in generate_run_requirements_hook dir_basename = prepare_metadata('.') File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 377, in prepare_metadata_for_build_wheel self.run_setup() File "/usr/lib/python3.11/site-packages/setuptools/build_meta.py", line 335, in run_setup exec(code, locals()) File "", line 8, in File "/usr/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup return distutils.core.setup(**attrs) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup return run_commands(dist) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands dist.run_commands() File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands self.run_command(cmd) File "/usr/lib/python3.11/site-packages/setuptools/dist.py", line 1221, in run_command super().run_command(command) File "/usr/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "/usr/lib/python3.11/site-packages/setuptools/command/dist_info.py", line 102, in run log.info("creating '{}'".format(os.path.abspath(self.dist_info_dir))) Message: "creating '/builddir/build/BUILD/kcapi-1.1.2/kcapi-1.1.2.dist-info'" Arguments: () Handling requests from hook generated metadata: Requires-Dist Requirement satisfied: requests (installed: requests 2.28.2) + rm -rfv kcapi-1.1.2.dist-info/ removed 'kcapi-1.1.2.dist-info/LICENSE' removed 'kcapi-1.1.2.dist-info/METADATA' removed 'kcapi-1.1.2.dist-info/top_level.txt' removed directory 'kcapi-1.1.2.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.5i5RZ2 + umask 022 + cd /builddir/build/BUILD + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + export CFLAGS + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + export CXXFLAGS + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FFLAGS + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' + export LDFLAGS + LT_SYS_LIBRARY_PATH=/usr/lib64: + export LT_SYS_LIBRARY_PATH + CC=gcc + export CC + CXX=g++ + export CXX + cd kcapi-1.1.2 + mkdir -p /builddir/build/BUILD/kcapi-1.1.2/.pyproject-builddir + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' + TMPDIR=/builddir/build/BUILD/kcapi-1.1.2/.pyproject-builddir + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_wheel.py /builddir/build/BUILD/kcapi-1.1.2/pyproject-wheeldir Processing /builddir/build/BUILD/kcapi-1.1.2 Preparing metadata (pyproject.toml): started Running command Preparing metadata (pyproject.toml) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'readme' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `readme = '# Keycloak API\n\nPython module to automate Keycloak or Red Hat Single Sign-On (RHSSO) configuration.\n\n## How To Install\n\n```sh\npip install kcapi\n```\n\n\n## Testing\n\nTo run the test you would need a Keycloak instance, you can run one locally or in the [cloud]( https://developers.redhat.com/developer-sandbox/get-started) then you just have to follow this steps: \n\n```shell script\npython3.10 -m venv .venv\nsource .venv/bin/activate\npip install requests\n\n# Setup SSO server - go to https://developers.redhat.com/developer-sandbox/get-started,\n# launch sandbox environment, +Add, select some "Red Hat Single Sign-On..." template.\nexport KC_USER=admin\nexport KC_PASSWORD=admin_password\nexport KC_REALM=myrealm # do not use master realm, it cannot be removed\nexport KC_ENDPOINT=https://my-first-sso-me-me-dev.apps.sandbox.x8i5.p1.openshiftapps.com\n\npython -m unittest\n```\n\n\n## API\n\n### OpenID\n\nThis class takes care of OpenID login using [password owner credentials](https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.3) flow.\n\n\n#### Constructor\n\n```python\nfrom rhsso import OpenID\n\noid_client = OpenID({\n "client_id": "admin-cli",\n "username": USER,\n "password": PASSWORD,\n "grant_type":"password",\n "realm" : "master"\n }, endpoint)\n```\n\n- **client_id**: Client Identifier in Keycloak.\n- **username**: Login username for the Realm.\n- **password**: Login password for the Realm.\n- **grant_type**: The grant type you want to use (usually ``password``).\n- **endpoint**: A Keycloak or RHSSO URL endpoint, something like: ``https://my_keycloak.com``. \n\n\n#### Methods\n\n##### getToken\n\nThis will initiate a session with the Keycloak server and will return a OpenID token back.\n\n```python\noid_client.getToken() #glTeDLlmmpLYoAAUMcFQqNOMjw5dA\n```\n\n##### createAdminClient\n\nThis static method should be used in order to access the master Realm in Keycloak.\n\n```python\n oidc = OpenID.createAdminClient(self.USER, self.PASSWORD)\n oidc.getToken() #glTeDLlmmpLYoAAUMcFQqNOMjw5dA\n```\n### Keycloak\n\nThis class builds all the Keycloak configuration REST resources by using REST conventions we can target the majority of Keycloak services.\n\n#### Constructor\n\n```Python\nkc = Keycloak(token, self.ENDPOINT)\n```\n\nThe constructor takes two parameters:\n\n- **token**: A token with enough priviledge to perform the desired operation.\n- **endpoint**: A Keycloak or RHSSO URL endpoint, something like: ``https://my_keycloak.com``. \n\n\n#### Methods\n\n#### build\nThis methods build a REST client (capabilities detailed below) targeting a specific Keycloak REST resource.\n\n```python\ngroups = kc.build(\'groups\', \'my_realm\')\n\n# Create a group called DC\nstate = groups.create({"name": "DC"}).isOk()\n\n```\n> In this example we build the \'groups\' API for ``my_realm`` Realm.\n\n##### Supported Resources\n\nHere is a quick list of supported resources:\n\n- **users**: [users API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_user).\n- **clients**: [client API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_client). \n- **groups**: [groups API](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/groups).\n- **roles**: [roles API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_role_for_the_realm_or_client_2)\n- **identity-provider**: [identity provider API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_get_identity_providers)\n\n\n> As long as you find a REST endpoint that follow the standard you can use this method to build a client around it, an example of this is the non well documented ``components`` endpoint.\n\n- **components**: This API allows you configure things like [user federation](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/user-storage-federation) or [Realm keys](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.2/html/server_administration_guide/admin_permissions#realm_keys).\n\n- **authentication**: Provide access to built-in and/or custom authentication flows.\n
\n\n#### admin\nSimilar to the ``build`` method but the client points to the ``master`` realm, allowing us operation such as realm creation.\n\n```python\n main_realm = kc.admin()\n\n # Creates a realm called my_realm\n main_realm.create({"enabled": "true", "id": my_realm, "realm": my_realm})\n```\n\n\n### REST API\n\nWhen you use the ``build`` or ``admin`` methods you will get back a **REST** class pointing to the Keycloak resource, keep in mind that this class don\'t check that the resource is valid, this is done to keep it flexible and to make it easy to adapt to new Keycloak REST API changes in the future. \n\n#### Usage\n\nIn order to create one you need to ``build`` method we have used before:\n\n```python\nbatman = {\n "enabled":\'true\',\n "attributes":{},\n "username":"batman",\n "firstName":"Bruce",\n "lastName":"Wayne",\n "emailVerified":""\n}\n\nusers = kc.build(\'users\', \'DC\')\n\n# Create a user called batman in DC\nstate = users.create(batman).isOk()\n```\n\n#### Methods\n\nFollowing the example above lets see the methods we have starting with the usual CRUD methods:\n\n#### create\n\nThis method ``POST`` a dictionary into any given resource:\n\n```python\nbatman = {\n "enabled":\'true\',\n "attributes":{},\n "username":"batman",\n "firstName":"Bruce",\n "lastName":"Wayne",\n "emailVerified":""\n}\n\nstate = users.create(batman).isOk()\n```\n\n- **dictionary**: Dictionary with the fields we want to POST to the server.\n\n\n\n\n#### update\n\nThis method performs a ``PUT`` on the resource.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nstate = users.update(id, batman_update).isOk()\n```\n- **id**: Id of the resource in Keycloak.\n- **dictionary**: Dictionary representing the updated fields. \n\n#### remove\nThis method sends a ``DELETE`` to the pointed resource.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nstate = users.remove(id).isOk()\n```\n- **id**: Id of the resource in Keycloak.\n- **dictionary**: Dictionary representing the updated fields. \n\n\n#### get\nSend a ``GET`` request to retrieve a specific Keycloak resource.\n\n```python\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nuser = users.get(id).response()\n```\n\n#### all\n\nReturn all objects of a particular resource type.\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\n# Create a user called batman in DC\nuser_list = users.all() #\xa0[ {id:\'xxx-yyy\', username: \'batman\', ...} ] \n```\n#### findFirst\nFinds a resource by passing an arbitrary key/value pair.\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\nusers.findFirst({"key":"username", "value": \'batman\'})\n```\n\n#### exist\nCheck if a resource matching the provided ``id`` exists:\n```Python\nusers = kc.build(\'users\', \'DC\')\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nusers.exists(id) #True\n```\n\n#### existByKV\nCheck if a resource matching the provided key/value pair, exists.\n\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\nusers.existByKV("username", \'batman\') #False\n```\n\n\n### ResponseHandler\n\nEach **CRUD** method returns a ``ResponseHandler`` class with the following methods.\n\n#### Methods\n\n\n#### response\nreturns the requests [response object](https://docs.python-requests.org/en/latest/api/#requests.Response).\n\n```Python\nusers.update(id, batman_update).response().status_code #HTTP 201\n```\n\n\n#### isOk\n\nReturn ``True`` if the request complete successfully otherwise it will raise an exception.\n\n```Python\nstate = users.update(id, batman_update).isOk() # Return True here.\n```\n\n#### verify\n\nDoes the same as ``isOk`` but it allow you to chain more methods.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\ncookies = users.update(id, batman_update).verify().response().cookies # Get cookies.\n```\n\n\n## Specialisations\n\n### Realms \n\n### KeycloakCaches \n\nThis class handles the Keycloak caches. \n\n#### Instantiation \n\n```python\n# Creates a REST API instance target the Realms API. \nrealms = kc.build(\'realms\', \'my_realm\') \n\n# Gets the cache Realms cache API. \ncaches = realms.caches(self.REALM)\n```\n\n#### clearUserCache \nThis method tells Keycloak to clear the user cache.\n\n```python\ncaches.clearUserCache()\n```\n\n\n#### clearRealmCache \nThis method tells Keycloak to clear the realm cache.\n\n```python\ncaches.clearRealmCache()\n```\n\n\n#### clearKeyCache \nThis method tells Keycloak to clear the external public key cache for clients and identity providers.\n\n```python\ncaches.clearKeyCache()\n```\n\n> For more information on how this caches works follow this [link](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_installation_and_configuration_guide/server_cache_configuration).\n\n\n### Users\n\n#### updateCredentials\n\nUpdate user credentials.\n\n```js\nuser_credentials = {\n \'temporary\': False,\n \'value\':\'12345\'\n}\n\nstate = users.updateCredentials(user_info, user_credentials).isOk() # Updated user password.\n```\nWhere:\n- **temporary**: Boolean where if ``True`` provide a temporary password just for the first login. \n- **value**: String with the password.\n\n\n#### joinGroup\n\nAdd a user into a existing [group](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/groups).\n\nFirst we need a group:\n```python\ndef createDCGroup():\n group = kc.build(\'groups\', \'heroes\')\n return group.create({"name": "DC"}).isOk()\n```\n\nThen we can join the group the following way:\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "username", "value": "batman"}\n group = {"key": "name", "value": "DC"}\n\n users.joinGroup(user, group).isOk()\n```\n\n> The API works by matching the first occurrence between the provided ``key/value`` for the two resources (User and Group), this can help in various situation for example if we want to target the user by ``uuid``.\n\n\nUsing ``uuid`` as user identifier.\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "uuid", "value": "23e4567-e89b-..."}\n group = {"key": "name", "value": "DC"}\n\n users.joinGroup(user, group).isOk()\n```\n\nOr we want to use the group ``id``:\n\n```python\n user = {"key": "uuid", "value": "23e4567-e89b-..."}\n group = {"key": "id", "value": "f8d91722-a1f0-45e..."}\n\n users.joinGroup(user, group).isOk()\n```\n> If the field criteria don\'t return a unique value, the first entry in the list will be used.\n#### leaveGroup\n\nRemove a user from a group.\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "username", "value": "batman"}\n group = {"key": "uuid", "value": "123e4567-e89b-..."}\n\n users.leaveGroup(user, group).isOk()\n\n user = {"key": "uuid", "value": "12d3-a456-4"}\n group = {"key": "id", "value": "123e4567-e89b-..."}\n\n users.leaveGroup(user, group).isOk()\n\n```\n\n> The same rules for ``key/value`` discussed above also applies here.\n\n\n### Groups\n\nTo manage the relationship between realm level [roles](keycloak.org/docs/latest/server_admin/#assigning-permissions-and-access-using-roles-and-groups) and groups, we can use the **RealmsRolesMapping**.\n\nTo get an instance of this class you need to instantiate the ``group`` resource class:\n\n```Python\ngroups = kc.build(\'groups\', \'heroes\')\n```\n\nAnd use the method ``realmRoles`` passing a valid [group dictionary](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_grouprepresentation):\n\n```python\nrealmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\n```\n\nThen we get a class with following methods:\n\n#### add\n\nAdd a list of existing roles to a group.\n\n```python\ndef makeRoles(self):\n roles = kc.build(\'roles\', self.realm)\n lvl1 = roles.create({"name": "level-1"}).isOk()\n lvl2 = roles.create({"name": "level-2"}).isOk()\n return lvl1 and lvl2\n\n\nif makeRoles():\n realmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\n realmsRoles.add(["level-1", "level-2"])\n```\n\n#### remove\nRemove a list of associated roles from a group.\n\n```python\nrealmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\nrealmsRoles.remove(["level-1", "level-2"])\n```\n\n\n## Roles \n\n\n#### composite\nIn Keycloak we can map roles to other roles, this method allow you to do just that. \n\n```python\nrole_watch = self.kc.build(\'roles\', \'my-realm\').find(\'watch\')\nadded = role_watch.add_composite(\'view\')\n```'` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'readme' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'readme' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'license' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `license = 'MIT'` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'license' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'license' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'dependencies' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `dependencies = ['requests']` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'dependencies' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'dependencies' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) running dist_info creating /builddir/build/BUILD/kcapi-1.1.2/.pyproject-builddir/pip-modern-metadata-p3noipnu/kcapi.egg-info writing /builddir/build/BUILD/kcapi-1.1.2/.pyproject-builddir/pip-modern-metadata-p3noipnu/kcapi.egg-info/PKG-INFO writing dependency_links to /builddir/build/BUILD/kcapi-1.1.2/.pyproject-builddir/pip-modern-metadata-p3noipnu/kcapi.egg-info/dependency_links.txt writing requirements to /builddir/build/BUILD/kcapi-1.1.2/.pyproject-builddir/pip-modern-metadata-p3noipnu/kcapi.egg-info/requires.txt writing top-level names to /builddir/build/BUILD/kcapi-1.1.2/.pyproject-builddir/pip-modern-metadata-p3noipnu/kcapi.egg-info/top_level.txt writing manifest file '/builddir/build/BUILD/kcapi-1.1.2/.pyproject-builddir/pip-modern-metadata-p3noipnu/kcapi.egg-info/SOURCES.txt' reading manifest file '/builddir/build/BUILD/kcapi-1.1.2/.pyproject-builddir/pip-modern-metadata-p3noipnu/kcapi.egg-info/SOURCES.txt' adding license file 'LICENSE' writing manifest file '/builddir/build/BUILD/kcapi-1.1.2/.pyproject-builddir/pip-modern-metadata-p3noipnu/kcapi.egg-info/SOURCES.txt' creating '/builddir/build/BUILD/kcapi-1.1.2/.pyproject-builddir/pip-modern-metadata-p3noipnu/kcapi-1.1.2.dist-info' Preparing metadata (pyproject.toml): finished with status 'done' Building wheels for collected packages: kcapi Building wheel for kcapi (pyproject.toml): started Running command Building wheel for kcapi (pyproject.toml) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'readme' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `readme = '# Keycloak API\n\nPython module to automate Keycloak or Red Hat Single Sign-On (RHSSO) configuration.\n\n## How To Install\n\n```sh\npip install kcapi\n```\n\n\n## Testing\n\nTo run the test you would need a Keycloak instance, you can run one locally or in the [cloud]( https://developers.redhat.com/developer-sandbox/get-started) then you just have to follow this steps: \n\n```shell script\npython3.10 -m venv .venv\nsource .venv/bin/activate\npip install requests\n\n# Setup SSO server - go to https://developers.redhat.com/developer-sandbox/get-started,\n# launch sandbox environment, +Add, select some "Red Hat Single Sign-On..." template.\nexport KC_USER=admin\nexport KC_PASSWORD=admin_password\nexport KC_REALM=myrealm # do not use master realm, it cannot be removed\nexport KC_ENDPOINT=https://my-first-sso-me-me-dev.apps.sandbox.x8i5.p1.openshiftapps.com\n\npython -m unittest\n```\n\n\n## API\n\n### OpenID\n\nThis class takes care of OpenID login using [password owner credentials](https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.3) flow.\n\n\n#### Constructor\n\n```python\nfrom rhsso import OpenID\n\noid_client = OpenID({\n "client_id": "admin-cli",\n "username": USER,\n "password": PASSWORD,\n "grant_type":"password",\n "realm" : "master"\n }, endpoint)\n```\n\n- **client_id**: Client Identifier in Keycloak.\n- **username**: Login username for the Realm.\n- **password**: Login password for the Realm.\n- **grant_type**: The grant type you want to use (usually ``password``).\n- **endpoint**: A Keycloak or RHSSO URL endpoint, something like: ``https://my_keycloak.com``. \n\n\n#### Methods\n\n##### getToken\n\nThis will initiate a session with the Keycloak server and will return a OpenID token back.\n\n```python\noid_client.getToken() #glTeDLlmmpLYoAAUMcFQqNOMjw5dA\n```\n\n##### createAdminClient\n\nThis static method should be used in order to access the master Realm in Keycloak.\n\n```python\n oidc = OpenID.createAdminClient(self.USER, self.PASSWORD)\n oidc.getToken() #glTeDLlmmpLYoAAUMcFQqNOMjw5dA\n```\n### Keycloak\n\nThis class builds all the Keycloak configuration REST resources by using REST conventions we can target the majority of Keycloak services.\n\n#### Constructor\n\n```Python\nkc = Keycloak(token, self.ENDPOINT)\n```\n\nThe constructor takes two parameters:\n\n- **token**: A token with enough priviledge to perform the desired operation.\n- **endpoint**: A Keycloak or RHSSO URL endpoint, something like: ``https://my_keycloak.com``. \n\n\n#### Methods\n\n#### build\nThis methods build a REST client (capabilities detailed below) targeting a specific Keycloak REST resource.\n\n```python\ngroups = kc.build(\'groups\', \'my_realm\')\n\n# Create a group called DC\nstate = groups.create({"name": "DC"}).isOk()\n\n```\n> In this example we build the \'groups\' API for ``my_realm`` Realm.\n\n##### Supported Resources\n\nHere is a quick list of supported resources:\n\n- **users**: [users API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_user).\n- **clients**: [client API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_client). \n- **groups**: [groups API](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/groups).\n- **roles**: [roles API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_create_a_new_role_for_the_realm_or_client_2)\n- **identity-provider**: [identity provider API](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_get_identity_providers)\n\n\n> As long as you find a REST endpoint that follow the standard you can use this method to build a client around it, an example of this is the non well documented ``components`` endpoint.\n\n- **components**: This API allows you configure things like [user federation](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/user-storage-federation) or [Realm keys](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.2/html/server_administration_guide/admin_permissions#realm_keys).\n\n- **authentication**: Provide access to built-in and/or custom authentication flows.\n
\n\n#### admin\nSimilar to the ``build`` method but the client points to the ``master`` realm, allowing us operation such as realm creation.\n\n```python\n main_realm = kc.admin()\n\n # Creates a realm called my_realm\n main_realm.create({"enabled": "true", "id": my_realm, "realm": my_realm})\n```\n\n\n### REST API\n\nWhen you use the ``build`` or ``admin`` methods you will get back a **REST** class pointing to the Keycloak resource, keep in mind that this class don\'t check that the resource is valid, this is done to keep it flexible and to make it easy to adapt to new Keycloak REST API changes in the future. \n\n#### Usage\n\nIn order to create one you need to ``build`` method we have used before:\n\n```python\nbatman = {\n "enabled":\'true\',\n "attributes":{},\n "username":"batman",\n "firstName":"Bruce",\n "lastName":"Wayne",\n "emailVerified":""\n}\n\nusers = kc.build(\'users\', \'DC\')\n\n# Create a user called batman in DC\nstate = users.create(batman).isOk()\n```\n\n#### Methods\n\nFollowing the example above lets see the methods we have starting with the usual CRUD methods:\n\n#### create\n\nThis method ``POST`` a dictionary into any given resource:\n\n```python\nbatman = {\n "enabled":\'true\',\n "attributes":{},\n "username":"batman",\n "firstName":"Bruce",\n "lastName":"Wayne",\n "emailVerified":""\n}\n\nstate = users.create(batman).isOk()\n```\n\n- **dictionary**: Dictionary with the fields we want to POST to the server.\n\n\n\n\n#### update\n\nThis method performs a ``PUT`` on the resource.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nstate = users.update(id, batman_update).isOk()\n```\n- **id**: Id of the resource in Keycloak.\n- **dictionary**: Dictionary representing the updated fields. \n\n#### remove\nThis method sends a ``DELETE`` to the pointed resource.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nstate = users.remove(id).isOk()\n```\n- **id**: Id of the resource in Keycloak.\n- **dictionary**: Dictionary representing the updated fields. \n\n\n#### get\nSend a ``GET`` request to retrieve a specific Keycloak resource.\n\n```python\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nuser = users.get(id).response()\n```\n\n#### all\n\nReturn all objects of a particular resource type.\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\n# Create a user called batman in DC\nuser_list = users.all() #\xa0[ {id:\'xxx-yyy\', username: \'batman\', ...} ] \n```\n#### findFirst\nFinds a resource by passing an arbitrary key/value pair.\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\nusers.findFirst({"key":"username", "value": \'batman\'})\n```\n\n#### exist\nCheck if a resource matching the provided ``id`` exists:\n```Python\nusers = kc.build(\'users\', \'DC\')\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\nusers.exists(id) #True\n```\n\n#### existByKV\nCheck if a resource matching the provided key/value pair, exists.\n\n\n```Python\nusers = kc.build(\'users\', \'DC\')\n\nusers.existByKV("username", \'batman\') #False\n```\n\n\n### ResponseHandler\n\nEach **CRUD** method returns a ``ResponseHandler`` class with the following methods.\n\n#### Methods\n\n\n#### response\nreturns the requests [response object](https://docs.python-requests.org/en/latest/api/#requests.Response).\n\n```Python\nusers.update(id, batman_update).response().status_code #HTTP 201\n```\n\n\n#### isOk\n\nReturn ``True`` if the request complete successfully otherwise it will raise an exception.\n\n```Python\nstate = users.update(id, batman_update).isOk() # Return True here.\n```\n\n#### verify\n\nDoes the same as ``isOk`` but it allow you to chain more methods.\n\n```python\nbatman_update = {\n "firstName":"Bruno",\n "emailVerified": True\n}\n\nid = \'bf81a9d9-811f-4807-bd69-3d74eecbe9f4\'\n\ncookies = users.update(id, batman_update).verify().response().cookies # Get cookies.\n```\n\n\n## Specialisations\n\n### Realms \n\n### KeycloakCaches \n\nThis class handles the Keycloak caches. \n\n#### Instantiation \n\n```python\n# Creates a REST API instance target the Realms API. \nrealms = kc.build(\'realms\', \'my_realm\') \n\n# Gets the cache Realms cache API. \ncaches = realms.caches(self.REALM)\n```\n\n#### clearUserCache \nThis method tells Keycloak to clear the user cache.\n\n```python\ncaches.clearUserCache()\n```\n\n\n#### clearRealmCache \nThis method tells Keycloak to clear the realm cache.\n\n```python\ncaches.clearRealmCache()\n```\n\n\n#### clearKeyCache \nThis method tells Keycloak to clear the external public key cache for clients and identity providers.\n\n```python\ncaches.clearKeyCache()\n```\n\n> For more information on how this caches works follow this [link](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_installation_and_configuration_guide/server_cache_configuration).\n\n\n### Users\n\n#### updateCredentials\n\nUpdate user credentials.\n\n```js\nuser_credentials = {\n \'temporary\': False,\n \'value\':\'12345\'\n}\n\nstate = users.updateCredentials(user_info, user_credentials).isOk() # Updated user password.\n```\nWhere:\n- **temporary**: Boolean where if ``True`` provide a temporary password just for the first login. \n- **value**: String with the password.\n\n\n#### joinGroup\n\nAdd a user into a existing [group](https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.0/html/server_administration_guide/groups).\n\nFirst we need a group:\n```python\ndef createDCGroup():\n group = kc.build(\'groups\', \'heroes\')\n return group.create({"name": "DC"}).isOk()\n```\n\nThen we can join the group the following way:\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "username", "value": "batman"}\n group = {"key": "name", "value": "DC"}\n\n users.joinGroup(user, group).isOk()\n```\n\n> The API works by matching the first occurrence between the provided ``key/value`` for the two resources (User and Group), this can help in various situation for example if we want to target the user by ``uuid``.\n\n\nUsing ``uuid`` as user identifier.\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "uuid", "value": "23e4567-e89b-..."}\n group = {"key": "name", "value": "DC"}\n\n users.joinGroup(user, group).isOk()\n```\n\nOr we want to use the group ``id``:\n\n```python\n user = {"key": "uuid", "value": "23e4567-e89b-..."}\n group = {"key": "id", "value": "f8d91722-a1f0-45e..."}\n\n users.joinGroup(user, group).isOk()\n```\n> If the field criteria don\'t return a unique value, the first entry in the list will be used.\n#### leaveGroup\n\nRemove a user from a group.\n\n```python\n createDCGroup()\n\n users = kc.build(\'users\', \'heroes\')\n user = {"key": "username", "value": "batman"}\n group = {"key": "uuid", "value": "123e4567-e89b-..."}\n\n users.leaveGroup(user, group).isOk()\n\n user = {"key": "uuid", "value": "12d3-a456-4"}\n group = {"key": "id", "value": "123e4567-e89b-..."}\n\n users.leaveGroup(user, group).isOk()\n\n```\n\n> The same rules for ``key/value`` discussed above also applies here.\n\n\n### Groups\n\nTo manage the relationship between realm level [roles](keycloak.org/docs/latest/server_admin/#assigning-permissions-and-access-using-roles-and-groups) and groups, we can use the **RealmsRolesMapping**.\n\nTo get an instance of this class you need to instantiate the ``group`` resource class:\n\n```Python\ngroups = kc.build(\'groups\', \'heroes\')\n```\n\nAnd use the method ``realmRoles`` passing a valid [group dictionary](https://access.redhat.com/webassets/avalon/d/red-hat-single-sign-on/version-7.0.0/restapi/#_grouprepresentation):\n\n```python\nrealmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\n```\n\nThen we get a class with following methods:\n\n#### add\n\nAdd a list of existing roles to a group.\n\n```python\ndef makeRoles(self):\n roles = kc.build(\'roles\', self.realm)\n lvl1 = roles.create({"name": "level-1"}).isOk()\n lvl2 = roles.create({"name": "level-2"}).isOk()\n return lvl1 and lvl2\n\n\nif makeRoles():\n realmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\n realmsRoles.add(["level-1", "level-2"])\n```\n\n#### remove\nRemove a list of associated roles from a group.\n\n```python\nrealmsRoles = groups.realmRoles({"key":"name", "value":\'DC\'})\nrealmsRoles.remove(["level-1", "level-2"])\n```\n\n\n## Roles \n\n\n#### composite\nIn Keycloak we can map roles to other roles, this method allow you to do just that. \n\n```python\nrole_watch = self.kc.build(\'roles\', \'my-realm\').find(\'watch\')\nadded = role_watch.add_composite(\'view\')\n```'` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'readme' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'readme' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'license' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `license = 'MIT'` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'license' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'license' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) /usr/lib/python3.11/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'dependencies' defined outside of `pyproject.toml` would be ignored. !! ########################################################################## # configuration would be ignored/result in error due to `pyproject.toml` # ########################################################################## The following seems to be defined outside of `pyproject.toml`: `dependencies = ['requests']` According to the spec (see the link below), however, setuptools CANNOT consider this value unless 'dependencies' is listed as `dynamic`. https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ For the time being, `setuptools` will still consider the given value (as a **transitional** measure), but please note that future releases of setuptools will follow strictly the standard. To prevent this warning, you can list 'dependencies' under `dynamic` or alternatively remove the `[project]` table from your file and rely entirely on other means of configuration. !! warnings.warn(msg, _WouldIgnoreField) running bdist_wheel running build running build_py creating build creating build/lib creating build/lib/kcapi copying kcapi/sso.py -> build/lib/kcapi copying kcapi/oid.py -> build/lib/kcapi copying kcapi/__init__.py -> build/lib/kcapi creating build/lib/kcapi/rest copying kcapi/rest/users.py -> build/lib/kcapi/rest copying kcapi/rest/url.py -> build/lib/kcapi/rest copying kcapi/rest/targets.py -> build/lib/kcapi/rest copying kcapi/rest/roles.py -> build/lib/kcapi/rest copying kcapi/rest/resp.py -> build/lib/kcapi/rest copying kcapi/rest/recovery.py -> build/lib/kcapi/rest copying kcapi/rest/realms.py -> build/lib/kcapi/rest copying kcapi/rest/idp.py -> build/lib/kcapi/rest copying kcapi/rest/helper.py -> build/lib/kcapi/rest copying kcapi/rest/groups.py -> build/lib/kcapi/rest copying kcapi/rest/crud.py -> build/lib/kcapi/rest copying kcapi/rest/clients.py -> build/lib/kcapi/rest copying kcapi/rest/client_scopes.py -> build/lib/kcapi/rest copying kcapi/rest/auth_flows.py -> build/lib/kcapi/rest copying kcapi/rest/__init__.py -> build/lib/kcapi/rest creating build/lib/kcapi/ie copying kcapi/ie/flows_publisher.py -> build/lib/kcapi/ie copying kcapi/ie/auth_flows.py -> build/lib/kcapi/ie copying kcapi/ie/__init__.py -> build/lib/kcapi/ie installing to build/bdist.linux-x86_64/wheel running install running install_lib creating build/bdist.linux-x86_64 creating build/bdist.linux-x86_64/wheel creating build/bdist.linux-x86_64/wheel/kcapi creating build/bdist.linux-x86_64/wheel/kcapi/ie copying build/lib/kcapi/ie/__init__.py -> build/bdist.linux-x86_64/wheel/kcapi/ie copying build/lib/kcapi/ie/auth_flows.py -> build/bdist.linux-x86_64/wheel/kcapi/ie copying build/lib/kcapi/ie/flows_publisher.py -> build/bdist.linux-x86_64/wheel/kcapi/ie creating build/bdist.linux-x86_64/wheel/kcapi/rest copying build/lib/kcapi/rest/__init__.py -> build/bdist.linux-x86_64/wheel/kcapi/rest copying build/lib/kcapi/rest/auth_flows.py -> build/bdist.linux-x86_64/wheel/kcapi/rest copying build/lib/kcapi/rest/client_scopes.py -> build/bdist.linux-x86_64/wheel/kcapi/rest copying build/lib/kcapi/rest/clients.py -> build/bdist.linux-x86_64/wheel/kcapi/rest copying build/lib/kcapi/rest/crud.py -> build/bdist.linux-x86_64/wheel/kcapi/rest copying build/lib/kcapi/rest/groups.py -> build/bdist.linux-x86_64/wheel/kcapi/rest copying build/lib/kcapi/rest/helper.py -> build/bdist.linux-x86_64/wheel/kcapi/rest copying build/lib/kcapi/rest/idp.py -> build/bdist.linux-x86_64/wheel/kcapi/rest copying build/lib/kcapi/rest/realms.py -> build/bdist.linux-x86_64/wheel/kcapi/rest copying build/lib/kcapi/rest/recovery.py -> build/bdist.linux-x86_64/wheel/kcapi/rest copying build/lib/kcapi/rest/resp.py -> build/bdist.linux-x86_64/wheel/kcapi/rest copying build/lib/kcapi/rest/roles.py -> build/bdist.linux-x86_64/wheel/kcapi/rest copying build/lib/kcapi/rest/targets.py -> build/bdist.linux-x86_64/wheel/kcapi/rest copying build/lib/kcapi/rest/url.py -> build/bdist.linux-x86_64/wheel/kcapi/rest copying build/lib/kcapi/rest/users.py -> build/bdist.linux-x86_64/wheel/kcapi/rest copying build/lib/kcapi/__init__.py -> build/bdist.linux-x86_64/wheel/kcapi copying build/lib/kcapi/oid.py -> build/bdist.linux-x86_64/wheel/kcapi copying build/lib/kcapi/sso.py -> build/bdist.linux-x86_64/wheel/kcapi running install_egg_info running egg_info writing kcapi.egg-info/PKG-INFO writing dependency_links to kcapi.egg-info/dependency_links.txt writing requirements to kcapi.egg-info/requires.txt writing top-level names to kcapi.egg-info/top_level.txt reading manifest file 'kcapi.egg-info/SOURCES.txt' adding license file 'LICENSE' writing manifest file 'kcapi.egg-info/SOURCES.txt' Copying kcapi.egg-info to build/bdist.linux-x86_64/wheel/kcapi-1.1.2-py3.11.egg-info running install_scripts creating build/bdist.linux-x86_64/wheel/kcapi-1.1.2.dist-info/WHEEL creating '/builddir/build/BUILD/kcapi-1.1.2/.pyproject-builddir/pip-wheel-xpwkb9et/.tmp-6s19spw3/kcapi-1.1.2-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it adding 'kcapi/__init__.py' adding 'kcapi/oid.py' adding 'kcapi/sso.py' adding 'kcapi/ie/__init__.py' adding 'kcapi/ie/auth_flows.py' adding 'kcapi/ie/flows_publisher.py' adding 'kcapi/rest/__init__.py' adding 'kcapi/rest/auth_flows.py' adding 'kcapi/rest/client_scopes.py' adding 'kcapi/rest/clients.py' adding 'kcapi/rest/crud.py' adding 'kcapi/rest/groups.py' adding 'kcapi/rest/helper.py' adding 'kcapi/rest/idp.py' adding 'kcapi/rest/realms.py' adding 'kcapi/rest/recovery.py' adding 'kcapi/rest/resp.py' adding 'kcapi/rest/roles.py' adding 'kcapi/rest/targets.py' adding 'kcapi/rest/url.py' adding 'kcapi/rest/users.py' adding 'kcapi-1.1.2.dist-info/LICENSE' adding 'kcapi-1.1.2.dist-info/METADATA' adding 'kcapi-1.1.2.dist-info/WHEEL' adding 'kcapi-1.1.2.dist-info/top_level.txt' adding 'kcapi-1.1.2.dist-info/RECORD' removing build/bdist.linux-x86_64/wheel Building wheel for kcapi (pyproject.toml): finished with status 'done' Created wheel for kcapi: filename=kcapi-1.1.2-py3-none-any.whl size=22278 sha256=bc4f542a5d3f72e1d5d213c9bed8d4f9af92581f62a59619116b724eec69d5ab Stored in directory: /builddir/.cache/pip/wheels/c5/34/34/0927c47f1d3bf3ec2d016dabef2719a43965021d641a228bb1 Successfully built kcapi + RPM_EC=0 ++ jobs -p + exit 0 Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.zH9bKu + umask 022 + cd /builddir/build/BUILD + '[' /builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64 '!=' / ']' + rm -rf /builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64 ++ dirname /builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64 + mkdir -p /builddir/build/BUILDROOT + mkdir /builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64 + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + export CFLAGS + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + export CXXFLAGS + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FFLAGS + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' + export LDFLAGS + LT_SYS_LIBRARY_PATH=/usr/lib64: + export LT_SYS_LIBRARY_PATH + CC=gcc + export CC + CXX=g++ + export CXX + cd kcapi-1.1.2 ++ xargs basename --multiple ++ sed -E 's/([^-]+)-([^-]+)-.+\.whl/\1==\2/' ++ ls /builddir/build/BUILD/kcapi-1.1.2/pyproject-wheeldir/kcapi-1.1.2-py3-none-any.whl + specifier=kcapi==1.1.2 + TMPDIR=/builddir/build/BUILD/kcapi-1.1.2/.pyproject-builddir + /usr/bin/python3 -m pip install --root /builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64 --prefix /usr --no-deps --disable-pip-version-check --progress-bar off --verbose --ignore-installed --no-warn-script-location --no-index --no-cache-dir --find-links /builddir/build/BUILD/kcapi-1.1.2/pyproject-wheeldir kcapi==1.1.2 Using pip 22.3.1 from /usr/lib/python3.11/site-packages/pip (python 3.11) Looking in links: /builddir/build/BUILD/kcapi-1.1.2/pyproject-wheeldir Processing ./pyproject-wheeldir/kcapi-1.1.2-py3-none-any.whl Installing collected packages: kcapi Successfully installed kcapi-1.1.2 + '[' -d /builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64/usr/bin ']' + rm -f /builddir/build/BUILD/python-kcapi-1.1.2-1.fc38.x86_64-pyproject-ghost-distinfo + site_dirs=() + '[' -d /builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64/usr/lib/python3.11/site-packages ']' + site_dirs+=("/usr/lib/python3.11/site-packages") + '[' /builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64/usr/lib64/python3.11/site-packages '!=' /builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64/usr/lib/python3.11/site-packages ']' + '[' -d /builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64/usr/lib64/python3.11/site-packages ']' + for site_dir in ${site_dirs[@]} + for distinfo in /builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64$site_dir/*.dist-info + echo '%ghost /usr/lib/python3.11/site-packages/kcapi-1.1.2.dist-info' + sed -i s/pip/rpm/ /builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64/usr/lib/python3.11/site-packages/kcapi-1.1.2.dist-info/INSTALLER + PYTHONPATH=/usr/lib/rpm/redhat + /usr/bin/python3 -B /usr/lib/rpm/redhat/pyproject_preprocess_record.py --buildroot /builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64 --record /builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64/usr/lib/python3.11/site-packages/kcapi-1.1.2.dist-info/RECORD --output /builddir/build/BUILD/python-kcapi-1.1.2-1.fc38.x86_64-pyproject-record + rm -fv /builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64/usr/lib/python3.11/site-packages/kcapi-1.1.2.dist-info/RECORD removed '/builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64/usr/lib/python3.11/site-packages/kcapi-1.1.2.dist-info/RECORD' + rm -fv /builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64/usr/lib/python3.11/site-packages/kcapi-1.1.2.dist-info/REQUESTED removed '/builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64/usr/lib/python3.11/site-packages/kcapi-1.1.2.dist-info/REQUESTED' ++ wc -l /builddir/build/BUILD/python-kcapi-1.1.2-1.fc38.x86_64-pyproject-ghost-distinfo ++ cut -f1 '-d ' + lines=1 + '[' 1 -ne 1 ']' + /usr/bin/python3 /usr/lib/rpm/redhat/pyproject_save_files.py --output-files /builddir/build/BUILD/python-kcapi-1.1.2-1.fc38.x86_64-pyproject-files --output-modules /builddir/build/BUILD/python-kcapi-1.1.2-1.fc38.x86_64-pyproject-modules --buildroot /builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64 --sitelib /usr/lib/python3.11/site-packages --sitearch /usr/lib64/python3.11/site-packages --python-version 3.11 --pyproject-record /builddir/build/BUILD/python-kcapi-1.1.2-1.fc38.x86_64-pyproject-record --prefix /usr '*' +auto + /usr/bin/find-debuginfo -j2 --strict-build-id -m -i --build-id-seed 1.1.2-1.fc38 --unique-debug-suffix -1.1.2-1.fc38.x86_64 --unique-debug-src-base python-kcapi-1.1.2-1.fc38.x86_64 --run-dwz --dwz-low-mem-die-limit 10000000 --dwz-max-die-limit 110000000 -S debugsourcefiles.list /builddir/build/BUILD/kcapi-1.1.2 find: 'debug': No such file or directory + /usr/lib/rpm/check-buildroot + /usr/lib/rpm/redhat/brp-ldconfig + /usr/lib/rpm/brp-compress + /usr/lib/rpm/redhat/brp-strip-lto /usr/bin/strip + /usr/lib/rpm/brp-strip-static-archive /usr/bin/strip + /usr/lib/rpm/check-rpaths + /usr/lib/rpm/redhat/brp-mangle-shebangs + /usr/lib/rpm/brp-remove-la-files + env /usr/lib/rpm/redhat/brp-python-bytecompile '' 1 0 -j2 Bytecompiling .py files below /builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64/usr/lib/python3.11 using python3.11 + /usr/lib/rpm/redhat/brp-python-hardlink Executing(%check): /bin/sh -e /var/tmp/rpm-tmp.GntM7y + umask 022 + cd /builddir/build/BUILD + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + export CFLAGS + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + export CXXFLAGS + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FFLAGS + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' + export LDFLAGS + LT_SYS_LIBRARY_PATH=/usr/lib64: + export LT_SYS_LIBRARY_PATH + CC=gcc + export CC + CXX=g++ + export CXX + cd kcapi-1.1.2 + '[' '!' -f /builddir/build/BUILD/python-kcapi-1.1.2-1.fc38.x86_64-pyproject-modules ']' + PATH=/builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64/usr/bin:/builddir/.local/bin:/builddir/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin + PYTHONPATH=/builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64/usr/lib64/python3.11/site-packages:/builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64/usr/lib/python3.11/site-packages + _PYTHONSITE=/builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64/usr/lib64/python3.11/site-packages:/builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64/usr/lib/python3.11/site-packages + PYTHONDONTWRITEBYTECODE=1 + /usr/bin/python3 -sP /usr/lib/rpm/redhat/import_all_modules.py -f /builddir/build/BUILD/python-kcapi-1.1.2-1.fc38.x86_64-pyproject-modules -t Check import: kcapi + RPM_EC=0 ++ jobs -p + exit 0 Processing files: python3-kcapi-1.1.2-1.fc38.noarch Provides: python-kcapi = 1.1.2-1.fc38 python3-kcapi = 1.1.2-1.fc38 python3.11-kcapi = 1.1.2-1.fc38 python3.11dist(kcapi) = 1.1.2 python3dist(kcapi) = 1.1.2 Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PartialHardlinkSets) <= 4.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Requires: python(abi) = 3.11 python3.11dist(requests) Checking for unpackaged file(s): /usr/lib/rpm/check-files /builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64 Wrote: /builddir/build/SRPMS/python-kcapi-1.1.2-1.fc38.src.rpm Wrote: /builddir/build/RPMS/python3-kcapi-1.1.2-1.fc38.noarch.rpm Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.okIudY + umask 022 + cd /builddir/build/BUILD + cd kcapi-1.1.2 + /usr/bin/rm -rf /builddir/build/BUILDROOT/python-kcapi-1.1.2-1.fc38.x86_64 + RPM_EC=0 ++ jobs -p + exit 0 Executing(rmbuild): /bin/sh -e /var/tmp/rpm-tmp.WIBsJ3 + umask 022 + cd /builddir/build/BUILD + rm -rf kcapi-1.1.2 kcapi-1.1.2.gemspec + RPM_EC=0 ++ jobs -p + exit 0 Finish: rpmbuild python-kcapi-1.1.2-1.fc38.src.rpm Finish: build phase for python-kcapi-1.1.2-1.fc38.src.rpm INFO: chroot_scan: 3 files copied to /var/lib/copr-rpmbuild/results/chroot_scan INFO: /var/lib/mock/fedora-38-x86_64-1680034723.105560/root/var/log/dnf.rpm.log /var/lib/mock/fedora-38-x86_64-1680034723.105560/root/var/log/dnf.librepo.log /var/lib/mock/fedora-38-x86_64-1680034723.105560/root/var/log/dnf.log INFO: Done(/var/lib/copr-rpmbuild/results/python-kcapi-1.1.2-1.fc38.src.rpm) Config(child) 0 minutes 22 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