==> Building on vanillish ==> Checking for remote environment... ==> Syncing package to remote host... sending incremental file list created directory packages/b4 ./ .SRCINFO 842 100% 0.00kB/s 0:00:00 842 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=10/12) .nvchecker.toml 108 100% 105.47kB/s 0:00:00 108 100% 105.47kB/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 1,597 100% 1.52MB/s 0:00:00 1,597 100% 1.52MB/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) b4-0.14.3-1.log 843 100% 823.24kB/s 0:00:00 843 100% 823.24kB/s 0:00:00 (xfr#6, to-chk=5/12) LICENSES/ LICENSES/0BSD.txt -> ../LICENSE keys/ keys/pgp/ keys/pgp/DE0E66E32F1FDD0902666B96E63EDCA9329DD07E.asc 23,995 100% 2.29MB/s 0:00:00 23,995 100% 2.29MB/s 0:00:00 (xfr#7, to-chk=0/12) sent 20,499 bytes received 209 bytes 13,805.33 bytes/sec total size is 27,769 speedup is 1.34 ==> Ensuring required PGP keys are present...  -> Checking for DE0E66E32F1FDD0902666B96E63EDCA9329DD07E... ==> Running pkgctl build --arch riscv64 --repo extra on remote host... ==> WARNING: unsupported architecture: riscv64 ==> Building b4  -> repo: extra  -> arch: riscv64  -> worker: felix-2 ==> Building b4 for [extra] (riscv64) ]2;🔵 Container arch-nspawn-3638111 on vanillish.felixc.at\[?25l:: Synchronizing package databases... core downloading... extra downloading... error: restricting filesystem access failed because landlock is not supported by the kernel! :: Starting full system upgrade... resolving dependencies... looking for conflicting packages... Package (5) Old Version New Version Net Change Download Size core/archlinux-keyring 20250807.1-1 20250929-1 0.00 MiB 1.19 MiB core/ca-certificates-mozilla 3.116-1 3.117-1 0.02 MiB 0.39 MiB core/glib2 2.84.4-1 2.86.0-2 -345.74 MiB 9.36 MiB core/libp11-kit 0.25.9-1 0.25.10-2 0.00 MiB 0.52 MiB core/p11-kit 0.25.9-1 0.25.10-2 0.00 MiB 0.24 MiB Total Download Size: 11.71 MiB Total Installed Size: 88.07 MiB Net Upgrade Size: -345.72 MiB :: Proceed with installation? [Y/n] :: Retrieving packages... glib2-2.86.0-2-riscv64 downloading... archlinux-keyring-20250929-1-any downloading... libp11-kit-0.25.10-2-riscv64 downloading... ca-certificates-mozilla-3.117-1-riscv64 downloading... p11-kit-0.25.10-2-riscv64 downloading... error: restricting filesystem access failed because landlock is not supported by the kernel! checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... upgrading libp11-kit... upgrading p11-kit... upgrading ca-certificates-mozilla... upgrading glib2... upgrading archlinux-keyring... gpg: Warning: using insecure memory! ==> Appending keys from archlinux.gpg... gpg: Warning: using insecure memory! gpg: public key DB323392796CA067 is 3037 days newer than the signature gpg: public key CF66D153D884358F is 16 seconds newer than the signature gpg: public key CF66D153D884358F is 16 seconds newer than the signature gpg: public key CF66D153D884358F is 16 seconds newer than the signature gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! gpg: Warning: using insecure memory! ==> Updating trust database... gpg: Warning: using insecure memory! gpg: next trustdb check due at 2025-11-16 :: Running post-transaction hooks... (1/5) Reloading system manager configuration... Skipped: Current root is not booted. (2/5) Reloading user manager configuration... Skipped: Current root is not booted. (3/5) Restarting marked services... Skipped: Current root is not booted. (4/5) Arming ConditionNeedsUpdate... (5/5) Rebuilding certificate stores... [?25h==> Building in chroot for [extra] (riscv64)... ==> Synchronizing chroot copy [/var/lib/archbuild/extra-riscv64/root] -> [felix-2]...done ==> Making package: b4 0.14.3-1 (Fri Oct 10 10:18:36 2025) ==> Retrieving sources...  -> Cloning b4 git repo... Cloning into bare repository '/home/felix/packages/b4/b4'... remote: Enumerating objects: 5783, done. remote: Counting objects: 0% (1/730) remote: Counting objects: 1% (8/730) remote: Counting objects: 2% (15/730) remote: Counting objects: 3% (22/730) remote: Counting objects: 4% (30/730) remote: Counting objects: 5% (37/730) remote: Counting objects: 6% (44/730) remote: Counting objects: 7% (52/730) remote: Counting objects: 8% (59/730) remote: Counting objects: 9% (66/730) remote: Counting objects: 10% (73/730) remote: Counting objects: 11% (81/730) remote: Counting objects: 12% (88/730) remote: Counting objects: 13% (95/730) remote: Counting objects: 14% (103/730) remote: Counting objects: 15% (110/730) remote: Counting objects: 16% (117/730) remote: Counting objects: 17% (125/730) remote: Counting objects: 18% (132/730) remote: Counting objects: 19% (139/730) remote: Counting objects: 20% (146/730) remote: Counting objects: 21% (154/730) remote: Counting objects: 22% (161/730) remote: Counting objects: 23% (168/730) remote: Counting objects: 24% (176/730) remote: Counting objects: 25% (183/730) remote: Counting objects: 26% (190/730) remote: Counting objects: 27% (198/730) remote: Counting objects: 28% (205/730) remote: Counting objects: 29% (212/730) remote: Counting objects: 30% (219/730) remote: Counting objects: 31% (227/730) remote: Counting objects: 32% (234/730) remote: Counting objects: 33% (241/730) remote: Counting objects: 34% (249/730) remote: Counting objects: 35% (256/730) remote: Counting objects: 36% (263/730) remote: Counting objects: 37% (271/730) remote: Counting objects: 38% (278/730) remote: Counting objects: 39% (285/730) remote: Counting objects: 40% (292/730) remote: Counting objects: 41% (300/730) remote: Counting objects: 42% (307/730) remote: Counting objects: 43% (314/730) remote: Counting objects: 44% (322/730) remote: Counting objects: 45% (329/730) remote: Counting objects: 46% (336/730) remote: Counting objects: 47% (344/730) remote: Counting objects: 48% (351/730) remote: Counting objects: 49% (358/730) remote: Counting objects: 50% (365/730) remote: Counting objects: 51% (373/730) remote: Counting objects: 52% (380/730) remote: Counting objects: 53% (387/730) remote: Counting objects: 54% (395/730) remote: Counting objects: 55% (402/730) remote: Counting objects: 56% (409/730) remote: Counting objects: 57% (417/730) remote: Counting objects: 58% (424/730) remote: Counting objects: 59% (431/730) remote: Counting objects: 60% (438/730) remote: Counting objects: 61% (446/730) remote: Counting objects: 62% (453/730) remote: Counting objects: 63% (460/730) remote: Counting objects: 64% (468/730) remote: Counting objects: 65% (475/730) remote: Counting objects: 66% (482/730) remote: Counting objects: 67% (490/730) remote: Counting objects: 68% (497/730) remote: Counting objects: 69% (504/730) remote: Counting objects: 70% (511/730) remote: Counting objects: 71% (519/730) remote: Counting objects: 72% (526/730) remote: Counting objects: 73% (533/730) remote: Counting objects: 74% (541/730) remote: Counting objects: 75% (548/730) remote: Counting objects: 76% (555/730) remote: Counting objects: 77% (563/730) remote: Counting objects: 78% (570/730) remote: Counting objects: 79% (577/730) remote: Counting objects: 80% (584/730) remote: Counting objects: 81% (592/730) remote: Counting objects: 82% (599/730) remote: Counting objects: 83% (606/730) remote: Counting objects: 84% (614/730) remote: Counting objects: 85% (621/730) remote: Counting objects: 86% (628/730) remote: Counting objects: 87% (636/730) remote: Counting objects: 88% (643/730) remote: Counting objects: 89% (650/730) remote: Counting objects: 90% (657/730) remote: Counting objects: 91% (665/730) remote: Counting objects: 92% (672/730) remote: Counting objects: 93% (679/730) remote: Counting objects: 94% (687/730) remote: Counting objects: 95% (694/730) remote: Counting objects: 96% (701/730) remote: Counting objects: 97% (709/730) remote: Counting objects: 98% (716/730) remote: Counting objects: 99% (723/730) remote: Counting objects: 100% (730/730) remote: Counting objects: 100% (730/730), done. remote: Compressing objects: 0% (1/132) remote: Compressing objects: 1% (2/132) remote: Compressing objects: 2% (3/132) remote: Compressing objects: 3% (4/132) remote: Compressing objects: 4% (6/132) remote: Compressing objects: 5% (7/132) remote: Compressing objects: 6% (8/132) remote: Compressing objects: 7% (10/132) remote: Compressing objects: 8% (11/132) remote: Compressing objects: 9% (12/132) remote: Compressing objects: 10% (14/132) remote: Compressing objects: 11% (15/132) remote: Compressing objects: 12% (16/132) remote: Compressing objects: 13% (18/132) remote: Compressing objects: 14% (19/132) remote: Compressing objects: 15% (20/132) remote: Compressing objects: 16% (22/132) remote: Compressing objects: 17% (23/132) remote: Compressing objects: 18% (24/132) remote: Compressing objects: 19% (26/132) remote: Compressing objects: 20% (27/132) remote: Compressing objects: 21% (28/132) remote: Compressing objects: 22% (30/132) remote: Compressing objects: 23% (31/132) remote: Compressing objects: 24% (32/132) remote: Compressing objects: 25% (33/132) remote: Compressing objects: 26% (35/132) remote: Compressing objects: 27% (36/132) remote: Compressing objects: 28% (37/132) remote: Compressing objects: 29% (39/132) remote: Compressing objects: 30% (40/132) remote: Compressing objects: 31% (41/132) remote: Compressing objects: 32% (43/132) remote: Compressing objects: 33% (44/132) remote: Compressing objects: 34% (45/132) remote: Compressing objects: 35% (47/132) remote: Compressing objects: 36% (48/132) remote: Compressing objects: 37% (49/132) remote: Compressing objects: 38% (51/132) remote: Compressing objects: 39% (52/132) remote: Compressing objects: 40% (53/132) remote: Compressing objects: 41% (55/132) remote: Compressing objects: 42% (56/132) remote: Compressing objects: 43% (57/132) remote: Compressing objects: 44% (59/132) remote: Compressing objects: 45% (60/132) remote: Compressing objects: 46% (61/132) remote: Compressing objects: 47% (63/132) remote: Compressing objects: 48% (64/132) remote: Compressing objects: 49% (65/132) remote: Compressing objects: 50% (66/132) remote: Compressing objects: 51% (68/132) remote: Compressing objects: 52% (69/132) remote: Compressing objects: 53% (70/132) remote: Compressing objects: 54% (72/132) remote: Compressing objects: 55% (73/132) remote: Compressing objects: 56% (74/132) remote: Compressing objects: 57% (76/132) remote: Compressing objects: 58% (77/132) remote: Compressing objects: 59% (78/132) remote: Compressing objects: 60% (80/132) remote: Compressing objects: 61% (81/132) remote: Compressing objects: 62% (82/132) remote: Compressing objects: 63% (84/132) remote: Compressing objects: 64% (85/132) remote: Compressing objects: 65% (86/132) remote: Compressing objects: 66% (88/132) remote: Compressing objects: 67% (89/132) remote: Compressing objects: 68% (90/132) remote: Compressing objects: 69% (92/132) remote: Compressing objects: 70% (93/132) remote: Compressing objects: 71% (94/132) remote: Compressing objects: 72% (96/132) remote: Compressing objects: 73% (97/132) remote: Compressing objects: 74% (98/132) remote: Compressing objects: 75% (99/132) remote: Compressing objects: 76% (101/132) remote: Compressing objects: 77% (102/132) remote: Compressing objects: 78% (103/132) remote: Compressing objects: 79% (105/132) remote: Compressing objects: 80% (106/132) remote: Compressing objects: 81% (107/132) remote: Compressing objects: 82% (109/132) remote: Compressing objects: 83% (110/132) remote: Compressing objects: 84% (111/132) remote: Compressing objects: 85% (113/132) remote: Compressing objects: 86% (114/132) remote: Compressing objects: 87% (115/132) remote: Compressing objects: 88% (117/132) remote: Compressing objects: 89% (118/132) remote: Compressing objects: 90% (119/132) remote: Compressing objects: 91% (121/132) remote: Compressing objects: 92% (122/132) remote: Compressing objects: 93% (123/132) remote: Compressing objects: 94% (125/132) remote: Compressing objects: 95% (126/132) remote: Compressing objects: 96% (127/132) remote: Compressing objects: 97% (129/132) remote: Compressing objects: 98% (130/132) remote: Compressing objects: 99% (131/132) remote: Compressing objects: 100% (132/132) remote: Compressing objects: 100% (132/132), done. Receiving objects: 0% (1/5783) Receiving objects: 1% (58/5783) Receiving objects: 2% (116/5783) Receiving objects: 3% (174/5783) Receiving objects: 4% (232/5783) Receiving objects: 5% (290/5783) Receiving objects: 6% (347/5783) Receiving objects: 7% (405/5783) Receiving objects: 8% (463/5783) Receiving objects: 9% (521/5783) Receiving objects: 10% (579/5783) Receiving objects: 11% (637/5783) Receiving objects: 12% (694/5783) Receiving objects: 13% (752/5783) Receiving objects: 14% (810/5783) Receiving objects: 15% (868/5783) Receiving objects: 16% (926/5783) Receiving objects: 17% (984/5783) Receiving objects: 18% (1041/5783) Receiving objects: 19% (1099/5783) Receiving objects: 20% (1157/5783) Receiving objects: 21% (1215/5783) Receiving objects: 22% (1273/5783) Receiving objects: 23% (1331/5783) Receiving objects: 24% (1388/5783) Receiving objects: 25% (1446/5783) Receiving objects: 26% (1504/5783) Receiving objects: 27% (1562/5783) Receiving objects: 28% (1620/5783) Receiving objects: 29% (1678/5783) Receiving objects: 30% (1735/5783) Receiving objects: 31% (1793/5783) Receiving objects: 32% (1851/5783) Receiving objects: 33% (1909/5783) Receiving objects: 34% (1967/5783) Receiving objects: 35% (2025/5783) Receiving objects: 36% (2082/5783) Receiving objects: 37% (2140/5783) Receiving objects: 38% (2198/5783) Receiving objects: 39% (2256/5783) Receiving objects: 40% (2314/5783) Receiving objects: 41% (2372/5783) Receiving objects: 42% (2429/5783) Receiving objects: 43% (2487/5783) Receiving objects: 44% (2545/5783) Receiving objects: 45% (2603/5783) Receiving objects: 46% (2661/5783) Receiving objects: 47% (2719/5783) Receiving objects: 48% (2776/5783) Receiving objects: 49% (2834/5783) Receiving objects: 50% (2892/5783) Receiving objects: 51% (2950/5783) Receiving objects: 52% (3008/5783) Receiving objects: 53% (3065/5783) Receiving objects: 54% (3123/5783) Receiving objects: 55% (3181/5783) Receiving objects: 56% (3239/5783) Receiving objects: 57% (3297/5783) Receiving objects: 58% (3355/5783) Receiving objects: 59% (3412/5783) Receiving objects: 60% (3470/5783) Receiving objects: 61% (3528/5783) Receiving objects: 62% (3586/5783) Receiving objects: 63% (3644/5783) Receiving objects: 64% (3702/5783) Receiving objects: 65% (3759/5783) Receiving objects: 66% (3817/5783) Receiving objects: 67% (3875/5783) Receiving objects: 68% (3933/5783) Receiving objects: 69% (3991/5783) Receiving objects: 70% (4049/5783) Receiving objects: 71% (4106/5783) Receiving objects: 72% (4164/5783) Receiving objects: 73% (4222/5783) Receiving objects: 74% (4280/5783) Receiving objects: 75% (4338/5783) Receiving objects: 76% (4396/5783) Receiving objects: 77% (4453/5783) Receiving objects: 78% (4511/5783) Receiving objects: 79% (4569/5783) Receiving objects: 80% (4627/5783) Receiving objects: 81% (4685/5783) Receiving objects: 82% (4743/5783) Receiving objects: 83% (4800/5783) Receiving objects: 84% (4858/5783) Receiving objects: 85% (4916/5783) Receiving objects: 86% (4974/5783) Receiving objects: 87% (5032/5783) Receiving objects: 88% (5090/5783) Receiving objects: 89% (5147/5783) Receiving objects: 90% (5205/5783) Receiving objects: 91% (5263/5783) Receiving objects: 92% (5321/5783) Receiving objects: 93% (5379/5783) Receiving objects: 94% (5437/5783) Receiving objects: 95% (5494/5783) Receiving objects: 96% (5552/5783) Receiving objects: 97% (5610/5783) Receiving objects: 98% (5668/5783) remote: Total 5783 (delta 658), reused 628 (delta 598), pack-reused 5053 (from 2) Receiving objects: 99% (5726/5783) Receiving objects: 100% (5783/5783) Receiving objects: 100% (5783/5783), 1.71 MiB | 3.45 MiB/s, done. Resolving deltas: 0% (0/4086) Resolving deltas: 1% (41/4086) Resolving deltas: 2% (83/4086) Resolving deltas: 3% (123/4086) Resolving deltas: 4% (164/4086) Resolving deltas: 5% (205/4086) Resolving deltas: 6% (246/4086) Resolving deltas: 7% (287/4086) Resolving deltas: 8% (327/4086) Resolving deltas: 9% (368/4086) Resolving deltas: 10% (409/4086) Resolving deltas: 11% (450/4086) Resolving deltas: 12% (491/4086) Resolving deltas: 13% (532/4086) Resolving deltas: 14% (573/4086) Resolving deltas: 15% (613/4086) Resolving deltas: 16% (654/4086) Resolving deltas: 17% (695/4086) Resolving deltas: 18% (736/4086) Resolving deltas: 19% (777/4086) Resolving deltas: 20% (818/4086) Resolving deltas: 21% (859/4086) Resolving deltas: 22% (899/4086) Resolving deltas: 23% (940/4086) Resolving deltas: 24% (981/4086) Resolving deltas: 25% (1022/4086) Resolving deltas: 26% (1063/4086) Resolving deltas: 27% (1104/4086) Resolving deltas: 28% (1145/4086) Resolving deltas: 29% (1185/4086) Resolving deltas: 30% (1226/4086) Resolving deltas: 31% (1267/4086) Resolving deltas: 32% (1308/4086) Resolving deltas: 33% (1349/4086) Resolving deltas: 34% (1390/4086) Resolving deltas: 35% (1431/4086) Resolving deltas: 36% (1471/4086) Resolving deltas: 37% (1512/4086) Resolving deltas: 38% (1553/4086) Resolving deltas: 39% (1594/4086) Resolving deltas: 40% (1635/4086) Resolving deltas: 41% (1676/4086) Resolving deltas: 42% (1717/4086) Resolving deltas: 43% (1757/4086) Resolving deltas: 44% (1798/4086) Resolving deltas: 45% (1839/4086) Resolving deltas: 46% (1881/4086) Resolving deltas: 47% (1921/4086) Resolving deltas: 48% (1962/4086) Resolving deltas: 49% (2003/4086) Resolving deltas: 50% (2043/4086) Resolving deltas: 51% (2085/4086) Resolving deltas: 52% (2125/4086) Resolving deltas: 53% (2166/4086) Resolving deltas: 54% (2207/4086) Resolving deltas: 55% (2249/4086) Resolving deltas: 56% (2289/4086) Resolving deltas: 57% (2330/4086) Resolving deltas: 58% (2371/4086) Resolving deltas: 59% (2411/4086) Resolving deltas: 60% (2452/4086) Resolving deltas: 61% (2493/4086) Resolving deltas: 62% (2534/4086) Resolving deltas: 63% (2575/4086) Resolving deltas: 64% (2616/4086) Resolving deltas: 65% (2656/4086) Resolving deltas: 66% (2697/4086) Resolving deltas: 67% (2738/4086) Resolving deltas: 68% (2779/4086) Resolving deltas: 69% (2820/4086) Resolving deltas: 70% (2861/4086) Resolving deltas: 71% (2902/4086) Resolving deltas: 72% (2942/4086) Resolving deltas: 73% (2983/4086) Resolving deltas: 74% (3024/4086) Resolving deltas: 75% (3065/4086) Resolving deltas: 76% (3106/4086) Resolving deltas: 77% (3147/4086) Resolving deltas: 78% (3188/4086) Resolving deltas: 79% (3228/4086) Resolving deltas: 80% (3269/4086) Resolving deltas: 81% (3310/4086) Resolving deltas: 82% (3351/4086) Resolving deltas: 83% (3392/4086) Resolving deltas: 84% (3433/4086) Resolving deltas: 85% (3474/4086) Resolving deltas: 86% (3514/4086) Resolving deltas: 87% (3555/4086) Resolving deltas: 88% (3596/4086) Resolving deltas: 89% (3637/4086) Resolving deltas: 90% (3678/4086) Resolving deltas: 91% (3719/4086) Resolving deltas: 92% (3760/4086) Resolving deltas: 93% (3800/4086) Resolving deltas: 94% (3841/4086) Resolving deltas: 95% (3882/4086) Resolving deltas: 96% (3923/4086) Resolving deltas: 97% (3964/4086) Resolving deltas: 98% (4005/4086) Resolving deltas: 99% (4046/4086) Resolving deltas: 100% (4086/4086) Resolving deltas: 100% (4086/4086), done. ==> Validating source files with sha256sums... b4 ... Passed ==> Verifying source file signatures with gpg... b4 git repo ... Passed ]2;🔵 Container arch-nspawn-3639716 on vanillish.felixc.at\==> Making package: b4 0.14.3-1 (Fri Oct 10 10:19:00 2025) ==> Checking runtime dependencies... ==> Installing missing dependencies... [?25lresolving dependencies... looking for conflicting packages... Package (17) New Version Net Change Download Size extra/git 2.51.0-1 28.36 MiB extra/libsodium 1.0.20-1 0.44 MiB core/mpdecimal 4.0.1-1 0.31 MiB extra/perl-error 0.17030-2 0.04 MiB extra/perl-mailtools 2.22-2 0.10 MiB extra/perl-timedate 2.33-8 0.08 MiB extra/python-cffi 1.17.1-2 1.35 MiB 0.28 MiB extra/python-charset-normalizer 3.4.3-1 0.71 MiB extra/python-idna 3.10-2 0.88 MiB extra/python-pycparser 2.23-1 1.71 MiB 0.22 MiB extra/python-pynacl 1.6.0-1 0.92 MiB 0.12 MiB extra/python-urllib3 2.5.0-1 1.28 MiB extra/zlib-ng 2.2.5-1 0.21 MiB extra/git-filter-repo 2.47.0-2 0.77 MiB 0.17 MiB extra/patatt 0.6.3-4 0.14 MiB 0.05 MiB core/python 3.13.7-1 281.87 MiB extra/python-requests 2.32.4-1 0.60 MiB Total Download Size: 0.85 MiB Total Installed Size: 319.77 MiB :: Proceed with installation? [Y/n] :: Retrieving packages... python-cffi-1.17.1-2-riscv64 downloading... python-pycparser-2.23-1-any downloading... git-filter-repo-2.47.0-2-any downloading... python-pynacl-1.6.0-1-riscv64 downloading... patatt-0.6.3-4-any downloading... error: restricting filesystem access failed because landlock is not supported by the kernel! 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-mediawiki-api: git mediawiki support perl-datetime-format-iso8601: git mediawiki support perl-lwp-protocol-https: git mediawiki https support perl-cgi: gitweb (web interface) support python: git svn & git p4 [pending] subversion: git svn org.freedesktop.secrets: keyring credential helper libsecret: libsecret credential helper [installed] less: the default pager for git installing mpdecimal... installing python... Optional dependencies for python python-setuptools: for building Python packages using tooling that is usually bundled with Python python-pip: for installing Python packages using tooling that is usually bundled with Python python-pipx: for installing Python software not packaged on Arch Linux sqlite: for a default database integration [installed] xz: for lzma [installed] tk: for tkinter installing git-filter-repo... installing libsodium... installing python-pycparser... installing python-cffi... Optional dependencies for python-cffi python-setuptools: "limited api" version checking in cffi.setuptools_ext installing python-pynacl... installing patatt... installing python-charset-normalizer... installing python-idna... installing python-urllib3... Optional dependencies for python-urllib3 python-brotli: Brotli support python-brotlicffi: Brotli support python-h2: HTTP/2 support python-pysocks: SOCKS support python-zstandard: Zstandard support installing python-requests... Optional dependencies for python-requests python-chardet: alternative character encoding library python-pysocks: SOCKS proxy support :: Running post-transaction hooks... (1/4) Creating system user accounts... Creating group 'git' with GID 971. Creating user 'git' (git daemon user) with UID 971 and GID 971. (2/4) Reloading system manager configuration... Skipped: Current root is not booted. (3/4) Arming ConditionNeedsUpdate... (4/4) Checking for old perl modules... [?25h==> Checking buildtime dependencies... ==> Installing missing dependencies... [?25lresolving dependencies... looking for conflicting packages... Package (19) New Version Net Change Download Size extra/python-autocommand 2.2.2-7 0.08 MiB extra/python-iniconfig 2.1.0-1 0.04 MiB extra/python-jaraco.collections 5.1.0-1 0.10 MiB extra/python-jaraco.context 6.0.1-1 0.04 MiB extra/python-jaraco.functools 4.1.0-1 0.07 MiB extra/python-jaraco.text 4.0.0-2 0.08 MiB extra/python-more-itertools 10.8.0-1 0.71 MiB extra/python-packaging 25.0-1 0.67 MiB extra/python-platformdirs 4.5.0-1 0.24 MiB 0.03 MiB extra/python-pluggy 1.6.0-1 0.20 MiB extra/python-pygments 2.19.2-1 14.38 MiB extra/python-pyproject-hooks 1.2.0-3 0.10 MiB extra/python-build 1.3.0-1 0.20 MiB extra/python-docutils 1:0.21.2-3 5.68 MiB extra/python-installer 0.7.0-10 0.17 MiB extra/python-pytest 1:8.4.2-1 4.18 MiB extra/python-setuptools 1:80.9.0-2 7.54 MiB extra/python-shtab 1.7.2-1 0.13 MiB 0.03 MiB extra/python-wheel 0.45.1-1 0.28 MiB Total Download Size: 0.06 MiB Total Installed Size: 34.90 MiB :: Proceed with installation? [Y/n] :: Retrieving packages... python-platformdirs-4.5.0-1-any downloading... python-shtab-1.7.2-1-any downloading... error: restricting filesystem access failed because landlock is not supported by the kernel! checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... 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-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-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-platformdirs... 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-setuptools... installing python-shtab... installing python-iniconfig... installing python-pluggy... installing python-pygments... installing python-pytest... :: Running post-transaction hooks... (1/1) Arming ConditionNeedsUpdate... [?25h==> Retrieving sources... ==> WARNING: Skipping all source file integrity checks. ==> Extracting sources...  -> Creating working copy of b4 git repo... Cloning into 'b4'... done. Switched to a new branch 'makepkg' ==> Starting build()... * Getting build dependencies for wheel... /usr/lib/python3.13/site-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated !! ******************************************************************************** Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options available on setuptools>=77.0.0). By 2026-Feb-18, you need to update your project and remove deprecated calls or your builds will no longer be supported. See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! corresp(dist, value, root_dir) /usr/lib/python3.13/site-packages/setuptools/config/_apply_pyprojecttoml.py:61: SetuptoolsDeprecationWarning: License classifiers are deprecated. !! ******************************************************************************** Please consider removing the following classifiers in favor of a SPDX license expression: License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+) See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! dist._finalize_license_expression() /usr/lib/python3.13/site-packages/setuptools/dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated. !! ******************************************************************************** Please consider removing the following classifiers in favor of a SPDX license expression: License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+) See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! self._finalize_license_expression() running egg_info creating src/b4.egg-info writing src/b4.egg-info/PKG-INFO writing dependency_links to src/b4.egg-info/dependency_links.txt writing entry points to src/b4.egg-info/entry_points.txt writing requirements to src/b4.egg-info/requires.txt writing top-level names to src/b4.egg-info/top_level.txt writing manifest file 'src/b4.egg-info/SOURCES.txt' reading manifest file 'src/b4.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' no previously-included directories found matching 'src/tests' adding license file 'COPYING' writing manifest file 'src/b4.egg-info/SOURCES.txt' * Building wheel... /usr/lib/python3.13/site-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated !! ******************************************************************************** Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options available on setuptools>=77.0.0). By 2026-Feb-18, you need to update your project and remove deprecated calls or your builds will no longer be supported. See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! corresp(dist, value, root_dir) /usr/lib/python3.13/site-packages/setuptools/config/_apply_pyprojecttoml.py:61: SetuptoolsDeprecationWarning: License classifiers are deprecated. !! ******************************************************************************** Please consider removing the following classifiers in favor of a SPDX license expression: License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+) See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! dist._finalize_license_expression() /usr/lib/python3.13/site-packages/setuptools/dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated. !! ******************************************************************************** Please consider removing the following classifiers in favor of a SPDX license expression: License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+) 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/b4 copying src/b4/ez.py -> build/lib/b4 copying src/b4/command.py -> build/lib/b4 copying src/b4/diff.py -> build/lib/b4 copying src/b4/ty.py -> build/lib/b4 copying src/b4/mbox.py -> build/lib/b4 copying src/b4/pr.py -> build/lib/b4 copying src/b4/__init__.py -> build/lib/b4 copying src/b4/kr.py -> build/lib/b4 running egg_info writing src/b4.egg-info/PKG-INFO writing dependency_links to src/b4.egg-info/dependency_links.txt writing entry points to src/b4.egg-info/entry_points.txt writing requirements to src/b4.egg-info/requires.txt writing top-level names to src/b4.egg-info/top_level.txt reading manifest file 'src/b4.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' no previously-included directories found matching 'src/tests' adding license file 'COPYING' writing manifest file 'src/b4.egg-info/SOURCES.txt' creating build/lib/b4/templates copying src/b4/templates/shazam-merge-template.example -> build/lib/b4/templates copying src/b4/templates/thanks-am-template.example -> build/lib/b4/templates copying src/b4/templates/thanks-pr-template.example -> build/lib/b4/templates creating build/lib/b4/man copying src/b4/man/b4.5.rst -> build/lib/b4/man installing to build/bdist.linux-riscv64/wheel running install running install_lib creating build/bdist.linux-riscv64/wheel creating build/bdist.linux-riscv64/wheel/b4 copying build/lib/b4/ez.py -> build/bdist.linux-riscv64/wheel/./b4 creating build/bdist.linux-riscv64/wheel/b4/templates copying build/lib/b4/templates/shazam-merge-template.example -> build/bdist.linux-riscv64/wheel/./b4/templates copying build/lib/b4/templates/thanks-pr-template.example -> build/bdist.linux-riscv64/wheel/./b4/templates copying build/lib/b4/templates/thanks-am-template.example -> build/bdist.linux-riscv64/wheel/./b4/templates copying build/lib/b4/command.py -> build/bdist.linux-riscv64/wheel/./b4 copying build/lib/b4/diff.py -> build/bdist.linux-riscv64/wheel/./b4 copying build/lib/b4/ty.py -> build/bdist.linux-riscv64/wheel/./b4 creating build/bdist.linux-riscv64/wheel/b4/man copying build/lib/b4/man/b4.5.rst -> build/bdist.linux-riscv64/wheel/./b4/man copying build/lib/b4/mbox.py -> build/bdist.linux-riscv64/wheel/./b4 copying build/lib/b4/pr.py -> build/bdist.linux-riscv64/wheel/./b4 copying build/lib/b4/__init__.py -> build/bdist.linux-riscv64/wheel/./b4 copying build/lib/b4/kr.py -> build/bdist.linux-riscv64/wheel/./b4 running install_egg_info Copying src/b4.egg-info to build/bdist.linux-riscv64/wheel/./b4-0.14.3-py3.13.egg-info running install_scripts creating build/bdist.linux-riscv64/wheel/b4-0.14.3.dist-info/WHEEL creating '/build/b4/src/b4/dist/.tmp-8giygj5i/b4-0.14.3-py3-none-any.whl' and adding 'build/bdist.linux-riscv64/wheel' to it adding 'b4/__init__.py' adding 'b4/command.py' adding 'b4/diff.py' adding 'b4/ez.py' adding 'b4/kr.py' adding 'b4/mbox.py' adding 'b4/pr.py' adding 'b4/ty.py' adding 'b4/man/b4.5.rst' adding 'b4/templates/shazam-merge-template.example' adding 'b4/templates/thanks-am-template.example' adding 'b4/templates/thanks-pr-template.example' adding 'b4-0.14.3.dist-info/licenses/COPYING' adding 'b4-0.14.3.dist-info/METADATA' adding 'b4-0.14.3.dist-info/WHEEL' adding 'b4-0.14.3.dist-info/entry_points.txt' adding 'b4-0.14.3.dist-info/top_level.txt' adding 'b4-0.14.3.dist-info/RECORD' removing build/bdist.linux-riscv64/wheel Successfully built b4-0.14.3-py3-none-any.whl ==> Starting check()... ============================= test session starts ============================== platform linux -- Python 3.13.7, pytest-8.4.2, pluggy-1.6.0 rootdir: /build/b4/src/b4 configfile: pyproject.toml collected 83 items test___init__.py ....................................................... [ 66%] ..................... [ 91%] test_ez.py FFFF [ 96%] test_mbox.py ... [100%] =================================== FAILURES =================================== _ test_trailers[trailers-thread-with-followups-None-None-trargs0-compareargs0-trailers-thread-with-followups-b4cfg0] _ sampledir = '/build/b4/src/b4/src/tests/samples' prepdir = '/tmp/pytest-of-builduser/pytest-0/test_trailers_trailers_thread_0/repo' mboxf = 'trailers-thread-with-followups', bundlef = None, rep = None trargs = [], compareargs = ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'] compareout = 'trailers-thread-with-followups' b4cfg = {'shazam-am-flags': '--signoff'} @pytest.mark.parametrize('mboxf, bundlef, rep, trargs, compareargs, compareout, b4cfg', [ ('trailers-thread-with-followups', None, None, [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-followups', {'shazam-am-flags': '--signoff'}), ('trailers-thread-with-cover-followup', None, None, [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-cover-followup', {'shazam-am-flags': '--signoff'}), # Test matching trailer updates by subject when patch-id changes ('trailers-thread-with-followups', None, (b'vivendum', b'addendum'), [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-followups', {'shazam-am-flags': '--signoff'}), # Test that we properly perserve commits with --- in them ('trailers-thread-with-followups', 'trailers-with-tripledash', None, [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-followups-and-tripledash', None), ]) def test_trailers(sampledir, prepdir, mboxf, bundlef, rep, trargs, compareargs, compareout, b4cfg): if b4cfg: b4.MAIN_CONFIG.update(b4cfg) config = b4.get_main_config() mfile = os.path.join(sampledir, f'{mboxf}.mbox') assert os.path.exists(mfile) if bundlef: bfile = os.path.join(sampledir, f'{bundlef}.bundle') assert os.path.exists(bfile) gitargs = ['pull', '--rebase', bfile] out, logstr = b4.git_run_command(None, gitargs) assert out == 0 else: assert config.get('shazam-am-flags') == '--signoff' if rep: with open(mfile, 'rb') as fh: contents = fh.read() contents = contents.replace(rep[0], rep[1]) tfile = os.path.join(prepdir, '.git', 'modified.mbox') with open(tfile, 'wb') as fh: fh.write(contents) else: tfile = mfile b4args = ['--no-stdin', '--no-interactive', '--offline-mode', 'shazam', '--no-add-trailers', '-m', tfile] parser = b4.command.setup_parser() cmdargs = parser.parse_args(b4args) with pytest.raises(SystemExit) as e: b4.mbox.main(cmdargs) assert e.type == SystemExit assert e.value.code == 0 cfile = os.path.join(sampledir, f'{compareout}.verify') assert os.path.exists(cfile) parser = b4.command.setup_parser() b4args = ['--no-stdin', '--no-interactive', '--offline-mode', 'trailers', '--update', '-m', mfile] + trargs cmdargs = parser.parse_args(b4args) > b4.ez.cmd_trailers(cmdargs) /build/b4/src/b4/src/tests/test_ez.py:73: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/b4/src/b4/src/b4/ez.py:2931: in cmd_trailers update_trailers(cmdargs) /build/b4/src/b4/src/b4/ez.py:1288: in update_trailers run_frf(frf) /build/b4/src/b4/src/b4/ez.py:125: in run_frf frf.run() /usr/lib/python3.13/site-packages/git_filter_repo.py:4875: in run self._run_sanity_checks() /usr/lib/python3.13/site-packages/git_filter_repo.py:3276: in _run_sanity_checks self._config_settings = GitUtils.get_config_settings(target_working_dir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ repo_working_dir = b'.' @staticmethod def get_config_settings(repo_working_dir): output = '' try: output = subproc.check_output('git config --list'.split(), cwd=repo_working_dir) except subprocess.CalledProcessError as e: # pragma: no cover raise SystemExit('fatal: {}'.format(e)) # FIXME: Ignores multi-valued keys, just let them overwrite for now > return dict(line.split(b'=', maxsplit=1) for line in output.strip().split(b"\n")) E ValueError: dictionary update sequence element #13 has length 1; 2 is required /usr/lib/python3.13/site-packages/git_filter_repo.py:1692: ValueError ------------------------------ Captured log call ------------------------------- CRITICAL b4:mbox.py:165 Total patches: 4 CRITICAL b4:mbox.py:200 --- CRITICAL b4:ez.py:1267 --- _ test_trailers[trailers-thread-with-cover-followup-None-None-trargs1-compareargs1-trailers-thread-with-cover-followup-b4cfg1] _ sampledir = '/build/b4/src/b4/src/tests/samples' prepdir = '/tmp/pytest-of-builduser/pytest-0/test_trailers_trailers_thread_1/repo' mboxf = 'trailers-thread-with-cover-followup', bundlef = None, rep = None trargs = [], compareargs = ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'] compareout = 'trailers-thread-with-cover-followup' b4cfg = {'shazam-am-flags': '--signoff'} @pytest.mark.parametrize('mboxf, bundlef, rep, trargs, compareargs, compareout, b4cfg', [ ('trailers-thread-with-followups', None, None, [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-followups', {'shazam-am-flags': '--signoff'}), ('trailers-thread-with-cover-followup', None, None, [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-cover-followup', {'shazam-am-flags': '--signoff'}), # Test matching trailer updates by subject when patch-id changes ('trailers-thread-with-followups', None, (b'vivendum', b'addendum'), [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-followups', {'shazam-am-flags': '--signoff'}), # Test that we properly perserve commits with --- in them ('trailers-thread-with-followups', 'trailers-with-tripledash', None, [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-followups-and-tripledash', None), ]) def test_trailers(sampledir, prepdir, mboxf, bundlef, rep, trargs, compareargs, compareout, b4cfg): if b4cfg: b4.MAIN_CONFIG.update(b4cfg) config = b4.get_main_config() mfile = os.path.join(sampledir, f'{mboxf}.mbox') assert os.path.exists(mfile) if bundlef: bfile = os.path.join(sampledir, f'{bundlef}.bundle') assert os.path.exists(bfile) gitargs = ['pull', '--rebase', bfile] out, logstr = b4.git_run_command(None, gitargs) assert out == 0 else: assert config.get('shazam-am-flags') == '--signoff' if rep: with open(mfile, 'rb') as fh: contents = fh.read() contents = contents.replace(rep[0], rep[1]) tfile = os.path.join(prepdir, '.git', 'modified.mbox') with open(tfile, 'wb') as fh: fh.write(contents) else: tfile = mfile b4args = ['--no-stdin', '--no-interactive', '--offline-mode', 'shazam', '--no-add-trailers', '-m', tfile] parser = b4.command.setup_parser() cmdargs = parser.parse_args(b4args) with pytest.raises(SystemExit) as e: b4.mbox.main(cmdargs) assert e.type == SystemExit assert e.value.code == 0 cfile = os.path.join(sampledir, f'{compareout}.verify') assert os.path.exists(cfile) parser = b4.command.setup_parser() b4args = ['--no-stdin', '--no-interactive', '--offline-mode', 'trailers', '--update', '-m', mfile] + trargs cmdargs = parser.parse_args(b4args) > b4.ez.cmd_trailers(cmdargs) /build/b4/src/b4/src/tests/test_ez.py:73: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/b4/src/b4/src/b4/ez.py:2931: in cmd_trailers update_trailers(cmdargs) /build/b4/src/b4/src/b4/ez.py:1288: in update_trailers run_frf(frf) /build/b4/src/b4/src/b4/ez.py:125: in run_frf frf.run() /usr/lib/python3.13/site-packages/git_filter_repo.py:4875: in run self._run_sanity_checks() /usr/lib/python3.13/site-packages/git_filter_repo.py:3276: in _run_sanity_checks self._config_settings = GitUtils.get_config_settings(target_working_dir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ repo_working_dir = b'.' @staticmethod def get_config_settings(repo_working_dir): output = '' try: output = subproc.check_output('git config --list'.split(), cwd=repo_working_dir) except subprocess.CalledProcessError as e: # pragma: no cover raise SystemExit('fatal: {}'.format(e)) # FIXME: Ignores multi-valued keys, just let them overwrite for now > return dict(line.split(b'=', maxsplit=1) for line in output.strip().split(b"\n")) E ValueError: dictionary update sequence element #13 has length 1; 2 is required /usr/lib/python3.13/site-packages/git_filter_repo.py:1692: ValueError ------------------------------ Captured log call ------------------------------- CRITICAL b4:mbox.py:165 Total patches: 4 CRITICAL b4:mbox.py:200 --- CRITICAL b4:ez.py:1267 --- _ test_trailers[trailers-thread-with-followups-None-rep2-trargs2-compareargs2-trailers-thread-with-followups-b4cfg2] _ sampledir = '/build/b4/src/b4/src/tests/samples' prepdir = '/tmp/pytest-of-builduser/pytest-0/test_trailers_trailers_thread_2/repo' mboxf = 'trailers-thread-with-followups', bundlef = None rep = (b'vivendum', b'addendum'), trargs = [] compareargs = ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'] compareout = 'trailers-thread-with-followups' b4cfg = {'shazam-am-flags': '--signoff'} @pytest.mark.parametrize('mboxf, bundlef, rep, trargs, compareargs, compareout, b4cfg', [ ('trailers-thread-with-followups', None, None, [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-followups', {'shazam-am-flags': '--signoff'}), ('trailers-thread-with-cover-followup', None, None, [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-cover-followup', {'shazam-am-flags': '--signoff'}), # Test matching trailer updates by subject when patch-id changes ('trailers-thread-with-followups', None, (b'vivendum', b'addendum'), [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-followups', {'shazam-am-flags': '--signoff'}), # Test that we properly perserve commits with --- in them ('trailers-thread-with-followups', 'trailers-with-tripledash', None, [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-followups-and-tripledash', None), ]) def test_trailers(sampledir, prepdir, mboxf, bundlef, rep, trargs, compareargs, compareout, b4cfg): if b4cfg: b4.MAIN_CONFIG.update(b4cfg) config = b4.get_main_config() mfile = os.path.join(sampledir, f'{mboxf}.mbox') assert os.path.exists(mfile) if bundlef: bfile = os.path.join(sampledir, f'{bundlef}.bundle') assert os.path.exists(bfile) gitargs = ['pull', '--rebase', bfile] out, logstr = b4.git_run_command(None, gitargs) assert out == 0 else: assert config.get('shazam-am-flags') == '--signoff' if rep: with open(mfile, 'rb') as fh: contents = fh.read() contents = contents.replace(rep[0], rep[1]) tfile = os.path.join(prepdir, '.git', 'modified.mbox') with open(tfile, 'wb') as fh: fh.write(contents) else: tfile = mfile b4args = ['--no-stdin', '--no-interactive', '--offline-mode', 'shazam', '--no-add-trailers', '-m', tfile] parser = b4.command.setup_parser() cmdargs = parser.parse_args(b4args) with pytest.raises(SystemExit) as e: b4.mbox.main(cmdargs) assert e.type == SystemExit assert e.value.code == 0 cfile = os.path.join(sampledir, f'{compareout}.verify') assert os.path.exists(cfile) parser = b4.command.setup_parser() b4args = ['--no-stdin', '--no-interactive', '--offline-mode', 'trailers', '--update', '-m', mfile] + trargs cmdargs = parser.parse_args(b4args) > b4.ez.cmd_trailers(cmdargs) /build/b4/src/b4/src/tests/test_ez.py:73: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/b4/src/b4/src/b4/ez.py:2931: in cmd_trailers update_trailers(cmdargs) /build/b4/src/b4/src/b4/ez.py:1288: in update_trailers run_frf(frf) /build/b4/src/b4/src/b4/ez.py:125: in run_frf frf.run() /usr/lib/python3.13/site-packages/git_filter_repo.py:4875: in run self._run_sanity_checks() /usr/lib/python3.13/site-packages/git_filter_repo.py:3276: in _run_sanity_checks self._config_settings = GitUtils.get_config_settings(target_working_dir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ repo_working_dir = b'.' @staticmethod def get_config_settings(repo_working_dir): output = '' try: output = subproc.check_output('git config --list'.split(), cwd=repo_working_dir) except subprocess.CalledProcessError as e: # pragma: no cover raise SystemExit('fatal: {}'.format(e)) # FIXME: Ignores multi-valued keys, just let them overwrite for now > return dict(line.split(b'=', maxsplit=1) for line in output.strip().split(b"\n")) E ValueError: dictionary update sequence element #13 has length 1; 2 is required /usr/lib/python3.13/site-packages/git_filter_repo.py:1692: ValueError ------------------------------ Captured log call ------------------------------- CRITICAL b4:mbox.py:165 Total patches: 4 CRITICAL b4:mbox.py:200 --- CRITICAL b4:ez.py:1267 --- _ test_trailers[trailers-thread-with-followups-trailers-with-tripledash-None-trargs3-compareargs3-trailers-thread-with-followups-and-tripledash-None] _ sampledir = '/build/b4/src/b4/src/tests/samples' prepdir = '/tmp/pytest-of-builduser/pytest-0/test_trailers_trailers_thread_3/repo' mboxf = 'trailers-thread-with-followups', bundlef = 'trailers-with-tripledash' rep = None, trargs = [] compareargs = ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'] compareout = 'trailers-thread-with-followups-and-tripledash', b4cfg = None @pytest.mark.parametrize('mboxf, bundlef, rep, trargs, compareargs, compareout, b4cfg', [ ('trailers-thread-with-followups', None, None, [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-followups', {'shazam-am-flags': '--signoff'}), ('trailers-thread-with-cover-followup', None, None, [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-cover-followup', {'shazam-am-flags': '--signoff'}), # Test matching trailer updates by subject when patch-id changes ('trailers-thread-with-followups', None, (b'vivendum', b'addendum'), [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-followups', {'shazam-am-flags': '--signoff'}), # Test that we properly perserve commits with --- in them ('trailers-thread-with-followups', 'trailers-with-tripledash', None, [], ['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'trailers-thread-with-followups-and-tripledash', None), ]) def test_trailers(sampledir, prepdir, mboxf, bundlef, rep, trargs, compareargs, compareout, b4cfg): if b4cfg: b4.MAIN_CONFIG.update(b4cfg) config = b4.get_main_config() mfile = os.path.join(sampledir, f'{mboxf}.mbox') assert os.path.exists(mfile) if bundlef: bfile = os.path.join(sampledir, f'{bundlef}.bundle') assert os.path.exists(bfile) gitargs = ['pull', '--rebase', bfile] out, logstr = b4.git_run_command(None, gitargs) assert out == 0 else: assert config.get('shazam-am-flags') == '--signoff' if rep: with open(mfile, 'rb') as fh: contents = fh.read() contents = contents.replace(rep[0], rep[1]) tfile = os.path.join(prepdir, '.git', 'modified.mbox') with open(tfile, 'wb') as fh: fh.write(contents) else: tfile = mfile b4args = ['--no-stdin', '--no-interactive', '--offline-mode', 'shazam', '--no-add-trailers', '-m', tfile] parser = b4.command.setup_parser() cmdargs = parser.parse_args(b4args) with pytest.raises(SystemExit) as e: b4.mbox.main(cmdargs) assert e.type == SystemExit assert e.value.code == 0 cfile = os.path.join(sampledir, f'{compareout}.verify') assert os.path.exists(cfile) parser = b4.command.setup_parser() b4args = ['--no-stdin', '--no-interactive', '--offline-mode', 'trailers', '--update', '-m', mfile] + trargs cmdargs = parser.parse_args(b4args) > b4.ez.cmd_trailers(cmdargs) /build/b4/src/b4/src/tests/test_ez.py:73: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /build/b4/src/b4/src/b4/ez.py:2931: in cmd_trailers update_trailers(cmdargs) /build/b4/src/b4/src/b4/ez.py:1288: in update_trailers run_frf(frf) /build/b4/src/b4/src/b4/ez.py:125: in run_frf frf.run() /usr/lib/python3.13/site-packages/git_filter_repo.py:4875: in run self._run_sanity_checks() /usr/lib/python3.13/site-packages/git_filter_repo.py:3276: in _run_sanity_checks self._config_settings = GitUtils.get_config_settings(target_working_dir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ repo_working_dir = b'.' @staticmethod def get_config_settings(repo_working_dir): output = '' try: output = subproc.check_output('git config --list'.split(), cwd=repo_working_dir) except subprocess.CalledProcessError as e: # pragma: no cover raise SystemExit('fatal: {}'.format(e)) # FIXME: Ignores multi-valued keys, just let them overwrite for now > return dict(line.split(b'=', maxsplit=1) for line in output.strip().split(b"\n")) E ValueError: dictionary update sequence element #13 has length 1; 2 is required /usr/lib/python3.13/site-packages/git_filter_repo.py:1692: ValueError ------------------------------ Captured log call ------------------------------- CRITICAL b4:ez.py:1267 --- =========================== short test summary info ============================ FAILED test_ez.py::test_trailers[trailers-thread-with-followups-None-None-trargs0-compareargs0-trailers-thread-with-followups-b4cfg0] FAILED test_ez.py::test_trailers[trailers-thread-with-cover-followup-None-None-trargs1-compareargs1-trailers-thread-with-cover-followup-b4cfg1] FAILED test_ez.py::test_trailers[trailers-thread-with-followups-None-rep2-trargs2-compareargs2-trailers-thread-with-followups-b4cfg2] FAILED test_ez.py::test_trailers[trailers-thread-with-followups-trailers-with-tripledash-None-trargs3-compareargs3-trailers-thread-with-followups-and-tripledash-None] ======================== 4 failed, 79 passed in 15.81s ========================= ==> ERROR: A failure occurred in check().  Aborting... ==> ERROR: Build failed, check /var/lib/archbuild/extra-riscv64/felix-2/build [?25h[?25h[?25hreceiving incremental file list b4-0.14.3-1-riscv64-build.log b4-0.14.3-1-riscv64-check.log sent 62 bytes received 3,655 bytes 2,478.00 bytes/sec total size is 29,424 speedup is 7.92