diff options
Diffstat (limited to 'support-files')
23 files changed, 981 insertions, 75 deletions
diff --git a/support-files/CMakeLists.txt b/support-files/CMakeLists.txt index 3ad48520dfb..fde4746df16 100644 --- a/support-files/CMakeLists.txt +++ b/support-files/CMakeLists.txt @@ -1,4 +1,5 @@ -# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2006, 2010, Oracle and/or its affiliates. +# Copyright (c) 2012, Monty Program Ab # # 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 @@ -65,6 +66,7 @@ IF(UNIX) ENDFOREACH() IF(INSTALL_SUPPORTFILESDIR) INSTALL(FILES magic DESTINATION ${inst_location} COMPONENT SupportFiles) + INSTALL(DIRECTORY RHEL4-SElinux/ DESTINATION ${inst_location}/SELinux/RHEL4 COMPONENT SupportFiles) ENDIF() INSTALL(FILES mysql.m4 DESTINATION ${INSTALL_SHAREDIR}/aclocal COMPONENT Development) @@ -91,4 +93,30 @@ IF(UNIX) DESTINATION ${inst_location} COMPONENT SupportFiles PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + + IF (INSTALL_SYSCONFDIR) + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mysql-log-rotate DESTINATION ${INSTALL_SYSCONFDIR}/logrotate.d + RENAME mysql COMPONENT SupportFiles) + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mysql.server + DESTINATION ${INSTALL_SYSCONFDIR}/init.d + RENAME mysql COMPONENT SupportFiles + PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ + GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + + INSTALL(FILES rpm/my.cnf DESTINATION ${INSTALL_SYSCONFDIR} + COMPONENT Common) + INSTALL(FILES rpm/client.cnf DESTINATION ${INSTALL_SYSCONFDIR}/my.cnf.d + COMPONENT SharedLibraries) + INSTALL(FILES rpm/mysql-clients.cnf DESTINATION ${INSTALL_SYSCONFDIR}/my.cnf.d + COMPONENT Client) + INSTALL(FILES rpm/server.cnf DESTINATION ${INSTALL_SYSCONFDIR}/my.cnf.d + COMPONENT IniFiles) + + # This is for SuSE: + INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink + ${INSTALL_SYSCONFDIR}/init.d/mysql + ${INSTALL_SBINDIR}/rcmysql + WORKING_DIRECTORY \$ENV{DESTDIR}${prefix})" + COMPONENT SupportFiles) + ENDIF(INSTALL_SYSCONFDIR) ENDIF() diff --git a/support-files/MacOSX/ReadMe.txt b/support-files/MacOSX/ReadMe.txt index b3dcba21705..d81ec1f66d6 100644 --- a/support-files/MacOSX/ReadMe.txt +++ b/support-files/MacOSX/ReadMe.txt @@ -1,8 +1,378 @@ -You can find information about how to install on Mac OS X at +2.7. Installing MySQL on Mac OS X - http://dev.mysql.com/doc/refman/5.1/en/mac-os-x-installation.html + MySQL for Mac OS X is available in a number of different forms: -The MySQL Reference Manual is also available in various formats on -http://dev.mysql.com/doc; if you're interested in the DocBook XML -sources go to http://svn.mysql.com. + * Native Package Installer format, which uses the native Mac OS + X installer to walk you through the installation of MySQL. For + more information, see Section 2.7.1, "Installing MySQL Using + the Installation Package." You can use the package installer + with Mac OS X 10.3 and later, and available for both PowerPC + and Intel architectures, and both 32-bit and 64-bit + architectures. There is no Universal Binary available using + the package installation method. The user you use to perform + the installation must have administrator privileges. + + * Tar package format, which uses a file packaged using the Unix + tar and gzip commands. To use this method, you will need to + open a Terminal window. You do not need administrator + privileges using this method, as you can install the MySQL + server anywhere using this method. For more information on + using this method, you can use the generic instructions for + using a tarball, Section 2.2, "Installing MySQL from Generic + Binaries on Unix/Linux."You can use the package installer with + Mac OS X 10.3 and later, and available for both PowerPC and + Intel architectures, and both 32-bit and 64-bit architectures. + A Universal Binary, incorporating both Power PC and Intel + architectures and 32-bit and 64-bit binaries is available. + In addition to the core installation, the Package Installer + also includes Section 2.7.2, "Installing the MySQL Startup + Item" and Section 2.7.3, "Installing and Using the MySQL + Preference Pane," both of which simplify the management of + your installation. + + * Mac OS X server includes a version of MySQL as standard. If + you want to use a more recent version than that supplied with + the Mac OS X server release, you can make use of the package + or tar formats. For more information on using the MySQL + bundled with Mac OS X, see Section 2.7.4, "Using MySQL on Mac + OS X Server." + + For additional information on using MySQL on Mac OS X, see Section + 2.7.5, "MySQL Installation on Mac OS X Notes." + +2.7.1. Installing MySQL Using the Installation Package + + You can install MySQL on Mac OS X 10.3.x ("Panther") or newer + using a Mac OS X binary package in PKG format instead of the + binary tarball distribution. Please note that older versions of + Mac OS X (for example, 10.1.x or 10.2.x) are not supported by this + package. + + The package is located inside a disk image (.dmg) file that you + first need to mount by double-clicking its icon in the Finder. It + should then mount the image and display its contents. + +Note + + Before proceeding with the installation, be sure to shut down all + running MySQL server instances by either using the MySQL Manager + Application (on Mac OS X Server) or via mysqladmin shutdown on the + command line. + + When installing from the package version, you should also install + the MySQL Preference Pane, which will allow you to control the + startup and execution of your MySQL server from System + Preferences. For more information, see Section 2.7.3, "Installing + and Using the MySQL Preference Pane." + + When installing using the package installer, the files are + installed into a directory within /usr/local matching the name of + the installation version and platform. For example, the installer + file mysql-5.1.39-osx10.5-x86_64.pkg installs MySQL into + /usr/local/mysql-5.1.39-osx10.5-x86_64 . The installation layout + of the directory is as shown in the following table: + Directory Contents of Directory + bin Client programs and the mysqld server + data Log files, databases + docs Manual in Info format + include Include (header) files + lib Libraries + man Unix manual pages + mysql-test MySQL test suite + scripts Contains the mysql_install_db script + share/mysql Error message files + sql-bench Benchmarks + support-files Scripts and sample configuration files + /tmp/mysql.sock The location of the MySQL Unix socket + + During the package installer process, a symbolic link from + /usr/local/mysql to the version/platform specific directory + created during installation will be created automatically. + + 1. Download and open the MySQL package installer, which is + provided on a disk image (.dmg). Double-click to open the disk + image, which includes the main MySQL installation package, the + MySQLStartupItem.pkg installation package, and the + MySQL.prefPane. + + 2. Double-click on the MySQL installer package. It will be named + according to the version of MySQL you have downloaded. For + example, if you have downloaded MySQL 5.1.39, double-click + mysql-5.1.39-osx10.5-x86.pkg. + + 3. You will be presented with the openin installer dialog. Click + Continue to begihn installation. + MySQL Package Installer: Step 1 + + 4. A copy of the installation instructions and other important + information relevant to this installation are display. Click + Continue . + + 5. If you have downloaded the community version of MySQL, you + will be shown a copy of the relevent GNU General Public + License. Click Continue . + + 6. Select the drive you want to use to install the MySQL Startup + Item. The drive must have a valid, bootable, Mac OS X + operating system installed. Click Continue. + MySQL Package Installer: Step 4 + + 7. You will be asked to confirm the details of the installation, + including the space required for the installation. To change + the drive on which the startup item is installed you can click + either Go Back or Change Install Location.... To install the + startup item, click Install. + + 8. Once the installation has been completed successfully, you + will be given an Install Succeeded message. + + Once you have completed the basic installation, you must complete + the post-installation steps as specifed in Section 2.13, + "Post-Installation Setup and Testing." + + For convenience, you may also want to install the Section 2.7.2, + "Installing the MySQL Startup Item" and Section 2.7.3, "Installing + and Using the MySQL Preference Pane." + +2.7.2. Installing the MySQL Startup Item + + The MySQL Installation Package includes a startup item that can be + used to automatically startup and shutdown MySQL during boot. + + To install the MySQL Startup Item: + + 1. Download and open the MySQL package installer, which is + provided on a disk image (.dmg). Double-click to open the disk + image, which includes the main MySQL installation package, the + MySQLStartupItem.pkg installation package, and the + MySQL.prefPane. + + 2. Double-click on the MySQLStartItem.pkg file to start the + installation process. + + 3. You will be presented with the Install MySQL Startup Item + dialog. + MySQL Startup Item Installer: Step 1 + Click Continue to continue the installation process. + + 4. A copy of the installation instructions and other important + information relevant to this installation are display. Click + Continue . + + 5. Select the drive you want to use to install the MySQL Startup + Item. The drive must have a valid, bootable, Mac OS X + operating system installed. Click Continue. + MySQL Startup Item Installer: Step 3 + + 6. You will be asked to confirm the details of the installation. + To change the drive on which the startup item is installed you + can click either Go Back or Change Install Location.... To + install the startup item, click Install. + + 7. Once the installation has been completed successfully, you + will be given an Install Succeeded message. + MySQL Startup Item Installer: Step 5 + + The Startup Item for MySQL is installed into + /Library/StartupItems/MySQLCOM. The Startup Item installation adds + a variable MYSQLCOM=-YES- to the system configuration file + /etc/hostconfig. If you want to disable the automatic startup of + MySQL, simply change this variable to MYSQLCOM=-NO-. + + After the installation, you can start up MySQL by running the + following commands in a terminal window. You must have + administrator privileges to perform this task. + + If you have installed the Startup Item, use this command to start + the server: +shell> sudo /Library/StartupItems/MySQLCOM/MySQLCOM start + + You may be prompted for your password to complete the startup. + + If you have installed the Startup Item, use this command to stop + the server: +shell> sudo /Library/StartupItems/MySQLCOM/MySQLCOM stop + + You may be prompted for your password to complete the shutdown. + +2.7.3. Installing and Using the MySQL Preference Pane + + The MySQL Package installer disk image also includes a custom + MySQL Preference Pane that enables you to start, stop and control + automated startup during boot of your MySQL installation. + + To install the MySQL Preference Pane: + + 1. Download and open the MySQL package installer package, which + is provided on a disk image (.dmg). Double-click to open the + disk image, which includes the main MySQL installation + package, the MySQLStartupItem.pkg installation package, and + the MySQL.prefPane. + + 2. Double click on MySQL.prefPane. The MySQL System Preferences + will open. + + 3. If this is the first time you have installed the preference + pane, you will be asked to confirm installation and whether + you want to install the preference pane for all users, or only + the current user. To install the preference pane for all users + you will need administrator privileges. If necessary, you will + be prompted for the username and password for a user with + administrator privileges. + + 4. If you already have the MySQL Preference Pane installed, you + will be asked to confirm whether you want to overwrite the + existing MySQL Preference Pane. + +Note + + The MySQL Preference Pane only starts and stops MySQL installation + installed from the MySQL package installation that have been + installed in the default location. + + Once the MySQL Preference Pane has been installed, you can control + your MySQL server instance using the preference pane. To use the + preference pane, open the System Preferences... from the Apple + menu. Select the MySQL preference pane by clicking on the MySQL + logo within the Other section of the preference panes list. + MySQL Preference Pane + + The MySQL Preference Pane shows the current status of the MySQL + server, showing stopped (in red) if the server is not running and + running (in green) if the server has already been started. The + preference pane will also show the current setting for whether the + MySQL server has been set to start up automatically. + + * To start MySQL using the preference pane: + Click Start MySQL Server. You may be prompted for the username + and password of a user with administrator privileges to start + the MySQL server. + + * To stop MySQL using the preference pane: + Click Stop MySQL Server. You may be prompted for the username + and password of a user with administrator privileges to + shutdown the MySQL server. + + * To automatically start the MySQL server when the system boots: + Check the checkbox next to Automatically Start MySQL Server on + Startup. + + * To disable the automatic starting of the MySQL server when the + system boots: + Uncheck the checkbox next to Automatically Start MySQL Server + on Startup. + + You can close the System Preferences... once you have completed + your settings. + +2.7.4. Using MySQL on Mac OS X Server + + If you are running Mac OS X Server, a version of MySQL should + already be installed. The following table shows the versions of + MySQL that ship with Mac OS X Server versions. + Mac OS X Server Version MySQL Version + 10.2-10.2.2 3.23.51 + 10.2.3-10.2.6 3.23.53 + 10.3 4.0.14 + 10.3.2 4.0.16 + 10.4.0 4.1.10a + 10.5.0 5.0.45 + 10.6.0 5.0.82 + + The installation layout of MySQL on Mac OS X Server is as shown in + the table below: + Directory Contents of Directory + /usr/bin Client programs + /var/mysql Log files, databases + /usr/libexec The mysqld server + /usr/share/man Unix manual pages + /usr/share/mysql/mysql-test MySQL test suite + /usr/share/mysql Contains the mysql_install_db script + /var/mysql/mysql.sock The location of the MySQL Unix socket + +Note + + The MySQL server bundled with Mac OS X Server does not include the + MySQL client libraries and header files required if you want to + access and use MySQL from a third-party driver, such as Perl DBI + or PHP. For more information on obtaining and installing MySQL + libraries, see Mac OS X Server version 10.5: MySQL libraries + available for download (http://support.apple.com/kb/TA25017). + Alternatively, you can ignore the bundled MySQL server and install + MySQL from the package or tarball installation. + + For more information on managing the bundled MySQL instance in Mac + OS X Server 10.5, see Mac OS X Server: Web Technologies + Administration For Version 10.5 Leopard + (http://images.apple.com/server/macosx/docs/Web_Technologies_Admin + _v10.5.pdf). For more information on managing the bundled MySQL + instance in Mac OS X Server 10.6, see Mac OS X Server: Web + Technologies Administration Version 10.6 Snow Leopard + (http://manuals.info.apple.com/en_US/WebTech_v10.6.pdf). + +2.7.5. MySQL Installation on Mac OS X Notes + + You should keep the following issues and notes in mind: + + * The default location for the MySQL Unix socket is different on + Mac OS X and Mac OS X Server depending on the installation + type you chose. The default locations by installation are as + follows: + + Package Installer from MySQL /tmp/mysql.sock + Tarball from MySQL /tmp/mysql.sock + MySQL Bundled with Mac OS X Server /var/mysql/mysql.sock + To prevent issues, you should either change the configuration + of the socket used within your application (for example, + changing php.ini), or you should configure the socket location + using a MySQL configuration file and the socket option. For + more information, see Section 5.1.2, "Server Command Options." + + * You may need (or want) to create a specific mysql user to own + the MySQL directory and data. On Mac OS X 10.4 and lower you + can do this by using the Netinfo Manager application, located + within the Utilities folder within the Applications folder. On + Mac OS X 10.5 and later you can do this through the Directory + Utility. From Mac OS X 10.5 and later (including Mac OS X + Server 10.5) the mysql should already exist. For use in single + user mode, an entry for _mysql (note the underscore prefix) + should already exist within the system /etc/passwd file. + + * Due to a bug in the Mac OS X package installer, you may see + this error message in the destination disk selection dialog: +You cannot install this software on this disk. (null) + If this error occurs, simply click the Go Back button once to + return to the previous screen. Then click Continue to advance + to the destination disk selection again, and you should be + able to choose the destination disk correctly. We have + reported this bug to Apple and it is investigating this + problem. + + * Because the MySQL package installer installs the MySQL + contents into a version and platform specific directory, you + can use this to upgrade and migrate your database between + versions. You will need to either copy the data directory from + the old version to the new version, or alternatively specify + an alternative datadir value to set location of the data + directory. + + * You might want to add aliases to your shell's resource file to + make it easier to access commonly used programs such as mysql + and mysqladmin from the command line. The syntax for bash is: +alias mysql=/usr/local/mysql/bin/mysql +alias mysqladmin=/usr/local/mysql/bin/mysqladmin + For tcsh, use: +alias mysql /usr/local/mysql/bin/mysql +alias mysqladmin /usr/local/mysql/bin/mysqladmin + Even better, add /usr/local/mysql/bin to your PATH environment + variable. You can do this by modifying the appropriate startup + file for your shell. For more information, see Section 4.2.1, + "Invoking MySQL Programs." + + * After you have copied over the MySQL database files from the + previous installation and have successfully started the new + server, you should consider removing the old installation + files to save disk space. Additionally, you should also remove + older versions of the Package Receipt directories located in + /Library/Receipts/mysql-VERSION.pkg. diff --git a/support-files/ccfilter b/support-files/ccfilter new file mode 100644 index 00000000000..e2957cd3228 --- /dev/null +++ b/support-files/ccfilter @@ -0,0 +1,104 @@ +#! /usr/bin/perl + +# Post-processor for compiler output to filter out warnings matched in +# support-files/compiler_warnings.supp. This makes it easier to check +# that no new warnings are introduced without needing to submit a build +# for Buildbot. +# +# Use by setting CC="ccfilter gcc" CXX="ccfilter gcc" before ./configure. +# +# By default, just filters the output for suppressed warnings. If the +# FAILONWARNING environment variable is set, then instead will fail the +# compile on encountering a non-suppressed warnings. + +use strict; +use warnings; + +my $suppressions; + +open STDOUT_COPY, ">&STDOUT" + or die "Failed to dup stdout: $!]n"; + +my $pid= open(PIPE, '-|'); + +if (!defined($pid)) { + die "Error: Cannot fork(): $!\n"; +} elsif (!$pid) { + # Child. + # actually want to send the STDERR to the parent, not the STDOUT. + # So shuffle things around a bit. + open STDERR, ">&STDOUT" + or die "Child: Failed to dup pipe to parent: $!\n"; + open STDOUT, ">&STDOUT_COPY" + or die "Child: Failed to dup parent stdout: $!\n"; + close STDOUT_COPY; + exec { $ARGV[0] } @ARGV; + die "Child: exec() failed: $!\n"; +} else { + # Parent. + close STDOUT_COPY; + my $cwd= qx(pwd); + chomp($cwd); + while (<PIPE>) { + my $line= $_; + if (/^(.*?):([0-9]+): [Ww]arning: (.*)$/) { + my ($file, $lineno, $msg)= ($1, $2, $3); + $file= "$cwd/$file"; + + next + if check_if_suppressed($file, $lineno, $msg); + die "$line\nGot warning, terminating.\n" + if $ENV{FAILONWARNING}; + print STDERR $line; + next; + } + + print STDERR $line; + } + close(PIPE); +} + +exit 0; + +sub check_if_suppressed { + my ($file, $lineno, $msg)= @_; + load_suppressions() unless defined($suppressions); + for my $s (@$suppressions) { + my ($file_re, $msg_re, $start, $end)= @$s; + if ($file =~ /$file_re/ && + $msg =~ /$msg_re/ && + (!defined($start) || $start <= $lineno) && + (!defined($end) || $end >= $lineno)) { + return 1; + } + } + return undef; +} + +sub load_suppressions { + # First find the suppressions file, might be we need to move up to + # the base directory. + my $path = "support-files/compiler_warnings.supp"; + my $exists; + for (1..10) { + $exists= -f $path; + last if $exists; + $path= '../'. $path; + } + die "Error: Could not find suppression file (out of source dir?).\n" + unless $exists; + + $suppressions= []; + open "F", "<", $path + or die "Error: Could not read suppression file '$path': $!\n"; + while (<F>) { + # Skip comment and empty lines. + next if /^\s*(\#.*)?$/; + die "Invalid syntax in suppression file '$path', line $.:\n$_" + unless /^\s*(.+?)\s*:\s*(.+?)\s*(?:[:]\s*([0-9]+)(?:-([0-9]+))?\s*)?$/; + my ($file_re, $line_re, $start, $end)= ($1, $2, $3, $4); + $end = $start + if defined($start) && !defined($end); + push @$suppressions, [$file_re, $line_re, $start, $end]; + } +} diff --git a/support-files/compiler_warnings.supp b/support-files/compiler_warnings.supp index 048f74aea91..1168770d624 100644 --- a/support-files/compiler_warnings.supp +++ b/support-files/compiler_warnings.supp @@ -1,24 +1,10 @@ -# Copyright (C) 2007 MySQL AB -# -# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - # # This file contains compiler warnings that can # be ignored for various reasons. # integer.cpp: .*control reaches end of non-void function.*: 1288-1427 +integer.cpp: .*no return statement in function returning non-void.*: 1288-1427 DictTabInfo.cpp : .*invalid access to non-static.* DictTabInfo.cpp : .*macro was used incorrectly.* DbdihMain.cpp : .*unused variable.* : 6666-7013 @@ -38,8 +24,29 @@ sql_yacc.cc : .*switch statement contains 'default' but no 'case' labels.* # Things that can be ignored in InnoDB # pars0grm.tab.c: .*'yyerrorlab' : unreferenced label.* +pars0grm.c: 'yyerrorlab' : unreferenced label _flex_tmp.c: .*not enough actual parameters for macro 'yywrap'.* +lexyy.c : not enough actual parameters for macro 'yywrap' pars0lex.l: .*conversion from 'ulint' to 'int', possible loss of data.* +btr/btr0cur\.c: .*value computed is not used.*: 3175-3375 +include/buf0buf\.ic: unused parameter .*mtr.* +fil/fil0fil\.c: pointer targets in passing argument.*differ in signedness +fil/fil0fil\.c: comparison between signed and unsigned : 3100-3199 +fil/fil0fil\.c: unused parameter +log/log0recv\.c: unused variable +os/os0file\.c: unused parameter +os/os0file\.c: pointer targets in assignment differ in signedness +handler/i_s\.cc: unused variable +sync/sync0rw\.c: unused parameter +sync/sync0sync\.c: unused parameter +sync/sync0sync\.c: unused variable +ut/ut0ut\.c: ignoring return value of +srv/srv0srv\.c: value computed is not used +buf/buf0buf\.c: .*block_mutex.* might be used uninitialized +btr/btr0cur\.c: null argument where non-null required: 1800-3000 +btr/btr0btr\.c: null argument where non-null required: 2500-3000 +ibuf/ibuf0ibuf.c: null argument where non-null required: 700-1000 +fsp0fsp\.c: result of 32-bit shift implicitly converted to 64 bits # # bdb is not critical to keep up to date @@ -54,6 +61,33 @@ db_vrfy.c : .*comparison is always false due to limited range of data type.* # readline is not maintained by us # .*/cmd-line-utils/readline/.* : .* +readline\.c : unused parameter +term\.c : unused parameter +vi\.c : unused parameter +common\.c : unused parameter +term\.c : .* + +# +# Ignore some warnings in libevent, which is not maintained by us. +# +.*/extra/libevent/.* : .*unused parameter.* +.*/extra/libevent/select\.c : .*comparison between signed and unsigned.* : 270-280 +signal\.c : .*unused parameter.* + +# +# Ignore warnings from system libraries +# +/usr/share/aclocal/audiofile.m4 : .* + +# +# Ignore strict-aliasing warnings (for now) +# +.*: break strict-aliasing rules + +# +# Ignore not important declaration warnings +# +.*: only defines private constructors and has no friends # # Ignore all conversion warnings on windows 64 @@ -76,6 +110,12 @@ db_vrfy.c : .*comparison is always false due to limited range of data type.* .* : conversion from '.*size_t' to 'UINT'.* .* : conversion from '.*size_t' to 'uInt'.* .* : conversion from '.*size_t' to 'uint16'.* +.* : The following environment variables were not found.* +.* : no public symbols found; archive member will be inaccessible +.* : DESCRIPTION statement not supported + +# Ignore uninitialized local variables on windows +.* : uninitialized local variable .* used # # The following should be fixed by the ndb team @@ -85,16 +125,75 @@ db_vrfy.c : .*comparison is always false due to limited range of data type.* .*/ndb/.* : .*defined but not used.* # +# Aria warning that is ok in debug builds +# +storage/maria/ma_pagecache.c: .*'info_check_pin' defined but not used + +# +# Pbxt +# +xaction_xt\.cc: may be used uninitialized in this function +lock_xt\.cc : uninitialized local variable .* used +restart_xt\.cc : dereferencing pointer .* does break strict-aliasing + +# +# I think these are due to mix of C and C++. +# +storage/pbxt/ : typedef.*was ignored in this declaration +ha_pbxt\.cc : variable.*might be clobbered by.*longjmp +table_xt\.cc : variable.*might be clobbered by.*longjmp + +# +# Yassl +# +include/runtime.hpp: .*pure_error.* +.*/extra/yassl/.*taocrypt/.*: comparison with string literal +.*/extra/yassl/taocrypt/src/blowfish\.cpp: array subscript is above array bounds +.*/extra/yassl/taocrypt/src/file\.cpp: ignoring return value +.*/extra/yassl/taocrypt/src/integer\.cpp: control reaches end of non-void function +mySTL/algorithm\.hpp: is used uninitialized in this function + +# +# Groff warnings on OpenSUSE. +# +.*/dbug/.*(groff|<standard input>) : .* + +# +# Warnings on OpenSolaris +# +.*/my_config\.h : _FILE_OFFSET_BITS +/usr/include/sys/feature_tests.h : this is the location of the previous definition + +# # Unexplanable (?) stuff # listener.cc : .*conversion from 'SOCKET' to 'int'.* net_serv.cc : .*conversion from 'SOCKET' to 'int'.* +# +# Ignorable warnings from header files +# +backward_warning\.h : This file includes at least one + # allow a little moving space for the warning below -mi_packrec.c : .*result of 32-bit shift implicitly converted to 64 bits.* : 560-600 +mi_packrec\.c : .*result of 32-bit shift implicitly converted to 64 bits.* : 560-600 +ma_packrec\.c : .*result of 32-bit shift implicitly converted to 64 bits.* : 550-650 # # Wrong compiler warnings # .* : .*no matching operator delete found; memory will not be freed if initialization throws an exception.* -ctype-simple.c : .*unary minus operator applied to unsigned type, result still unsigned.* +ctype-simple\.c : .*unary minus operator applied to unsigned type, result still unsigned.* + +# Wrong warning due to GCC bug: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29478 +regexec\.c : passing argument 3 of.*matcher.* discards qualifiers from pointer target type +libmysql\.c: passing argument 2 of .*memcpy.* discards qualifiers from pointer target type : 3000-4000 +storage/xtradb/dict/dict0dict\.c : passing argument 1 of .*strcpy.* discards qualifiers from pointer target type : 2500-3500 +storage/xtradb/sync/sync0rw\.c : passing argument 1 of .*memset.* discards qualifiers from pointer target type : 200-300 + +# +# Strange things from autoconf that is probably safe to ignore +# + +configure.in : warning: AC_LANG_CONFTEST: no AC_LANG_SOURCE call detected in body +configure.in : config/ac-macros/character_sets.m4.*prefer named diversions diff --git a/support-files/config.huge.ini.sh b/support-files/config.huge.ini.sh index f98074828a7..f98074828a7 100755..100644 --- a/support-files/config.huge.ini.sh +++ b/support-files/config.huge.ini.sh diff --git a/support-files/config.medium.ini.sh b/support-files/config.medium.ini.sh index 1de7f64912e..1de7f64912e 100755..100644 --- a/support-files/config.medium.ini.sh +++ b/support-files/config.medium.ini.sh diff --git a/support-files/config.small.ini.sh b/support-files/config.small.ini.sh index 0af60e5dc91..0af60e5dc91 100755..100644 --- a/support-files/config.small.ini.sh +++ b/support-files/config.small.ini.sh diff --git a/support-files/magic b/support-files/magic index 9844142ba93..b3f3b3ea29d 100644 --- a/support-files/magic +++ b/support-files/magic @@ -4,12 +4,23 @@ # 0 beshort 0xfe01 MySQL table definition file >2 byte x Version %d -0 belong&0xffffff00 0xfefe0300 MySQL MISAM index file +0 belong&0xffffff00 0xfefe0700 MySQL MyISAM index file >3 byte x Version %d -0 belong&0xffffff00 0xfefe0700 MySQL MISAM compressed data file +0 belong&0xffffff00 0xfefe0800 MySQL MyISAM compressed data file +>3 byte x Version %d +0 belong&0xffffff00 0xfefe0900 MySQL Maria index file +>3 byte x Version %d +0 belong&0xffffff00 0xfefe0A00 MySQL Maria compressed data file >3 byte x Version %d 0 belong&0xffffff00 0xfefe0500 MySQL ISAM index file >3 byte x Version %d 0 belong&0xffffff00 0xfefe0600 MySQL ISAM compressed data file >3 byte x Version %d 0 string \376bin MySQL replication log +0 belong&0xffffff00 0xfefe0b00 +>4 string MARIALOG MySQL Maria transaction log file +>>3 byte x Version %d +0 belong&0xffffff00 0xfefe0c00 +>4 string MACF MySQL Maria control file +>>3 byte x Version %d + diff --git a/support-files/my-huge.cnf.sh b/support-files/my-huge.cnf.sh index 378a1df67aa..896b139273b 100644 --- a/support-files/my-huge.cnf.sh +++ b/support-files/my-huge.cnf.sh @@ -1,13 +1,15 @@ -# Example MySQL config file for very large systems. +# Example MariaDB config file for very large systems. # # This is for a large system with memory of 1G-2G where the system runs mainly -# MySQL. +# MariaDB. # -# MySQL programs look for option files in a set of +# MariaDB programs look for option files in a set of # locations which depend on the deployment platform. # You can copy this option file to one of those -# locations. For information about these locations, see: -# http://dev.mysql.com/doc/mysql/en/option-files.html +# locations. For information about these locations, do: +# 'my_print_defaults --help' and see what is printed under +# Default options are read from the following files in the given order: +# More information at: http://dev.mysql.com/doc/mysql/en/option-files.html # # In this file, you can use all long options that a program supports. # If you want to know which options a program supports, run the program @@ -38,6 +40,9 @@ query_cache_size = 32M # Try number of CPU's*2 for thread_concurrency thread_concurrency = 8 +# Point the following paths to a dedicated disk +#tmpdir = /tmp/ + # Don't listen on a TCP/IP port at all. This can be a security enhancement, # if all processes that need to connect to mysqld run on the same host. # All interaction with mysqld must be made via Unix sockets or named pipes. @@ -116,7 +121,7 @@ server-id = 1 # Uncomment the following if you are using InnoDB tables #innodb_data_home_dir = @localstatedir@ #innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend -#innodb_log_group_home_dir = @localstatedir@ +o#innodb_log_group_home_dir = @localstatedir@ # You can set .._buffer_pool_size up to 50 - 80 % # of RAM but beware of setting memory usage too high #innodb_buffer_pool_size = 384M diff --git a/support-files/my-innodb-heavy-4G.cnf.sh b/support-files/my-innodb-heavy-4G.cnf.sh index 3fce97cf1d2..d934b23cf0d 100644 --- a/support-files/my-innodb-heavy-4G.cnf.sh +++ b/support-files/my-innodb-heavy-4G.cnf.sh @@ -4,15 +4,17 @@ #END CONFIG INFO # -# This is a MySQL example config file for systems with 4GB of memory -# running mostly MySQL using InnoDB only tables and performing complex +# This is a MariaDB example config file for systems with 4GB of memory +# running mostly MariaDB using InnoDB only tables and performing complex # queries with few connections. # -# MySQL programs look for option files in a set of +# MariaDB programs look for option files in a set of # locations which depend on the deployment platform. # You can copy this option file to one of those -# locations. For information about these locations, see: -# http://dev.mysql.com/doc/mysql/en/option-files.html +# locations. For information about these locations, do: +# 'my_print_defaults --help' and see what is printed under +# Default options are read from the following files in the given order: +# More information at: http://dev.mysql.com/doc/mysql/en/option-files.html # # In this file, you can use all long options that a program supports. # If you want to know which options a program supports, run the program @@ -23,11 +25,11 @@ # # -# The following options will be read by MySQL client applications. -# Note that only client applications shipped by MySQL are guaranteed -# to read this section. If you want your own MySQL client program to +# The following options will be read by MariaDB client applications. +# Note that only client applications shipped by MariaDB are guaranteed +# to read this section. If you want your own MariaDB client program to # honor these values, you need to specify it as an option during the -# MySQL client library initialization. +# MariaDB client library initialization. # [client] #password = [your_password] @@ -37,7 +39,7 @@ socket = @MYSQL_UNIX_ADDR@ # *** Application-specific options follow here *** # -# The MySQL server +# The MariaDB server # [mysqld] @@ -46,7 +48,7 @@ port = @MYSQL_TCP_PORT@ socket = @MYSQL_UNIX_ADDR@ # back_log is the number of connections the operating system can keep in -# the listen queue, before the MySQL connection manager thread has +# the listen queue, before the MariaDB connection manager thread has # processed them. If you have a very high connection rate and experience # "connection refused" errors, you might need to increase this value. # Check your OS documentation for the maximum value of this parameter. @@ -62,14 +64,14 @@ back_log = 50 # (via the "enable-named-pipe" option) will render mysqld useless! #skip-networking -# The maximum amount of concurrent sessions the MySQL server will +# The maximum amount of concurrent sessions the MariaDB server will # allow. One of these connections will be reserved for a user with # SUPER privileges to allow the administrator to login even if the # connection limit has been reached. max_connections = 100 # Maximum amount of errors allowed per host. If this limit is reached, -# the host will be blocked from connecting to the MySQL server until +# the host will be blocked from connecting to the MariaDB server until # "FLUSH HOSTS" has been run or the server was restarted. Invalid # passwords and other errors during the connect phase result in # increasing this value. See the "Aborted_connects" status variable for @@ -171,7 +173,7 @@ query_cache_limit = 2M ft_min_word_len = 4 # If your system supports the memlock() function call, you might want to -# enable this option while running MySQL to keep it locked in memory and +# enable this option while running MariaDB to keep it locked in memory and # to avoid potential swapping out in case of high memory pressure. Good # for performance. #memlock @@ -181,11 +183,11 @@ ft_min_word_len = 4 default-storage-engine = MYISAM # Thread stack size to use. This amount of memory is always reserved at -# connection time. MySQL itself usually needs no more than 64K of +# connection time. MariaDB itself usually needs no more than 64K of # memory, while if you use your own stack hungry UDF functions or your # OS requires more stack for some operations, you might need to set this # to a higher value. -thread_stack = 192K +thread_stack = 240K # Set the default transaction isolation level. Levels available are: # READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE @@ -216,7 +218,7 @@ binlog_format=mixed #log # Print warnings to the error log file. If you have any problem with -# MySQL you should enable logging of warnings and examine the error log +# MariaDB you should enable logging of warnings and examine the error log # for possible explanations. #log_warnings @@ -229,17 +231,24 @@ slow_query_log # All queries taking more than this amount of time (in seconds) will be # trated as slow. Do not use "1" as a value here, as this will result in -# even very fast queries being logged from time to time (as MySQL +# even very fast queries being logged from time to time (as MariaDB # currently measures time with second accuracy only). long_query_time = 2 +# The directory used by MySQL for storing temporary files. For example, +# it is used to perform disk based large sorts, as well as for internal +# and explicit temporary tables. It might be good to put it on a +# swapfs/tmpfs filesystem, if you do not create very large temporary +# files. Alternatively you can put it on dedicated disk. You can +# specify multiple paths here by separating them by ";" - they will then +# be used in a round-robin fashion. +#tmpdir = /tmp # *** Replication related settings - # Unique server identification number between 1 and 2^32-1. This value # is required for both master and slave hosts. It defaults to 1 if -# "master-host" is not set, but will MySQL will not function as a master +# "master-host" is not set, but will MariaDB will not function as a master # if it is omitted. server-id = 1 @@ -320,13 +329,13 @@ key_buffer_size = 32M # This buffer is allocated when a bulk insert is detected. bulk_insert_buffer_size = 64M -# This buffer is allocated when MySQL needs to rebuild the index in +# This buffer is allocated when MariaDB needs to rebuild the index in # REPAIR, OPTIMIZE, ALTER table statements as well as in LOAD DATA INFILE # into an empty table. It is allocated per thread so be careful with # large settings. myisam_sort_buffer_size = 128M -# The maximum size of the temporary file MySQL is allowed to use while +# The maximum size of the temporary file MariaDB is allowed to use while # recreating the index (during REPAIR, ALTER TABLE or LOAD DATA INFILE. # If the file-size would be bigger than this, the index will be created # through the key cache (which is slower). @@ -342,7 +351,7 @@ myisam_recover # *** INNODB Specific options *** -# Use this option if you have a MySQL server with InnoDB support enabled +# Use this option if you have a MariaDB server with InnoDB support enabled # but you do not plan to use it. This will save memory and disk space # and speed up some things. #skip-innodb @@ -373,7 +382,7 @@ innodb_buffer_pool_size = 2G innodb_data_file_path = ibdata1:10M:autoextend # Set this option if you would like the InnoDB tablespace files to be -# stored in another location. By default this is the MySQL datadir. +# stored in another location. By default this is the MariaDB datadir. #innodb_data_home_dir = <directory> # Number of IO threads to use for async IO operations. This value is @@ -424,7 +433,7 @@ innodb_log_file_size = 256M # enough. innodb_log_files_in_group = 3 -# Location of the InnoDB log files. Default is the MySQL datadir. You +# Location of the InnoDB log files. Default is the MariaDB datadir. You # may wish to point it to a dedicated hard drive or a RAID1 volume for # improved performance #innodb_log_group_home_dir diff --git a/support-files/my-large.cnf.sh b/support-files/my-large.cnf.sh index 79d43407cda..6f8dab0b0e2 100644 --- a/support-files/my-large.cnf.sh +++ b/support-files/my-large.cnf.sh @@ -1,19 +1,21 @@ -# Example MySQL config file for large systems. +# Example MariaDB config file for large systems. # # This is for a large system with memory = 512M where the system runs mainly -# MySQL. +# MariaDB. # -# MySQL programs look for option files in a set of +# MariaDB programs look for option files in a set of # locations which depend on the deployment platform. # You can copy this option file to one of those -# locations. For information about these locations, see: -# http://dev.mysql.com/doc/mysql/en/option-files.html +# locations. For information about these locations, do: +# 'my_print_defaults --help' and see what is printed under +# Default options are read from the following files in the given order: +# More information at: http://dev.mysql.com/doc/mysql/en/option-files.html # # In this file, you can use all long options that a program supports. # If you want to know which options a program supports, run the program # with the "--help" option. -# The following options will be passed to all MySQL clients +# The following options will be passed to all MariaDB clients [client] #password = your_password port = @MYSQL_TCP_PORT@ @@ -21,7 +23,7 @@ socket = @MYSQL_UNIX_ADDR@ # Here follows entries for some specific programs -# The MySQL server +# The MariaDB server [mysqld] port = @MYSQL_TCP_PORT@ socket = @MYSQL_UNIX_ADDR@ @@ -38,6 +40,9 @@ query_cache_size= 16M # Try number of CPU's*2 for thread_concurrency thread_concurrency = 8 +# Point the following paths to different dedicated disks +#tmpdir = /tmp/ + # Don't listen on a TCP/IP port at all. This can be a security enhancement, # if all processes that need to connect to mysqld run on the same host. # All interaction with mysqld must be made via Unix sockets or named pipes. diff --git a/support-files/my-medium.cnf.sh b/support-files/my-medium.cnf.sh index 4ec245e88b9..19ab8dfb151 100644 --- a/support-files/my-medium.cnf.sh +++ b/support-files/my-medium.cnf.sh @@ -1,20 +1,22 @@ -# Example MySQL config file for medium systems. +# Example MariaDB config file for medium systems. # -# This is for a system with little memory (32M - 64M) where MySQL plays -# an important part, or systems up to 128M where MySQL is used together with +# This is for a system with little memory (32M - 64M) where MariaDB plays +# an important part, or systems up to 128M where MariaDB is used together with # other programs (such as a web server) # -# MySQL programs look for option files in a set of +# MariaDB programs look for option files in a set of # locations which depend on the deployment platform. # You can copy this option file to one of those -# locations. For information about these locations, see: -# http://dev.mysql.com/doc/mysql/en/option-files.html +# locations. For information about these locations, do: +# 'my_print_defaults --help' and see what is printed under +# Default options are read from the following files in the given order: +# More information at: http://dev.mysql.com/doc/mysql/en/option-files.html # # In this file, you can use all long options that a program supports. # If you want to know which options a program supports, run the program # with the "--help" option. -# The following options will be passed to all MySQL clients +# The following options will be passed to all MariaDB clients [client] #password = your_password port = @MYSQL_TCP_PORT@ @@ -22,7 +24,7 @@ socket = @MYSQL_UNIX_ADDR@ # Here follows entries for some specific programs -# The MySQL server +# The MariaDB server [mysqld] port = @MYSQL_TCP_PORT@ socket = @MYSQL_UNIX_ADDR@ @@ -36,6 +38,9 @@ read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M +# Point the following paths to different dedicated disks +#tmpdir = /tmp/ + # Don't listen on a TCP/IP port at all. This can be a security enhancement, # if all processes that need to connect to mysqld run on the same host. # All interaction with mysqld must be made via Unix sockets or named pipes. diff --git a/support-files/my-small.cnf.sh b/support-files/my-small.cnf.sh index 7b215988572..8c78072c0a7 100644 --- a/support-files/my-small.cnf.sh +++ b/support-files/my-small.cnf.sh @@ -34,7 +34,7 @@ sort_buffer_size = 64K read_buffer_size = 256K read_rnd_buffer_size = 256K net_buffer_length = 2K -thread_stack = 128K +thread_stack = 240K # Don't listen on a TCP/IP port at all. This can be a security enhancement, # if all processes that need to connect to mysqld run on the same host. diff --git a/support-files/mysql.server.sh b/support-files/mysql.server.sh index b5115a5c05e..545831f93fc 100644 --- a/support-files/mysql.server.sh +++ b/support-files/mysql.server.sh @@ -78,7 +78,12 @@ else datadir="$basedir/data" fi sbindir="$basedir/sbin" - libexecdir="$basedir/libexec" + if test -f "$basedir/bin/mysqld" + then + libexecdir="$basedir/bin" + else + libexecdir="$basedir/libexec" + fi fi # datadir_set is used to determine if datadir was set (and so should be @@ -130,6 +135,12 @@ parse_server_arguments() { datadir="$basedir/data" fi sbindir="$basedir/sbin" + if test -f "$basedir/bin/mysqld" + then + libexecdir="$basedir/bin" + else + libexecdir="$basedir/libexec" + fi libexecdir="$basedir/libexec" ;; --datadir=*) datadir=`echo "$arg" | sed -e 's/^[^=]*=//'` @@ -373,10 +384,37 @@ case "$mode" in fi fi ;; - *) + 'configtest') + # Safeguard (relative paths, core dumps..) + cd $basedir + echo $echo_n "Testing MySQL configuration syntax" + daemon=$bindir/mysqld + if test -x $libexecdir/mysqld + then + daemon=$libexecdir/mysqld + elif test -x $sbindir/mysqld + then + daemon=$sbindir/mysqld + elif test -x `which mysqld` + then + daemon=`which mysqld` + else + log_failure_msg "Unable to locate the mysqld binary!" + exit 1 + fi + help_out=`$daemon --help 2>&1`; r=$? + if test "$r" != 0 ; then + log_failure_msg "$help_out" + log_failure_msg "There are syntax errors in the server configuration. Please fix them!" + else + log_success_msg "Syntax OK" + fi + exit $r + ;; + *) # usage basename=`basename "$0"` - echo "Usage: $basename {start|stop|restart|reload|force-reload|status} [ MySQL server options ]" + echo "Usage: $basename {start|stop|restart|reload|force-reload|status|configtest} [ MySQL server options ]" exit 1 ;; esac diff --git a/support-files/rpm/client.cnf b/support-files/rpm/client.cnf new file mode 100644 index 00000000000..9028505a98a --- /dev/null +++ b/support-files/rpm/client.cnf @@ -0,0 +1,13 @@ +# +# These two groups are read by the client library +# Use it for options that affect all clients, but not the server +# + + +[client] + +# This group is not read by mysql client library, +# If you use the same .cnf file for MySQL and MariaDB, +# use it for MariaDB-only client options +[client-mariadb] + diff --git a/support-files/rpm/my.cnf b/support-files/rpm/my.cnf new file mode 100644 index 00000000000..913b88f8328 --- /dev/null +++ b/support-files/rpm/my.cnf @@ -0,0 +1,11 @@ +# +# This group is read both both by the client and the server +# use it for options that affect everything +# +[client-server] + +# +# include all files from the config directory +# +!includedir /etc/my.cnf.d + diff --git a/support-files/rpm/mysql-clients.cnf b/support-files/rpm/mysql-clients.cnf new file mode 100644 index 00000000000..3df9b7b955f --- /dev/null +++ b/support-files/rpm/mysql-clients.cnf @@ -0,0 +1,23 @@ +# +# These groups are read by MariaDB command-line tools +# Use it for options that affect only one utility +# + +[mysql] + +[mysql_upgrade] + +[mysqladmin] + +[mysqlbinlog] + +[mysqlcheck] + +[mysqldump] + +[mysqlimport] + +[mysqlshow] + +[mysqlslap] + diff --git a/support-files/rpm/server-postin.sh b/support-files/rpm/server-postin.sh new file mode 100644 index 00000000000..88ff059ff22 --- /dev/null +++ b/support-files/rpm/server-postin.sh @@ -0,0 +1,69 @@ +mysql_datadir=%{mysqldatadir} + +# Create data directory +mkdir -p $mysql_datadir/{mysql,test} + +# Make MySQL start/shutdown automatically when the machine does it. +if [ $1 = 1 ] ; then + if [ -x /sbin/chkconfig ] ; then + /sbin/chkconfig --add mysql + fi +fi + +# Create a MySQL user and group. Do not report any problems if it already +# exists. +groupadd -r %{mysqld_group} 2> /dev/null || true +useradd -M -r -d $mysql_datadir -s /bin/bash -c "MySQL server" -g %{mysqld_group} %{mysqld_user} 2> /dev/null || true +# The user may already exist, make sure it has the proper group nevertheless (BUG#12823) +usermod -g %{mysqld_group} %{mysqld_user} 2> /dev/null || true + +# Change permissions so that the user that will run the MySQL daemon +# owns all database files. +chown -R %{mysqld_user}:%{mysqld_group} $mysql_datadir + +# Initiate databases +%{_bindir}/mysql_install_db --rpm --user=%{mysqld_user} + +# Upgrade databases if needed would go here - but it cannot be automated yet + +# Change permissions again to fix any new files. +chown -R %{mysqld_user}:%{mysqld_group} $mysql_datadir + +# Fix permissions for the permission database so that only the user +# can read them. +chmod -R og-rw $mysql_datadir/mysql + +# install SELinux files - but don't override existing ones +SETARGETDIR=/etc/selinux/targeted/src/policy +SEDOMPROG=$SETARGETDIR/domains/program +SECONPROG=$SETARGETDIR/file_contexts/program +if [ -f /etc/redhat-release ] \ + && grep -q "Red Hat Enterprise Linux .. release 4" /etc/redhat-release \ + || grep -q "CentOS release 4" /etc/redhat-release ; then + echo + echo + echo 'Notes regarding SELinux on this platform:' + echo '=========================================' + echo + echo 'The default policy might cause server startup to fail because it is ' + echo 'not allowed to access critical files. In this case, please update ' + echo 'your installation. ' + echo + echo 'The default policy might also cause inavailability of SSL related ' + echo 'features because the server is not allowed to access /dev/random ' + echo 'and /dev/urandom. If this is a problem, please do the following: ' + echo + echo ' 1) install selinux-policy-targeted-sources from your OS vendor' + echo ' 2) add the following two lines to '$SEDOMPROG/mysqld.te':' + echo ' allow mysqld_t random_device_t:chr_file read;' + echo ' allow mysqld_t urandom_device_t:chr_file read;' + echo ' 3) cd to '$SETARGETDIR' and issue the following command:' + echo ' make load' + echo + echo +fi + +if [ -x sbin/restorecon ] ; then + sbin/restorecon -R var/lib/mysql +fi + diff --git a/support-files/rpm/server-postun.sh b/support-files/rpm/server-postun.sh new file mode 100644 index 00000000000..652d59154ae --- /dev/null +++ b/support-files/rpm/server-postun.sh @@ -0,0 +1,7 @@ +if [ $1 -ge 1 ]; then + if [ -x %{_sysconfdir}/init.d/mysql ] ; then + # only restart the server if it was alredy running + %{_sysconfdir}/init.d/mysql status > /dev/null 2>&1 && \ + %{_sysconfdir}/init.d/mysql restart + fi +fi diff --git a/support-files/rpm/server-prein.sh b/support-files/rpm/server-prein.sh new file mode 100644 index 00000000000..9194f2b0656 --- /dev/null +++ b/support-files/rpm/server-prein.sh @@ -0,0 +1,66 @@ +# Check if we can safely upgrade. An upgrade is only safe if it's from one +# of our RPMs in the same version family. + +installed=`rpm -q --whatprovides mysql-server 2> /dev/null` +if [ $? -eq 0 -a -n "$installed" ]; then + vendor=`rpm -q --queryformat='%{VENDOR}' "$installed" 2>&1` + version=`rpm -q --queryformat='%{VERSION}' "$installed" 2>&1` + myvendor='%{mysql_vendor}' + myversion='%{mysqlversion}' + + old_family=`echo $version | sed -n -e 's,^\([1-9][0-9]*\.[0-9][0-9]*\)\..*$,\1,p'` + new_family=`echo $myversion | sed -n -e 's,^\([1-9][0-9]*\.[0-9][0-9]*\)\..*$,\1,p'` + + [ -z "$vendor" ] && vendor='<unknown>' + [ -z "$old_family" ] && old_family="<unrecognized version $version>" + [ -z "$new_family" ] && new_family="<bad package specification: version $myversion>" + + error_text= + if [ "$vendor" != "$myvendor" ]; then + error_text="$error_text +The current MariaDB server package is provided by a different +vendor ($vendor) than $myvendor. Some files may be installed +to different locations, including log files and the service +startup script in %{_sysconfdir}/init.d/. +" + fi + + if [ "$old_family" != "$new_family" ]; then + error_text="$error_text +Upgrading directly from MySQL $old_family to MariaDB $new_family may not +be safe in all cases. A manual dump and restore using mysqldump is +recommended. It is important to review the MariaDB manual's Upgrading +section for version-specific incompatibilities. +" + fi + + if [ -n "$error_text" ]; then + cat <<HERE >&2 + +****************************************************************** +A MySQL or MariaDB server package ($installed) is installed. +$error_text +A manual upgrade is required. + +- Ensure that you have a complete, working backup of your data and my.cnf + files +- Shut down the MySQL server cleanly +- Remove the existing MySQL packages. Usually this command will + list the packages you should remove: + rpm -qa | grep -i '^mysql-' + + You may choose to use 'rpm --nodeps -ev <package-name>' to remove + the package which contains the mysqlclient shared library. The + library will be reinstalled by the MariaDB-shared package. +- Install the new MariaDB packages supplied by $myvendor +- Ensure that the MariaDB server is started +- Run the 'mysql_upgrade' program + +This is a brief description of the upgrade process. Important details +can be found in the MariaDB manual, in the Upgrading section. +****************************************************************** +HERE + exit 1 + fi +fi + diff --git a/support-files/rpm/server-preun.sh b/support-files/rpm/server-preun.sh new file mode 100644 index 00000000000..7ef48f1c8d4 --- /dev/null +++ b/support-files/rpm/server-preun.sh @@ -0,0 +1,14 @@ +if [ $1 = 0 ] ; then + # Stop MySQL before uninstalling it + if [ -x %{_sysconfdir}/init.d/mysql ] ; then + %{_sysconfdir}/init.d/mysql stop > /dev/null + fi + # Don't start it automatically anymore + if [ -x /sbin/chkconfig ] ; then + /sbin/chkconfig --del mysql + fi +fi + +# We do not remove the mysql user since it may still own a lot of +# database files. + diff --git a/support-files/rpm/server.cnf b/support-files/rpm/server.cnf new file mode 100644 index 00000000000..2025a8b811a --- /dev/null +++ b/support-files/rpm/server.cnf @@ -0,0 +1,28 @@ +# +# These groups are read by MariaDB server. +# Use it for options that only the server (but not clients) should see +# +# See the examples of server my.cnf files in /usr/share/mysql/ +# + +# this is read by the standalone daemon and embedded servers +[server] + +# this is only for the mysqld standalone daemon +[mysqld] + +# this is only for embedded server +[embedded] + +# This group is only read by MariaDB-5.5 servers. +# If you use the same .cnf file for MariaDB of different versions, +# use this group for options that older servers don't understand +[mysqld-5.5] + +# These two groups are only read by MariaDB servers, not by MySQL. +# If you use the same .cnf file for MySQL and MariaDB, +# you can put MariaDB-only options here +[mariadb] + +[mariadb-5.5] + diff --git a/support-files/rpm/shared-post.sh b/support-files/rpm/shared-post.sh new file mode 100644 index 00000000000..8b0c822426a --- /dev/null +++ b/support-files/rpm/shared-post.sh @@ -0,0 +1 @@ +/sbin/ldconfig |