]> granicus.if.org Git - postgresql/commitdiff
Avoid putting build-location-dependent strings into generated files.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 21 Dec 2017 15:56:57 +0000 (10:56 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 21 Dec 2017 15:57:06 +0000 (10:57 -0500)
Various Perl scripts we use to generate files were in the habit of
printing things like "generated by $0" into their output files.
That looks like a fine idea at first glance, but it results in
non-reproducible output, because in VPATH builds $0 won't be just
the name of the script file, but a full path for it.  We'd prefer
that you get identical results whether using VPATH or not, so this
is a bad thing.

Some of these places also printed their input file name(s), causing
an additional hazard of the same type.

Hence, establish a policy that thou shalt not print $0, nor input file
pathnames, into output files (they're still allowed in error messages,
though).  Instead just write the script name verbatim.  While we are at
it, we can make these annotations more useful by giving the script's
full relative path name within the PG source tree, eg instead of
Gen_fmgrtab.pl let's print src/backend/utils/Gen_fmgrtab.pl.

Not all of the changes made here actually affect any files shipped
in finished tarballs today, but it seems best to apply the policy
everyplace so that nobody copies unsafe code into places where it
could matter.

Christoph Berg and Tom Lane

Discussion: https://postgr.es/m/20171215102223.GB31812@msg.df7cb.de

17 files changed:
src/backend/catalog/genbki.pl
src/backend/utils/Gen_fmgrtab.pl
src/backend/utils/mb/Unicode/UCS_to_BIG5.pl
src/backend/utils/mb/Unicode/UCS_to_EUC_CN.pl
src/backend/utils/mb/Unicode/UCS_to_EUC_JIS_2004.pl
src/backend/utils/mb/Unicode/UCS_to_EUC_JP.pl
src/backend/utils/mb/Unicode/UCS_to_EUC_KR.pl
src/backend/utils/mb/Unicode/UCS_to_EUC_TW.pl
src/backend/utils/mb/Unicode/UCS_to_GB18030.pl
src/backend/utils/mb/Unicode/UCS_to_JOHAB.pl
src/backend/utils/mb/Unicode/UCS_to_SHIFT_JIS_2004.pl
src/backend/utils/mb/Unicode/UCS_to_SJIS.pl
src/backend/utils/mb/Unicode/UCS_to_UHC.pl
src/backend/utils/mb/Unicode/UCS_to_most.pl
src/bin/psql/create_help.pl
src/pl/plperl/text2macro.pl
src/test/perl/TestLib.pm

index 256a9c9c931f1c4a6f20158c3a04dfc7eeb4b919..e4a0b8b2c7249d5722e435199b205574a7084e21 100644 (file)
@@ -340,7 +340,7 @@ print $schemapg <<EOM;
  *  *** DO NOT EDIT THIS FILE! ***
  *  ******************************
  *
- *  It has been GENERATED by $0
+ *  It has been GENERATED by src/backend/catalog/genbki.pl
  *
  *-------------------------------------------------------------------------
  */
index ee89d507849217ef46cee1a254073d4ab812e9ef..26b428b11e3787838220876a3deffb0b60132eeb 100644 (file)
@@ -118,8 +118,7 @@ qq|/*-------------------------------------------------------------------------
  *     *** DO NOT EDIT THIS FILE! ***
  *     ******************************
  *
- *     It has been GENERATED by $0
- *     from $infile
+ *     It has been GENERATED by src/backend/utils/Gen_fmgrtab.pl
  *
  *-------------------------------------------------------------------------
  */
@@ -153,8 +152,7 @@ qq|/*-------------------------------------------------------------------------
  *     *** DO NOT EDIT THIS FILE! ***
  *     ******************************
  *
- *     It has been GENERATED by $0
- *     from $infile
+ *     It has been GENERATED by src/backend/utils/Gen_fmgrtab.pl
  *
  *-------------------------------------------------------------------------
  */
@@ -181,8 +179,7 @@ qq|/*-------------------------------------------------------------------------
  *     *** DO NOT EDIT THIS FILE! ***
  *     ******************************
  *
- *     It has been GENERATED by $0
- *     from $infile
+ *     It has been GENERATED by src/backend/utils/Gen_fmgrtab.pl
  *
  *-------------------------------------------------------------------------
  */
index 05822b2fce07bef06b9450d28ee2c5097457cbf8..f73e2a1f168a178abe17cfcd5dc9a62ca3785b2e 100755 (executable)
@@ -27,7 +27,7 @@
 use strict;
 use convutils;
 
-my $this_script = $0;
+my $this_script = 'src/backend/utils/mb/Unicode/UCS_to_BIG5.pl';
 
 # Load BIG5.TXT
 my $all = &read_source("BIG5.TXT");
index f7f94967d9a2c2bf88d9185814127fe7f2e4308c..63f5e1b67ae8ff2f80f86925eb564088102f760b 100755 (executable)
@@ -16,7 +16,7 @@
 use strict;
 use convutils;
 
-my $this_script = $0;
+my $this_script = 'src/backend/utils/mb/Unicode/UCS_to_EUC_CN.pl';
 
 # Read the input
 
index 229003196bf9192b2903db4e32390d66c87a6d8c..4dac7d267f90fb7e48b65012a441c60408195a00 100755 (executable)
@@ -10,7 +10,7 @@
 use strict;
 use convutils;
 
-my $this_script = $0;
+my $this_script = 'src/backend/utils/mb/Unicode/UCS_to_EUC_JIS_2004.pl';
 
 # first generate UTF-8 --> EUC_JIS_2004 table
 
index 5db663f36263264e50162bf31aa34f4cacc05898..77ce2731716d4d2627001cdd99bfaed81cc7054b 100755 (executable)
@@ -14,7 +14,7 @@
 use strict;
 use convutils;
 
-my $this_script = $0;
+my $this_script = 'src/backend/utils/mb/Unicode/UCS_to_EUC_JP.pl';
 
 # Load JIS0212.TXT
 my $jis0212 = &read_source("JIS0212.TXT");
index f0d978d3df3e3a83377bf52cfe3c2b9f86a4a21e..8e0126c7f50b910b1878320cca58d519ae782b4e 100755 (executable)
@@ -19,7 +19,7 @@
 use strict;
 use convutils;
 
-my $this_script = $0;
+my $this_script = 'src/backend/utils/mb/Unicode/UCS_to_EUC_KR.pl';
 
 # Load the source file.
 
index 0bfcbd5bb21fbe7b0338795684550abc9c40d4a2..61013e356ac4b8cc5a49b97774a66928b60af4f0 100755 (executable)
@@ -20,7 +20,7 @@
 use strict;
 use convutils;
 
-my $this_script = $0;
+my $this_script = 'src/backend/utils/mb/Unicode/UCS_to_EUC_TW.pl';
 
 my $mapping = &read_source("CNS11643.TXT");
 
index 4469cc7c9d8647210439376e0da4034c74970c63..e9f816cfa8d7b107fdada3a850049ac68e6daecc 100755 (executable)
@@ -16,7 +16,7 @@
 use strict;
 use convutils;
 
-my $this_script = $0;
+my $this_script = 'src/backend/utils/mb/Unicode/UCS_to_GB18030.pl';
 
 # Read the input
 
index 7c6f526f0db1167336516b6a95e08135dcd6fe2a..be10d5200ed77711c6f264fc83fe1a1aa9498677 100755 (executable)
@@ -18,7 +18,7 @@
 use strict;
 use convutils;
 
-my $this_script = $0;
+my $this_script = 'src/backend/utils/mb/Unicode/UCS_to_JOHAB.pl';
 
 # Load the source file.
 
index d1b36c0d77dabbfb15677133be0ef5e75bf079ca..98a6ee7c7ba702236565347aa68ab281f40630aa 100755 (executable)
@@ -12,7 +12,7 @@ use convutils;
 
 # first generate UTF-8 --> SHIFT_JIS_2004 table
 
-my $this_script = $0;
+my $this_script = 'src/backend/utils/mb/Unicode/UCS_to_SHIFT_JIS_2004.pl';
 
 my $in_file = "sjis-0213-2004-std.txt";
 
index 746096449c29f482eda5145256300680634d71b5..cc1edcc4aa1310ef906f1a00370ba8422fa4427d 100755 (executable)
@@ -13,7 +13,7 @@
 use strict;
 use convutils;
 
-my $this_script = $0;
+my $this_script = 'src/backend/utils/mb/Unicode/UCS_to_SJIS.pl';
 
 my $mapping = read_source("CP932.TXT");
 
index 8d99ca302b2185644adf3de8bcf3fe153ef73bc1..640a2ec2f7e9a854bc2393b657c75802cf3c5c26 100755 (executable)
@@ -16,7 +16,7 @@
 use strict;
 use convutils;
 
-my $this_script = $0;
+my $this_script = 'src/backend/utils/mb/Unicode/UCS_to_UHC.pl';
 
 # Read the input
 
index 1c3922e2ffadda7dde722525aae4f84f61c90f13..2d69748a935141d46557154152dd63d6c365a614 100755 (executable)
@@ -18,7 +18,7 @@
 use strict;
 use convutils;
 
-my $this_script = $0;
+my $this_script = 'src/backend/utils/mb/Unicode/UCS_to_most.pl';
 
 my %filename = (
        'WIN866'     => 'CP866.TXT',
index cedb767b27185048499bcf6cfd4dd799a194d92e..9fa185587802bd8edaa7d9168b7a23943fdf3df5 100644 (file)
@@ -51,8 +51,7 @@ print $hfile_handle "/*
  * *** Do not change this file by hand. It is automatically
  * *** generated from the DocBook documentation.
  *
- * generated by
- *     $^X $0 @ARGV
+ * generated by src/bin/psql/create_help.pl
  *
  */
 
@@ -76,8 +75,7 @@ print $cfile_handle "/*
  * *** Do not change this file by hand. It is automatically
  * *** generated from the DocBook documentation.
  *
- * generated by
- *     $^X $0 @ARGV
+ * generated by src/bin/psql/create_help.pl
  *
  */
 
@@ -131,7 +129,7 @@ foreach my $file (sort readdir DIR)
                my $nl_count = () = $cmdsynopsis =~ /\n/g;
 
                $cmdsynopsis =~ m!</>!
-                 and die "$0:$file: null end tag not supported in synopsis\n";
+                 and die "$0: $file: null end tag not supported in synopsis\n";
                $cmdsynopsis =~ s/%/%%/g;
 
                while ($cmdsynopsis =~ m!<(\w+)[^>]*>(.+?)</\1[^>]*>!)
index e681fca21a168d663752db1e657a8b30a7352537..27c6ef7e4275c37f10fc3a8218b054d0a22a6865 100644 (file)
@@ -40,7 +40,7 @@ die "No text files specified"
 print qq{
 /*
  * DO NOT EDIT - THIS FILE IS AUTOGENERATED - CHANGES WILL BE LOST
- * Written by $0 from @ARGV
+ * Generated by src/pl/plperl/text2macro.pl
  */
 };
 
index 60190400de0495509e7cd259673244df383f39ca..72826d5bad84f5ff888e89196b7e43c58be97dfa 100644 (file)
@@ -66,7 +66,7 @@ BEGIN
        delete $ENV{PGPORT};
        delete $ENV{PGHOST};
 
-       $ENV{PGAPPNAME} = $0;
+       $ENV{PGAPPNAME} = basename($0);
 
        # Must be set early
        $windows_os = $Config{osname} eq 'MSWin32' || $Config{osname} eq 'msys';