Bug#606687: ccache support fails in the face of su PATH mangling

Matthew Palmer mpalmer at debian.org
Fri Dec 10 23:08:00 UTC 2010


Package: pbuilder
Version: 0.199
Severity: normal
Tags: patch

pbuilder's ccache support relies on being able to modify PATH when building
packages.  Unfortunately, su's documented behaviour is to reset PATH to a
known safe setting (in login.defs), which breaks this (along with any other
attempts to manually set PATH in pbuilderrc).

Apparently (see irc-log.txt) su has had a bug in it that has failed to
mangle PATH, which has kept this bug "hidden".  However, the version of
login in squeeze definitely resets PATH.

The attached patch adjusts the way that commands are called in the su
session, preserving the environment and making ccache work.


-- System Information:
Debian Release: 5.0.3
  APT prefers stable
  APT policy: (500, 'stable'), (1, 'experimental'), (1, 'unstable'), (1, 'testing')
Architecture: i386 (i686)

Kernel: Linux 2.6.26-2-686 (SMP w/2 CPU cores)
Locale: LANG=en_AU, LC_CTYPE=en_AU (charmap=ISO-8859-1)
Shell: /bin/sh linked to /bin/bash

Versions of packages pbuilder depends on:
ii  cdebootstrap             0.5.4           Bootstrap a Debian system
ii  coreutils                6.10-6          The GNU core utilities
ii  debconf [debconf-2.0]    1.5.24          Debian configuration management sy
ii  debianutils              2.30            Miscellaneous utilities specific t
ii  debootstrap              1.0.10lenny1    Bootstrap a basic Debian system
ii  wget                     1.11.4-2+lenny2 retrieves files from the web

Versions of packages pbuilder recommends:
ii  devscripts                 2.10.35lenny7 scripts to make the life of a Debi
ii  fakeroot                   1.11          Gives a fake root environment
ii  sudo                       1.6.9p17-3    Provide limited super user privile

Versions of packages pbuilder suggests:
ii  cowdancer                     0.47       Copy-on-write directory tree utili
pn  gdebi-core                    <none>     (no description available)
pn  pbuilder-uml                  <none>     (no description available)

-- debconf information excluded
-------------- next part --------------
--- pbuilder-buildpackage.orig	2010-12-10 23:07:09.000000000 +1100
+++ pbuilder-buildpackage	2010-12-10 23:13:08.000000000 +1100
@@ -105,7 +105,7 @@
     log "E: pbuilder: Failed chowning to $BUILDUSERNAME:$BUILDUSERNAME"
     exit 1;
 fi
-if echo "( cd tmp/buildd; /usr/bin/dpkg-source -x $(basename $PACKAGENAME) )" | $CHROOTEXEC $SUTOUSER ; then
+if echo "( cd tmp/buildd; env PATH=$PATH /usr/bin/dpkg-source -x $(basename $PACKAGENAME) )" | $CHROOTEXEC $SUTOUSER ; then
     : # success
 else
     log "E: pbuilder: Failed extracting the source"
@@ -116,7 +116,7 @@
 
 executehooks "A"
 
-DPKG_COMMANDLINE="dpkg-buildpackage -us -uc ${DEBEMAIL:+\"-e$DEBEMAIL\"} $DEBBUILDOPTS"
+DPKG_COMMANDLINE="env PATH=$PATH dpkg-buildpackage -us -uc ${DEBEMAIL:+\"-e$DEBEMAIL\"} $DEBBUILDOPTS"
 
 (
     : Build process
-------------- next part --------------
Dec 10 22:30:14 <womble>	lool: I'd be interested to know how the path
modifications made for ccache in pbuilder-checkparams are ever supposed to
survive the call to su -p.  I just don't see how it's possible, and without
it I can't see how your ccache support could possibly work.

Dec 10 22:46:43 <lool>	womble: su -p preserves PATH in my testing here

Dec 10 22:47:05 <lool>	womble: PATH=foo:$PATH su -p -c env | grep PATH

Dec 10 22:47:09 <womble>	lool: What version of su are you running?

Dec 10 22:47:33 <lool>	womble: 1:4.1.4.2-1ubuntu3

Dec 10 22:47:45 <womble>	lool: That su command line gives me my path
back here

Dec 10 22:48:50 <womble>	lool: login 1:4.1.4.2+svn3283-2 and
1:4.1.1-6+lenny1 both fail to preserve PATH, and the manpage says that's how
it's supposed to behave.

Dec 10 22:49:36 <womble>	"--preserve-environment  Preserve the
current environment, except for: $PATH [...] $IFS"

Dec 10 22:49:55 <lool>	womble: the man page says it follows
/etc/login.defs; this has been fixed on 2010-08-28 apparently

Dec 10 22:50:13 <lool>	womble: http://paste.debian.net/102039/
-----8<-----
2010-08-28  Nicolas Fran?ois  <nicolas.francois at centraliens.net>

        * src/su.c: Fix handling of environment variables when
        the environment is not changed. In particular, this makes su
        behave as documented regarding PATH and IFS (i.e. they are reset)
        when -p is provided.
----->8-----

Dec 10 22:51:42 <lool>	I guess the PATH setting oculd be moved to
pbuilder-buildpackage


More information about the Pbuilder-maint mailing list