On Monday, November 08, 2010 15:49:28 Michal Hlavinka wrote:
Hi,
I'm trying to find out what are differences between environment for local
rpm build and usual user's environment. I've added regression tests to
%check section of ksh spec file. These tests never fails when executed in
user's environment, but some of them always fail when executed as part of
rpm build process. I've tried to compare variable in the environment and
ulimit values, but there does not seem to be any significant difference.
I've also tried to use the same script generated by rpmbuild for %check
section (from
/var/tmp/rpm.*), but still it does not reproduce the problem. Any ideas?
Michal
Ok, I've forgot to mention a few things and I'll also add new information I've
found.
- Tests that are failing are all about pipe and sigpipe/pipefail.
- I've tried to reproduce this just with "empty" spec file - I've moved
the
tests in %prep section just after sources are unpacked and patched (required
for running tests) and it still fails
- I've prepared simple script with just the first failing test and. I've
modified this test slightly so it can be used with bash too. BASH has no
problem with this test when executed from terminal. When it's executed from
prep section in rpmbuild it fails too.
This is the test script (defined as Source6:)
#########################
s=$SECONDS
set -o pipefail
for ((i=0; i < 30; i++))
do printf hello 2>/dev/null
sleep .1
done | /bin/sleep 1
(( (SECONDS-s) < 2 )) || printf >&2 'early termination not causing broken
pipe'
#########################
and it's being executed from %prep section:
#########################
%prep
export SHELL=/bin/bash
time $SHELL %{SOURCE6}
exit 1
#########################
Correct real time is 1 sec something, when broken, time is 3 seconds something
and error message is produced.
So it seems rpmbuild has a bug and breaks sigpipe somehow...
Any comments before I file bug?