2
0
mirror of https://github.com/vdukhovni/postfix synced 2025-08-22 09:57:34 +00:00

postfix-2.12-20140626

This commit is contained in:
Wietse Venema 2014-06-26 00:00:00 -05:00 committed by Viktor Dukhovni
parent f9922d6a8a
commit 39fcc2e5c3
11 changed files with 118 additions and 89 deletions

View File

@ -20023,3 +20023,20 @@ Apologies for any names omitted.
Cleanup: don't leak build directory information via SHLIB_ENV
in makedefs.out. Files: Makefile.in, conf/postfix-files.
20140626
Cleanup: construction debris. Files: Makefile.in,
conf/postfix-script.
Cleanup: replace expanded MAIL_VERSION with $mail_version
in main.cf installation parameter settings, to permit safe
upgrade of a running mail system. File: postfix-install.
Cleanup: replace expanded MAIL_VERSION with $mail_version
in built-in default installation parameter settings, for
consistency with main.cf. File: makedefs, postfix-install,
conf/post-install.
Cleanup: removed $mail_version from the default shlib_directory
value. Files: global/mail_params.h, proto/INSTALL.html.

View File

@ -185,15 +185,15 @@ shared-library support.
(Specify "make makefiles shared=no" to explicitly disable Postfix shared-
library support).
This installs shared libraries in $shlib_directory, typically, /usr/lib/
postfix/version or /usr/local/lib/postfix/version, with names like libpostfix-
name.so, where the name is a source-code directory name such as "util" or
"global", and the version is the Postfix release version: x.y.z for stable
releases, x.y-date for snapshot (development) releases, or x.y-date-nonprod for
non-production releases.
This installs shared libraries in $shlib_directory, typically /usr/lib/postfix
or /usr/local/lib/postfix, with file names libpostfix-name.so, where the name
is a source-code directory name such as "util" or "global", and the version is
the Postfix release version: x.y.z for stable releases, x.y-date for snapshot
(development) releases, or x.y-date-nonprod for non-production releases.
See section 4.3.3 "Customizing Postfix shared libraries and database plugins"
below for how to customize the Postfix shared-library location and version.
below for how to customize the Postfix shared-library location and version,
including support to upgrade a running mail system.
4.3.2 Turning on Postfix database-plugin support
@ -249,8 +249,8 @@ plugins specify, for example:
If you intend to upgrade Postfix without stopping the mail system, then you
should append the Postfix release version to the shlib_directory pathname, to
eliminate the possibility that programs from the old Postfix version will link
with files from the new Postfix version. For example:
eliminate the possibility that programs will link with shared libraries or
database plugins from the wrong Postfix version. For example:
$ make makefiles shared=yes \
shlib_directory=/usr/local/lib/postfix/MAIL_VERSION ...

View File

