Call for testing for a 0.33.10 release

2 views
Skip to first unread message

Rob Browning

unread,
Jan 16, 2026, 3:18:11 PMJan 16
to bup-...@googlegroups.com

I'd like to make a fairly trivial 0.33.10 release to include the recent
test fixes. I suspect things are "fine", but please test if you have
time:

https://github.com/bup/bup/tree/0.33.x
https://codeberg.org/bup/bup/src/branch/0.33.x

Thanks
--
Rob Browning
rlb @defaultvalue.org and @debian.org
GPG as of 2011-07-10 E6A9 DA3C C9FD 1FF8 C676 D2C4 C0F0 39E9 ED1B 597A
GPG as of 2002-11-03 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4

Rob Browning

unread,
Jan 18, 2026, 6:12:59 PM (14 days ago) Jan 18
to bup-...@googlegroups.com
Rob Browning <r...@defaultvalue.org> writes:

> I'd like to make a fairly trivial 0.33.10 release to include the recent
> test fixes. I suspect things are "fine", but please test if you have
> time:
>
> https://github.com/bup/bup/tree/0.33.x
> https://codeberg.org/bup/bup/src/branch/0.33.x

Now also considering adding the fsck hardlink patch:
https://groups.google.com/g/bup-list/c/zl-m9n6jHrk/m/dkdkGPAuCQAJ

Greg Troxel

unread,
Jan 18, 2026, 7:41:53 PM (14 days ago) Jan 18
to Rob Browning, bup-...@googlegroups.com
Testing on netbsd-9, the tests hung. I suspect script issues; haven't
started to figure it out.

On netbsd-10, I got two failures. One is 'man -l' and the other is
script exiting prematurely (an OS bug).

I'm 99% sure these are test issues, and now I remember that for a long
time I couldnt't run tests at all, so all in all the state of 0.33.x is
a big improvement.

It may be that a couple more cherry-picks will fix these.

I'm testing main now and will revisit things tomorrow.


----------------------------------------
mkdir test/tmp
./pylint
./pylint: doing nothing given ./configure --with-pylint=no
! bup version # Ensure we can't test the local bup (cf. dev/shadow-bin)
error: something ran "bup"; bup imposter intentionally failing
./bup features
bup 0.33.10~c910d2240e9632659b21d962d7b007bf4eb43d76
Source c910d2240e9632659b21d962d7b007bf4eb43d76 2026-01-14 11:51:39 -0600
Python: 3.13.11
Command line editing (e.g. bup ftp): yes
Saving and restoring POSIX ACLs: no
Saving and restoring extended attributes (xattrs): no
if test yes = "$(dev/python -c 'import xdist; print("yes")' 2>/dev/null)"; then \
(set -x; ./pytest -n8;) \
else \
(set -x; ./pytest;) \
fi
+ ./pytest
============================= test session starts ==============================
platform netbsd10 -- Python 3.13.11, pytest-9.0.2, pluggy-1.6.0 -- /home/gdt/SOFTWARE/BUP/bup/dev/bup-python
cachedir: .pytest_cache
rootdir: /home/gdt/SOFTWARE/BUP/bup
configfile: pytest.ini
testpaths: test/int, test/ext
plugins: anyio-4.12.1
collecting ... collected 134 items / 1 deselected / 133 selected

