diff --git a/.gitignore b/.gitignore index 0741eb7..26672fb 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -ccache-2.4.tar.gz +/ccache-2.4.tar.gz diff --git a/ccache.csh.in b/ccache.csh.in index 846fead..4edbb51 100644 --- a/ccache.csh.in +++ b/ccache.csh.in @@ -1,16 +1,26 @@ -# Use ccache by default. Users who don't want that can set the CCACHE_DISABLE -# environment variable in their personal profile. +# Use ccache by default. Users who don't want that can setenv the +# CCACHE_DISABLE environment variable in their personal profile. if ( "$path" !~ *@LIBDIR@/ccache* ) then set path = ( @LIBDIR@/ccache $path ) endif -# If @CACHEDIR@ is writable, use a shared cache there. Users who don't -# want that even if they have that write permission can set the CCACHE_DIR -# and unset the CCACHE_UMASK environment variables in their personal profile. +# If @CACHEDIR@ is writable, use a shared cache there, except for root. +# Users who don't want that even if they have the write permission can setenv +# the CCACHE_DIR environment variable to another location and possibly unsetenv +# the CCACHE_UMASK environment variable in their personal profile. -if ( ! $?CCACHE_DIR && -w @CACHEDIR@ && -d @CACHEDIR@ ) then - setenv CCACHE_DIR @CACHEDIR@ - setenv CCACHE_UMASK 002 - unsetenv CCACHE_HARDLINK +if ( $?CCACHE_DIR ) then + if ( ! -w "$CCACHE_DIR" ) then + # Reset broken settings maybe inherited when switching users (#651023). + unsetenv CCACHE_DIR + unsetenv CCACHE_UMASK + endif +else if ( $uid != 0 ) then + if ( -w @CACHEDIR@ && -d @CACHEDIR@ ) then + # Set up the shared cache. + setenv CCACHE_DIR @CACHEDIR@ + setenv CCACHE_UMASK 002 + unsetenv CCACHE_HARDLINK + endif endif diff --git a/ccache.sh.in b/ccache.sh.in index c751a60..0ce4d64 100644 --- a/ccache.sh.in +++ b/ccache.sh.in @@ -1,17 +1,27 @@ # Use ccache by default. Users who don't want that can set the CCACHE_DISABLE # environment variable in their personal profile. -case ":$PATH:" in +case ":${PATH:-}:" in *:@LIBDIR@/ccache:*) ;; - *) PATH="@LIBDIR@/ccache:$PATH" ;; + *) PATH="@LIBDIR@/ccache${PATH:+:$PATH}" ;; esac -# If @CACHEDIR@ is writable, use a shared cache there. Users who don't -# want that even if they have that write permission can set the CCACHE_DIR -# and unset the CCACHE_UMASK environment variables in their personal profile. +# If @CACHEDIR@ is writable, use a shared cache there, except for root. +# Users who don't want that even if they have the write permission can set +# the CCACHE_DIR environment variable to another location and possibly unset +# the CCACHE_UMASK environment variables in their personal profile. -if [ -z "$CCACHE_DIR" ] && [ -w @CACHEDIR@ ] && [ -d @CACHEDIR@ ] ; then - export CCACHE_DIR=@CACHEDIR@ - export CCACHE_UMASK=002 - unset CCACHE_HARDLINK +if [ -n "${CCACHE_DIR:-}" ] ; then + if [ ! -w "$CCACHE_DIR" ] ; then + # Reset broken settings maybe inherited when switching users (#651023). + unset CCACHE_DIR + unset CCACHE_UMASK + fi +elif [ "${EUID:-}" != 0 ] ; then + if [ -w @CACHEDIR@ ] && [ -d @CACHEDIR@ ] ; then + # Set up the shared cache. + export CCACHE_DIR=@CACHEDIR@ + export CCACHE_UMASK=002 + unset CCACHE_HARDLINK + fi fi diff --git a/ccache.spec b/ccache.spec index 39131b9..e1cbaf9 100644 --- a/ccache.spec +++ b/ccache.spec @@ -6,7 +6,7 @@ Name: ccache Version: 2.4 -Release: 18%{?dist} +Release: 19%{?dist} Summary: C/C++ compiler cache Group: Development/Tools @@ -102,6 +102,10 @@ done %changelog +* Sat Apr 2 2011 Ville Skyttä - 2.4-19 +- Reset non-working cache dir related env settings on user switch (#651023). +- Make sh profile script "nounset" clean. + * Fri Jun 4 2010 Ville Skyttä - 2.4-18 - Don't use "pathmunge" in the profile.d sh script to work around #548960.