tavianator/bfs

bfs/D_opt test failing

Closed this issue · 3 comments

For context, I was about to update the bfs package for Fedora Linux, and the build failed. I was using mock, which creates an isolated environment for package building. The reason for the failure was in the %check section, where a test had failed. Surprisingly, all tests passed outside the isolated environment on my machine. I will comment below on which test failed and what I could find about it.

I decided to rebuild again, but without cleaning the chroot so I could see the results of the bfs/D_opt test better, which generated this diff:

--- /builddir/build/BUILD/bfs-3.1.1/tests/bfs/D_opt.out 2024-02-16 13:43:44.000000000 +0000
+++ /tmp/bfs.JW170EwOhE/bfs/D_opt.out   2024-02-29 01:47:48.515164831 +0000
@@ -1,3 +1,4 @@
+basic
 basic/a
 basic/b
 basic/c
Here is the output of 'tests.sh --verbose bfs/D_opt'
[  0%] bfs/D_opt
/builddir/build/BUILD/bfs-3.1.1/bin/bfs -D opt -nohidden -not \( -type b -o -type c \) -links -5 -links -10 -not -hidden basic
bfs: -D opt: /builddir/build/BUILD/bfs-3.1.1/bin/bfs -P -j4 -S bfs -D opt basic -nocolor
bfs: -D opt: (-exclude
bfs: -D opt:   (-or
bfs: -D opt:     (-hidden)))
bfs: -D opt: (-and
bfs: -D opt:   (-and
bfs: -D opt:     (-and
bfs: -D opt:       (-and
bfs: -D opt:         (-and
bfs: -D opt:           (-and
bfs: -D opt:             (-D opt)
bfs: -D opt:             (-nohidden))
bfs: -D opt:           (-not
bfs: -D opt:             (-o
bfs: -D opt:               (-type b)
bfs: -D opt:               (-type c))))
bfs: -D opt:         (-links -5))
bfs: -D opt:       (-links -10))
bfs: -D opt:     (-not
bfs: -D opt:       (-hidden)))
bfs: -D opt:   (-print))
bfs: -D opt: pass 0:
bfs: -D opt: ├─╮ annotate()
bfs: -D opt: │ ├─╮ (-or (-hidden))
bfs: -D opt: │ │ ├─╮ (-hidden)
bfs: -D opt: │ │ ├─╯ (-hidden)
bfs: -D opt: │ ├─╯ (-or (-hidden))
bfs: -D opt: ├─╯ 
bfs: -D opt: pass 1:
bfs: -D opt: ├─╮ canonicalize()
bfs: -D opt: │ ├─╮ (-or (-hidden))
bfs: -D opt: │ │ ├─◯ (-hidden)
bfs: -D opt: │ │ ├─◯ (-hidden)
bfs: -D opt: │ ├─╯ (-or (-hidden))
bfs: -D opt: ├─╯ 
bfs: -D opt: ├─╮ data_flow()
bfs: -D opt: │ ├─╮ (-or (-hidden))
bfs: -D opt: │ │ │ before: ⊤
bfs: -D opt: │ │ ├─╮ (-hidden)
bfs: -D opt: │ │ │ │ before: ⊤
bfs: -D opt: │ │ │ │ after true:
bfs: -D opt: │ │ │ ├─◯ -hidden: true
bfs: -D opt: │ │ │ │ after false:
bfs: -D opt: │ │ │ ├─◯ -hidden: false
bfs: -D opt: │ │ ├─╯ (-hidden)
bfs: -D opt: │ │ │ after true:
bfs: -D opt: │ │ ├─◯ -hidden: true
bfs: -D opt: │ │ │ after false:
bfs: -D opt: │ │ ├─◯ -hidden: false
bfs: -D opt: │ ├─╯ (-or (-hidden))
bfs: -D opt: ├─╯ 
bfs: -D opt: ├─╮ simplify()
bfs: -D opt: │ ├─╮ (-or (-hidden))
bfs: -D opt: │ │ ├─◯ (-hidden)
bfs: -D opt: │ │ ├─◯ (-hidden)
bfs: -D opt: │ │ │ unary identity
bfs: -D opt: │ ├─╯ (-hidden)
bfs: -D opt: ├─╯ 
bfs: -D opt: pass 0:
bfs: -D opt: ├─╮ annotate()
bfs: -D opt: │ ├─╮ (-and (-and (...) (...)) (-print))
bfs: -D opt: │ │ ├─╮ (-and (-and (...) (...)) (-not (...)))
bfs: -D opt: │ │ │ ├─╮ (-and (-and (...) (...)) (-links -10))
bfs: -D opt: │ │ │ │ ├─╮ (-and (-and (...) (...)) (-links -5))
bfs: -D opt: │ │ │ │ │ ├─╮ (-and (-and (...) (...)) (-not (...)))
bfs: -D opt: │ │ │ │ │ │ ├─╮ (-and (-D opt) (-nohidden))
bfs: -D opt: │ │ │ │ │ │ │ ├─╮ (-D opt)
bfs: -D opt: │ │ │ │ │ │ │ ├─╯ (-D opt)
bfs: -D opt: │ │ │ │ │ │ │ ├─╮ (-nohidden)
bfs: -D opt: │ │ │ │ │ │ │ ├─╯ (-nohidden)
bfs: -D opt: │ │ │ │ │ │ ├─╯ (-and (-D opt) (-nohidden))
bfs: -D opt: │ │ │ │ │ │ ├─╮ (-not (-o (...) (...)))
bfs: -D opt: │ │ │ │ │ │ │ ├─╮ (-o (-type b) (-type c))
bfs: -D opt: │ │ │ │ │ │ │ │ ├─╮ (-type b)
bfs: -D opt: │ │ │ │ │ │ │ │ ├─╯ (-type b)
bfs: -D opt: │ │ │ │ │ │ │ │ ├─╮ (-type c)
bfs: -D opt: │ │ │ │ │ │ │ │ ├─╯ (-type c)
bfs: -D opt: │ │ │ │ │ │ │ ├─╯ (-o (-type b) (-type c))
bfs: -D opt: │ │ │ │ │ │ ├─╯ (-not (-o (...) (...)))
bfs: -D opt: │ │ │ │ │ ├─╯ (-and (-and (...) (...)) (-not (...)))
bfs: -D opt: │ │ │ │ │ ├─╮ (-links -5)
bfs: -D opt: │ │ │ │ │ ├─╯ (-links -5)
bfs: -D opt: │ │ │ │ ├─╯ (-and (-and (...) (...)) (-links -5))
bfs: -D opt: │ │ │ │ ├─╮ (-links -10)
bfs: -D opt: │ │ │ │ ├─╯ (-links -10)
bfs: -D opt: │ │ │ ├─╯ (-and (-and (...) (...)) (-links -10))
bfs: -D opt: │ │ │ ├─╮ (-not (-hidden))
bfs: -D opt: │ │ │ │ ├─╮ (-hidden)
bfs: -D opt: │ │ │ │ ├─╯ (-hidden)
bfs: -D opt: │ │ │ ├─╯ (-not (-hidden))
bfs: -D opt: │ │ ├─╯ (-and (-and (...) (...)) (-not (...)))
bfs: -D opt: │ │ ├─╮ (-print)
bfs: -D opt: │ │ ├─╯ (-print)
bfs: -D opt: │ ├─╯ (-and (-and (...) (...)) (-print))
bfs: -D opt: ├─╯ 
bfs: -D opt: pass 1:
bfs: -D opt: ├─╮ canonicalize()
bfs: -D opt: │ ├─╮ (-and (-and (...) (...)) (-print))
bfs: -D opt: │ │ ├─╮ (-and (-and (...) (...)) (-not (...)))
bfs: -D opt: │ │ │ ├─╮ (-and (-and (...) (...)) (-links -10))
bfs: -D opt: │ │ │ │ ├─╮ (-and (-and (...) (...)) (-links -5))
bfs: -D opt: │ │ │ │ │ ├─╮ (-and (-and (...) (...)) (-not (...)))
bfs: -D opt: │ │ │ │ │ │ ├─╮ (-and (-D opt) (-nohidden))
bfs: -D opt: │ │ │ │ │ │ │ ├─◯ (-D opt)
bfs: -D opt: │ │ │ │ │ │ │ ├─◯ (-nohidden)
bfs: -D opt: │ │ │ │ │ │ │ ├─◯ (-D opt)
bfs: -D opt: │ │ │ │ │ │ │ ├─◯ (-nohidden)
bfs: -D opt: │ │ │ │ │ │ ├─╯ (-and (-D opt) (-nohidden))
bfs: -D opt: │ │ │ │ │ │ ├─╮ (-not (-o (...) (...)))
bfs: -D opt: │ │ │ │ │ │ │ ├─╮ (-o (-type b) (-type c))
bfs: -D opt: │ │ │ │ │ │ │ │ ├─◯ (-type b)
bfs: -D opt: │ │ │ │ │ │ │ │ ├─◯ (-type c)
bfs: -D opt: │ │ │ │ │ │ │ │ ├─◯ (-type b)
bfs: -D opt: │ │ │ │ │ │ │ │ ├─◯ (-type c)
bfs: -D opt: │ │ │ │ │ │ │ ├─╯ (-o (-type b) (-type c))
bfs: -D opt: │ │ │ │ │ │ │ │ De Morgan's laws
bfs: -D opt: │ │ │ │ │ │ │ ├─╮ (-o (-type b) (-type c))
bfs: -D opt: │ │ │ │ │ │ │ │ ├─╮ (-type b)
bfs: -D opt: │ │ │ │ │ │ │ │ ├─╯ (-not (-type b))
bfs: -D opt: │ │ │ │ │ │ │ │ ├─╮ (-type c)
bfs: -D opt: │ │ │ │ │ │ │ │ ├─╯ (-not (-type c))
bfs: -D opt: │ │ │ │ │ │ │ ├─╯ (-and (-not (...)) (-not (...)))
bfs: -D opt: │ │ │ │ │ │ ├─╯ (-and (-not (...)) (-not (...)))
bfs: -D opt: │ │ │ │ │ │ ├─╮ (-and (-D opt) (-nohidden))
bfs: -D opt: │ │ │ │ │ │ │ │ associativity
bfs: -D opt: │ │ │ │ │ │ ├─╯ (-D opt) (-nohidden)
bfs: -D opt: │ │ │ │ │ │ ├─╮ (-and (-not (...)) (-not (...)))
bfs: -D opt: │ │ │ │ │ │ │ │ associativity
bfs: -D opt: │ │ │ │ │ │ ├─╯ (-not (-type b)) (-not (-type c))
bfs: -D opt: │ │ │ │ │ ├─╯ (-and (-D opt) (-nohidden) ...)
bfs: -D opt: │ │ │ │ │ ├─◯ (-links -5)
bfs: -D opt: │ │ │ │ │ ├─╮ (-and (-D opt) (-nohidden) ...)
bfs: -D opt: │ │ │ │ │ │ │ associativity
bfs: -D opt: │ │ │ │ │ ├─╯ (-D opt) ... (-not (-type c))
bfs: -D opt: │ │ │ │ │ ├─◯ (-links -5)
bfs: -D opt: │ │ │ │ ├─╯ (-and (-D opt) (-nohidden) ...)
bfs: -D opt: │ │ │ │ ├─◯ (-links -10)
bfs: -D opt: │ │ │ │ ├─╮ (-and (-D opt) (-nohidden) ...)
bfs: -D opt: │ │ │ │ │ │ associativity
bfs: -D opt: │ │ │ │ ├─╯ (-D opt) ... (-links -5)
bfs: -D opt: │ │ │ │ ├─◯ (-links -10)
bfs: -D opt: │ │ │ ├─╯ (-and (-D opt) (-nohidden) ...)
bfs: -D opt: │ │ │ ├─╮ (-not (-hidden))
bfs: -D opt: │ │ │ │ ├─◯ (-hidden)
bfs: -D opt: │ │ │ ├─╯ (-not (-hidden))
bfs: -D opt: │ │ │ ├─╮ (-and (-D opt) (-nohidden) ...)
bfs: -D opt: │ │ │ │ │ associativity
bfs: -D opt: │ │ │ ├─╯ (-D opt) ... (-links -10)
bfs: -D opt: │ │ │ ├─◯ (-not (-hidden))
bfs: -D opt: │ │ ├─╯ (-and (-D opt) (-nohidden) ...)
bfs: -D opt: │ │ ├─◯ (-print)
bfs: -D opt: │ │ ├─╮ (-and (-D opt) (-nohidden) ...)
bfs: -D opt: │ │ │ │ associativity
bfs: -D opt: │ │ ├─╯ (-D opt) ... (-not (-hidden))
bfs: -D opt: │ │ ├─◯ (-print)
bfs: -D opt: │ ├─╯ (-and (-D opt) (-nohidden) ...)
bfs: -D opt: ├─╯ 
bfs: -D opt: ├─╮ data_flow()
bfs: -D opt: │ ├─╮ (-and (-D opt) (-nohidden) ...)
bfs: -D opt: │ │ │ before: ⊤
bfs: -D opt: │ │ ├─╮ (-D opt)
bfs: -D opt: │ │ │ │ before: ⊤
bfs: -D opt: │ │ │ │ after true: ⊤
bfs: -D opt: │ │ │ │ after false: ⊥
bfs: -D opt: │ │ ├─╯ (-D opt)
bfs: -D opt: │ │ ├─╮ (-nohidden)
bfs: -D opt: │ │ │ │ before: ⊤
bfs: -D opt: │ │ │ │ after true: ⊤
bfs: -D opt: │ │ │ │ after false: ⊥
bfs: -D opt: │ │ ├─╯ (-nohidden)
bfs: -D opt: │ │ ├─╮ (-not (-type b))
bfs: -D opt: │ │ │ │ before: ⊤
bfs: -D opt: │ │ │ ├─╮ (-type b)
bfs: -D opt: │ │ │ │ │ before: ⊤
bfs: -D opt: │ │ │ │ │ after true:
bfs: -D opt: │ │ │ │ ├─◯ -type:  0x2
bfs: -D opt: │ │ │ │ │ after false:
bfs: -D opt: │ │ │ │ ├─◯ -type: ~0x2
bfs: -D opt: │ │ │ ├─╯ (-type b)
bfs: -D opt: │ │ │ │ after true:
bfs: -D opt: │ │ │ ├─◯ -type: ~0x2
bfs: -D opt: │ │ │ │ after false:
bfs: -D opt: │ │ │ ├─◯ -type:  0x2
bfs: -D opt: │ │ ├─╯ (-not (-type b))
bfs: -D opt: │ │ ├─╮ (-not (-type c))
bfs: -D opt: │ │ │ │ before:
bfs: -D opt: │ │ │ ├─◯ -type: ~0x2
bfs: -D opt: │ │ │ ├─╮ (-type c)
bfs: -D opt: │ │ │ │ │ before:
bfs: -D opt: │ │ │ │ ├─◯ -type: ~0x2
bfs: -D opt: │ │ │ │ │ after true:
bfs: -D opt: │ │ │ │ ├─◯ -type:  0x4
bfs: -D opt: │ │ │ │ │ after false:
bfs: -D opt: │ │ │ │ ├─◯ -type: ~0x6
bfs: -D opt: │ │ │ ├─╯ (-type c)
bfs: -D opt: │ │ │ │ after true:
bfs: -D opt: │ │ │ ├─◯ -type: ~0x6
bfs: -D opt: │ │ │ │ after false:
bfs: -D opt: │ │ │ ├─◯ -type:  0x4
bfs: -D opt: │ │ ├─╯ (-not (-type c))
bfs: -D opt: │ │ ├─╮ (-links -5)
bfs: -D opt: │ │ │ │ before:
bfs: -D opt: │ │ │ ├─◯ -type: ~0x6
bfs: -D opt: │ │ │ │ after true:
bfs: -D opt: │ │ │ ├─╮ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╯ -type: ~0x6
bfs: -D opt: │ │ │ │ after false:
bfs: -D opt: │ │ │ ├─╮ -links: [5, ∞)
bfs: -D opt: │ │ │ ├─╯ -type: ~0x6
bfs: -D opt: │ │ ├─╯ (-links -5)
bfs: -D opt: │ │ ├─╮ (-links -10)
bfs: -D opt: │ │ │ │ before:
bfs: -D opt: │ │ │ ├─╮ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╯ -type: ~0x6
bfs: -D opt: │ │ │ │ after true:
bfs: -D opt: │ │ │ ├─╮ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╯ -type: ~0x6
bfs: -D opt: │ │ │ │ after false: ⊥
bfs: -D opt: │ │ │ │ pure, always true
bfs: -D opt: │ │ ├─╯ (-true)
bfs: -D opt: │ │ ├─╮ (-not (-hidden))
bfs: -D opt: │ │ │ │ before:
bfs: -D opt: │ │ │ ├─╮ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╯ -type: ~0x6
bfs: -D opt: │ │ │ ├─╮ (-hidden)
bfs: -D opt: │ │ │ │ │ before:
bfs: -D opt: │ │ │ │ ├─╮ -links: [0, 4]
bfs: -D opt: │ │ │ │ ├─╯ -type: ~0x6
bfs: -D opt: │ │ │ │ │ after true:
bfs: -D opt: │ │ │ │ ├─╮ -hidden: true
bfs: -D opt: │ │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ │ ├─╯ -type: ~0x6
bfs: -D opt: │ │ │ │ │ after false:
bfs: -D opt: │ │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ │ ├─╯ -type: ~0x6
bfs: -D opt: │ │ │ ├─╯ (-hidden)
bfs: -D opt: │ │ │ │ after true:
bfs: -D opt: │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╯ -type: ~0x6
bfs: -D opt: │ │ │ │ after false:
bfs: -D opt: │ │ │ ├─╮ -hidden: true
bfs: -D opt: │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╯ -type: ~0x6
bfs: -D opt: │ │ ├─╯ (-not (-hidden))
bfs: -D opt: │ │ ├─╮ (-print)
bfs: -D opt: │ │ │ │ before:
bfs: -D opt: │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╯ -type: ~0x6
bfs: -D opt: │ │ │ │ impure:
bfs: -D opt: │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╯ -type: ~0x6
bfs: -D opt: │ │ │ │ after true:
bfs: -D opt: │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╯ -type: ~0x6
bfs: -D opt: │ │ │ │ after false: ⊥
bfs: -D opt: │ │ ├─╯ (-print)
bfs: -D opt: │ │ │ after true:
bfs: -D opt: │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ ├─╯ -type: ~0x6
bfs: -D opt: │ │ │ after false: ⊤
bfs: -D opt: │ ├─╯ (-and (-D opt) (-nohidden) ...)
bfs: -D opt: ├─╯ 
bfs: -D opt: ├─╮ simplify()
bfs: -D opt: │ ├─╮ (-and (-D opt) (-nohidden) ...)
bfs: -D opt: │ │ ├─◯ (-D opt)
bfs: -D opt: │ │ ├─◯ (-nohidden)
bfs: -D opt: │ │ ├─╮ (-not (-type b))
bfs: -D opt: │ │ │ ├─◯ (-type b)
bfs: -D opt: │ │ ├─╯ (-not (-type b))
bfs: -D opt: │ │ ├─╮ (-not (-type c))
bfs: -D opt: │ │ │ ├─◯ (-type c)
bfs: -D opt: │ │ ├─╯ (-not (-type c))
bfs: -D opt: │ │ ├─◯ (-links -5)
bfs: -D opt: │ │ ├─◯ (-true)
bfs: -D opt: │ │ ├─╮ (-not (-hidden))
bfs: -D opt: │ │ │ ├─◯ (-hidden)
bfs: -D opt: │ │ ├─╯ (-not (-hidden))
bfs: -D opt: │ │ ├─◯ (-print)
bfs: -D opt: │ │ ├─✘ (-D opt) [conjunction elimination]
bfs: -D opt: │ │ ├─✘ (-nohidden) [conjunction elimination]
bfs: -D opt: │ │ ├─◯ (-not (-type b))
bfs: -D opt: │ │ ├─◯ (-not (-type c))
bfs: -D opt: │ │ ├─◯ (-links -5)
bfs: -D opt: │ │ ├─✘ (-true) [conjunction elimination]
bfs: -D opt: │ │ ├─◯ (-not (-hidden))
bfs: -D opt: │ │ ├─◯ (-print)
bfs: -D opt: │ │ │ De Morgan's laws
bfs: -D opt: │ │ ├─╮ (-not (-type b))
bfs: -D opt: │ │ ├─╯ (-type b)
bfs: -D opt: │ │ ├─╮ (-not (-type c))
bfs: -D opt: │ │ ├─╯ (-type c)
bfs: -D opt: │ │ ├─╮ (-links -5)
bfs: -D opt: │ │ ├─╯ (-not (-links -5))
bfs: -D opt: │ │ ├─╮ (-not (-hidden))
bfs: -D opt: │ │ ├─╯ (-hidden)
bfs: -D opt: │ │ ├─╮ (-print)
bfs: -D opt: │ │ ├─╯ (-not (-print))
bfs: -D opt: │ ├─╯ (-not (-or (...) (...) ...))
bfs: -D opt: ├─╯ 
bfs: -D opt: pass 2:
bfs: -D opt: ├─╮ canonicalize()
bfs: -D opt: │ ├─╮ (-not (-or (...) (...) ...))
bfs: -D opt: │ │ ├─╮ (-or (-type b) (-type c) ...)
bfs: -D opt: │ │ │ ├─◯ (-type b)
bfs: -D opt: │ │ │ ├─◯ (-type c)
bfs: -D opt: │ │ │ ├─╮ (-not (-links -5))
bfs: -D opt: │ │ │ │ ├─◯ (-links -5)
bfs: -D opt: │ │ │ ├─╯ (-not (-links -5))
bfs: -D opt: │ │ │ ├─◯ (-hidden)
bfs: -D opt: │ │ │ ├─╮ (-not (-print))
bfs: -D opt: │ │ │ │ ├─◯ (-print)
bfs: -D opt: │ │ │ ├─╯ (-not (-print))
bfs: -D opt: │ │ │ ├─◯ (-type b)
bfs: -D opt: │ │ │ ├─◯ (-type c)
bfs: -D opt: │ │ │ ├─◯ (-not (-links -5))
bfs: -D opt: │ │ │ ├─◯ (-hidden)
bfs: -D opt: │ │ │ ├─◯ (-not (-print))
bfs: -D opt: │ │ ├─╯ (-or (-type b) (-type c) ...)
bfs: -D opt: │ │ │ De Morgan's laws
bfs: -D opt: │ │ ├─╮ (-or (-type b) (-type c) ...)
bfs: -D opt: │ │ │ ├─╮ (-type b)
bfs: -D opt: │ │ │ ├─╯ (-not (-type b))
bfs: -D opt: │ │ │ ├─╮ (-type c)
bfs: -D opt: │ │ │ ├─╯ (-not (-type c))
bfs: -D opt: │ │ │ ├─╮ (-not (-links -5))
bfs: -D opt: │ │ │ ├─╯ (-links -5)
bfs: -D opt: │ │ │ ├─╮ (-hidden)
bfs: -D opt: │ │ │ ├─╯ (-not (-hidden))
bfs: -D opt: │ │ │ ├─╮ (-not (-print))
bfs: -D opt: │ │ │ ├─╯ (-print)
bfs: -D opt: │ │ ├─╯ (-and (-not (...)) (-not (...)) ...)
bfs: -D opt: │ ├─╯ (-and (-not (...)) (-not (...)) ...)
bfs: -D opt: ├─╯ 
bfs: -D opt: ├─╮ reorder()
bfs: -D opt: │ ├─╮ (-and (-not (...)) (-not (...)) ...)
bfs: -D opt: │ │ ├─╮ (-not (-type b))
bfs: -D opt: │ │ │ ├─◯ (-type b)
bfs: -D opt: │ │ ├─╯ (-not (-type b))
bfs: -D opt: │ │ ├─╮ (-not (-type c))
bfs: -D opt: │ │ │ ├─◯ (-type c)
bfs: -D opt: │ │ ├─╯ (-not (-type c))
bfs: -D opt: │ │ ├─◯ (-links -5)
bfs: -D opt: │ │ ├─╮ (-not (-hidden))
bfs: -D opt: │ │ │ ├─◯ (-hidden)
bfs: -D opt: │ │ ├─╯ (-not (-hidden))
bfs: -D opt: │ │ ├─◯ (-print)
bfs: -D opt: │ │ ├─╮ (-not (-type b)) (-not (-type c)) [79.9997]
bfs: -D opt: │ │ ├─╯ (-not (-type c)) (-not (-type b)) [79.998]
bfs: -D opt: │ │ ├─╮ (-links -5) (-not (-hidden)) [1039.6]
bfs: -D opt: │ │ ├─╯ (-not (-hidden)) (-links -5) [1030]
bfs: -D opt: │ │ ├─╮ (-not (-type c)) (-not (-hidden)) [79.998]
bfs: -D opt: │ │ ├─╯ (-not (-hidden)) (-not (-type c)) [79.6]
bfs: -D opt: │ │ ├─╮ (-not (-type c)) (-links -5) [1039.95]
bfs: -D opt: │ │ ├─╯ (-links -5) (-not (-type c)) [1039.6]
bfs: -D opt: │ ├─╯ (-and (-not (...)) (-links -5) ...)
bfs: -D opt: ├─╯ 
bfs: -D opt: ├─╮ data_flow()
bfs: -D opt: │ ├─╮ (-and (-not (...)) (-links -5) ...)
bfs: -D opt: │ │ │ before: ⊤
bfs: -D opt: │ │ ├─╮ (-not (-hidden))
bfs: -D opt: │ │ │ │ before: ⊤
bfs: -D opt: │ │ │ ├─╮ (-hidden)
bfs: -D opt: │ │ │ │ │ before: ⊤
bfs: -D opt: │ │ │ │ │ after true:
bfs: -D opt: │ │ │ │ ├─◯ -hidden: true
bfs: -D opt: │ │ │ │ │ after false:
bfs: -D opt: │ │ │ │ ├─◯ -hidden: false
bfs: -D opt: │ │ │ ├─╯ (-hidden)
bfs: -D opt: │ │ │ │ after true:
bfs: -D opt: │ │ │ ├─◯ -hidden: false
bfs: -D opt: │ │ │ │ after false:
bfs: -D opt: │ │ │ ├─◯ -hidden: true
bfs: -D opt: │ │ ├─╯ (-not (-hidden))
bfs: -D opt: │ │ ├─╮ (-links -5)
bfs: -D opt: │ │ │ │ before:
bfs: -D opt: │ │ │ ├─◯ -hidden: false
bfs: -D opt: │ │ │ │ after true:
bfs: -D opt: │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ ├─╯ -links: [0, 4]
bfs: -D opt: │ │ │ │ after false:
bfs: -D opt: │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ ├─╯ -links: [5, ∞)
bfs: -D opt: │ │ ├─╯ (-links -5)
bfs: -D opt: │ │ ├─╮ (-not (-type c))
bfs: -D opt: │ │ │ │ before:
bfs: -D opt: │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ ├─╯ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╮ (-type c)
bfs: -D opt: │ │ │ │ │ before:
bfs: -D opt: │ │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ ├─╯ -links: [0, 4]
bfs: -D opt: │ │ │ │ │ after true:
bfs: -D opt: │ │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ │ ├─╯ -type:  0x4
bfs: -D opt: │ │ │ │ │ after false:
bfs: -D opt: │ │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ │ ├─╯ -type: ~0x4
bfs: -D opt: │ │ │ ├─╯ (-type c)
bfs: -D opt: │ │ │ │ after true:
bfs: -D opt: │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╯ -type: ~0x4
bfs: -D opt: │ │ │ │ after false:
bfs: -D opt: │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╯ -type:  0x4
bfs: -D opt: │ │ ├─╯ (-not (-type c))
bfs: -D opt: │ │ ├─╮ (-not (-type b))
bfs: -D opt: │ │ │ │ before:
bfs: -D opt: │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╯ -type: ~0x4
bfs: -D opt: │ │ │ ├─╮ (-type b)
bfs: -D opt: │ │ │ │ │ before:
bfs: -D opt: │ │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ │ ├─╯ -type: ~0x4
bfs: -D opt: │ │ │ │ │ after true:
bfs: -D opt: │ │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ │ ├─╯ -type:  0x2
bfs: -D opt: │ │ │ │ │ after false:
bfs: -D opt: │ │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ │ ├─╯ -type: ~0x6
bfs: -D opt: │ │ │ ├─╯ (-type b)
bfs: -D opt: │ │ │ │ after true:
bfs: -D opt: │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╯ -type: ~0x6
bfs: -D opt: │ │ │ │ after false:
bfs: -D opt: │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╯ -type:  0x2
bfs: -D opt: │ │ ├─╯ (-not (-type b))
bfs: -D opt: │ │ ├─╮ (-print)
bfs: -D opt: │ │ │ │ before:
bfs: -D opt: │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╯ -type: ~0x6
bfs: -D opt: │ │ │ │ impure:
bfs: -D opt: │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╯ -type: ~0x6
bfs: -D opt: │ │ │ │ after true:
bfs: -D opt: │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╯ -type: ~0x6
bfs: -D opt: │ │ │ │ after false: ⊥
bfs: -D opt: │ │ ├─╯ (-print)
bfs: -D opt: │ │ │ after true:
bfs: -D opt: │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ ├─╯ -type: ~0x6
bfs: -D opt: │ │ │ after false: ⊤
bfs: -D opt: │ ├─╯ (-and (-not (...)) (-links -5) ...)
bfs: -D opt: ├─╯ 
bfs: -D opt: ├─╮ simplify()
bfs: -D opt: │ ├─╮ (-and (-not (...)) (-links -5) ...)
bfs: -D opt: │ │ ├─╮ (-not (-hidden))
bfs: -D opt: │ │ │ ├─◯ (-hidden)
bfs: -D opt: │ │ ├─╯ (-not (-hidden))
bfs: -D opt: │ │ ├─◯ (-links -5)
bfs: -D opt: │ │ ├─╮ (-not (-type c))
bfs: -D opt: │ │ │ ├─◯ (-type c)
bfs: -D opt: │ │ ├─╯ (-not (-type c))
bfs: -D opt: │ │ ├─╮ (-not (-type b))
bfs: -D opt: │ │ │ ├─◯ (-type b)
bfs: -D opt: │ │ ├─╯ (-not (-type b))
bfs: -D opt: │ │ ├─◯ (-print)
bfs: -D opt: │ │ ├─◯ (-not (-hidden))
bfs: -D opt: │ │ ├─◯ (-links -5)
bfs: -D opt: │ │ ├─◯ (-not (-type c))
bfs: -D opt: │ │ ├─◯ (-not (-type b))
bfs: -D opt: │ │ ├─◯ (-print)
bfs: -D opt: │ │ │ De Morgan's laws
bfs: -D opt: │ │ ├─╮ (-not (-hidden))
bfs: -D opt: │ │ ├─╯ (-hidden)
bfs: -D opt: │ │ ├─╮ (-links -5)
bfs: -D opt: │ │ ├─╯ (-not (-links -5))
bfs: -D opt: │ │ ├─╮ (-not (-type c))
bfs: -D opt: │ │ ├─╯ (-type c)
bfs: -D opt: │ │ ├─╮ (-not (-type b))
bfs: -D opt: │ │ ├─╯ (-type b)
bfs: -D opt: │ │ ├─╮ (-print)
bfs: -D opt: │ │ ├─╯ (-not (-print))
bfs: -D opt: │ ├─╯ (-not (-or (...) (...) ...))
bfs: -D opt: ├─╯ 
bfs: -D opt: pass 3:
bfs: -D opt: ├─╮ canonicalize()
bfs: -D opt: │ ├─╮ (-not (-or (...) (...) ...))
bfs: -D opt: │ │ ├─╮ (-or (-hidden) (-not (...)) ...)
bfs: -D opt: │ │ │ ├─◯ (-hidden)
bfs: -D opt: │ │ │ ├─╮ (-not (-links -5))
bfs: -D opt: │ │ │ │ ├─◯ (-links -5)
bfs: -D opt: │ │ │ ├─╯ (-not (-links -5))
bfs: -D opt: │ │ │ ├─◯ (-type c)
bfs: -D opt: │ │ │ ├─◯ (-type b)
bfs: -D opt: │ │ │ ├─╮ (-not (-print))
bfs: -D opt: │ │ │ │ ├─◯ (-print)
bfs: -D opt: │ │ │ ├─╯ (-not (-print))
bfs: -D opt: │ │ │ ├─◯ (-hidden)
bfs: -D opt: │ │ │ ├─◯ (-not (-links -5))
bfs: -D opt: │ │ │ ├─◯ (-type c)
bfs: -D opt: │ │ │ ├─◯ (-type b)
bfs: -D opt: │ │ │ ├─◯ (-not (-print))
bfs: -D opt: │ │ ├─╯ (-or (-hidden) (-not (...)) ...)
bfs: -D opt: │ │ │ De Morgan's laws
bfs: -D opt: │ │ ├─╮ (-or (-hidden) (-not (...)) ...)
bfs: -D opt: │ │ │ ├─╮ (-hidden)
bfs: -D opt: │ │ │ ├─╯ (-not (-hidden))
bfs: -D opt: │ │ │ ├─╮ (-not (-links -5))
bfs: -D opt: │ │ │ ├─╯ (-links -5)
bfs: -D opt: │ │ │ ├─╮ (-type c)
bfs: -D opt: │ │ │ ├─╯ (-not (-type c))
bfs: -D opt: │ │ │ ├─╮ (-type b)
bfs: -D opt: │ │ │ ├─╯ (-not (-type b))
bfs: -D opt: │ │ │ ├─╮ (-not (-print))
bfs: -D opt: │ │ │ ├─╯ (-print)
bfs: -D opt: │ │ ├─╯ (-and (-not (...)) (-links -5) ...)
bfs: -D opt: │ ├─╯ (-and (-not (...)) (-links -5) ...)
bfs: -D opt: ├─╯ 
bfs: -D opt: ├─╮ reorder()
bfs: -D opt: │ ├─╮ (-and (-not (...)) (-links -5) ...)
bfs: -D opt: │ │ ├─╮ (-not (-hidden))
bfs: -D opt: │ │ │ ├─◯ (-hidden)
bfs: -D opt: │ │ ├─╯ (-not (-hidden))
bfs: -D opt: │ │ ├─◯ (-links -5)
bfs: -D opt: │ │ ├─╮ (-not (-type c))
bfs: -D opt: │ │ │ ├─◯ (-type c)
bfs: -D opt: │ │ ├─╯ (-not (-type c))
bfs: -D opt: │ │ ├─╮ (-not (-type b))
bfs: -D opt: │ │ │ ├─◯ (-type b)
bfs: -D opt: │ │ ├─╯ (-not (-type b))
bfs: -D opt: │ │ ├─◯ (-print)
bfs: -D opt: │ ├─╯ (-and (-not (...)) (-links -5) ...)
bfs: -D opt: ├─╯ 
bfs: -D opt: ├─╮ data_flow()
bfs: -D opt: │ ├─╮ (-and (-not (...)) (-links -5) ...)
bfs: -D opt: │ │ │ before: ⊤
bfs: -D opt: │ │ ├─╮ (-not (-hidden))
bfs: -D opt: │ │ │ │ before: ⊤
bfs: -D opt: │ │ │ ├─╮ (-hidden)
bfs: -D opt: │ │ │ │ │ before: ⊤
bfs: -D opt: │ │ │ │ │ after true:
bfs: -D opt: │ │ │ │ ├─◯ -hidden: true
bfs: -D opt: │ │ │ │ │ after false:
bfs: -D opt: │ │ │ │ ├─◯ -hidden: false
bfs: -D opt: │ │ │ ├─╯ (-hidden)
bfs: -D opt: │ │ │ │ after true:
bfs: -D opt: │ │ │ ├─◯ -hidden: false
bfs: -D opt: │ │ │ │ after false:
bfs: -D opt: │ │ │ ├─◯ -hidden: true
bfs: -D opt: │ │ ├─╯ (-not (-hidden))
bfs: -D opt: │ │ ├─╮ (-links -5)
bfs: -D opt: │ │ │ │ before:
bfs: -D opt: │ │ │ ├─◯ -hidden: false
bfs: -D opt: │ │ │ │ after true:
bfs: -D opt: │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ ├─╯ -links: [0, 4]
bfs: -D opt: │ │ │ │ after false:
bfs: -D opt: │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ ├─╯ -links: [5, ∞)
bfs: -D opt: │ │ ├─╯ (-links -5)
bfs: -D opt: │ │ ├─╮ (-not (-type c))
bfs: -D opt: │ │ │ │ before:
bfs: -D opt: │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ ├─╯ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╮ (-type c)
bfs: -D opt: │ │ │ │ │ before:
bfs: -D opt: │ │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ ├─╯ -links: [0, 4]
bfs: -D opt: │ │ │ │ │ after true:
bfs: -D opt: │ │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ │ ├─╯ -type:  0x4
bfs: -D opt: │ │ │ │ │ after false:
bfs: -D opt: │ │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ │ ├─╯ -type: ~0x4
bfs: -D opt: │ │ │ ├─╯ (-type c)
bfs: -D opt: │ │ │ │ after true:
bfs: -D opt: │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╯ -type: ~0x4
bfs: -D opt: │ │ │ │ after false:
bfs: -D opt: │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╯ -type:  0x4
bfs: -D opt: │ │ ├─╯ (-not (-type c))
bfs: -D opt: │ │ ├─╮ (-not (-type b))
bfs: -D opt: │ │ │ │ before:
bfs: -D opt: │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╯ -type: ~0x4
bfs: -D opt: │ │ │ ├─╮ (-type b)
bfs: -D opt: │ │ │ │ │ before:
bfs: -D opt: │ │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ │ ├─╯ -type: ~0x4
bfs: -D opt: │ │ │ │ │ after true:
bfs: -D opt: │ │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ │ ├─╯ -type:  0x2
bfs: -D opt: │ │ │ │ │ after false:
bfs: -D opt: │ │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ │ ├─╯ -type: ~0x6
bfs: -D opt: │ │ │ ├─╯ (-type b)
bfs: -D opt: │ │ │ │ after true:
bfs: -D opt: │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╯ -type: ~0x6
bfs: -D opt: │ │ │ │ after false:
bfs: -D opt: │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╯ -type:  0x2
bfs: -D opt: │ │ ├─╯ (-not (-type b))
bfs: -D opt: │ │ ├─╮ (-print)
bfs: -D opt: │ │ │ │ before:
bfs: -D opt: │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╯ -type: ~0x6
bfs: -D opt: │ │ │ │ impure:
bfs: -D opt: │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╯ -type: ~0x6
bfs: -D opt: │ │ │ │ after true:
bfs: -D opt: │ │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ │ ├─╯ -type: ~0x6
bfs: -D opt: │ │ │ │ after false: ⊥
bfs: -D opt: │ │ ├─╯ (-print)
bfs: -D opt: │ │ │ after true:
bfs: -D opt: │ │ ├─╮ -hidden: false
bfs: -D opt: │ │ │ │ -links: [0, 4]
bfs: -D opt: │ │ ├─╯ -type: ~0x6
bfs: -D opt: │ │ │ after false: ⊤
bfs: -D opt: │ ├─╯ (-and (-not (...)) (-links -5) ...)
bfs: -D opt: ├─╯ 
bfs: -D opt: ├─╮ simplify()
bfs: -D opt: │ ├─╮ (-and (-not (...)) (-links -5) ...)
bfs: -D opt: │ │ ├─╮ (-not (-hidden))
bfs: -D opt: │ │ │ ├─◯ (-hidden)
bfs: -D opt: │ │ ├─╯ (-not (-hidden))
bfs: -D opt: │ │ ├─◯ (-links -5)
bfs: -D opt: │ │ ├─╮ (-not (-type c))
bfs: -D opt: │ │ │ ├─◯ (-type c)
bfs: -D opt: │ │ ├─╯ (-not (-type c))
bfs: -D opt: │ │ ├─╮ (-not (-type b))
bfs: -D opt: │ │ │ ├─◯ (-type b)
bfs: -D opt: │ │ ├─╯ (-not (-type b))
bfs: -D opt: │ │ ├─◯ (-print)
bfs: -D opt: │ │ ├─◯ (-not (-hidden))
bfs: -D opt: │ │ ├─◯ (-links -5)
bfs: -D opt: │ │ ├─◯ (-not (-type c))
bfs: -D opt: │ │ ├─◯ (-not (-type b))
bfs: -D opt: │ │ ├─◯ (-print)
bfs: -D opt: │ │ │ De Morgan's laws
bfs: -D opt: │ │ ├─╮ (-not (-hidden))
bfs: -D opt: │ │ ├─╯ (-hidden)
bfs: -D opt: │ │ ├─╮ (-links -5)
bfs: -D opt: │ │ ├─╯ (-not (-links -5))
bfs: -D opt: │ │ ├─╮ (-not (-type c))
bfs: -D opt: │ │ ├─╯ (-type c)
bfs: -D opt: │ │ ├─╮ (-not (-type b))
bfs: -D opt: │ │ ├─╯ (-type b)
bfs: -D opt: │ │ ├─╮ (-print)
bfs: -D opt: │ │ ├─╯ (-not (-print))
bfs: -D opt: │ ├─╯ (-not (-or (...) (...) ...))
bfs: -D opt: ├─╯ 
bfs: -D opt: post-process:
bfs: -D opt: ├─╮ lazy stat cost: 0.9801
bfs: -D opt: ├─╯ eager stat cost: 0.25
--- /builddir/build/BUILD/bfs-3.1.1/tests/bfs/D_opt.out 2024-02-16 13:43:44.000000000 +0000
+++ /tmp/bfs.JW170EwOhE/bfs/D_opt.out   2024-02-29 01:47:48.515164831 +0000
@@ -1,3 +1,4 @@
+basic
 basic/a
 basic/b
 basic/c
