diff options
Diffstat (limited to 'support-files')
-rw-r--r-- | support-files/MacOSX/ReadMe.txt | 165 | ||||
-rw-r--r-- | support-files/Makefile.am | 4 | ||||
-rw-r--r-- | support-files/ccfilter | 104 | ||||
-rw-r--r-- | support-files/compiler_warnings.supp | 29 | ||||
-rw-r--r--[-rwxr-xr-x] | support-files/config.huge.ini.sh | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | support-files/config.medium.ini.sh | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | support-files/config.small.ini.sh | 0 | ||||
-rw-r--r-- | support-files/magic | 15 | ||||
-rw-r--r-- | support-files/my-innodb-heavy-4G.cnf.sh | 2 | ||||
-rw-r--r-- | support-files/my-small.cnf.sh | 2 | ||||
-rw-r--r-- | support-files/mysql.server.sh | 44 | ||||
-rw-r--r-- | support-files/mysql.spec.sh | 39 |
12 files changed, 389 insertions, 15 deletions
diff --git a/support-files/MacOSX/ReadMe.txt b/support-files/MacOSX/ReadMe.txt index b3dcba21705..d1ea8514e79 100644 --- a/support-files/MacOSX/ReadMe.txt +++ b/support-files/MacOSX/ReadMe.txt @@ -1,8 +1,163 @@ -You can find information about how to install on Mac OS X at +2.5. Installing MySQL on Mac OS X - http://dev.mysql.com/doc/refman/5.1/en/mac-os-x-installation.html + 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 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. + 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. + + To obtain MySQL, see Section 2.1.3, "How to Get MySQL." + +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. + + To actually install the MySQL PKG file, double-click on the + package icon. This launches the Mac OS X Package Installer, which + guides you through the installation of MySQL. + + 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. + + The Mac OS X PKG of MySQL installs itself into + /usr/local/mysql-VERSION and also installs a symbolic link, + /usr/local/mysql, that points to the new location. If a directory + named /usr/local/mysql exists, it is renamed to + /usr/local/mysql.bak first. Additionally, the installer creates + the grant tables in the mysql database by executing + mysql_install_db. + + The installation layout is similar to that of a tar file binary + distribution; all MySQL binaries are located in the directory + /usr/local/mysql/bin. The MySQL socket file is created as + /tmp/mysql.sock by default. See Section 2.1.5, "Installation + Layouts." + + MySQL installation requires a Mac OS X user account named mysql. A + user account with this name should exist by default on Mac OS X + 10.2 and up. + + 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 + + This manual section covers the installation of the official MySQL + Mac OS X PKG only. Make sure to read Apple's help information + about installing MySQL: Run the "Help View" application, select + "Mac OS X Server" help, do a search for "MySQL," and read the item + entitled "Installing MySQL." + + If you previously used Marc Liyanage's MySQL packages for Mac OS X + from http://www.entropy.ch, you can simply follow the update + instructions for packages using the binary installation layout as + given on his pages. + + If you are upgrading from Marc's 3.23.x versions or from the Mac + OS X Server version of MySQL to the official MySQL PKG, you also + need to convert the existing MySQL privilege tables to the current + format, because some new security privileges have been added. See + Section 4.4.8, "mysql_upgrade --- Check Tables for MySQL Upgrade." + + If you want MySQL to start automatically during system startup, + you also need to install the MySQL Startup Item. It is part of the + Mac OS X installation disk images as a separate installation + package. Simply double-click the MySQLStartupItem.pkg icon and + follow the instructions to install it. The Startup Item need be + installed only once. There is no need to install it each time you + upgrade the MySQL package later. + + The Startup Item for MySQL is installed into + /Library/StartupItems/MySQLCOM. (Before MySQL 4.1.2, the location + was /Library/StartupItems/MySQL, but that collided with the MySQL + Startup Item installed by Mac OS X Server.) 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-. + + On Mac OS X Server, the default MySQL installation uses the + variable MYSQL in the /etc/hostconfig file. The MySQL Startup Item + installer disables this variable by setting it to MYSQL=-NO-. This + avoids boot time conflicts with the MYSQLCOM variable used by the + MySQL Startup Item. However, it does not shut down a running MySQL + server. You should do that yourself. + + 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: +shell> sudo /Library/StartupItems/MySQLCOM/MySQLCOM start +(Enter your password, if necessary) +(Press Control-D or enter "exit" to exit the shell) + + If you don't use the Startup Item, enter the following command + sequence: +shell> cd /usr/local/mysql +shell> sudo ./bin/mysqld_safe +(Enter your password, if necessary) +(Press Control-Z) +shell> bg +(Press Control-D or enter "exit" to exit the shell) + + You should be able to connect to the MySQL server, for example, by + running /usr/local/mysql/bin/mysql. + +Note + + The accounts that are listed in the MySQL grant tables initially + have no passwords. After starting the server, you should set up + passwords for them using the instructions in Section 2.11, + "Post-Installation Setup and Testing." + + 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." + + If you are upgrading an existing installation, note that + installing a new MySQL PKG does not remove the directory of an + older installation. Unfortunately, the Mac OS X Installer does not + yet offer the functionality required to properly upgrade + previously installed packages. + + To use your existing databases with the new installation, you'll + need to copy the contents of the old data directory to the new + data directory. Make sure that neither the old server nor the new + one is running when you do this. 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/Makefile.am b/support-files/Makefile.am index 77eddea3227..52e3ed5d854 100644 --- a/support-files/Makefile.am +++ b/support-files/Makefile.am @@ -53,7 +53,9 @@ pkgsupp_DATA = my-small.cnf \ ndb-config-2-node.ini pkgsupp_SCRIPTS = mysql.server \ - mysqld_multi.server + mysqld_multi.server \ + binary-configure \ + mysql-log-rotate aclocaldir = $(datadir)/aclocal aclocal_DATA = mysql.m4 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 c437748c770..9f3048ad996 100644 --- a/support-files/compiler_warnings.supp +++ b/support-files/compiler_warnings.supp @@ -25,6 +25,9 @@ sql_yacc.cc : .*switch statement contains 'default' but no 'case' labels.* pars0grm.tab.c: .*'yyerrorlab' : unreferenced label.* _flex_tmp.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: comparison between signed and unsigned : 3100-3199 # # bdb is not critical to keep up to date @@ -41,6 +44,12 @@ db_vrfy.c : .*comparison is always false due to limited range of data type.* .*/cmd-line-utils/readline/.* : .* # +# 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 + +# # Ignore all conversion warnings on windows 64 # (Is safe as we are not yet supporting strings >= 2G) # @@ -70,6 +79,22 @@ db_vrfy.c : .*comparison is always false due to limited range of data type.* .*/ndb/.* : .*defined but not used.* # +# Maria warning that is ok in debug builds +# +storage/maria/ma_pagecache.c: .*'info_check_pin' defined but not used + +# +# I think these are due to mix of C and C++. +# +storage/pbxt/ : typedef.*was ignored in this declaration + + +# +# Groff warnings on OpenSUSE. +# +.*/dbug/.*(groff|<standard input>) : .* + +# # Unexplanable (?) stuff # listener.cc : .*conversion from 'SOCKET' to 'int'.* @@ -77,9 +102,13 @@ net_serv.cc : .*conversion from 'SOCKET' to 'int'.* # allow a little moving space for the warning below 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.* + +# 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.* diff --git a/support-files/config.huge.ini.sh b/support-files/config.huge.ini.sh index 938dd3209b8..938dd3209b8 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 e35dd35e455..e35dd35e455 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 129e2521e17..129e2521e17 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-innodb-heavy-4G.cnf.sh b/support-files/my-innodb-heavy-4G.cnf.sh index e9390a5b9e8..305a6ee3006 100644 --- a/support-files/my-innodb-heavy-4G.cnf.sh +++ b/support-files/my-innodb-heavy-4G.cnf.sh @@ -174,7 +174,7 @@ default-storage-engine = MYISAM # 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 diff --git a/support-files/my-small.cnf.sh b/support-files/my-small.cnf.sh index 3bfa08d0bd1..7dce9e60ed9 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 87198fc9cf5..d8725b98ca5 100644 --- a/support-files/mysql.server.sh +++ b/support-files/mysql.server.sh @@ -77,7 +77,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 @@ -126,6 +131,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/^[^=]*=//'` @@ -434,9 +445,36 @@ 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 - echo "Usage: $0 {start|stop|restart|reload|force-reload|status} [ MySQL server options ]" + echo "Usage: $0 {start|stop|restart|reload|force-reload|status|configtest} [ MySQL server options ]" exit 1 ;; esac diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 8209c4560c6..a1940ec0612 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -50,6 +50,11 @@ %{?_with_cluster:%define CLUSTER_BUILD 1} %{!?_with_cluster:%define CLUSTER_BUILD 0} +# use "rpmbuild --with maria" or "rpm --define '_with_maria 1'" (for RPM 3.x) +# to build with maria support (off by default) +%{?_with_maria:%define MARIA_BUILD 1} +%{!?_with_maria:%define MARIA_BUILD 0} + %if %{STATIC_BUILD} %define release 0 %else @@ -276,6 +281,26 @@ sh -c "PATH=\"${MYSQL_BUILD_PATH:-$PATH}\" \ LDFLAGS=\"$MYSQL_BUILD_LDFLAGS\" \ ./configure \ $* \ + --with-innodb \ +%if %{CLUSTER_BUILD} + --with-ndbcluster \ +%else + --without-ndbcluster \ +%endif + --with-archive-storage-engine \ + --with-csv-storage-engine \ + --with-blackhole-storage-engine \ +%if %{FEDERATED_BUILD} + --with-federated-storage-engine \ +%else + --without-federated-storage-engine \ +%endif +%if %{MARIA_BUILD} + --with-plugin-maria \ + --with-maria-tmp-tables \ +%endif + --with-partition \ + --with-big-tables \ --with-mysqld-ldflags='-static' \ --with-client-ldflags='-static' \ --with-zlib-dir=bundled \ @@ -388,7 +413,12 @@ CFLAGS="$CFLAGS" \ CXXFLAGS="$CXXFLAGS" \ BuildMySQL "\ --with-debug \ - --with-comment=\"MySQL Community Server - Debug (%{mysql_license})\"") +%if %{MARIA_BUILD} + --with-comment=\"MySQL Community Server - Debug [Maria] (%{mysql_license})\" \ +%else + --with-comment=\"MySQL Community Server - Debug (%{mysql_license})\" \ +%endif +") # We might want to save the config log file if test -n "$MYSQL_DEBUGCONFLOG_DEST" @@ -409,7 +439,12 @@ CFLAGS="$CFLAGS" \ CXXFLAGS="$CXXFLAGS" \ BuildMySQL "\ --with-embedded-server \ - --with-comment=\"MySQL Community Server (%{mysql_license})\"") +%if %{MARIA_BUILD} + --with-comment=\"MariaDB, a community SQL server based on the MySQL Server with Maria (GPL)\" \ +%else + --with-comment=\"MySQL Community Server (%{mysql_license})\" \ +%endif +") # We might want to save the config log file if test -n "$MYSQL_CONFLOG_DEST" then |