4536 Joerg Bruehe 2012-11-02
Version 5.6.9 will be a "release candidate",
signalled by "-rc".
modified:
VERSION
4535 Joerg Bruehe 2012-11-02
Script "mysql_install_db" could run into trouble signalled by
tr: Input file error: Illegal byte sequence
(taken from a Solaris test) which then led to
Could not generate a random password - not setting one
The reason is that "tr" (used to ensure the password is
alphanumeric, important to avoid issues in pasting)
may need LC_CTYPE to be set, will not understand the
"alnum" character class otherwise.
The fix is to specify "LC_CTYPE=C" when calling "tr".
It is done for this call only, will not affect user settings
for any other program.
Detected during internal testing on Solaris, bug #14848215.
modified:
scripts/mysql_install_db.pl.in
4534 Joerg Bruehe 2012-11-02
Fix Bug #14747671 PKG UPGRADE RERUNS MYSQL_INSTALL_DB DURING UPGRADE
Change the "postinstall" scriptlet for Solaris so that it first tests
whether the directory "$mydatadir/mysql" (the one holding the system
tables, especially "mysql.user") already exists:
If yes, we assume this is an upgrade,
and only if it didn't exist before the script is running this is a
new installation for which "mysql_install_db" must be run.
modified:
packaging/solaris/postinstall-solaris.sh
4533 Joerg Bruehe 2012-11-02
"postinstall" scriptlet for PKG installation on Solaris:
Call 'mysql_install_db --random-passwords'
This sets a random root password for each PKG installation
(bug# 12794345) (already solved for RPM).
modified:
packaging/solaris/postinstall-solaris.sh
4532 Joerg Bruehe 2012-11-02
Prepare to fix bug #12794345 for Solaris "pkg" packages.
To allow differences by MySQL version in the scriptlets
around pkg installation / upgrade / removal,
it is better to have them in the source tree.
Implementation:
- Add a new subdirectory "packaging/solaris/",
- make sure it is processed when building binary packages,
- import the scriptlet "postinstall-solaris" from the tool
which builds a "pkg" file into this new subdirectory.
@ packaging/solaris/postinstall-solaris.sh
This is a direct import from the pkg building tool,
where this scriptlet was used since at least 2008
without major changes.
The only change on this import is the inclusion of
a GPL header.
If this script needs to be configured, it will not be
done during (binary) build but rather at pkg creation.
added:
packaging/solaris/
packaging/solaris/CMakeLists.txt
packaging/solaris/postinstall-solaris.sh
modified:
CMakeLists.txt
4531 Dmitry Lenev 2012-11-02
WL#6561 "Deprecate and remove support for .sym files (custom symlink
implementation)".
Starting from Vista/Server 2008 a native symlinking mechanism is
supported by Windows (through MKLINK command). Since starting from
5.6 we don't plan to support Windows XP/Server 2003 this makes MySQL
Server implementation of symbolic links for Windows (based on custom
.sym files) redundant. Therefore it is a good idea first to deprecate
and then completely remove code implementing custom symbolic links.
Note that having this custom implementation around is a bad idea not
only from code complexity view point, but it also creates performance
problems in some scenarios and is cause behind some bugs.
This is first step towards custom symlink implementation removal.
We start to emit deprecation warning to error log first time when
a table in such a .sym-linked database is used.
Test that checks that deprecation warning is emitted when
.sym-linked database is used for the first time is added.
Manual testing was done to check that native symlinks are
working as expected for linking databases.
added:
mysql-test/r/symlink_windows.result
mysql-test/t/symlink_windows.test
modified:
include/my_sys.h
mysys/mf_format.c
mysys/mf_pack.c
sql/sql_show.cc
sql/sql_table.cc
=== modified file 'CMakeLists.txt'
--- a/CMakeLists.txt 2012-10-09 14:14:24 +0000
+++ b/CMakeLists.txt 2012-11-02 18:31:49 +0000
@@ -440,6 +440,7 @@ ELSE()
SET(CPACK_GENERATOR "TGZ")
ENDIF()
ADD_SUBDIRECTORY(packaging/WiX)
+ADD_SUBDIRECTORY(packaging/solaris)
# Create a single package with "make package"
# (see http://public.kitware.com/Bug/view.php?id=11452)
=== modified file 'VERSION'
--- a/VERSION 2012-10-12 13:08:26 +0000
+++ b/VERSION 2012-11-02 19:11:51 +0000
@@ -1,4 +1,4 @@
MYSQL_VERSION_MAJOR=5
MYSQL_VERSION_MINOR=6
MYSQL_VERSION_PATCH=9
-MYSQL_VERSION_EXTRA=
+MYSQL_VERSION_EXTRA=-rc
=== added directory 'packaging/solaris'
=== added file 'packaging/solaris/CMakeLists.txt'
--- a/packaging/solaris/CMakeLists.txt 1970-01-01 00:00:00 +0000
+++ b/packaging/solaris/CMakeLists.txt 2012-11-02 18:31:49 +0000
@@ -0,0 +1,32 @@
+# Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+# Any files in this directory are auxiliary files for Solaris "pkg" packages.
+# They will be configured during "pkg" creation, not during (binary) build.
+
+# Currently, this expands to "support-files/" in most layouts,
+# but to "/usr/share/mysql/" in a RPM.
+# It is important not to pollute "/usr/bin".
+SET(inst_location ${INSTALL_SUPPORTFILESDIR})
+
+FOREACH(script postinstall-solaris)
+ CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${script}.sh
+ ${CMAKE_CURRENT_BINARY_DIR}/${script} COPYONLY )
+
+ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${script}
+ DESTINATION ${inst_location}/solaris COMPONENT Server_Scripts
+ PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+ENDFOREACH()
=== added file 'packaging/solaris/postinstall-solaris.sh'
--- a/packaging/solaris/postinstall-solaris.sh 1970-01-01 00:00:00 +0000
+++ b/packaging/solaris/postinstall-solaris.sh 2012-11-02 18:39:15 +0000
@@ -0,0 +1,124 @@
+#!/bin/sh
+#
+# Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+# Solaris post install script
+#
+
+#if [ /usr/man/bin/makewhatis ] ; then
+# /usr/man/bin/makewhatis "$BASEDIR/mysql/man"
+#fi
+
+mygroup=mysql
+myuser=mysql
+mydatadir=/var/lib/mysql
+basedir=@@basedir@@
+
+if [ -n "$BASEDIR" ] ; then
+ basedir="$BASEDIR"
+fi
+
+# What MySQL calls "basedir" and what pkgadd tools calls "basedir"
+# is not the same thing. The default pkgadd base directory is /opt/mysql,
+# the MySQL one "/opt/mysql/mysql".
+
+mybasedir="$basedir/@@instdir@@"
+mystart1="$mybasedir/support-files/mysql.server"
+myinstdb="$mybasedir/scripts/mysql_install_db"
+mystart=/etc/init.d/mysql
+
+# Check: Is this a first installation, or an upgrade ?
+
+if [ -d "$mydatadir/mysql" ] ; then
+ : # If the directory for system table files exists, we assume an upgrade.
+else
+ INSTALL=new # This is a new installation, the directory will soon be created.
+fi
+
+# Create data directory if needed
+
+[ -d "$mydatadir" ] || mkdir -p -m 755 "$mydatadir" || exit 1
+[ -d "$mydatadir/mysql" ] || mkdir "$mydatadir/mysql" || exit 1
+[ -d "$mydatadir/test" ] || mkdir "$mydatadir/test" || exit 1
+
+# Set the data directory to the right user/group
+
+chown -R $myuser:$mygroup $mydatadir
+
+# Solaris patch 119255 (somewhere around revision 42) changes the behaviour
+# of pkgadd to set TMPDIR internally to a root-owned install directory. This
+# has the unfortunate side effect of breaking running mysql_install_db with
+# the --user=mysql argument as mysqld uses TMPDIR if set, and is unable to
+# write temporary tables to that directory. To work around this issue, we
+# create a subdirectory inside TMPDIR (if set) for mysqld to write to.
+#
+# Idea from Ben Hekster <heksterb@stripped> in bug#31164
+
+if [ -n "$TMPDIR" ] ; then
+ savetmpdir="$TMPDIR"
+ TMPDIR="$TMPDIR/mysql.$$"
+ export TMPDIR
+ mkdir "$TMPDIR"
+ chown $myuser:$mygroup "$TMPDIR"
+fi
+
+if [ -n "$INSTALL" ] ; then
+ # We install/update the system tables
+ (
+ cd "$mybasedir"
+ scripts/mysql_install_db \
+ --rpm \
+ --random-passwords \
+ --user=mysql \
+ --basedir="$mybasedir" \
+ --datadir=$mydatadir
+ )
+fi
+
+if [ -n "$savetmpdir" ] ; then
+ TMPDIR="$savetmpdir"
+fi
+
+# ----------------------------------------------------------------------
+
+# Handle situation there is old start script installed already
+
+# If old start script is a soft link, we just remove it
+[ -h "$mystart" ] && rm -f "$mystart"
+
+# If old start script is a file, we rename it
+[ -f "$mystart" ] && mv -f "$mystart" "$mystart.old.$$"
+
+# ----------------------------------------------------------------------
+
+# We create a copy of an unmodified start script,
+# as a reference for the one maybe modifying it
+
+cp -f "$mystart1.in" "$mystart.in" || exit 1
+
+# We rewrite some scripts
+
+for script in "$mystart" "$mystart1" "$myinstdb" ; do
+ script_in="$script.in"
+ sed -e "s,@basedir@,$mybasedir,g" \
+ -e "s,@datadir@,$mydatadir,g" "$script_in" > "$script"
+ chmod u+x $script
+done
+
+rm -f "$mystart.in"
+
+exit 0
+
=== modified file 'scripts/mysql_install_db.pl.in'
--- a/scripts/mysql_install_db.pl.in 2012-10-19 18:17:44 +0000
+++ b/scripts/mysql_install_db.pl.in 2012-11-02 18:47:08 +0000
@@ -353,7 +353,9 @@ sub tell_root_password {
sub generate_random_password {
# Short term:
# On (at least) Linux and Solaris, a "random" device is available, use it:
- # cat /dev/urandom | tr -dc "[:alnum:]" | fold -w 8 | head -1
+ # cat /dev/urandom | LC_CTYPE=C tr -dc "[:alnum:]" | fold -w 8 | head -1
+ # Without LC_CTYPE, "tr" may not know the "alnum" character class -
+ # and there are user profiles which do not have this set.
# Note: There is no guarantee the results will pass a validation checker
# as resulted from WL#2739
# http://wl.no.oracle.com/worklo/?tid=2739
@@ -364,7 +366,7 @@ sub generate_random_password {
# http://search.cpan.org/~cgrau/String-MkPasswd/bin/mkpasswd.pl
# Using it got approved recently.
#
- my $password = `cat /dev/urandom | tr -dc "[:alnum:]" | fold -w 8 | head -1`;
+ my $password = `cat /dev/urandom | LC_CTYPE=C tr -dc "[:alnum:]" | fold -w 8 | head -1`;
chomp ($password);
return $password;
}
No bundle (reason: useless for push emails).
| Thread |
|---|
| • bzr push into mysql-5.6 branch (joerg.bruehe:4531 to 4536) | Joerg Bruehe | 5 Nov |