[FAIL] bfs/D_opt
[FAIL]   1 / 1

One of the differences between my system and the chroot environment is that in the chroot environment, /tmp is a regular directory. It's not a mounted tmpfs. Out of curiosity, I enabled the mock plugin that uses tmpfs in the environment, and the package compiled normally, with all tests passing. I tried to reproduce the same on a freshly installed Arch Linux in the virtual machine. The program compiles and passes all tests, but when I disable the tmpfs, 'D_opt' fails.

[xfgusta@archlinux bfs]$ findmnt /tmp
[xfgusta@archlinux bfs]$ ./tests/tests.sh bfs/D_opt 2>/dev/null
[FAIL] bfs/D_opt
[FAIL]   1 / 1
[xfgusta@archlinux bfs]$ sudo systemctl start tmp.mount
[xfgusta@archlinux bfs]$ findmnt /tmp
TARGET
     SOURCE
           FSTYPE OPTIONS
/tmp tmpfs tmpfs  rw,nosuid,nodev,nr_inodes=1048576,inode64
[xfgusta@archlinux bfs]$ ./tests/tests.sh bfs/D_opt 2>/dev/null
[PASS]   1 / 1
[xfgusta@archlinux bfs]$

Oops! This doesn't really have anything to do with -D opt, it's just because directory link counts are handled differently on different filesystems. I'll probably fix it by adding -type f to the test.

This should be fixed in the new 3.1.2 release

That indeed fixed the issue. Thank you.