test/ext/test_get.py::test_get[get-replace] PASSED [ 0%]
test/ext/test_get.py::test_get[get-universal] PASSED [ 1%]
test/ext/test_get.py::test_get[get-ff] PASSED [ 2%]
test/ext/test_get.py::test_get[get-append] PASSED [ 3%]
test/ext/test_get.py::test_get[get-pick_force] PASSED [ 3%]
test/ext/test_get.py::test_get[get-pick_noforce] PASSED [ 4%]
test/ext/test_get.py::test_get[get-new_tag] PASSED [ 5%]
test/ext/test_get.py::test_get[get-unnamed] PASSED [ 6%]
test/ext/test-cat-file:: PASSED [ 6%]
test/ext/test-command-without-init-fails:: PASSED [ 7%]
test/ext/test-comparative-split-join:: SKIPPED (! /home/gdt/SOFTWARE...) [ 8%]
test/ext/test-compression:: PASSED [ 9%]
test/ext/test-drecurse:: PASSED [ 9%]
test/ext/test-fsck:: PASSED [ 10%]
test/ext/test-fuse:: PASSED [ 11%]
test/ext/test-gc:: PASSED [ 12%]
test/ext/test-gc-removes-incomplete-trees:: PASSED [ 12%]
test/ext/test-get-missing:: PASSED [ 13%]
test/ext/test-help:: FAILED [ 14%]
test/ext/test-import-duplicity:: SKIPPED (! /home/gdt/SOFTWARE/BUP/b...) [ 15%]
test/ext/test-import-rdiff-backup:: PASSED [ 15%]
test/ext/test-index:: PASSED [ 16%]
test/ext/test-index-check-device:: SKIPPED (! /home/gdt/SOFTWARE/BUP...) [ 17%]
test/ext/test-index-clear:: PASSED [ 18%]
test/ext/test-index-save-type-change:: PASSED [ 18%]
test/ext/test-list-idx:: PASSED [ 19%]
test/ext/test-ls:: PASSED [ 20%]
test/ext/test-ls-remote:: PASSED [ 21%]
test/ext/test-main:: PASSED [ 21%]
test/ext/test-meta:: PASSED [ 22%]
test/ext/test-meta-acls:: SKIPPED (! /home/gdt/SOFTWARE/BUP/bup/test...) [ 23%]
test/ext/test-misc:: FAILED [ 24%]
test/ext/test-on:: PASSED [ 24%]
test/ext/test-packsizelimit:: PASSED [ 25%]
test/ext/test-redundant-saves:: PASSED [ 26%]
test/ext/test-restore-map-owner:: SKIPPED (! /home/gdt/SOFTWARE/BUP/...) [ 27%]
test/ext/test-restore-single-file:: PASSED [ 27%]
test/ext/test-rm:: PASSED [ 28%]
test/ext/test-rm-between-index-and-save:: PASSED [ 29%]
test/ext/test-save-creates-no-unrefs:: PASSED [ 30%]
test/ext/test-save-data-race:: PASSED [ 30%]
test/ext/test-save-errors:: PASSED [ 31%]
test/ext/test-save-restore:: PASSED [ 32%]
test/ext/test-save-restore-excludes:: PASSED [ 33%]
test/ext/test-save-smaller:: PASSED [ 33%]
test/ext/test-save-strip-graft:: PASSED [ 34%]
test/ext/test-save-symlink-race:: PASSED [ 35%]
test/ext/test-save-with-valid-parent:: PASSED [ 36%]
test/ext/test-sparse-files:: PASSED [ 36%]
test/ext/test-split-join:: PASSED [ 37%]
test/ext/test-tz:: PASSED [ 38%]
test/ext/test-validate-object-links:: PASSED [ 39%]
test/ext/test-validate-ref-links:: PASSED [ 39%]
test/ext/test-walk-object-order:: PASSED [ 40%]
test/ext/test-web:: PASSED [ 41%]
test/ext/test-xdev:: SKIPPED (! /home/gdt/SOFTWARE/BUP/bup/test/ext/...) [ 42%]
test/ext/test_argv.py::test_argv PASSED [ 42%]
test/ext/test_ftp.py::test_ftp PASSED [ 43%]
test/ext/test_prune_older.py::test_prune_older PASSED [ 44%]
test/int/test_bloom.py::test_bloom PASSED [ 45%]
test/int/test_client.py::test_server_split_with_indexes PASSED [ 45%]
test/int/test_client.py::test_multiple_suggestions PASSED [ 46%]
test/int/test_client.py::test_dumb_client_server PASSED [ 47%]
test/int/test_client.py::test_midx_refreshing PASSED [ 48%]
test/int/test_client.py::test_remote_parsing PASSED [ 48%]
test/int/test_compat.py::test_pending_raise PASSED [ 49%]
test/int/test_git.py::test_git_version_detection PASSED [ 50%]
test/int/test_git.py::test_mangle PASSED [ 51%]
test/int/test_git.py::test_encode PASSED [ 51%]
test/int/test_git.py::test_packs PASSED [ 52%]
test/int/test_git.py::test_pack_name_lookup PASSED [ 53%]
test/int/test_git.py::test_long_index PASSED [ 54%]
test/int/test_git.py::test_check_repo_or_die PASSED [ 54%]
test/int/test_git.py::test_commit_parsing PASSED [ 55%]
test/int/test_git.py::test_commit_gpgsig_parsing PASSED [ 56%]
test/int/test_git.py::test_new_commit PASSED [ 57%]
test/int/test_git.py::test_list_refs PASSED [ 57%]
test/int/test_git.py::test_git_date_str PASSED [ 58%]
test/int/test_git.py::test_cat_pipe PASSED [ 59%]
test/int/test_git.py::test_midx_close PASSED [ 60%]
test/int/test_git.py::test_config PASSED [ 60%]
test/int/test_hashsplit.py::test_nonresident_page_regions PASSED [ 61%]
test/int/test_hashsplit.py::test_uncache_ours_upto PASSED [ 62%]
test/int/test_hashsplit.py::test_rolling_sums PASSED [ 63%]
test/int/test_hashsplit.py::test_fanout_behaviour PASSED [ 63%]
test/int/test_helpers.py::test_parse_num PASSED [ 64%]
test/int/test_helpers.py::test_detect_fakeroot PASSED [ 65%]
test/int/test_helpers.py::test_path_components PASSED [ 66%]
test/int/test_helpers.py::test_stripped_path_components PASSED [ 66%]
test/int/test_helpers.py::test_grafted_path_components PASSED [ 67%]
test/int/test_helpers.py::test_shstr PASSED [ 68%]
test/int/test_helpers.py::test_readpipe PASSED [ 69%]
test/int/test_helpers.py::test_batchpipe PASSED [ 69%]
test/int/test_helpers.py::test_atomically_replaced_file PASSED [ 70%]
test/int/test_helpers.py::test_utc_offset_str PASSED [ 71%]
test/int/test_helpers.py::test_valid_save_name PASSED [ 72%]
test/int/test_index.py::test_index_basic PASSED [ 72%]
test/int/test_index.py::test_index_writer PASSED [ 73%]
test/int/test_index.py::test_index_negative_timestamps PASSED [ 74%]
test/int/test_index.py::test_index_dirty PASSED [ 75%]
test/int/test_metadata.py::test_clean_up_archive_path PASSED [ 75%]
test/int/test_metadata.py::test_risky_path PASSED [ 76%]
test/int/test_metadata.py::test_clean_up_extract_path PASSED [ 77%]
test/int/test_metadata.py::test_metadata_method PASSED [ 78%]
test/int/test_metadata.py::test_from_path_error PASSED [ 78%]
test/int/test_metadata.py::test_apply_to_path_restricted_access PASSED [ 79%]
test/int/test_metadata.py::test_restore_over_existing_target PASSED [ 80%]
test/int/test_midx.py::test_missing_midx PASSED [ 81%]
test/int/test_options.py::test_optdict PASSED [ 81%]
test/int/test_options.py::test_invalid_optspec PASSED [ 82%]
test/int/test_options.py::test_options PASSED [ 83%]
test/int/test_resolve.py::test_local_resolve PASSED [ 84%]
test/int/test_resolve.py::test_remote_resolve PASSED [ 84%]
test/int/test_resolve.py::test_local_resolve_loop PASSED [ 85%]
test/int/test_resolve.py::test_remote_resolve_loop PASSED [ 86%]
test/int/test_shquote.py::test_shquote PASSED [ 87%]
test/int/test_vfs.py::test_default_modes PASSED [ 87%]
test/int/test_vfs.py::test_cache_behavior PASSED [ 88%]
test/int/test_vfs.py::test_item_mode PASSED [ 89%]
test/int/test_vfs.py::test_reverse_suffix_duplicates PASSED [ 90%]
test/int/test_vfs.py::test_misc PASSED [ 90%]
test/int/test_vfs.py::test_read_and_seek PASSED [ 91%]
test/int/test_vfs.py::test_contents_with_mismatched_bupm_git_ordering PASSED [ 92%]
test/int/test_vfs.py::test_duplicate_save_dates PASSED [ 93%]
test/int/test_vfs.py::test_item_read_write PASSED [ 93%]
test/int/test_vint.py::test_vuint PASSED [ 94%]
test/int/test_vint.py::test_vint PASSED [ 95%]
test/int/test_vint.py::test_bvec PASSED [ 96%]
test/int/test_vint.py::test_pack_and_unpack PASSED [ 96%]
test/int/test_xstat.py::test_fstime PASSED [ 97%]
test/int/test_xstat.py::test_bup_utimensat PASSED [ 98%]
test/int/test_xstat.py::test_bup_utimes PASSED [ 99%]
test/int/test_xstat.py::test_bup_lutimes PASSED [100%]

