List:Commits« Previous MessageNext Message »
From:Joerg Bruehe Date:November 2 2012 7:17pm
Subject:bzr push into mysql-5.6 branch (joerg.bruehe:4531 to 4536)
View as plain text  
 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 Bruehe5 Nov