Warning: Permanently added '54.80.64.235' (ED25519) to the list of known hosts. You can reproduce this build on your computer by running: sudo dnf install copr-rpmbuild /usr/bin/copr-rpmbuild --verbose --drop-resultdir --task-url https://copr.fedorainfracloud.org/backend/get-build-task/11090477-fedora-43-aarch64 --chroot fedora-43-aarch64 Version: 1.10 PID: 11876 Logging PID: 11878 Task: {'allow_user_ssh': False, 'appstream': False, 'background': False, 'build_id': 11090477, 'buildroot_pkgs': [], 'chroot': 'fedora-43-aarch64', 'enable_net': True, 'fedora_review': False, 'git_hash': '3a6c57e26193ac4d01744e205660b82d904f8a7c', 'git_repo': 'https://copr-dist-git.fedorainfracloud.org/git/renich/lavinmq/lavinmq', 'isolation': 'default', 'memory_reqs': 2048, 'package_name': 'lavinmq', 'package_version': '2.10.2-1', 'project_dirname': 'lavinmq', 'project_name': 'lavinmq', 'project_owner': 'renich', 'repo_priority': None, 'repos': [{'baseurl': 'https://download.copr.fedorainfracloud.org/results/renich/lavinmq/fedora-43-aarch64/', 'id': 'copr_base', 'name': 'Copr repository', 'priority': None, 'repo_gpgcheck': False}, {'baseurl': 'https://download.copr.fedorainfracloud.org/results/zawertun/crystal/fedora-43-aarch64/', 'id': 'https_download_copr_fedorainfracloud_org_results_zawertun_crystal_fedora_43_aarch64', 'name': 'Additional repo ' 'https_download_copr_fedorainfracloud_org_results_zawertun_crystal_fedora_43_aarch64'}], 'sandbox': 'renich/lavinmq--renich', 'source_json': {}, 'source_type': None, 'ssh_public_keys': None, 'storage': 0, 'submitter': 'renich', 'tags': [], 'task_id': '11090477-fedora-43-aarch64', 'timeout': 18000, 'uses_devel_repo': False, 'with_opts': [], 'without_opts': []} Running: git clone https://copr-dist-git.fedorainfracloud.org/git/renich/lavinmq/lavinmq /var/lib/copr-rpmbuild/workspace/workdir-2l1_7ls8/lavinmq --depth 500 --no-single-branch --recursive cmd: ['git', 'clone', 'https://copr-dist-git.fedorainfracloud.org/git/renich/lavinmq/lavinmq', '/var/lib/copr-rpmbuild/workspace/workdir-2l1_7ls8/lavinmq', '--depth', '500', '--no-single-branch', '--recursive'] cwd: . rc: 0 stdout: stderr: Cloning into '/var/lib/copr-rpmbuild/workspace/workdir-2l1_7ls8/lavinmq'... Running: git checkout 3a6c57e26193ac4d01744e205660b82d904f8a7c -- cmd: ['git', 'checkout', '3a6c57e26193ac4d01744e205660b82d904f8a7c', '--'] cwd: /var/lib/copr-rpmbuild/workspace/workdir-2l1_7ls8/lavinmq rc: 0 stdout: stderr: Note: switching to '3a6c57e26193ac4d01744e205660b82d904f8a7c'. 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 3a6c57e automatic import of lavinmq Running: dist-git-client sources cmd: ['dist-git-client', 'sources'] cwd: /var/lib/copr-rpmbuild/workspace/workdir-2l1_7ls8/lavinmq 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 chart.js-4.0.1.tgz INFO: Reading stdout from command: curl --help all INFO: Calling: curl -H Pragma: -H 'Accept-Encoding: identity' -o chart.js-4.0.1.tgz --location --connect-timeout 60 --retry 3 --retry-delay 10 --remote-time --show-error --fail --retry-all-errors https://copr-dist-git.fedorainfracloud.org/repo/pkgs/renich/lavinmq/lavinmq/chart.js-4.0.1.tgz/md5/c697e04e35b6ca245ca0c11a7e1dec55/chart.js-4.0.1.tgz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 774.6k 100 774.6k 0 0 52.68M 0 0 INFO: Reading stdout from command: md5sum chart.js-4.0.1.tgz INFO: Downloading lavinmq-2.10.2.tar.gz INFO: Calling: curl -H Pragma: -H 'Accept-Encoding: identity' -o lavinmq-2.10.2.tar.gz --location --connect-timeout 60 --retry 3 --retry-delay 10 --remote-time --show-error --fail --retry-all-errors https://copr-dist-git.fedorainfracloud.org/repo/pkgs/renich/lavinmq/lavinmq/lavinmq-2.10.2.tar.gz/md5/fad1e59c2aa7c78d02223431ff098019/lavinmq-2.10.2.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current tail: /var/lib/copr-rpmbuild/main.log: file truncated Dload Upload Total Spent Left Speed 100 1.46M 100 1.46M 0 0 95.40M 0 0 INFO: Reading stdout from command: md5sum lavinmq-2.10.2.tar.gz Running (timeout=18000): unbuffer mock --spec /var/lib/copr-rpmbuild/workspace/workdir-2l1_7ls8/lavinmq/lavinmq.spec --sources /var/lib/copr-rpmbuild/workspace/workdir-2l1_7ls8/lavinmq --resultdir /var/lib/copr-rpmbuild/results --uniqueext 1791398091.957105 -r /var/lib/copr-rpmbuild/results/configs/child.cfg INFO: mock.py version 6.9 starting (python version = 3.14.5, NVR = mock-6.9-1.fc44), args: /usr/libexec/mock/mock --spec /var/lib/copr-rpmbuild/workspace/workdir-2l1_7ls8/lavinmq/lavinmq.spec --sources /var/lib/copr-rpmbuild/workspace/workdir-2l1_7ls8/lavinmq --resultdir /var/lib/copr-rpmbuild/results --uniqueext 1791398091.957105 -r /var/lib/copr-rpmbuild/results/configs/child.cfg Start(bootstrap): init plugins INFO: tmpfs initialized INFO: selinux enabled INFO: chroot_scan: initialized INFO: compress_logs: initialized Finish(bootstrap): init plugins Start: init plugins INFO: tmpfs initialized INFO: selinux enabled INFO: chroot_scan: initialized INFO: compress_logs: initialized Finish: init plugins INFO: Signal handler active Start: run INFO: Start(/var/lib/copr-rpmbuild/workspace/workdir-2l1_7ls8/lavinmq/lavinmq.spec) Config(fedora-43-aarch64) Start: clean chroot Finish: clean chroot Mock Version: 6.9 INFO: Mock Version: 6.9 Start(bootstrap): chroot init INFO: mounting tmpfs at /var/lib/mock/fedora-43-aarch64-bootstrap-1791398091.957105/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: Guessed host environment type: unknown INFO: Using container image: registry.fedoraproject.org/fedora:43 INFO: Pulling image: registry.fedoraproject.org/fedora:43 INFO: Tagging container image as mock-bootstrap-feb23f37-79fd-4689-8270-91baa5967688 INFO: Checking that fdbd9f90103b0a4d487d65b5cfc8c030afde0eb231e492988206e88f2ca50442 image matches host's architecture INFO: Copy content of container fdbd9f90103b0a4d487d65b5cfc8c030afde0eb231e492988206e88f2ca50442 to /var/lib/mock/fedora-43-aarch64-bootstrap-1791398091.957105/root INFO: mounting fdbd9f90103b0a4d487d65b5cfc8c030afde0eb231e492988206e88f2ca50442 with podman image mount INFO: image fdbd9f90103b0a4d487d65b5cfc8c030afde0eb231e492988206e88f2ca50442 as /var/lib/containers/storage/overlay/1f844f338f76e7b4946a0c11b721d6e36a09a30be8c0cd9022e174ded4b226b2/merged INFO: umounting image fdbd9f90103b0a4d487d65b5cfc8c030afde0eb231e492988206e88f2ca50442 (/var/lib/containers/storage/overlay/1f844f338f76e7b4946a0c11b721d6e36a09a30be8c0cd9022e174ded4b226b2/merged) with podman image umount INFO: Removing image mock-bootstrap-feb23f37-79fd-4689-8270-91baa5967688 INFO: Package manager dnf5 detected and used (fallback) INFO: Not updating bootstrap chroot, bootstrap_image_ready=True 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-43-aarch64-1791398091.957105/root. INFO: calling preinit hooks INFO: enabled root cache INFO: enabled package manager cache Start: cleaning package manager metadata Finish: cleaning package manager metadata INFO: enabled HW Info plugin INFO: Package manager dnf5 detected and used (direct choice) INFO: Buildroot is handled by package management downloaded with a bootstrap image: rpm-6.0.2-1.fc43.aarch64 rpm-sequoia-1.10.3-1.fc43.aarch64 dnf5-5.2.18.0-5.fc43.aarch64 dnf5-plugins-5.2.18.0-5.fc43.aarch64 Start: installing minimal buildroot with dnf5 Updating and loading repositories: Additional repo https_download_copr_fe 100% | 51.5 KiB/s | 4.2 KiB | 00m00s Copr repository 100% | 12.4 KiB/s | 4.7 KiB | 00m00s updates 100% | 15.0 MiB/s | 11.8 MiB | 00m01s fedora 100% | 30.4 MiB/s | 34.5 MiB | 00m01s Repositories loaded. Package Arch Version Repository Size Installing group/module packages: bash aarch64 5.3.0-2.fc43 fedora 8.4 MiB bzip2 aarch64 1.0.8-21.fc43 fedora 171.3 KiB coreutils aarch64 9.7-10.fc43 updates 8.1 MiB cpio aarch64 2.15-6.fc43 fedora 1.1 MiB diffutils aarch64 3.12-3.fc43 fedora 1.6 MiB fedora-release-common noarch 43-27 updates 20.6 KiB findutils aarch64 1:4.10.0-6.fc43 fedora 1.9 MiB gawk aarch64 5.3.2-2.fc43 fedora 2.6 MiB glibc-minimal-langpack aarch64 2.42-17.fc43 updates 0.0 B grep aarch64 3.12-2.fc43 fedora 1.0 MiB gzip aarch64 1.13-4.fc43 fedora 424.7 KiB info aarch64 7.2-7.fc43 updates 421.6 KiB patch aarch64 2.8-2.fc43 fedora 262.5 KiB redhat-rpm-config noarch 343-14.fc43 updates 182.9 KiB rpm-build aarch64 6.0.2-1.fc43 updates 598.1 KiB sed aarch64 4.9-5.fc43 fedora 873.2 KiB shadow-utils aarch64 2:4.18.0-3.fc43 fedora 4.4 MiB tar aarch64 2:1.35-6.fc43 fedora 3.0 MiB unzip aarch64 6.0-67.fc43 fedora 470.2 KiB util-linux aarch64 2.41.5-1.fc43 updates 6.8 MiB which aarch64 2.23-3.fc43 fedora 123.4 KiB xz aarch64 1:5.8.1-4.fc43 updates 1.4 MiB Installing dependencies: add-determinism aarch64 0.6.0-3.fc43 updates 2.0 MiB alternatives aarch64 1.33-3.fc43 updates 90.2 KiB ansible-srpm-macros noarch 1-18.1.fc43 fedora 35.7 KiB audit-libs aarch64 4.2.1-1.fc43 updates 486.5 KiB binutils aarch64 2.45.1-5.fc43 updates 31.0 MiB build-reproducibility-srpm-macros noarch 0.6.0-3.fc43 updates 735.0 B bzip2-libs aarch64 1.0.8-21.fc43 fedora 72.6 KiB ca-certificates noarch 2026.2.90_v9.0.317-1.fc43 updates 2.7 MiB cmake-srpm-macros noarch 3.31.11-1.fc43 updates 524.0 B coreutils-common aarch64 9.7-10.fc43 updates 11.3 MiB crypto-policies noarch 20251125-1.git63291f8.fc43 updates 147.1 KiB curl aarch64 8.15.0-10.fc43 updates 457.5 KiB cyrus-sasl-lib aarch64 2.1.28-33.fc43 fedora 2.4 MiB debugedit aarch64 5.2-3.fc43 fedora 317.9 KiB dwz aarch64 0.16-2.fc43 fedora 322.6 KiB ed aarch64 1.22.2-1.fc43 fedora 156.0 KiB efi-srpm-macros noarch 6-4.fc43 fedora 40.1 KiB elfutils aarch64 0.196-1.fc43 updates 3.8 MiB elfutils-debuginfod-client aarch64 0.196-1.fc43 updates 143.8 KiB elfutils-default-yama-scope noarch 0.196-1.fc43 updates 1.8 KiB elfutils-libelf aarch64 0.196-1.fc43 updates 1.5 MiB elfutils-libs aarch64 0.196-1.fc43 updates 746.6 KiB fedora-gpg-keys noarch 43-2 updates 259.0 KiB fedora-release noarch 43-27 updates 0.0 B fedora-release-identity-basic noarch 43-27 updates 631.0 B fedora-repos noarch 43-2 updates 4.9 KiB file aarch64 5.46-9.fc43 updates 140.2 KiB file-libs aarch64 5.46-9.fc43 updates 11.9 MiB filesystem aarch64 3.18-50.fc43 fedora 112.0 B filesystem-srpm-macros noarch 3.18-50.fc43 fedora 38.2 KiB fonts-srpm-macros noarch 1:2.0.5-23.fc43 fedora 55.8 KiB forge-srpm-macros noarch 0.4.0-3.fc43 fedora 38.9 KiB fpc-srpm-macros noarch 1.3-15.fc43 fedora 144.0 B gap-srpm-macros noarch 2-1.fc43 fedora 2.1 KiB gdb-minimal aarch64 17.2-2.fc43 updates 13.4 MiB gdbm-libs aarch64 1:1.23-10.fc43 fedora 233.9 KiB ghc-srpm-macros noarch 1.9.2-3.fc43 fedora 779.0 B glibc aarch64 2.42-17.fc43 updates 6.3 MiB glibc-common aarch64 2.42-17.fc43 updates 1.3 MiB glibc-gconv-extra aarch64 2.42-17.fc43 updates 18.5 MiB gmp aarch64 1:6.3.0-4.fc43 fedora 657.9 KiB gnat-srpm-macros noarch 7-1.fc43 updates 1.0 KiB gnome-srpm-macros noarch 1.0-1.fc43 updates 3.5 KiB gnulib-l10n noarch 20241231-1.fc43 fedora 655.0 KiB gnupg2 aarch64 2.4.9-5.fc43 updates 6.5 MiB gnupg2-dirmngr aarch64 2.4.9-5.fc43 updates 646.4 KiB gnupg2-gpg-agent aarch64 2.4.9-5.fc43 updates 847.3 KiB gnupg2-gpgconf aarch64 2.4.9-5.fc43 updates 321.9 KiB gnupg2-keyboxd aarch64 2.4.9-5.fc43 updates 233.3 KiB gnupg2-verify aarch64 2.4.9-5.fc43 updates 364.4 KiB gnutls aarch64 3.8.13-1.fc43 updates 3.7 MiB go-srpm-macros noarch 3.8.0-1.fc43 fedora 61.9 KiB gpgverify noarch 2.2-3.fc43 fedora 8.7 KiB ima-evm-utils-libs aarch64 1.6.2-6.fc43 fedora 92.7 KiB jansson aarch64 2.14-3.fc43 fedora 93.1 KiB java-srpm-macros noarch 1-7.fc43 fedora 870.0 B json-c aarch64 0.18-7.fc43 fedora 138.7 KiB kernel-srpm-macros noarch 1.0-27.fc43 fedora 1.9 KiB keyutils-libs aarch64 1.6.3-6.fc43 fedora 98.3 KiB krb5-libs aarch64 1.22.2-4.fc43 updates 2.5 MiB libacl aarch64 2.4.0-1.fc43 updates 67.9 KiB libarchive aarch64 3.8.4-1.fc43 updates 975.3 KiB libassuan aarch64 2.5.7-4.fc43 fedora 215.8 KiB libattr aarch64 2.6.0-1.fc43 updates 68.3 KiB libblkid aarch64 2.41.5-1.fc43 updates 290.4 KiB libbrotli aarch64 1.2.0-1.fc43 updates 909.5 KiB libcap aarch64 2.76-4.fc43 updates 508.8 KiB libcap-ng aarch64 0.9.6-1.fc43 updates 160.8 KiB libcom_err aarch64 1.47.3-2.fc43 fedora 111.2 KiB libcurl aarch64 8.15.0-10.fc43 updates 915.0 KiB libeconf aarch64 0.7.9-2.fc43 fedora 81.0 KiB libevent aarch64 2.1.13-1.fc43 updates 1.1 MiB libfdisk aarch64 2.41.5-1.fc43 updates 418.8 KiB libffi aarch64 3.5.2-1.fc43 updates 155.9 KiB libfsverity aarch64 1.6-3.fc43 fedora 68.5 KiB libgcc aarch64 15.3.1-1.fc43 updates 222.2 KiB libgcrypt aarch64 1.11.1-4.fc43 updates 1.2 MiB libgomp aarch64 15.3.1-1.fc43 updates 517.3 KiB libgpg-error aarch64 1.55-2.fc43 fedora 971.3 KiB libidn2 aarch64 2.3.8-2.fc43 fedora 560.6 KiB libksba aarch64 1.6.7-4.fc43 fedora 398.4 KiB liblastlog2 aarch64 2.41.5-1.fc43 updates 137.7 KiB libmount aarch64 2.41.5-1.fc43 updates 420.1 KiB libnghttp2 aarch64 1.66.0-3.fc43 updates 197.8 KiB libpfm aarch64 4.13.0-20.fc43 updates 251.9 KiB libpkgconf aarch64 2.3.0-3.fc43 fedora 134.0 KiB libpsl aarch64 0.21.5-6.fc43 fedora 132.5 KiB libselinux aarch64 3.9-5.fc43 fedora 201.1 KiB libsemanage aarch64 3.9-4.fc43 fedora 360.2 KiB libsepol aarch64 3.9-2.fc43 fedora 809.8 KiB libsmartcols aarch64 2.41.5-1.fc43 updates 224.4 KiB libssh aarch64 0.11.5-1.fc43 updates 588.9 KiB libssh-config noarch 0.11.5-1.fc43 updates 277.0 B libstdc++ aarch64 15.3.1-1.fc43 updates 2.8 MiB libtasn1 aarch64 4.21.0-1.fc43 updates 220.8 KiB libtool-ltdl aarch64 2.5.4-8.fc43 updates 94.0 KiB libunistring aarch64 1.1-10.fc43 fedora 1.7 MiB libusb1 aarch64 1.0.30-1.fc43 updates 179.6 KiB libuuid aarch64 2.41.5-1.fc43 updates 69.3 KiB libverto aarch64 0.3.2-11.fc43 fedora 69.4 KiB libxcrypt aarch64 4.5.2-1.fc43 updates 273.4 KiB libxml2 aarch64 2.12.10-5.fc43 fedora 1.9 MiB libzstd aarch64 1.5.7-2.fc43 fedora 667.7 KiB lua-libs aarch64 5.4.8-4.fc43 updates 329.9 KiB lua-srpm-macros noarch 1-16.fc43 fedora 1.3 KiB lz4-libs aarch64 1.10.0-3.fc43 fedora 197.4 KiB mpfr aarch64 4.2.2-2.fc43 fedora 755.5 KiB ncurses-base noarch 6.5-7.20250614.fc43 fedora 328.1 KiB ncurses-libs aarch64 6.5-7.20250614.fc43 fedora 1.2 MiB nettle aarch64 3.10.1-2.fc43 fedora 765.3 KiB npth aarch64 1.8-3.fc43 fedora 93.5 KiB ocaml-srpm-macros noarch 11-2.fc43 fedora 1.9 KiB openblas-srpm-macros noarch 2-20.fc43 fedora 112.0 B openldap aarch64 2.6.14-1.fc43 updates 764.8 KiB openssl-libs aarch64 1:3.5.8-1.fc43 updates 7.4 MiB p11-kit aarch64 0.26.5-1.fc43 updates 2.7 MiB p11-kit-trust aarch64 0.26.5-1.fc43 updates 530.1 KiB package-notes-srpm-macros noarch 0.20-1.fc43 updates 1.6 KiB pam-libs aarch64 1.7.1-5.fc43 updates 222.5 KiB pcre2 aarch64 10.47-1.fc43 updates 714.5 KiB pcre2-syntax noarch 10.47-1.fc43 updates 281.9 KiB perl-srpm-macros noarch 1-60.fc43 fedora 861.0 B pkgconf aarch64 2.3.0-3.fc43 fedora 112.4 KiB pkgconf-m4 noarch 2.3.0-3.fc43 fedora 14.4 KiB pkgconf-pkg-config aarch64 2.3.0-3.fc43 fedora 990.0 B popt aarch64 1.19-9.fc43 fedora 144.8 KiB publicsuffix-list-dafsa noarch 20260116-1.fc43 updates 70.4 KiB pyproject-srpm-macros noarch 1.23.2-1.fc43 updates 3.4 KiB python-srpm-macros noarch 3.14-5.fc43 fedora 51.5 KiB qt5-srpm-macros noarch 5.15.18-1.fc43 updates 500.0 B qt6-srpm-macros noarch 6.10.3-1.fc43 updates 472.0 B readline aarch64 8.3-2.fc43 fedora 563.8 KiB rpm aarch64 6.0.2-1.fc43 updates 3.4 MiB rpm-build-libs aarch64 6.0.2-1.fc43 updates 264.0 KiB rpm-libs aarch64 6.0.2-1.fc43 updates 995.3 KiB rpm-sequoia aarch64 1.10.3-1.fc43 updates 2.3 MiB rpm-sign-libs aarch64 6.0.2-1.fc43 updates 67.6 KiB rust-srpm-macros noarch 28.5-1.fc43 updates 5.5 KiB setup noarch 2.15.0-26.fc43 fedora 725.0 KiB sqlite-libs aarch64 3.50.2-3.fc43 updates 1.5 MiB systemd-libs aarch64 258.11-1.fc43 updates 2.5 MiB systemd-standalone-sysusers aarch64 258.11-1.fc43 updates 329.5 KiB tpm2-tss aarch64 4.1.3-8.fc43 fedora 2.1 MiB tree-sitter-srpm-macros noarch 0.4.2-1.fc43 fedora 8.3 KiB util-linux-core aarch64 2.41.5-1.fc43 updates 2.4 MiB xxhash-libs aarch64 0.8.4-1.fc43 updates 85.7 KiB xz-libs aarch64 1:5.8.1-4.fc43 updates 201.6 KiB zig-srpm-macros noarch 1-5.fc43 fedora 1.1 KiB zip aarch64 3.0-44.fc43 fedora 762.5 KiB zlib-ng-compat aarch64 2.3.3-2.fc43 updates 133.5 KiB zstd aarch64 1.5.7-2.fc43 fedora 1.5 MiB Installing groups: Buildsystem building group Transaction Summary: Installing: 173 packages Total size of inbound packages is 58 MiB. Need to download 58 MiB. After this operation, 228 MiB extra will be used (install 228 MiB, remove 0 B). [ 1/173] bzip2-0:1.0.8-21.fc43.aarch64 100% | 3.6 MiB/s | 51.6 KiB | 00m00s [ 2/173] cpio-0:2.15-6.fc43.aarch64 100% | 16.6 MiB/s | 289.6 KiB | 00m00s [ 3/173] bash-0:5.3.0-2.fc43.aarch64 100% | 68.1 MiB/s | 1.8 MiB | 00m00s [ 4/173] diffutils-0:3.12-3.fc43.aarch 100% | 29.3 MiB/s | 389.7 KiB | 00m00s [ 5/173] findutils-1:4.10.0-6.fc43.aar 100% | 49.1 MiB/s | 552.7 KiB | 00m00s [ 6/173] gawk-0:5.3.2-2.fc43.aarch64 100% | 123.7 MiB/s | 1.1 MiB | 00m00s [ 7/173] grep-0:3.12-2.fc43.aarch64 100% | 28.9 MiB/s | 296.2 KiB | 00m00s [ 8/173] gzip-0:1.13-4.fc43.aarch64 100% | 18.2 MiB/s | 167.6 KiB | 00m00s [ 9/173] patch-0:2.8-2.fc43.aarch64 100% | 21.8 MiB/s | 111.6 KiB | 00m00s [ 10/173] sed-0:4.9-5.fc43.aarch64 100% | 76.7 MiB/s | 314.4 KiB | 00m00s [ 11/173] shadow-utils-2:4.18.0-3.fc43. 100% | 159.9 MiB/s | 1.3 MiB | 00m00s [ 12/173] tar-2:1.35-6.fc43.aarch64 100% | 83.1 MiB/s | 850.8 KiB | 00m00s [ 13/173] which-0:2.23-3.fc43.aarch64 100% | 6.7 MiB/s | 41.4 KiB | 00m00s [ 14/173] unzip-0:6.0-67.fc43.aarch64 100% | 15.1 MiB/s | 185.4 KiB | 00m00s [ 15/173] fedora-release-common-0:43-27 100% | 5.5 MiB/s | 22.6 KiB | 00m00s [ 16/173] coreutils-0:9.7-10.fc43.aarch 100% | 136.7 MiB/s | 1.1 MiB | 00m00s [ 17/173] glibc-minimal-langpack-0:2.42 100% | 7.7 MiB/s | 47.1 KiB | 00m00s [ 18/173] info-0:7.2-7.fc43.aarch64 100% | 35.0 MiB/s | 179.2 KiB | 00m00s [ 19/173] redhat-rpm-config-0:343-14.fc 100% | 12.4 MiB/s | 76.1 KiB | 00m00s [ 20/173] rpm-build-0:6.0.2-1.fc43.aarc 100% | 18.1 MiB/s | 129.9 KiB | 00m00s [ 21/173] util-linux-0:2.41.5-1.fc43.aa 100% | 107.4 MiB/s | 1.2 MiB | 00m00s [ 22/173] xz-1:5.8.1-4.fc43.aarch64 100% | 62.2 MiB/s | 573.5 KiB | 00m00s [ 23/173] filesystem-0:3.18-50.fc43.aar 100% | 102.6 MiB/s | 1.3 MiB | 00m00s [ 24/173] ncurses-libs-0:6.5-7.20250614 100% | 28.8 MiB/s | 324.6 KiB | 00m00s [ 25/173] libselinux-0:3.9-5.fc43.aarch 100% | 18.9 MiB/s | 96.6 KiB | 00m00s [ 26/173] bzip2-libs-0:1.0.8-21.fc43.aa 100% | 4.4 MiB/s | 40.9 KiB | 00m00s [ 27/173] gmp-1:6.3.0-4.fc43.aarch64 100% | 66.2 MiB/s | 271.3 KiB | 00m00s [ 28/173] mpfr-0:4.2.2-2.fc43.aarch64 100% | 62.9 MiB/s | 322.0 KiB | 00m00s [ 29/173] ed-0:1.22.2-1.fc43.aarch64 100% | 20.3 MiB/s | 83.1 KiB | 00m00s [ 30/173] libeconf-0:0.7.9-2.fc43.aarch 100% | 6.9 MiB/s | 35.2 KiB | 00m00s [ 31/173] libsemanage-0:3.9-4.fc43.aarc 100% | 29.2 MiB/s | 119.5 KiB | 00m00s [ 32/173] readline-0:8.3-2.fc43.aarch64 100% | 14.4 MiB/s | 221.8 KiB | 00m00s [ 33/173] setup-0:2.15.0-26.fc43.noarch 100% | 19.2 MiB/s | 157.3 KiB | 00m00s [ 34/173] coreutils-common-0:9.7-10.fc4 100% | 123.5 MiB/s | 2.1 MiB | 00m00s [ 35/173] glibc-common-0:2.42-17.fc43.a 100% | 28.6 MiB/s | 322.1 KiB | 00m00s [ 36/173] glibc-0:2.42-17.fc43.aarch64 100% | 86.9 MiB/s | 1.8 MiB | 00m00s [ 37/173] cmake-srpm-macros-0:3.31.11-1 100% | 1.4 MiB/s | 9.9 KiB | 00m00s [ 38/173] gnome-srpm-macros-0:1.0-1.fc4 100% | 1.4 MiB/s | 8.6 KiB | 00m00s [ 39/173] ansible-srpm-macros-0:1-18.1. 100% | 9.7 MiB/s | 19.9 KiB | 00m00s [ 40/173] efi-srpm-macros-0:6-4.fc43.no 100% | 10.9 MiB/s | 22.4 KiB | 00m00s [ 41/173] dwz-0:0.16-2.fc43.aarch64 100% | 32.3 MiB/s | 132.2 KiB | 00m00s [ 42/173] fonts-srpm-macros-1:2.0.5-23. 100% | 5.3 MiB/s | 27.2 KiB | 00m00s [ 43/173] filesystem-srpm-macros-0:3.18 100% | 4.3 MiB/s | 26.4 KiB | 00m00s [ 44/173] forge-srpm-macros-0:0.4.0-3.f 100% | 4.9 MiB/s | 20.1 KiB | 00m00s [ 45/173] fpc-srpm-macros-0:1.3-15.fc43 100% | 3.9 MiB/s | 7.9 KiB | 00m00s [ 46/173] gap-srpm-macros-0:2-1.fc43.no 100% | 1.8 MiB/s | 9.0 KiB | 00m00s [ 47/173] ghc-srpm-macros-0:1.9.2-3.fc4 100% | 1.4 MiB/s | 8.7 KiB | 00m00s [ 48/173] go-srpm-macros-0:3.8.0-1.fc43 100% | 6.9 MiB/s | 28.3 KiB | 00m00s [ 49/173] java-srpm-macros-0:1-7.fc43.n 100% | 2.6 MiB/s | 7.9 KiB | 00m00s [ 50/173] lua-srpm-macros-0:1-16.fc43.n 100% | 4.3 MiB/s | 8.8 KiB | 00m00s [ 51/173] kernel-srpm-macros-0:1.0-27.f 100% | 2.2 MiB/s | 8.9 KiB | 00m00s [ 52/173] ocaml-srpm-macros-0:11-2.fc43 100% | 4.5 MiB/s | 9.3 KiB | 00m00s [ 53/173] openblas-srpm-macros-0:2-20.f 100% | 1.9 MiB/s | 7.6 KiB | 00m00s [ 54/173] perl-srpm-macros-0:1-60.fc43. 100% | 2.7 MiB/s | 8.3 KiB | 00m00s [ 55/173] python-srpm-macros-0:3.14-5.f 100% | 7.6 MiB/s | 23.4 KiB | 00m00s [ 56/173] tree-sitter-srpm-macros-0:0.4 100% | 4.3 MiB/s | 13.4 KiB | 00m00s [ 57/173] zig-srpm-macros-0:1-5.fc43.no 100% | 2.7 MiB/s | 8.4 KiB | 00m00s [ 58/173] rpm-0:6.0.2-1.fc43.aarch64 100% | 112.2 MiB/s | 574.4 KiB | 00m00s [ 59/173] zip-0:3.0-44.fc43.aarch64 100% | 32.1 MiB/s | 262.6 KiB | 00m00s [ 60/173] debugedit-0:5.2-3.fc43.aarch6 100% | 16.5 MiB/s | 84.7 KiB | 00m00s [ 61/173] pkgconf-pkg-config-0:2.3.0-3. 100% | 3.1 MiB/s | 9.6 KiB | 00m00s [ 62/173] popt-0:1.19-9.fc43.aarch64 100% | 15.9 MiB/s | 65.3 KiB | 00m00s [ 63/173] zstd-0:1.5.7-2.fc43.aarch64 100% | 87.3 MiB/s | 446.9 KiB | 00m00s [ 64/173] libblkid-0:2.41.5-1.fc43.aarc 100% | 29.8 MiB/s | 122.0 KiB | 00m00s [ 65/173] libfdisk-0:2.41.5-1.fc43.aarc 100% | 37.7 MiB/s | 154.6 KiB | 00m00s [ 66/173] liblastlog2-0:2.41.5-1.fc43.a 100% | 4.7 MiB/s | 24.2 KiB | 00m00s [ 67/173] libmount-0:2.41.5-1.fc43.aarc 100% | 22.3 MiB/s | 160.1 KiB | 00m00s [ 68/173] libsmartcols-0:2.41.5-1.fc43. 100% | 13.5 MiB/s | 82.8 KiB | 00m00s [ 69/173] libuuid-0:2.41.5-1.fc43.aarch 100% | 5.1 MiB/s | 26.2 KiB | 00m00s [ 70/173] util-linux-core-0:2.41.5-1.fc 100% | 75.5 MiB/s | 540.9 KiB | 00m00s [ 71/173] xz-libs-1:5.8.1-4.fc43.aarch6 100% | 18.1 MiB/s | 111.1 KiB | 00m00s [ 72/173] ncurses-base-0:6.5-7.20250614 100% | 17.2 MiB/s | 88.2 KiB | 00m00s [ 73/173] gnulib-l10n-0:20241231-1.fc43 100% | 24.4 MiB/s | 150.2 KiB | 00m00s [ 74/173] libsepol-0:3.9-2.fc43.aarch64 100% | 31.6 MiB/s | 323.6 KiB | 00m00s [ 75/173] glibc-gconv-extra-0:2.42-17.f 100% | 128.0 MiB/s | 1.7 MiB | 00m00s [ 76/173] pkgconf-m4-0:2.3.0-3.fc43.noa 100% | 2.7 MiB/s | 13.9 KiB | 00m00s [ 77/173] pkgconf-0:2.3.0-3.fc43.aarch6 100% | 4.3 MiB/s | 44.4 KiB | 00m00s [ 78/173] libpkgconf-0:2.3.0-3.fc43.aar 100% | 6.2 MiB/s | 37.9 KiB | 00m00s [ 79/173] lz4-libs-0:1.10.0-3.fc43.aarc 100% | 9.7 MiB/s | 79.5 KiB | 00m00s [ 80/173] rpm-libs-0:6.0.2-1.fc43.aarch 100% | 61.5 MiB/s | 377.6 KiB | 00m00s [ 81/173] rpm-sign-libs-0:6.0.2-1.fc43. 100% | 8.1 MiB/s | 24.8 KiB | 00m00s [ 82/173] libzstd-0:1.5.7-2.fc43.aarch6 100% | 46.2 MiB/s | 283.6 KiB | 00m00s [ 83/173] rpm-build-libs-0:6.0.2-1.fc43 100% | 18.7 MiB/s | 115.0 KiB | 00m00s [ 84/173] ima-evm-utils-libs-0:1.6.2-6. 100% | 7.2 MiB/s | 29.3 KiB | 00m00s [ 85/173] libfsverity-0:1.6-3.fc43.aarc 100% | 6.0 MiB/s | 18.6 KiB | 00m00s [ 86/173] tpm2-tss-0:4.1.3-8.fc43.aarch 100% | 97.8 MiB/s | 400.5 KiB | 00m00s [ 87/173] json-c-0:0.18-7.fc43.aarch64 100% | 14.7 MiB/s | 45.1 KiB | 00m00s [ 88/173] libgcc-0:15.3.1-1.fc43.aarch6 100% | 31.0 MiB/s | 126.9 KiB | 00m00s [ 89/173] libstdc++-0:15.3.1-1.fc43.aar 100% | 105.2 MiB/s | 862.0 KiB | 00m00s [ 90/173] zlib-ng-compat-0:2.3.3-2.fc43 100% | 8.8 MiB/s | 72.2 KiB | 00m00s [ 91/173] libusb1-0:1.0.30-1.fc43.aarch 100% | 10.9 MiB/s | 78.4 KiB | 00m00s [ 92/173] libacl-0:2.4.0-1.fc43.aarch64 100% | 8.6 MiB/s | 26.4 KiB | 00m00s [ 93/173] audit-libs-0:4.2.1-1.fc43.aar 100% | 19.7 MiB/s | 141.3 KiB | 00m00s [ 94/173] libxcrypt-0:4.5.2-1.fc43.aarc 100% | 17.5 MiB/s | 125.2 KiB | 00m00s [ 95/173] openssl-libs-1:3.5.8-1.fc43.a 100% | 153.4 MiB/s | 2.5 MiB | 00m00s [ 96/173] pam-libs-0:1.7.1-5.fc43.aarch 100% | 9.2 MiB/s | 56.2 KiB | 00m00s [ 97/173] libattr-0:2.6.0-1.fc43.aarch6 100% | 3.4 MiB/s | 17.3 KiB | 00m00s [ 98/173] pcre2-0:10.47-1.fc43.aarch64 100% | 60.1 MiB/s | 246.2 KiB | 00m00s [ 99/173] pcre2-syntax-0:10.47-1.fc43.n 100% | 40.2 MiB/s | 164.7 KiB | 00m00s [100/173] elfutils-libelf-0:0.196-1.fc4 100% | 45.9 MiB/s | 234.8 KiB | 00m00s [101/173] elfutils-libs-0:0.196-1.fc43. 100% | 87.0 MiB/s | 267.4 KiB | 00m00s [102/173] elfutils-0:0.196-1.fc43.aarch 100% | 124.0 MiB/s | 634.6 KiB | 00m00s [103/173] elfutils-debuginfod-client-0: 100% | 8.9 MiB/s | 45.5 KiB | 00m00s [104/173] jansson-0:2.14-3.fc43.aarch64 100% | 15.2 MiB/s | 46.7 KiB | 00m00s [105/173] systemd-libs-0:258.11-1.fc43. 100% | 110.6 MiB/s | 792.9 KiB | 00m00s [106/173] libcap-ng-0:0.9.6-1.fc43.aarc 100% | 6.8 MiB/s | 35.1 KiB | 00m00s [107/173] libcap-0:2.76-4.fc43.aarch64 100% | 14.2 MiB/s | 87.1 KiB | 00m00s [108/173] gpgverify-0:2.2-3.fc43.noarch 100% | 1.2 MiB/s | 11.1 KiB | 00m00s [109/173] binutils-0:2.45.1-5.fc43.aarc 100% | 156.8 MiB/s | 6.3 MiB | 00m00s [110/173] gnupg2-0:2.4.9-5.fc43.aarch64 100% | 53.9 MiB/s | 1.6 MiB | 00m00s [111/173] gnupg2-dirmngr-0:2.4.9-5.fc43 100% | 16.2 MiB/s | 266.2 KiB | 00m00s [112/173] gnupg2-gpg-agent-0:2.4.9-5.fc 100% | 43.4 MiB/s | 266.4 KiB | 00m00s [113/173] gnupg2-gpgconf-0:2.4.9-5.fc43 100% | 27.8 MiB/s | 114.0 KiB | 00m00s [114/173] gnupg2-keyboxd-0:2.4.9-5.fc43 100% | 17.8 MiB/s | 91.4 KiB | 00m00s [115/173] gnupg2-verify-0:2.4.9-5.fc43. 100% | 40.1 MiB/s | 164.3 KiB | 00m00s [116/173] libassuan-0:2.5.7-4.fc43.aarc 100% | 13.0 MiB/s | 66.5 KiB | 00m00s [117/173] libgpg-error-0:1.55-2.fc43.aa 100% | 34.0 MiB/s | 243.5 KiB | 00m00s [118/173] npth-0:1.8-3.fc43.aarch64 100% | 3.5 MiB/s | 25.0 KiB | 00m00s [119/173] libksba-0:1.6.7-4.fc43.aarch6 100% | 22.0 MiB/s | 157.5 KiB | 00m00s [120/173] rpm-sequoia-0:1.10.3-1.fc43.a 100% | 172.4 MiB/s | 882.8 KiB | 00m00s [121/173] lua-libs-0:5.4.8-4.fc43.aarch 100% | 14.0 MiB/s | 129.1 KiB | 00m00s [122/173] sqlite-libs-0:3.50.2-3.fc43.a 100% | 103.3 MiB/s | 740.4 KiB | 00m00s [123/173] file-libs-0:5.46-9.fc43.aarch 100% | 118.3 MiB/s | 847.7 KiB | 00m00s [124/173] file-0:5.46-9.fc43.aarch64 100% | 6.0 MiB/s | 48.8 KiB | 00m00s [125/173] libgomp-0:15.3.1-1.fc43.aarch 100% | 45.4 MiB/s | 372.1 KiB | 00m00s [126/173] libarchive-0:3.8.4-1.fc43.aar 100% | 101.0 MiB/s | 413.6 KiB | 00m00s [127/173] libxml2-0:2.12.10-5.fc43.aarc 100% | 110.5 MiB/s | 678.7 KiB | 00m00s [128/173] build-reproducibility-srpm-ma 100% | 3.9 MiB/s | 11.9 KiB | 00m00s [129/173] curl-0:8.15.0-10.fc43.aarch64 100% | 43.7 MiB/s | 223.6 KiB | 00m00s [130/173] gnat-srpm-macros-0:7-1.fc43.n 100% | 4.2 MiB/s | 8.7 KiB | 00m00s [131/173] add-determinism-0:0.6.0-3.fc4 100% | 115.4 MiB/s | 827.2 KiB | 00m00s [132/173] pyproject-srpm-macros-0:1.23. 100% | 3.8 MiB/s | 15.5 KiB | 00m00s [133/173] package-notes-srpm-macros-0:0 100% | 1.9 MiB/s | 9.9 KiB | 00m00s [134/173] qt5-srpm-macros-0:5.15.18-1.f 100% | 4.2 MiB/s | 8.6 KiB | 00m00s [135/173] qt6-srpm-macros-0:6.10.3-1.fc 100% | 2.2 MiB/s | 9.1 KiB | 00m00s [136/173] rust-srpm-macros-0:28.5-1.fc4 100% | 2.7 MiB/s | 11.2 KiB | 00m00s [137/173] ca-certificates-0:2026.2.90_v 100% | 135.8 MiB/s | 973.1 KiB | 00m00s [138/173] crypto-policies-0:20251125-1. 100% | 19.1 MiB/s | 97.8 KiB | 00m00s [139/173] libgcrypt-0:1.11.1-4.fc43.aar 100% | 84.3 MiB/s | 518.1 KiB | 00m00s [140/173] libidn2-0:2.3.8-2.fc43.aarch6 100% | 34.1 MiB/s | 174.6 KiB | 00m00s [141/173] libunistring-0:1.1-10.fc43.aa 100% | 40.5 MiB/s | 539.2 KiB | 00m00s [142/173] gnutls-0:3.8.13-1.fc43.aarch6 100% | 72.7 MiB/s | 1.3 MiB | 00m00s [143/173] nettle-0:3.10.1-2.fc43.aarch6 100% | 32.0 MiB/s | 425.7 KiB | 00m00s [144/173] openldap-0:2.6.14-1.fc43.aarc 100% | 35.1 MiB/s | 251.3 KiB | 00m00s [145/173] gdbm-libs-1:1.23-10.fc43.aarc 100% | 13.7 MiB/s | 56.0 KiB | 00m00s [146/173] cyrus-sasl-lib-0:2.1.28-33.fc 100% | 108.0 MiB/s | 774.0 KiB | 00m00s [147/173] fedora-repos-0:43-2.noarch 100% | 4.3 MiB/s | 8.9 KiB | 00m00s [148/173] fedora-gpg-keys-0:43-2.noarch 100% | 45.0 MiB/s | 184.2 KiB | 00m00s [149/173] elfutils-default-yama-scope-0 100% | 2.8 MiB/s | 11.3 KiB | 00m00s [150/173] libpfm-0:4.13.0-20.fc43.aarch 100% | 7.4 MiB/s | 53.0 KiB | 00m00s [151/173] libffi-0:3.5.2-1.fc43.aarch64 100% | 7.7 MiB/s | 39.4 KiB | 00m00s [152/173] p11-kit-0:0.26.5-1.fc43.aarch 100% | 64.8 MiB/s | 530.6 KiB | 00m00s [153/173] p11-kit-trust-0:0.26.5-1.fc43 100% | 22.7 MiB/s | 139.5 KiB | 00m00s [154/173] alternatives-0:1.33-3.fc43.aa 100% | 6.6 MiB/s | 40.3 KiB | 00m00s [155/173] libtasn1-0:4.21.0-1.fc43.aarc 100% | 18.0 MiB/s | 73.8 KiB | 00m00s [156/173] libtool-ltdl-0:2.5.4-8.fc43.a 100% | 11.6 MiB/s | 35.6 KiB | 00m00s [157/173] libevent-0:2.1.13-1.fc43.aarc 100% | 62.1 MiB/s | 254.5 KiB | 00m00s [158/173] fedora-release-0:43-27.noarch 100% | 2.8 MiB/s | 11.5 KiB | 00m00s [159/173] systemd-standalone-sysusers-0 100% | 35.2 MiB/s | 144.0 KiB | 00m00s [160/173] xxhash-libs-0:0.8.4-1.fc43.aa 100% | 8.4 MiB/s | 34.6 KiB | 00m00s [161/173] fedora-release-identity-basic 100% | 3.0 MiB/s | 12.3 KiB | 00m00s [162/173] libcurl-0:8.15.0-10.fc43.aarc 100% | 63.8 MiB/s | 391.8 KiB | 00m00s [163/173] gdb-minimal-0:17.2-2.fc43.aar 100% | 211.3 MiB/s | 4.2 MiB | 00m00s [164/173] libssh-0:0.11.5-1.fc43.aarch6 100% | 22.7 MiB/s | 232.8 KiB | 00m00s [165/173] libpsl-0:0.21.5-6.fc43.aarch6 100% | 8.0 MiB/s | 65.1 KiB | 00m00s [166/173] libssh-config-0:0.11.5-1.fc43 100% | 1.7 MiB/s | 8.9 KiB | 00m00s [167/173] publicsuffix-list-dafsa-0:202 100% | 11.8 MiB/s | 60.3 KiB | 00m00s [168/173] krb5-libs-0:1.22.2-4.fc43.aar 100% | 93.0 MiB/s | 761.9 KiB | 00m00s [169/173] keyutils-libs-0:1.6.3-6.fc43. 100% | 7.7 MiB/s | 31.5 KiB | 00m00s [170/173] libcom_err-0:1.47.3-2.fc43.aa 100% | 6.5 MiB/s | 26.7 KiB | 00m00s [171/173] libverto-0:0.3.2-11.fc43.aarc 100% | 5.0 MiB/s | 20.4 KiB | 00m00s [172/173] libbrotli-0:1.2.0-1.fc43.aarc 100% | 57.0 MiB/s | 350.4 KiB | 00m00s [173/173] libnghttp2-0:1.66.0-3.fc43.aa 100% | 8.6 MiB/s | 70.7 KiB | 00m00s -------------------------------------------------------------------------------- [173/173] Total 100% | 132.1 MiB/s | 58.1 MiB | 00m00s Running transaction Importing OpenPGP key 0x31645531: UserID : "Fedora (43) " Fingerprint: C6E7F081CF80E13146676E88829B606631645531 From : file:///usr/share/distribution-gpg-keys/fedora/RPM-GPG-KEY-fedora-43-primary The key was successfully imported. [ 1/175] Verify package files 100% | 808.0 B/s | 173.0 B | 00m00s [ 2/175] Prepare transaction 100% | 2.7 KiB/s | 173.0 B | 00m00s [ 3/175] Installing libgcc-0:15.3.1-1. 100% | 109.2 MiB/s | 223.7 KiB | 00m00s [ 4/175] Installing publicsuffix-list- 100% | 69.4 MiB/s | 71.1 KiB | 00m00s [ 5/175] Installing libssh-config-0:0. 100% | 0.0 B/s | 816.0 B | 00m00s [ 6/175] Installing fedora-release-ide 100% | 867.2 KiB/s | 888.0 B | 00m00s [ 7/175] Installing fedora-gpg-keys-0: 100% | 31.5 MiB/s | 355.0 KiB | 00m00s [ 8/175] Installing fedora-repos-0:43- 100% | 0.0 B/s | 5.7 KiB | 00m00s [ 9/175] Installing fedora-release-com 100% | 24.3 MiB/s | 24.8 KiB | 00m00s [ 10/175] Installing fedora-release-0:4 100% | 13.5 KiB/s | 124.0 B | 00m00s >>> Running sysusers scriptlet: setup-0:2.15.0-26.fc43.noarch >>> Finished sysusers scriptlet: setup-0:2.15.0-26.fc43.noarch >>> Scriptlet output: >>> Creating group 'adm' with GID 4. >>> Creating group 'audio' with GID 63. >>> Creating group 'cdrom' with GID 11. >>> Creating group 'clock' with GID 103. >>> Creating group 'dialout' with GID 18. >>> Creating group 'disk' with GID 6. >>> Creating group 'floppy' with GID 19. >>> Creating group 'ftp' with GID 50. >>> Creating group 'games' with GID 20. >>> Creating group 'input' with GID 104. >>> Creating group 'kmem' with GID 9. >>> Creating group 'kvm' with GID 36. >>> Creating group 'lock' with GID 54. >>> Creating group 'lp' with GID 7. >>> Creating group 'mail' with GID 12. >>> Creating group 'man' with GID 15. >>> Creating group 'mem' with GID 8. >>> Creating group 'nobody' with GID 65534. >>> Creating group 'render' with GID 105. >>> Creating group 'root' with GID 0. >>> Creating group 'sgx' with GID 106. >>> Creating group 'sys' with GID 3. >>> Creating group 'tape' with GID 33. >>> Creating group 'tty' with GID 5. >>> Creating group 'users' with GID 100. >>> Creating group 'utmp' with GID 22. >>> Creating group 'video' with GID 39. >>> Creating group 'wheel' with GID 10. >>> Creating user 'adm' (adm) with UID 3 and GID 4. >>> Creating group 'bin' with GID 1. >>> Creating user 'bin' (bin) with UID 1 and GID 1. >>> Creating group 'daemon' with GID 2. >>> Creating user 'daemon' (daemon) with UID 2 and GID 2. >>> Creating user 'ftp' (FTP User) with UID 14 and GID 50. >>> Creating user 'games' (games) with UID 12 and GID 100. >>> Creating user 'halt' (halt) with UID 7 and GID 0. >>> Creating user 'lp' (lp) with UID 4 and GID 7. >>> Creating user 'mail' (mail) with UID 8 and GID 12. >>> Creating user 'nobody' (Kernel Overflow User) with UID 65534 and GID 65534. >>> Creating user 'operator' (operator) with UID 11 and GID 0. >>> Creating user 'root' (Super User) with UID 0 and GID 0. >>> Creating user 'shutdown' (shutdown) with UID 6 and GID 0. >>> Creating user 'sync' (sync) with UID 5 and GID 0. >>> [ 11/175] Installing setup-0:2.15.0-26. 100% | 37.6 MiB/s | 730.6 KiB | 00m00s [ 12/175] Installing filesystem-0:3.18- 100% | 1.7 MiB/s | 212.8 KiB | 00m00s [ 13/175] Installing rust-srpm-macros-0 100% | 6.2 MiB/s | 6.4 KiB | 00m00s [ 14/175] Installing qt6-srpm-macros-0: 100% | 0.0 B/s | 748.0 B | 00m00s [ 15/175] Installing qt5-srpm-macros-0: 100% | 0.0 B/s | 776.0 B | 00m00s [ 16/175] Installing package-notes-srpm 100% | 0.0 B/s | 2.1 KiB | 00m00s [ 17/175] Installing gnat-srpm-macros-0 100% | 0.0 B/s | 1.3 KiB | 00m00s [ 18/175] Installing pcre2-syntax-0:10. 100% | 138.8 MiB/s | 284.3 KiB | 00m00s [ 19/175] Installing pkgconf-m4-0:2.3.0 100% | 14.5 MiB/s | 14.8 KiB | 00m00s [ 20/175] Installing gnulib-l10n-0:2024 100% | 129.3 MiB/s | 661.9 KiB | 00m00s [ 21/175] Installing coreutils-common-0 100% | 282.3 MiB/s | 11.3 MiB | 00m00s [ 22/175] Installing ncurses-base-0:6.5 100% | 43.2 MiB/s | 353.5 KiB | 00m00s [ 23/175] Installing bash-0:5.3.0-2.fc4 100% | 196.0 MiB/s | 8.4 MiB | 00m00s [ 24/175] Installing glibc-common-0:2.4 100% | 57.5 MiB/s | 1.3 MiB | 00m00s [ 25/175] Installing glibc-gconv-extra- 100% | 365.2 MiB/s | 18.6 MiB | 00m00s [ 26/175] Installing glibc-0:2.42-17.fc 100% | 142.7 MiB/s | 6.3 MiB | 00m00s [ 27/175] Installing ncurses-libs-0:6.5 100% | 249.5 MiB/s | 1.2 MiB | 00m00s [ 28/175] Installing glibc-minimal-lang 100% | 0.0 B/s | 124.0 B | 00m00s [ 29/175] Installing zlib-ng-compat-0:2 100% | 131.2 MiB/s | 134.4 KiB | 00m00s [ 30/175] Installing bzip2-libs-0:1.0.8 100% | 72.0 MiB/s | 73.8 KiB | 00m00s [ 31/175] Installing libgpg-error-0:1.5 100% | 45.4 MiB/s | 977.1 KiB | 00m00s [ 32/175] Installing libstdc++-0:15.3.1 100% | 315.1 MiB/s | 2.8 MiB | 00m00s [ 33/175] Installing xz-libs-1:5.8.1-4. 100% | 197.9 MiB/s | 202.7 KiB | 00m00s [ 34/175] Installing libassuan-0:2.5.7- 100% | 212.6 MiB/s | 217.7 KiB | 00m00s [ 35/175] Installing libgcrypt-0:1.11.1 100% | 238.9 MiB/s | 1.2 MiB | 00m00s [ 36/175] Installing readline-0:8.3-2.f 100% | 184.2 MiB/s | 565.9 KiB | 00m00s [ 37/175] Installing gmp-1:6.3.0-4.fc43 100% | 214.9 MiB/s | 660.1 KiB | 00m00s [ 38/175] Installing libuuid-0:2.41.5-1 100% | 68.8 MiB/s | 70.4 KiB | 00m00s [ 39/175] Installing libacl-0:2.4.0-1.f 100% | 67.1 MiB/s | 68.7 KiB | 00m00s [ 40/175] Installing popt-0:1.19-9.fc43 100% | 49.3 MiB/s | 151.4 KiB | 00m00s [ 41/175] Installing libzstd-0:1.5.7-2. 100% | 217.8 MiB/s | 669.0 KiB | 00m00s [ 42/175] Installing elfutils-libelf-0: 100% | 291.7 MiB/s | 1.5 MiB | 00m00s [ 43/175] Installing npth-0:1.8-3.fc43. 100% | 92.4 MiB/s | 94.6 KiB | 00m00s [ 44/175] Installing libblkid-0:2.41.5- 100% | 142.3 MiB/s | 291.5 KiB | 00m00s [ 45/175] Installing libxcrypt-0:4.5.2- 100% | 134.8 MiB/s | 276.1 KiB | 00m00s [ 46/175] Installing sqlite-libs-0:3.50 100% | 250.2 MiB/s | 1.5 MiB | 00m00s [ 47/175] Installing gnupg2-gpgconf-0:2 100% | 17.6 MiB/s | 324.0 KiB | 00m00s [ 48/175] Installing json-c-0:0.18-7.fc 100% | 136.7 MiB/s | 139.9 KiB | 00m00s [ 49/175] Installing libunistring-0:1.1 100% | 291.0 MiB/s | 1.7 MiB | 00m00s [ 50/175] Installing libidn2-0:2.3.8-2. 100% | 110.7 MiB/s | 566.7 KiB | 00m00s [ 51/175] Installing libtasn1-0:4.21.0- 100% | 24.2 MiB/s | 222.6 KiB | 00m00s [ 52/175] Installing crypto-policies-0: 100% | 18.7 MiB/s | 172.2 KiB | 00m00s [ 53/175] Installing gnupg2-verify-0:2. 100% | 18.8 MiB/s | 365.8 KiB | 00m00s [ 54/175] Installing dwz-0:0.16-2.fc43. 100% | 18.6 MiB/s | 324.0 KiB | 00m00s [ 55/175] Installing mpfr-0:4.2.2-2.fc4 100% | 184.9 MiB/s | 757.2 KiB | 00m00s [ 56/175] Installing gawk-0:5.3.2-2.fc4 100% | 99.3 MiB/s | 2.6 MiB | 00m00s [ 57/175] Installing libksba-0:1.6.7-4. 100% | 195.8 MiB/s | 401.0 KiB | 00m00s [ 58/175] Installing unzip-0:6.0-67.fc4 100% | 25.7 MiB/s | 473.7 KiB | 00m00s [ 59/175] Installing file-libs-0:5.46-9 100% | 540.2 MiB/s | 11.9 MiB | 00m00s [ 60/175] Installing file-0:5.46-9.fc43 100% | 8.1 MiB/s | 141.7 KiB | 00m00s [ 61/175] Installing libeconf-0:0.7.9-2 100% | 80.7 MiB/s | 82.6 KiB | 00m00s [ 62/175] Installing libsmartcols-0:2.4 100% | 220.3 MiB/s | 225.6 KiB | 00m00s [ 63/175] Installing libsepol-0:3.9-2.f 100% | 263.9 MiB/s | 810.8 KiB | 00m00s [ 64/175] Installing lz4-libs-0:1.10.0- 100% | 193.9 MiB/s | 198.5 KiB | 00m00s [ 65/175] Installing libattr-0:2.6.0-1. 100% | 67.6 MiB/s | 69.3 KiB | 00m00s [ 66/175] Installing pcre2-0:10.47-1.fc 100% | 233.0 MiB/s | 715.9 KiB | 00m00s [ 67/175] Installing libselinux-0:3.9-5 100% | 98.8 MiB/s | 202.4 KiB | 00m00s [ 68/175] Installing grep-0:3.12-2.fc43 100% | 45.1 MiB/s | 1.0 MiB | 00m00s [ 69/175] Installing findutils-1:4.10.0 100% | 76.8 MiB/s | 1.9 MiB | 00m00s [ 70/175] Installing sed-0:4.9-5.fc43.a 100% | 39.1 MiB/s | 881.4 KiB | 00m00s [ 71/175] Installing xz-1:5.8.1-4.fc43. 100% | 58.9 MiB/s | 1.4 MiB | 00m00s [ 72/175] Installing libmount-0:2.41.5- 100% | 205.7 MiB/s | 421.3 KiB | 00m00s [ 73/175] Installing libcap-ng-0:0.9.6- 100% | 158.9 MiB/s | 162.7 KiB | 00m00s [ 74/175] Installing audit-libs-0:4.2.1 100% | 159.2 MiB/s | 489.1 KiB | 00m00s [ 75/175] Installing pam-libs-0:1.7.1-5 100% | 109.8 MiB/s | 224.9 KiB | 00m00s [ 76/175] Installing libcap-0:2.76-4.fc 100% | 27.9 MiB/s | 513.9 KiB | 00m00s [ 77/175] Installing systemd-libs-0:258 100% | 273.5 MiB/s | 2.5 MiB | 00m00s [ 78/175] Installing lua-libs-0:5.4.8-4 100% | 161.8 MiB/s | 331.4 KiB | 00m00s [ 79/175] Installing libffi-0:3.5.2-1.f 100% | 153.6 MiB/s | 157.3 KiB | 00m00s [ 80/175] Installing p11-kit-0:0.26.5-1 100% | 94.4 MiB/s | 2.7 MiB | 00m00s [ 81/175] Installing alternatives-0:1.3 100% | 5.6 MiB/s | 91.8 KiB | 00m00s [ 82/175] Installing p11-kit-trust-0:0. 100% | 19.2 MiB/s | 531.8 KiB | 00m00s [ 83/175] Installing openssl-libs-1:3.5 100% | 274.9 MiB/s | 7.4 MiB | 00m00s [ 84/175] Installing coreutils-0:9.7-10 100% | 166.3 MiB/s | 8.2 MiB | 00m00s [ 85/175] Installing ca-certificates-0: 100% | 1.5 MiB/s | 2.5 MiB | 00m02s [ 86/175] Installing gzip-0:1.13-4.fc43 100% | 21.0 MiB/s | 430.2 KiB | 00m00s [ 87/175] Installing libfsverity-0:1.6- 100% | 67.8 MiB/s | 69.4 KiB | 00m00s [ 88/175] Installing rpm-sequoia-0:1.10 100% | 286.4 MiB/s | 2.3 MiB | 00m00s [ 89/175] Installing libevent-0:2.1.13- 100% | 217.3 MiB/s | 1.1 MiB | 00m00s [ 90/175] Installing util-linux-core-0: 100% | 94.7 MiB/s | 2.5 MiB | 00m00s [ 91/175] Installing libusb1-0:1.0.30-1 100% | 17.7 MiB/s | 181.3 KiB | 00m00s >>> Running sysusers scriptlet: tpm2-tss-0:4.1.3-8.fc43.aarch64 >>> Finished sysusers scriptlet: tpm2-tss-0:4.1.3-8.fc43.aarch64 >>> Scriptlet output: >>> Creating group 'tss' with GID 59. >>> Creating user 'tss' (Account used for TPM access) with UID 59 and GID 59. >>> [ 92/175] Installing tpm2-tss-0:4.1.3-8 100% | 239.9 MiB/s | 2.2 MiB | 00m00s [ 93/175] Installing ima-evm-utils-libs 100% | 91.8 MiB/s | 94.0 KiB | 00m00s [ 94/175] Installing gnupg2-gpg-agent-0 100% | 29.7 MiB/s | 851.3 KiB | 00m00s [ 95/175] Installing systemd-standalone 100% | 17.9 MiB/s | 330.1 KiB | 00m00s [ 96/175] Installing rpm-libs-0:6.0.2-1 100% | 243.4 MiB/s | 996.8 KiB | 00m00s [ 97/175] Installing liblastlog2-0:2.41 100% | 17.1 MiB/s | 139.7 KiB | 00m00s [ 98/175] Installing libsemanage-0:3.9- 100% | 117.8 MiB/s | 361.9 KiB | 00m00s [ 99/175] Installing tar-2:1.35-6.fc43. 100% | 100.1 MiB/s | 3.0 MiB | 00m00s [100/175] Installing zstd-0:1.5.7-2.fc4 100% | 71.7 MiB/s | 1.5 MiB | 00m00s [101/175] Installing zip-0:3.0-44.fc43. 100% | 39.4 MiB/s | 766.4 KiB | 00m00s [102/175] Installing gnupg2-keyboxd-0:2 100% | 28.6 MiB/s | 234.6 KiB | 00m00s [103/175] Installing libpsl-0:0.21.5-6. 100% | 130.5 MiB/s | 133.6 KiB | 00m00s [104/175] Installing libfdisk-0:2.41.5- 100% | 205.0 MiB/s | 419.8 KiB | 00m00s [105/175] Installing nettle-0:3.10.1-2. 100% | 187.6 MiB/s | 768.4 KiB | 00m00s [106/175] Installing gnutls-0:3.8.13-1. 100% | 285.4 MiB/s | 3.7 MiB | 00m00s [107/175] Installing libxml2-0:2.12.10- 100% | 78.8 MiB/s | 1.9 MiB | 00m00s [108/175] Installing libarchive-0:3.8.4 100% | 238.6 MiB/s | 977.2 KiB | 00m00s [109/175] Installing bzip2-0:1.0.8-21.f 100% | 10.1 MiB/s | 175.8 KiB | 00m00s [110/175] Installing add-determinism-0: 100% | 88.4 MiB/s | 2.0 MiB | 00m00s [111/175] Installing build-reproducibil 100% | 1.0 MiB/s | 1.0 KiB | 00m00s [112/175] Installing cpio-0:2.15-6.fc43 100% | 49.8 MiB/s | 1.1 MiB | 00m00s [113/175] Installing diffutils-0:3.12-3 100% | 67.6 MiB/s | 1.6 MiB | 00m00s [114/175] Installing ed-0:1.22.2-1.fc43 100% | 9.1 MiB/s | 158.3 KiB | 00m00s [115/175] Installing patch-0:2.8-2.fc43 100% | 15.2 MiB/s | 264.1 KiB | 00m00s [116/175] Installing libpkgconf-0:2.3.0 100% | 132.0 MiB/s | 135.1 KiB | 00m00s [117/175] Installing pkgconf-0:2.3.0-3. 100% | 6.6 MiB/s | 114.9 KiB | 00m00s [118/175] Installing pkgconf-pkg-config 100% | 110.8 KiB/s | 1.8 KiB | 00m00s [119/175] Installing jansson-0:2.14-3.f 100% | 92.3 MiB/s | 94.5 KiB | 00m00s [120/175] Installing libgomp-0:15.3.1-1 100% | 253.3 MiB/s | 518.7 KiB | 00m00s [121/175] Installing gdbm-libs-1:1.23-1 100% | 230.1 MiB/s | 235.6 KiB | 00m00s [122/175] Installing cyrus-sasl-lib-0:2 100% | 100.7 MiB/s | 2.4 MiB | 00m00s [123/175] Installing libpfm-0:4.13.0-20 100% | 247.3 MiB/s | 253.3 KiB | 00m00s [124/175] Installing libtool-ltdl-0:2.5 100% | 92.9 MiB/s | 95.1 KiB | 00m00s [125/175] Installing openldap-0:2.6.14- 100% | 187.6 MiB/s | 768.6 KiB | 00m00s [126/175] Installing gnupg2-dirmngr-0:2 100% | 23.5 MiB/s | 649.1 KiB | 00m00s [127/175] Installing gnupg2-0:2.4.9-5.f 100% | 163.5 MiB/s | 6.5 MiB | 00m00s [128/175] Installing rpm-sign-libs-0:6. 100% | 66.9 MiB/s | 68.5 KiB | 00m00s [129/175] Installing gpgverify-0:2.2-3. 100% | 9.2 MiB/s | 9.4 KiB | 00m00s [130/175] Installing xxhash-libs-0:0.8. 100% | 85.1 MiB/s | 87.1 KiB | 00m00s [131/175] Installing keyutils-libs-0:1. 100% | 97.4 MiB/s | 99.8 KiB | 00m00s [132/175] Installing libcom_err-0:1.47. 100% | 109.5 MiB/s | 112.2 KiB | 00m00s [133/175] Installing libverto-0:0.3.2-1 100% | 69.5 MiB/s | 71.2 KiB | 00m00s [134/175] Installing krb5-libs-0:1.22.2 100% | 253.3 MiB/s | 2.5 MiB | 00m00s [135/175] Installing libssh-0:0.11.5-1. 100% | 192.4 MiB/s | 591.0 KiB | 00m00s [136/175] Installing libbrotli-0:1.2.0- 100% | 222.6 MiB/s | 911.8 KiB | 00m00s [137/175] Installing libnghttp2-0:1.66. 100% | 194.3 MiB/s | 198.9 KiB | 00m00s [138/175] Installing libcurl-0:8.15.0-1 100% | 223.7 MiB/s | 916.1 KiB | 00m00s [139/175] Installing curl-0:8.15.0-10.f 100% | 16.0 MiB/s | 460.0 KiB | 00m00s [140/175] Installing rpm-0:6.0.2-1.fc43 100% | 57.5 MiB/s | 2.8 MiB | 00m00s [141/175] Installing cmake-srpm-macros- 100% | 785.2 KiB/s | 804.0 B | 00m00s [142/175] Installing efi-srpm-macros-0: 100% | 40.2 MiB/s | 41.1 KiB | 00m00s [143/175] Installing java-srpm-macros-0 100% | 0.0 B/s | 1.1 KiB | 00m00s [144/175] Installing lua-srpm-macros-0: 100% | 0.0 B/s | 1.9 KiB | 00m00s [145/175] Installing tree-sitter-srpm-m 100% | 9.1 MiB/s | 9.3 KiB | 00m00s [146/175] Installing zig-srpm-macros-0: 100% | 0.0 B/s | 1.7 KiB | 00m00s [147/175] Installing filesystem-srpm-ma 100% | 38.0 MiB/s | 38.9 KiB | 00m00s [148/175] Installing elfutils-default-y 100% | 291.9 KiB/s | 2.0 KiB | 00m00s [149/175] Installing elfutils-libs-0:0. 100% | 182.7 MiB/s | 748.4 KiB | 00m00s [150/175] Installing elfutils-debuginfo 100% | 7.5 MiB/s | 146.1 KiB | 00m00s [151/175] Installing elfutils-0:0.196-1 100% | 134.9 MiB/s | 3.8 MiB | 00m00s [152/175] Installing binutils-0:2.45.1- 100% | 284.6 MiB/s | 31.0 MiB | 00m00s [153/175] Installing gdb-minimal-0:17.2 100% | 230.2 MiB/s | 13.4 MiB | 00m00s [154/175] Installing debugedit-0:5.2-3. 100% | 17.4 MiB/s | 321.2 KiB | 00m00s [155/175] Installing rpm-build-libs-0:6 100% | 129.3 MiB/s | 264.8 KiB | 00m00s [156/175] Installing perl-srpm-macros-0 100% | 0.0 B/s | 1.1 KiB | 00m00s [157/175] Installing openblas-srpm-macr 100% | 0.0 B/s | 392.0 B | 00m00s [158/175] Installing ocaml-srpm-macros- 100% | 0.0 B/s | 2.1 KiB | 00m00s [159/175] Installing kernel-srpm-macros 100% | 0.0 B/s | 2.3 KiB | 00m00s [160/175] Installing ghc-srpm-macros-0: 100% | 0.0 B/s | 1.0 KiB | 00m00s [161/175] Installing gap-srpm-macros-0: 100% | 0.0 B/s | 2.7 KiB | 00m00s [162/175] Installing fpc-srpm-macros-0: 100% | 0.0 B/s | 420.0 B | 00m00s [163/175] Installing ansible-srpm-macro 100% | 0.0 B/s | 36.2 KiB | 00m00s [164/175] Installing gnome-srpm-macros- 100% | 4.0 MiB/s | 4.1 KiB | 00m00s [165/175] Installing rpm-build-0:6.0.2- 100% | 29.7 MiB/s | 607.2 KiB | 00m00s [166/175] Installing pyproject-srpm-mac 100% | 3.9 MiB/s | 4.0 KiB | 00m00s [167/175] Installing redhat-rpm-config- 100% | 61.6 MiB/s | 189.1 KiB | 00m00s [168/175] Installing forge-srpm-macros- 100% | 39.3 MiB/s | 40.3 KiB | 00m00s [169/175] Installing fonts-srpm-macros- 100% | 55.7 MiB/s | 57.0 KiB | 00m00s [170/175] Installing go-srpm-macros-0:3 100% | 61.6 MiB/s | 63.0 KiB | 00m00s [171/175] Installing python-srpm-macros 100% | 25.8 MiB/s | 52.8 KiB | 00m00s [172/175] Installing util-linux-0:2.41. 100% | 124.6 MiB/s | 6.9 MiB | 00m00s [173/175] Installing shadow-utils-2:4.1 100% | 99.9 MiB/s | 4.5 MiB | 00m00s [174/175] Installing which-0:2.23-3.fc4 100% | 7.2 MiB/s | 125.6 KiB | 00m00s [175/175] Installing info-0:7.2-7.fc43. 100% | 198.5 KiB/s | 422.0 KiB | 00m02s Complete! Finish: installing minimal buildroot with dnf5 Start: creating root cache Finish: creating root cache Finish: chroot init INFO: Installed packages: INFO: add-determinism-0.6.0-3.fc43.aarch64 alternatives-1.33-3.fc43.aarch64 ansible-srpm-macros-1-18.1.fc43.noarch audit-libs-4.2.1-1.fc43.aarch64 bash-5.3.0-2.fc43.aarch64 binutils-2.45.1-5.fc43.aarch64 build-reproducibility-srpm-macros-0.6.0-3.fc43.noarch bzip2-1.0.8-21.fc43.aarch64 bzip2-libs-1.0.8-21.fc43.aarch64 ca-certificates-2026.2.90_v9.0.317-1.fc43.noarch cmake-srpm-macros-3.31.11-1.fc43.noarch coreutils-9.7-10.fc43.aarch64 coreutils-common-9.7-10.fc43.aarch64 cpio-2.15-6.fc43.aarch64 crypto-policies-20251125-1.git63291f8.fc43.noarch curl-8.15.0-10.fc43.aarch64 cyrus-sasl-lib-2.1.28-33.fc43.aarch64 debugedit-5.2-3.fc43.aarch64 diffutils-3.12-3.fc43.aarch64 dwz-0.16-2.fc43.aarch64 ed-1.22.2-1.fc43.aarch64 efi-srpm-macros-6-4.fc43.noarch elfutils-0.196-1.fc43.aarch64 elfutils-debuginfod-client-0.196-1.fc43.aarch64 elfutils-default-yama-scope-0.196-1.fc43.noarch elfutils-libelf-0.196-1.fc43.aarch64 elfutils-libs-0.196-1.fc43.aarch64 fedora-gpg-keys-43-2.noarch fedora-release-43-27.noarch fedora-release-common-43-27.noarch fedora-release-identity-basic-43-27.noarch fedora-repos-43-2.noarch file-5.46-9.fc43.aarch64 file-libs-5.46-9.fc43.aarch64 filesystem-3.18-50.fc43.aarch64 filesystem-srpm-macros-3.18-50.fc43.noarch findutils-4.10.0-6.fc43.aarch64 fonts-srpm-macros-2.0.5-23.fc43.noarch forge-srpm-macros-0.4.0-3.fc43.noarch fpc-srpm-macros-1.3-15.fc43.noarch gap-srpm-macros-2-1.fc43.noarch gawk-5.3.2-2.fc43.aarch64 gdb-minimal-17.2-2.fc43.aarch64 gdbm-libs-1.23-10.fc43.aarch64 ghc-srpm-macros-1.9.2-3.fc43.noarch glibc-2.42-17.fc43.aarch64 glibc-common-2.42-17.fc43.aarch64 glibc-gconv-extra-2.42-17.fc43.aarch64 glibc-minimal-langpack-2.42-17.fc43.aarch64 gmp-6.3.0-4.fc43.aarch64 gnat-srpm-macros-7-1.fc43.noarch gnome-srpm-macros-1.0-1.fc43.noarch gnulib-l10n-20241231-1.fc43.noarch gnupg2-2.4.9-5.fc43.aarch64 gnupg2-dirmngr-2.4.9-5.fc43.aarch64 gnupg2-gpg-agent-2.4.9-5.fc43.aarch64 gnupg2-gpgconf-2.4.9-5.fc43.aarch64 gnupg2-keyboxd-2.4.9-5.fc43.aarch64 gnupg2-verify-2.4.9-5.fc43.aarch64 gnutls-3.8.13-1.fc43.aarch64 go-srpm-macros-3.8.0-1.fc43.noarch gpg-pubkey-c6e7f081cf80e13146676e88829b606631645531-66b6dccf gpgverify-2.2-3.fc43.noarch grep-3.12-2.fc43.aarch64 gzip-1.13-4.fc43.aarch64 ima-evm-utils-libs-1.6.2-6.fc43.aarch64 info-7.2-7.fc43.aarch64 jansson-2.14-3.fc43.aarch64 java-srpm-macros-1-7.fc43.noarch json-c-0.18-7.fc43.aarch64 kernel-srpm-macros-1.0-27.fc43.noarch keyutils-libs-1.6.3-6.fc43.aarch64 krb5-libs-1.22.2-4.fc43.aarch64 libacl-2.4.0-1.fc43.aarch64 libarchive-3.8.4-1.fc43.aarch64 libassuan-2.5.7-4.fc43.aarch64 libattr-2.6.0-1.fc43.aarch64 libblkid-2.41.5-1.fc43.aarch64 libbrotli-1.2.0-1.fc43.aarch64 libcap-2.76-4.fc43.aarch64 libcap-ng-0.9.6-1.fc43.aarch64 libcom_err-1.47.3-2.fc43.aarch64 libcurl-8.15.0-10.fc43.aarch64 libeconf-0.7.9-2.fc43.aarch64 libevent-2.1.13-1.fc43.aarch64 libfdisk-2.41.5-1.fc43.aarch64 libffi-3.5.2-1.fc43.aarch64 libfsverity-1.6-3.fc43.aarch64 libgcc-15.3.1-1.fc43.aarch64 libgcrypt-1.11.1-4.fc43.aarch64 libgomp-15.3.1-1.fc43.aarch64 libgpg-error-1.55-2.fc43.aarch64 libidn2-2.3.8-2.fc43.aarch64 libksba-1.6.7-4.fc43.aarch64 liblastlog2-2.41.5-1.fc43.aarch64 libmount-2.41.5-1.fc43.aarch64 libnghttp2-1.66.0-3.fc43.aarch64 libpfm-4.13.0-20.fc43.aarch64 libpkgconf-2.3.0-3.fc43.aarch64 libpsl-0.21.5-6.fc43.aarch64 libselinux-3.9-5.fc43.aarch64 libsemanage-3.9-4.fc43.aarch64 libsepol-3.9-2.fc43.aarch64 libsmartcols-2.41.5-1.fc43.aarch64 libssh-0.11.5-1.fc43.aarch64 libssh-config-0.11.5-1.fc43.noarch libstdc++-15.3.1-1.fc43.aarch64 libtasn1-4.21.0-1.fc43.aarch64 libtool-ltdl-2.5.4-8.fc43.aarch64 libunistring-1.1-10.fc43.aarch64 libusb1-1.0.30-1.fc43.aarch64 libuuid-2.41.5-1.fc43.aarch64 libverto-0.3.2-11.fc43.aarch64 libxcrypt-4.5.2-1.fc43.aarch64 libxml2-2.12.10-5.fc43.aarch64 libzstd-1.5.7-2.fc43.aarch64 lua-libs-5.4.8-4.fc43.aarch64 lua-srpm-macros-1-16.fc43.noarch lz4-libs-1.10.0-3.fc43.aarch64 mpfr-4.2.2-2.fc43.aarch64 ncurses-base-6.5-7.20250614.fc43.noarch ncurses-libs-6.5-7.20250614.fc43.aarch64 nettle-3.10.1-2.fc43.aarch64 npth-1.8-3.fc43.aarch64 ocaml-srpm-macros-11-2.fc43.noarch openblas-srpm-macros-2-20.fc43.noarch openldap-2.6.14-1.fc43.aarch64 openssl-libs-3.5.8-1.fc43.aarch64 p11-kit-0.26.5-1.fc43.aarch64 p11-kit-trust-0.26.5-1.fc43.aarch64 package-notes-srpm-macros-0.20-1.fc43.noarch pam-libs-1.7.1-5.fc43.aarch64 patch-2.8-2.fc43.aarch64 pcre2-10.47-1.fc43.aarch64 pcre2-syntax-10.47-1.fc43.noarch perl-srpm-macros-1-60.fc43.noarch pkgconf-2.3.0-3.fc43.aarch64 pkgconf-m4-2.3.0-3.fc43.noarch pkgconf-pkg-config-2.3.0-3.fc43.aarch64 popt-1.19-9.fc43.aarch64 publicsuffix-list-dafsa-20260116-1.fc43.noarch pyproject-srpm-macros-1.23.2-1.fc43.noarch python-srpm-macros-3.14-5.fc43.noarch qt5-srpm-macros-5.15.18-1.fc43.noarch qt6-srpm-macros-6.10.3-1.fc43.noarch readline-8.3-2.fc43.aarch64 redhat-rpm-config-343-14.fc43.noarch rpm-6.0.2-1.fc43.aarch64 rpm-build-6.0.2-1.fc43.aarch64 rpm-build-libs-6.0.2-1.fc43.aarch64 rpm-libs-6.0.2-1.fc43.aarch64 rpm-sequoia-1.10.3-1.fc43.aarch64 rpm-sign-libs-6.0.2-1.fc43.aarch64 rust-srpm-macros-28.5-1.fc43.noarch sed-4.9-5.fc43.aarch64 setup-2.15.0-26.fc43.noarch shadow-utils-4.18.0-3.fc43.aarch64 sqlite-libs-3.50.2-3.fc43.aarch64 systemd-libs-258.11-1.fc43.aarch64 systemd-standalone-sysusers-258.11-1.fc43.aarch64 tar-1.35-6.fc43.aarch64 tpm2-tss-4.1.3-8.fc43.aarch64 tree-sitter-srpm-macros-0.4.2-1.fc43.noarch unzip-6.0-67.fc43.aarch64 util-linux-2.41.5-1.fc43.aarch64 util-linux-core-2.41.5-1.fc43.aarch64 which-2.23-3.fc43.aarch64 xxhash-libs-0.8.4-1.fc43.aarch64 xz-5.8.1-4.fc43.aarch64 xz-libs-5.8.1-4.fc43.aarch64 zig-srpm-macros-1-5.fc43.noarch zip-3.0-44.fc43.aarch64 zlib-ng-compat-2.3.3-2.fc43.aarch64 zstd-1.5.7-2.fc43.aarch64 Start: buildsrpm Start: rpmbuild -bs Building target platforms: aarch64 Building for target aarch64 setting SOURCE_DATE_EPOCH=1791331200 Wrote: /builddir/build/SRPMS/lavinmq-2.10.2-1.fc43.src.rpm Finish: rpmbuild -bs INFO: chroot_scan: 1 files copied to /var/lib/copr-rpmbuild/results/chroot_scan INFO: /var/lib/mock/fedora-43-aarch64-1791398091.957105/root/var/log/dnf5.log INFO: chroot_scan: creating tarball /var/lib/copr-rpmbuild/results/chroot_scan.tar.gz /bin/tar: Removing leading `/' from member names Finish: buildsrpm INFO: Done(/var/lib/copr-rpmbuild/workspace/workdir-2l1_7ls8/lavinmq/lavinmq.spec) 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 INFO: Start(/var/lib/copr-rpmbuild/results/lavinmq-2.10.2-1.fc43.src.rpm) Config(fedora-43-aarch64) Start(bootstrap): chroot init INFO: mounting tmpfs at /var/lib/mock/fedora-43-aarch64-bootstrap-1791398091.957105/root. INFO: reusing tmpfs at /var/lib/mock/fedora-43-aarch64-bootstrap-1791398091.957105/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 Finish(bootstrap): chroot init Start: chroot init INFO: mounting tmpfs at /var/lib/mock/fedora-43-aarch64-1791398091.957105/root. INFO: calling preinit hooks INFO: enabled root cache Start: unpacking root cache Finish: unpacking root cache INFO: enabled package manager cache Start: cleaning package manager metadata Finish: cleaning package manager metadata INFO: enabled HW Info plugin INFO: Buildroot is handled by package management downloaded with a bootstrap image: rpm-6.0.2-1.fc43.aarch64 rpm-sequoia-1.10.3-1.fc43.aarch64 dnf5-5.2.18.0-5.fc43.aarch64 dnf5-plugins-5.2.18.0-5.fc43.aarch64 Finish: chroot init Start: build phase for lavinmq-2.10.2-1.fc43.src.rpm Start: build setup for lavinmq-2.10.2-1.fc43.src.rpm Building target platforms: aarch64 Building for target aarch64 setting SOURCE_DATE_EPOCH=1791331200 Wrote: /builddir/build/SRPMS/lavinmq-2.10.2-1.fc43.src.rpm Updating and loading repositories: Additional repo https_download_copr_fe 100% | 33.7 KiB/s | 1.5 KiB | 00m00s Copr repository 100% | 33.7 KiB/s | 1.5 KiB | 00m00s fedora 100% | 46.0 KiB/s | 11.6 KiB | 00m00s updates 100% | 69.2 KiB/s | 10.3 KiB | 00m00s Repositories loaded. Package "forge-srpm-macros-0.4.0-3.fc43.noarch" is already installed. Package Arch Version Repository Size Installing: crystal aarch64 1.21.1-1.fc43 https_download_copr_fedorainfracloud_org_results_zawertun_crystal_fedora_43_aarch64 22.5 MiB etcd aarch64 3.5.13-1.fc41 fedora 59.6 MiB gcc aarch64 15.3.1-1.fc43 updates 99.7 MiB help2man noarch 1.49.3-8.fc43 fedora 415.6 KiB lz4-devel aarch64 1.10.0-3.fc43 fedora 102.2 KiB make aarch64 1:4.4.1-11.fc43 fedora 1.8 MiB openssl-devel aarch64 1:3.5.8-1.fc43 updates 4.5 MiB shards aarch64 0.20.0-1.fc43 https_download_copr_fedorainfracloud_org_results_zawertun_crystal_fedora_43_aarch64 1.2 MiB systemd-rpm-macros noarch 258.11-1.fc43 updates 8.5 KiB zlib-ng-compat-devel aarch64 2.3.3-2.fc43 updates 107.0 KiB Installing dependencies: annobin-docs noarch 12.99-1.fc43 fedora 98.9 KiB annobin-plugin-gcc aarch64 12.99-1.fc43 fedora 1.0 MiB cmake-filesystem aarch64 3.31.11-1.fc43 updates 0.0 B cpp aarch64 15.3.1-1.fc43 updates 35.5 MiB expat aarch64 2.8.3-1.fc43 updates 378.2 KiB gc aarch64 8.2.6-5.fc43 fedora 402.3 KiB gc-devel aarch64 8.2.6-5.fc43 fedora 395.7 KiB gcc-plugin-annobin aarch64 15.3.1-1.fc43 updates 69.2 KiB git aarch64 2.56.0-1.fc43 updates 57.7 KiB git-core aarch64 2.56.0-1.fc43 updates 27.0 MiB git-core-doc noarch 2.56.0-1.fc43 updates 19.1 MiB glibc-devel aarch64 2.42-17.fc43 updates 2.2 MiB groff-base aarch64 1.23.0-11.fc43 updates 4.2 MiB kernel-headers aarch64 7.2.4-100.fc43 updates 6.9 MiB less aarch64 704-4.fc43 updates 607.4 KiB libasan aarch64 15.3.1-1.fc43 updates 1.5 MiB libatomic aarch64 15.3.1-1.fc43 updates 68.8 KiB libcbor aarch64 0.12.0-6.fc43 fedora 137.9 KiB libedit aarch64 3.1-58.20260512cvs.fc43 updates 280.3 KiB libevent-devel aarch64 2.1.13-1.fc43 updates 426.0 KiB libfido2 aarch64 1.16.0-3.fc43 fedora 278.7 KiB libmpc aarch64 1.3.1-8.fc43 fedora 152.7 KiB libubsan aarch64 15.3.1-1.fc43 updates 475.6 KiB libxcrypt-devel aarch64 4.5.2-1.fc43 updates 31.1 KiB libyaml aarch64 0.2.5-17.fc43 fedora 134.4 KiB lld aarch64 21.1.8-6.fc43 updates 44.3 KiB lld-libs aarch64 21.1.8-6.fc43 updates 6.2 MiB llvm-filesystem aarch64 21.1.8-6.fc43 updates 0.0 B llvm-libs aarch64 21.1.8-6.fc43 updates 132.9 MiB mpdecimal aarch64 4.0.1-2.fc43 fedora 281.2 KiB ncurses aarch64 6.5-7.20250614.fc43 fedora 893.6 KiB openssh aarch64 10.0p1-12.fc43 updates 1.4 MiB openssh-clients aarch64 10.0p1-12.fc43 updates 2.7 MiB pcre2-devel aarch64 10.47-1.fc43 updates 2.1 MiB pcre2-utf16 aarch64 10.47-1.fc43 updates 583.0 KiB pcre2-utf32 aarch64 10.47-1.fc43 updates 582.9 KiB perl-AutoLoader noarch 5.74-524.fc43 updates 20.6 KiB perl-B aarch64 1.89-524.fc43 updates 545.2 KiB perl-Carp noarch 1.54-520.fc43 fedora 46.6 KiB perl-Class-Struct noarch 0.68-524.fc43 updates 25.4 KiB perl-Data-Dumper aarch64 2.192-522.fc43 updates 135.5 KiB perl-Digest noarch 1.20-520.fc43 fedora 35.3 KiB perl-Digest-MD5 aarch64 2.59-520.fc43 fedora 103.7 KiB perl-DynaLoader aarch64 1.57-524.fc43 updates 32.1 KiB perl-Encode aarch64 4:3.21-520.fc43 fedora 4.8 MiB perl-Errno aarch64 1.38-524.fc43 updates 8.4 KiB perl-Error noarch 1:0.17030-2.fc43 fedora 76.7 KiB perl-Exporter noarch 5.79-520.fc43 fedora 54.3 KiB perl-Fcntl aarch64 1.20-524.fc43 updates 92.7 KiB perl-File-Basename noarch 2.86-524.fc43 updates 14.0 KiB perl-File-Path noarch 2.18-520.fc43 fedora 63.5 KiB perl-File-Temp noarch 1:0.231.100-520.fc43 fedora 162.3 KiB perl-File-stat noarch 1.14-524.fc43 updates 12.5 KiB perl-FileHandle noarch 2.05-524.fc43 updates 9.4 KiB perl-Getopt-Long noarch 1:2.58-520.fc43 fedora 144.5 KiB perl-Getopt-Std noarch 1.14-524.fc43 updates 11.2 KiB perl-Git noarch 2.56.0-1.fc43 updates 64.4 KiB perl-HTTP-Tiny noarch 0.096-1.fc43 updates 162.4 KiB perl-IO aarch64 1.55-524.fc43 updates 191.3 KiB perl-IO-Socket-IP noarch 0.43-521.fc43 fedora 100.3 KiB perl-IO-Socket-SSL noarch 2.095-2.fc43 fedora 714.5 KiB perl-IPC-Open3 noarch 1.24-524.fc43 updates 27.7 KiB perl-MIME-Base32 noarch 1.303-24.fc43 fedora 30.7 KiB perl-MIME-Base64 aarch64 3.16-520.fc43 fedora 94.1 KiB perl-Net-SSLeay aarch64 1.94-11.fc43 fedora 1.4 MiB perl-POSIX aarch64 2.23-524.fc43 updates 261.4 KiB perl-PathTools aarch64 3.94-520.fc43 fedora 224.0 KiB perl-Pod-Escapes noarch 1:1.07-520.fc43 fedora 24.9 KiB perl-Pod-Perldoc noarch 3.28.01-521.fc43 fedora 163.7 KiB perl-Pod-Simple noarch 1:3.47-3.fc43 fedora 565.3 KiB perl-Pod-Usage noarch 4:2.05-520.fc43 fedora 86.3 KiB perl-Scalar-List-Utils aarch64 5:1.70-1.fc43 fedora 152.9 KiB perl-SelectSaver noarch 1.02-524.fc43 updates 2.2 KiB perl-Socket aarch64 4:2.043-1.fc43 updates 145.8 KiB perl-Storable aarch64 1:3.37-521.fc43 fedora 243.2 KiB perl-Symbol noarch 1.09-524.fc43 updates 6.8 KiB perl-Term-ANSIColor noarch 5.01-521.fc43 fedora 97.5 KiB perl-Term-Cap noarch 1.18-520.fc43 fedora 29.3 KiB perl-TermReadKey aarch64 2.38-26.fc43 fedora 108.0 KiB perl-Text-ParseWords noarch 3.31-520.fc43 fedora 13.6 KiB perl-Text-Tabs+Wrap noarch 2024.001-520.fc43 fedora 22.6 KiB perl-Time-HiRes aarch64 4:1.9778-520.fc43 fedora 151.8 KiB perl-Time-Local noarch 2:1.350-520.fc43 fedora 69.0 KiB perl-URI noarch 5.36-1.fc43 updates 275.7 KiB perl-Unicode-Normalize aarch64 1.32-520.fc43 fedora 524.6 KiB perl-base noarch 2.27-524.fc43 updates 12.6 KiB perl-constant noarch 1.33-521.fc43 fedora 26.2 KiB perl-if noarch 0.61.000-524.fc43 updates 5.8 KiB perl-interpreter aarch64 4:5.42.3-524.fc43 updates 174.8 KiB perl-lib aarch64 0.65-524.fc43 updates 8.5 KiB perl-libnet noarch 3.15-521.fc43 fedora 289.4 KiB perl-libs aarch64 4:5.42.3-524.fc43 updates 11.6 MiB perl-locale noarch 1.13-524.fc43 updates 6.1 KiB perl-mro aarch64 1.29-524.fc43 updates 81.4 KiB perl-overload noarch 1.40-524.fc43 updates 71.6 KiB perl-overloading noarch 0.02-524.fc43 updates 4.9 KiB perl-parent noarch 1:0.244-520.fc43 fedora 10.3 KiB perl-podlators noarch 1:6.0.2-520.fc43 fedora 317.5 KiB perl-vars noarch 1.05-524.fc43 updates 3.9 KiB python-pip-wheel noarch 25.1.1-19.fc43 updates 1.2 MiB python3 aarch64 3.14.7-1.fc43 updates 84.7 KiB python3-libs aarch64 3.14.7-1.fc43 updates 45.3 MiB tzdata noarch 2026c-1.fc43 updates 1.6 MiB Transaction Summary: Installing: 113 packages Total size of inbound packages is 144 MiB. Need to download 144 MiB. After this operation, 512 MiB extra will be used (install 512 MiB, remove 0 B). [ 1/113] help2man-0:1.49.3-8.fc43.noar 100% | 9.6 MiB/s | 226.8 KiB | 00m00s [ 2/113] lz4-devel-0:1.10.0-3.fc43.aar 100% | 10.4 MiB/s | 32.1 KiB | 00m00s [ 3/113] make-1:4.4.1-11.fc43.aarch64 100% | 94.7 MiB/s | 582.0 KiB | 00m00s [ 4/113] crystal-0:1.21.1-1.fc43.aarch 100% | 121.9 MiB/s | 4.9 MiB | 00m00s [ 5/113] shards-0:0.20.0-1.fc43.aarch6 100% | 57.0 MiB/s | 408.8 KiB | 00m00s [ 6/113] openssl-devel-1:3.5.8-1.fc43. 100% | 66.1 MiB/s | 3.0 MiB | 00m00s [ 7/113] systemd-rpm-macros-0:258.11-1 100% | 2.2 MiB/s | 17.9 KiB | 00m00s [ 8/113] zlib-ng-compat-devel-0:2.3.3- 100% | 5.3 MiB/s | 37.8 KiB | 00m00s [ 9/113] gc-devel-0:8.2.6-5.fc43.aarch 100% | 8.7 MiB/s | 115.9 KiB | 00m00s [ 10/113] perl-Getopt-Long-1:2.58-520.f 100% | 10.4 MiB/s | 63.6 KiB | 00m00s [ 11/113] perl-Text-ParseWords-0:3.31-5 100% | 1.3 MiB/s | 16.3 KiB | 00m00s [ 12/113] perl-Text-Tabs+Wrap-0:2024.00 100% | 1.6 MiB/s | 21.6 KiB | 00m00s [ 13/113] gc-0:8.2.6-5.fc43.aarch64 100% | 11.8 MiB/s | 108.4 KiB | 00m00s [ 14/113] libyaml-0:0.2.5-17.fc43.aarch 100% | 8.1 MiB/s | 57.8 KiB | 00m00s [ 15/113] etcd-0:3.5.13-1.fc41.aarch64 100% | 82.6 MiB/s | 15.8 MiB | 00m00s [ 16/113] libmpc-0:1.3.1-8.fc43.aarch64 100% | 3.2 MiB/s | 71.1 KiB | 00m00s [ 17/113] perl-Exporter-0:5.79-520.fc43 100% | 1.9 MiB/s | 30.9 KiB | 00m00s [ 18/113] gcc-0:15.3.1-1.fc43.aarch64 100% | 165.4 MiB/s | 36.2 MiB | 00m00s [ 19/113] perl-Pod-Usage-4:2.05-520.fc4 100% | 794.8 KiB/s | 40.5 KiB | 00m00s [ 20/113] cpp-0:15.3.1-1.fc43.aarch64 100% | 122.4 MiB/s | 11.8 MiB | 00m00s [ 21/113] perl-constant-0:1.33-521.fc43 100% | 813.2 KiB/s | 22.8 KiB | 00m00s [ 22/113] perl-Carp-0:1.54-520.fc43.noa 100% | 1.0 MiB/s | 28.7 KiB | 00m00s [ 23/113] perl-Pod-Perldoc-0:3.28.01-52 100% | 13.7 MiB/s | 84.3 KiB | 00m00s [ 24/113] perl-podlators-1:6.0.2-520.fc 100% | 17.9 MiB/s | 128.3 KiB | 00m00s [ 25/113] perl-PathTools-0:3.94-520.fc4 100% | 9.5 MiB/s | 87.3 KiB | 00m00s [ 26/113] perl-Scalar-List-Utils-5:1.70 100% | 10.2 MiB/s | 73.0 KiB | 00m00s [ 27/113] perl-File-Temp-1:0.231.100-52 100% | 8.2 MiB/s | 59.0 KiB | 00m00s [ 28/113] perl-Encode-4:3.21-520.fc43.a 100% | 104.2 MiB/s | 1.0 MiB | 00m00s [ 29/113] perl-Pod-Simple-1:3.47-3.fc43 100% | 35.8 MiB/s | 219.9 KiB | 00m00s [ 30/113] perl-parent-1:0.244-520.fc43. 100% | 3.6 MiB/s | 14.8 KiB | 00m00s [ 31/113] perl-Term-ANSIColor-0:5.01-52 100% | 15.5 MiB/s | 47.6 KiB | 00m00s [ 32/113] perl-Term-Cap-0:1.18-520.fc43 100% | 5.4 MiB/s | 21.9 KiB | 00m00s [ 33/113] perl-MIME-Base64-0:3.16-520.f 100% | 9.7 MiB/s | 29.9 KiB | 00m00s [ 34/113] perl-File-Path-0:2.18-520.fc4 100% | 11.4 MiB/s | 35.1 KiB | 00m00s [ 35/113] perl-Storable-1:3.37-521.fc43 100% | 15.6 MiB/s | 95.8 KiB | 00m00s [ 36/113] perl-Pod-Escapes-1:1.07-520.f 100% | 2.8 MiB/s | 19.8 KiB | 00m00s [ 37/113] cmake-filesystem-0:3.31.11-1. 100% | 2.6 MiB/s | 13.3 KiB | 00m00s [ 38/113] glibc-devel-0:2.42-17.fc43.aa 100% | 138.6 MiB/s | 567.8 KiB | 00m00s [ 39/113] libasan-0:15.3.1-1.fc43.aarch 100% | 71.5 MiB/s | 512.6 KiB | 00m00s [ 40/113] libatomic-0:15.3.1-1.fc43.aar 100% | 13.5 MiB/s | 55.1 KiB | 00m00s [ 41/113] perl-File-Basename-0:2.86-524 100% | 8.0 MiB/s | 16.3 KiB | 00m00s [ 42/113] libubsan-0:15.3.1-1.fc43.aarc 100% | 57.3 MiB/s | 234.9 KiB | 00m00s [ 43/113] ncurses-0:6.5-7.20250614.fc43 100% | 19.7 MiB/s | 424.5 KiB | 00m00s [ 44/113] perl-POSIX-0:2.23-524.fc43.aa 100% | 18.7 MiB/s | 95.5 KiB | 00m00s [ 45/113] perl-Errno-0:1.38-524.fc43.aa 100% | 3.4 MiB/s | 14.1 KiB | 00m00s [ 46/113] perl-interpreter-4:5.42.3-524 100% | 14.0 MiB/s | 71.6 KiB | 00m00s [ 47/113] perl-vars-0:1.05-524.fc43.noa 100% | 2.4 MiB/s | 12.1 KiB | 00m00s [ 48/113] perl-libs-4:5.42.3-524.fc43.a 100% | 138.7 MiB/s | 2.5 MiB | 00m00s [ 49/113] perl-Fcntl-0:1.20-524.fc43.aa 100% | 3.1 MiB/s | 28.9 KiB | 00m00s [ 50/113] perl-IO-0:1.55-524.fc43.aarch 100% | 19.8 MiB/s | 81.3 KiB | 00m00s [ 51/113] perl-Symbol-0:1.09-524.fc43.n 100% | 6.5 MiB/s | 13.4 KiB | 00m00s [ 52/113] perl-if-0:0.61.000-524.fc43.n 100% | 6.4 MiB/s | 13.2 KiB | 00m00s [ 53/113] perl-overload-0:1.40-524.fc43 100% | 21.8 MiB/s | 44.7 KiB | 00m00s [ 54/113] perl-IO-Socket-SSL-0:2.095-2. 100% | 56.5 MiB/s | 231.5 KiB | 00m00s [ 55/113] perl-HTTP-Tiny-0:0.096-1.fc43 100% | 8.0 MiB/s | 57.6 KiB | 00m00s [ 56/113] groff-base-0:1.23.0-11.fc43.a 100% | 89.3 MiB/s | 1.1 MiB | 00m00s [ 57/113] perl-Net-SSLeay-0:1.94-11.fc4 100% | 52.6 MiB/s | 376.8 KiB | 00m00s [ 58/113] perl-Time-HiRes-4:1.9778-520. 100% | 11.2 MiB/s | 57.3 KiB | 00m00s [ 59/113] perl-IPC-Open3-0:1.24-524.fc4 100% | 11.3 MiB/s | 23.1 KiB | 00m00s [ 60/113] perl-IO-Socket-IP-0:0.43-521. 100% | 13.7 MiB/s | 42.1 KiB | 00m00s [ 61/113] perl-Time-Local-2:1.350-520.f 100% | 8.4 MiB/s | 34.4 KiB | 00m00s [ 62/113] perl-Socket-4:2.043-1.fc43.aa 100% | 26.9 MiB/s | 55.1 KiB | 00m00s [ 63/113] perl-AutoLoader-0:5.74-524.fc 100% | 6.6 MiB/s | 20.4 KiB | 00m00s [ 64/113] perl-URI-0:5.36-1.fc43.noarch 100% | 36.4 MiB/s | 149.0 KiB | 00m00s [ 65/113] perl-MIME-Base32-0:1.303-24.f 100% | 9.9 MiB/s | 20.4 KiB | 00m00s [ 66/113] perl-Unicode-Normalize-0:1.32 100% | 23.6 MiB/s | 72.4 KiB | 00m00s [ 67/113] perl-Digest-MD5-0:2.59-520.fc 100% | 8.7 MiB/s | 35.8 KiB | 00m00s [ 68/113] perl-libnet-0:3.15-521.fc43.n 100% | 25.1 MiB/s | 128.3 KiB | 00m00s [ 69/113] perl-Digest-0:1.20-520.fc43.n 100% | 8.1 MiB/s | 24.8 KiB | 00m00s [ 70/113] perl-Getopt-Std-0:1.14-524.fc 100% | 4.8 MiB/s | 14.8 KiB | 00m00s [ 71/113] git-0:2.56.0-1.fc43.aarch64 100% | 13.2 MiB/s | 40.5 KiB | 00m00s [ 72/113] perl-base-0:2.27-524.fc43.noa 100% | 3.0 MiB/s | 15.4 KiB | 00m00s [ 73/113] perl-TermReadKey-0:2.38-26.fc 100% | 6.9 MiB/s | 35.4 KiB | 00m00s [ 74/113] perl-Git-0:2.56.0-1.fc43.noar 100% | 4.5 MiB/s | 37.1 KiB | 00m00s [ 75/113] expat-0:2.8.3-1.fc43.aarch64 100% | 20.1 MiB/s | 123.3 KiB | 00m00s [ 76/113] git-core-doc-0:2.56.0-1.fc43. 100% | 138.9 MiB/s | 3.2 MiB | 00m00s [ 77/113] perl-Error-1:0.17030-2.fc43.n 100% | 5.6 MiB/s | 40.2 KiB | 00m00s [ 78/113] git-core-0:2.56.0-1.fc43.aarc 100% | 157.3 MiB/s | 5.7 MiB | 00m00s [ 79/113] lld-0:21.1.8-6.fc43.aarch64 100% | 4.8 MiB/s | 39.7 KiB | 00m00s [ 80/113] libevent-devel-0:2.1.13-1.fc4 100% | 8.9 MiB/s | 100.2 KiB | 00m00s [ 81/113] llvm-filesystem-0:21.1.8-6.fc 100% | 6.7 MiB/s | 13.8 KiB | 00m00s [ 82/113] pcre2-devel-0:10.47-1.fc43.aa 100% | 76.8 MiB/s | 550.9 KiB | 00m00s [ 83/113] pcre2-utf16-0:10.47-1.fc43.aa 100% | 44.1 MiB/s | 225.9 KiB | 00m00s [ 84/113] pcre2-utf32-0:10.47-1.fc43.aa 100% | 42.1 MiB/s | 215.6 KiB | 00m00s [ 85/113] perl-mro-0:1.29-524.fc43.aarc 100% | 4.7 MiB/s | 28.6 KiB | 00m00s [ 86/113] perl-overloading-0:0.02-524.f 100% | 3.9 MiB/s | 12.1 KiB | 00m00s [ 87/113] perl-DynaLoader-0:1.57-524.fc 100% | 4.1 MiB/s | 25.1 KiB | 00m00s [ 88/113] perl-Data-Dumper-0:2.192-522. 100% | 10.7 MiB/s | 54.6 KiB | 00m00s [ 89/113] perl-locale-0:1.13-524.fc43.n 100% | 2.5 MiB/s | 12.7 KiB | 00m00s [ 90/113] perl-File-stat-0:1.14-524.fc4 100% | 5.3 MiB/s | 16.2 KiB | 00m00s [ 91/113] perl-SelectSaver-0:1.02-524.f 100% | 1.3 MiB/s | 10.9 KiB | 00m00s [ 92/113] perl-Class-Struct-0:0.68-524. 100% | 6.9 MiB/s | 21.2 KiB | 00m00s [ 93/113] perl-B-0:1.89-524.fc43.aarch6 100% | 15.7 MiB/s | 176.7 KiB | 00m00s [ 94/113] libedit-0:3.1-58.20260512cvs. 100% | 25.5 MiB/s | 104.6 KiB | 00m00s [ 95/113] python3-0:3.14.7-1.fc43.aarch 100% | 5.7 MiB/s | 29.2 KiB | 00m00s [ 96/113] python3-libs-0:3.14.7-1.fc43. 100% | 168.5 MiB/s | 9.8 MiB | 00m00s [ 97/113] llvm-libs-0:21.1.8-6.fc43.aar 100% | 186.1 MiB/s | 33.3 MiB | 00m00s [ 98/113] lld-libs-0:21.1.8-6.fc43.aarc 100% | 9.8 MiB/s | 1.8 MiB | 00m00s [ 99/113] mpdecimal-0:4.0.1-2.fc43.aarc 100% | 2.6 MiB/s | 95.8 KiB | 00m00s [100/113] libxcrypt-devel-0:4.5.2-1.fc4 100% | 5.8 MiB/s | 29.9 KiB | 00m00s [101/113] kernel-headers-0:7.2.4-100.fc 100% | 131.9 MiB/s | 1.7 MiB | 00m00s [102/113] less-0:704-4.fc43.aarch64 100% | 21.6 MiB/s | 221.2 KiB | 00m00s [103/113] openssh-clients-0:10.0p1-12.f 100% | 65.3 MiB/s | 735.1 KiB | 00m00s [104/113] libfido2-0:1.16.0-3.fc43.aarc 100% | 13.5 MiB/s | 96.5 KiB | 00m00s [105/113] openssh-0:10.0p1-12.fc43.aarc 100% | 40.8 MiB/s | 334.0 KiB | 00m00s [106/113] libcbor-0:0.12.0-6.fc43.aarch 100% | 4.5 MiB/s | 32.6 KiB | 00m00s [107/113] perl-lib-0:0.65-524.fc43.aarc 100% | 2.0 MiB/s | 14.1 KiB | 00m00s [108/113] perl-FileHandle-0:2.05-524.fc 100% | 2.4 MiB/s | 14.7 KiB | 00m00s [109/113] python-pip-wheel-0:25.1.1-19. 100% | 150.6 MiB/s | 1.2 MiB | 00m00s [110/113] tzdata-0:2026c-1.fc43.noarch 100% | 69.5 MiB/s | 711.5 KiB | 00m00s [111/113] annobin-plugin-gcc-0:12.99-1. 100% | 74.8 MiB/s | 995.9 KiB | 00m00s [112/113] gcc-plugin-annobin-0:15.3.1-1 100% | 9.4 MiB/s | 67.2 KiB | 00m00s [113/113] annobin-docs-0:12.99-1.fc43.n 100% | 14.6 MiB/s | 89.5 KiB | 00m00s -------------------------------------------------------------------------------- [113/113] Total 100% | 220.1 MiB/s | 144.4 MiB | 00m01s Running transaction [ 1/115] Verify package files 100% | 240.0 B/s | 113.0 B | 00m00s >>> Running %pretrans scriptlet: crystal-0:1.21.1-1.fc43.aarch64 >>> Finished %pretrans scriptlet: crystal-0:1.21.1-1.fc43.aarch64 >>> [RPM] /var/lib/mock/fedora-43-aarch64-1791398091.957105/root/var/cache/dnf/h [ 2/115] Prepare transaction 100% | 856.0 B/s | 113.0 B | 00m00s [ 3/115] Installing libedit-0:3.1-58.2 100% | 137.7 MiB/s | 281.9 KiB | 00m00s [ 4/115] Installing expat-0:2.8.3-1.fc 100% | 18.6 MiB/s | 380.3 KiB | 00m00s [ 5/115] Installing libmpc-0:1.3.1-8.f 100% | 75.3 MiB/s | 154.2 KiB | 00m00s [ 6/115] Installing gc-0:8.2.6-5.fc43. 100% | 197.7 MiB/s | 404.8 KiB | 00m00s [ 7/115] Installing gc-devel-0:8.2.6-5 100% | 130.7 MiB/s | 401.4 KiB | 00m00s [ 8/115] Installing cpp-0:15.3.1-1.fc4 100% | 264.6 MiB/s | 35.5 MiB | 00m00s [ 9/115] Installing annobin-docs-0:12. 100% | 19.5 MiB/s | 100.1 KiB | 00m00s [ 10/115] Installing tzdata-0:2026c-1.f 100% | 31.4 MiB/s | 1.9 MiB | 00m00s [ 11/115] Installing python-pip-wheel-0 100% | 623.0 MiB/s | 1.2 MiB | 00m00s [ 12/115] Installing libcbor-0:0.12.0-6 100% | 136.0 MiB/s | 139.3 KiB | 00m00s [ 13/115] Installing libfido2-0:1.16.0- 100% | 136.8 MiB/s | 280.3 KiB | 00m00s [ 14/115] Installing openssh-0:10.0p1-1 100% | 63.3 MiB/s | 1.4 MiB | 00m00s [ 15/115] Installing openssh-clients-0: 100% | 84.2 MiB/s | 2.7 MiB | 00m00s [ 16/115] Installing less-0:704-4.fc43. 100% | 28.4 MiB/s | 611.1 KiB | 00m00s [ 17/115] Installing git-core-0:2.56.0- 100% | 281.5 MiB/s | 27.0 MiB | 00m00s [ 18/115] Installing git-core-doc-0:2.5 100% | 232.1 MiB/s | 19.3 MiB | 00m00s [ 19/115] Installing kernel-headers-0:7 100% | 127.8 MiB/s | 7.0 MiB | 00m00s [ 20/115] Installing glibc-devel-0:2.42 100% | 100.8 MiB/s | 2.3 MiB | 00m00s [ 21/115] Installing libxcrypt-devel-0: 100% | 32.6 MiB/s | 33.4 KiB | 00m00s [ 22/115] Installing mpdecimal-0:4.0.1- 100% | 39.4 MiB/s | 282.7 KiB | 00m00s [ 23/115] Installing python3-libs-0:3.1 100% | 240.6 MiB/s | 45.7 MiB | 00m00s [ 24/115] Installing python3-0:3.14.7-1 100% | 4.7 MiB/s | 86.5 KiB | 00m00s [ 25/115] Installing libevent-devel-0:2 100% | 21.1 MiB/s | 432.4 KiB | 00m00s [ 26/115] Installing pcre2-utf32-0:10.4 100% | 285.0 MiB/s | 583.7 KiB | 00m00s [ 27/115] Installing pcre2-utf16-0:10.4 100% | 190.0 MiB/s | 583.8 KiB | 00m00s [ 28/115] Installing pcre2-devel-0:10.4 100% | 75.7 MiB/s | 2.1 MiB | 00m00s [ 29/115] Installing llvm-filesystem-0: 100% | 1.0 MiB/s | 1.1 KiB | 00m00s [ 30/115] Installing llvm-libs-0:21.1.8 100% | 359.1 MiB/s | 132.9 MiB | 00m00s [ 31/115] Installing lld-libs-0:21.1.8- 100% | 327.5 MiB/s | 6.2 MiB | 00m00s [ 32/115] Installing lld-0:21.1.8-6.fc4 100% | 1.4 MiB/s | 47.4 KiB | 00m00s [ 33/115] Installing groff-base-0:1.23. 100% | 91.2 MiB/s | 4.2 MiB | 00m00s [ 34/115] Installing libubsan-0:15.3.1- 100% | 155.1 MiB/s | 476.4 KiB | 00m00s [ 35/115] Installing libatomic-0:15.3.1 100% | 68.0 MiB/s | 69.6 KiB | 00m00s [ 36/115] Installing libasan-0:15.3.1-1 100% | 308.1 MiB/s | 1.5 MiB | 00m00s [ 37/115] Installing cmake-filesystem-0 100% | 3.7 MiB/s | 7.6 KiB | 00m00s [ 38/115] Installing ncurses-0:6.5-7.20 100% | 41.9 MiB/s | 900.2 KiB | 00m00s [ 39/115] Installing perl-Digest-0:1.20 100% | 36.2 MiB/s | 37.1 KiB | 00m00s [ 40/115] Installing perl-FileHandle-0: 100% | 9.6 MiB/s | 9.8 KiB | 00m00s [ 41/115] Installing perl-B-0:1.89-524. 100% | 178.6 MiB/s | 548.6 KiB | 00m00s [ 42/115] Installing perl-Digest-MD5-0: 100% | 103.2 MiB/s | 105.6 KiB | 00m00s [ 43/115] Installing perl-libnet-0:3.15 100% | 143.9 MiB/s | 294.7 KiB | 00m00s [ 44/115] Installing perl-Data-Dumper-0 100% | 134.2 MiB/s | 137.4 KiB | 00m00s [ 45/115] Installing perl-Unicode-Norma 100% | 257.2 MiB/s | 526.8 KiB | 00m00s [ 46/115] Installing perl-MIME-Base32-0 100% | 31.4 MiB/s | 32.2 KiB | 00m00s [ 47/115] Installing perl-URI-0:5.36-1. 100% | 56.5 MiB/s | 289.5 KiB | 00m00s [ 48/115] Installing perl-IO-Socket-IP- 100% | 99.8 MiB/s | 102.2 KiB | 00m00s [ 49/115] Installing perl-AutoLoader-0: 100% | 0.0 B/s | 21.0 KiB | 00m00s [ 50/115] Installing perl-IO-Socket-SSL 100% | 233.9 MiB/s | 718.6 KiB | 00m00s [ 51/115] Installing perl-locale-0:1.13 100% | 6.4 MiB/s | 6.5 KiB | 00m00s [ 52/115] Installing perl-Net-SSLeay-0: 100% | 179.1 MiB/s | 1.4 MiB | 00m00s [ 53/115] Installing perl-Time-Local-2: 100% | 68.9 MiB/s | 70.6 KiB | 00m00s [ 54/115] Installing perl-Time-HiRes-4: 100% | 150.2 MiB/s | 153.8 KiB | 00m00s [ 55/115] Installing perl-if-0:0.61.000 100% | 0.0 B/s | 6.2 KiB | 00m00s [ 56/115] Installing perl-Pod-Escapes-1 100% | 25.3 MiB/s | 25.9 KiB | 00m00s [ 57/115] Installing perl-File-Path-0:2 100% | 63.0 MiB/s | 64.5 KiB | 00m00s [ 58/115] Installing perl-Text-Tabs+Wra 100% | 23.3 MiB/s | 23.9 KiB | 00m00s [ 59/115] Installing perl-Pod-Simple-1: 100% | 140.3 MiB/s | 574.9 KiB | 00m00s [ 60/115] Installing perl-HTTP-Tiny-0:0 100% | 160.6 MiB/s | 164.5 KiB | 00m00s [ 61/115] Installing perl-Class-Struct- 100% | 0.0 B/s | 25.9 KiB | 00m00s [ 62/115] Installing perl-IPC-Open3-0:1 100% | 27.8 MiB/s | 28.5 KiB | 00m00s [ 63/115] Installing perl-File-Temp-1:0 100% | 160.2 MiB/s | 164.1 KiB | 00m00s [ 64/115] Installing perl-POSIX-0:2.23- 100% | 128.2 MiB/s | 262.6 KiB | 00m00s [ 65/115] Installing perl-Term-Cap-0:1. 100% | 29.9 MiB/s | 30.6 KiB | 00m00s [ 66/115] Installing perl-Term-ANSIColo 100% | 96.9 MiB/s | 99.2 KiB | 00m00s [ 67/115] Installing perl-podlators-1:6 100% | 16.5 MiB/s | 321.4 KiB | 00m00s [ 68/115] Installing perl-Pod-Perldoc-0 100% | 8.7 MiB/s | 169.2 KiB | 00m00s [ 69/115] Installing perl-File-stat-0:1 100% | 12.8 MiB/s | 13.1 KiB | 00m00s [ 70/115] Installing perl-SelectSaver-0 100% | 0.0 B/s | 2.6 KiB | 00m00s [ 71/115] Installing perl-Socket-4:2.04 100% | 72.2 MiB/s | 147.8 KiB | 00m00s [ 72/115] Installing perl-Symbol-0:1.09 100% | 0.0 B/s | 7.3 KiB | 00m00s [ 73/115] Installing perl-Pod-Usage-4:2 100% | 4.8 MiB/s | 87.9 KiB | 00m00s [ 74/115] Installing perl-IO-0:1.55-524 100% | 95.5 MiB/s | 195.5 KiB | 00m00s [ 75/115] Installing perl-overloading-0 100% | 0.0 B/s | 5.6 KiB | 00m00s [ 76/115] Installing perl-mro-0:1.29-52 100% | 80.6 MiB/s | 82.5 KiB | 00m00s [ 77/115] Installing perl-base-0:2.27-5 100% | 0.0 B/s | 13.0 KiB | 00m00s [ 78/115] Installing perl-Fcntl-0:1.20- 100% | 91.6 MiB/s | 93.8 KiB | 00m00s [ 79/115] Installing perl-Text-ParseWor 100% | 14.2 MiB/s | 14.6 KiB | 00m00s [ 80/115] Installing perl-Getopt-Long-1 100% | 71.9 MiB/s | 147.2 KiB | 00m00s [ 81/115] Installing perl-Storable-1:3. 100% | 119.5 MiB/s | 244.8 KiB | 00m00s [ 82/115] Installing perl-overload-0:1. 100% | 70.3 MiB/s | 72.0 KiB | 00m00s [ 83/115] Installing perl-Getopt-Std-0: 100% | 0.0 B/s | 11.8 KiB | 00m00s [ 84/115] Installing perl-vars-0:1.05-5 100% | 0.0 B/s | 4.3 KiB | 00m00s [ 85/115] Installing perl-Errno-0:1.38- 100% | 0.0 B/s | 8.8 KiB | 00m00s [ 86/115] Installing perl-File-Basename 100% | 0.0 B/s | 14.6 KiB | 00m00s [ 87/115] Installing perl-MIME-Base64-0 100% | 94.0 MiB/s | 96.3 KiB | 00m00s [ 88/115] Installing perl-parent-1:0.24 100% | 10.7 MiB/s | 11.0 KiB | 00m00s [ 89/115] Installing perl-Scalar-List-U 100% | 76.5 MiB/s | 156.7 KiB | 00m00s [ 90/115] Installing perl-constant-0:1. 100% | 26.7 MiB/s | 27.4 KiB | 00m00s [ 91/115] Installing perl-Encode-4:3.21 100% | 146.7 MiB/s | 4.8 MiB | 00m00s [ 92/115] Installing perl-DynaLoader-0: 100% | 31.7 MiB/s | 32.5 KiB | 00m00s [ 93/115] Installing perl-PathTools-0:3 100% | 111.6 MiB/s | 228.6 KiB | 00m00s [ 94/115] Installing perl-Carp-0:1.54-5 100% | 46.6 MiB/s | 47.7 KiB | 00m00s [ 95/115] Installing perl-Exporter-0:5. 100% | 18.1 MiB/s | 55.6 KiB | 00m00s [ 96/115] Installing perl-libs-4:5.42.3 100% | 192.6 MiB/s | 11.7 MiB | 00m00s [ 97/115] Installing perl-interpreter-4 100% | 9.6 MiB/s | 176.5 KiB | 00m00s [ 98/115] Installing perl-TermReadKey-0 100% | 53.8 MiB/s | 110.2 KiB | 00m00s [ 99/115] Installing perl-Error-1:0.170 100% | 78.1 MiB/s | 80.0 KiB | 00m00s [100/115] Installing perl-lib-0:0.65-52 100% | 0.0 B/s | 8.9 KiB | 00m00s [101/115] Installing git-0:2.56.0-1.fc4 100% | 57.6 MiB/s | 59.0 KiB | 00m00s [102/115] Installing perl-Git-0:2.56.0- 100% | 63.8 MiB/s | 65.4 KiB | 00m00s [103/115] Installing libyaml-0:0.2.5-17 100% | 132.7 MiB/s | 135.8 KiB | 00m00s [104/115] Installing make-1:4.4.1-11.fc 100% | 71.2 MiB/s | 1.9 MiB | 00m00s [105/115] Installing gcc-0:15.3.1-1.fc4 100% | 318.6 MiB/s | 99.7 MiB | 00m00s [106/115] Installing crystal-0:1.21.1-1 100% | 149.2 MiB/s | 22.8 MiB | 00m00s [107/115] Installing shards-0:0.20.0-1. 100% | 56.5 MiB/s | 1.2 MiB | 00m00s [108/115] Installing annobin-plugin-gcc 100% | 58.7 MiB/s | 1.0 MiB | 00m00s [109/115] Installing gcc-plugin-annobin 100% | 4.1 MiB/s | 70.7 KiB | 00m00s [110/115] Installing help2man-0:1.49.3- 100% | 17.3 MiB/s | 425.4 KiB | 00m00s [111/115] Installing zlib-ng-compat-dev 100% | 106.0 MiB/s | 108.6 KiB | 00m00s [112/115] Installing systemd-rpm-macros 100% | 990.9 KiB/s | 8.9 KiB | 00m00s [113/115] Installing openssl-devel-1:3. 100% | 45.6 MiB/s | 5.5 MiB | 00m00s [114/115] Installing lz4-devel-0:1.10.0 100% | 8.4 MiB/s | 103.2 KiB | 00m00s [115/115] Installing etcd-0:3.5.13-1.fc 100% | 146.2 MiB/s | 59.6 MiB | 00m00s Warning: skipped OpenPGP checks for 2 packages from repository: https_download_copr_fedorainfracloud_org_results_zawertun_crystal_fedora_43_aarch64 Complete! Building target platforms: aarch64 Building for target aarch64 setting SOURCE_DATE_EPOCH=1791331200 Wrote: /builddir/build/SRPMS/lavinmq-2.10.2-1.fc43.src.rpm Updating and loading repositories: Additional repo https_download_copr_fe 100% | 69.0 KiB/s | 1.5 KiB | 00m00s Copr repository 100% | 68.9 KiB/s | 1.5 KiB | 00m00s fedora 100% | 44.9 KiB/s | 11.6 KiB | 00m00s updates 100% | 75.8 KiB/s | 10.3 KiB | 00m00s Repositories loaded. Package "crystal-1.21.1-1.fc43.aarch64" is already installed. Package "etcd-3.5.13-1.fc41.aarch64" is already installed. Package "forge-srpm-macros-0.4.0-3.fc43.noarch" is already installed. Package "gcc-15.3.1-1.fc43.aarch64" is already installed. Package "help2man-1.49.3-8.fc43.noarch" is already installed. Package "lz4-devel-1.10.0-3.fc43.aarch64" is already installed. Package "make-1:4.4.1-11.fc43.aarch64" is already installed. Package "openssl-devel-1:3.5.8-1.fc43.aarch64" is already installed. Package "shards-0.20.0-1.fc43.aarch64" is already installed. Package "systemd-rpm-macros-258.11-1.fc43.noarch" is already installed. Package "zlib-ng-compat-devel-2.3.3-2.fc43.aarch64" is already installed. Nothing to do. Finish: build setup for lavinmq-2.10.2-1.fc43.src.rpm Start: rpmbuild lavinmq-2.10.2-1.fc43.src.rpm Building target platforms: aarch64 Building for target aarch64 setting SOURCE_DATE_EPOCH=1791331200 Executing(%mkbuilddir): /bin/sh -e /var/tmp/rpm-tmp.SNB6Dg Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.hjChP8 + umask 022 + cd /builddir/build/BUILD/lavinmq-2.10.2-build + cd /builddir/build/BUILD/lavinmq-2.10.2-build + rm -rf lavinmq-2.10.2 + /usr/lib/rpm/rpmuncompress -x /builddir/build/SOURCES/lavinmq-2.10.2.tar.gz + STATUS=0 + '[' 0 -ne 0 ']' + cd lavinmq-2.10.2 + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + echo 'Patch #0 (0001-lavinmq-makefile_fixes.patch):' Patch #0 (0001-lavinmq-makefile_fixes.patch): + /usr/bin/patch --no-backup-if-mismatch -f -p1 --fuzz=0 patching file Makefile + mkdir -p static/js/lib/chunks + tar -zxOf /builddir/build/SOURCES/chart.js-4.0.1.tgz package/dist/chart.js + tar -zxOf /builddir/build/SOURCES/chart.js-4.0.1.tgz package/dist/chunks/helpers.segment.js + cp /builddir/build/SOURCES/chartjs-adapter-luxon.esm.js static/js/lib/chartjs-adapter-luxon.esm.js + patch -p0 static/js/lib/chartjs-adapter-luxon.esm.js patching file static/js/lib/chartjs-adapter-luxon.esm.js + cp /builddir/build/SOURCES/luxon.mjs static/js/lib/luxon.js + cp /builddir/build/SOURCES/styles.min.css static/js/lib/elements-8.2.0.css + cp /builddir/build/SOURCES/web-components.min.js static/js/lib/elements-8.2.0.js + RPM_EC=0 ++ jobs -p + exit 0 Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.65PtCN + umask 022 + cd /builddir/build/BUILD/lavinmq-2.10.2-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 -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-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 -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-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 -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 -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-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 -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 -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes -Clink-arg=-specs=/usr/lib/rpm/redhat/redhat-package-notes --cap-lints=warn' + export RUSTFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -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 lavinmq-2.10.2 + export CRYSTAL_CACHE_DIR=/builddir/build/BUILD/lavinmq-2.10.2-build/.crystal-cache + CRYSTAL_CACHE_DIR=/builddir/build/BUILD/lavinmq-2.10.2-build/.crystal-cache + /usr/bin/make -O -j4 V=1 VERBOSE=1 views/render.sh views/401.shtml > static/401.html views/render.sh views/404.shtml > static/404.html views/render.sh views/channel.shtml > static/channel.html views/render.sh views/channels.shtml > static/channels.html views/render.sh views/connections.shtml > static/connections.html views/render.sh views/consumers.shtml > static/consumers.html views/render.sh views/connection.shtml > static/connection.html views/render.sh views/exchange.shtml > static/exchange.html views/render.sh views/login.shtml > static/login.html views/render.sh views/exchanges.shtml > static/exchanges.html views/render.sh views/federation.shtml > static/federation.html views/render.sh views/logs.shtml > static/logs.html views/render.sh views/nodes.shtml > static/nodes.html views/render.sh views/operator-policies.shtml > static/operator-policies.html views/render.sh views/overview.shtml > static/overview.html views/render.sh views/policies.shtml > static/policies.html views/render.sh views/queues.shtml > static/queues.html views/render.sh views/shovels.shtml > static/shovels.html views/render.sh views/queue.shtml > static/queue.html views/render.sh views/stream.shtml > static/stream.html views/render.sh views/unacked.shtml > static/unacked.html views/render.sh views/user.shtml > static/user.html views/render.sh views/users.shtml > static/users.html views/render.sh views/vhost.shtml > static/vhost.html mkdir -p bin mkdir -p man1 views/render.sh views/vhosts.shtml > static/vhosts.html shards install --production I: Resolving dependencies I: Fetching https://github.com/cloudamqp/amqp-client.cr.git I: Fetching https://github.com/cloudamqp/amq-protocol.cr.git I: Fetching https://github.com/84codes/systemd.cr.git I: Fetching https://github.com/84codes/lz4.cr.git I: Fetching https://github.com/84codes/mqtt-protocol.cr.git I: Installing amq-protocol (1.3.1) I: Installing amqp-client (1.3.3) I: Installing systemd (3.0.1) I: Installing lz4 (1.0.0 at 0015e74) I: Installing mqtt-protocol (0.3.1) crystal build src/lavinmq.cr -o bin/lavinmq -Drelease -O3 --stats --link-flags="-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes " Parse: 00:00:00.000103848 ( 1.16MB) Semantic (top level): 00:00:08.649934903 ( 434.29MB) Semantic (new): 00:00:00.007830595 ( 434.29MB) Semantic (type declarations): 00:00:00.054112167 ( 434.29MB) Semantic (abstract def check): 00:00:00.031320414 ( 434.29MB) Semantic (restrictions augmenter): 00:00:00.012254589 ( 434.29MB) Semantic (ivars initializers): 00:00:00.118346480 ( 434.29MB) Semantic (cvars initializers): 00:00:00.052418234 ( 450.29MB) Semantic (main): 00:00:10.709239993 (1155.16MB) Semantic (cleanup): 00:00:00.002303737 (1155.16MB) Semantic (recursive struct check): 00:00:00.002753872 (1155.16MB) Codegen (crystal): 00:00:04.613250378 (1396.16MB) Codegen (bc+obj): 00:00:22.576790635 (1402.16MB) Codegen (linking): 00:00:03.605193738 (1402.16MB) Macro runs: - /builddir/build/BUILD/lavinmq-2.10.2-build/lavinmq-2.10.2/src/lavinmq/http/controller/static/bake.cr: 00:00:07.515470887 - /usr/share/crystal/src/ecr/process.cr: 00:00:07.020374339 Codegen (bc+obj): - no previous .o files were reused help2man --no-discard-stderr -Nn "fast and advanced message queue server" bin/lavinmq -o man1/lavinmq.1 crystal build src/lavinmqctl.cr -o bin/lavinmqctl -Dgc_none -Drelease -O3 --stats --link-flags="-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes " Parse: 00:00:00.000029904 ( 1.16MB) Semantic (top level): 00:00:00.520420221 ( 146.32MB) Semantic (new): 00:00:00.002752935 ( 146.32MB) Semantic (type declarations): 00:00:00.032792452 ( 146.32MB) Semantic (abstract def check): 00:00:00.015798465 ( 146.32MB) Semantic (restrictions augmenter): 00:00:00.008796767 ( 146.32MB) Semantic (ivars initializers): 00:00:00.026213078 ( 162.32MB) Semantic (cvars initializers): 00:00:00.194149914 ( 194.38MB) Semantic (main): 00:00:00.587644402 ( 290.50MB) Semantic (cleanup): 00:00:00.000830708 ( 290.50MB) Semantic (recursive struct check): 00:00:00.001119823 ( 290.50MB) Codegen (crystal): 00:00:00.756637032 ( 338.50MB) Codegen (bc+obj): 00:00:04.908784024 ( 339.25MB) Codegen (linking): 00:00:00.619232131 ( 339.25MB) Codegen (bc+obj): - no previous .o files were reused help2man --no-discard-stderr -Nn "control utility for lavinmq server" bin/lavinmqctl -o man1/lavinmqctl.1 crystal build src/lavinmqperf.cr -o bin/lavinmqperf -Drelease -O3 --stats --link-flags="-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes " Parse: 00:00:00.000136935 ( 1.16MB) Semantic (top level): 00:00:00.543927853 ( 145.66MB) Semantic (new): 00:00:00.002868467 ( 145.66MB) Semantic (type declarations): 00:00:00.032759414 ( 145.66MB) Semantic (abstract def check): 00:00:00.016167607 ( 161.66MB) Semantic (restrictions augmenter): 00:00:00.009052483 ( 161.66MB) Semantic (ivars initializers): 00:00:00.225235338 ( 193.72MB) Semantic (cvars initializers): 00:00:00.009038171 ( 193.72MB) Semantic (main): 00:00:00.701412518 ( 337.84MB) Semantic (cleanup): 00:00:00.000628558 ( 337.84MB) Semantic (recursive struct check): 00:00:00.001403091 ( 337.84MB) Codegen (crystal): 00:00:01.323280589 ( 402.09MB) Codegen (bc+obj): 00:00:06.463885369 ( 403.59MB) Codegen (linking): 00:00:00.882344155 ( 403.59MB) Codegen (bc+obj): - no previous .o files were reused help2man --no-discard-stderr -Nn "performance testing tool for amqp servers" bin/lavinmqperf -o man1/lavinmqperf.1 + RPM_EC=0 ++ jobs -p + exit 0 Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.d2rwJp + umask 022 + cd /builddir/build/BUILD/lavinmq-2.10.2-build + '[' /builddir/build/BUILD/lavinmq-2.10.2-build/BUILDROOT '!=' / ']' + rm -rf /builddir/build/BUILD/lavinmq-2.10.2-build/BUILDROOT ++ dirname /builddir/build/BUILD/lavinmq-2.10.2-build/BUILDROOT + mkdir -p /builddir/build/BUILD/lavinmq-2.10.2-build + mkdir /builddir/build/BUILD/lavinmq-2.10.2-build/BUILDROOT + 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 -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-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 -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-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 -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 -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-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 -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 -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes -Clink-arg=-specs=/usr/lib/rpm/redhat/redhat-package-notes --cap-lints=warn' + export RUSTFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -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 lavinmq-2.10.2 + /usr/bin/make install DESTDIR=/builddir/build/BUILD/lavinmq-2.10.2-build/BUILDROOT 'INSTALL=/usr/bin/install -p' UNITDIR=/usr/lib/systemd/system SYSUSERSDIR=/usr/lib/sysusers.d install -D -m 0755 -t /builddir/build/BUILD/lavinmq-2.10.2-build/BUILDROOT/usr/bin bin/lavinmq bin/lavinmqctl bin/lavinmqperf install -D -m 0644 -t /builddir/build/BUILD/lavinmq-2.10.2-build/BUILDROOT/usr/share/man/man1 man1/lavinmq.1 man1/lavinmqctl.1 man1/lavinmqperf.1 install -D -m 0644 extras/lavinmq.ini /builddir/build/BUILD/lavinmq-2.10.2-build/BUILDROOT/etc/lavinmq/lavinmq.ini install -D -m 0644 extras/lavinmq.service /builddir/build/BUILD/lavinmq-2.10.2-build/BUILDROOT/usr/lib/systemd/system/lavinmq.service install -D -m 0644 extras/lavinmq.sysusers /builddir/build/BUILD/lavinmq-2.10.2-build/BUILDROOT/usr/lib/sysusers.d/lavinmq.conf install -d -m 0750 /builddir/build/BUILD/lavinmq-2.10.2-build/BUILDROOT/var/lib/lavinmq + install -Dpm 0644 /builddir/build/SOURCES/lavinmq-user.service /builddir/build/BUILD/lavinmq-2.10.2-build/BUILDROOT/usr/lib/systemd/user/lavinmq.service + install -d -m 0750 /builddir/build/BUILD/lavinmq-2.10.2-build/BUILDROOT/var/lib/lavinmq + /usr/bin/find-debuginfo -j4 --strict-build-id -m -i --build-id-seed 2.10.2-1.fc43 --unique-debug-suffix -2.10.2-1.fc43.aarch64 --unique-debug-src-base lavinmq-2.10.2-1.fc43.aarch64 --run-dwz --dwz-low-mem-die-limit 10000000 --dwz-max-die-limit 50000000 --remove-section .gnu.build.attributes -S debugsourcefiles.list /builddir/build/BUILD/lavinmq-2.10.2-build/lavinmq-2.10.2 find-debuginfo: starting Extracting debug info from 3 files DWARF-compressing 3 files sepdebugcrcfix: Updated 3 CRC32s, 0 CRC32s did match. Creating .debug symlinks for symlinks to ELF files Copying sources found by 'debugedit -l' to /usr/src/debug/lavinmq-2.10.2-1.fc43.aarch64 find-debuginfo: done + /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/check-rpaths + /usr/lib/rpm/redhat/brp-mangle-shebangs + /usr/lib/rpm/brp-remove-la-files + /usr/lib/rpm/redhat/brp-python-rpm-in-distinfo + env /usr/lib/rpm/redhat/brp-python-bytecompile '' 1 0 -j4 + /usr/lib/rpm/redhat/brp-python-hardlink + /usr/bin/add-determinism --brp -j4 /builddir/build/BUILD/lavinmq-2.10.2-build/BUILDROOT Scanned 70 directories and 270 files, processed 3 inodes, 0 modified (0 replaced + 0 rewritten), 0 unsupported format, 0 errors Reading /builddir/build/BUILD/lavinmq-2.10.2-build/SPECPARTS/rpm-debuginfo.specpart Executing(%check): /bin/sh -e /var/tmp/rpm-tmp.l8UJXR + umask 022 + cd /builddir/build/BUILD/lavinmq-2.10.2-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 -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-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 -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-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 -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 -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-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 -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 -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/lib64/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Cforce-frame-pointers=yes -Clink-arg=-specs=/usr/lib/rpm/redhat/redhat-package-notes --cap-lints=warn' + export RUSTFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -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 lavinmq-2.10.2 + unset NOTIFY_SOCKET + rm -f spec/clustering_spec.cr spec/launcher_bind_spec.cr + make test crystal spec --order random --verbose Randomized with seed: 12611 LavinMQ::MinHeap(T) empties on clear and is reusable afterwards shifts the only element returns the smallest element without removing it orders any Comparable handles already sorted and reverse sorted input shifts in ascending order is empty when created shifts in ascending order for randomized input keeps the heap valid when pushes and shifts are interleaved Delayed Message Exchange Unhandled exception in spawn(name: Queue#message_expire_loop //amq.delayed-delayed-topic): path=/tmp/lavinmq-20261007-2142-rk8svbspec/42099b4af021e53fd8fd4e056c2568d7c2e3ffa8/5693968b572d8e70010a09739e32af003ee41e88/msgs.0000000001 pos=4 size=68 (LavinMQ::MessageStore::Error) from src/lavinmq/amqp/queue/delayed_exchange_queue/delayed_message_store.cr:82 in 'first_delayed?' from src/lavinmq/amqp/queue/delayed_exchange_queue.cr:106:17 in 'expire_messages' from src/lavinmq/amqp/queue/delayed_exchange_queue.cr:70:13 in 'message_expire_loop' from src/lavinmq/amqp/queue/queue.cr:283:7 in '->' from /usr/share/crystal/src/fiber.cr:168:11 in 'run' from /usr/share/crystal/src/fiber.cr:103:3 in '->' from ??? Caused by: Index out of bounds (IndexError) from /usr/share/crystal/src/slice.cr:1251:7 in 'check_size' from /usr/share/crystal/src/slice.cr:169:5 in '+' from src/lavinmq/amqp/queue/delayed_exchange_queue/delayed_message_store.cr:75:41 in 'first_delayed?' from src/lavinmq/amqp/queue/delayed_exchange_queue.cr:106:17 in 'expire_messages' from src/lavinmq/amqp/queue/delayed_exchange_queue.cr:70:13 in 'message_expire_loop' from src/lavinmq/amqp/queue/queue.cr:283:7 in '->' from /usr/share/crystal/src/fiber.cr:168:11 in 'run' from /usr/share/crystal/src/fiber.cr:103:3 in '->' from ??? closes cleanly without hanging the publisher when the expire loop hits a store error should not route messages to its own internal queue even if bound should support x-delayed-message as exchange type should deliver in correct order should prevent binding delayed exchange to its own internal queue should delay 2 messages should deliver based on when message is to expire should delay 1 message internal queue should deny publish via amqp (default exchange) should use old name if dir exists should rebuild index on restart should rebuild index on restart with truncated segment and acked messages should rebuild index on restart preserving valid messages despite trailing corrupt data should be created with x-dead-letter-exchange should always use x-dead-letter-exchange when expiring the message should not set dead letter headers LavinMQ::HTTP::Server should update existing user on import should be able to import delayed exchanges created in LavinMQ (issue #743) POST /api/definitions/upload imports definitions from uploaded file (no Referer) imports definitions from uploaded file should refuse non-administrator users imports definitions from json body GET /api/definitions exports and imports permission groups exports global parameters exports bindings re-imports an exported durable mqtt session as a session exports vhosts exports queues exports permissions should refuse non-administrator users exports policies exports durable mqtt sessions but not transient ones exports vhost parameters exports users exports exchanges GET /api/definitions/vhost exports exchanges user tags and vhost access should refuse management user even with vhost permissions should refuse vhost access exports queues does not export exclusive queues exports bindings exports policies POST /api/definitions/vhost imports exchanges should handle invalid JSON imports policies imports queues should handle request with empty body should handle unexpected input imports bindings user tags and vhost access should refuse user tag access should refuse vhost access should refuse policymaker user even with vhost permissions shouldn't ruin internal state of delayed exchange (issue #698) POST /api/definitions imports parameters applies no policies when one entry is malformed (issue #2073) imports bindings returns 400 when importing a user with an unsupported hashing_algorithm imports permissions should refuse non-administrator users should handle request with empty body imports users round-trips passwordless user through export and import imports vhosts should handle unexpected input imports user with valid MD5 hash and null hashing_algorithm should handle invalid JSON applies no permission groups when one entry is malformed imports passwordless user (password_hash null) if default user has been replaced imports with new default user imports global parameters imports exchanges imports passwordless user (password_hash empty string) imports policies returns 400 when importing a user with non-string password_hash imports permission groups for a vhost created by the same definitions should return sensible error for invalid password hash imports queues returns 400 when importing a user with missing password_hash returns 400 when importing a user with non-string hashing_algorithm mqtt_permissions for a vhost the definitions create gives the vhost only the groups from the file gives the vhost the default group when the file has no mqtt_permissions keeps the groups of a configured vhost and adds only new names keeps a vhost without groups locked down applies a narrowed default group from the file applies no parameters when one entry is malformed (issue #2073) MQTT::Session stats increments ack_count when a QoS 1 message is acknowledged increments deliver_no_ack_count and deliver_get_count for QoS 0 deliveries increments redeliver_count for messages re-sent after reconnect increments publish_count when a message is published to the session tracks unacked_count and unacked_bytesize while QoS 1 message is in flight increments deliver_count and deliver_get_count for QoS 1 deliveries LavinMQ::Shovel HTTPDestination dest-timeout falls back to the default for non-positive values defaults to 30 seconds wires the configured dest-timeout through the store to HTTP deliveries parses dest-timeout given as seconds (int or float) runtime counters counts confirmed deliveries and exposes degraded fields counts dead-lettered (Reject) deliveries Store.validate_config! allows an HTTP destination without a dest queue or exchange still requires a dest queue or exchange for an AMQP destination accepts an HTTP destination without a dest queue or exchange raises when an AMQP destination has no queue or exchange raises when user lacks permission on the named vhost raises when only some destinations are HTTP and none names a queue or exchange raises for an unknown scheme that merely starts with http looks up vhost permissions by bare name (strips leading slash from URI path) rejects a dest-timeout that is not a positive number of seconds HTTP keeps delivering after a transport failure instead of raising Not started should set path for URI from headers reports Retry (and does not hang) when an on-publish HTTP destination is unreachable requeues the message when the HTTP destination returns 503 (#5 Retry) dead-letters via the source DLX when the HTTP destination returns 400 (#5 Reject) classifies the response status in on-publish mode like on-confirm, never acking a failed POST stops delivering once the shovel is paused, mid-stream (#1612 part 2 / #5.4) should shovel does not error-out when aborts are interleaved with other outcomes (#review) aborts the shovel after repeated Abort responses from the HTTP destination (#5 Abort) reconnects after a transport failure in no-ack mode classifies a TLS handshake failure as a transient (Retry) outcome, not an unhandled error (#3) retries once on a fresh connection when a kept-alive socket has gone stale reconnects after a transport failure in on-publish mode retries a resumed shovel after it errored out on repeated Aborts requeues the message to the source when the HTTP destination returns an error (#1612) MultiDestination reports outcomes to the runner unchanged and keeps the destination on Abort makes the runner reconnect with backoff while the destination is unreachable picks a destination at random on every start does not fail over when the chosen destination cannot start rejects an empty destination list starts one destination and pushes to it HTTPDestination is not started once stopped AMQP will wait to ack all msgs before deleting itself should ack all messages that has been moved should shovel with ack mode no-ack should pause and resume shovel on long queue should shovel forever should shovel and stop when queue length is met reports Retry for confirms voided by a connection close so they are requeued finishes a queue-length shovel only once every message is delivered, retries included should pause and resume shovel does not let a paused run terminate a resumed shovel should count messages shoveled only acks up to the lowest unconfirmed tag when confirms arrive out of order should shovel over amqps should shovel stream queues should shovel once qs are declared respects reject-publish overflow on the destination without losing source messages (#1357) should shovel with ack mode on-publish finishes a queue-length shovel in no-ack mode once the last snapshot message is delivered keeps retrying the final message of a queue-length shovel instead of finishing without it moves a message published after the start rather than leaving it unacked to be swept away should shovel past prefetch authentication error should be stopped should move messages between queues with long names finishes a queue-length shovel when the broker drops a requeued message Source will stop and raise on unexpected disconnect does not flush a cumulative ack when only rejects moved the frontier will ack after timeout won't start ack timeout loop when not needed acks cumulatively up to the highest acked tag, never a rejected one (#1357) will start ack timeout loop if needed should reconnect and continue should keep paused even on broker restarts moves every message of a queue-length shovel across a pause and resume should shovel large messages Runner#report ignores outcomes once the source is stopped delivery backoff waits once until the backoff deadline and clears it on a Confirmed ramps 0.5s, doubling, capped at 30s counts a burst of Retry outcomes as one failing round does not push a message from a paused run once it wakes from a delivery backoff HTTPDestination#classify rejects statuses that describe the message rather than the endpoint LavinMQ::Server passwordless user should treat null password_hash in users.json as passwordless should reload successfully after a passwordless user was created via the HTTP API should treat null password_hash with non-null algorithm in users.json as passwordless should load MD5 user with null hashing_algorithm should ignore unknown keys in users.json should treat empty password_hash with non-null algorithm as passwordless LavinMQ::Launcher config reload warns that enabling TLS requires a restart serves the configured SNI certificate, and a rotated one after reload serves a per-host certificate for an SNI host added on reload applies and clears tls_prefer_server_ciphers on reload warns that disabling TLS requires a restart LavinMQ::Auth::User #update_password should update password hash when given other password than current should not update password hash when given same password as current Permission cache should handle multiple cache clears should handle vhost with no permissions should actually use cached results (returns stale data until revision changes) should handle multiple vhosts in the same cache should have initial revision of 0 should clear cache when revision changes session handling messages are delivered to client that connects to a existing session LavinMQ::AMQP::Channel GC Warning: Finalization cycle involving (???) consumer_max_per_channel = 0 allows unlimited consumers should respect consumer_max_per_channel config LavinMQ::HTTP::StatsHelpers should add empty b should add empty a should add b shorter than a should add equal size arrays should add b shorter than a LavinMQ::Config does not parse config before printing version information2.10.2 does not parse config before printing version information parses pidfile from config LAVINMQ_CONFIGURATION_DIRECTORY takes precedence over CONFIGURATION_DIRECTORY stats_interval rejects non-positive values accepts sub-second values WARNING: Ini config max_unsynced_actions is deprecated and no longer used Can parse all INI arguments will not parse ini sections that do not exist LAVINMQ_DATADIR takes precedence over STATE_DIRECTORY should prioritize CLI arguments over other arguments WARNING: --clustering-max-unsynced-actions is deprecated and no longer used can parse all CLI argumetns tls_prefer_server_ciphers is off in both [main] and [sni:] when the value is FALSE is on in both [main] and [sni:] when the value is TRUE is on in both [main] and [sni:] when the value is true is on in both [main] and [sni:] when the value is True is off in both [main] and [sni:] when the value is false is on in both [main] and [sni:] when the value is YES will not parse cli sections that do not exist tcp_proxy_protocol sets tcp_proxy_protocol to true when value is 1 sets tcp_proxy_protocol to false when value is no sets tcp_proxy_protocol to true when value is 2 sets tcp_proxy_protocol to true when value is yes sets tcp_proxy_protocol to false when value is false sets tcp_proxy_protocol to false when value is 0 sets tcp_proxy_protocol to false when value is -1 should reload config with new log level can parse all ENV arguments accepts deprecated [http] section as alias for [mgmt] uses systemd CONFIGURATION_DIRECTORY for config file lookup should prioritize ENV arguments over INI arguments defaults the control socket path to /tmp/lavinmqctl.sock will not raise error when parseing ini option that does not exist in section STATE_DIRECTORY takes precedence over INI data_dir should set amqp, http and mqtt bind with -b flag should remember the config file path max_inflight_messages rejects zero uses systemd STATE_DIRECTORY as default for data_dir can parse -d/--debug flag for verbose logging reload keeps the running config when the new config has an unknown section keeps the running config when the new config has an unwritable log_file keeps serving traffic after a failed reload applies SNI changes on a successful reload does not half-apply a config when a later value is invalid keeps the running config when the new config has an invalid value LavinMQ::HTTP::ConnectionsController GET /api/vhosts/vhost/connections should return 403 if vhosts does not exist and user is not admin should return 404 if vhosts does not exist and user is admin should return network connections for vhost GET /api/connections/name/channels should return channels for a connection GET /api/connections/name should return 404 if connection does not exist should return 403 if user doesn't have access should return connection DELETE /api/connections/username/:username deletes connections for a specific user GET /api/connections should sort on the ssl column should show all connections for monitoring should only show own connections for policymaker should return network connections GET /api/connections/username/:username returns connections for a specific user AMQ::Protocol::Table can be encoded and decoded LavinMQ::HTTP::StaticController GET /img/favicon.png GET /robots.txt LavinMQ::MQTT::BytesTokenIterator splits "a//c" correctly splits "long name here/and another long here" correctly splits "a/" correctly to_s handles multibyte UTF-8 filters splits "a" correctly splits "a//b/c/aa" correctly yields views into the backing buffer, never copies splits "/a" correctly splits "a/b/c" correctly to_s returns the whole filter regardless of how far it has been iterated splits "/" correctly #already_synced counts appends below the captured baseline as fully synced returns the synced head size for an append straddling the baseline resets to a fresh empty hash once the last file catches up drops a file's entry once an append reaches its baseline LavinMQ::AMQP::DelayedExchangeQueue::DelayedMessageStore::DelayedRequeuedStore #time_to_next_expiration? should return nil when empty should return time span to next expiration #first? should return first element without removing should return nil when empty #insert should order by segment position when expiration times are equal should maintain sorted order by expiration time should shift by expiration then segment position for randomized inserts should raise error for basic insert #shift? should return nil when empty should return and remove first element #size should be 0 after clear should decrease after shift should return 0 when empty should return the number of items in the store #clear should empty the store #close marks a follower whose ack_loop never ran as dead and unblocks waiters closes the socket even when the send buffer is full control socket authenticates connections over the configured control socket as the direct user follower_internal_socket_http_server skips binding when another node serves the control socket skips binding instead of raising when the socket can not be prepared binds when alone on the machine clustering follower control socket recognizes loopback leader hosts as local does not bind before the leader host is known prepare_control_socket raises if the socket is in use raises if the path exists but is not a socket deletes a stale socket no one is listening on does nothing if the path does not exist uses the socket bound at startup even after the config is reloaded LavinMQ::AMQP::ArgumentValidator::MaxAgeValidator #validate! accepts valid month format rejects negative numbers rejects missing unit rejects invalid unit rejects multiple units accepts valid day format rejects decimal numbers accepts large numbers accepts valid minute format rejects non-string values rejects missing number rejects space before unit rejects empty string accepts valid hour format accepts valid year format accepts valid second format LavinMQ::AMQP::ReplyText caps the reply_text when the vhost is refused during connection open caps the reply_text when closing a channel with a long X-Reason caps the reply_text when closing a connection with a long X-Reason keeps the connection when a channel error reply_text would exceed 255 bytes .build drops a multi-byte character rather than splitting it leaves a text that already fits MQTT client_id validation username mode assigns the username as client_id when it is empty validates against the username without the vhost prefix rejects a client_id that differs from the username accepts a client_id equal to the username none mode (default) accepts any client_id LavinMQ::HTTP::UsersController PUT /api/users/name should return 400 for an empty hashing_algorithm should create user with password should expose null hashing_algorithm for passwordless user should not create user if disk is full should create user with empty password_hash should create user with uniq tags should handle invalid JSON should update user with uniq tags should return 400 when password_hash is null should handle unexpected input should update user should create user with password_hash should return 400 when password_hash is a non-string type should return 400 for an unsupported hashing_algorithm should handle request with empty body GET /api/users/name should return user GET /api/users/without-permissions should return users without access to any vhost GET /api/users/user/permissions should return permissions for user GET /api/users should return all users should refuse non administrators PUT /api/auth/hash_password should return hashed password POST /api/users/bulk-delete should handle invalid JSON should delete users in bulk should handle request with empty body should handle unexpected input Queue policy churn coalesces into a limits worker blocked across restart and uses the new policy preserves an update arriving during a failing redelivered pass preserves expiration reapplied during teardown (failure: false) preserves expiration reapplied during teardown (failure: true) stops pending limit enforcement when the queue closes GC Warning: Finalization cycle involving (???) keeps one expiration fiber across argument and policy updates with an active consumer keeps one expiration worker across restart while waiting for the vhost to open releases the limits guard after a store error and enforces policies after restart rechecks limits changed during an active enforcement pass enforces delivery-limit even when the same update's overflow pass fails coalesces limit updates while the message store is locked and enforces the latest limits preserves an update arriving during a failing overflow pass stops expiration on policy removal and restarts it when reapplied LavinMQ::MQTT multi-vhost authentication should allow mqtt access to non-default vhost for user with vhost permissions should allow mqtt access to default vhost for user with vhost permissions should deny mqtt access to non-default vhost for user lacking vhost permissions should deny mqtt access to default vhost for user lacking vhost permissions should create mqtt exchange when vhost is created MQTT protocol version keeps the negotiated version when the client id is auto-assigned reports MQTT 3.1.1 for protocol level 4 reports MQTT 3.1 for protocol level 3 (MQIsdp) LavinMQ::QueueFactory amqp argument x-dead-letter-exchange is rejected when '1' is accepted when 'str' is rejected when 'true' is accepted when '' is rejected when '-10' x-dead-letter-routing-key is rejected when '1' is rejected when '-10' is rejected when 'true' x-deduplication-header is accepted when 'str' is accepted when '' is rejected when '-10' is rejected when '1' is rejected when 'true' x-delivery-limit is rejected when '-10' is rejected when 'str' is accepted when '10' is rejected when 'true' is accepted when '0' is rejected when '-1' x-max-length is rejected when 'true' is rejected when '-10' is accepted when '0' is accepted when '10' is rejected when '-1' is rejected when 'str' x-max-length-bytes is rejected when 'str' is accepted when '10' is rejected when '-1' is rejected when 'true' is accepted when '0' is rejected when '-10' x-cache-size is accepted when '10' is accepted when '0' is rejected when 'true' is rejected when '-1' is rejected when '-10' is rejected when 'str' x-consumer-timeout is accepted when '10' is accepted when '0' is rejected when 'str' is rejected when '-1' is rejected when '-10' is rejected when 'true' x-dead-letter-routing-key is rejected if x-dead-letter-exchange is missing x-expires is rejected when 'str' is accepted when '1' is accepted when '10' is rejected when 'true' is rejected when '0' is rejected when '-1' x-cache-ttl is rejected when 'true' is rejected when 'str' is accepted when '0' is rejected when '-1' is accepted when '10' is rejected when '-10' x-overflow is rejected when '1' is rejected when '-10' is accepted when '' is accepted when 'str' is rejected when 'true' x-message-ttl is accepted when '0' is rejected when 'str' is accepted when '10' is rejected when '-1' is rejected when 'true' is rejected when '-10' without x-queue-type should create a durable queue should create a non_durable queue with x-max-priority should create a durable queue should reject x-max-priority > 255 should reject x-max-priority < 0 should create a non_durable priority queue with x-queue-type=stream should reject invalid x-max-age should create a stream queue should reject if exclusive should reject if auto-delete should reject x-max-priority argument LavinMQ::MQTT::SubscriptionTree(T) changes qos level #empty? doesn't keep entries for unsubscribed non-wildcard filters returns false after a non-wildcard subscribe returns true after unsubscribing only existing +-wildcard subscription returns false after a +-wildcard subscribe returns true after unsubscribing many different subscriptions returns false after a #-wildcard subscribe returns true after unsubscribing only existing non-wildcard subscription returns true after unsubscribing only existing #+-wildcard subscription keeps the entry when other subscribers remain on the filter returns true before any subscribe can iterate all entries subscriptions is found #any? with subs returns true for matching '+'-wildcard subs returns false for no matching subscriptions returns true for matching '#'-wildcard subs returns true for matching non-wildcard subs returns false for empty tree #size decreases after unsubscribing returns 0 for empty tree counts non-wildcard, + and # subscriptions does not double-count when changing qos of an existing subscription counts multiple sessions on the same filter separately matches topic levels with multibyte UTF-8 characters unsubscribe unsubscribes MQTT topic permissions: HTTP update applies an HTTP PUT that replaces write with read on a live connection applies a read revocation to a persistent session that was offline when it changed still delivers a message accepted into a session before its read access was later revoked LavinMQ::Config exact-match section after wildcard does not corrupt wildcard host parses SNI sections from config file LavinMQ::Auth::OAuthAuthenticator #authenticate returns nil for JWT with exp as string returns nil for JWT with 4 parts returns nil for JWT with non-RS256 algorithm returns nil for JWT with invalid JSON in header returns nil for expired JWT token returns nil for JWT with exp as zero returns nil for JWT token without exp claim returns nil for malformed JWT token returns nil for JWT with negative exp returns nil for empty password returns nil for JWT with empty header part returns nil for JWT with whitespace returns nil for non-JWT password returns nil for JWT with invalid structure ProxyProtocol v1 can handle invalid data can parse valid data raises for a family that is not TCP4 or TCP6 can write a header for TCPv6 addresses can write a header for TCP4 addresses raises for the UNKNOWN family so the connection is closed trusted sources handles whitespace correctly returns empty array for empty config matches an IPv4 trusted source for an IPv4-mapped IPv6 peer (dual-stack) parses IPv6 CIDR notation parses IPv4 CIDR notation fails loudly on an invalid entry (does not collapse to trust-all) parses mixed IPs and CIDR notation parses individual IPv4 addresses raises when every entry is invalid instead of collapsing to trust-all raises on an invalid entry mixed with valid ones v2 can handle invalid data can parse valid data can write header for TCPv4 addresses auto-detection auto-detects V1 protocol detects a V1 header split across TCP segments returns nil for MQTT protocol header returns nil for AMQP protocol header auto-detects V2 protocol returns nil for HTTP request detects a V2 header split across TCP segments times out on the initial peek when the peer sends nothing LavinMQ::Exchange metrics should count unroutable metrics should count unroutable metrics binding arguments exchange topic are saved arguments must match when unbinding exchange direct arguments must match when unbinding are saved exchange headers are saved arguments must match when unbinding exchange x-consistent-hash are saved arguments must match when unbinding exchange fanout are saved arguments must match when unbinding in_use? should be in use when it has bindings should be in use when it has bindings should be in use when other exchange has binding to it should not be in use when just created Exchange => Exchange binding should allow multiple e2e bindings message deduplication should handle message deduplication should handle message deduplication, on custom header with federation-upstream will start link when exchange is internal won't start link #apply_policy without federation-upstream stop existing link delayed message exchange declaration should redeclare same delayed message exchange should raise and not declare delayed message exchange if missing x-delayed-type argument should raise exception when redeclaring exchange with mismatched arguments should declare delayed message exchange auto delete exchange should delete the exchange when the last binding is removed LavinMQ::AMQP::PriorityQueue should only accept priority >= 0 should only accept priority <= 255 PriorityMessageStore migration should migrate old store #empty should be false after requeue should be true after all messages has been shifted should be false after push to an empty store should be true after last message has been purged should be true for a new store should be true after purge_all should be false on after a push to a new store #first? #first? returns the first message with the highest priority returns nil if store is empty empty? should be false after push should be true after all messages has been shifted should be true for a fresh store clustering can replicate migration is replicated correctly #push should treat to high priority as max_priority should publish to the right sub store #bytesize is decreased on shift? is increased on push #size is increased on push is decreased on shift? #requeue reqeueus to the right sub store requeues messages with priority above max to the highest sub store #delete deletes messages with priority above max #[] returns messages with priority above max #shift? returns the first message with the highest priority returns nil if store is empty should use sub stores after restart can restore the priority queue should only accept int32 as priority should prioritize messages should not set redelivered to true for a non-requeued message should prioritize messages as 0 if no prio is set messages with priority above x-max-priority can be acked can be rejected with requeue can be purged when there are unacked messages should set redelivered to true for a requeued message MQTT default user loopback gate with PROXY protocol rejects the default user when a PROXY header claims a loopback source accepts the default user from a real loopback connection without a PROXY header LavinMQ::MQTT .qos is QoS 0 without arguments accepts any integer type, not just UInt8 is QoS 0 for a negative value grants QoS 2 as QoS 1 reads the QoS back from the arguments of qos_arguments is QoS 0 for a non-integer value .qos_arguments returns the QoS 1 constant for QoS 1 returns the QoS 0 constant for QoS 0 carries the QoS under the QoS header returns the QoS 1 constant for QoS 2, which is granted as QoS 1 LavinMQ::SNIManager manages SNI hosts get_exact_host does not resolve wildcards starts empty supports wildcard hostnames clustering join-during-publish race GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) follower joining during active publishing has the same message count as the leader CONTROL: follower synced before publishing matches the leader exactly client will can be retained [MQTT-3.1.2-17] retain can't be set of will flag is unset [MQTT-3.1.2-15] qos can't be set of will flag is unset [MQTT-3.1.2-13] is delivered on ungraceful disconnect when client unexpected closes tcp connection when server closes connection because protocol error is not delivered on graceful disconnect [MQTT-3.14.4-3] qos must not be 3 [MQTT-3.1.2-14] won't be published if missing permission LavinMQ::HTTP::FollowerPrometheusController returns 200 on /metrics/detailed with only scrape telemetry returns gc metrics on /metrics LavinMQPerf MQTT::Throughput should accept IO parameter should fail with invalid argument Perf base class should capture output with IO parameter should have AMQP banner should have MQTT banner AMQP::Throughput should accept IO parameter should verify summary averages are correct GC Warning: Finalization cycle involving (???) should fail with invalid argument Ticker keeps pacing when ticked through another method paces evenly across the configured rate window LavinMQ::HTTP::PermissionsController PUT /api/permissions/vhost/user should update permission for a user and vhost should handle unexpected input should handle request with empty body should create permission for a user and vhost should handle invalid JSON GET /api/permissions/vhost/user should return all permissions for a user and vhost DELETE /api/permissions/vhost/user should delete permission for a user and vhost GET /api/permissions should return all permissions should refuse non administrators MQTT OAuth token expiration does not disconnect client when token is still valid disconnects client when token expires LavinMQ::AMQP::Exchange should handle CC in header should handle BCC in header should raise if CC header isn't array should read both CC and BCC should raise if BCC header isn't array LavinMQ::VHost GC segments OpenSSL::SSL::Context::Server #keylog_file= logs TLS keys for multiple SNI hosts to same file without interleaving logs TLS keys during handshake LavinMQ::Config warns for deprecated INI options without a replacement without error forwards all deprecated INI options to their replacements logs warning for deprecated CLI options has entries in DEPRECATED_FORWARDS for all forwarding deprecated options exposes no getter for deprecated options warns for deprecated CLI options without a replacement without error logs warning for deprecated INI options forwards all deprecated CLI options to their replacements LavinMQ::HTTP::ChannelsController PUT /api/channels/:channel should allow to update the prefetch GET /api/vhosts/vhost/channels should return empty array if no connections should return all channels for a vhost should return all channels for a vhost with multiple connections GET /api/channels should return all channels DELETE /api/channels/:channel should requeue the channel's unacked messages should return 404 if the channel does not exist should refuse to close another user's channel should remove the channel when the client replies close-ok should close the channel and tell the client why GET /api/channels/:channel should return channel should return message_stats should return get_no_ack count 1 LavinMQ::Clustering::Client applies streamed appends to the file re-fetched during resync, not the stale handle handles a path reused after a resync deleted it FilesystemInfo falls back to f_bsize when f_frsize is zero matches df for the current filesystem scales block counts by f_frsize, not f_bsize OpenSSL::SSL::Context::Server supports SNI callback MQTT topic permissions: live updates stops deliveries once read is revoked on a live connection stops publishes once write is revoked on a live connection LavinMQ::HTTP::MainController GET /login CSP header allows every inline script in the response body serves login.html without requiring authentication GET / sets security headers on .html pages requested directly GET / CSP header allows every inline script in the response body GET / includes footer partial redirects unauthenticated .html requests to login GET / includes header partial GET / includes head partial LavinMQ::Pidfile #acquire fails when pidfile contains invalid data fails when pidfile is locked by another process returns false for empty path removes pidfile on graceful shutdown replaces stale pidfile creates pidfile with current PID fails when pidfile contains running process LavinMQ::Config #oauth_mgmt_ui_enabled? returns false when oauth_issuer_url is missing returns true for http://127.0.0.1:15672 returns true for http://[::1]:15672 returns false when oauth_client_id is missing returns false for http://localhost.evil.com/ returns false for http://localhostfoo returns false for http://127.0.0.1.evil.com/ returns true for https://mq.example.com returns false for http://example.com returns true for http://localhost:15672 OAuth configuration parsing parses resource_server_id parses multiple comma-separated additional_scopes_keys parses mgmt_scopes parses audience parses jwks_cache_ttl as seconds parses preferred_username_claims as comma-separated list parses scope_prefix parses verify_aud as boolean parses oauth section from config with issuer_url parses additional_scopes_keys OAuth configuration validation sets default oauth_scope_prefix to nil sets default oauth_verify_aud to true sets default oauth_preferred_username_claims to sub and client_id sets default oauth_jwks_cache_ttl to 1 hour sets default oauth_resource_server_id to nil sets default oauth_additional_scopes_keys to empty array sets default oauth_mgmt_scopes to "openid profile" sets default oauth_audience to nil LavinMQ::AMQP::Queue effective arguments should contain x-message-deduplication, x-cache-size when args is {"x-message-deduplication": true, "x-cache-size": 700} should be x-max-length with args {"x-message-ttl": 100, "x-max-length": 10} and policy {"message-ttl": 50, "x-max-length": 100} should be x-message-ttl with args {"x-message-ttl": 10} and policy {"message-ttl": 50} should contain x-message-deduplication, x-cache-ttl when args is {"x-message-deduplication": true, "x-cache-ttl": 800} should contain x-expires when args is {"x-expires": 100} should contain x-message-ttl when args is {"x-message-ttl": 400} should contain x-overflow when args is {"x-overflow": "drop-head"} should contain x-single-active-consumer when args is {"x-single-active-consumer": true} should contain x-consumer-timeout when args is {"x-consumer-timeout": 600} should contain x-message-deduplication, x-deduplication-header when args is {"x-message-deduplication": true, "x-deduplication-header": "foo"} should contain x-max-length-bytes when args is {"x-max-length-bytes": 300} should not contain x-overflow when args is {"x-overflow": "drop-arm"} should not contain x-overflow when args is {"x-overflow": "reject-ack"} should contain x-delivery-limit when args is {"x-delivery-limit": 500} should be with args {"x-message-ttl": 100} and policy {"message-ttl": 50} should contain x-dead-letter-exchange, x-dead-letter-routing-key when args is {"x-dead-letter-exchange": "dlx", "x-dead-letter-routing-key": "dlrk"} should contain x-max-length when args is {"x-max-length": 200} should contain x-overflow when args is {"x-overflow": "reject-publish"} Paused should pause the queue by setting it in flow (consume) should be able to declare queue as paused should be able to get messages from paused queue with force flag should pause the queue by setting it in flow (get) should handle '.paused' files and rename to 'paused' should delete queue with auto_delete when the last consumer disconnects PolicyTarget #clear_policy should clear policy #apply_policy should apply policy should replace policy Exclusive queue cleanup drops the queue from Client#exclusive_queues when auto-deleted server-side still cleans up exclusive queues on connection close when many are open drops the queue from Client#exclusive_queues when expired via x-expires MessageStore reports a publish as Ok when the store is closed after the message is stored should not raise NotFoundError if segment is gone when deleting should not ack 'empty' msg if mfile.size is too big reports no message instead of erroring when its queue is deleted during a get drops a publish when the store is closed concurrently should not create ack files when cleaning up segments should remove unused segments after being consumed should yield fiber while purging should delete transient queues on Server stop Restarting queues should expire queue after restarting a queue should reapply policies after restart should clear exclusive consumer flag after restart should restart a closed queue should not restart if queue is still running should restart after corrupt data closes the queue should expire msgs after restarting a queue Should expire short-TTL message after consuming long-TTL message should keep track of unacked delivered messages should delete left over transient queue data on Server start Should not dead letter messages to itself due to queue length unacked_bytesize should count bytes for all unacked messages should expire itself after last consumer disconnects Close should cancel consumer should not expire message before server is fully started should delete transient queues segments on creation Should dead letter expired messages deduplication should not accept message if it's a duplicate Purge should purge only X messages from queue should purge the queue Should expire message after consuming non-expiring message Flow should stop queues from being declared when disk is full Should dead letter messages to itself only if rejected should keep track of unacked basic_get messages Idle fiber management should not start message_expire_loop for queue with no TTL messages should start fiber when message with per-message TTL is published should not start message_expire_loop for empty queue should start fiber when a partial purge exposes a TTL message behind a no-TTL head should not start expire fiber while consumers are active should start fiber when TTL message published and expire it LavinMQ::Auth::Context initialization with Socket::Address detects loopback for Socket::IPAddress with ::1 detects loopback for Socket::UNIXAddress detects non-loopback for nil address detects loopback for Socket::IPAddress with 127.0.0.1 detects non-loopback for Socket::IPAddress with non-loopback address basic initialization defaults to non-loopback stores username, password, and loopback flag LavinMQ::VHost Stats should update queue data should count get_no_ack should not delete stats when connection is closed should count connections open / closed once should count deliver and deliver_no_ack MFile tracks mmap count can be double closed keeps its contents readable after dontneed over several chunks madvise chunking leaves at most one page of headroom, so the chunk is as large as it can be derives PMD_SIZE from the running page size keeps the DontNeed chunk strictly below PMD_SIZE can be read LavinMQ::Server binding queue required read perm on exchange binding queue required write perm on queue unbinding queue required read perm on exchange disallows deleting queues without config perms allows declaring exchanges passivly even without config perms allows changing default user prohibits consuming if user doesn't have access allows declaring queues passivly even without config perms disallows 'guest' if default user is changed prohibits declaring queues if don't have access unbinding queue required write perm on queue prohibits purging queue if user doesn't have write access disallows deleting exchanges without config perms disallow users who dont have vhost access prohibits getting from queue if user doesn't have access prohibits publish if user doesn't have access rejects invalid password allows users with access to vhost prohibits declaring exchanges if don't have access rejects invalid user LavinMQ::Server invalid frame end should respond with frame error when routing key exceeds 255 bytes channel close does not close the connection for a settlement frame on a never-opened channel does not close the connection for a settlement frame on an already-closed channel does not close the connection for frames on a channel waiting for close-ok discards a method frame pipelined after a server-initiated channel close channel_max should allow client to create 'unlimited' channels if the server has no limit should allow client to set channel_max to zero (unlimited) if the server has no limit should not accept a channel_max from the client lower than the server config should not allow client to set channel_max to zero (unlimited) if the server has a limit should not allow client to create more channels than the negotiated max unexpected frames closes the connection with unexpected frame for heartbeat on non-zero channel frame_max should allow client to set frame_max to zero (unlimited) if the server has no limit should not accept a frame_max from the client lower than the server config should not allow client to set frame_max to zero (unlimited) if the server has a limit should not allow client to send a frame larger than the negotiated frame_max LavinMQ::AMQP::DirectExchange matches exact rk returns false when unbinding a never-bound routing key doesn't grow bindings storage when routing unbound routing keys LavinMQ::HTTP::PrometheusController counter monotonicity keeps queues_declared_total monotonic when a vhost is deleted counts a fan-out publish once, not once per bound queue keeps global_messages_delivered_total monotonic when a vhost is deleted via the store keeps /api/nodes queue_declared monotonic when a vhost is deleted GC Warning: Finalization cycle involving (???) keeps /api/overview message_stats monotonic when a vhost is deleted keeps global_messages_delivered_total monotonic when a queue is deleted LavinMQ::HTTP::QueuesController GET /api/queues should only return queues in the given state should apply the state filter on top of a name filter, not instead of it should keep total_count unfiltered when filtering on state should return 400 for an invalid state should return all queues should filter on multiple states should apply the state filter on top of a regex name filter GET /api/queues/vhost/name/unacked basic get should not return if acked should not return if rejected should be removed from unacked when channel closes should return unacked messages subscribe should not return if acked should return unacked messages should not return if rejected DELETE /api/queues/vhost/name should delete queue should not delete queue if it has messasge when query param if-unused is set GET /api/queues/vhost/name should return no persistent message count should return persistent message count writes message_stats only once should return message stats should return 404 if queue does not exist should return queue GET /api/queues/vhost should only return queues in the given state for a vhost should return all queues for a vhost PUT /api/queues/vhost/name/pause should pause the queue GET /api/queues/vhost/name/bindings should return queue bindings POST /api/queues/vhost/name/get should not double-decrement unacked_count when an ack fails mid-batch GC Warning: Finalization cycle involving (???) should not allow get and requeue should handle empty q GC Warning: Finalization cycle involving (???) should reject on error while getting messages should handle base64 encoding should handle count > message_count should get plain text messages should get encoded messages PUT /api/queues/vhost/name should not require any body (1) should require durable to be the same when overwriting should create queue should not require any body (2) should require config access to declare should not be possible to declare amq. prefixed queues should respond with 400 for PreconditionFailed errors PUT /api/queues/vhost/name/restart should not restart if queue is still running should restart a queue PUT /api/queues/vhost/name/resume should resume the queue GET /api/queues/vhost/name effective_arguments should include x-max-age in effective_arguments for streams LavinMQ::MessageStore::PublishOrderedRequeuedStore #shift? should return nil when empty should return and remove first element #clear should empty the store #first? should return first element without removing should return nil when empty #size should return the number of items in the store should be 0 after clear should return 0 when empty should decrease after shift #insert should maintain sorted order by segment position should handle multiple segments LavinMQ::HTTP::ShovelsController access control should refuse management and monitoring users from listing shovels should refuse management users from pausing a shovel should refuse management users from getting a shovel should refuse management users from resuming a shovel should allow policymaker to list shovels in a vhost should refuse management users from listing all shovels PUT api/shovels/:vhost/:name/resume should resume an aborted shovel and return 204 should resume a paused shovel and return 204 should return 404 for non-existing shovel should return 422 if shovel is already running PUT api/shovels/:vhost/:name/pause GC Warning: Finalization cycle involving (???) should return 422 if shovel is already paused should pause shovel and return 204 should return 404 for non-existing shovel PUT api/parameters/shovel/:vhost/:name should create a shovel with an HTTP destination LavinMQ::Auth::JWT::TokenParser #parse_roles resource_access parsing ignores resource_access for other servers ignores resource_access when resource_server_id is not set extracts roles from resource_access when resource_server_id is set scope claim parsing parses scopes from space-separated scope claim returns empty permissions when scope is empty additional_scopes_keys parsing extracts scopes from hash claim without resource_server_id ignores non-matching resource_server_id in hash claim extracts scopes from additional_scopes_keys string claim extracts scopes from additional_scopes_keys hash claim with resource_server_id extracts scopes from multiple additional_scopes_keys extracts scopes from additional_scopes_keys array claim duplicate permission scope combining does not combine scopes across different vhosts combines duplicate read scopes for the same vhost combines duplicate write scopes for the same vhost does not affect different permission types on the same vhost combines duplicate configure scopes for the same vhost #extract_username falls back to 'client_id' when 'sub' is missing and no claims configured extracts username from first matching claim in the list falls back to subsequent claims if first is missing extracts username from preferred_username claim defaults to 'sub' claim when preferred_username_claims is not configured extracts username from sub claim raises when no username claim is found ignores non-string values in unmapped fields falls back to sub when other claims are missing extracts username from iss claim extracts username from custom claim in unmapped fields permission parsing ignores unknown permission types parses configure permission parses configure permission with different separators initializes missing permission types to empty pattern parses multiple permissions for same vhost converts wildcard * to .* pattern ignores scopes with wrong format skips scopes with invalid regex patterns parses read permission with colon separator parses write permission parses permissions with dot separator parses permissions with slash separator parses permissions for multiple vhosts combined tags and permissions parses both tags and permissions from same scope #parse raises when exp claim is missing sets expires_at from exp claim scope prefix filtering uses resource_server_id as default prefix does not filter when no prefix is configured filters scopes by explicit prefix tag parsing ignores invalid tag names parses management tag parses impersonator tag parses policymaker tag parses multiple tags parses monitoring tag parses administrator tag LavinMQ::HTTP::OAuthController is registered when a bare OAuth authenticator is used oauth_token cookie authentication verifies and expires an invalid cookie on management API paths ignores the cookie on non-API paths is not registered when no OAuth authenticator is configured LavinMQ::AMQP::DurableQueue must find messages written after a uncompacted hole should handle routing key length = 255 shift? handles files with few extra bytes after migration between index version 2 to 3 should successfully convert queue index with corrupt segments should ignore corrupt endings when consumed should be closed first? handles files with few extra bytes SNI end-to-end serves correct certificate based on SNI hostname accepts connection with valid client cert when mTLS is enabled via SNI rejects connection without client cert when mTLS is enabled via SNI Channel(T) can send non blocking to buffered channel can send non blocking LavinMQ::AMQP::ArgumentValidator::BoolValidator #validate! accepts true accepts false rejects integer values rejects string values allows nil values rejects integer zero CC and BCC CC header should be preserved BCC header should be removed on delivery LavinMQ::Auth::JWT::PublicKeys #decode raises DecodeError when PEM key is empty string raises VerificationError with invalid PEM key raises VerificationError when no key matches the token's kid raises VerificationError when no keys are provided raises VerificationError when token has empty signature raises VerificationError when the token has no kid header raises DecodeError for malformed token LavinMQ::Clustering::Server publish confirms against the ISR flushes a dirty ISR before delivering a publish confirm waits for in-sync follower acks before confirming when sync is disabled flushes a dirty ISR before delivering a publish confirm when sync is disabled stalls publish confirms until a dead follower's ISR removal is committed durable operations against the ISR commits a dirty ISR before a replicated durable operation returns definition changes against follower acks holds a durable queue declare until in-sync followers ack it completes a declare by evicting a follower that never acks, after committing its ISR removal join failures Unhandled exception in spawn(name: Clustering follower): coordinator unavailable (spec) (SpyCoordinator::Error) from spec/clustering/isr_spec.cr:16:7 in 'update_isr' from src/lavinmq/clustering/server.cr:436:9 in 'update_isr' from src/lavinmq/clustering/server.cr:390:13 in 'sync_and_serve' from src/lavinmq/clustering/server.cr:357:9 in 'handle_socket' from src/lavinmq/clustering/server.cr:337:48 in '->' from /usr/share/crystal/src/fiber.cr:168:11 in 'run' from /usr/share/crystal/src/fiber.cr:103:3 in '->' from ??? drops a follower whose join failed at the ISR commit, instead of leaving a zombie ISR maintenance on follower disconnect keeps a caught-up follower in the ISR after it disconnects (valid failover candidate) removes a follower that was behind from the ISR immediately, before the next write LavinMQ::HTTP::PrometheusController GET /metrics/detailed should expose per-vhost message stats should group TYPE and HELP by metric name should count mqtt sessions in detailed_vhost_queues should support specifying families should perform sanity check on sampled metrics should label channel metrics with vhost and connection should expose per-queue delivered and acked counters GET /metrics should report uptime anchored to PROCESS_START, surviving Server re-creation should count returned unroutable messages should support specifying prefix should perform sanity check on sampled metrics should count all delivered messages (both get and deliver) should include mfile count metric should not support a prefix longer than 20 should expose the number of bindings should return metrics in prometheus style authentication should allow unauthenticated access to metrics on metrics port should require authenticated access to metrics on mgmt port vhost access control should only return metrics for vhosts the user has access to LavinMQ::MQTT::SubscriptionKey matches the LavinMQ::AMQP::BindingKey interface (duck typing) #properties_key returns ~ for an empty topic filter appends the QoS exposes the topic filter as #topic_filter, aliased by #routing_key #arguments returns the QoS 1 constant for QoS 1 returns the QoS 1 constant for QoS 2 returns the QoS 0 constant for QoS 0 uses value semantics (topic filter + QoS) as a Hash key MQTT OAuth cleans up OAuthUser on disconnect allows connection with exact vhost permissions allows connection with wildcard vhost permissions LavinMQ::Auth::JWT::TokenVerifier #prevalidate_token (via verify_token) token format validation rejects tokens that don't start with 'ey' rejects tokens with more than 3 parts rejects tokens with less than 3 parts rejects tokens with invalid base64url encoding iat claim validation rejects tokens with iat in the future algorithm validation rejects tokens with HS256 algorithm rejects tokens with 'none' algorithm (algorithm confusion attack) rejects tokens with RS384 algorithm nbf claim validation (RFC 7519 Section 4.1.5) rejects tokens with nbf in the future exp claim validation rejects expired tokens rejects tokens without exp claim rejects tokens expiring exactly now #validate_issuer rejects missing issuer rejects mismatched issuer accepts matching issuer with trailing slash difference #validate_audience rejects mismatched audience accepts matching string audience rejects audience when no expected audience is configured rejects tokens without audience claim accepts matching audience in array uses resource_server_id as audience when oauth_audience is nil LavinMQ::Clustering::Follower #negotiate! should send 0 on succesful negotiation should raise AuthenticationError and send 1 on wrong password should raise InvalidStartHeaderError on invalid start header LavinMQ::AMQP::GISFilter BoundingBox excludes point outside bounds includes point on boundary validates coordinate bounds validates min/max relationships contains point inside bounds parse_radius_filter parses valid radius filter raises for missing fields raises for zero radius raises for negative radius raises for invalid numeric values PolygonFilter#match? returns false for headers missing geo coordinates matches point inside polygon rejects point outside polygon Polygon handles polygon with vertical edges without division by zero contains point inside triangle excludes point outside triangle handles complex polygon (Manhattan) requires at least 3 points Point#distance_to calculates distance between NYC and LA (approx 3935 km) calculates distance between London and Paris (approx 344 km) returns zero for same point Point accepts valid coordinates validates latitude bounds validates longitude bounds parse_bbox_filter parses valid bounding box raises for missing fields raises for invalid numeric values raises for invalid bounds parse_polygon_filter raises for fewer than 3 points raises for invalid numeric values parses valid polygon raises for invalid point format RadiusFilter#match? returns false for headers missing geo coordinates matches point within radius matches point on radius boundary rejects point outside radius BoundingBoxFilter#match? matches point inside bounding box returns false for headers missing geo coordinates rejects point outside bounding box Point.from_headers returns nil for out-of-bounds coordinates returns nil for nil headers returns nil for invalid lat/lon values extracts point from headers with Float64 values returns nil for missing headers extracts point from headers with Int values LavinMQ::Stats #update_rates yields finite rates with stats_interval=1ms yields finite rates with stats_interval=5000ms yields finite rates with stats_interval=999ms yields finite rates with stats_interval=1000ms yields finite rates with stats_interval=250ms yields finite rates with stats_interval=500ms yields finite rates with stats_interval=50ms reports events-per-second independent of the sampling interval yields finite rates with stats_interval=30000ms session resume resends the owed window before delivering anything new resends only the publishes left unacked resends unacked publishes in their original order [MQTT-4.6.0-6] forgets the ids of every owed message a purge deletes keeps owing the window while the session is offline keeps the ids of the messages a partial purge left behind counts the resent window against the inflight limit passes over a remembered id that is already in flight resends nothing once the resent publish is acked forgets an owed id when a max-length policy drops its message drops a clean session on disconnect, leaving nothing to resend [MQTT-3.1.2-6] forgets an owed id when the session is purged resends an unacked qos1 publish with its original packet id [MQTT-4.4.0-1] does not resend under packet id 0 [MQTT-2.3.1-5] keeps the original ids across a second reconnect LavinMQ random disconnects LavinMQ::Deduplication::Deduper duplicate? should fallback to default ttl should only insert into cache if header has a value should prio message ttl over default ttl should only insert into cache if header has a value should return false if "x-deduplication-header" is missing (no identifier, always unique) should check cache if entry exists should allow checking any header for dedups should not reset x-cache-ttl on expire when using delayed exchange should respect x-cache-ttl on message LavinMQ::HTTP::ParametersController GET /api/global-parameters should refuse management users from listing global parameters should return all global parameters should allow policymaker to list global parameters GET /api/policies/vhost should return policies for vhost DELETE /api/policies/vhost/name should delete policy PUT /api/operator-policies/vhost/name should handle invalid definition types GET /api/parameters/component/vhost/name should return parameter GET /api/parameters GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) should refuse monitoring and management should return all vhost scoped parameters for policymaker GET /api/global-parameters/name should return parameter should allow policymaker to get a global parameter should refuse management users from getting a global parameter DELETE /api/parameters/component/vhost/name should delete parameter for a component on vhost PUT /api/policies/vhost/name should create policy should handle request with empty body should handle invalid definition types should handle unexpected input should update policy should handle invalid JSON GET /api/parameters/component/vhost should return all parameters for a component on vhost PUT /api/global-parameters/name should create global parameter should handle invalid JSON should handle unexpected input should refuse management users from creating a global parameter should handle request with empty body should update global parameter GET /api/parameters/component should return all parameters for a component DELETE /api/global-parameters/name should refuse management users from deleting a global parameter should delete parameter GET /api/policies should return all policies PUT /api/operator-policies/vhost/name should handle invalid definition types PUT /api/parameters/component/vhost/name should handle unexpected input should handle request with empty body should handle invalid JSON should create parameters for a component on vhost should update parameters for a component on vhost GET /api/policies/vhost/name should return policy PUT /api/parameters/shovel/vhost/name should allow shovel with user having sufficient permissions should reject shovel without destination should reject shovel when user lacks read permission on source exchange should skip validation for external URIs should reject shovel without source queue or exchange should reject shovel when user lacks read permission on source queue should reject shovel when user lacks config permission on destination queue should reject shovel when user lacks write permission on destination exchange should reject shovel when user lacks config permission on source queue should reject shovel when user lacks config permission on destination exchange should skip validation for URIs with explicit user should allow shovel with source exchange and routing key without source queue should validate shovel config with valid config should reject shovel when user lacks config permission on source exchange LavinMQ::MessageStore replication registers existing segment files on startup registers all files when the first segment is corrupt registers all files when the middle segment is corrupt registers all files when the last segment is corrupt registers ack files from all segments on normal startup deletes fully-acked segments from the replicator on startup deletes orphaned ack file and registers valid ack files when a segment is corrupt does not register orphaned ack files re-registers files without an MFile reference when closed registers ack files on startup deletes orphaned ack files from the replicator on startup replicates the rewritten ack file after pruning orphans sends the shortened segment to followers after dropping a torn trailing record registers the initial segment file does not send intact segments to followers when it rebuilds metadata when non-durable can ack messages after restart #shift? should return nil from empty segment #push should not raise when rolling over on new wfile #first? should return nil from empty segment #empty? should be true after all messages has been shifted should be true for a fresh store should be false after push #empty should be true for a new store should be true after purge_all should be true after all messages has been shifted should be true after last message has been purged should be false after requeue should be false after push to an empty store should be false on after a push to a new store advances @rfile when delete_unused_segments removes the rfile's segment #purge_all leaves @size == 0 when deleted segments contain partial acks does not raise when @requeued points to a segment that gets deleted shift? from @requeued keeps @size consistent when the segment is gone does not raise when an older segment has in-flight messages does not raise when @requeued sp points to a missing segment #copy returns a message that stays valid after its segment is unmapped raises KeyError when the segment is gone deletes unused segments on startup when multiple 'empty' segments exist when durable #empty should be true after all messages has been shifted should be false after push to an empty store should be true for a new store should be true after last message has been purged should be false on after a push to a new store should be true after purge_all should be false after requeue can ack messages after restart #push should not raise when rolling over on new wfile #first? should return nil from empty segment #empty? should be false after push should be true for a fresh store should be true after all messages has been shifted #shift? should return nil from empty segment after crash with fully acked segment prunes orphaned acks across multiple segments when all positions are orphaned does not raise EOF when ack file has orphaned positions past data handles orphaned ack positions without crashing when opened as non-durable does not raise EOF when rfile.pos is at end when open_new_segment fires logs when pruning orphaned ack positions deletes leftover tmp.acks.* files in the data dir #purge_all acks requeued messages on disk so they don't come back after restart purges msgs in a segment that was acked out of order before a restart closes gracefully when a middle segment is corrupt with replicator deletes orphaned ack files closes gracefully when segment has corrupt schema version with replicator LavinMQ::AMQP::ConsistentHashExchange exchange => queue bindings should fallback to default if invalid x-algorithm was supplied should fail if header value isn't a string should allow setting hashing algorithm using x-algorithm argument should still route after unbinding duplicate binding with different arguments should route on to same queue even after delete should route all messages to queue if only one queue should allow setting hashing algorithm using x-algorithm argument should route on header key should route on empty string is header isn't set should fallback to default if no x-algorithm was supplied should route on routing key #unbind raises on invalid weight (routing key) #bind raises on invalid weight (routing key) exchange => exchange bindings should route all messages to exchange if only one exchange LavinMQ::Federation::Upstream shutdown closes federation links without logging unexpected-close errors Exchange federation should continue after upstream restart should federate exchange even with no downstream consumer when @exchange is empty should use downstream exchange name as upstream exchange when @exchange is nil should use downstream exchange name as upstream exchange should delete internal exchange and queue after deleting a federation link should federate exchange should keep internal exchange and queue after broker shutdown ExchangeLink exchange federation chain binding forwarding respects lower maxhops in binding argument message forwarding respects max-hops GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) binding forwarding respects lower maxhops on exchange append to x-bound-from set x-received-from set x-bound-from append to x-received-from should reflect all bindings to upstream exchange should reflect bindings made while link is starting does not leave a dead observer when deleted during link startup LavinMQ::Federation::UpstreamStore dups the upstream and applies per-entry overrides without sharing state removes a deleted upstream from sets even when a non-matching entry comes first QueueLink append to x-received-from set x-received-from Queue federation should only transfer messages when downstream has consumer should stop transfering messages if downstream consumer disconnects when @queue is nil #link(Queue) should create link that consumes upstream queue with same name as downstream queue should use federated queue's name if @queue is empty should not federate queue if no downstream consumer should federate queue with ack mode no-ack should federate queue should reconnect queue link after upstream disconnect should resume federation after downstream reconnects should federate queue with ack mode on-publish should keep message properties LavinMQ::ConnectionInfo #loopback? is true for the local placeholder recognizes IPv4-mapped IPv6 loopback as loopback is true when the peer is a loopback address is false when a loopback address comes from a PROXY header is false when the peer is not a loopback address MQTT topic permissions: publish delivers authorized publishes and drops unauthorized ones, keeping connection open acks a denied qos>0 publish but does not deliver it, keeping connection open does not restrict publish or subscribe while the default group exists LavinMQ::Auth::JWT::JWKSFetcher #fetch_jwks alg filtering includes RSA signing keys with alg RS256 excludes RSA signing keys with a non-RS256 alg includes RSA signing keys with no alg param Alternate Exchange only routes to alternate-exchange when no queues are bound LavinMQ::ConnectionInfo::IPAddress #address unmaps IPv4-mapped IPv6 addresses preserves plain IPv4 addresses preserves native IPv6 addresses LavinMQ::Server recover(requeue=false) for basic get actually requeues can purge a queue will close channel on unknown delivery tag can bind exchanges to exchanges supports x-max-length drop-head acking an invalid delivery tag should close the channel closes idempotently will close channel on double ack with multiple supports header exchange all removes the log exchange channel when closed supports x-alternate-exchange msgs publish to queue w/o consumers with max-length 0 will be dropped can delete exchange can delete queue can publish large messages to multiple queues should still drop_overflow even with slow consumers does not expire queue when consumer are still there handle immediate flag will limit message size supports alternate-exchange refuses unbinding from amq.default should deliver to all matching queues can receive and deliver multiple large messages supports expires should persist exchange-exchange binding rejects all unacked msgs when disconnecting can auto delete exchange basic_recover requeues messages for cancelled consumers binding to empty queue name binds last queue dead-letter preserves headers disallows deleting exchanges named amq.* should requeue messages correctly on channel close expires messages with TTL on requeue disallows creating queues starting with amq. supports sends nack if all queues reject drop overflow when max-length is applied it does remeber acked msgs between restarts only allow one consumer when exclusive consumers flag is set can reject while consuming GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) restarts fast even with large messages validates header exchange x-match dead-letter expired messages will requeue messages that can't be delivered can handle non valid protocol starts can reject message will close channel on double ack should measure time it takes to collect metrics in stats_loop supports x-max-length reject-publish supports max-length can delete internal exchange does not requeue messages on consumer close accepts connections can publish and consume messages larger than 128kb it does persists transient msgs between restarts validates header exchange binding with x-match replaces server stores on restart dead-letter expired messages to non existing exchange sets correct message timestamp supports publisher confirms supports mandatory publish flag supports auto ack consumers supports recover requeue expires multiple messages only allow one connection access an exlusive queues allows any Int64 message timestamp supports delivery-limit refuses binding to amq.default can reject and requeue message can publish small messages to multiple queues logs kTLS=off for TLS connections without kernel offload supports header exchange any supports consumer timeouts can handle messages going to no queue can cancel consumers supports single active consumer supports recover redeliver can publish to queues with max-length 0 if there's consumers supports recover for basic get acking tag 0 with multiple=true should not close the channel requeues unacked msg from basic_ack on disconnect splits frames into max frame sizes expires messages with message TTL on queue declaration expires messages disallows creating new exchanges named amq.* LavinMQ::Client::Channel::Consumer without x-priority should round-robin with x-priority should not accept any thing but integers as x-priority should send to prioritized consumer if ready should accept any integer as x-priority should round-robin to high priority consumers should respect priority on-demand deliver_loop delivers requeued messages to consumers on empty queue delivers messages already in queue when consumer connects shuts down deliver_loop after idle timeout and respawns on next message respawns idle consumer's deliver loop when channel close requeues a message delivers messages published after consumer connects to empty queue LavinMQ::HTTP::NodesController GET /api/nodes/gc_stats returns GC profiling stats POST /api/nodes/:name/gc_collect GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) triggers garbage collection for the current node returns 404 for an unknown node GET /api/nodes should return nodes data should not include GC stats POST /api/nodes/gc_collect GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) triggers garbage collection LavinMQ::Auth::OAuthUser #on_expiration stops fiber when user is closed closes the token-update channel when the watcher exits so a late refresh can't block (#2075) calls callback immediately when token is already expired #find_permission with wildcards handles overlapping parts correctly matches prefix wildcard pattern matches pattern with wildcards at both ends matches multiple wildcards handles pattern without wildcards as exact match matches middle wildcard pattern handles consecutive wildcards matches suffix wildcard pattern matches exact vhost name prefers exact match over wildcard matches single * wildcard (any vhost) #refresh rejects token with mismatched username MQTT::Session policies applies the most restrictive of a policy and operator policy drops existing messages when a max-length policy is applied enforces a max-length policy by dropping the oldest messages enforces a max-length-bytes policy by capping the stored bytes removes the max-length limit when the policy is deleted subscribe keeps the subscriptions of a persistent session after a restart does not restore an unsubscribed topic after a restart binds a qos2 subscription as qos1 bits 3,2,1,0 must be set to 0,0,1,0 [MQTT-3.8.1-1] pub/sub should replace old subscription with new [MQTT-3.8.4-3] must contain at least one topic filter [MQTT-3.8.3-3] should not allow any payload reserved bits to be set [MQTT-3-8.3-4] grants qos1 for a qos2 subscription [LavinMQ non-normative] #request_flush pushes buffered bytes to the follower without waiting for the ack-loop fallback flush message qos qos1 messages are stored for offline sessions [MQTT-3.1.2-5] qos is set according to subscription qos [LavinMQ non-normative] cannot ack a message twice cannot ack invalid packet id acks must not be ordered should not enqueue messages with QoS 0 if no client is connected to the session both qos bits can't be set [MQTT-3.3.1-4] acked qos1 message won't be sent again qos1 unacked messages re-sent in the initial order [MQTT-4.6.0-1] max inflight messages delivery halts at the inflight limit never exceeds a limit that was lowered while messages were in flight delivery resumes after acking LavinMQ::GlobalDefinitions keeps all active groups after a failed import save with skip_existing=false adds groups next to the default group of an existing vhost with skip_existing=false adds groups next to the default group of an existing vhost with skip_existing=true .import_from_file does not overwrite existing users raises on invalid regex in permissions skips default vhost and user when load_definitions is configured imports bindings with the mqtt exchange as source skips permissions for unknown users without crashing raises if definitions file not found raises on invalid JSON preserves admin permissions from definitions file on fresh boot imports definitions from a JSON file does not overwrite existing permissions raises on an invalid topic filter in a permission group keeps all active groups after a failed import save with skip_existing=true message routing should route a/b/c to a/+/+ should not route a/b/c to c/+/# should route a/b/c to +/+/c should not route a/b/c to +/+/d should route a/b/c to # should route a/b/c to a/b/+ should route a/b/c to a/+/# should not route a/b/c to +/a/+ should not route a/b/c to c/# should route a/b/c to +/b/c should route a/b/c to +/# should route a/b/c to a/b/# should route a/b/c to a/# should not route a/b/c to c/a/b should route a/b/c to a/b/c should route a/b/c to +/+/# should route a/b/c to a/+/c should route a/b/c to +/+/+ AMQ::Protocol::Properties can be encoded and decoded with keepalive client is disconnected after 1.5 * [keep alive] seconds LavinMQ::MQTT::Brokers ignores vhost events after closing tolerates a Closed event for a vhost it never registered LavinMQ::VHost should handle definitions files from v2.4.3 with frame size errors duplicate messages dup must not be set if qos is 0 [MQTT-3.3.1-2] dup on incoming messages is not propagated to other clients [MQTT-3.3.1-3] dup is set when a message is being redelivered [MQTT-3.3.1.-1] LavinMQ::MQTT permissions should block will messages when user lacks write permissions should block subscribe when user has write-only permissions should block publish when user has no write permissions should block subscribe when user has no read permissions should block subscribe when user has read-only permissions should allow operations when user has full permissions LavinMQ::AMQP::Stream Filters Filter on any header should support filtering on any header x-stream-filter can be an array with string and hashes x-stream-filter can be a AMQ::Protocol::Table with hashes should only get message matching filter should ignore messages with non-matching filters Handle x-filter-match-type ANY ALL should get messages without filter when x-stream-match-unfiltered set applies negative offset before filtering should still respect offset values while filtering should support multiple filters stream queue policy/publish concurrency GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) applies a stream policy concurrently with publishing without corrupting the store MQTT topic permissions: subscribe accepts a subscribe to a filter it cannot read and delivers nothing on it #replace writes filename, file size, and file contents to the LZ4 stream captures the file size at call time so later appends do not bleed into the stream LavinMQ::Server #update_system_metrics sh: line 1: ps: command not found sh: line 1: ps: command not found yields finite rates with sub-second stats_interval LavinMQ::Etcd can watch rejects ISR updates from a stale election holder2026-10-07T18:39:31.707485Z FATAL - lmq.etcd: No etcd endpoint responded rejects ISR updates from a stale election holder signals expired channel with the underlying error2026-10-07T18:39:35.498015Z FATAL - lmq.etcd: No etcd endpoint responded 2026-10-07T18:39:35.518478Z FATAL - lmq.etcd: No etcd endpoint responded signals expired channel with the underlying error #put_or_get should set and return value if key is non-existent should get existing value if key exists will not lose leadership when only one etcd node is lost raises LeaseNotFound when using an invalid lease2026-10-07T18:39:47.978478Z FATAL - lmq.etcd: No etcd endpoint responded raises LeaseNotFound when using an invalid lease will lose lease when loosing quorum basic auth and TLS support handles traditional host:port format uses default port when not specified supports mixed HTTP/HTTPS endpoints uses default port for HTTPS URLs maintains backwards compatibility with endpoints getter supports HTTPS endpoints with auth can put and get can elect leader signals expired channel when all lease is revoked2026-10-07T18:40:07.197845Z FATAL - lmq.etcd: No etcd endpoint responded 2026-10-07T18:40:07.197845Z FATAL - lmq.etcd: No etcd endpoint responded 2026-10-07T18:40:07.650039Z FATAL - lmq.etcd: No etcd endpoint responded signals expired channel when all lease is revoked learns new cluster endpoints LavinMQ::HTTP::AuthHandler a request already authenticated by a previous handler stays authenticated when no credentials are sent authenticates as the user named by valid explicit credentials stays authenticated when the OAuth identity cookie username contains a colon stays authenticated when only the passwordless OAuth identity cookie is sent authenticates via the Authorization header when the passwordless OAuth identity cookie accompanies it is rejected when explicit credentials are invalid LavinMQ::AMQP::StreamReader should read over multiple segments should handle offset (where to start the reader) should include x-stream-offset header LavinMQ::AMQP::FanoutExchange matches any rk unsubscribe bits 3,2,1,0 must be set to 0,0,1,0 [MQTT-3.10.1-1] must contain at least one topic filter [MQTT-3.10.3-2] must stop adding any new messages for delivery to the Client, but completes delivery of previous messages [MQTT-3.10.4-2] and [MQTT-3.10.4-3] retained messages retained messages are redelivered for subscriptions with qos1 retained messages are received on subscribe retain flag is 0 if there is an established subscription [MQTT-3.3.1-9] LavinMQ::AMQP::Stream doesn't support basic_get can requeue msgs per consumer max-age loop store's unmap_if_unused is a no-op after the store is closed instead of raising starts with a max-age policy and stops when it is removed stops when the stream is closed only runs for streams with max-age drops expired segments without any new publishes Consume multiple consumers get new messages immediately as they arrive should be able to consume multiple times should get message with offset 2 reproduces bug: second consumer doesn't get immediate delivery should get same nr of messages as published consumer gets new messages as they arrive ack files deletes leftover ack files and counts every message on load can start consume from last segment even if queue is empty requeued redeliveries keeps an older segment mapped until its last requeued message is redelivered segment readers keeps the count for consumers still in a shared segment tracks which segment each consumer is reading and releases on cancel segment rollover unmaps the first segment when the stream has no consumers x-stream-offset negative integer delivers remaining messages when older segments have been dropped x-stream-offset=-1 delivers only the latest message anchors to the end of the restored stream after a restart waits for new messages from the next offset when the stream is empty clamps Int64::MIN to the oldest available message continues with new messages after delivering the last N messages clamps to oldest available when stream has fewer messages than requested delivers the last N messages length retention x-max-length-bytes drops old segments on rollover once newer ones meet the limit x-max-length-bytes keeps a segment if dropping it would go below the limit x-max-length drops old segments on rollover once newer ones meet the limit x-max-length keeps a segment if dropping it would go below the limit Restarting stream should resume consuming from the correct position after a restart loads when trailing segment has only the 4-byte schema header loads when the trailing record is torn mid-body appends after a torn trailing record was dropped should restart a closed stream drops a publish when the store is closed concurrently consume from timestamp offset across segment boundary Automatic consumer offset tracking cleanup_consumer_offsets does not overflow with many consumer offsets does not track offset if x-stream-offset is set does not track offset if c-tag is auto-generated acking after the queue is deleted does not tear down the connection reads offsets from file on init should not use saved offset if x-stream-automatic-offset-tracking is false ConsumerOffsets.trim_to_size drops the oldest offsets when over the cap runs cleanup when removing segment drop_overflow does not raise after the store has been deleted compacts consumer tag file when full negative x-stream-offset does not override tracked offset on reconnect compacts consumer tag file on restart skips rewriting the consumer offsets file when the retention floor is unchanged expands consumer offset file when needed appends consumer tag file compacts consumer tag file again when it fills a second time with an unchanged retention floor store_consumer_offset raises ClosedError after the store is closed should use saved offset if x-stream-offset & x-stream-automatic-offset-tracking is set resumes from last offset on reconnect should not use saved offset if x-stream-offset is set cleanup_consumer_offsets removes outdated offset can be purged deliver loop scheduling yields to other fibers after yield_each_delivered_bytes during a replay yields to other fibers while scanning past filtered-out messages Expiration does not start the expire fiber when the last consumer leaves clears max-age when a policy is deleted should not lose messages on restart when max-age is set segments should be removed if max-length-bytes set removes segments when max-length policy is applied removes segments when max-age policy is applied meta files should be removed when segment is removed removes segments on publish if max-age policy is set applies a relaxed max-age when a policy is edited to a larger value ignores delivery-limit policy on streams removes segments when max-length-bytes policy is applied segments should be removed if max-length set segments should be removed if max-age set LavinMQ::MQTT::Exchange should only allow Session to bind LavinMQ::Auth::UserStore #delete should not clear cache when deleting non-existent user should invalidate existing permission caches on delete should clear permissions cache when deleting a user LavinMQ::MQTT::Exchange removes all subscriptions from the subscription tree when a session is removed exposes subscriptions as MQTT::SubscriptionDetails sharing the binding details interface grants a QoS 2 subscription bound from outside the MQTT protocol as QoS 1 publish shouldn't return anything for QoS=0 should return PubAck for QoS=1 mTLS (Mutual TLS) SNIHost mTLS configuration allows per-protocol mTLS configuration creates TLS context with mTLS enabled creates TLS context without mTLS when disabled client certificate authentication rejects connection without client certificate accepts connection with any CA-signed client certificate accepts connection with valid client certificate AMQP with mTLS rejects AMQP connection without client certificate allows AMQP connection with valid client certificate can publish and consume messages over mTLS connection LavinMQ::AMQP::ArgumentValidator::DeadLetteringValidator #validate! handles non-string dlx value gracefully rejects non-string routing key allows nil values when dlx is set accepts routing key when dlx is empty string rejects integer routing key when dlx is not set accepts valid string routing key when dlx is set accepts empty string routing key when dlx is set rejects routing key when dlx is not set rejects boolean routing key LavinMQ::AMQP::HeadersExchange matches any non-empty headers but not empty headers when args only have x- keys unbind shouldn't care about argument order with many bindings shouldn't care about argument order x-match default defaults to all when binding has no x-match uses x-match from exchange arguments as default binding x-match overrides exchange argument default should handle multiple bindings should handle unbind returns false when unbinding never-bound arguments bind shouldn't care about argument order with many bindings shouldn't care about argument order match any should match if any args are the same should match nestled amq-protocol tables should not match if no args are the same match all should not match if not all args are the same should not match if args are missing should match if same args should handle all Field types match empty should match if both args and headers are empty LavinMQ::AMQP::TopicExchange should match catch-all should match multiple bindings # should consider what's comes after matches star-wildcards can differentiate a.b.c from a.b matches exact rk should match double star-wildcards should not match single star on multiple segments # should consider what's comes after can handle multiple # should match triple star-wildcards should not match with too many star-wildcards matches prefixed star-wildcard # should match zero segments should match star-wildcards in the middle # can be followed by * returns false when unbinding a never-bound routing key # should consider what's comes after matches star-wildcards but not too much should not get index out of bound when matching routing keys LavinMQ::HTTP::PermissionGroupsController returns 404 for an unknown vhost does not overwrite a group imported while the create waits for the save lock keeps both edits when two requests wait for the save lock refuses non-administrators on every route groups creates, lists, gets and deletes a permission group rejects an invalid group name, creating nothing lists groups as summaries with pagination and filtering returns 204 when creating a group that already exists accepts a group name with hyphens and underscores returns 404 when deleting a group that does not exist rejects a create with a body reports failed saves without changing the active groups members GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) lists members with pagination and filtering adds, lists and removes members returns 404 for member operations on a missing group rules keeps a rule committed while the request body is in flight rejects an invalid rule, creating nothing returns 404 for rule operations on a missing group adds, lists, replaces and removes a rule by identifier LavinMQ::Clustering::Client sync_files directory cleanup deletes only directories absent from leader keeps directories containing files present on the leader deletes directory not on leader deletes nested directory tree absent from leader #close waits for the ack loop's pending syncs before closing the data dir fd state carried across a re-sync appends to the file the re-sync installed, not the replaced inode checksum persistence during sync persists compare-loop hashes incrementally, before close persists hashes of received files, before close keeps checksums.sha1 across repeated sync passes checksums persisted on close persists no checksum for a file appended to after sync keeps the old checksum when a replace never completes persists the checksum of a replaced file persists the checksum of a file it created by appending drops the checksum of a file the sync deleted hash_local_files skips files already in the checksum cache drops checksums of files deleted because the leader lacks them keeps hashing after a file it can't read skips local-only files the leader never sends leaves no hashing to do while the leader is connected hashes every local file, including files the leader doesn't have stream_changes acks a large action incrementally instead of only when it completes acks a delete only after the file has been deleted stops the streamed bytes logging fiber when the stream ends does not send a replace's final ack if the rename could not be applied does not ack a delete that could not be applied acks the end of a replace only after the file is renamed into place skips local sync before acking streamed bytes when sync is disabled LavinMQ::Tag parse comma separated list RingConsistentHasher(T) Hasher should be consistent (test 1) should be consistent after delete should be consistent (test 2) should return first value is ring size is 1 should return nil if empty MQTT max-connections lets a client with the same client_id reconnect at the limit accepts connections again once the limit is lifted refuses connections over the vhost limit LavinMQ::VHost Byte rate stats should track send bytes at vhost level from MQTT deliver should track recv bytes at vhost level from AMQP publish should track recv bytes at vhost level from MQTT publish all protocols should aggregate byte counts to vhost level should track send bytes at vhost level from AMQP consume Flow sh: line 1: ps: command not found should stop flow when disk is almost full should support consumer flow should support server flow sh: line 1: ps: command not found sh: line 1: ps: command not found should resume flow when disk is no longer full LavinMQ::HTTP::Router is a HTTP::Handler #find_route registers route and finds it does not find unregistered route #get registers route #call should route on method and path routes paths with escapes that decode to invalid UTF-8 matches literal segments with percent-encoded unreserved chars does not decode a bare percent sign together with the escapes after it supports single param prefers an earlier literal route over a param route when the literal is percent-encoded supports multiple params decodes params exactly once does not treat an encoded slash as a segment separator should uri decode params supports rest param LavinMQ::HTTP::VHostsController PUT /api/vhosts/vhost should only allow administrators to create vhost should create vhost should create a vhost with full permissions to user should update vhost GET /api/vhosts/vhost/permissions should return permissions for vhosts GET /api/vhosts/:vhost should return 404 if vhost does not exist should return vhost should return 403 if vhost does not exist and user is not an administrator should count returned unroutable messages in message_stats GET /api/vhosts should list vhosts for monitoring users should return all vhosts only return vhosts user has access to if mangement tag DELETE /api/vhosts/:vhost should return 204 when deleting vhost should only allow administrators to delete vhost should return 404 when trying to delete non existing vhost should return 403 when a non-administrator tries to delete a non existing vhost LavinMQ::Server Consumer with prefetch should receive more after acks should be shared across all consumers on the channel when global is true should be applied separately to each new consumer on the channel when global is false should receive prefetch number of messages LavinMQ::VHost should apply queue TTL policy on existing queue should overwrite policy with same name should apply streams policy only to stream queues should apply policy should remove head if queue to large should be able to list policies should apply quorum_queues policy to non-stream queues should respect priority operator policies merges with normal polices effective_policy_definition should not include unsupported policies should apply classic_queues policy only to non-stream queues with max-length-bytes policy applied should replace with max-length should update queue expiration should not enqueue messages that make the queue to large should remove effect of deleted policy together with arguments should use the lowest value should use the lowest value for delivery-limit arguments should have priority for non numeric arguments should drop messages if above delivery-limit should remove policy from resource when deleted should apply message TTL policy on existing queue handling invalid policy values should ignore invalid type for message-ttl should ignore invalid type for dead-letter-exchange should ignore invalid type for max-length and apply valid values should ignore invalid type for overflow should ignore invalid type for dead-letter-routing-key should ignore invalid type for delivery-limit should ignore invalid type for max-length-bytes should ignore invalid type for expires should apply all valid values when mixed with invalid types should apply max-length-bytes on existing queue should be able to add policy #wait_for_confirm does not disconnect a follower that was idle longer than the ack deadline unblocks all concurrent waiters when the follower acks blocks until the follower has acked the bytes sent so far never writes the socket from the calling fiber, so an isolated execution context can wait safely disconnects a connected follower that stops acking, unblocking the waiter returns when the follower disconnects before acking ping responds to ping [MQTT-3.12.4-1] LavinMQ::SchemaVersion Schema version Deletes empty file when it is second file Empty file should raise IO::EOFError Should verify schema version Deletes empty file and creates a new when it is the first file LavinMQ::Server UNIX Sockets can accept UNIX socket connections LavinMQ::DefinitionsStore has definition frames on disk before they are dispatched to followers Message segment metadata files Count file functionality stores message count in metadata files uses metadata for faster message store initialization Segment deletion with metadata cleanup deletes meta file when purging queue only completed segments have meta files deletes meta file when segment is deleted Metadata file reading on startup produces metadata files when missing on load falls back to message scanning when meta file missing Metadata file creation writes correct metadata for stream queues creates meta file when segment becomes full LavinMQ::AMQP::ArgumentValidator::StringValidator #validate! allows nil values rejects boolean values accepts empty string rejects integer values rejects array values accepts valid string extract_conn_info during full_sync with syncing_followers should handle PROXY protocol after follower has fully synced should reject PROXY protocol when no followers are syncing or synced refuses the default user over MQTT when a synced follower forwards a loopback client should handle PROXY protocol from syncing followers during full_sync LavinMQ::RateLimiter yields again after the interval has passed does not yield again within the interval yields on first call LavinMQCtl::DefinitionsGenerator includes permission groups read from each vhost's mqtt_permissions.json emits the default group for a vhost without mqtt_permissions.json emits an empty mqtt_permissions array when there is no vhost LavinMQ::MQTT::TopicRuleSegment does not compile an invalid filter matches a single level with + matches a literal filter exactly does not treat a client id containing a separator as a wildcard matches everything with a bare # matches the client id level only for that client matches the remainder with #, including zero levels LavinMQ::Observable(EventT) with one observable #unregister_observer unregisters observers notify observers #register_observer registers observers with two observable notify right observers LavinMQ::HTTP::ConsumersController GET /api/consumers/vhost should return all consumers for a vhost should return empty array if no consumers GET /api/consumers should return all consumers should return empty array if no consumers DELETE /api/consumers/vhost/connection/channel/consumer should return 204 when successful should return 404 if connection does not exist should return 404 if channel does not exist should return 404 if consumer does not exist MQTT topic permissions: will drops a will on a topic the client may not write does not retain a will the client may not write publishes a will on a topic the client may write #full_sync should send file list relaxes the write timeout during full_sync and restores it for ack_loop LavinMQ::Clustering::Client can restart metrics_server after being a follower LavinMQ::Deduplication LavinMQ::Deduplication::MemoryCache(T) should default cache size should store item without ttl should have max size as optional setting should respect ttl LavinMQ::Auth::Chain OauthUser token_lifetime returns negative duration for expired token on_expiration calls the block when token expires does not call block before expiration token_lifetime returns positive duration for non-expired token auth backend configuration creates only oauth authenticator when backends is ['oauth'] creates both authenticators when backends is ['local', 'oauth'] raises error for unsupported backend raises error when invalid backend is mixed with valid ones creates only local authenticator when backends is ['local'] creates authenticators in specified order ['oauth', 'local'] requires loopback if Config.#default_user_only_loopback? is true default user loopback gate with PROXY protocol accepts the default user from a real loopback connection without a PROXY header accepts a non-default user when a PROXY header claims a loopback source rejects the default user when a PROXY header claims a loopback source rejects the default user when a listed proxy reports a remote source rejects the default user when a listed proxy reports a loopback source successfully authenticates and returns a local user creates a default authentication chain if not configured permissions_details returns correct permission details for OAuth user returns correct permission details for local user does not authenticate when given invalid credentials auth chaining fallback behavior returns nil when all backends in chain fail tries local first, then oauth when both configured LavinMQ::MQTT::TopicFilter .valid_filter? rejects an empty filter rejects a '#' that is not the last and sole token of its level rejects a filter with too many levels accepts well-formed MQTT topic filters rejects a '+' that is not the sole token of its level LavinMQ::Auth::JWT::PublicKeys #clear removes stored keys #update edge cases handles multiple rapid updates handles empty keys hash handles zero TTL as expired #get? returns keys when not expired returns nil when no keys are set returns nil when keys are expired Transactions acks can be commited can be rollbacked publishes can be commited to multiple queues can be rollbacked can be commited LavinMQ::Auth::OAuthAuthenticator #authenticate with invalid tokens rejects tokens with non-RS256 algorithm rejects tokens with more than 3 parts rejects expired tokens in prevalidation rejects tokens with missing exp claim rejects tokens with missing algorithm in header rejects tokens that don't start with 'ey' rejects tokens with invalid JWT format (wrong number of parts) rejects token with None algorithm (security check) configuration requirements works with multiple preferred username claims works with custom scope prefix works with resource server ID accepts valid configuration works with optional audience verification disabled on-demand JWKS fetch fetches keys on first authentication when the refresh loop hasn't populated them rate-limits fetch attempts when the provider is unreachable LavinMQ::Server amq.direct.reply-to should return on mandatory publish to a reply routing key should be able to consume amq.direct.reply-to should require consumer to be in no-ack mode should be able to consume amq.rabbitmq.reply-to should set reply-to should allow amq.rabbitmq.reply-to to be declared should be ok to declare reply-to queue to check if consumer is connected should allow amq.direct.reply-to to be declared should reject publish if no amq.direct.reply-to consumer LavinMQ::MQTT::PermissionService does not activate a new grant when saving fails seeds a default group that allows every user every topic grants only the requested verb grants nothing for a group with an empty rules array refuses to load a group with duplicate rule identifiers from disk saves an empty list when created without the default group applies only wildcard-member rules when the username is unknown fails closed on {client_id} matching when the client id is the '#' wildcard survives a reload from disk rejects an invalid group on put binds {client_id} to the requesting client gives a client the union of rules from every group it is a member of keeps the default group's grant next to a narrower group grants nothing for a group with rules but no members denies everything once the default group is deleted reflects a delete on the next check applies a wildcard-member group to every client saves the default group when it creates it keeps concurrent group additions in memory and on disk creates a group only when the name is free rejects an invalid group on update keeps a shared group's rules intact when one member is also in another group does not create the default group again after it was deleted keeps the group as it is when the update block returns nil reflects an update on the next check keeps a deleted group's grants when saving the deletion fails applies a group only to its members never attributes one group's rules to another group's members refuses to load a group with an invalid name from disk updates a group from its state at commit time reports a missing group on update refuses to load a group with an invalid pattern from disk LavinMQ::AMQP::Server sources url from the bound TCP listener accepts connections on a bound TCP socket accepts connections after the server restarts and the frontend is replaced keeps listening state when a second listen call is rejected closes idempotently LavinMQ::Clustering::Server thread safety GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) concurrent files_with_hash and mutations don't crash GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) concurrent with_file and mutations don't crash join baseline (full_sync cut) streams only the unsynced tail of a record that straddles the cut #files_with_hash with caps recomputes when the cap does not match the cached hash's size heals restored sizeless entries in the uncapped pass reuses the cached hash when it covers exactly the cap for MFile should hash only the real (data) size, not the sparse capacity for File should open and read file calculating hash #append raises ArgumentError when no MFile is registered for the path #followers returns only synced followers #each_follower broken-follower cleanup removes a synced follower whose dispatch raises a socket error #stream changes delivers and acks outstanding data, then shuts down cleanly OpenSSL::SSL::Socket kTLS status engages kTLS on sockets when ENABLE_KTLS option is set reports no kTLS when ENABLE_KTLS option is not set #delete writes filename and a zero size marker LavinMQ::MQTT::Server accepts connections after the server restarts and the frontend is replaced accepts connections on a bound TCP socket LavinMQ::SegmentPosition with expiration should create a SP with x-delay should treat negative x-delay as no delay should treat non-integer x-delay as no delay should flag SP with x-dead-letter-exchange header should create a SP with priority should find x-delay and x-dead-letter-exchange among other headers should create a SP without TTL or priority OAuth2 OAuthController /oauth/callback success cookies succeeds when the IdP returns expires_in as a JSON string scopes cookies to the path of oauth_mgmt_base_url sets oauth_token (HttpOnly, SameSite=Lax) and m identity cookie with Secure OAuthController JWT cookie keeps session cookies when JWKS keys could not be fetched clears a stale oauth_token cookie on rejection rejects an invalid JWT in the oauth_token cookie with 401 still allows basic auth when OAuth is wired OAuthController /oauth/logout clears the oauth cookies and redirects to login OAuthController /oauth/enabled returns enabled=false when OAuth is not configured returns enabled=true when OAuth is configured OAuthController /oauth/callback error handling redirects to login when oauth_state cookie is missing redirects to login on state mismatch redirects to login when code query parameter is missing OAuthController when management UI SSO is not configured GET /oauth/authorize returns 503 GET /oauth/callback redirects to login OAuthController /oauth/callback integration redirects to login with error when token validation fails redirects to login when token exchange returns non-2xx TokenResponse expires_in parsing returns nil when expires_in is null parses expires_in as a JSON string (Azure/Entra) still parses fields following an unexpected expires_in type parses expires_in as a JSON number returns nil when expires_in is absent returns nil for an unparseable expires_in string OAuthController /oauth/authorize cookie flags fetches OIDC discovery on demand when the background refresh has not populated it yet sets oauth_state with Secure, HttpOnly, SameSite=Lax includes the audience parameter when oauth_audience is configured omits the audience parameter when oauth_audience is not configured requests the default "openid profile" scope when oauth_mgmt_scopes is not configured requests the configured scope when oauth_mgmt_scopes is set omits Secure when the management UI is served over http://localhost OAuth sessions using the management API can create a vhost PKCE produces different verifiers on each call generates a correct challenge (SHA256 of verifier, base64url-encoded) generates a verifier of at least 43 characters connect [MQTT-3.1.4-1] when client already connected keeps the replacement client registered after the old client cleanup runs should replace the already connected client [MQTT-3.1.4-2] receives connack tcp socket is closed [MQTT-3.1.4-1] for invalid client id [MQTT-3.1.3-4]. should not publish after disconnect if first packet is not a CONNECT [MQTT-3.1.0-1] for reserved bit set [MQTT-3.1.2-3] for a second CONNECT packet [MQTT-3.1.0-2] for invalid protocol name [MQTT-3.1.2-1] with expected flags set no session present when reconnecting a clean session with a non-clean session [MQTT-3.1.2-6] session present when reconnecting a non-clean session [MQTT-3.1.2-4] no session present when reconnecting a clean session [MQTT-3.1.2-6] no session present when reconnecting a non-clean session with a clean session [MQTT-3.1.2-6] with expected return code for invalid protocol version [MQTT-3.1.2-2] for valid credentials [MQTT-3.1.4-4] accepts zero byte client_id but is assigned a unique client_id [MQTT-3.1.3-6] for password flag set without username flag set [MQTT-3.1.2-22] accepts zero-byte ClientId with CleanSession set to 1 [MQTT-3.1.3-7] client_id must be the first field of the connect packet [MQTT-3.1.3-3] for empty client id with non-clean session [MQTT-3.1.3-8] LavinMQ::AMQP::Stream GIS filtering should filter messages by radius should handle multiple GIS filters with ALL logic should raise error for invalid GIS filter parameters should combine GIS and standard filters with ALL logic should filter messages by bounding box should filter messages by polygon should combine GIS and standard filters with ANY logic should reject messages without geo coordinates LavinMQ::AMQP::ArgumentValidator::IntValidator #validate! rejects value below min when both min and max set rejects value below minimum accepts value below maximum accepts valid integer allows nil values rejects non-integer values rejects value above maximum accepts value above minimum accepts value equal to maximum rejects boolean values rejects value above max when both min and max set accepts value within min and max range accepts value equal to minimum MQTT topic permissions: read at delivery filters retained messages on subscribe filters a wildcard subscription to only authorized topics does not count a read-denied message as routed LavinMQ::SNIHost creates separate TLS contexts with protocol-specific overrides creates TLS contexts with mTLS settings creates TLS contexts that prefer the server cipher order creates TLS contexts with default settings does not prefer server ciphers by default LavinMQ::HTTP::ExchangesController GET /api/exchanges/vhost/name with x-hash-on argument should include x-hash-on in effective_arguments for consistent hash exchange should not include x-hash-on in effective_arguments when not set PUT /api/exchanges/vhost/name should handle invalid JSON should require arguments if the type demands it should require config access to declare should create exchange should require durable to be the same when overwriting should require a known type should require type should redeclare identical delayed_message_exchange should not be possible to declare amq. prefixed exchanges should handle unexpected input GET /api/exchanges/vhost/name should return 404 if exchange does not exist should return exchange DELETE /api/exchanges/vhost/name should not delete exchange if in use as destination when query param if-unused is set should not delete exchange if in use as source when query param if-unused is set should delete exchange should delete internal exchange should not delete a default exchange (amq.#) POST /api/exchanges/vhost/name/publish should return routed:false instead of 500 when queue rejects on overflow should handle base64 encoding should publish should handle string encoding should require all args should require expiration to be a number should require expiration to be a non-negative number delivers to non-overflowing queues even when one bound queue rejects GET /api/exchanges should return all exchanges GET /api/exchanges/vhost/name/bindings/source should list bindings GET /api/exchanges/vhost/name/bindings/destination should list bindings GET /api/exchanges/vhost should return all exchanges for a vhost MQTT session limit survives unsubscribe and puback from a client that was refused a session counts AMQP queues and MQTT sessions against the same limit refuses a subscribe that would exceed max-queues allows subscribing on an existing session when the limit is reached allows a new session once one is freed LavinMQ::StandaloneRunner yields to block immediately stops when stop is called #append writes UInt32 value little-endian with a -4 size header writes filename and Bytes payload with a negative size header writes Int32 value little-endian with a -4 size header Queue Dead Lettering Routed Callback is called once when dead lettering to multiple queues is called once when all dead letter destinations are cycles ack/delete_message no-ops after close races a dead-letter drain Routing and Exchange Behavior should dead letter to message's routing key when x-dead-letter-routing-key is missing should dead letter to BCC if dead-letter-routing-key is missing should dead letter to CC if dead-letter-routing-key is missing should delete message if dead lettering exchange is missing Complex Rejection Scenarios should dead letter on single nack should only dead letter on nack multiple with requeue=false when basic get dead_letter_max_length_reject_publish_dlx should only dead letter on nack multiple with requeue=false when basic consume Basic Dead-Lettering Mechanisms should not dead letter on nack with requeue=true and multiple=true should dead letter when ttl expires while unacked and reject(requeue=true) should dead letter on nack with requeue=false should dead letter on reject with requeue=false should dead letter in chain should dead letter on ttl should not dead letter on reject with requeue=true should dead letter many when nack with requeue=false and multiple=true should not dead letter on nack with requeue=true should dead letter on max-length with drop-head should dead letter when delivery-limit exceeded on reject(requeue=true) should dead letter many rejects Header Validation should increase x-death count for same queue and reason dead_letter_headers_BCC should append x-death for each event should add x-death for ttl should add x-death for reject should not route to BCC in a later dead lettering hop when dead-letter-routing-key was set should only be dead lettered to dead-letter-routing-key with CC removed should route to and keep CC header if no dead lettering routing key is set dead_letter_headers_should_not_be_appended_for_republish should add x-death for message expiration shoud add x-death for message maxlen should set first death and preserve it dead_letter_headers_first_death_route (REQUIRES x-match = all-with-x) Cycle Detection dead_letter_routing_key_cycle_max_length dead_letter_routing_key_cycle_ttl should detect cycle with two queues in chain dead_letter_routing_key_cycle_with_reject should not stack overflow with a long chain should not stack overflow with two mutually dead-lettering queues should detect cycle with three queues in chain LavinMQ::VHost can limit queues should be able to persist vhosts should keep durable mqtt session bindings after compaction and restart should be able to create vhosts should be able to persist bindings should be able to persist durable exchanges keeps a deleted MQTT default group deleted after close and restart should be able to persist durable delayed exchanges when type = x-delayed-message can limit connections should compact definitions during runtime should be able to delete vhosts should keep durable mqtt sessions after compaction and restart should not write unbind frame to definition file for non-existing binding saves the MQTT default group when the vhost is created should be able to persist durable queues auto add permissions should add permission to the user creating the vhost should auto add permission to the default user serializes concurrent saves so they don't race on the tmp file should not write bind frame to definition file for existing binding LavinMQ::Clustering::Checksums restores appended hashes once, then discards them (one-shot) persists an appended hash immediately, before any store/close keeps persisting via append after a store rewrite persists and restores the covered size rewrites a clean snapshot on store drops old-format entries without a covered size on restore keeps covered sizes across a store rewrite LavinMQ::AMQP::BindingKey #hash returns same value for same arguments with different orders #properties_key returns '~' for routing key and arguments returns '~' if no routing key but arguments returns same hash for same arguments with different orders returns '' if no arguments are provided returns ~ for empty routing key and no arguments MQTT topic permissions: session user keeps the session user across a restart loads a session with a metadata file holding "" and applies wildcard rules only checks a taken-over session against the new user loads a session with a metadata file holding "[]" and applies wildcard rules only JumpConsistentHasher(T) Hasher should return first value if only one target should return nil if empty should get the same messages after adding a target and then remove it should handle target removal should distribute keys across targets should respect weight for distribution should minimize remapping when target is added should be consistent for same key LavinMQ::HTTP::BindingsController GET /api/bindings/vhost/e/source/e/destination GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) should return bindings GET /api/bindings/vhost should return all bindings for a vhost DELETE /api/bindings/vhost/e/exchange/q/queue/props should delete binding GET /api/bindings/vhost/e/exchange/q/queue should return 404 if exchange does not exist should return bindings DELETE /api/bindings/vhost/e/source/e/destination/props should delete binding GET /api/bindings should return all bindings GET /api/bindings/vhost/e/source/e/destination/props should return binding POST /api/bindings/vhost/e/source/e/destination should return forbidden for the default exchange should create binding GET /api/bindings/vhost/e/exchange/q/queue/props should return binding POST /api/bindings/vhost/e/exchange/q/queue should return 404 if exchange does not exist should create binding should return forbidden for the default exchange should inform about required fields should return bad request for invalid routing key on consistent hash exchange rate-history log visibility GET /api/connections/:name includes the rate log GET /api/channels/:name includes the rate log (detail page renders the chart) GET /api/channels omits the rate log, keeps the current rate GET /api/connections omits the rate log, keeps the current rate LavinMQ::HTTP::Server DELETE /api/vhost-limits/vhost/type clears the limit Pagination should page results should return the number of message deliver_gets Sorting should sort results should sort results by nested keys should sort by column when all values are nil should sort reverse results should sort by column with nil values GET /api/aliveness-test/vhost should run aliveness-test GET /api/overview should return the number of rejected and redelivered messages should return the number of message gets should count returned unroutable messages in message_stats should allow access if user is correct should refuse access if user does not exist should return the number of bindings in object_totals should refuse access if password does not match should return sum of all published messages should filter stats if x-vhost header is set should refuse access if no basic auth header should return the number of published messages should return the number of acked and delivered messages LavinMQ-Version header advertises the server version on API responses is not set on static/HTML responses LavinMQ::MQTT::StringTokenIterator is iterated correctly is iterated correctly is iterated correctly is iterated correctly is iterated correctly is iterated correctly is iterated correctly is iterated correctly LavinMQCtl with http server should show status in JSON format should set vhost limits should hash password should list connections in JSON format should list users should create and delete queue should fail when setting policy with invalid JSON should fail when creating exchange without type GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) should trigger garbage collection and print stats should create durable queue should list users in JSON format should pause and resume queue should list queues in JSON format should fail when setting vhost limits with invalid JSON should fail when deleting non-existent user should fail when creating user with missing password should show cluster status should purge queue should add and delete user should list exchanges should list connections should set and clear policy should create exchange with durable flag should set permissions should handle connection errors gracefully should add and delete vhost should list vhosts in JSON format should list exchanges in JSON format should list policies for vhost should fail when purging non-existent queue should export definitions should set user tags should create and delete exchange should change user password should show status should fail when deleting non-existent queue should list vhosts should list queues LavinMQ::IPMatcher .parse and #matches? edge cases handles whitespace in IP CIDR notation can match different IPv6 representations doesn't match IPv4 address against IPv6 CIDR handles whitespace in CIDR doesn't match IPv6 address against IPv4 CIDR IPv4 exact IP matching handles loopback address matches exact IPv4 address doesn't match different IPv4 address IPv6 CIDR matching matches IP in /64 range matches IP in /128 range (single host) handles link-local /10 range doesn't match IP outside /64 range doesn't match IP outside /32 range matches IP in /0 range (all IPs) matches IP in /32 range negative matches IPv6 matcher rejects raw IPv4 IPv6 /126 boundary IPv6 /64 doesn't bleed into adjacent /64 IPv4 matcher matches IPv4-mapped IPv6 (dual-stack listener) IPv4 off-by-one in last octet IPv6 off-by-one in last group IPv6 /127 boundary IPv4 CIDR matches IPv4-mapped IPv6 (dual-stack listener) IPv4 matcher doesn't match a real (non-mapped) IPv6 address IPv6 lookalike with different magnitude doesn't match IPv4 off-by-one at /24 boundary error handling raises on IPv4 prefix > 32 raises on invalid IPv6 address raises on invalid CIDR prefix raises on CIDR with invalid IP raises on invalid IPv4 address raises on invalid CIDR notation raises on IPv6 prefix > 128 IPv6 exact IP matching matches equivalent IPv6 representations of loopback doesn't match different IPv6 address matches expanded form against zero-compressed form matches exact IPv6 address matches zero-compressed form against expanded form handles IPv6 loopback matches mixed-case hex digits IPv4 CIDR matching matches IP in /24 range handles /25 CIDR handles /12 CIDR (AWS VPC default) matches IP in /8 range doesn't match IP outside /8 range normalizes network address matches IP in /0 range (all IPs) matches IP in /32 range (single host) matches IP in /16 range doesn't match IP outside /24 range doesn't match IP outside /16 range retain_store restore_index restores the index from a file survives a restart retain empty body deletes adds to index and writes msg file each calls block with correct arguments handles multiple subscriptions can be called multiple times subscribing to topic with retained message does not crash MQTT connection details exposes connection details Publish Confirm Persistence confirms immediately when sync is disabled nacks rejected publishes and acks the accepted ones runtime sync-mode flip (regression for #2078) keeps confirming when sync is enabled mid-stream keeps confirming when sync is disabled mid-stream correctly acknowledges multiple messages with one ack frame confirms a single publish quickly (no batching delay) confirms are still received by the client batches concurrent in-flight publishes into multi-acks Websocket support when request 'Sec-WebSocket-Protocol' is set to 'invalid' should not set response 'Sec-WebSocket-Protocol' GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) GC Warning: Finalization cycle involving (???) should accept amqp client should not accept mqtt client is set to 'mqttish' should not accept amqp client should accept mqtt client should set response 'Sec-WebSocket-Protocol' to 'mqttish' is set to 'amqpish' should set response 'Sec-WebSocket-Protocol' to 'amqpish' should not accept mqtt client should accept amqp client is set to 'amqp' should accept amqp client should not accept mqtt client should set response 'Sec-WebSocket-Protocol' to 'amqp' is set to 'stomp,amqp,mqtt' should set response 'Sec-WebSocket-Protocol' to 'amqp' (first match) is set to 'mqtt' should accept mqtt client should not accept amqp client should set response 'Sec-WebSocket-Protocol' to 'mqtt' can publish large messages tracks AMQP websocket connections on the vhost should connect over websocket Pending: LavinMQ::VHost GC segments LavinMQ::AMQP::Queue MessageStore should not ack 'empty' msg if mfile.size is too big LavinMQ random disconnects LavinMQ::Etcd learns new cluster endpoints LavinMQ::Server UNIX Sockets can accept UNIX socket connections OpenSSL::SSL::Socket kTLS status engages kTLS on sockets when ENABLE_KTLS option is set Queue Dead Lettering Complex Rejection Scenarios dead_letter_max_length_reject_publish_dlx Queue Dead Lettering Header Validation dead_letter_headers_BCC Queue Dead Lettering Header Validation dead_letter_headers_should_not_be_appended_for_republish Queue Dead Lettering Header Validation dead_letter_headers_first_death_route (REQUIRES x-match = all-with-x) Finished in 3:50 minutes 2420 examples, 0 failures, 0 errors, 10 pending Randomized with seed: 12611 + RPM_EC=0 ++ jobs -p + exit 0 Processing files: lavinmq-2.10.2-1.fc43.aarch64 Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.FeggpO + umask 022 + cd /builddir/build/BUILD/lavinmq-2.10.2-build + cd lavinmq-2.10.2 + DOCDIR=/builddir/build/BUILD/lavinmq-2.10.2-build/BUILDROOT/usr/share/doc/lavinmq + export LC_ALL=C.UTF-8 + LC_ALL=C.UTF-8 + export DOCDIR + /usr/bin/mkdir -p /builddir/build/BUILD/lavinmq-2.10.2-build/BUILDROOT/usr/share/doc/lavinmq + cp -pr /builddir/build/BUILD/lavinmq-2.10.2-build/lavinmq-2.10.2/README.md /builddir/build/BUILD/lavinmq-2.10.2-build/BUILDROOT/usr/share/doc/lavinmq + cp -pr /builddir/build/BUILD/lavinmq-2.10.2-build/lavinmq-2.10.2/NOTICE /builddir/build/BUILD/lavinmq-2.10.2-build/BUILDROOT/usr/share/doc/lavinmq + cp -pr /builddir/build/BUILD/lavinmq-2.10.2-build/lavinmq-2.10.2/CHANGELOG.md /builddir/build/BUILD/lavinmq-2.10.2-build/BUILDROOT/usr/share/doc/lavinmq + RPM_EC=0 ++ jobs -p + exit 0 Executing(%license): /bin/sh -e /var/tmp/rpm-tmp.e6197Z + umask 022 + cd /builddir/build/BUILD/lavinmq-2.10.2-build + cd lavinmq-2.10.2 + LICENSEDIR=/builddir/build/BUILD/lavinmq-2.10.2-build/BUILDROOT/usr/share/licenses/lavinmq + export LC_ALL=C.UTF-8 + LC_ALL=C.UTF-8 + export LICENSEDIR + /usr/bin/mkdir -p /builddir/build/BUILD/lavinmq-2.10.2-build/BUILDROOT/usr/share/licenses/lavinmq + cp -pr /builddir/build/BUILD/lavinmq-2.10.2-build/lavinmq-2.10.2/LICENSE /builddir/build/BUILD/lavinmq-2.10.2-build/BUILDROOT/usr/share/licenses/lavinmq + RPM_EC=0 ++ jobs -p + exit 0 Provides: config(lavinmq) = 2.10.2-1.fc43 group(lavinmq) lavinmq = 2.10.2-1.fc43 lavinmq(aarch-64) = 2.10.2-1.fc43 user(lavinmq) = dSBsYXZpbm1xIC0gIkxhdmluTVEgbWVzc2FnZSBicm9rZXIiIC92YXIvbGliL2xhdmlubXEA Requires(interp): /bin/sh /bin/sh /bin/sh Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Requires(pre): group(lavinmq) user(lavinmq) Requires(post): /bin/sh Requires(preun): /bin/sh Requires(postun): /bin/sh group(lavinmq) user(lavinmq) Requires: libc.so.6()(64bit) libc.so.6(GLIBC_2.17)(64bit) libc.so.6(GLIBC_2.25)(64bit) libc.so.6(GLIBC_2.32)(64bit) libc.so.6(GLIBC_2.33)(64bit) libc.so.6(GLIBC_2.34)(64bit) libc.so.6(GLIBC_ABI_DT_RELR)(64bit) libcrypto.so.3()(64bit) libcrypto.so.3(OPENSSL_3.0.0)(64bit) libgc.so.1()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libgcc_s.so.1(GCC_3.3)(64bit) liblz4.so.1()(64bit) libm.so.6()(64bit) libm.so.6(GLIBC_2.17)(64bit) libm.so.6(GLIBC_2.29)(64bit) libpcre2-8.so.0()(64bit) libpcre2-8.so.0(PCRE2_10.47)(64bit) libssl.so.3()(64bit) libssl.so.3(OPENSSL_3.0.0)(64bit) libz.so.1()(64bit) rtld(GNU_HASH) Processing files: lavinmq-debugsource-2.10.2-1.fc43.aarch64 Provides: lavinmq-debugsource = 2.10.2-1.fc43 lavinmq-debugsource(aarch-64) = 2.10.2-1.fc43 Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Processing files: lavinmq-debuginfo-2.10.2-1.fc43.aarch64 Provides: debuginfo(build-id) = 00b45b690f5dc4704bd7871d040dec610f043497 debuginfo(build-id) = bb3f26b632472e9f106918d06ea454f5ca08800c debuginfo(build-id) = d90f5747e63bc645e019ac8a537c4fb63bf8695b lavinmq-debuginfo = 2.10.2-1.fc43 lavinmq-debuginfo(aarch-64) = 2.10.2-1.fc43 Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Recommends: lavinmq-debugsource(aarch-64) = 2.10.2-1.fc43 Checking for unpackaged file(s): /usr/lib/rpm/check-files /builddir/build/BUILD/lavinmq-2.10.2-build/BUILDROOT Wrote: /builddir/build/RPMS/lavinmq-debugsource-2.10.2-1.fc43.aarch64.rpm Wrote: /builddir/build/RPMS/lavinmq-debuginfo-2.10.2-1.fc43.aarch64.rpm Wrote: /builddir/build/RPMS/lavinmq-2.10.2-1.fc43.aarch64.rpm Finish: rpmbuild lavinmq-2.10.2-1.fc43.src.rpm Finish: build phase for lavinmq-2.10.2-1.fc43.src.rpm INFO: chroot_scan: 1 files copied to /var/lib/copr-rpmbuild/results/chroot_scan INFO: /var/lib/mock/fedora-43-aarch64-1791398091.957105/root/var/log/dnf5.log INFO: chroot_scan: creating tarball /var/lib/copr-rpmbuild/results/chroot_scan.tar.gz /bin/tar: Removing leading `/' from member names INFO: Done(/var/lib/copr-rpmbuild/results/lavinmq-2.10.2-1.fc43.src.rpm) Config(child) 6 minutes 12 seconds INFO: Results and/or logs in: /var/lib/copr-rpmbuild/results INFO: Cleaning up build root ('cleanup_on_success=True') Start: clean chroot INFO: unmounting tmpfs. Finish: clean chroot Finish: run Running RPMResults tool Package info: { "packages": [ { "name": "lavinmq", "epoch": null, "version": "2.10.2", "release": "1.fc43", "arch": "src" }, { "name": "lavinmq", "epoch": null, "version": "2.10.2", "release": "1.fc43", "arch": "aarch64" }, { "name": "lavinmq-debugsource", "epoch": null, "version": "2.10.2", "release": "1.fc43", "arch": "aarch64" }, { "name": "lavinmq-debuginfo", "epoch": null, "version": "2.10.2", "release": "1.fc43", "arch": "aarch64" } ] } RPMResults finished