=================================== FAILURES ===================================
________________ /home/gdt/SOFTWARE/BUP/bup/test/ext/test-help _________________
Exit status: 1
Failures:
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-help:33 bup help save FAILED
----------------------------- Captured stdout call -----------------------------
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-help:6 pwd ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-help:7 wvmktempdir ok
Usage: bup [-?|--help] [-d BUP_DIR] [--debug] [--profile] <command> [options...]

Common commands:
fsck Check backup sets for damage and add redundancy information
ftp Browse backup sets using an ftp-like client
fuse Mount your backup sets as a filesystem
help Print detailed help for the given command
index Create or display the index of files to back up
on Backup a remote machine to the local one
restore Extract files from a backup set
save Save files into a backup set (note: run "bup index" first)
tag Tag commits for easier access
web Launch a web server to examine backup sets

Other available commands:
bloom memtest
cat-file meta
daemon midx
damage mux
drecurse on--server
features prune-older
gc random
get rm
import-duplicity server
import-rdiff-backup split
import-rsnapshot tick
init validate-object-links
join validate-ref-links
list-idx version
ls xstat
margin

See 'bup help COMMAND' for more information on a specific command.
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-help:18 exactly 2 arguments ok
Comparing:
99
--
99
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-help:18 '99' = '99' ok
Usage: bup [-?|--help] [-d BUP_DIR] [--debug] [--profile] <command> [options...]

Common commands:
fsck Check backup sets for damage and add redundancy information
ftp Browse backup sets using an ftp-like client
fuse Mount your backup sets as a filesystem
help Print detailed help for the given command
index Create or display the index of files to back up
on Backup a remote machine to the local one
restore Extract files from a backup set
save Save files into a backup set (note: run "bup index" first)
tag Tag commits for easier access
web Launch a web server to examine backup sets

