On Fri, Feb 12, 2010 at 12:16:16PM +0100, Loïc Minier wrote:
> On Fri, Dec 11, 2009, Lucas Nussbaum wrote:
> > Relevant part:
>
> Actually that's not the whole relevant part; there's also:
> checking whether make sets $(MAKE)... yes
> get_processor:3: command not found: ps
> ./ok4zshdb.sh:43: command not found: -if
> checking Checking whether /bin/zsh is compatible with zshdb... Your zsh
> doesn't have the fc -l patches.
> yes!
> checking for diff... /usr/bin/diff
> adding -w to diff in regression tests
>
> This particular problem is due to a missing build-dep on procps which
> provides ps, used in test/zsh/ok4zshdb.sh:get_processor().
> (debootstrap --variant=buildd wont pull procps)
>
> > > /build/user-zshdb_0.03+git20090920-1-amd64-hSCnaM/zshdb-0.03+git20090920/lib/processor.sh:37:
> > > no such file or directory:
>
> That's the meat of the problem: lib/processor.sh:37 breaks the build
> because it uses $TTY:
> # For zsh, using this builtin parameter $TTY seems preferred over &0
> # because it will find/fake a terminal when &0 might not be one.
> exec {_Dbg_fdi}<$TTY
>
> TTY isn't set
>
> I managed to reproduce the problem in my build environment with:
> sudo mv /dev/tty /dev/tty.bak
> env -i dpkg-buildpackage -b </dev/null >log 2>&1
> (obviously this might break your system)
>
> So I believe the buildd environment has a partial /dev without
> /dev/tty.
>
> I tried replacing $TTY with &0, and a real file, but that didn't work
> (hit the same test failures), and with a fifo, but that hanged the
> build waiting for the fifo to fill in.
>
> I'm not familiar with zshdb, but I suspect it might need a TTY during
> debug sessions which might be why the testsuite would use one as well.
> Someone more familiar with zshdb could perhaps check whether we can use
> coproc here, or a pair of fifos (adding code to properly close them as
> well), to replace the use of $TTY. Perhaps another way would be to
> pass a script (list of commands to run) to zshdb.
>
> As a last resort, I tried running make check under "expect", but oddly
> that failed in the same way. While expect correctly sets up stdin,
> stdout, stderr on a pty,
> test/integration/check-common.sh:run_test_check() ruins that effort by
> using redirections:
> (cd $srcdir && run_debugger $debugged_script 2>&1 >$TEST_FILE
> </dev/null)
> so zsh sees that stdin, stdout, and stderr aren't ttys and falls back
> to /dev/tty (which doesn't exist apparently).
>
> So I tried working around that with:
> expect -c 'spawn zsh -c "ZSH_TTY=\$$TTY $(MAKE) check"; expect'
> and changing lib/processor.sh to use ZSH_TTY. I don't know why *that*
> still fails.
>
> So it seems the only way is to rework the testsuite to not rely on
> using a real tty...
Rocky, any thoughts? I guess at the worst case we could simply disable
the tests if no tty is available.
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]