diff --git a/postfix/HISTORY b/postfix/HISTORY index 0ed03a52c..d0eb957a5 100644 --- a/postfix/HISTORY +++ b/postfix/HISTORY @@ -20050,7 +20050,7 @@ Apologies for any names omitted. Cleanup: need to evaluate mail_version before evaluating parameters that may contain $mail_version. File: - global/mail_params.h + global/mail_params.c. Cleanup: the postmulti command now exercises the postconf "-x" option to expand $parameter_name in secondary-instance @@ -20066,5 +20066,14 @@ Apologies for any names omitted. Bugfix (introduced: 20140626) broken build and broken install with default shlib_directory. Files: makedefs. - Bugfix (introduced: 20140627) broken install with default - shlib_directory. Files: conf/post-install. + Bugfix (introduced: 20140627) "make install" stopped with + a bogus error when there was no real "make install name=value" + parameter override. Files: conf/post-install. + + Cleanup: support MAIL_VERSION magic (see INSTALL) only at + the end of a parameter value. Files: proto/INSTALL.html + makedefs, postfix-install, conf/postfix-files. + + Cleanup: use ${mail_version} as the MAIL_VERSION-unexpanded + form. Viktor Dukhovni. Files: makedefs, postfix-install, + conf/postfix-files. diff --git a/postfix/INSTALL b/postfix/INSTALL index db35fc5a7..af4c208d6 100644 --- a/postfix/INSTALL +++ b/postfix/INSTALL @@ -254,9 +254,9 @@ database plugins from the wrong Postfix version. For example: shlib_directory=/usr/local/lib/postfix/MAIL_VERSION ... The command "make makefiles name=value..." will replace the string MAIL_VERSION -in a configuration parameter value with the Postfix release version. Do not try -to specify something like $mail_version on this command line. This produces -inconsistent results with different versions of the make(1) command. +at the end of a configuration parameter value with the Postfix release version. +Do not try to specify something like $mail_version on this command line. This +produces inconsistent results with different versions of the make(1) command. You can change the shlib_directory setting after Postfix is built, with "make install" or "make upgrade". However, you may have to run ldconfig if you change @@ -290,10 +290,10 @@ example: Here is a tip if you want to make a pathname dependent on the Postfix release version: the command "make makefiles name=value..." will replace the string -MAIL_VERSION in a configuration parameter value with the Postfix release -version. Do not try to specify something like $mail_version on this command -line. This produces inconsistent results with different versions of the make(1) -command. +MAIL_VERSION at the end of a configuration parameter value with the Postfix +release version. Do not try to specify something like $mail_version on this +command line. This produces inconsistent results with different versions of the +make(1) command. You can override the meta_directory setting after Postfix is built, with "make install" or "make upgrade". @@ -302,10 +302,10 @@ install" or "make upgrade". # make install meta_directory=/usr/libexec/postfix ... As with the command "make makefiles, the command "make install/upgrade -name=value..." will replace the string MAIL_VERSION in a configuration -parameter value with the Postfix release version. Do not try to specify -something like $mail_version on this command line. This produces inconsistent -results with different versions of the make(1) command. +name=value..." will replace the string MAIL_VERSION at the end of a +configuration parameter value with the Postfix release version. Do not try to +specify something like $mail_version on this command line. This produces +inconsistent results with different versions of the make(1) command. 4.4.4 Tips for distribution maintainers @@ -384,10 +384,10 @@ directory other than /etc/postfix, use: $ make The command "make makefiles name=value ..." will replace the string -MAIL_VERSION in a configuration parameter value with the Postfix release -version. Do not try to specify something like $mail_version on this command -line. This produces inconsistent results with different versions of the make(1) -command. +MAIL_VERSION at the end of a configuration parameter value with the Postfix +release version. Do not try to specify something like $mail_version on this +command line. This produces inconsistent results with different versions of the +make(1) command. Parameters whose defaults can be specified in this way are listed below. See the postconf(5) manpage for a description (command: "nroff -man man/man5/ @@ -709,10 +709,10 @@ following commands as the super-user: settings or main.cf settings. The command "make install/upgrade name=value ..." will replace the string - MAIL_VERSION in a configuration parameter value with the Postfix release - version. Do not try to specify something like $mail_version on this command - line. This produces inconsistent results with different versions of the - make(1) command. + MAIL_VERSION at the end of a configuration parameter value with the Postfix + release version. Do not try to specify something like $mail_version on this + command line. This produces inconsistent results with different versions of + the make(1) command. 6.4 - Configure Postfix diff --git a/postfix/README_FILES/INSTALL b/postfix/README_FILES/INSTALL index 6fe50e057..ac8aeb0c2 100644 --- a/postfix/README_FILES/INSTALL +++ b/postfix/README_FILES/INSTALL @@ -254,9 +254,9 @@ database plugins from the wrong Postfix version. For example: shlib_directory=/usr/local/lib/postfix/MAIL_VERSION ... The command "make makefiles name=value..." will replace the string MAIL_VERSION -in a configuration parameter value with the Postfix release version. Do not try -to specify something like $mail_version on this command line. This produces -inconsistent results with different versions of the make(1) command. +at the end of a configuration parameter value with the Postfix release version. +Do not try to specify something like $mail_version on this command line. This +produces inconsistent results with different versions of the make(1) command. You can change the shlib_directory setting after Postfix is built, with "make install" or "make upgrade". However, you may have to run ldconfig if you change @@ -290,10 +290,10 @@ example: Here is a tip if you want to make a pathname dependent on the Postfix release version: the command "make makefiles name=value..." will replace the string -MAIL_VERSION in a configuration parameter value with the Postfix release -version. Do not try to specify something like $mail_version on this command -line. This produces inconsistent results with different versions of the make(1) -command. +MAIL_VERSION at the end of a configuration parameter value with the Postfix +release version. Do not try to specify something like $mail_version on this +command line. This produces inconsistent results with different versions of the +make(1) command. You can override the meta_directory setting after Postfix is built, with "make install" or "make upgrade". @@ -302,10 +302,10 @@ install" or "make upgrade". # make install meta_directory=/usr/libexec/postfix ... As with the command "make makefiles, the command "make install/upgrade -name=value..." will replace the string MAIL_VERSION in a configuration -parameter value with the Postfix release version. Do not try to specify -something like $mail_version on this command line. This produces inconsistent -results with different versions of the make(1) command. +name=value..." will replace the string MAIL_VERSION at the end of a +configuration parameter value with the Postfix release version. Do not try to +specify something like $mail_version on this command line. This produces +inconsistent results with different versions of the make(1) command. 44..44..44 TTiippss ffoorr ddiissttrriibbuuttiioonn mmaaiinnttaaiinneerrss @@ -384,10 +384,10 @@ directory other than /etc/postfix, use: $ make The command "make makefiles name=value ..." will replace the string -MAIL_VERSION in a configuration parameter value with the Postfix release -version. Do not try to specify something like $mail_version on this command -line. This produces inconsistent results with different versions of the make(1) -command. +MAIL_VERSION at the end of a configuration parameter value with the Postfix +release version. Do not try to specify something like $mail_version on this +command line. This produces inconsistent results with different versions of the +make(1) command. Parameters whose defaults can be specified in this way are listed below. See the postconf(5) manpage for a description (command: "nroff -man man/man5/ @@ -709,10 +709,10 @@ following commands as the super-user: settings or main.cf settings. The command "make install/upgrade name=value ..." will replace the string - MAIL_VERSION in a configuration parameter value with the Postfix release - version. Do not try to specify something like $mail_version on this command - line. This produces inconsistent results with different versions of the - make(1) command. + MAIL_VERSION at the end of a configuration parameter value with the Postfix + release version. Do not try to specify something like $mail_version on this + command line. This produces inconsistent results with different versions of + the make(1) command. 66..44 -- CCoonnffiigguurree PPoossttffiixx diff --git a/postfix/conf/post-install b/postfix/conf/post-install index 0c2ca8bb9..b66b14778 100644 --- a/postfix/conf/post-install +++ b/postfix/conf/post-install @@ -424,8 +424,9 @@ POSTCONF="$command_directory/postconf" # Save settings, allowing command line/environment override. -# Undo MAIL_VERSION expansion. If someone really wants the expanded -# mail version in main.cf, we're sorry. +# Undo MAIL_VERSION expansion at the end of a parameter value. If +# someone really wants the expanded mail version in main.cf, then +# we're sorry. # Confine side effects from mail_version unexpansion within a subshell. @@ -441,7 +442,7 @@ do case "$pattern" in "") pattern=`echo "$mail_version" | sed 's/\./\\\\./g'` || exit 1 esac - val=`echo "$junk" | sed "s/$pattern/"'$mail_version/g'` || exit 1 + val=`echo "$junk" | sed "s/$pattern"'$/${mail_version}/g'` || exit 1 eval ${name}='"$val"' esac done diff --git a/postfix/html/INSTALL.html b/postfix/html/INSTALL.html index e2f818cfb..cd8869492 100644 --- a/postfix/html/INSTALL.html +++ b/postfix/html/INSTALL.html @@ -379,9 +379,9 @@ $ make makefiles shared=yes \
The command "make makefiles name=value..." will replace the -string MAIL_VERSION in a configuration parameter value with the -Postfix release version. Do not try to specify something like -$mail_version on this command line. This produces inconsistent +string MAIL_VERSION at the end of a configuration parameter value +with the Postfix release version. Do not try to specify something +like $mail_version on this command line. This produces inconsistent results with different versions of the make(1) command.
You can change the shlib_directory setting after Postfix is @@ -431,11 +431,11 @@ at compile time specify, for example:
Here is a tip if you want to make a pathname dependent on the Postfix release version: the command "make makefiles name=value..." -will replace the string MAIL_VERSION in a configuration parameter -value with the Postfix release version. Do not try to specify -something like $mail_version on this command line. This produces -inconsistent results with different versions of the make(1) command. -
+will replace the string MAIL_VERSION at the end of a configuration +parameter value with the Postfix release version. Do not try to +specify something like $mail_version on this command line. This +produces inconsistent results with different versions of the make(1) +command.You can override the meta_directory setting after Postfix is built, with "make install" or "make upgrade".
@@ -449,10 +449,10 @@ built, with "make install" or "make upgrade".As with the command "make makefiles, the command "make install/upgrade name=value..." will replace the string MAIL_VERSION -in a configuration parameter value with the Postfix release version. -Do not try to specify something like $mail_version on this command -line. This produces inconsistent results with different versions -of the make(1) command.
+at the end of a configuration parameter value with the Postfix +release version. Do not try to specify something like $mail_version +on this command line. This produces inconsistent results with +different versions of the make(1) command.The command "make makefiles name=value ..." will replace the -string MAIL_VERSION in a configuration parameter value with the -Postfix release version. Do not try to specify something like -$mail_version on this command line. This produces inconsistent +string MAIL_VERSION at the end of a configuration parameter value +with the Postfix release version. Do not try to specify something +like $mail_version on this command line. This produces inconsistent results with different versions of the make(1) command.
Parameters whose defaults can be specified in this way are @@ -977,10 +977,11 @@ or "make upgrade" command line, then these will take precedence over compiled-in default settings or main.cf settings.
The command "make install/upgrade name=value ..." will replace -the string MAIL_VERSION in a configuration parameter value with the -Postfix release version. Do not try to specify something like -$mail_version on this command line. This produces inconsistent -results with different versions of the make(1) command.
+the string MAIL_VERSION at the end of a configuration parameter +value with the Postfix release version. Do not try to specify +something like $mail_version on this command line. This produces +inconsistent results with different versions of the make(1) command. + diff --git a/postfix/makedefs b/postfix/makedefs index faff21d16..d5d9e3d1b 100644 --- a/postfix/makedefs +++ b/postfix/makedefs @@ -19,11 +19,12 @@ # command line). Use quotes if variables contain whitespace # or shell meta characters. # -# The "make makefiles name=value..." command will replace the -# string MAIL_VERSION in a parameter value with the Postfix -# release version. Do not try to specify something like -# $mail_version on this command line. This produces inconsistent -# results with different versions of the make(1) command. +# The command "make makefiles name=value..." will replace the +# string MAIL_VERSION at the end of a parameter value with +# the Postfix release version. Do not try to specify something +# like $mail_version on this command line. This produces +# inconsistent results with different versions of the make(1) +# command. # .IP \fBAUXLIBS=\fIobject_library...\fR # Specifies one or more non-default object libraries. Postfix # 2,12 and later specify some of their database library @@ -723,11 +724,11 @@ CCARGS="-I. -I../../include $CCARGS" # nothing. # # Requiring people to specify $$ is not a good option. Instead we -# replace the string MAIL_VERSION in "make makefiles name=value" -# parameter values with a form that depends on usage context: the -# actual release version in actual pathnames, the unexpanded -# $mail_version in main.cf parameter values and built-in default -# parameter settings. +# replace the string MAIL_VERSION at the end of parameter values in +# "make makefiles name=value...". The replacement depends on usage +# context: the expanded release version in actual pathnames, or the +# unexpanded ${mail_version} in configuration parameter values (both +# main.cf and and built-in defaults). # Helper function to determine DEF_MAIL_VERSION. @@ -758,39 +759,25 @@ EOF rm -f makedefs.test makedefs.test.[co] } -# Helper function to expand MAIL_VERSION in command-line value. +# Helper to expand MAIL_VERSION at the end of a command-line parameter value. -expand_MAIL_VERSION() -{ - case "$mail_version" in - "") mail_version=`def_mail_version` || exit 1 - esac - echo "$1" | sed "s/MAIL_VERSION/$mail_version/g" -} - - -# Helper function to expand $mail_version in parameter value. - -expand_mail_version() -{ - case "$mail_version" in - "") mail_version=`def_mail_version` || exit 1 - esac - echo "$1" | sed " - s/\$[{(]mail_version[)}]/$mail_version/g - s/\$mail_version/$mail_version/g - " -} - -# Helper to invoke the above. global: parm_name, parm_val, cparm_val, CCARGS. +# Note that MAIL_VERSION) does not anchor the match at the end. process_input_parameter() { case "$parm_val" in *MAIL_VERSION*) - cparm_val=`echo "$parm_val"|sed 's/MAIL_VERSION/\\\\$$mail_version/g'`|| + cparm_val=`echo "$parm_val" | \ + sed 's/MAIL_VERSION$/\\\\$${mail_version}/g'`|| exit 1 + case "$mail_version" in + "") mail_version=`def_mail_version` || exit 1 + esac + parm_val=`echo "$parm_val" | sed 's/MAIL_VERSION$/'"$mail_version/g"` || exit 1 - parm_val=`expand_MAIL_VERSION "$parm_val"` || exit 1 + case "$parm_val" in + *MAIL_VERSION*) + error "MAIL_VERSION not at end of parameter value: $parm_val" + esac eval ${parm_name}=\""\$parm_val"\";; *) cparm_val="$parm_val";; esac @@ -894,11 +881,7 @@ yes) esac # Determine the shared-library and plugin installation directory. - # The shlib_directory parameter is special. If the DEF_SHLIB_DIR - # C-language constant ends in "$mail_version" then the custom - # code below expands this by peeking at the DEF_MAIL_VERSION - # C-language constant. - # + parm_name=shlib_directory eval parm_val=\"\$$parm_name\" eval parm_macro=\"\$${parm_name}_macro\" diff --git a/postfix/postfix-install b/postfix/postfix-install index 7707622da..3828195fd 100644 --- a/postfix/postfix-install +++ b/postfix/postfix-install @@ -58,14 +58,15 @@ # .IP "command line" # Parameter settings can be given as name=value arguments on # the postfix-install command line. This mode will replace -# the string MAIL_VERSION in a configuration parameter value -# with the Postfix release version (Postfix 2.12 and later). +# the string MAIL_VERSION at the end of a configuration +# parameter value with the Postfix release version (Postfix +# 2.12 and later). # .IP "process environment" # Parameter settings can be given as name=value environment # variables. Environment parameters can also be specified on # the make(1) command line as "make install name=value ...". -# This mode will replace the string MAIL_VERSION in a -# configuration parameter value with the Postfix release +# This mode will replace the string MAIL_VERSION at the end +# of a configuration parameter value with the Postfix release # version (Postfix 2.12 and later). # .IP "installed configuration files" # If a parameter is not specified via the command line or via the @@ -235,9 +236,11 @@ html_directory mail_owner mailq_path manpage_directory newaliases_path \ queue_directory readme_directory sendmail_path setgid_group shlib_directory \ meta_directory" -# Expand the string MAIL_VERSION in "make install" etc. name=value -# command-line arguments (and consequently, in environment settings), -# for consistency with "make makefiles". +# Expand the string MAIL_VERSION at the end of "make install" etc. +# name=value command-line arguments (and consequently, in environment +# settings), for consistency with "make makefiles". + +# Note that MAIL_VERSION) does not anchor the match at the end. for name in $CONFIG_PARAMS sample_directory install_root tempdir do @@ -247,8 +250,12 @@ do case "$mail_version" in "") mail_version="`bin/postconf -dhx mail_version`" || exit 1 esac - eval ${name}=\"`echo "$junk" | sed "s/MAIL_VERSION/$mail_version/g"`\" || - exit 1;; + val=`echo "$junk" | sed 's/MAIL_VERSION$/'"$mail_version/g"` || exit 1 + case "$val" in + *MAIL_VERSION*) + echo "MAIL_VERSION not at end of parameter value: $junk" 1>&2; exit 1 + esac + eval ${name}='"$val"' esac done @@ -804,8 +811,9 @@ case "$mail_version" in "") mail_version="`bin/postconf -dhx mail_version`" || exit 1 esac -# Undo MAIL_VERSION expansion. If someone really wants the expanded -# mail version in main.cf, we're sorry. +# Undo MAIL_VERSION expansion at the end of a parameter value. If +# someone really wants the expanded mail version in main.cf, then +# we're sorry. for name in $CONFIG_PARAMS sample_directory do @@ -815,7 +823,7 @@ do case "$pattern" in "") pattern=`echo "$mail_version" | sed 's/\./\\\\./g'` || exit 1 esac - val=`echo "$junk" | sed "s/$pattern/"'$mail_version/g'` || exit 1 + val=`echo "$junk" | sed "s/$pattern"'$/${mail_version}/g'` || exit 1 eval ${name}='"$val"' esac done diff --git a/postfix/proto/INSTALL.html b/postfix/proto/INSTALL.html index 77a2dca1b..2b3f165e5 100644 --- a/postfix/proto/INSTALL.html +++ b/postfix/proto/INSTALL.html @@ -379,9 +379,9 @@ $ make makefiles shared=yes \The command "make makefiles name=value..." will replace the -string MAIL_VERSION in a configuration parameter value with the -Postfix release version. Do not try to specify something like -$mail_version on this command line. This produces inconsistent +string MAIL_VERSION at the end of a configuration parameter value +with the Postfix release version. Do not try to specify something +like $mail_version on this command line. This produces inconsistent results with different versions of the make(1) command.
You can change the shlib_directory setting after Postfix is @@ -431,11 +431,11 @@ at compile time specify, for example:
Here is a tip if you want to make a pathname dependent on the Postfix release version: the command "make makefiles name=value..." -will replace the string MAIL_VERSION in a configuration parameter -value with the Postfix release version. Do not try to specify -something like $mail_version on this command line. This produces -inconsistent results with different versions of the make(1) command. -
+will replace the string MAIL_VERSION at the end of a configuration +parameter value with the Postfix release version. Do not try to +specify something like $mail_version on this command line. This +produces inconsistent results with different versions of the make(1) +command.You can override the meta_directory setting after Postfix is built, with "make install" or "make upgrade".
@@ -449,10 +449,10 @@ built, with "make install" or "make upgrade".As with the command "make makefiles, the command "make install/upgrade name=value..." will replace the string MAIL_VERSION -in a configuration parameter value with the Postfix release version. -Do not try to specify something like $mail_version on this command -line. This produces inconsistent results with different versions -of the make(1) command.
+at the end of a configuration parameter value with the Postfix +release version. Do not try to specify something like $mail_version +on this command line. This produces inconsistent results with +different versions of the make(1) command.The command "make makefiles name=value ..." will replace the -string MAIL_VERSION in a configuration parameter value with the -Postfix release version. Do not try to specify something like -$mail_version on this command line. This produces inconsistent +string MAIL_VERSION at the end of a configuration parameter value +with the Postfix release version. Do not try to specify something +like $mail_version on this command line. This produces inconsistent results with different versions of the make(1) command.
Parameters whose defaults can be specified in this way are @@ -977,10 +977,11 @@ or "make upgrade" command line, then these will take precedence over compiled-in default settings or main.cf settings.
The command "make install/upgrade name=value ..." will replace -the string MAIL_VERSION in a configuration parameter value with the -Postfix release version. Do not try to specify something like -$mail_version on this command line. This produces inconsistent -results with different versions of the make(1) command.
+the string MAIL_VERSION at the end of a configuration parameter +value with the Postfix release version. Do not try to specify +something like $mail_version on this command line. This produces +inconsistent results with different versions of the make(1) command. + diff --git a/postfix/src/global/mail_version.h b/postfix/src/global/mail_version.h index 8a4f8971c..497be7128 100644 --- a/postfix/src/global/mail_version.h +++ b/postfix/src/global/mail_version.h @@ -20,7 +20,7 @@ * Patches change both the patchlevel and the release date. Snapshots have no * patchlevel; they change the release date only. */ -#define MAIL_RELEASE_DATE "20140627" +#define MAIL_RELEASE_DATE "20140629" #define MAIL_VERSION_NUMBER "2.12" #ifdef SNAPSHOT