Other available commands:
bloom memtest
cat-file meta
daemon midx
damage mux
drecurse on--server
features prune-older
gc random
get rm
import-duplicity server
import-rdiff-backup split
import-rsnapshot tick
init validate-object-links
join validate-ref-links
list-idx version
ls xstat
margin

See 'bup help COMMAND' for more information on a specific command.
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-help:22 exactly 2 arguments ok
Comparing:
99
--
99
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-help:22 '99' = '99' ok
man: unknown option -- l
Usage: man [-acw|-h] [-C cfg] [-M path] [-m path] [-S srch] [[-s] sect] name ...
Usage: man [-C file] -f command ...
Usage: man [-C file] -k keyword ...
Usage: man -p
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-help:33 bup help save FAILED
called from /home/gdt/SOFTWARE/BUP/bup/test/ext/test-help:33 WVPASS bup help save
________________ /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc _________________
Exit status: 1
Failures:
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:153 '' = 'a/ c/' FAILED
----------------------------- Captured stdout call -----------------------------
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:8 pwd ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:9 wvmktempdir ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:18 cd /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-YESoFcW ok

Testing "init" in /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:
hint: Using 'master' as the name for the initial branch. This default branch name
hint: will change to "main" in Git 3.0. To configure the initial branch name
hint: to use in all of your new repositories, which will suppress this warning,
hint: call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
hint:
hint: Disable this message with "git config set advice.defaultBranchName false"
Initialized empty Git repository in /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-YESoFcW/bup/
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:21 bup init ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:25 force-delete bupdata.tmp ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:26 mkdir bupdata.tmp ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:27 touch bupdata.tmp/a ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:28 bup random 128k ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:29 mkdir bupdata.tmp/d bupdata.tmp/d/e ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:30 bup random 512 ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:31 touch bupdata.tmp/d/z ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:32 touch bupdata.tmp/d/z ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:33 bup index bupdata.tmp ok
3059a9b5a7859926b5005ef82ccf3c3f8a22126d
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:34 bup save -t bupdata.tmp ok

