diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7429a33500949cdab9fd1e30d8cd70f159064287..5ba66117cf4d0e287388c06d2d74c9b6d435086d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2006, 2013, 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
@@ -366,6 +366,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)
diff --git a/packaging/solaris/CMakeLists.txt b/packaging/solaris/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..02881e0af8f9c2ebdd965ba3d7b5f766e7eed4e5
--- /dev/null
+++ b/packaging/solaris/CMakeLists.txt
@@ -0,0 +1,32 @@
+# Copyright (c) 2013, 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()
diff --git a/packaging/solaris/postinstall-solaris.sh b/packaging/solaris/postinstall-solaris.sh
new file mode 100644
index 0000000000000000000000000000000000000000..027969fcf0e1c32dd67438268e088b183e2e5fdd
--- /dev/null
+++ b/packaging/solaris/postinstall-solaris.sh
@@ -0,0 +1,124 @@
+#!/bin/sh
+#
+# Copyright (c) 2008, 2013, 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@gmail.com> 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
+