@ -59,10 +59,10 @@ meta/makedefs.out: conf/makedefs.out
meta/postfix-files: conf/postfix-files conf/makedefs.out Makefile
rm -f $@
(if [ "${SHLIB_DIR_OVERRIDE}" = "no" -o "${SHLIB_DIR}" = "" ]; then \
(if [ "${SHLIB_DIR}" = "no" -o "${SHLIB_DIR}" = "" ]; then \
sed -e '/^\$$shlib_directory/d' \
-e '/dynamicmaps.cf/d' conf/postfix-files; \
elif [ "${PLUGIN_LD}" = "" ]; then \
elif [ "${PLUGIN_LD}" = ":" -o "${PLUGIN_LD}" = "" ]; then \
sed -e '/dynamicmaps.cf/d' \
-e '/^\$$shlib_directory\/\$${LIB_PREFIX}/d' \
conf/postfix-files | $(EXPAND); \

View File

@ -185,15 +185,15 @@ shared-library support.
(Specify "make makefiles shared=no" to explicitly disable Postfix shared-
library support).
This installs shared libraries in $shlib_directory, typically, /usr/lib/
postfix/version or /usr/local/lib/postfix/version, with names like libpostfix-
name.so, where the name is a source-code directory name such as "util" or
"global", and the version is the Postfix release version: x.y.z for stable
releases, x.y-date for snapshot (development) releases, or x.y-date-nonprod for
non-production releases.
This installs shared libraries in $shlib_directory, typically /usr/lib/postfix
or /usr/local/lib/postfix, with file names libpostfix-name.so, where the name
is a source-code directory name such as "util" or "global", and the version is
the Postfix release version: x.y.z for stable releases, x.y-date for snapshot
(development) releases, or x.y-date-nonprod for non-production releases.
See section 4.3.3 "Customizing Postfix shared libraries and database plugins"
below for how to customize the Postfix shared-library location and version.
below for how to customize the Postfix shared-library location and version,
including support to upgrade a running mail system.
44..33..22 TTuurrnniinngg oonn PPoossttffiixx ddaattaabbaassee--pplluuggiinn ssuuppppoorrtt
@ -249,8 +249,8 @@ plugins specify, for example:
If you intend to upgrade Postfix without stopping the mail system, then you
should append the Postfix release version to the shlib_directory pathname, to
eliminate the possibility that programs from the old Postfix version will link
with files from the new Postfix version. For example:
eliminate the possibility that programs will link with shared libraries or
database plugins from the wrong Postfix version. For example:
$ make makefiles shared=yes \
shlib_directory=/usr/local/lib/postfix/MAIL_VERSION ...

16
postfix/conf/postfix-script Normal file → Executable file
View File

@ -258,8 +258,9 @@ check-warn)
test "$shlib_directory" = "no" || todo="$shlib_directory $todo"
todo="$meta_directory $todo"
}
todo=`echo "$todo" | tr ' ' '\12' | sort -u`
for dir in `echo "$todo" | tr ' ' '\12' | sort -u`
for dir in $todo
do
ls -lLd $dir | (grep " root " >/dev/null ||
$WARN not owned by root: $dir)
@ -273,17 +274,22 @@ check-warn)
test -n "$check_shared_files" && {
todo="$daemon_directory/* $todo"
test "$shlib_directory" = "no" ||
todo="$shlib_directory/libpostfix* $todo"
todo="$shlib_directory/* $todo"
todo="$meta_directory/* $todo"
}
todo=`echo "$todo" | tr ' ' '\12' | sort -u`
find $todo ! -user root \
-exec $WARN not owned by root: {} \;
todo="$config_directory/."
test -n "$check_shared_files" && todo="$daemon_directory/. $todo"
# FIXME don't scan non-Postfix files under /usr/local/lib.
test -n "$check_shared_files" && {
todo="$daemon_directory/. $todo"
test "$shlib_directory" = "no" ||
todo="$shlib_directory/libpostfix* $shlib_directory/postfix* $todo"
todo="$shlib_directory/. $todo"
todo="$meta_directory/. $todo"
}
todo=`echo "$todo" | tr ' ' '\12' | sort -u`
find $todo \
\( -perm -020 -o -perm -002 \) -type f \

View File

@ -283,18 +283,18 @@ $ make
<p> (Specify "make makefiles shared=no" to explicitly disable Postfix
shared-library support). </p>
<p> This installs shared libraries in $<a href="postconf.5.html#shlib_directory">shlib_directory</a>, typically,
/usr/lib/postfix/<i>version</i> or /usr/local/lib/postfix/<i>version</i>,
with names like libpostfix-<i>name</i>.so, where the <i>name</i>
is a source-code directory name such as "util" or "global", and the
<i>version</i> is the Postfix release version: <i>x.y.z</i> for
stable releases, <i>x.y</i>-<i>date</i> for snapshot (development)
releases, or <i>x.y</i>-<i>date</i>-nonprod for non-production
releases. </p>
<p> This installs shared libraries in $<a href="postconf.5.html#shlib_directory">shlib_directory</a>, typically
/usr/lib/postfix or /usr/local/lib/postfix, with file names
libpostfix-<i>name</i>.so, where the <i>name</i> is a source-code
directory name such as "util" or "global", and the <i>version</i>
is the Postfix release version: <i>x.y.z</i> for stable releases,
<i>x.y</i>-<i>date</i> for snapshot (development) releases, or
<i>x.y</i>-<i>date</i>-nonprod for non-production releases. </p>
<p> See section 4.3.3 "Customizing Postfix shared libraries and
database plugins" below for how to customize the Postfix shared-library
location and version.
location and version, including support to upgrade a running mail
system. </p>
<h4><a name="dynamicmaps_enable"> 4.3.2 Turning on Postfix
database-plugin support </a></h4>
@ -371,7 +371,7 @@ $ make makefiles shared=yes <a href="postconf.5.html#shlib_directory">shlib_dire
<p> If you intend to upgrade Postfix without stopping the mail
system, then you should append the Postfix release version to the
<a href="postconf.5.html#shlib_directory">shlib_directory</a> pathname, to eliminate the possibility that programs
from the old Postfix version will link with files from the new
will link with shared libraries or database plugins from the wrong
Postfix version. For example: </p>
<blockquote>

