Build failure on OpenBSD

16 views
Skip to first unread message

an...@lipidity.com

unread,
Jan 2, 2021, 10:46:22 PM1/2/21
to redo...@googlegroups.com
Hello,

Another variant of the zsh problem <https://groups.google.com/g/redo-list/c/j1Z8-miWpTM>
this time on OpenBSD 6.8 (sh is ksh).

Running `./do test` or `./do build` fails:

do ../../../..//dat/tmp/o/redo/bin/all
do ../../../..//dat/tmp/o/redo/redo/version/all
do ../../../..//dat/tmp/o/redo/redo/version/vars
do ../../../..//dat/tmp/o/redo/redo/version/gitvars
do ../../../..//dat/tmp/o/redo/redo/version/_version.py
do ../../../..//dat/tmp/o/redo/redo/py
do ../../../..//dat/tmp/o/redo/redo/whichpython
Trying: intentionally-missing
Trying: python
Trying: python3
do ../../../..//dat/tmp/o/redo/redo/sh
dash... missing
/usr/xpg4/bin/sh... missing
ash... missing
posh... missing
lksh... missing
mksh... missing
ksh... failed s60 W94 F102 W114 W118
ksh88... missing
ksh93... missing
pdksh... missing
zsh... warnings W2a W47c W89c W118
bash... warnings W48 W89c W118
busybox... missing
/bin/sh... failed s60 W94 F102 W114 W118
Selected mostly good shell: /usr/local/bin/zsh
do ../../../..//dat/tmp/o/redo/bin/list
do ../../../..//dat/tmp/o/redo/bin/redo-always
/dat/tmp/o/redo/.do_built.dir/redo-ifchange: don't know how to build '../../../../..//dat/tmp/o/redo/bin/redo-always'
do: ../../../../..//dat/tmp/o/redo/bin/redo-always: got exit code 99
do: ../../../../..//dat/tmp/o/redo/bin/all: got exit code 123
./do: failed to compile redo.


The _normpath function in ./minimal/do is the problem.
Somehow the loop variable $d is blank twice at the start.

Uncommenting the "echo" statements in this function shows lines like

NP start '/dat/tmp/o/redo/bin/all/'
NP out='' d=''
NP out='/' d=''
NP out='//' d='dat'
NP out='//dat/' d='tmp'
NP out='//dat/tmp/' d='o'
NP out='//dat/tmp/o/' d='redo'
NP out='//dat/tmp/o/redo/' d='bin'
NP out='//dat/tmp/o/redo/bin/' d='all'
NP out='//dat/tmp/o/redo/bin/all/' (done)
do ../../../..//dat/tmp/o/redo/bin/all
NP start '/dat/tmp/o/redo/redo/version/all/'
NP out='' d=''
NP out='/' d=''
NP out='//' d='dat'
NP out='//dat/' d='tmp'
NP out='//dat/tmp/' d='o'
NP out='//dat/tmp/o/' d='redo'
NP out='//dat/tmp/o/redo/' d='redo'
NP out='//dat/tmp/o/redo/redo/' d='version'
NP out='//dat/tmp/o/redo/redo/version/' d='all'
NP out='//dat/tmp/o/redo/redo/version/all/' (done)
do ../../../..//dat/tmp/o/redo/redo/version/all

One way I could install redo is by changing the shebang in minimal/do to dash or bash.
Installation is then possible but there is still a test failure:

Testing "_normpath" in ./do.test:

<<< expected:
/usr/lib
=== got:
//usr/lib
>>>
! _normpath:1 '/usr/lib' = _normpath /usr/../usr/bin/../lib /dat/tmp/o/redo/minimal/x FAILED
do: test: got exit code 1
do: test: got exit code 1
./do: minimal/do test failed

--
Ankur

Reply all
Reply to author
Forward
0 new messages