Testing "bloom" in /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:
bloom: bloom file: objects/pack/bup.bloom
bloom: checking objects/pack/pack-f7d3ccc*.idx
All tests passed.
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:38 bup bloom -c /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-YESoFcW/bup/objects/pack/pack-f7d3ccc6cb4a3896e75c7daa45fc9c275bcce3c7.idx ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:39 rm /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-YESoFcW/bup/objects/pack/bup.bloom ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:40 bup bloom -k 4 ok
bloom: bloom file: objects/pack/bup.bloom
bloom: checking objects/pack/pack-f7d3ccc*.idx
All tests passed.
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:41 bup bloom -c /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-YESoFcW/bup/objects/pack/pack-f7d3ccc6cb4a3896e75c7daa45fc9c275bcce3c7.idx ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:42 bup bloom -d /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-YESoFcW/bup/objects/pack --ruin --force ok
bloom: bloom file: objects/pack/bup.bloom
bloom: checking objects/pack/pack-f7d3ccc*.idx
bloom: ERROR: object 05c8d2275ffed38663a170b35c07250e1949eb4d missing
bloom: ERROR: object 0bb2f8ed6f673d26a3576a7098a7c443e820d059 missing
bloom: ERROR: object 1d7f47dce1d6a91c527d9c613f7a9ba7e4c0003b missing
bloom: ERROR: object 22933708730340427ec03cdd2bed426f85246d26 missing
bloom: ERROR: object 24febd32bf5623bd42d9cd2f66d583df689c8541 missing
bloom: ERROR: object 281113839badfe79d766b0c1af63438aa602f796 missing
bloom: ERROR: object 283bbd8452e38af2d5ceb796bcc494b00e96ecbc missing
bloom: ERROR: object 2c329be3c5a82e12da0a94f3d4bc915da7fe10c0 missing
bloom: ERROR: object 2e6eda190f111b6555eaaba9d60448a1e2967533 missing
bloom: ERROR: object 3059a9b5a7859926b5005ef82ccf3c3f8a22126d missing
bloom: ERROR: object 364a8b43042f9fdcd621054e6cacd2e69cb2dedb missing
bloom: ERROR: object 36b846c09b9abefb9a3d62151f1d248703bb4f79 missing
bloom: ERROR: object 3f373a8a2d3f040b8a1c4101525ed0b56eeb332a missing
bloom: ERROR: object 4500114e5570fbae05e6cae001328fdbebfe78b8 missing
bloom: ERROR: object 454e93cc2fde2d7b1bec70f7ba4e016e4a25575f missing
bloom: ERROR: object 4cb070efa216ec1290abb7286153f3a7f58b5eea missing
bloom: ERROR: object 6bed77b4bd13f019b8c8a5175cee4a0c19bf8876 missing
bloom: ERROR: object 75e663eb11107aa0e5b34e2438f222e4c3afce3a missing
bloom: ERROR: object 765f2b8404f54ce31b00430a6d081fe0a3b4ccd2 missing
bloom: ERROR: object 832658bf90ed68dbc77e62a3fcfae35a4e140acb missing
bloom: ERROR: object 87360c06cbb41ca80166106ddd3f00ba82959c6b missing
bloom: ERROR: object 88e10c52ce3465b4c66fe4bfa239f22ffaa2c6db missing
bloom: ERROR: object 901347230e9fb5eca9bc99eab8da3d6a5f8e402d missing
bloom: ERROR: object 90852950a51c52363c14d9748644e8e2d6fa330c missing
bloom: ERROR: object 94ae503c86912a60bdc0ceee79855df03d8a6265 missing
bloom: ERROR: object 99611c0002390e1e8b3e35e0ce88a4fcda7cbfe0 missing
bloom: ERROR: object 999b67aa8a1d4cae6fd364630478f76723807536 missing
bloom: ERROR: object 99c281761a06b9c0280c6c97c1150a10db7426b7 missing
bloom: ERROR: object 9d44370566170e7d41642a9d93fef1920a8f1cae missing
bloom: ERROR: object b790b17e0e648b955e23bcda25f25871c8ba9f4a missing
bloom: ERROR: object b9151ffb24bb148558718ee2e09c8026da8a5173 missing
bloom: ERROR: object bc51001978dc609ebaeeb54c8aa24bbe1467fc8b missing
bloom: ERROR: object c668b4e516e2a19247a8653271f02ccef09c60f0 missing
bloom: ERROR: object d0274696301eb616ffd37a76e4baa5d2ae253dbb missing
bloom: ERROR: object d0902100bc200146a6c1d7b7ef5595fc869e92eb missing
bloom: ERROR: object d601182c33fae51102a28ae49afdaa841d53b6ca missing
bloom: ERROR: object d8e2083c2ae9539cc42e276a2219532a887587a1 missing
bloom: ERROR: object e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 missing
bloom: ERROR: object e72ee113e59603586b118ff8f799f39474b1d6d7 missing
bloom: ERROR: object e9b4f44a5881a4618ee8ecdc4ff7df177e47685f missing
bloom: ERROR: object ed461bdcd643dd9b5cf9e36b04448921fda4844e missing
bloom: ERROR: object eee049b98904b54bd95af76ba5e5e6ca3a9f8358 missing
bloom: ERROR: object ef11e9397d39a4bce7b76c968aff4818c5b82af2 missing
bloom: ERROR: object f6bccda4199d57d22463f84ad708edcc20528730 missing
bloom: ERROR: object f84a31aca9563b7e65918236cbb435857567762e missing
bloom: ERROR: object fa85758990e28e4af9f2a8bd6aacf46ee557957b missing
bloom: ERROR: object fae8ee52aa51e88addad062a51748e70ae5decd1 missing
bloom: ERROR: object fdecd991956170b99b93d4ea2c1368a0994043a5 missing
bloom: ERROR: object fe610cf34dc1e6ebf2c549c6186900eaa3c25afd missing
WARNING: 49 errors encountered during bloom.
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:43 NOT(bup bloom -c /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-YESoFcW/bup/objects/pack/pack-f7d3ccc6cb4a3896e75c7daa45fc9c275bcce3c7.idx) ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:44 bup bloom --force -k 5 ok
bloom: bloom file: objects/pack/bup.bloom
bloom: checking objects/pack/pack-f7d3ccc*.idx
All tests passed.
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:45 bup bloom -c /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-YESoFcW/bup/objects/pack/pack-f7d3ccc6cb4a3896e75c7daa45fc9c275bcce3c7.idx ok

Testing "memtest" in /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:
RSS MajFlt user sys ms
0 48 1 0 0 0
100 48 1 0 0 0
bloom: 100 objects searched in 126 steps: avg 1.260 steps/object
Total time: 0.001s
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:49 bup memtest -c1 -n100 ok
RSS MajFlt user sys ms
0 48 1 0 0 0
100 48 1 0 0 0
bloom: 1 objects searched in 5 steps: avg 5.000 steps/object
idx: 100 objects searched in 216 steps: avg 2.160 steps/object
Total time: 0.001s
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:50 bup memtest -c1 -n100 --existing ok

Testing "save/git-fsck" in /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:55 cd /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-YESoFcW/bup ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:58 bup random 4k ok
80c5fc2d6acff2bfdf230d1629db57b4cc96f305
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:58 bup split -b ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:59 cd /home/gdt/SOFTWARE/BUP/bup/test/sampledata ok
/home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-YESoFcW/bupdata.tmp/
A /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-YESoFcW/
A /home/gdt/SOFTWARE/BUP/bup/test/tmp/
A /home/gdt/SOFTWARE/BUP/bup/test/
A /home/gdt/SOFTWARE/BUP/bup/
A /home/gdt/SOFTWARE/BUP/
A /home/gdt/SOFTWARE/
A /home/gdt/
A /home/
A /
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:59 bup save -vvn main / ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:64 NOT(egrep -v dangling (commit|tree|blob)) ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:64 tee -a /dev/stderr ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:64 wc -l ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:65 [ 0 -eq 0 ] ok

