What are differences between real and rpmbuild's environment?

Michal Hlavinka mhlavink at redhat.com
Tue Nov 9 16:14:58 UTC 2010


On Tuesday, November 09, 2010 16:30:17 Panu Matilainen wrote:
> On Tue, 9 Nov 2010, Michal Hlavinka wrote:
> > 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?
> 
> Oh, SIGPIPE. That explains... nspr (to which rpm is indirectly married to
> through nss) quietly sets SIG_IGN on SIGPIPE on initialization, triggering
> these kind of obscure misbehaviors in rpm-related scripts. Ain't the first
> time for sure, but the first time somebody manages to trigger the issue in
> build.
> 
> Fixing is easy enough, but do file a bug so I wont forget. Extra bonus for
> minimal reproducer.

Thanks, filed as #651463

Michal


More information about the devel mailing list