Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Fix portability issue in pg_upgrade test script: avoid $PWD.
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 7 Jul 2015 16:49:18 +0000 (12:49 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 7 Jul 2015 16:49:18 +0000 (12:49 -0400)
SUSv2-era shells don't set the PWD variable, though anything more modern
does.  In the buildfarm environment this could lead to test.sh executing
with PWD pointing to $HOME or another high-level directory, so that there
were conflicts between concurrent executions of the test in different
branch subdirectories.  This appears to be the explanation for recent
intermittent failures on buildfarm members binturong and dingo (and might
well have something to do with the buildfarm script's failure to capture
log files from pg_upgrade tests, too).

To fix, just use `pwd` in place of $PWD.  AFAICS test.sh is the only place
in our source tree that depended on $PWD.  Back-patch to all versions
containing this script.

Per buildfarm.  Thanks to Oskari Saarenmaa for diagnosing the problem.

contrib/pg_upgrade/test.sh

index d44c599a8ee9618f7de571046989bf903373eb1c..905729028fa8e3286a02cc8e8f4bca98c4ca734b 100644 (file)
@@ -60,7 +60,8 @@ esac
 POSTMASTER_OPTS="-F -c listen_addresses=$LISTEN_ADDRESSES -k \"$PGHOST\""
 export PGHOST
 
-temp_root=$PWD/tmp_check
+# don't rely on $PWD here, as old shells don't set it
+temp_root=`pwd`/tmp_check
 
 if [ "$1" = '--install' ]; then
    temp_install=$temp_root/install
@@ -117,7 +118,7 @@ PGREQUIRESSL="";      unset PGREQUIRESSL
 PGCONNECT_TIMEOUT=""; unset PGCONNECT_TIMEOUT
 PGHOSTADDR="";        unset PGHOSTADDR
 
-logdir=$PWD/log
+logdir=`pwd`/log
 rm -rf "$logdir"
 mkdir "$logdir"