Testing "pack name and idx same as git" in /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:72 cd /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-YESoFcW/bup/objects/pack/ ok
pack-4b2662bca0919e8db124b1325244b057108f6fc8.pack
pack-6e2daff88a987b68166dac8144fc8de7d0e9db41.pack
pack-f7d3ccc6cb4a3896e75c7daa45fc9c275bcce3c7.pack
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:73 ls pack-4b2662bca0919e8db124b1325244b057108f6fc8.pack pack-6e2daff88a987b68166dac8144fc8de7d0e9db41.pack pack-f7d3ccc6cb4a3896e75c7daa45fc9c275bcce3c7.pack ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:78 exactly 2 arguments ok
Comparing:
pack-4b2662bca0919e8db124b1325244b057108f6fc8.pack
--
pack-4b2662bca0919e8db124b1325244b057108f6fc8.pack
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:78 'pack-4b2662bca0919e8db124b1325244b057108f6fc8.pack' = 'pack-4b2662bca0919e8db124b1325244b057108f6fc8.pack' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:81 exactly 2 arguments ok
Comparing:
0b702e93746f71b54313230c3a4852c16dfd518f
--
0b702e93746f71b54313230c3a4852c16dfd518f
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:81 '0b702e93746f71b54313230c3a4852c16dfd518f' = '0b702e93746f71b54313230c3a4852c16dfd518f' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:78 exactly 2 arguments ok
Comparing:
pack-6e2daff88a987b68166dac8144fc8de7d0e9db41.pack
--
pack-6e2daff88a987b68166dac8144fc8de7d0e9db41.pack
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:78 'pack-6e2daff88a987b68166dac8144fc8de7d0e9db41.pack' = 'pack-6e2daff88a987b68166dac8144fc8de7d0e9db41.pack' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:81 exactly 2 arguments ok
Comparing:
0c88a0bbda574104e4a87aea02c7addd91e6ddb0
--
0c88a0bbda574104e4a87aea02c7addd91e6ddb0
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:81 '0c88a0bbda574104e4a87aea02c7addd91e6ddb0' = '0c88a0bbda574104e4a87aea02c7addd91e6ddb0' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:78 exactly 2 arguments ok
Comparing:
pack-f7d3ccc6cb4a3896e75c7daa45fc9c275bcce3c7.pack
--
pack-f7d3ccc6cb4a3896e75c7daa45fc9c275bcce3c7.pack
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:78 'pack-f7d3ccc6cb4a3896e75c7daa45fc9c275bcce3c7.pack' = 'pack-f7d3ccc6cb4a3896e75c7daa45fc9c275bcce3c7.pack' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:81 exactly 2 arguments ok
Comparing:
4e7de4292d6f78ce03ae26b81b2a646a3ec3566e
--
4e7de4292d6f78ce03ae26b81b2a646a3ec3566e
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:81 '4e7de4292d6f78ce03ae26b81b2a646a3ec3566e' = '4e7de4292d6f78ce03ae26b81b2a646a3ec3566e' ok

Testing "ftp" in /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:87 bup ftp cat /main/latest//home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-YESoFcW/bupdata.tmp/b ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:88 bup ftp cat /main/latest//home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-YESoFcW/bupdata.tmp/f ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:89 bup ftp cat /main/latest//home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-YESoFcW/bupdata.tmp/f cat /main/latest//home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-YESoFcW/bupdata.tmp/f ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:90 bup ftp cat /main/latest//home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-YESoFcW/bupdata.tmp/a ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:91 exactly 2 arguments ok
Comparing:
4cc8f8579959018aefa169428ae64674e2a30535
--
4cc8f8579959018aefa169428ae64674e2a30535
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:91 '4cc8f8579959018aefa169428ae64674e2a30535' = '4cc8f8579959018aefa169428ae64674e2a30535' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:92 exactly 2 arguments ok
Comparing:
70b04310f07664befbbf11cb4b89b8e3751f7817
--
70b04310f07664befbbf11cb4b89b8e3751f7817
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:92 '70b04310f07664befbbf11cb4b89b8e3751f7817' = '70b04310f07664befbbf11cb4b89b8e3751f7817' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:93 exactly 2 arguments ok
Comparing:
28d307696ddb4a92342db63dbb2743a5662dd41f
--
28d307696ddb4a92342db63dbb2743a5662dd41f
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:93 '28d307696ddb4a92342db63dbb2743a5662dd41f' = '28d307696ddb4a92342db63dbb2743a5662dd41f' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:94 exactly 2 arguments ok
Comparing:
da39a3ee5e6b4b0d3255bfef95601890afd80709
--
da39a3ee5e6b4b0d3255bfef95601890afd80709
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:94 'da39a3ee5e6b4b0d3255bfef95601890afd80709' = 'da39a3ee5e6b4b0d3255bfef95601890afd80709' ok

Testing "tag" in /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:100 exactly 2 arguments ok
Comparing:

--

! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:100 '' = '' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:101 bup tag v0.1 main ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:102 exactly 2 arguments ok
Comparing:
v0.1
--
v0.1
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:102 'v0.1' = 'v0.1' ok
bup: error: tag 'v0.1' already exists
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:103 NOT(bup tag v0.1 main) ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:104 bup tag -f v0.1 main ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:105 bup tag -d v0.1 ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:106 bup tag -f -d v0.1 ok
error: tag 'v0.1' doesn't exist
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:107 NOT(bup tag -d v0.1) ok

Testing "indexfile" in /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:113 rm -f tmpindexfile.tmp ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:114 force-delete indexfile.tmp ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:115 mkdir indexfile.tmp ok
hint: Using 'master' as the name for the initial branch. This default branch name
hint: will change to "main" in Git 3.0. To configure the initial branch name
hint: to use in all of your new repositories, which will suppress this warning,
hint: call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
hint:
hint: Disable this message with "git config set advice.defaultBranchName false"
Initialized empty Git repository in /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-YESoFcW/indexfile.tmp/.bup/
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:117 bup init ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:118 touch indexfile.tmp/a ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:119 touch indexfile.tmp/b ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:120 mkdir indexfile.tmp/c ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:121 bup index -ux indexfile.tmp ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:122 bup save --strip -n bupdir indexfile.tmp ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:123 exactly 2 arguments ok
Comparing:
a
b
c/
--
a
b
c/
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:123 'a b c/' = 'a b c/' ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:126 bup index -f tmpindexfile.tmp --exclude=indexfile.tmp/c -ux indexfile.tmp ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:127 bup save --strip -n indexfile -f tmpindexfile.tmp indexfile.tmp ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:128 exactly 2 arguments ok
Comparing:
a
b
--
a
b
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:128 'a b' = 'a b' ok

Testing "import-rsnapshot" in /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:137 rm -rf rsnapshot ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:138 mkdir rsnapshot ok
hint: Using 'master' as the name for the initial branch. This default branch name
hint: will change to "main" in Git 3.0. To configure the initial branch name
hint: to use in all of your new repositories, which will suppress this warning,
hint: call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
hint:
hint: Disable this message with "git config set advice.defaultBranchName false"
Initialized empty Git repository in /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-YESoFcW/rsnapshot/.bup/
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:139 bup init ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:140 mkdir -p rsnapshot/hourly.0/buptest/a ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:141 touch rsnapshot/hourly.0/buptest/a/b ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:142 mkdir -p rsnapshot/hourly.0/buptest/c/d ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:143 touch rsnapshot/hourly.0/buptest/c/d/e ok
snapshot='hourly.0'
snapshot='hourly.0' branch='buptest'
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:144 bup import-rsnapshot rsnapshot/ ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:145 exactly 2 arguments ok
Comparing:
a/
c/
--
a/
c/
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:145 'a/ c/' = 'a/ c/' ok
/usr/bin/script
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:150 rm -rf /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-YESoFcW/rsnapshot/.bup ok
hint: Using 'master' as the name for the initial branch. This default branch name
hint: will change to "main" in Git 3.0. To configure the initial branch name
hint: to use in all of your new repositories, which will suppress this warning,
hint: call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
hint:
hint: Disable this message with "git config set advice.defaultBranchName false"
Initialized empty Git repository in /home/gdt/SOFTWARE/BUP/bup/test/tmp/test-misc-YESoFcW/rsnapshot/.bup/
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:151 bup init ok
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:152 with-tty /home/gdt/SOFTWARE/BUP/bup/bup import-rsnapshot rsnapshot/ ok
snapshot='hourly.0'
snapshot='hourly.0' branch='buptest'
error: cannot access '/buptest' in 'buptest/latest/'
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:153 exactly 2 arguments ok
Comparing:

--
a/
c/
! /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:153 '' = 'a/ c/' FAILED
called from /home/gdt/SOFTWARE/BUP/bup/test/ext/test-misc:153 WVPASSEQ a/
c/
Indexing: 0 (0 paths/s) Indexing: 6, done (8264 paths/s).
Reading index: 0 Reading index: 6, done.
Saving: 0.00% (0/0k, 0/6 files) Saving: 69.23% (0/0k, 6/6 files), done.
Saving: 1246.15% (0/0k, 6/6 files) bloom: counting: 0 bloom: creating from 1 file (10 objects). bloom: writing 0.00% (0/10 objects)
=========================== short test summary info ============================
FAILED test/ext/test-help:: - Exit status: 1
FAILED test/ext/test-misc:: - Exit status: 1
====== 2 failed, 125 passed, 6 skipped, 1 deselected in 749.93s (0:12:29) ======
gmake: *** [GNUmakefile:257: test] Error 1

Rob Browning

unread,
Jan 18, 2026, 7:59:51 PM (14 days ago) Jan 18
to Greg Troxel, bup-...@googlegroups.com
Greg Troxel <g...@lexort.com> writes:

