Add a macro "runselftest" to the spec file for RPM builds.
If its value is 1 (the default), the test suite will be run during
the RPM build.
To prevent that, add this to the rpmbuild command line:
--define "runselftest 0"
Failures of the test suite will NOT make the RPM build fail!
support-files/mysql.spec.sh:
Add the "runselftest" macro following the model provided by RedHat.
This code is similar to what we plan to use for ULN RPMs.
Change the RPM spec file so that each RPM "obsoletes" the corresponding RPMs
of all (other) configurations, so a "server" RPM of any configuration
can replace the "server" RPM of any other configuration on a "rpm -U".
Please exclude make_binary_distribution from the distribution
With cmake (5.5 and up), "make package" will do it,
or cpack.
The (generated) "scripts/make_binary_distribution" is just
a wrapper around a "cpack" call,
with path names set at build time.
Similar, "make_win_bin_dist" is not needed any more.
scripts/CMakeLists.txt:
Cleanup:
Append a trailing newline when generating "make_binary_distribution"
(which is just a wrapper around a "cpack" call).
support-files/mysql.spec.sh:
"make_win_bin_dist" is removed from the sources,
so its man page is gone,
and it need not be removed when creating the RPMs.
On Fedora, certain accesses to "/var/lib/mysql/HOSTNAME.err" were blocked
by SELinux policy, this made the server start fail with the message
Manager of pid-file quit without updating file
Calling "/sbin/restorecon -R /var/lib/mysql" fixes this.
This patch corrects a problem found in pushbuild with the stat()
method on some platforms. The code was changed to use my_stat()
instead.
Also adds mysql_plugin to the mysql.spec.sh file for packaging.
With this change, there will be new files "INFO_SRC"
and "INFO_BIN", which describe the source and the
binaries.
They will be contained in all packages:
- in "tar.gz" and derived packages, in "docs/",
- in RPMs, in "/usr/share/doc/packages/MySQL-server".
"INFO_SRC" is also part of a source tarball.
It gives the version as exact as possible, preferably
by calling "bzr version-info" on the source tree.
If that is not possible, it just contains the three
level version number.
"INFO_BIN" contains some info when and where the
binaries were built, the options given to the compiler,
and the flags controlling the included features.
The tests (test "mysql" in the main suite) are extended
to verify the existence of both "INFO_SRC" and "INFO_BIN",
as well as some of the expected contents.
CMakeLists.txt:
For the new files describing the source and the build
("INFO_SRC" and "INFO_BIN"), we need a new file
"cmake/info_macros.cmake.in" with the build rules.
1) This file must be configured with the current variables.
2) "INFO_SRC" can be created during the cmake phase,
but this should be repeated with each "make" to
protect against a developer doing only "make" after
a "bzr pull" (or "bzr commit").
So have it both as a cmake rule and as a custom target.
3) "INFO_BIN" must be created during the make phase
only, because it contains information from files
which will be written at the end of the cmake phase only.
Therefore, it must be a custom target which is included
in all "make" targets.
4) The resulting "INFO_*" files must be included in packages.
cmake/info_bin.cmake:
This is the file to create "INFO_BIN",
by calling the "CREATE_INFO_BIN()" macro.
It must be a separate file, so that the macro
definitions can be included in other cmake scripts
without that file inclusion causing a side effect,
the macro call.
That call would modify the source tree which should
be trated read-only.
cmake/info_macros.cmake.in:
This new file contains the macros to create the
"INFO_*" files during various steps of the build,
the calls will be at other places.
1) For source: If running from a BZR tree, always create
(update) "INFO_SRC" by running "bzr version-info".
Outside a BZR tree, try to take it from exported
sources, and create it only if missing, in that
case put the three level version number into it.
2) "INFO_BIN" contains
- date/time and host name of the build host,
- information about the platform,
- information about the C and CXX compiler
and the options given to them (Unix only),
- the feature flags as reported by "cmake -L".
cmake/info_src.cmake:
This is the file to create "INFO_SRC",
by calling the "CREATE_INFO_SRC()" macro.
It must be a separate file, so that the macro
definitions can be included in other cmake scripts
without that file inclusion causing a side effect,
the macro call.
That call would modify the source tree which should
be trated read-only.
cmake/make_dist.cmake.in:
Create a "VERSION_src" file during "make dist".
In case it already exists from a preceding "cmake" run
or tree export (which is quite likely), a new
"make dist" must not modify it.
mysql-test/r/file_contents.result:
Result of test for bug#42969.
mysql-test/t/file_contents.test:
Perl test scriptlet for bug#42969.
support-files/mysql.spec.sh:
Add "INFO_SRC" and "INFO_BIN" to the RPM contents.
When fixing the 27072 bug, the shell snippets running before/after
a RPM upgrade got expanded to look at files in the data directory
and at the PID file.
In this expansion, the standard locations were used.
There are users who configure their installations to use non-standard
locations for the data directory, the PID file, and other objects.
For these users, the fix of 27072 did not work.
As a result, the fact that a server was running at upgrade start was
not noticed, and the new server was not started after the upgrade.
With this patch, the shell snippets now try to get these locations
from "my_print_defaults" before falling back to the defaults.
Now, the fact that the old server is running is again noticed (even
with non-standard locations), and the new server is started.
Also, the upgrade log is written to the correct data directory.
support-files/mysql.spec.sh:
See the global comment for the purpose of this change.
In tests on SuSE 11, it was found necessary to use the full path name
of "my_print_defaults", it seems $PATH die not include "/usr/bin".
- Removed files specific to compiling on OS/2
- Removed files specific to SCO Unix packaging
- Removed "libmysqld/copyright", text is included in documentation
- Removed LaTeX headers for NDB Doxygen documentation
- Removed obsolete NDB files
- Removed "mkisofs" binaries
- Removed the "cvs2cl.pl" script
- Changed a few GPL texts to use "program" instead of "library"
The autotools-based build system has been superseded and
is being removed in order to ease the maintenance burden on
developers tweaking and maintaining the build system.
In order to support tools that need to extract the server
version, a new file that (only) contains the server version,
called VERSION, is introduced. The file contents are human
and machine-readable. The format is:
MYSQL_VERSION_MAJOR=5
MYSQL_VERSION_MINOR=5
MYSQL_VERSION_PATCH=8
MYSQL_VERSION_EXTRA=-rc
The CMake based version extraction in cmake/mysql_version.cmake
is changed to extract the version from this file. The configure
to CMake wrapper is retained for backwards compatibility and to
support the BUILD/ scripts. Also, a new a makefile target
show-dist-name that prints the server version is introduced.
VERSION:
Add top-level version file.
cmake/mysql_version.cmake:
Get version information from the top-level VERSION file.
Do not cache the version components (MAJOR_VERSION, etc).
Add MYSQL_RPM_VERSION as a replacement for MYSQL_U_SCORE_VERSION.
"MySQL server is not restarted properly after RPM upgrade"
The problem is that with the general spec file cleanup and
alignment we also did a name change, dropping the "-community"
part from the package file name.
As a result of this, RPM (some versions of it) will report
file conflicts, because it considers this name difference
to imply different packages.
To avoid this, the spec file explicitly "obsoletes" the old
packages (with "-community" in the file name).
Now, RPM will first install these packages and the remove the
old ones, and part of that removal is running the "%preun"
section which stops the server and uninstalls the service
(removes the symlinks to "/etc/init.d/mysql" from the run
level directories).
This stop/uninstall will affect the new server!
The fix is to define a "%triggerpostun" in this spec file
which will watch for removal of the "-community" server.
If this is done (as part of this install/upgrade), the
trigger code will re-install the service and restart the
server process.
In addition, the "sleep" calls after starting the server
have been cleaned up: Rather than doing 2* "sleep 2",
it is now 1 "sleep 5".