==> Building on monferno ==> Checking for remote environment... ==> Syncing package to remote host... sending incremental file list created directory packages/nvchecker ./ .SRCINFO 1,863 100% 0.00kB/s 0:00:00 1,863 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=10/12) .nvchecker.toml 90 100% 87.89kB/s 0:00:00 90 100% 87.89kB/s 0:00:00 (xfr#2, to-chk=9/12) LICENSE 646 100% 630.86kB/s 0:00:00 646 100% 630.86kB/s 0:00:00 (xfr#3, to-chk=8/12) PKGBUILD 2,811 100% 2.68MB/s 0:00:00 2,811 100% 2.68MB/s 0:00:00 (xfr#4, to-chk=7/12) REUSE.toml 375 100% 366.21kB/s 0:00:00 375 100% 366.21kB/s 0:00:00 (xfr#5, to-chk=6/12) nvchecker-2.22-1.log 737 100% 719.73kB/s 0:00:00 737 100% 719.73kB/s 0:00:00 (xfr#6, to-chk=5/12) LICENSES/ LICENSES/0BSD.txt -> ../LICENSE keys/ keys/pgp/ keys/pgp/356690A1E7404E30D0E902B2E64D049594A54F54.asc 3,065 100% 272.11kB/s 0:00:00 3,065 100% 249.43kB/s 0:00:00 (xfr#7, to-chk=0/12) sent 6,011 bytes received 216 bytes 4,151.33 bytes/sec total size is 9,055 speedup is 1.45 ==> Ensuring required PGP keys are present...  -> Checking for 356690A1E7404E30D0E902B2E64D049594A54F54... ==> Running pkgctl build --arch riscv64 on remote host... ==> WARNING: invalid architecture: riscv64 ==> Updating pacman database cache [?25l:: Synchronizing package databases... core downloading... extra downloading... multilib downloading... [?25h==> Building nvchecker -> repo: extra -> arch: riscv64 -> worker: felix-2 ==> Building nvchecker for [extra] (riscv64) Note: in a future version of systemd-nspawn the default set of permitted socket address families will be restricted to AF_INET, AF_INET6 and AF_UNIX. Use --restrict-address-families= to configure the set of permitted socket address families, or set RestrictAddressFamilies= in a .nspawn file. [?25l:: Synchronizing package databases... core downloading... extra downloading... :: Starting full system upgrade... there is nothing to do [?25h==> Building in chroot for [extra] (riscv64)... ==> Synchronizing chroot copy [/var/lib/archbuild/extra-riscv64/root] -> [felix-2]...done ==> Making package: nvchecker 2.22-1 (Sun Aug 30 15:14:13 2026) ==> Retrieving sources...  -> Cloning nvchecker git repo... Cloning into bare repository '/home/felix/packages/nvchecker/nvchecker'... remote: Enumerating objects: 6422, done. remote: Counting objects: 0% (1/1216) remote: Counting objects: 1% (13/1216) remote: Counting objects: 2% (25/1216) remote: Counting objects: 3% (37/1216) remote: Counting objects: 4% (49/1216) remote: Counting objects: 5% (61/1216) remote: Counting objects: 6% (73/1216) remote: Counting objects: 7% (86/1216) remote: Counting objects: 8% (98/1216) remote: Counting objects: 9% (110/1216) remote: Counting objects: 10% (122/1216) remote: Counting objects: 11% (134/1216) remote: Counting objects: 12% (146/1216) remote: Counting objects: 13% (159/1216) remote: Counting objects: 14% (171/1216) remote: Counting objects: 15% (183/1216) remote: Counting objects: 16% (195/1216) remote: Counting objects: 17% (207/1216) remote: Counting objects: 18% (219/1216) remote: Counting objects: 19% (232/1216) remote: Counting objects: 20% (244/1216) remote: Counting objects: 21% (256/1216) remote: Counting objects: 22% (268/1216) remote: Counting objects: 23% (280/1216) remote: Counting objects: 24% (292/1216) remote: Counting objects: 25% (304/1216) remote: Counting objects: 26% (317/1216) remote: Counting objects: 27% (329/1216) remote: Counting objects: 28% (341/1216) remote: Counting objects: 29% (353/1216) remote: Counting objects: 30% (365/1216) remote: Counting objects: 31% (377/1216) remote: Counting objects: 32% (390/1216) remote: Counting objects: 33% (402/1216) remote: Counting objects: 34% (414/1216) remote: Counting objects: 35% (426/1216) remote: Counting objects: 36% (438/1216) remote: Counting objects: 37% (450/1216) remote: Counting objects: 38% (463/1216) remote: Counting objects: 39% (475/1216) remote: Counting objects: 40% (487/1216) remote: Counting objects: 41% (499/1216) remote: Counting objects: 42% (511/1216) remote: Counting objects: 43% (523/1216) remote: Counting objects: 44% (536/1216) remote: Counting objects: 45% (548/1216) remote: Counting objects: 46% (560/1216) remote: Counting objects: 47% (572/1216) remote: Counting objects: 48% (584/1216) remote: Counting objects: 49% (596/1216) remote: Counting objects: 50% (608/1216) remote: Counting objects: 51% (621/1216) remote: Counting objects: 52% (633/1216) remote: Counting objects: 53% (645/1216) remote: Counting objects: 54% (657/1216) remote: Counting objects: 55% (669/1216) remote: Counting objects: 56% (681/1216) remote: Counting objects: 57% (694/1216) remote: Counting objects: 58% (706/1216) remote: Counting objects: 59% (718/1216) remote: Counting objects: 60% (730/1216) remote: Counting objects: 61% (742/1216) remote: Counting objects: 62% (754/1216) remote: Counting objects: 63% (767/1216) remote: Counting objects: 64% (779/1216) remote: Counting objects: 65% (791/1216) remote: Counting objects: 66% (803/1216) remote: Counting objects: 67% (815/1216) remote: Counting objects: 68% (827/1216) remote: Counting objects: 69% (840/1216) remote: Counting objects: 70% (852/1216) remote: Counting objects: 71% (864/1216) remote: Counting objects: 72% (876/1216) remote: Counting objects: 73% (888/1216) remote: Counting objects: 74% (900/1216) remote: Counting objects: 75% (912/1216) remote: Counting objects: 76% (925/1216) remote: Counting objects: 77% (937/1216) remote: Counting objects: 78% (949/1216) remote: Counting objects: 79% (961/1216) remote: Counting objects: 80% (973/1216) remote: Counting objects: 81% (985/1216) remote: Counting objects: 82% (998/1216) remote: Counting objects: 83% (1010/1216) remote: Counting objects: 84% (1022/1216) remote: Counting objects: 85% (1034/1216) remote: Counting objects: 86% (1046/1216) remote: Counting objects: 87% (1058/1216) remote: Counting objects: 88% (1071/1216) remote: Counting objects: 89% (1083/1216) remote: Counting objects: 90% (1095/1216) remote: Counting objects: 91% (1107/1216) remote: Counting objects: 92% (1119/1216) remote: Counting objects: 93% (1131/1216) remote: Counting objects: 94% (1144/1216) remote: Counting objects: 95% (1156/1216) remote: Counting objects: 96% (1168/1216) remote: Counting objects: 97% (1180/1216) remote: Counting objects: 98% (1192/1216) remote: Counting objects: 99% (1204/1216) remote: Counting objects: 100% (1216/1216) remote: Counting objects: 100% (1216/1216), done. remote: Compressing objects: 0% (1/388) remote: Compressing objects: 1% (4/388) remote: Compressing objects: 2% (8/388) remote: Compressing objects: 3% (12/388) remote: Compressing objects: 4% (16/388) remote: Compressing objects: 5% (20/388) remote: Compressing objects: 6% (24/388) remote: Compressing objects: 7% (28/388) remote: Compressing objects: 8% (32/388) remote: Compressing objects: 9% (35/388) remote: Compressing objects: 10% (39/388) remote: Compressing objects: 11% (43/388) remote: Compressing objects: 12% (47/388) remote: Compressing objects: 13% (51/388) remote: Compressing objects: 14% (55/388) remote: Compressing objects: 15% (59/388) remote: Compressing objects: 16% (63/388) remote: Compressing objects: 17% (66/388) remote: Compressing objects: 18% (70/388) remote: Compressing objects: 19% (74/388) remote: Compressing objects: 20% (78/388) remote: Compressing objects: 21% (82/388) remote: Compressing objects: 22% (86/388) remote: Compressing objects: 23% (90/388) remote: Compressing objects: 24% (94/388) remote: Compressing objects: 25% (97/388) remote: Compressing objects: 26% (101/388) remote: Compressing objects: 27% (105/388) remote: Compressing objects: 28% (109/388) remote: Compressing objects: 29% (113/388) remote: Compressing objects: 30% (117/388) remote: Compressing objects: 31% (121/388) remote: Compressing objects: 32% (125/388) remote: Compressing objects: 33% (129/388) remote: Compressing objects: 34% (132/388) remote: Compressing objects: 35% (136/388) remote: Compressing objects: 36% (140/388) remote: Compressing objects: 37% (144/388) remote: Compressing objects: 38% (148/388) remote: Compressing objects: 39% (152/388) remote: Compressing objects: 40% (156/388) remote: Compressing objects: 41% (160/388) remote: Compressing objects: 42% (163/388) remote: Compressing objects: 43% (167/388) remote: Compressing objects: 44% (171/388) remote: Compressing objects: 45% (175/388) remote: Compressing objects: 46% (179/388) remote: Compressing objects: 47% (183/388) remote: Compressing objects: 48% (187/388) remote: Compressing objects: 49% (191/388) remote: Compressing objects: 50% (194/388) remote: Compressing objects: 51% (198/388) remote: Compressing objects: 52% (202/388) remote: Compressing objects: 53% (206/388) remote: Compressing objects: 54% (210/388) remote: Compressing objects: 55% (214/388) remote: Compressing objects: 56% (218/388) remote: Compressing objects: 57% (222/388) remote: Compressing objects: 58% (226/388) remote: Compressing objects: 59% (229/388) remote: Compressing objects: 60% (233/388) remote: Compressing objects: 61% (237/388) remote: Compressing objects: 62% (241/388) remote: Compressing objects: 63% (245/388) remote: Compressing objects: 64% (249/388) remote: Compressing objects: 65% (253/388) remote: Compressing objects: 66% (257/388) remote: Compressing objects: 67% (260/388) remote: Compressing objects: 68% (264/388) remote: Compressing objects: 69% (268/388) remote: Compressing objects: 70% (272/388) remote: Compressing objects: 71% (276/388) remote: Compressing objects: 72% (280/388) remote: Compressing objects: 73% (284/388) remote: Compressing objects: 74% (288/388) remote: Compressing objects: 75% (291/388) remote: Compressing objects: 76% (295/388) remote: Compressing objects: 77% (299/388) remote: Compressing objects: 78% (303/388) remote: Compressing objects: 79% (307/388) remote: Compressing objects: 80% (311/388) remote: Compressing objects: 81% (315/388) remote: Compressing objects: 82% (319/388) remote: Compressing objects: 83% (323/388) remote: Compressing objects: 84% (326/388) remote: Compressing objects: 85% (330/388) remote: Compressing objects: 86% (334/388) remote: Compressing objects: 87% (338/388) remote: Compressing objects: 88% (342/388) remote: Compressing objects: 89% (346/388) remote: Compressing objects: 90% (350/388) remote: Compressing objects: 91% (354/388) remote: Compressing objects: 92% (357/388) remote: Compressing objects: 93% (361/388) remote: Compressing objects: 94% (365/388) remote: Compressing objects: 95% (369/388) remote: Compressing objects: 96% (373/388) remote: Compressing objects: 97% (377/388) remote: Compressing objects: 98% (381/388) remote: Compressing objects: 99% (385/388) remote: Compressing objects: 100% (388/388) remote: Compressing objects: 100% (388/388), done. Receiving objects: 0% (1/6422) Receiving objects: 1% (65/6422) Receiving objects: 2% (129/6422) Receiving objects: 3% (193/6422) Receiving objects: 4% (257/6422) Receiving objects: 5% (322/6422) Receiving objects: 6% (386/6422) Receiving objects: 7% (450/6422) Receiving objects: 8% (514/6422) Receiving objects: 9% (578/6422) Receiving objects: 10% (643/6422) Receiving objects: 11% (707/6422) Receiving objects: 12% (771/6422) Receiving objects: 13% (835/6422) Receiving objects: 14% (900/6422) Receiving objects: 15% (964/6422) Receiving objects: 16% (1028/6422) Receiving objects: 17% (1092/6422) Receiving objects: 18% (1156/6422) Receiving objects: 19% (1221/6422) Receiving objects: 20% (1285/6422) Receiving objects: 21% (1349/6422) Receiving objects: 22% (1413/6422) Receiving objects: 23% (1478/6422) Receiving objects: 24% (1542/6422) Receiving objects: 25% (1606/6422) Receiving objects: 26% (1670/6422) Receiving objects: 27% (1734/6422) Receiving objects: 28% (1799/6422) Receiving objects: 29% (1863/6422) Receiving objects: 30% (1927/6422) Receiving objects: 31% (1991/6422) Receiving objects: 32% (2056/6422) Receiving objects: 33% (2120/6422) Receiving objects: 34% (2184/6422) Receiving objects: 35% (2248/6422) Receiving objects: 36% (2312/6422) Receiving objects: 37% (2377/6422) Receiving objects: 38% (2441/6422) Receiving objects: 39% (2505/6422) Receiving objects: 40% (2569/6422) Receiving objects: 41% (2634/6422) Receiving objects: 42% (2698/6422) Receiving objects: 43% (2762/6422) Receiving objects: 44% (2826/6422) Receiving objects: 45% (2890/6422) Receiving objects: 46% (2955/6422) Receiving objects: 47% (3019/6422) Receiving objects: 48% (3083/6422) Receiving objects: 49% (3147/6422) Receiving objects: 50% (3211/6422) Receiving objects: 51% (3276/6422) Receiving objects: 52% (3340/6422) Receiving objects: 53% (3404/6422) Receiving objects: 54% (3468/6422) Receiving objects: 55% (3533/6422) Receiving objects: 56% (3597/6422) Receiving objects: 57% (3661/6422) Receiving objects: 58% (3725/6422) Receiving objects: 59% (3789/6422) Receiving objects: 60% (3854/6422) Receiving objects: 61% (3918/6422) Receiving objects: 62% (3982/6422) Receiving objects: 63% (4046/6422) Receiving objects: 64% (4111/6422) Receiving objects: 65% (4175/6422) Receiving objects: 66% (4239/6422) Receiving objects: 67% (4303/6422) Receiving objects: 68% (4367/6422) Receiving objects: 69% (4432/6422) Receiving objects: 70% (4496/6422) Receiving objects: 71% (4560/6422) Receiving objects: 72% (4624/6422) Receiving objects: 73% (4689/6422) Receiving objects: 74% (4753/6422) Receiving objects: 75% (4817/6422) Receiving objects: 76% (4881/6422) Receiving objects: 77% (4945/6422) Receiving objects: 78% (5010/6422) Receiving objects: 79% (5074/6422) Receiving objects: 80% (5138/6422) Receiving objects: 81% (5202/6422) Receiving objects: 82% (5267/6422) Receiving objects: 83% (5331/6422) Receiving objects: 84% (5395/6422) Receiving objects: 85% (5459/6422) Receiving objects: 86% (5523/6422) Receiving objects: 87% (5588/6422) Receiving objects: 88% (5652/6422) Receiving objects: 89% (5716/6422) Receiving objects: 90% (5780/6422) Receiving objects: 91% (5845/6422) Receiving objects: 92% (5909/6422) Receiving objects: 93% (5973/6422) Receiving objects: 94% (6037/6422) Receiving objects: 95% (6101/6422) Receiving objects: 96% (6166/6422) Receiving objects: 97% (6230/6422) Receiving objects: 98% (6294/6422) Receiving objects: 99% (6358/6422) remote: Total 6422 (delta 956), reused 828 (delta 828), pack-reused 5206 (from 2) Receiving objects: 100% (6422/6422) Receiving objects: 100% (6422/6422), 1.13 MiB | 2.40 MiB/s, done. Resolving deltas: 0% (0/4510) Resolving deltas: 1% (46/4510) Resolving deltas: 2% (91/4510) Resolving deltas: 3% (136/4510) Resolving deltas: 4% (181/4510) Resolving deltas: 5% (227/4510) Resolving deltas: 6% (271/4510) Resolving deltas: 7% (316/4510) Resolving deltas: 8% (361/4510) Resolving deltas: 9% (406/4510) Resolving deltas: 10% (451/4510) Resolving deltas: 11% (497/4510) Resolving deltas: 12% (542/4510) Resolving deltas: 13% (587/4510) Resolving deltas: 14% (632/4510) Resolving deltas: 15% (677/4510) Resolving deltas: 16% (722/4510) Resolving deltas: 17% (767/4510) Resolving deltas: 18% (812/4510) Resolving deltas: 19% (857/4510) Resolving deltas: 20% (902/4510) Resolving deltas: 21% (948/4510) Resolving deltas: 22% (993/4510) Resolving deltas: 23% (1040/4510) Resolving deltas: 24% (1083/4510) Resolving deltas: 25% (1128/4510) Resolving deltas: 26% (1173/4510) Resolving deltas: 27% (1218/4510) Resolving deltas: 28% (1263/4510) Resolving deltas: 29% (1308/4510) Resolving deltas: 30% (1353/4510) Resolving deltas: 31% (1399/4510) Resolving deltas: 32% (1444/4510) Resolving deltas: 33% (1489/4510) Resolving deltas: 34% (1536/4510) Resolving deltas: 35% (1579/4510) Resolving deltas: 36% (1624/4510) Resolving deltas: 37% (1669/4510) Resolving deltas: 38% (1715/4510) Resolving deltas: 39% (1759/4510) Resolving deltas: 40% (1804/4510) Resolving deltas: 41% (1850/4510) Resolving deltas: 42% (1895/4510) Resolving deltas: 43% (1940/4510) Resolving deltas: 44% (1985/4510) Resolving deltas: 45% (2030/4510) Resolving deltas: 46% (2075/4510) Resolving deltas: 47% (2120/4510) Resolving deltas: 48% (2165/4510) Resolving deltas: 49% (2210/4510) Resolving deltas: 50% (2255/4510) Resolving deltas: 51% (2303/4510) Resolving deltas: 52% (2346/4510) Resolving deltas: 53% (2392/4510) Resolving deltas: 54% (2436/4510) Resolving deltas: 55% (2481/4510) Resolving deltas: 56% (2526/4510) Resolving deltas: 57% (2571/4510) Resolving deltas: 58% (2616/4510) Resolving deltas: 59% (2661/4510) Resolving deltas: 60% (2706/4510) Resolving deltas: 61% (2752/4510) Resolving deltas: 62% (2797/4510) Resolving deltas: 63% (2842/4510) Resolving deltas: 64% (2887/4510) Resolving deltas: 65% (2932/4510) Resolving deltas: 66% (2977/4510) Resolving deltas: 67% (3022/4510) Resolving deltas: 68% (3067/4510) Resolving deltas: 69% (3112/4510) Resolving deltas: 70% (3157/4510) Resolving deltas: 71% (3203/4510) Resolving deltas: 72% (3248/4510) Resolving deltas: 73% (3293/4510) Resolving deltas: 74% (3338/4510) Resolving deltas: 75% (3383/4510) Resolving deltas: 76% (3428/4510) Resolving deltas: 77% (3473/4510) Resolving deltas: 78% (3518/4510) Resolving deltas: 79% (3563/4510) Resolving deltas: 80% (3608/4510) Resolving deltas: 81% (3654/4510) Resolving deltas: 82% (3699/4510) Resolving deltas: 83% (3744/4510) Resolving deltas: 84% (3789/4510) Resolving deltas: 85% (3834/4510) Resolving deltas: 86% (3879/4510) Resolving deltas: 87% (3924/4510) Resolving deltas: 88% (3969/4510) Resolving deltas: 89% (4014/4510) Resolving deltas: 90% (4059/4510) Resolving deltas: 91% (4105/4510) Resolving deltas: 92% (4150/4510) Resolving deltas: 93% (4196/4510) Resolving deltas: 94% (4240/4510) Resolving deltas: 95% (4285/4510) Resolving deltas: 96% (4330/4510) Resolving deltas: 97% (4376/4510) Resolving deltas: 98% (4420/4510) Resolving deltas: 99% (4465/4510) Resolving deltas: 100% (4510/4510) Resolving deltas: 100% (4510/4510), done. ==> Validating source files with sha512sums... nvchecker ... Passed ==> Verifying source file signatures with gpg... nvchecker git repo ... Passed Note: in a future version of systemd-nspawn the default set of permitted socket address families will be restricted to AF_INET, AF_INET6 and AF_UNIX. Use --restrict-address-families= to configure the set of permitted socket address families, or set RestrictAddressFamilies= in a .nspawn file. ==> Making package: nvchecker 2.22-1 (Sun Aug 30 15:14:24 2026) ==> Checking runtime dependencies... ==> Installing missing dependencies... [?25lresolving dependencies... looking for conflicting packages... Package (4) New Version Net Change Download Size extra/python-platformdirs 4.11.5-1 0.47 MiB extra/python-pycurl 7.47.0-1 0.54 MiB 0.15 MiB extra/python-structlog 26.1.0-1 0.83 MiB 0.13 MiB extra/python-tornado 6.5.8-1 6.22 MiB Total Download Size: 0.28 MiB Total Installed Size: 8.06 MiB :: Proceed with installation? [Y/n] :: Retrieving packages... python-pycurl-7.47.0-1-riscv64 downloading... python-structlog-26.1.0-1-any downloading... checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... installing python-structlog... Optional dependencies for python-structlog python-greenlet: for greenlet support in structlog.threadlocal (deprecated) python-twisted: for structlog.twisted python-rich: for structlog.dev python-better-exceptions: for structlog.dev installing python-platformdirs... installing python-tornado... Optional dependencies for python-tornado python-pycurl: for tornado.curl_httpclient [pending] python-twisted: for tornado.platform.twisted installing python-pycurl... :: Running post-transaction hooks... (1/1) Arming ConditionNeedsUpdate... [?25h==> Checking buildtime dependencies... ==> Installing missing dependencies... [?25lresolving dependencies... looking for conflicting packages... Package (66) New Version Net Change Download Size extra/gobject-introspection-runtime 1.86.0-2 0.15 MiB extra/httpbin 0.10.4-1 0.35 MiB 0.12 MiB extra/jq 1.8.2-1 0.48 MiB extra/libgirepository 1.86.0-2 1.51 MiB extra/libxslt 1.1.45-2 0.76 MiB extra/llhttp 9.3.1-1 0.11 MiB extra/oniguruma 6.9.10-1 0.88 MiB extra/perl-error 0.17030-3 0.04 MiB extra/perl-mailtools 2.22-3 0.10 MiB extra/perl-timedate 2.35-1 0.15 MiB extra/python-aiohappyeyeballs 2.6.1-4 0.09 MiB extra/python-aiosignal 1.4.0-3 0.03 MiB extra/python-anyio 4.14.2-1 2.13 MiB extra/python-attrs 26.1.0-1 0.63 MiB extra/python-autocommand 2.2.2-9 0.08 MiB extra/python-blinker 1.9.0-4 0.08 MiB extra/python-brotlicffi 1.2.0.1-4 0.13 MiB 0.03 MiB extra/python-certifi 2026.07.22-1 0.02 MiB extra/python-cffi 2.1.1-1 1.41 MiB extra/python-click 8.3.3-1 1.38 MiB extra/python-decorator 5.3.1-1 0.07 MiB extra/python-flask 3.1.3-1 1.13 MiB extra/python-frozenlist 1.8.0-2 0.14 MiB extra/python-greenlet 3.5.1-1 0.46 MiB extra/python-h11 0.16.0-2 0.29 MiB extra/python-httpcore 1.0.9-3 1.04 MiB extra/python-idna 3.19-1 0.66 MiB extra/python-iniconfig 2.3.0-1 0.07 MiB extra/python-itsdangerous 2.2.0-2 0.15 MiB extra/python-jaraco.collections 5.1.0-3 0.11 MiB extra/python-jaraco.context 6.1.2-1 0.06 MiB extra/python-jaraco.functools 4.1.0-3 0.07 MiB extra/python-jaraco.text 4.0.0-4 0.08 MiB extra/python-jinja 1:3.1.6-3.1 2.04 MiB extra/python-markupsafe 3.0.3-1 0.09 MiB extra/python-more-itertools 11.1.0-1 0.77 MiB extra/python-multidict 6.7.1-1 0.33 MiB extra/python-packaging 26.3-1 1.58 MiB extra/python-pkg_resources 81.0.0-1 0.50 MiB extra/python-pluggy 1.6.0-3.1 0.23 MiB extra/python-propcache 0.4.1-2 0.12 MiB extra/python-pycparser 3.00-1 0.71 MiB extra/python-pyproject-hooks 1.2.0-6 0.11 MiB extra/python-typing_extensions 4.16.0-1 0.53 MiB extra/python-werkzeug 3.1.8-1 2.75 MiB extra/python-yarl 1.23.0-1 0.48 MiB extra/zlib-ng 2.3.3-1 0.23 MiB extra/git 2.55.0-1 29.92 MiB extra/pyalpm 0.11.1-1 0.24 MiB extra/python-aiohttp 3.13.5-1 4.15 MiB 0.74 MiB extra/python-awesomeversion 25.8.0-2 0.15 MiB 0.03 MiB extra/python-build 1.4.3-1 0.26 MiB extra/python-docutils 1:0.23-1 6.55 MiB extra/python-gobject 3.56.3-1 1.51 MiB extra/python-httpx 0.28.1-7 2.83 MiB extra/python-installer 1.0.0-1 0.20 MiB extra/python-jq 1.11.0-1 0.15 MiB 0.07 MiB extra/python-lxml 6.1.2_1-1 5.49 MiB extra/python-pygments 2.20.0-1 15.36 MiB extra/python-pytest 1:9.0.3-1 4.86 MiB extra/python-pytest-asyncio 1.4.0-1 0.17 MiB extra/python-pytest-httpbin 2.1.0-2 0.04 MiB 0.01 MiB extra/python-pytest-rerunfailures 16.6-1 0.19 MiB 0.04 MiB extra/python-setuptools 1:82.0.1-1 7.35 MiB extra/python-toml 0.10.2-13 0.19 MiB 0.04 MiB extra/python-wheel 0.48.0-1 0.34 MiB Total Download Size: 1.08 MiB Total Installed Size: 105.26 MiB :: Proceed with installation? [Y/n] :: Retrieving packages... python-aiohttp-3.13.5-1-riscv64 downloading... httpbin-0.10.4-1-any downloading... python-jq-1.11.0-1-riscv64 downloading... python-toml-0.10.2-13-any downloading... python-pytest-rerunfailures-16.6-1-any downloading... python-awesomeversion-25.8.0-2-any downloading... python-brotlicffi-1.2.0.1-4-riscv64 downloading... python-pytest-httpbin-2.1.0-2-any downloading... checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... installing perl-error... installing perl-timedate... installing perl-mailtools... installing zlib-ng... installing git... Optional dependencies for git git-zsh-completion: upstream zsh completion tk: gitk and git gui openssh: ssh transport and crypto man: show help with `git command --help` perl-libwww: git svn perl-term-readkey: git svn and interactive.singlekey setting perl-io-socket-ssl: git send-email TLS support perl-authen-sasl: git send-email TLS support perl-cgi: gitweb (web interface) support python: git svn & git p4 [installed] subversion: git svn org.freedesktop.secrets: keyring credential helper libsecret: libsecret credential helper [installed] less: the default pager for git installing python-packaging... installing python-pyproject-hooks... installing python-build... Optional dependencies for python-build python-pip: to use as the Python package installer (default) python-uv: to use as the Python package installer python-virtualenv: to use virtualenv for build isolation installing python-installer... installing python-more-itertools... installing python-jaraco.functools... installing python-jaraco.context... installing python-autocommand... installing python-jaraco.text... Optional dependencies for python-jaraco.text python-inflect: for show-newlines script installing python-jaraco.collections... installing python-wheel... Optional dependencies for python-wheel python-keyring: for wheel.signatures python-xdg: for wheel.signatures python-setuptools: for legacy bdist_wheel subcommand [pending] installing python-typing_extensions... installing python-pkg_resources... installing python-setuptools... installing python-docutils... Optional dependencies for python-docutils python-myst-parser: to parse input in "Markdown" (CommonMark) format python-pillow: for some image manipulation operations python-pygments: for syntax highlighting of code directives and roles [pending] installing python-pygments... installing libgirepository... installing gobject-introspection-runtime... installing python-gobject... Optional dependencies for python-gobject python-cairo: Cairo bindings installing python-toml... installing llhttp... installing python-aiohappyeyeballs... installing python-frozenlist... installing python-aiosignal... installing python-attrs... installing python-multidict... installing python-propcache... installing python-idna... installing python-yarl... installing python-aiohttp... Optional dependencies for python-aiohttp gunicorn: to deploy using Gunicorn python-aiodns: for fast DNS resolving python-brotli: for Brotli transfer-encodings support installing python-certifi... installing python-h11... installing python-httpcore... Optional dependencies for python-httpcore python-h2: for HTTP/2 support python-socksio: for SOCKS support python-anyio: for asyncio backend [pending] python-trio: for trio backend python-sniffio: for async support installing python-anyio... Optional dependencies for python-anyio python-trio: trio backend python-outcome: trio backend python-uvloop: use uvloop for asyncio backend python-pytest: pytest plugin [pending] installing python-httpx... Optional dependencies for python-httpx python-brotli: for brotli response decompression python-brotlicffi: for brotli response decompression [pending] python-zstandard: for zstd response decompression python-h2: HTTP/2 support python-socksio: SOCKS proxy support python-click: command line client support [pending] python-rich: command line client support python-pygments: command line client support [installed] python-trio: alternative async library installing python-iniconfig... installing python-pluggy... installing python-pytest... installing python-pytest-asyncio... installing python-blinker... installing python-click... installing python-itsdangerous... installing python-markupsafe... installing python-jinja... Optional dependencies for python-jinja python-babel: for i18n support installing python-werkzeug... Optional dependencies for python-werkzeug python-watchdog: faster and more advanced reloader installing python-flask... Optional dependencies for python-flask python-asgiref: async functions and views python-cryptography: using ad-hoc certificates python-dotenv: loading env vars from files installing python-decorator... installing python-pycparser... installing python-cffi... Optional dependencies for python-cffi python-setuptools: "limited api" version checking in cffi.setuptools_ext [installed] installing python-brotlicffi... installing python-greenlet... installing httpbin... installing python-pytest-httpbin... installing python-pytest-rerunfailures... Optional dependencies for python-pytest-rerunfailures python-pytest-xdist: for recovering from crashes installing pyalpm... installing python-awesomeversion... installing libxslt... Optional dependencies for libxslt python: Python bindings [installed] installing python-lxml... Optional dependencies for python-lxml python-beautifulsoup4: support for beautifulsoup parser to parse not well formed HTML python-cssselect: support for cssselect python-html5lib: support for html5lib parser python-lxml-docs: offline docs python-lxml-html-clean: enable htmlclean feature installing oniguruma... installing jq... installing python-jq... :: Running post-transaction hooks... (1/4) Creating system user accounts... Creating group 'git' with GID 968. Creating user 'git' (git daemon user) with UID 968 and GID 968. (2/4) Reloading system manager configuration... Skipped: Current root is not booted. (3/4) Arming ConditionNeedsUpdate... (4/4) Checking for old perl modules... [?25h==> Retrieving sources... ==> WARNING: Skipping all source file integrity checks. ==> Extracting sources...  -> Creating working copy of nvchecker git repo... Cloning into 'nvchecker'... done. Switched to a new branch 'makepkg' ==> Starting prepare()... ==> Starting build()... * Getting build dependencies for wheel... /usr/lib/python3.14/site-packages/setuptools/dist.py:765: SetuptoolsDeprecationWarning: License classifiers are deprecated. !! ******************************************************************************** Please consider removing the following classifiers in favor of a SPDX license expression: License :: OSI Approved :: MIT License See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! self._finalize_license_expression() running egg_info creating nvchecker.egg-info writing nvchecker.egg-info/PKG-INFO writing dependency_links to nvchecker.egg-info/dependency_links.txt writing entry points to nvchecker.egg-info/entry_points.txt writing requirements to nvchecker.egg-info/requires.txt writing top-level names to nvchecker.egg-info/top_level.txt writing manifest file 'nvchecker.egg-info/SOURCES.txt' reading manifest file 'nvchecker.egg-info/SOURCES.txt' adding license file 'LICENSE' writing manifest file 'nvchecker.egg-info/SOURCES.txt' * Building wheel... /usr/lib/python3.14/site-packages/setuptools/dist.py:765: SetuptoolsDeprecationWarning: License classifiers are deprecated. !! ******************************************************************************** Please consider removing the following classifiers in favor of a SPDX license expression: License :: OSI Approved :: MIT License See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! self._finalize_license_expression() running bdist_wheel running build running build_py creating build/lib/nvchecker_source copying nvchecker_source/combiner.py -> build/lib/nvchecker_source copying nvchecker_source/go.py -> build/lib/nvchecker_source copying nvchecker_source/mercurial.py -> build/lib/nvchecker_source copying nvchecker_source/git.py -> build/lib/nvchecker_source copying nvchecker_source/bitbucket.py -> build/lib/nvchecker_source copying nvchecker_source/pacman.py -> build/lib/nvchecker_source copying nvchecker_source/archpkg.py -> build/lib/nvchecker_source copying nvchecker_source/git_dulwich.py -> build/lib/nvchecker_source copying nvchecker_source/cratesio.py -> build/lib/nvchecker_source copying nvchecker_source/hackage.py -> build/lib/nvchecker_source copying nvchecker_source/gitlab.py -> build/lib/nvchecker_source copying nvchecker_source/apt.py -> build/lib/nvchecker_source copying nvchecker_source/sparkle.py -> build/lib/nvchecker_source copying nvchecker_source/launchpad.py -> build/lib/nvchecker_source copying nvchecker_source/alpmfiles.py -> build/lib/nvchecker_source copying nvchecker_source/none.py -> build/lib/nvchecker_source copying nvchecker_source/openvsx.py -> build/lib/nvchecker_source copying nvchecker_source/opam.py -> build/lib/nvchecker_source copying nvchecker_source/packagist.py -> build/lib/nvchecker_source copying nvchecker_source/gitea.py -> build/lib/nvchecker_source copying nvchecker_source/regex.py -> build/lib/nvchecker_source copying nvchecker_source/vsmarketplace.py -> build/lib/nvchecker_source copying nvchecker_source/container.py -> build/lib/nvchecker_source copying nvchecker_source/httpheader.py -> build/lib/nvchecker_source copying nvchecker_source/android_sdk.py -> build/lib/nvchecker_source copying nvchecker_source/debianpkg.py -> build/lib/nvchecker_source copying nvchecker_source/htmlparser.py -> build/lib/nvchecker_source copying nvchecker_source/alpm.py -> build/lib/nvchecker_source copying nvchecker_source/cmd.py -> build/lib/nvchecker_source copying nvchecker_source/maven.py -> build/lib/nvchecker_source copying nvchecker_source/jq.py -> build/lib/nvchecker_source copying nvchecker_source/anitya.py -> build/lib/nvchecker_source copying nvchecker_source/snapcraft.py -> build/lib/nvchecker_source copying nvchecker_source/ubuntupkg.py -> build/lib/nvchecker_source copying nvchecker_source/aur.py -> build/lib/nvchecker_source copying nvchecker_source/cran.py -> build/lib/nvchecker_source copying nvchecker_source/repology.py -> build/lib/nvchecker_source copying nvchecker_source/rpmrepo.py -> build/lib/nvchecker_source copying nvchecker_source/pagure.py -> build/lib/nvchecker_source copying nvchecker_source/pypi.py -> build/lib/nvchecker_source copying nvchecker_source/gems.py -> build/lib/nvchecker_source copying nvchecker_source/cpan.py -> build/lib/nvchecker_source copying nvchecker_source/manual.py -> build/lib/nvchecker_source copying nvchecker_source/git_pygit2.py -> build/lib/nvchecker_source copying nvchecker_source/github.py -> build/lib/nvchecker_source copying nvchecker_source/npm.py -> build/lib/nvchecker_source creating build/lib/nvchecker copying nvchecker/api.py -> build/lib/nvchecker copying nvchecker/slogconf.py -> build/lib/nvchecker copying nvchecker/__init__.py -> build/lib/nvchecker copying nvchecker/util.py -> build/lib/nvchecker copying nvchecker/core.py -> build/lib/nvchecker copying nvchecker/ctxvars.py -> build/lib/nvchecker copying nvchecker/tools.py -> build/lib/nvchecker copying nvchecker/__main__.py -> build/lib/nvchecker copying nvchecker/sortversion.py -> build/lib/nvchecker creating build/lib/nvchecker/lib copying nvchecker/lib/__init__.py -> build/lib/nvchecker/lib copying nvchecker/lib/nicelogger.py -> build/lib/nvchecker/lib copying nvchecker/lib/packaging_version.py -> build/lib/nvchecker/lib creating build/lib/nvchecker/httpclient copying nvchecker/httpclient/aiohttp_httpclient.py -> build/lib/nvchecker/httpclient copying nvchecker/httpclient/__init__.py -> build/lib/nvchecker/httpclient copying nvchecker/httpclient/base.py -> build/lib/nvchecker/httpclient copying nvchecker/httpclient/tornado_httpclient.py -> build/lib/nvchecker/httpclient copying nvchecker/httpclient/httpx_httpclient.py -> build/lib/nvchecker/httpclient running build_scripts creating build/scripts-3.14 copying and adjusting scripts/nvchecker-ini2toml -> build/scripts-3.14 copying and adjusting scripts/nvchecker-notify -> build/scripts-3.14 changing mode of build/scripts-3.14/nvchecker-ini2toml from 644 to 755 changing mode of build/scripts-3.14/nvchecker-notify from 644 to 755 installing to build/bdist.linux-riscv64/wheel running install running install_lib creating build/bdist.linux-riscv64/wheel creating build/bdist.linux-riscv64/wheel/nvchecker_source copying build/lib/nvchecker_source/combiner.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/go.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/mercurial.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/git.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/bitbucket.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/pacman.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/archpkg.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/git_dulwich.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/cratesio.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/hackage.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/gitlab.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/apt.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/sparkle.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/launchpad.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/alpmfiles.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/none.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/openvsx.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/opam.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/packagist.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/gitea.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/regex.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/vsmarketplace.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/container.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/httpheader.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/android_sdk.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/debianpkg.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/htmlparser.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/alpm.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/cmd.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/maven.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/jq.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/anitya.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/snapcraft.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/ubuntupkg.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/aur.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/cran.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/repology.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/rpmrepo.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/pagure.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/pypi.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/gems.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/cpan.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/manual.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/git_pygit2.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/github.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source copying build/lib/nvchecker_source/npm.py -> build/bdist.linux-riscv64/wheel/./nvchecker_source creating build/bdist.linux-riscv64/wheel/nvchecker copying build/lib/nvchecker/api.py -> build/bdist.linux-riscv64/wheel/./nvchecker copying build/lib/nvchecker/slogconf.py -> build/bdist.linux-riscv64/wheel/./nvchecker copying build/lib/nvchecker/__init__.py -> build/bdist.linux-riscv64/wheel/./nvchecker creating build/bdist.linux-riscv64/wheel/nvchecker/lib copying build/lib/nvchecker/lib/__init__.py -> build/bdist.linux-riscv64/wheel/./nvchecker/lib copying build/lib/nvchecker/lib/nicelogger.py -> build/bdist.linux-riscv64/wheel/./nvchecker/lib copying build/lib/nvchecker/lib/packaging_version.py -> build/bdist.linux-riscv64/wheel/./nvchecker/lib copying build/lib/nvchecker/util.py -> build/bdist.linux-riscv64/wheel/./nvchecker copying build/lib/nvchecker/core.py -> build/bdist.linux-riscv64/wheel/./nvchecker copying build/lib/nvchecker/ctxvars.py -> build/bdist.linux-riscv64/wheel/./nvchecker creating build/bdist.linux-riscv64/wheel/nvchecker/httpclient copying build/lib/nvchecker/httpclient/aiohttp_httpclient.py -> build/bdist.linux-riscv64/wheel/./nvchecker/httpclient copying build/lib/nvchecker/httpclient/__init__.py -> build/bdist.linux-riscv64/wheel/./nvchecker/httpclient copying build/lib/nvchecker/httpclient/base.py -> build/bdist.linux-riscv64/wheel/./nvchecker/httpclient copying build/lib/nvchecker/httpclient/tornado_httpclient.py -> build/bdist.linux-riscv64/wheel/./nvchecker/httpclient copying build/lib/nvchecker/httpclient/httpx_httpclient.py -> build/bdist.linux-riscv64/wheel/./nvchecker/httpclient copying build/lib/nvchecker/tools.py -> build/bdist.linux-riscv64/wheel/./nvchecker copying build/lib/nvchecker/__main__.py -> build/bdist.linux-riscv64/wheel/./nvchecker copying build/lib/nvchecker/sortversion.py -> build/bdist.linux-riscv64/wheel/./nvchecker running install_egg_info running egg_info writing nvchecker.egg-info/PKG-INFO writing dependency_links to nvchecker.egg-info/dependency_links.txt writing entry points to nvchecker.egg-info/entry_points.txt writing requirements to nvchecker.egg-info/requires.txt writing top-level names to nvchecker.egg-info/top_level.txt reading manifest file 'nvchecker.egg-info/SOURCES.txt' adding license file 'LICENSE' writing manifest file 'nvchecker.egg-info/SOURCES.txt' Copying nvchecker.egg-info to build/bdist.linux-riscv64/wheel/./nvchecker-2.22-py3.14.egg-info running install_scripts creating build/bdist.linux-riscv64/wheel/nvchecker-2.22.data/scripts copying build/scripts-3.14/nvchecker-ini2toml -> build/bdist.linux-riscv64/wheel/nvchecker-2.22.data/scripts copying build/scripts-3.14/nvchecker-notify -> build/bdist.linux-riscv64/wheel/nvchecker-2.22.data/scripts changing mode of build/bdist.linux-riscv64/wheel/nvchecker-2.22.data/scripts/nvchecker-ini2toml to 755 changing mode of build/bdist.linux-riscv64/wheel/nvchecker-2.22.data/scripts/nvchecker-notify to 755 creating build/bdist.linux-riscv64/wheel/nvchecker-2.22.dist-info/WHEEL creating '/build/nvchecker/src/nvchecker/dist/.tmp-lvlbvfu6/nvchecker-2.22-py3-none-any.whl' and adding 'build/bdist.linux-riscv64/wheel' to it adding 'nvchecker/__init__.py' adding 'nvchecker/__main__.py' adding 'nvchecker/api.py' adding 'nvchecker/core.py' adding 'nvchecker/ctxvars.py' adding 'nvchecker/slogconf.py' adding 'nvchecker/sortversion.py' adding 'nvchecker/tools.py' adding 'nvchecker/util.py' adding 'nvchecker/httpclient/__init__.py' adding 'nvchecker/httpclient/aiohttp_httpclient.py' adding 'nvchecker/httpclient/base.py' adding 'nvchecker/httpclient/httpx_httpclient.py' adding 'nvchecker/httpclient/tornado_httpclient.py' adding 'nvchecker/lib/__init__.py' adding 'nvchecker/lib/nicelogger.py' adding 'nvchecker/lib/packaging_version.py' adding 'nvchecker-2.22.data/scripts/nvchecker-ini2toml' adding 'nvchecker-2.22.data/scripts/nvchecker-notify' adding 'nvchecker-2.22.dist-info/licenses/LICENSE' adding 'nvchecker_source/alpm.py' adding 'nvchecker_source/alpmfiles.py' adding 'nvchecker_source/android_sdk.py' adding 'nvchecker_source/anitya.py' adding 'nvchecker_source/apt.py' adding 'nvchecker_source/archpkg.py' adding 'nvchecker_source/aur.py' adding 'nvchecker_source/bitbucket.py' adding 'nvchecker_source/cmd.py' adding 'nvchecker_source/combiner.py' adding 'nvchecker_source/container.py' adding 'nvchecker_source/cpan.py' adding 'nvchecker_source/cran.py' adding 'nvchecker_source/cratesio.py' adding 'nvchecker_source/debianpkg.py' adding 'nvchecker_source/gems.py' adding 'nvchecker_source/git.py' adding 'nvchecker_source/git_dulwich.py' adding 'nvchecker_source/git_pygit2.py' adding 'nvchecker_source/gitea.py' adding 'nvchecker_source/github.py' adding 'nvchecker_source/gitlab.py' adding 'nvchecker_source/go.py' adding 'nvchecker_source/hackage.py' adding 'nvchecker_source/htmlparser.py' adding 'nvchecker_source/httpheader.py' adding 'nvchecker_source/jq.py' adding 'nvchecker_source/launchpad.py' adding 'nvchecker_source/manual.py' adding 'nvchecker_source/maven.py' adding 'nvchecker_source/mercurial.py' adding 'nvchecker_source/none.py' adding 'nvchecker_source/npm.py' adding 'nvchecker_source/opam.py' adding 'nvchecker_source/openvsx.py' adding 'nvchecker_source/packagist.py' adding 'nvchecker_source/pacman.py' adding 'nvchecker_source/pagure.py' adding 'nvchecker_source/pypi.py' adding 'nvchecker_source/regex.py' adding 'nvchecker_source/repology.py' adding 'nvchecker_source/rpmrepo.py' adding 'nvchecker_source/snapcraft.py' adding 'nvchecker_source/sparkle.py' adding 'nvchecker_source/ubuntupkg.py' adding 'nvchecker_source/vsmarketplace.py' adding 'nvchecker-2.22.dist-info/METADATA' adding 'nvchecker-2.22.dist-info/WHEEL' adding 'nvchecker-2.22.dist-info/entry_points.txt' adding 'nvchecker-2.22.dist-info/top_level.txt' adding 'nvchecker-2.22.dist-info/zip-safe' adding 'nvchecker-2.22.dist-info/RECORD' removing build/bdist.linux-riscv64/wheel Successfully built nvchecker-2.22-py3-none-any.whl make: Entering directory '/build/nvchecker/src/nvchecker/docs' mkdir -p _build/man ./myrst2man.py usage.rst > _build/man/nvchecker.1 usage.rst:1040: (WARNING/2) Title underline too short. Check Git repository without git CLI using Dulwich ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ make: Leaving directory '/build/nvchecker/src/nvchecker/docs' ==> Starting check()... [2026-08-30 15:15:05,881] WARNING in core: flasgger is not installed; serving the static landing page at / and skipping the Swagger UI and /spec.json. ============================= test session starts ============================== platform linux -- Python 3.14.7, pytest-9.0.3, pluggy-1.6.0 rootdir: /build/nvchecker/src/nvchecker configfile: pyproject.toml plugins: asyncio-1.4.0, rerunfailures-16.6, anyio-4.14.2, httpbin-2.1.0 asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=session, asyncio_default_test_loop_scope=function collected 182 items tests/test_alpm.py ....... [ 3%] tests/test_alpmfiles.py .. [ 4%] tests/test_android_sdk.py ...... [ 8%] tests/test_anitya.py .. [ 9%] tests/test_apt.py .R.R.s [ 11%] tests/test_archpkg.py .... [ 13%] tests/test_aur.py ... [ 15%] tests/test_bitbucket.py .... [ 17%] tests/test_cache.py .. [ 18%] tests/test_cmd.py ... [ 20%] tests/test_combiner.py . [ 20%] tests/test_container.py ..... [ 23%] tests/test_cpan.py . [ 24%] tests/test_cran.py . [ 24%] tests/test_cratesio.py FFFF [ 26%] tests/test_debianpkg.py ... [ 28%] tests/test_gems.py . [ 29%] tests/test_git.py ... [ 30%] tests/test_git_dulwich.py ssss [ 32%] tests/test_git_pygit2.py ssssssss [ 37%] tests/test_gitea.py ... [ 39%] tests/test_github.py ssssssssssssssssss [ 48%] tests/test_gitlab.py ....... [ 52%] tests/test_go.py . [ 53%] tests/test_hackage.py . [ 53%] tests/test_htmlparser.py ... [ 55%] tests/test_httpheader.py .. [ 56%] tests/test_jq.py .. [ 57%] tests/test_launchpad.py . [ 58%] tests/test_logging.py .. [ 59%] tests/test_manual.py . [ 59%] tests/test_maven.py .... [ 62%] tests/test_mercurial.py s [ 62%] tests/test_npm.py . [ 63%] tests/test_opam.py ... [ 64%] tests/test_openvsx.py . [ 65%] tests/test_packagist.py . [ 65%] tests/test_pacman.py .. [ 67%] tests/test_pagure.py FF. [ 68%] tests/test_pypi.py ........... [ 74%] tests/test_regex.py ..........---------------------------------------- Traceback (most recent call last): .... [ 82%] tests/test_repology.py ssss [ 84%] tests/test_rich_result.py ...... [ 87%] tests/test_rpmrepo.py F. [ 89%] tests/test_simplerun.py . [ 89%] tests/test_snapcraft.py ... [ 91%] tests/test_sortversion.py ...s [ 93%] tests/test_sparkle.py . [ 93%] tests/test_substitute.py ...... [ 97%] tests/test_ubuntupkg.py .... [ 99%] tests/test_vsmarketplace.py . [100%] =================================== FAILURES =================================== ________________________________ test_cratesio _________________________________ get_version = .__call__ at 0x7feb44f98670> async def test_cratesio(get_version): > assert await get_version("example", { "source": "cratesio", }) == "1.1.0" tests/test_cratesio.py:8: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:63: in __call__ newvers = await run(entries) ^^^^^^^^^^^^^^^^^^ tests/conftest.py:56: in run results = await run_results(entries, max_concurrency) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/conftest.py:50: in run_results results, _has_failures = await main.run(result_coro, runner_coro) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nvchecker/__main__.py:110: in run return await result_fu ^^^^^^^^^^^^^^^ nvchecker/core.py:445: in process_result logger.exception('error processing result', result=r) /usr/lib/python3.14/site-packages/structlog/_native.py:49: in exception return self.error(event, *args, **kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3.14/site-packages/structlog/_native.py:172: in meth return self._proxy_to_logger( /usr/lib/python3.14/site-packages/structlog/_base.py:223: in _proxy_to_logger args, kw = self._process_event(method_name, event, event_kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3.14/site-packages/structlog/_base.py:174: in _process_event event_dict = proc(self._logger, method_name, event_dict) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nvchecker/core.py:443: in process_result r1 = _process_result(r) ^^^^^^^^^^^^^^^^^^ nvchecker/core.py:377: in _process_result logger.error('unexpected error happened', /usr/lib/python3.14/site-packages/structlog/_native.py:172: in meth return self._proxy_to_logger( /usr/lib/python3.14/site-packages/structlog/_base.py:223: in _proxy_to_logger args, kw = self._process_event(method_name, event, event_kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3.14/site-packages/structlog/_base.py:174: in _process_event event_dict = proc(self._logger, method_name, event_dict) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/conftest.py:102: in proc raise exc nvchecker/util.py:332: in run_one version = await self.func( nvchecker_source/cratesio.py:19: in get_version data = await cache.get_json(API_URL % name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nvchecker/util.py:234: in get_json return await self.get( nvchecker/util.py:271: in get r = await fu ^^^^^^^^ nvchecker/util.py:222: in _get_json res = await session.get(url, headers=dict(headers)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nvchecker/httpclient/base.py:50: in get return await self.request( nvchecker/httpclient/base.py:80: in request return await self.request_impl( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = url = 'https://crates.io/api/v1/crates/example' async def request_impl( self, url: str, *, method: str, proxy: Optional[str] = None, headers: Dict[str, str] = {}, follow_redirects: bool = True, params = (), json = None, body = None, verify_cert: bool = True, ) -> Response: kwargs: Dict[str, Any] = { 'method': method, 'headers': headers, 'request_timeout': self.timeout, 'follow_redirects': follow_redirects, 'validate_cert': verify_cert, } if body: # By default the content type is already 'application/x-www-form-urlencoded' kwargs['body'] = body elif json: kwargs['body'] = _json.dumps(json) kwargs['prepare_curl_callback'] = setup_curl if proxy: host, port = proxy.rsplit(':', 1) kwargs['proxy_host'] = host kwargs['proxy_port'] = int(port) if params: q = urlencode(params) url += '?' + q r = HTTPRequest(url, **kwargs) res = await AsyncHTTPClient().fetch( r, raise_error=False) err_cls: Optional[type] = None if res.code >= 500: err_cls = TemporaryError elif res.code >= 400: err_cls = HTTPError if err_cls is not None: > raise err_cls( res.code, res.reason, res ) E nvchecker.httpclient.base.HTTPError: (429, 'Too Many Requests', HTTPResponse(_body=None,_error_is_response_code=True,buffer=<_io.BytesIO object at 0x7feab5838310>,code=429,effective_url='https://crates.io/api/v1/crates/example',error=HTTP 429: Too Many Requests,headers=,reason='Too Many Requests',request=,request_time=0.43688321113586426,start_time=1788103098.4531057,time_info={'queue': 4.9114227294921875e-05, 'namelookup': 0.144481, 'connect': 0.22846, 'appconnect': 0.33996, 'pretransfer': 0.340368, 'starttransfer': 0.433816, 'total': 0.43506, 'redirect': 0.0})) nvchecker/httpclient/tornado_httpclient.py:98: HTTPError ______________________________ test_cratesio_list ______________________________ get_version = .__call__ at 0x7feb44f98670> async def test_cratesio_list(get_version): > assert await get_version("example", { "source": "cratesio", "include_regex": r"^1\.0.*", }) == "1.0.2" tests/test_cratesio.py:13: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:63: in __call__ newvers = await run(entries) ^^^^^^^^^^^^^^^^^^ tests/conftest.py:56: in run results = await run_results(entries, max_concurrency) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/conftest.py:50: in run_results results, _has_failures = await main.run(result_coro, runner_coro) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nvchecker/__main__.py:110: in run return await result_fu ^^^^^^^^^^^^^^^ nvchecker/core.py:445: in process_result logger.exception('error processing result', result=r) /usr/lib/python3.14/site-packages/structlog/_native.py:49: in exception return self.error(event, *args, **kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3.14/site-packages/structlog/_native.py:172: in meth return self._proxy_to_logger( /usr/lib/python3.14/site-packages/structlog/_base.py:223: in _proxy_to_logger args, kw = self._process_event(method_name, event, event_kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3.14/site-packages/structlog/_base.py:174: in _process_event event_dict = proc(self._logger, method_name, event_dict) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nvchecker/core.py:443: in process_result r1 = _process_result(r) ^^^^^^^^^^^^^^^^^^ nvchecker/core.py:377: in _process_result logger.error('unexpected error happened', /usr/lib/python3.14/site-packages/structlog/_native.py:172: in meth return self._proxy_to_logger( /usr/lib/python3.14/site-packages/structlog/_base.py:223: in _proxy_to_logger args, kw = self._process_event(method_name, event, event_kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3.14/site-packages/structlog/_base.py:174: in _process_event event_dict = proc(self._logger, method_name, event_dict) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/conftest.py:102: in proc raise exc nvchecker/util.py:332: in run_one version = await self.func( nvchecker_source/cratesio.py:19: in get_version data = await cache.get_json(API_URL % name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nvchecker/util.py:234: in get_json return await self.get( nvchecker/util.py:271: in get r = await fu ^^^^^^^^ nvchecker/util.py:222: in _get_json res = await session.get(url, headers=dict(headers)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nvchecker/httpclient/base.py:50: in get return await self.request( nvchecker/httpclient/base.py:80: in request return await self.request_impl( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = url = 'https://crates.io/api/v1/crates/example' async def request_impl( self, url: str, *, method: str, proxy: Optional[str] = None, headers: Dict[str, str] = {}, follow_redirects: bool = True, params = (), json = None, body = None, verify_cert: bool = True, ) -> Response: kwargs: Dict[str, Any] = { 'method': method, 'headers': headers, 'request_timeout': self.timeout, 'follow_redirects': follow_redirects, 'validate_cert': verify_cert, } if body: # By default the content type is already 'application/x-www-form-urlencoded' kwargs['body'] = body elif json: kwargs['body'] = _json.dumps(json) kwargs['prepare_curl_callback'] = setup_curl if proxy: host, port = proxy.rsplit(':', 1) kwargs['proxy_host'] = host kwargs['proxy_port'] = int(port) if params: q = urlencode(params) url += '?' + q r = HTTPRequest(url, **kwargs) res = await AsyncHTTPClient().fetch( r, raise_error=False) err_cls: Optional[type] = None if res.code >= 500: err_cls = TemporaryError elif res.code >= 400: err_cls = HTTPError if err_cls is not None: > raise err_cls( res.code, res.reason, res ) E nvchecker.httpclient.base.HTTPError: (429, 'Too Many Requests', HTTPResponse(_body=None,_error_is_response_code=True,buffer=<_io.BytesIO object at 0x7feab588f420>,code=429,effective_url='https://crates.io/api/v1/crates/example',error=HTTP 429: Too Many Requests,headers=,reason='Too Many Requests',request=,request_time=0.35165858268737793,start_time=1788103100.1277273,time_info={'queue': 3.600120544433594e-05, 'namelookup': 0.003107, 'connect': 0.109051, 'appconnect': 0.231878, 'pretransfer': 0.232264, 'starttransfer': 0.348998, 'total': 0.350123, 'redirect': 0.0})) nvchecker/httpclient/tornado_httpclient.py:98: HTTPError ________________________ test_cratesio_skip_prerelease _________________________ get_version = .__call__ at 0x7feb44f98670> async def test_cratesio_skip_prerelease(get_version): with pytest.raises(RuntimeError, match='include_regex matched no versions'): > await get_version("cargo-lock", { "source": "cratesio", "include_regex": r".*-.*", }) tests/test_cratesio.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:63: in __call__ newvers = await run(entries) ^^^^^^^^^^^^^^^^^^ tests/conftest.py:56: in run results = await run_results(entries, max_concurrency) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/conftest.py:50: in run_results results, _has_failures = await main.run(result_coro, runner_coro) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nvchecker/__main__.py:110: in run return await result_fu ^^^^^^^^^^^^^^^ nvchecker/core.py:445: in process_result logger.exception('error processing result', result=r) /usr/lib/python3.14/site-packages/structlog/_native.py:49: in exception return self.error(event, *args, **kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3.14/site-packages/structlog/_native.py:172: in meth return self._proxy_to_logger( /usr/lib/python3.14/site-packages/structlog/_base.py:223: in _proxy_to_logger args, kw = self._process_event(method_name, event, event_kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3.14/site-packages/structlog/_base.py:174: in _process_event event_dict = proc(self._logger, method_name, event_dict) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nvchecker/core.py:443: in process_result r1 = _process_result(r) ^^^^^^^^^^^^^^^^^^ nvchecker/core.py:377: in _process_result logger.error('unexpected error happened', /usr/lib/python3.14/site-packages/structlog/_native.py:172: in meth return self._proxy_to_logger( /usr/lib/python3.14/site-packages/structlog/_base.py:223: in _proxy_to_logger args, kw = self._process_event(method_name, event, event_kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3.14/site-packages/structlog/_base.py:174: in _process_event event_dict = proc(self._logger, method_name, event_dict) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/conftest.py:102: in proc raise exc nvchecker/util.py:332: in run_one version = await self.func( nvchecker_source/cratesio.py:19: in get_version data = await cache.get_json(API_URL % name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nvchecker/util.py:234: in get_json return await self.get( nvchecker/util.py:271: in get r = await fu ^^^^^^^^ nvchecker/util.py:222: in _get_json res = await session.get(url, headers=dict(headers)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nvchecker/httpclient/base.py:50: in get return await self.request( nvchecker/httpclient/base.py:80: in request return await self.request_impl( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = url = 'https://crates.io/api/v1/crates/cargo-lock' async def request_impl( self, url: str, *, method: str, proxy: Optional[str] = None, headers: Dict[str, str] = {}, follow_redirects: bool = True, params = (), json = None, body = None, verify_cert: bool = True, ) -> Response: kwargs: Dict[str, Any] = { 'method': method, 'headers': headers, 'request_timeout': self.timeout, 'follow_redirects': follow_redirects, 'validate_cert': verify_cert, } if body: # By default the content type is already 'application/x-www-form-urlencoded' kwargs['body'] = body elif json: kwargs['body'] = _json.dumps(json) kwargs['prepare_curl_callback'] = setup_curl if proxy: host, port = proxy.rsplit(':', 1) kwargs['proxy_host'] = host kwargs['proxy_port'] = int(port) if params: q = urlencode(params) url += '?' + q r = HTTPRequest(url, **kwargs) res = await AsyncHTTPClient().fetch( r, raise_error=False) err_cls: Optional[type] = None if res.code >= 500: err_cls = TemporaryError elif res.code >= 400: err_cls = HTTPError if err_cls is not None: > raise err_cls( res.code, res.reason, res ) E nvchecker.httpclient.base.HTTPError: (429, 'Too Many Requests', HTTPResponse(_body=None,_error_is_response_code=True,buffer=<_io.BytesIO object at 0x7feab5875350>,code=429,effective_url='https://crates.io/api/v1/crates/cargo-lock',error=HTTP 429: Too Many Requests,headers=,reason='Too Many Requests',request=,request_time=0.33711671829223633,start_time=1788103101.2751956,time_info={'queue': 3.6716461181640625e-05, 'namelookup': 0.006256, 'connect': 0.100176, 'appconnect': 0.212192, 'pretransfer': 0.212581, 'starttransfer': 0.334226, 'total': 0.335537, 'redirect': 0.0})) nvchecker/httpclient/tornado_httpclient.py:98: HTTPError _________________________ test_cratesio_use_prerelease _________________________ get_version = .__call__ at 0x7feb44f98670> async def test_cratesio_use_prerelease(get_version): > await get_version("cargo-lock", { "source": "cratesio", "use_pre_release": "true", "include_regex": r".*-.*", }) tests/test_cratesio.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:63: in __call__ newvers = await run(entries) ^^^^^^^^^^^^^^^^^^ tests/conftest.py:56: in run results = await run_results(entries, max_concurrency) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/conftest.py:50: in run_results results, _has_failures = await main.run(result_coro, runner_coro) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nvchecker/__main__.py:110: in run return await result_fu ^^^^^^^^^^^^^^^ nvchecker/core.py:445: in process_result logger.exception('error processing result', result=r) /usr/lib/python3.14/site-packages/structlog/_native.py:49: in exception return self.error(event, *args, **kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3.14/site-packages/structlog/_native.py:172: in meth return self._proxy_to_logger( /usr/lib/python3.14/site-packages/structlog/_base.py:223: in _proxy_to_logger args, kw = self._process_event(method_name, event, event_kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3.14/site-packages/structlog/_base.py:174: in _process_event event_dict = proc(self._logger, method_name, event_dict) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nvchecker/core.py:443: in process_result r1 = _process_result(r) ^^^^^^^^^^^^^^^^^^ nvchecker/core.py:377: in _process_result logger.error('unexpected error happened', /usr/lib/python3.14/site-packages/structlog/_native.py:172: in meth return self._proxy_to_logger( /usr/lib/python3.14/site-packages/structlog/_base.py:223: in _proxy_to_logger args, kw = self._process_event(method_name, event, event_kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3.14/site-packages/structlog/_base.py:174: in _process_event event_dict = proc(self._logger, method_name, event_dict) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/conftest.py:102: in proc raise exc nvchecker/util.py:332: in run_one version = await self.func( nvchecker_source/cratesio.py:19: in get_version data = await cache.get_json(API_URL % name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nvchecker/util.py:234: in get_json return await self.get( nvchecker/util.py:271: in get r = await fu ^^^^^^^^ nvchecker/util.py:222: in _get_json res = await session.get(url, headers=dict(headers)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nvchecker/httpclient/base.py:50: in get return await self.request( nvchecker/httpclient/base.py:80: in request return await self.request_impl( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = url = 'https://crates.io/api/v1/crates/cargo-lock' async def request_impl( self, url: str, *, method: str, proxy: Optional[str] = None, headers: Dict[str, str] = {}, follow_redirects: bool = True, params = (), json = None, body = None, verify_cert: bool = True, ) -> Response: kwargs: Dict[str, Any] = { 'method': method, 'headers': headers, 'request_timeout': self.timeout, 'follow_redirects': follow_redirects, 'validate_cert': verify_cert, } if body: # By default the content type is already 'application/x-www-form-urlencoded' kwargs['body'] = body elif json: kwargs['body'] = _json.dumps(json) kwargs['prepare_curl_callback'] = setup_curl if proxy: host, port = proxy.rsplit(':', 1) kwargs['proxy_host'] = host kwargs['proxy_port'] = int(port) if params: q = urlencode(params) url += '?' + q r = HTTPRequest(url, **kwargs) res = await AsyncHTTPClient().fetch( r, raise_error=False) err_cls: Optional[type] = None if res.code >= 500: err_cls = TemporaryError elif res.code >= 400: err_cls = HTTPError if err_cls is not None: > raise err_cls( res.code, res.reason, res ) E nvchecker.httpclient.base.HTTPError: (429, 'Too Many Requests', HTTPResponse(_body=None,_error_is_response_code=True,buffer=<_io.BytesIO object at 0x7feab5862d90>,code=429,effective_url='https://crates.io/api/v1/crates/cargo-lock',error=HTTP 429: Too Many Requests,headers=,reason='Too Many Requests',request=,request_time=0.6588754653930664,start_time=1788103102.4104345,time_info={'queue': 3.719329833984375e-05, 'namelookup': 0.003667, 'connect': 0.207725, 'appconnect': 0.431728, 'pretransfer': 0.432114, 'starttransfer': 0.655835, 'total': 0.657189, 'redirect': 0.0})) nvchecker/httpclient/tornado_httpclient.py:98: HTTPError _________________________________ test_pagure __________________________________ get_version = .__call__ at 0x7feb44f98670> async def test_pagure(get_version): > ver = await get_version("example", { "source": "pagure", "pagure": "nvchecker-test", }) tests/test_pagure.py:8: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:63: in __call__ newvers = await run(entries) ^^^^^^^^^^^^^^^^^^ tests/conftest.py:56: in run results = await run_results(entries, max_concurrency) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/conftest.py:50: in run_results results, _has_failures = await main.run(result_coro, runner_coro) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nvchecker/__main__.py:110: in run return await result_fu ^^^^^^^^^^^^^^^ nvchecker/core.py:445: in process_result logger.exception('error processing result', result=r) /usr/lib/python3.14/site-packages/structlog/_native.py:49: in exception return self.error(event, *args, **kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3.14/site-packages/structlog/_native.py:172: in meth return self._proxy_to_logger( /usr/lib/python3.14/site-packages/structlog/_base.py:223: in _proxy_to_logger args, kw = self._process_event(method_name, event, event_kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3.14/site-packages/structlog/_base.py:174: in _process_event event_dict = proc(self._logger, method_name, event_dict) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nvchecker/core.py:443: in process_result r1 = _process_result(r) ^^^^^^^^^^^^^^^^^^ nvchecker/core.py:377: in _process_result logger.error('unexpected error happened', /usr/lib/python3.14/site-packages/structlog/_native.py:172: in meth return self._proxy_to_logger( /usr/lib/python3.14/site-packages/structlog/_base.py:223: in _proxy_to_logger args, kw = self._process_event(method_name, event, event_kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3.14/site-packages/structlog/_base.py:174: in _process_event event_dict = proc(self._logger, method_name, event_dict) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/conftest.py:102: in proc raise exc nvchecker/util.py:332: in run_one version = await self.func( nvchecker_source/pagure.py:20: in get_version data = await cache.get_json(url) ^^^^^^^^^^^^^^^^^^^^^^^^^ nvchecker/util.py:234: in get_json return await self.get( nvchecker/util.py:271: in get r = await fu ^^^^^^^^ nvchecker/util.py:222: in _get_json res = await session.get(url, headers=dict(headers)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nvchecker/httpclient/base.py:50: in get return await self.request( nvchecker/httpclient/base.py:80: in request return await self.request_impl( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = url = 'https://pagure.io/api/0/nvchecker-test/git/tags?with_commits=true' async def request_impl( self, url: str, *, method: str, proxy: Optional[str] = None, headers: Dict[str, str] = {}, follow_redirects: bool = True, params = (), json = None, body = None, verify_cert: bool = True, ) -> Response: kwargs: Dict[str, Any] = { 'method': method, 'headers': headers, 'request_timeout': self.timeout, 'follow_redirects': follow_redirects, 'validate_cert': verify_cert, } if body: # By default the content type is already 'application/x-www-form-urlencoded' kwargs['body'] = body elif json: kwargs['body'] = _json.dumps(json) kwargs['prepare_curl_callback'] = setup_curl if proxy: host, port = proxy.rsplit(':', 1) kwargs['proxy_host'] = host kwargs['proxy_port'] = int(port) if params: q = urlencode(params) url += '?' + q r = HTTPRequest(url, **kwargs) res = await AsyncHTTPClient().fetch( r, raise_error=False) err_cls: Optional[type] = None if res.code >= 500: err_cls = TemporaryError elif res.code >= 400: err_cls = HTTPError if err_cls is not None: > raise err_cls( res.code, res.reason, res ) E nvchecker.httpclient.base.HTTPError: (404, 'Not Found', HTTPResponse(_body=None,_error_is_response_code=True,buffer=<_io.BytesIO object at 0x7feb4491a200>,code=404,effective_url='https://pagure.io/api/0/nvchecker-test/git/tags?with_commits=true',error=HTTP 404: Not Found,headers=,reason='Not Found',request=,request_time=1.4399704933166504,start_time=1788103167.976289,time_info={'queue': 3.62396240234375e-05, 'namelookup': 0.584817, 'connect': 0.86139, 'appconnect': 1.159041, 'pretransfer': 1.159243, 'starttransfer': 1.437211, 'total': 1.438381, 'redirect': 0.0})) nvchecker/httpclient/tornado_httpclient.py:98: HTTPError ___________________________ test_pagure_with_ignored ___________________________ get_version = .__call__ at 0x7feb44f98670> async def test_pagure_with_ignored(get_version): > ver = await get_version("example", { "source": "pagure", "pagure": "nvchecker-test", "ignored": "0.2", }) tests/test_pagure.py:15: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:63: in __call__ newvers = await run(entries) ^^^^^^^^^^^^^^^^^^ tests/conftest.py:56: in run results = await run_results(entries, max_concurrency) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/conftest.py:50: in run_results results, _has_failures = await main.run(result_coro, runner_coro) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nvchecker/__main__.py:110: in run return await result_fu ^^^^^^^^^^^^^^^ nvchecker/core.py:445: in process_result logger.exception('error processing result', result=r) /usr/lib/python3.14/site-packages/structlog/_native.py:49: in exception return self.error(event, *args, **kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3.14/site-packages/structlog/_native.py:172: in meth return self._proxy_to_logger( /usr/lib/python3.14/site-packages/structlog/_base.py:223: in _proxy_to_logger args, kw = self._process_event(method_name, event, event_kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3.14/site-packages/structlog/_base.py:174: in _process_event event_dict = proc(self._logger, method_name, event_dict) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nvchecker/core.py:443: in process_result r1 = _process_result(r) ^^^^^^^^^^^^^^^^^^ nvchecker/core.py:377: in _process_result logger.error('unexpected error happened', /usr/lib/python3.14/site-packages/structlog/_native.py:172: in meth return self._proxy_to_logger( /usr/lib/python3.14/site-packages/structlog/_base.py:223: in _proxy_to_logger args, kw = self._process_event(method_name, event, event_kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3.14/site-packages/structlog/_base.py:174: in _process_event event_dict = proc(self._logger, method_name, event_dict) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tests/conftest.py:102: in proc raise exc nvchecker/util.py:332: in run_one version = await self.func( nvchecker_source/pagure.py:20: in get_version data = await cache.get_json(url) ^^^^^^^^^^^^^^^^^^^^^^^^^ nvchecker/util.py:234: in get_json return await self.get( nvchecker/util.py:271: in get r = await fu ^^^^^^^^ nvchecker/util.py:222: in _get_json res = await session.get(url, headers=dict(headers)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nvchecker/httpclient/base.py:50: in get return await self.request( nvchecker/httpclient/base.py:80: in request return await self.request_impl( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = url = 'https://pagure.io/api/0/nvchecker-test/git/tags?with_commits=true' async def request_impl( self, url: str, *, method: str, proxy: Optional[str] = None, headers: Dict[str, str] = {}, follow_redirects: bool = True, params = (), json = None, body = None, verify_cert: bool = True, ) -> Response: kwargs: Dict[str, Any] = { 'method': method, 'headers': headers, 'request_timeout': self.timeout, 'follow_redirects': follow_redirects, 'validate_cert': verify_cert, } if body: # By default the content type is already 'application/x-www-form-urlencoded' kwargs['body'] = body elif json: kwargs['body'] = _json.dumps(json) kwargs['prepare_curl_callback'] = setup_curl if proxy: host, port = proxy.rsplit(':', 1) kwargs['proxy_host'] = host kwargs['proxy_port'] = int(port) if params: q = urlencode(params) url += '?' + q r = HTTPRequest(url, **kwargs) res = await AsyncHTTPClient().fetch( r, raise_error=False) err_cls: Optional[type] = None if res.code >= 500: err_cls = TemporaryError elif res.code >= 400: err_cls = HTTPError if err_cls is not None: > raise err_cls( res.code, res.reason, res ) E nvchecker.httpclient.base.HTTPError: (404, 'Not Found', HTTPResponse(_body=None,_error_is_response_code=True,buffer=<_io.BytesIO object at 0x7feb4491b600>,code=404,effective_url='https://pagure.io/api/0/nvchecker-test/git/tags?with_commits=true',error=HTTP 404: Not Found,headers=,reason='Not Found',request=,request_time=0.900322437286377,start_time=1788103170.2189267,time_info={'queue': 3.504753112792969e-05, 'namelookup': 0.003635, 'connect': 0.281435, 'appconnect': 0.594722, 'pretransfer': 0.594948, 'starttransfer': 0.897339, 'total': 0.89872, 'redirect': 0.0})) nvchecker/httpclient/tornado_httpclient.py:98: HTTPError _____________________________ test_rpmrepo_fedora ______________________________ get_version = .__call__ at 0x7feb44f98670> async def test_rpmrepo_fedora(get_version): ver = await get_version("knot_fedora-39", { "source": "rpmrepo", "pkg": "libbtrfs", "repo": "https://ftp.sh.cvut.cz/fedora/linux/updates/44/Everything/x86_64/", }) > assert ver.startswith("7.0") E AssertionError: assert False E + where False = ('7.0') E + where = '7.1'.startswith tests/test_rpmrepo.py:32: AssertionError ----------------------------- Captured stdout call ----------------------------- updated =========================== short test summary info ============================ FAILED tests/test_cratesio.py::test_cratesio - nvchecker.httpclient.base.HTTP... FAILED tests/test_cratesio.py::test_cratesio_list - nvchecker.httpclient.base... FAILED tests/test_cratesio.py::test_cratesio_skip_prerelease - nvchecker.http... FAILED tests/test_cratesio.py::test_cratesio_use_prerelease - nvchecker.httpc... FAILED tests/test_pagure.py::test_pagure - nvchecker.httpclient.base.HTTPErro... FAILED tests/test_pagure.py::test_pagure_with_ignored - nvchecker.httpclient.... FAILED tests/test_rpmrepo.py::test_rpmrepo_fedora - AssertionError: assert False ======== 7 failed, 138 passed, 37 skipped, 2 rerun in 382.17s (0:06:22) ======== ==> ERROR: A failure occurred in check().  Aborting... ==> ERROR: Build failed, check /var/lib/archbuild/extra-riscv64/felix-2/build receiving incremental file list nvchecker-2.22-1-riscv64-build.log nvchecker-2.22-1-riscv64-check.log nvchecker-2.22-1-riscv64-prepare.log sent 81 bytes received 6,585 bytes 4,444.00 bytes/sec total size is 56,360 speedup is 8.45