> Testing on netbsd-9, the tests hung. I suspect script issues; haven't
> started to figure it out.
>
> On netbsd-10, I got two failures. One is 'man -l' and the other is
> script exiting prematurely (an OS bug).

For "man -l" 42aec47f1b5d54146e1fe35d9b88d1d231cfad4a. Not sure yet
whether I want to add that to 0.33.x too.

Rob Browning

unread,
Jan 18, 2026, 8:14:21 PM (14 days ago) Jan 18
to bup-...@googlegroups.com
MANPATH is more portable, e.g. to freebsd. Create self-referential
manN symlinks in Documentation to support the lookups.

Thanks to Greg Troxel for reporting the issue.

Signed-off-by: Rob Browning <r...@defaultvalue.org>
Tested-by: Rob Browning <r...@defaultvalue.org>
(cherry picked from commit 42aec47f1b5d54146e1fe35d9b88d1d231cfad4a)
---

Decided to go ahead; pushed to 0.33.x.

Documentation/man1 | 1 +
Documentation/man2 | 1 +
Documentation/man3 | 1 +
Documentation/man4 | 1 +
Documentation/man5 | 1 +
Documentation/man6 | 1 +
Documentation/man7 | 1 +
Documentation/man8 | 1 +
Documentation/man9 | 1 +
lib/bup/cmd/help.py | 12 +++++-------
10 files changed, 14 insertions(+), 7 deletions(-)
create mode 120000 Documentation/man1
create mode 120000 Documentation/man2
create mode 120000 Documentation/man3
create mode 120000 Documentation/man4
create mode 120000 Documentation/man5
create mode 120000 Documentation/man6
create mode 120000 Documentation/man7
create mode 120000 Documentation/man8
create mode 120000 Documentation/man9

diff --git a/Documentation/man1 b/Documentation/man1
new file mode 120000
index 00000000..945c9b46
--- /dev/null
+++ b/Documentation/man1
@@ -0,0 +1 @@
+.
\ No newline at end of file
diff --git a/Documentation/man2 b/Documentation/man2
new file mode 120000
index 00000000..945c9b46
--- /dev/null
+++ b/Documentation/man2
@@ -0,0 +1 @@
+.
\ No newline at end of file
diff --git a/Documentation/man3 b/Documentation/man3
new file mode 120000
index 00000000..945c9b46
--- /dev/null
+++ b/Documentation/man3
@@ -0,0 +1 @@
+.
\ No newline at end of file
diff --git a/Documentation/man4 b/Documentation/man4
new file mode 120000
index 00000000..945c9b46
--- /dev/null
+++ b/Documentation/man4
@@ -0,0 +1 @@
+.
\ No newline at end of file
diff --git a/Documentation/man5 b/Documentation/man5
new file mode 120000
index 00000000..945c9b46
--- /dev/null
+++ b/Documentation/man5
@@ -0,0 +1 @@
+.
\ No newline at end of file
diff --git a/Documentation/man6 b/Documentation/man6
new file mode 120000
index 00000000..945c9b46
--- /dev/null
+++ b/Documentation/man6
@@ -0,0 +1 @@
+.
\ No newline at end of file
diff --git a/Documentation/man7 b/Documentation/man7
new file mode 120000
index 00000000..945c9b46
--- /dev/null
+++ b/Documentation/man7
@@ -0,0 +1 @@
+.
\ No newline at end of file
diff --git a/Documentation/man8 b/Documentation/man8
new file mode 120000
index 00000000..945c9b46
--- /dev/null
+++ b/Documentation/man8
@@ -0,0 +1 @@
+.
\ No newline at end of file
diff --git a/Documentation/man9 b/Documentation/man9
new file mode 120000
index 00000000..945c9b46
--- /dev/null
+++ b/Documentation/man9
@@ -0,0 +1 @@
+.
\ No newline at end of file
diff --git a/lib/bup/cmd/help.py b/lib/bup/cmd/help.py
index 10b3d361..60d46c8c 100644
--- a/lib/bup/cmd/help.py
+++ b/lib/bup/cmd/help.py
@@ -19,14 +19,12 @@ def main(argv):
os.execvp(path.exe(), [path.exe()])
elif len(extra) == 1:
docname = (extra[0]=='bup' and b'bup' or (b'bup-%s' % argv_bytes(extra[0])))
- manpath = os.path.join(path.exedir(),
- b'../../Documentation/' + docname + b'.[1-9]')
- g = glob.glob(manpath)
+ manpath = os.path.join(path.exedir(), b'../../Documentation/')
+ dev_page = glob.glob(os.path.join(manpath, docname + b'.[1-9]'))
try:
- if g:
- os.execvp('man', ['man', '-l', g[0]])
- else:
- os.execvp('man', ['man', docname])
+ if dev_page:
+ os.environb[b'MANPATH'] = manpath
+ os.execvp(b'man', [b'man', docname])
except OSError as e:
sys.stderr.write('Unable to run man command: %s\n' % e)
sys.exit(1)
--
2.47.3

Reply all
Reply to author
Forward
0 new messages