View File

@ -722,24 +722,12 @@ CCARGS="-I. -I../../include $CCARGS"
# ould replace "'${mail_version}'" and "'$(mail_version)'" with
# nothing.
#
# We could work around this by documenting that $$ must be used (and
# fix $$ in the case that people use traditional make). But this
# would be non-intuitive and bad from a usability point of view.
#
# We could work around this by documenting that people must pass
# name=value via the environment instead of the command line, as in
# "shlib_directory=/some/where/'$mail_version' make makefiles", or
# that they issue "export" or "setenv" commands depending on their
# interactive shell. That would be non-intuitive and bad usability.
#
# Even if we did any of the above, we would not want to pass the
# unexpanded $mail_version via CCARGS, because that requires extra
# quoting with `echo "$parm_val" | sed 's/[$]/\\\\$$/'` which is
# just too ugly to be portable.
#
# The upshot of all this is that we will expand MAIL_VERSION in the
# "make makefiles parameter=value" command line, and that we pass
# the expanded text via CCARGS. This is clumsier but cleaner.
# 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.
# Helper function to determine DEF_MAIL_VERSION.
@ -793,6 +781,22 @@ expand_mail_version()
s/\$mail_version/$mail_version/g
"
}
# Helper to invoke the above. global: parm_name, parm_val, cparm_val, CCARGS.
process_input_parameter()
{
case "$parm_val" in
*MAIL_VERSION*)
cparm_val=`echo "$parm_val"|sed 's/MAIL_VERSION/\\\\$$mail_version/g'`||
exit 1
parm_val=`expand_MAIL_VERSION "$parm_val"` || exit 1
eval ${parm_name}=\""\$parm_val"\";;
*) cparm_val="$parm_val";;
esac
CCARGS="$CCARGS -D$parm_macro=\\\"$cparm_val\\\""
}
# Optionally override installation-parameter default settings.
command_directory_macro=DEF_COMMAND_DIR
@ -817,12 +821,7 @@ do
eval parm_macro=\"\$${parm_name}_macro\"
case "$parm_val" in
"") ;;
/*) case "$parm_val" in
*MAIL_VERSION*)
parm_val=`expand_MAIL_VERSION "$parm_val"` || exit 1
eval ${parm_name}=\""\$parm_val"\";;
esac
CCARGS="$CCARGS -D$parm_macro=\\\"$parm_val\\\"";;
/*) process_input_parameter;;
*) error "$parm_name must specify an absolute path name";;
esac
done
@ -837,12 +836,7 @@ do
eval parm_macro=\"\$${parm_name}_macro\"
case "$parm_val" in
"") ;;
/*|no) case "$parm_val" in
*MAIL_VERSION*)
parm_val=`expand_MAIL_VERSION "$parm_val"` || exit 1
eval ${parm_name}=\""\$parm_val"\";;
esac
CCARGS="$CCARGS -D$parm_macro=\\\"$parm_val\\\"";;
/*|no) process_input_parameter;;
*) error "$parm_name must specify \"no\" or an absolute path name";;
esac
done
@ -855,12 +849,7 @@ do
eval parm_macro=\"\$${parm_name}_macro\"
case "$parm_val" in
"") ;;
*) case "$parm_val" in
*MAIL_VERSION*)
parm_val=`expand_MAIL_VERSION "$parm_val"` || exit 1
eval ${parm_name}=\""\$parm_val"\";;
esac
CCARGS="$CCARGS -D$parm_macro=\\\"$parm_val\\\"";;
*) process_input_parameter;;
esac
done

View File

@ -493,7 +493,7 @@ test -f $CONFIG_DIRECTORY/main.cf && {
case "$junk" in
"") eval unset $name;;
esac
eval : \${$name=\`bin/postconf -c $CONFIG_DIRECTORY -h $name\`} ||
eval : \${$name=\`bin/postconf -c $CONFIG_DIRECTORY -hx $name\`} ||
exit 1
done
}
@ -506,7 +506,7 @@ do
case "$junk" in
"") eval unset $name;;
esac
eval : \${$name=\`bin/postconf -c conf -d -h $name\`} || exit 1
eval : \${$name=\`bin/postconf -c conf -d -hx $name\`} || exit 1
done
# Override settings manually.
@ -800,6 +800,23 @@ do
# Postfix releases, and software should not suddenly be installed in
# the wrong place when Postfix is being upgraded.
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.
for name in $CONFIG_PARAMS sample_directory
do
eval junk=\$$name
case "$junk" in
*"$mail_version"*)
val=`echo "$junk" | sed "s/$mail_version/"'$mail_version/g'` || exit 1
eval ${name}='"$val"'
esac
done
bin/postconf -c $CONFIG_DIRECTORY -e \
"daemon_directory = $daemon_directory" \
"data_directory = $data_directory" \

View File

@ -283,18 +283,18 @@ $ make
<p> (Specify "make makefiles shared=no" to explicitly disable Postfix
shared-library support). </p>
<p> This installs shared libraries in $shlib_directory, typically,
/usr/lib/postfix/<i>version</i> or /usr/local/lib/postfix/<i>version</i>,
with names like libpostfix-<i>name</i>.so, where the <i>name</i>
is a source-code directory name such as "util" or "global", and the
<i>version</i> is the Postfix release version: <i>x.y.z</i> for
stable releases, <i>x.y</i>-<i>date</i> for snapshot (development)
releases, or <i>x.y</i>-<i>date</i>-nonprod for non-production
releases. </p>
<p> This installs shared libraries in $shlib_directory, typically
/usr/lib/postfix or /usr/local/lib/postfix, with file names
libpostfix-<i>name</i>.so, where the <i>name</i> is a source-code
directory name such as "util" or "global", and the <i>version</i>
is the Postfix release version: <i>x.y.z</i> for stable releases,
<i>x.y</i>-<i>date</i> for snapshot (development) releases, or
<i>x.y</i>-<i>date</i>-nonprod for non-production releases. </p>
<p> See section 4.3.3 "Customizing Postfix shared libraries and
database plugins" below for how to customize the Postfix shared-library
location and version.
location, including support to upgrade a running mail system safely.
</p>
<h4><a name="dynamicmaps_enable"> 4.3.2 Turning on Postfix
database-plugin support </a></h4>
@ -371,7 +371,7 @@ $ make makefiles shared=yes shlib_directory=/usr/local/lib/postfix ...
<p> If you intend to upgrade Postfix without stopping the mail
system, then you should append the Postfix release version to the
shlib_directory pathname, to eliminate the possibility that programs
from the old Postfix version will link with files from the new
will link with shared libraries or database plugins from the wrong
Postfix version. For example: </p>
<blockquote>

View File

@ -3794,7 +3794,7 @@ extern char *var_local_dsn_filter;
*/
#define VAR_SHLIB_DIR "shlib_directory"
#ifndef DEF_SHLIB_DIR
#define DEF_SHLIB_DIR "/usr/lib/postfix/$mail_version"
#define DEF_SHLIB_DIR "/usr/lib/postfix"
#endif
extern char *var_shlib_dir;

View File

@ -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 "20140625"
#define MAIL_RELEASE_DATE "20140626"
#define MAIL_VERSION_NUMBER "2.12"
#ifdef SNAPSHOT