List:Commits« Previous MessageNext Message »
From:Joerg Bruehe Date:November 2 2012 7:17pm
Subject:bzr push into mysql-trunk branch (joerg.bruehe:4893 to 4894)
View as plain text  
 4894 Joerg Bruehe	2012-11-02 [merge]
      Upmerge

    added:
      packaging/solaris/
      packaging/solaris/CMakeLists.txt
      packaging/solaris/postinstall-solaris.sh
    modified:
      CMakeLists.txt
      scripts/mysql_install_db.pl.in
 4893 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 patch is the second step in this WL which completely removes this
      custom implementation. To do this it:
      * Removes USE_SYMDIR macro and all code withing #ifdef USE_SYMDIR.
      * Replaces usage of my_disable_symlinks with my_enable_symlinks
        to facilitate the next step.
      * Removes my_use_symdir global variable. In places where it is used
        to check if DATA/INDEX DIRECTORY clause should be supported we use
        my_enable_symlinks instead. Uses my_enable_symlinks to store value
        of --symbolic-links start-up option.
      
      After this change --symbolic-links option doesn't have any effect on
      Windows. But it still controls behavior for DATA/INDEX DIRECTORY
      clauses for MyISAM and Archive tables on Unix platforms.

    modified:
      cmake/os/Windows.cmake
      config.h.cmake
      extra/replace.c
      include/my_sys.h
      mysys/mf_pack.c
      mysys/my_static.c
      mysys/my_symlink2.c
      sql/mysqld.cc
      sql/sql_cache.cc
      sql/sql_show.cc
      sql/sql_table.cc
      sql/sql_table.h
      storage/archive/ha_archive.cc
      storage/myisam/ha_myisam.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)

=== 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-trunk branch (joerg.bruehe:4893 to 4894) Joerg Bruehe5 Nov