mirror of
https://github.com/MariaDB/server.git
synced 2025-01-15 19:42:28 +01:00
MDEV-8296 MSVS 2013 & WiX 3.9
removed unused directory
This commit is contained in:
parent
9cb8cff312
commit
a0107d9c1d
27 changed files with 0 additions and 4603 deletions
|
@ -424,7 +424,6 @@ IF(NOT WITHOUT_SERVER)
|
|||
IF(EXISTS ${CMAKE_SOURCE_DIR}/internal/CMakeLists.txt)
|
||||
ADD_SUBDIRECTORY(internal)
|
||||
ENDIF()
|
||||
ADD_SUBDIRECTORY(packaging/rpm-oel)
|
||||
ENDIF()
|
||||
|
||||
IF(UNIX)
|
||||
|
@ -438,7 +437,6 @@ IF(WIN32)
|
|||
ADD_SUBDIRECTORY(win/upgrade_wizard)
|
||||
ADD_SUBDIRECTORY(win/packaging)
|
||||
ENDIF()
|
||||
ADD_SUBDIRECTORY(packaging/solaris)
|
||||
|
||||
IF(NOT CMAKE_CROSSCOMPILING)
|
||||
SET(EXPORTED comp_err comp_sql factorial)
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 20 KiB |
Binary file not shown.
Before Width: | Height: | Size: 3.4 KiB |
|
@ -1,119 +0,0 @@
|
|||
# Copyright (c) 2010, 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
|
||||
|
||||
IF(NOT WIN32)
|
||||
RETURN()
|
||||
ENDIF()
|
||||
|
||||
FIND_PATH(WIX_DIR heat.exe
|
||||
$ENV{WIX_DIR}/bin
|
||||
$ENV{ProgramFiles}/wix/bin
|
||||
"$ENV{ProgramFiles}/Windows Installer XML v3/bin"
|
||||
"$ENV{ProgramFiles}/Windows Installer XML v3.5/bin"
|
||||
)
|
||||
|
||||
IF(NOT WIX_DIR)
|
||||
IF(NOT _WIX_DIR_CHECKED)
|
||||
SET(_WIX_DIR_CHECKED 1 CACHE INTERNAL "")
|
||||
MESSAGE(STATUS "Cannot find wix 3, installer project will not be generated")
|
||||
ENDIF()
|
||||
RETURN()
|
||||
ENDIF()
|
||||
|
||||
ADD_SUBDIRECTORY(ca)
|
||||
|
||||
# extra.wxs.in needs DATADIR_MYSQL_FILES and DATADIR_PERFORMANCE_SCHEMA_FILES, i.e
|
||||
# Wix-compatible file lists for ${builddir}\sql\data\{mysql,performance_schema}
|
||||
|
||||
FOREACH(dir mysql performance_schema)
|
||||
FILE(GLOB files ${CMAKE_BINARY_DIR}/sql/data/${dir}/*)
|
||||
SET(filelist)
|
||||
FOREACH(f ${files})
|
||||
IF(NOT f MATCHES ".rule")
|
||||
FILE(TO_NATIVE_PATH "${f}" file_native_path)
|
||||
GET_FILENAME_COMPONENT(file_name "${f}" NAME)
|
||||
SET(filelist
|
||||
"${filelist}
|
||||
<File Id='${file_name}' Source='${file_native_path}'/>")
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
STRING(TOUPPER ${dir} DIR_UPPER)
|
||||
SET(DATADIR_${DIR_UPPER}_FILES "${filelist}")
|
||||
ENDFOREACH()
|
||||
|
||||
|
||||
FIND_PROGRAM(HEAT_EXECUTABLE heat ${WIX_DIR})
|
||||
FIND_PROGRAM(CANDLE_EXECUTABLE candle ${WIX_DIR})
|
||||
FIND_PROGRAM(LIGHT_EXECUTABLE light ${WIX_DIR})
|
||||
|
||||
# WiX wants the license text as rtf; if there is no rtf license,
|
||||
# we create a fake one from the plain text COPYING file.
|
||||
IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/COPYING.rtf")
|
||||
SET(COPYING_RTF "${CMAKE_CURRENT_SOURCE_DIR}/COPYING.rtf")
|
||||
ELSE()
|
||||
IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../../LICENSE.mysql")
|
||||
SET(LICENSE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/../../LICENSE.mysql")
|
||||
ELSE()
|
||||
SET(LICENSE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/../../COPYING")
|
||||
ENDIF()
|
||||
FILE(READ ${LICENSE_FILE} CONTENTS)
|
||||
STRING(REGEX REPLACE "\n" "\\\\par\n" CONTENTS "${CONTENTS}")
|
||||
STRING(REGEX REPLACE "\t" "\\\\tab" CONTENTS "${CONTENTS}")
|
||||
FILE(WRITE "${CMAKE_CURRENT_BINARY_DIR}/COPYING.rtf" "{\\rtf1\\ansi\\deff0{\\fonttbl{\\f0\\fnil\\fcharset0 Courier New;}}\\viewkind4\\uc1\\pard\\lang1031\\f0\\fs15")
|
||||
FILE(APPEND "${CMAKE_CURRENT_BINARY_DIR}/COPYING.rtf" "${CONTENTS}")
|
||||
FILE(APPEND "${CMAKE_CURRENT_BINARY_DIR}/COPYING.rtf" "\n}\n")
|
||||
SET(COPYING_RTF "${CMAKE_CURRENT_BINARY_DIR}/COPYING.rtf")
|
||||
ENDIF()
|
||||
GET_TARGET_PROPERTY(WIXCA_LOCATION wixca LOCATION)
|
||||
SET(CPACK_WIX_CONFIG ${CMAKE_CURRENT_SOURCE_DIR}/CPackWixConfig.cmake)
|
||||
SET(CPACK_WIX_INCLUDE "${CMAKE_CURRENT_BINARY_DIR}/extra.wxs;${CMAKE_CURRENT_SOURCE_DIR}/custom_ui.wxs")
|
||||
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/create_msi.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake
|
||||
@ONLY)
|
||||
|
||||
|
||||
IF(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
SET(WixWin64 " Win64='yes'")
|
||||
ELSE()
|
||||
SET(WixWin64)
|
||||
ENDIF()
|
||||
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/extra.wxs.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/extra.wxs)
|
||||
|
||||
IF(CMAKE_GENERATOR MATCHES "Visual Studio")
|
||||
SET(CONFIG_PARAM "-DCMAKE_INSTALL_CONFIG_NAME=${CMAKE_CFG_INTDIR}")
|
||||
ENDIF()
|
||||
|
||||
|
||||
ADD_CUSTOM_TARGET(
|
||||
MSI
|
||||
COMMAND set VS_UNICODE_OUTPUT=
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
${CONFIG_PARAM}
|
||||
-P ${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake
|
||||
)
|
||||
ADD_DEPENDENCIES(MSI wixca)
|
||||
|
||||
ADD_CUSTOM_TARGET(
|
||||
MSI_ESSENTIALS
|
||||
COMMAND set VS_UNICODE_OUTPUT=
|
||||
COMMAND ${CMAKE_COMMAND} -DESSENTIALS=1
|
||||
${CONFIG_PARAM}
|
||||
-P ${CMAKE_CURRENT_BINARY_DIR}/create_msi.cmake
|
||||
)
|
||||
ADD_DEPENDENCIES(MSI_ESSENTIALS wixca)
|
||||
|
|
@ -1,119 +0,0 @@
|
|||
# Copyright (c) 2010, 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
|
||||
|
||||
IF(ESSENTIALS)
|
||||
SET(CPACK_COMPONENTS_USED "Server;Client;DataFiles")
|
||||
SET(CPACK_WIX_UI "WixUI_InstallDir")
|
||||
IF(CMAKE_SIZEOF_VOID_P MATCHES 8)
|
||||
SET(CPACK_PACKAGE_FILE_NAME "mysql-essential-${VERSION}-winx64")
|
||||
ELSE()
|
||||
SET(CPACK_PACKAGE_FILE_NAME "mysql-essential-${VERSION}-win32")
|
||||
ENDIF()
|
||||
ELSE()
|
||||
SET(CPACK_COMPONENTS_USED
|
||||
"Server;Client;DataFiles;Development;SharedLibraries;Documentation;IniFiles;Readme;Server_Scripts;DebugBinaries")
|
||||
ENDIF()
|
||||
|
||||
|
||||
# Some components like Embedded are optional
|
||||
# We will build MSI without embedded if it was not selected for build
|
||||
#(need to modify CPACK_COMPONENTS_ALL for that)
|
||||
SET(CPACK_ALL)
|
||||
FOREACH(comp1 ${CPACK_COMPONENTS_USED})
|
||||
SET(found)
|
||||
FOREACH(comp2 ${CPACK_COMPONENTS_ALL})
|
||||
IF(comp1 STREQUAL comp2)
|
||||
SET(found 1)
|
||||
BREAK()
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
IF(found)
|
||||
SET(CPACK_ALL ${CPACK_ALL} ${comp1})
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
SET(CPACK_COMPONENTS_ALL ${CPACK_ALL})
|
||||
|
||||
# Always install (hidden), includes Readme files
|
||||
SET(CPACK_COMPONENT_GROUP_ALWAYSINSTALL_HIDDEN 1)
|
||||
SET(CPACK_COMPONENT_README_GROUP "AlwaysInstall")
|
||||
|
||||
# Feature MySQL Server
|
||||
SET(CPACK_COMPONENT_GROUP_MYSQLSERVER_DISPLAY_NAME "MySQL Server")
|
||||
SET(CPACK_COMPONENT_GROUP_MYSQLSERVER_EXPANDED "1")
|
||||
SET(CPACK_COMPONENT_GROUP_MYSQLSERVER_DESCRIPTION "Install MySQL Server")
|
||||
# Subfeature "Server" (hidden)
|
||||
SET(CPACK_COMPONENT_SERVER_GROUP "MySQLServer")
|
||||
SET(CPACK_COMPONENT_SERVER_HIDDEN 1)
|
||||
# Subfeature "Client"
|
||||
SET(CPACK_COMPONENT_CLIENT_GROUP "MySQLServer")
|
||||
SET(CPACK_COMPONENT_CLIENT_DISPLAY_NAME "Client Programs")
|
||||
SET(CPACK_COMPONENT_CLIENT_DESCRIPTION
|
||||
"Various helpful (commandline) tools including the mysql command line client" )
|
||||
# Subfeature "Debug binaries"
|
||||
SET(CPACK_COMPONENT_DEBUGBINARIES_GROUP "MySQLServer")
|
||||
SET(CPACK_COMPONENT_DEBUGBINARIES_DISPLAY_NAME "Debug binaries")
|
||||
SET(CPACK_COMPONENT_DEBUGBINARIES_DESCRIPTION
|
||||
"Debug/trace versions of executables and libraries" )
|
||||
#SET(CPACK_COMPONENT_DEBUGBINARIES_WIX_LEVEL 2)
|
||||
|
||||
|
||||
#Subfeature "Data Files"
|
||||
SET(CPACK_COMPONENT_DATAFILES_GROUP "MySQLServer")
|
||||
SET(CPACK_COMPONENT_DATAFILES_DISPLAY_NAME "Server data files")
|
||||
SET(CPACK_COMPONENT_DATAFILES_DESCRIPTION "Server data files" )
|
||||
SET(CPACK_COMPONENT_DATAFILES_HIDDEN 1)
|
||||
|
||||
|
||||
#Feature "Devel"
|
||||
SET(CPACK_COMPONENT_GROUP_DEVEL_DISPLAY_NAME "Development Components")
|
||||
SET(CPACK_COMPONENT_GROUP_DEVEL_DESCRIPTION "Installs C/C++ header files and libraries")
|
||||
#Subfeature "Development"
|
||||
SET(CPACK_COMPONENT_DEVELOPMENT_GROUP "Devel")
|
||||
SET(CPACK_COMPONENT_DEVELOPMENT_HIDDEN 1)
|
||||
|
||||
#Subfeature "Shared libraries"
|
||||
SET(CPACK_COMPONENT_SHAREDLIBRARIES_GROUP "Devel")
|
||||
SET(CPACK_COMPONENT_SHAREDLIBRARIES_DISPLAY_NAME "Client C API library (shared)")
|
||||
SET(CPACK_COMPONENT_SHAREDLIBRARIES_DESCRIPTION "Installs shared client library")
|
||||
|
||||
#Subfeature "Embedded"
|
||||
SET(CPACK_COMPONENT_EMBEDDED_GROUP "Devel")
|
||||
SET(CPACK_COMPONENT_EMBEDDED_DISPLAY_NAME "Embedded server library")
|
||||
SET(CPACK_COMPONENT_EMBEDDED_DESCRIPTION "Installs embedded server library")
|
||||
SET(CPACK_COMPONENT_EMBEDDED_WIX_LEVEL 2)
|
||||
|
||||
#Feature Debug Symbols
|
||||
SET(CPACK_COMPONENT_GROUP_DEBUGSYMBOLS_DISPLAY_NAME "Debug Symbols")
|
||||
SET(CPACK_COMPONENT_GROUP_DEBUGSYMBOLS_DESCRIPTION "Installs Debug Symbols")
|
||||
SET(CPACK_COMPONENT_GROUP_DEBUGSYMBOLS_WIX_LEVEL 2)
|
||||
SET(CPACK_COMPONENT_DEBUGINFO_GROUP "DebugSymbols")
|
||||
SET(CPACK_COMPONENT_DEBUGINFO_HIDDEN 1)
|
||||
|
||||
#Feature Documentation
|
||||
SET(CPACK_COMPONENT_DOCUMENTATION_DISPLAY_NAME "Documentation")
|
||||
SET(CPACK_COMPONENT_DOCUMENTATION_DESCRIPTION "Installs documentation")
|
||||
SET(CPACK_COMPONENT_DOCUMENTATION_WIX_LEVEL 2)
|
||||
|
||||
#Feature tests
|
||||
SET(CPACK_COMPONENT_TEST_DISPLAY_NAME "Tests")
|
||||
SET(CPACK_COMPONENT_TEST_DESCRIPTION "Installs unittests (requires Perl to run)")
|
||||
SET(CPACK_COMPONENT_TEST_WIX_LEVEL 2)
|
||||
|
||||
|
||||
#Feature Misc (hidden, installs only if everything is installed)
|
||||
SET(CPACK_COMPONENT_GROUP_MISC_HIDDEN 1)
|
||||
SET(CPACK_COMPONENT_GROUP_MISC_WIX_LEVEL 100)
|
||||
SET(CPACK_COMPONENT_INIFILES_GROUP "Misc")
|
||||
SET(CPACK_COMPONENT_SERVER_SCRIPTS_GROUP "Misc")
|
Binary file not shown.
Before Width: | Height: | Size: 22 KiB |
|
@ -1,55 +0,0 @@
|
|||
# Copyright (c) 2010, 2011, 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
|
||||
|
||||
INCLUDE_DIRECTORIES(${WIX_DIR}/../SDK/inc ${WIX_DIR}/SDK/inc)
|
||||
LINK_DIRECTORIES(${WIX_DIR}/../SDK/lib ${WIX_DIR}/SDK/lib)
|
||||
|
||||
SET(WIXCA_SOURCES CustomAction.cpp CustomAction.def)
|
||||
|
||||
IF(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
SET(WIX_ARCH_SUFFIX "_x64")
|
||||
ELSE()
|
||||
SET(WIX_ARCH_SUFFIX)
|
||||
ENDIF()
|
||||
|
||||
IF(MSVC_VERSION EQUAL 1400)
|
||||
SET(WIX35_MSVC_SUFFIX "_2005")
|
||||
ELSEIF(MSVC_VERSION EQUAL 1500)
|
||||
SET(WIX35_MSVC_SUFFIX "_2008")
|
||||
ELSEIF(MSVC_VERSION EQUAL 1600)
|
||||
SET(WIX35_MSVC_SUFFIX "_2010")
|
||||
ELSE()
|
||||
# When next VS is out, add the correct version here
|
||||
MESSAGE(FATAL_ERROR "Unknown VS version")
|
||||
ENDIF()
|
||||
|
||||
MESSAGE(STATUS "Searching for wcautil${WIX_ARCH_SUFFIX} or wcautil${WIX35_MSVC_SUFFIX}${WIX_ARCH_SUFFIX} in ${WIX_DIR}/../SDK/lib ${WIX_DIR}/SDK/lib")
|
||||
MESSAGE(STATUS "Searching for dutil${WIX_ARCH_SUFFIX} or dutil${WIX35_MSVC_SUFFIX}${WIX_ARCH_SUFFIX} in ${WIX_DIR}/../SDK/lib ${WIX_DIR}/SDK/lib")
|
||||
|
||||
FIND_LIBRARY(WIX_WCAUTIL_LIBRARY
|
||||
NAMES wcautil${WIX_ARCH_SUFFIX} wcautil${WIX35_MSVC_SUFFIX}${WIX_ARCH_SUFFIX}
|
||||
HINTS ${WIX_DIR}/../SDK/lib ${WIX_DIR}/SDK/lib)
|
||||
|
||||
FIND_LIBRARY(WIX_DUTIL_LIBRARY
|
||||
NAMES dutil${WIX_ARCH_SUFFIX} dutil${WIX35_MSVC_SUFFIX}${WIX_ARCH_SUFFIX}
|
||||
PATHS ${WIX_DIR}/../SDK/lib ${WIX_DIR}/SDK/lib)
|
||||
|
||||
MESSAGE(STATUS "Found: ${WIX_WCAUTIL_LIBRARY}")
|
||||
MESSAGE(STATUS "Found: ${WIX_DUTIL_LIBRARY}")
|
||||
|
||||
ADD_VERSION_INFO(wixca SHARED WIXCA_SOURCES)
|
||||
ADD_LIBRARY(wixca SHARED EXCLUDE_FROM_ALL ${WIXCA_SOURCES})
|
||||
TARGET_LINK_LIBRARIES(wixca ${WIX_WCAUTIL_LIBRARY} ${WIX_DUTIL_LIBRARY}
|
||||
msi version )
|
|
@ -1,188 +0,0 @@
|
|||
/* Copyright (c) 2010, 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 */
|
||||
|
||||
#ifndef UNICODE
|
||||
#define UNICODE
|
||||
#endif
|
||||
|
||||
#include <windows.h>
|
||||
#include <winreg.h>
|
||||
#include <msi.h>
|
||||
#include <msiquery.h>
|
||||
#include <wcautil.h>
|
||||
#include <string.h>
|
||||
#include <strsafe.h>
|
||||
|
||||
/*
|
||||
* Search the registry for a service whose ImagePath starts
|
||||
* with our install directory. Stop and remove it if requested.
|
||||
*/
|
||||
static TCHAR last_service_name[128];
|
||||
int remove_service(TCHAR *installdir, int check_only) {
|
||||
HKEY hKey;
|
||||
int done = 0;
|
||||
|
||||
if(wcslen(installdir) < 3) {
|
||||
WcaLog(LOGMSG_STANDARD, "INSTALLDIR is suspiciously short, better not do anything.");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(check_only == 0) {
|
||||
WcaLog(LOGMSG_STANDARD, "Determining number of matching services...");
|
||||
int servicecount = remove_service(installdir, 1);
|
||||
if(servicecount <= 0) {
|
||||
WcaLog(LOGMSG_STANDARD, "No services found, not removing anything.");
|
||||
return 0;
|
||||
} else if(servicecount == 1) {
|
||||
TCHAR buf[256];
|
||||
swprintf_s(buf, sizeof(buf), TEXT("There is a service called '%ls' set up to run from this installation. Do you wish me to stop and remove that service?"), last_service_name);
|
||||
int rc = MessageBox(NULL, buf, TEXT("Removing MySQL Server"), MB_ICONQUESTION|MB_YESNOCANCEL|MB_SYSTEMMODAL);
|
||||
if(rc == IDCANCEL) return -1;
|
||||
if(rc != IDYES) return 0;
|
||||
} else if(servicecount > 0) {
|
||||
TCHAR buf[256];
|
||||
swprintf_s(buf, sizeof(buf), TEXT("There appear to be %d services set up to run from this installation. Do you wish me to stop and remove those services?"), servicecount);
|
||||
int rc = MessageBox(NULL, buf, TEXT("Removing MySQL Server"), MB_ICONQUESTION|MB_YESNOCANCEL|MB_SYSTEMMODAL);
|
||||
if(rc == IDCANCEL) return -1;
|
||||
if(rc != IDYES) return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(check_only == -1) check_only = 0;
|
||||
|
||||
WcaLog(LOGMSG_STANDARD, "Looking for service...");
|
||||
WcaLog(LOGMSG_STANDARD, "INSTALLDIR = %ls", installdir);
|
||||
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, TEXT("SYSTEM\\CurrentControlSet\\services"), 0, KEY_READ, &hKey)==ERROR_SUCCESS) {
|
||||
DWORD index = 0;
|
||||
TCHAR keyname[1024];
|
||||
DWORD keylen = sizeof(keyname);
|
||||
FILETIME t;
|
||||
/* Go through all services in the registry */
|
||||
while(RegEnumKeyExW(hKey, index, keyname, &keylen, NULL, NULL, NULL, &t) == ERROR_SUCCESS) {
|
||||
HKEY hServiceKey = 0;
|
||||
TCHAR path[1024];
|
||||
DWORD pathlen = sizeof(path)-1;
|
||||
if (RegOpenKeyExW(hKey, keyname, NULL, KEY_READ, &hServiceKey) == ERROR_SUCCESS) {
|
||||
/* Look at the ImagePath value of each service */
|
||||
if (RegQueryValueExW(hServiceKey, TEXT("ImagePath"), NULL, NULL, (LPBYTE)path, &pathlen) == ERROR_SUCCESS) {
|
||||
path[pathlen] = 0;
|
||||
TCHAR *p = path;
|
||||
if(p[0] == '"') p += 1;
|
||||
/* See if it is similar to our install directory */
|
||||
if(wcsncmp(p, installdir, wcslen(installdir)) == 0) {
|
||||
WcaLog(LOGMSG_STANDARD, "Found service '%ls' with ImagePath '%ls'.", keyname, path);
|
||||
swprintf_s(last_service_name, sizeof(last_service_name), TEXT("%ls"), keyname);
|
||||
/* If we are supposed to stop and remove the service... */
|
||||
if(!check_only) {
|
||||
WcaLog(LOGMSG_STANDARD, "Trying to stop the service.");
|
||||
SC_HANDLE hSCM = NULL;
|
||||
hSCM = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT);
|
||||
if(hSCM != NULL) {
|
||||
SC_HANDLE hService = NULL;
|
||||
hService = OpenService(hSCM, keyname, SERVICE_STOP|SERVICE_QUERY_STATUS|DELETE);
|
||||
if(hService != NULL) {
|
||||
WcaLog(LOGMSG_STANDARD, "Waiting for the service to stop...");
|
||||
SERVICE_STATUS status;
|
||||
/* Attempt to stop the service */
|
||||
if(ControlService(hService, SERVICE_CONTROL_STOP, &status)) {
|
||||
/* Now wait until it's stopped */
|
||||
while("it's one big, mean and cruel world out there") {
|
||||
if(!QueryServiceStatus(hService, &status)) break;
|
||||
if(status.dwCurrentState == SERVICE_STOPPED) break;
|
||||
Sleep(1000);
|
||||
}
|
||||
WcaLog(LOGMSG_STANDARD, "Stopped the service.");
|
||||
}
|
||||
/* Mark the service for deletion */
|
||||
DeleteService(hService);
|
||||
CloseServiceHandle(hService);
|
||||
}
|
||||
CloseServiceHandle(hSCM);
|
||||
}
|
||||
}
|
||||
done++;
|
||||
}
|
||||
}
|
||||
RegCloseKey(hServiceKey);
|
||||
}
|
||||
index++;
|
||||
keylen = sizeof(keyname)-1;
|
||||
}
|
||||
RegCloseKey(hKey);
|
||||
} else {
|
||||
WcaLog(LOGMSG_STANDARD, "Can't seem to go through the list of installed services in the registry.");
|
||||
}
|
||||
return done;
|
||||
}
|
||||
|
||||
UINT wrap(MSIHANDLE hInstall, char *name, int check_only) {
|
||||
HRESULT hr = S_OK;
|
||||
UINT er = ERROR_SUCCESS;
|
||||
|
||||
hr = WcaInitialize(hInstall, name);
|
||||
ExitOnFailure(hr, "Failed to initialize");
|
||||
|
||||
WcaLog(LOGMSG_STANDARD, "Initialized.");
|
||||
|
||||
TCHAR INSTALLDIR[1024];
|
||||
DWORD INSTALLDIR_size = sizeof(INSTALLDIR);
|
||||
if(MsiGetPropertyW(hInstall, TEXT("CustomActionData"), INSTALLDIR, &INSTALLDIR_size) == ERROR_SUCCESS) {
|
||||
int rc = remove_service(INSTALLDIR, check_only);
|
||||
if(rc < 0) {
|
||||
er = ERROR_CANCELLED;
|
||||
}
|
||||
} else {
|
||||
er = ERROR_CANT_ACCESS_FILE;
|
||||
}
|
||||
|
||||
LExit:
|
||||
return WcaFinalize(er);
|
||||
}
|
||||
|
||||
UINT __stdcall RemoveServiceNoninteractive(MSIHANDLE hInstall)
|
||||
{
|
||||
return wrap(hInstall, "RemoveServiceNoninteractive", -1);
|
||||
}
|
||||
|
||||
UINT __stdcall RemoveService(MSIHANDLE hInstall)
|
||||
{
|
||||
return wrap(hInstall, "RemoveService", 0);
|
||||
}
|
||||
|
||||
UINT __stdcall TestService(MSIHANDLE hInstall)
|
||||
{
|
||||
return wrap(hInstall, "TestService", 1);
|
||||
}
|
||||
|
||||
/* DllMain - Initialize and cleanup WiX custom action utils */
|
||||
extern "C" BOOL WINAPI DllMain(
|
||||
__in HINSTANCE hInst,
|
||||
__in ULONG ulReason,
|
||||
__in LPVOID
|
||||
)
|
||||
{
|
||||
switch(ulReason)
|
||||
{
|
||||
case DLL_PROCESS_ATTACH:
|
||||
WcaGlobalInitialize(hInst);
|
||||
break;
|
||||
|
||||
case DLL_PROCESS_DETACH:
|
||||
WcaGlobalFinalize();
|
||||
break;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
LIBRARY "wixca"
|
||||
VERSION 1.0
|
||||
|
||||
EXPORTS
|
||||
|
||||
RemoveService
|
||||
RemoveServiceNoninteractive
|
||||
TestService
|
|
@ -1,398 +0,0 @@
|
|||
# Copyright (c) 2010, 2011, 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
|
||||
|
||||
SET(CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@")
|
||||
SET(CMAKE_CURRENT_SOURCE_DIR "@CMAKE_CURRENT_SOURCE_DIR@")
|
||||
SET(CANDLE_EXECUTABLE "@CANDLE_EXECUTABLE@")
|
||||
SET(LIGHT_EXECUTABLE "@LIGHT_EXECUTABLE@")
|
||||
SET(CMAKE_COMMAND "@CMAKE_COMMAND@")
|
||||
SET(CMAKE_CFG_INTDIR "@CMAKE_CFG_INTDIR@")
|
||||
SET(VERSION "@VERSION@")
|
||||
SET(MAJOR_VERSION "@MAJOR_VERSION@")
|
||||
SET(MINOR_VERSION "@MINOR_VERSION@")
|
||||
SET(PATCH_VERSION "@PATCH_VERSION@")
|
||||
SET(CMAKE_SIZEOF_VOID_P @CMAKE_SIZEOF_VOID_P@)
|
||||
SET(MANUFACTURER "@MANUFACTURER@")
|
||||
SET(WIXCA_LOCATION "@WIXCA_LOCATION@")
|
||||
SET(COPYING_RTF "@COPYING_RTF@")
|
||||
SET(CPACK_WIX_CONFIG "@CPACK_WIX_CONFIG@")
|
||||
SET(CPACK_WIX_INCLUDE "@CPACK_WIX_INCLUDE@")
|
||||
|
||||
LIST(APPEND EXCLUDE_DIRS
|
||||
bin/debug
|
||||
data/test
|
||||
lib/plugin/debug
|
||||
mysql-test
|
||||
scripts
|
||||
sql-bench
|
||||
)
|
||||
|
||||
LIST(APPEND EXCLUDE_FILES
|
||||
bin/echo.exe
|
||||
bin/mysql_client_test_embedded.exe
|
||||
bin/mysqld-debug.exe
|
||||
bin/mysqltest_embedded.exe
|
||||
bin/replace.exe
|
||||
lib/debug/mysqlserver.lib
|
||||
lib/libmysqld.dll
|
||||
lib/libmysqld.lib
|
||||
lib/mysqlserver.lib
|
||||
lib/mysqlservices.lib
|
||||
)
|
||||
|
||||
IF(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
SET(Win64 " Win64='yes'")
|
||||
SET(Platform x64)
|
||||
SET(PlatformProgramFilesFolder ProgramFiles64Folder)
|
||||
ELSE()
|
||||
SET(Platform x86)
|
||||
SET(PlatformProgramFilesFolder ProgramFilesFolder)
|
||||
SET(Win64)
|
||||
ENDIF()
|
||||
|
||||
SET(ENV{VS_UNICODE_OUTPUT})
|
||||
|
||||
# Switch off the monolithic install
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${CMAKE_COMMAND} -DCPACK_MONOLITHIC_INSTALL=0 ${CMAKE_BINARY_DIR}
|
||||
OUTPUT_QUIET
|
||||
)
|
||||
|
||||
INCLUDE(${CMAKE_BINARY_DIR}/CPackConfig.cmake)
|
||||
|
||||
IF(CPACK_WIX_CONFIG)
|
||||
INCLUDE(${CPACK_WIX_CONFIG})
|
||||
ENDIF()
|
||||
|
||||
IF(NOT CPACK_WIX_UI)
|
||||
SET(CPACK_WIX_UI "WixUI_Mondo_Custom")
|
||||
ENDIF()
|
||||
|
||||
SET(WIX_FEATURES)
|
||||
FOREACH(comp ${CPACK_COMPONENTS_ALL})
|
||||
STRING(TOUPPER "${comp}" comp_upper)
|
||||
IF(NOT CPACK_COMPONENT_${comp_upper}_GROUP)
|
||||
SET(WIX_FEATURE_${comp_upper}_COMPONENTS "${comp}")
|
||||
SET(CPACK_COMPONENT_${comp_upper}_HIDDEN 1)
|
||||
SET(CPACK_COMPONENT_GROUP_${comp_upper}_DISPLAY_NAME ${CPACK_COMPONENT_${comp_upper}_DISPLAY_NAME})
|
||||
SET(CPACK_COMPONENT_GROUP_${comp_upper}_DESCRIPTION ${CPACK_COMPONENT_${comp_upper}_DESCRIPTION})
|
||||
SET(CPACK_COMPONENT_GROUP_${comp_upper}_WIX_LEVEL ${CPACK_COMPONENT_${comp_upper}_WIX_LEVEL})
|
||||
SET(WIX_FEATURES ${WIX_FEATURES} WIX_FEATURE_${comp_upper})
|
||||
ELSE()
|
||||
SET(FEATURE_NAME WIX_FEATURE_${CPACK_COMPONENT_${comp_upper}_GROUP})
|
||||
SET(WIX_FEATURES ${WIX_FEATURES} ${FEATURE_NAME})
|
||||
LIST(APPEND ${FEATURE_NAME}_COMPONENTS ${comp})
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
|
||||
LIST(REMOVE_DUPLICATES WIX_FEATURES)
|
||||
|
||||
SET(CPACK_WIX_FEATURES)
|
||||
|
||||
FOREACH(f ${WIX_FEATURES})
|
||||
STRING(TOUPPER "${f}" f_upper)
|
||||
STRING(REPLACE "WIX_FEATURE_" "" f_upper ${f_upper})
|
||||
IF (CPACK_COMPONENT_GROUP_${f_upper}_DISPLAY_NAME)
|
||||
SET(TITLE ${CPACK_COMPONENT_GROUP_${f_upper}_DISPLAY_NAME})
|
||||
ELSE()
|
||||
SET(TITLE CPACK_COMPONENT_GROUP_${f_upper}_DISPLAY_NAME)
|
||||
ENDIF()
|
||||
|
||||
IF (CPACK_COMPONENT_GROUP_${f_upper}_DESCRIPTION)
|
||||
SET(DESCRIPTION ${CPACK_COMPONENT_GROUP_${f_upper}_DESCRIPTION})
|
||||
ELSE()
|
||||
SET(DESCRIPTION CPACK_COMPONENT_GROUP_${f_upper}_DESCRIPTION)
|
||||
ENDIF()
|
||||
IF(CPACK_COMPONENT_${f_upper}_WIX_LEVEL)
|
||||
SET(Level ${CPACK_COMPONENT_${f_upper}_WIX_LEVEL})
|
||||
ELSE()
|
||||
SET(Level 1)
|
||||
ENDIF()
|
||||
IF(CPACK_COMPONENT_GROUP_${f_upper}_HIDDEN)
|
||||
SET(DISPLAY "Display='hidden'")
|
||||
SET(TITLE ${f_upper})
|
||||
SET(DESCRIPTION ${f_upper})
|
||||
ELSE()
|
||||
SET(DISPLAY)
|
||||
IF(CPACK_COMPONENT_GROUP_${f_upper}_EXPANDED)
|
||||
SET(DISPLAY "Display='expand'")
|
||||
ENDIF()
|
||||
IF (CPACK_COMPONENT_GROUP_${f_upper}_DISPLAY_NAME)
|
||||
SET(TITLE ${CPACK_COMPONENT_GROUP_${f_upper}_DISPLAY_NAME})
|
||||
ELSE()
|
||||
SET(TITLE CPACK_COMPONENT_GROUP_${f_upper}_DISPLAY_NAME)
|
||||
ENDIF()
|
||||
IF (CPACK_COMPONENT_GROUP_${f_upper}_DESCRIPTION)
|
||||
SET(DESCRIPTION ${CPACK_COMPONENT_GROUP_${f_upper}_DESCRIPTION})
|
||||
ELSE()
|
||||
SET(DESCRIPTION CPACK_COMPONENT_GROUP_${f_upper}_DESCRIPTION)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
SET(CPACK_WIX_FEATURES
|
||||
"${CPACK_WIX_FEATURES}
|
||||
<Feature Id='${f_upper}'
|
||||
Title='${TITLE}'
|
||||
Description='${DESCRIPTION}'
|
||||
ConfigurableDirectory='INSTALLDIR'
|
||||
Level='${Level}' ${DISPLAY} >"
|
||||
)
|
||||
FOREACH(c ${${f}_COMPONENTS})
|
||||
STRING(TOUPPER "${c}" c_upper)
|
||||
IF (CPACK_COMPONENT_${c_upper}_DISPLAY_NAME)
|
||||
SET(TITLE ${CPACK_COMPONENT_${c_upper}_DISPLAY_NAME})
|
||||
ELSE()
|
||||
SET(TITLE CPACK_COMPONENT_${c_upper}_DISPLAY_NAME)
|
||||
ENDIF()
|
||||
|
||||
IF (CPACK_COMPONENT_${c_upper}_DESCRIPTION)
|
||||
SET(DESCRIPTION ${CPACK_COMPONENT_${c_upper}_DESCRIPTION})
|
||||
ELSE()
|
||||
SET(DESCRIPTION CPACK_COMPONENT_${c_upper}_DESCRIPTION)
|
||||
ENDIF()
|
||||
IF(CPACK_COMPONENT_${c_upper}_WIX_LEVEL)
|
||||
SET(Level ${CPACK_COMPONENT_${c_upper}_WIX_LEVEL})
|
||||
ELSE()
|
||||
SET(Level 1)
|
||||
ENDIF()
|
||||
IF(CPACK_COMPONENT_${c_upper}_HIDDEN)
|
||||
SET(CPACK_WIX_FEATURES
|
||||
"${CPACK_WIX_FEATURES}
|
||||
<ComponentGroupRef Id='componentgroup.${c}'/>")
|
||||
ELSE()
|
||||
SET(CPACK_WIX_FEATURES
|
||||
"${CPACK_WIX_FEATURES}
|
||||
<Feature Id='${c}'
|
||||
Title='${TITLE}'
|
||||
Description='${DESCRIPTION}'
|
||||
ConfigurableDirectory='INSTALLDIR'
|
||||
Level='${Level}'>
|
||||
<ComponentGroupRef Id='componentgroup.${c}'/>
|
||||
</Feature>")
|
||||
ENDIF()
|
||||
|
||||
ENDFOREACH()
|
||||
SET(CPACK_WIX_FEATURES
|
||||
"${CPACK_WIX_FEATURES}
|
||||
</Feature>
|
||||
")
|
||||
ENDFOREACH()
|
||||
|
||||
|
||||
IF(CMAKE_INSTALL_CONFIG_NAME)
|
||||
STRING(REPLACE "${CMAKE_CFG_INTDIR}" "${CMAKE_INSTALL_CONFIG_NAME}"
|
||||
WIXCA_LOCATION "${WIXCA_LOCATION}")
|
||||
SET(CONFIG_PARAM "-DCMAKE_INSTALL_CONFIG_NAME=${CMAKE_INSTALL_CONFIG_NAME}")
|
||||
ENDIF()
|
||||
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_server.wxs.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/mysql_server.wxs)
|
||||
|
||||
|
||||
FOREACH(comp ${CPACK_COMPONENTS_ALL})
|
||||
SET(ENV{DESTDIR} testinstall/${comp})
|
||||
SET(DIRS ${DIRS} testinstall/${comp})
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${CMAKE_COMMAND} ${CONFIG_PARAM} -DCMAKE_INSTALL_COMPONENT=${comp}
|
||||
-DCMAKE_INSTALL_PREFIX= -P ${CMAKE_BINARY_DIR}/cmake_install.cmake
|
||||
OUTPUT_QUIET
|
||||
)
|
||||
ENDFOREACH()
|
||||
|
||||
MACRO(GENERATE_GUID VarName)
|
||||
EXECUTE_PROCESS(COMMAND uuidgen -c
|
||||
OUTPUT_VARIABLE ${VarName}
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
ENDMACRO()
|
||||
|
||||
SET(INC_VAR 0)
|
||||
MACRO(MAKE_WIX_IDENTIFIER str varname)
|
||||
STRING(REPLACE "/" "." ${varname} "${str}")
|
||||
STRING(REGEX REPLACE "[^a-zA-Z_0-9.]" "_" ${varname} "${${varname}}")
|
||||
STRING(LENGTH "${${varname}}" len)
|
||||
# Identifier should be smaller than 72 character
|
||||
# We have to cut down the length to 70 chars, since we add 2 char prefix
|
||||
# pretty often
|
||||
IF(len GREATER 70)
|
||||
STRING(SUBSTRING "${${varname}}" 0 67 shortstr)
|
||||
MATH(EXPR INC_VAR ${INC_VAR}+1)
|
||||
SET(${varname} "${shortstr}${INC_VAR}")
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
|
||||
FUNCTION(TRAVERSE_FILES dir topdir file file_comp dir_root)
|
||||
FILE(RELATIVE_PATH dir_rel ${topdir} ${dir})
|
||||
IF(dir_rel)
|
||||
LIST(FIND EXCLUDE_DIRS ${dir_rel} TO_EXCLUDE)
|
||||
IF(NOT TO_EXCLUDE EQUAL -1)
|
||||
MESSAGE(STATUS "excluding directory: ${dir_rel}")
|
||||
RETURN()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
FILE(GLOB all_files ${dir}/*)
|
||||
IF(NOT all_files)
|
||||
RETURN()
|
||||
ENDIF()
|
||||
IF(dir_rel)
|
||||
MAKE_DIRECTORY(${dir_root}/${dir_rel})
|
||||
MAKE_WIX_IDENTIFIER("${dir_rel}" id)
|
||||
SET(DirectoryRefId "D.${id}")
|
||||
ELSE()
|
||||
SET(DirectoryRefId "INSTALLDIR")
|
||||
ENDIF()
|
||||
FILE(APPEND ${file} "<DirectoryRef Id='${DirectoryRefId}'>\n")
|
||||
|
||||
SET(NONEXEFILES)
|
||||
FOREACH(f ${all_files})
|
||||
IF(NOT IS_DIRECTORY ${f})
|
||||
FILE(RELATIVE_PATH rel ${topdir} ${f})
|
||||
SET(TO_EXCLUDE)
|
||||
IF(rel MATCHES "\\.pdb$")
|
||||
SET(TO_EXCLUDE TRUE)
|
||||
ELSE()
|
||||
LIST(FIND EXCLUDE_FILES ${rel} RES)
|
||||
IF(NOT RES EQUAL -1)
|
||||
SET(TO_EXCLUDE TRUE)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
IF(TO_EXCLUDE)
|
||||
MESSAGE(STATUS "excluding file: ${rel}")
|
||||
ELSE()
|
||||
MAKE_WIX_IDENTIFIER("${rel}" id)
|
||||
FILE(TO_NATIVE_PATH ${f} f_native)
|
||||
GET_FILENAME_COMPONENT(f_ext "${f}" EXT)
|
||||
# According to MSDN each DLL or EXE should be in the own component
|
||||
IF(f_ext MATCHES ".exe" OR f_ext MATCHES ".dll")
|
||||
|
||||
FILE(APPEND ${file} " <Component Id='C.${id}' Guid='*' ${Win64}>\n")
|
||||
FILE(APPEND ${file} " <File Id='F.${id}' KeyPath='yes' Source='${f_native}'/>\n")
|
||||
FILE(APPEND ${file} " </Component>\n")
|
||||
FILE(APPEND ${file_comp} " <ComponentRef Id='C.${id}'/>\n")
|
||||
ELSE()
|
||||
SET(NONEXEFILES "${NONEXEFILES}\n<File Id='F.${id}' Source='${f_native}'/>" )
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
FILE(APPEND ${file} "</DirectoryRef>\n")
|
||||
IF(NONEXEFILES)
|
||||
GENERATE_GUID(guid)
|
||||
SET(ComponentId "C._files_${COMP_NAME}.${DirectoryRefId}")
|
||||
FILE(APPEND ${file}
|
||||
"<DirectoryRef Id='${DirectoryRefId}'>\n<Component Guid='${guid}' Id='${ComponentId}' ${Win64}>${NONEXEFILES}\n</Component></DirectoryRef>\n")
|
||||
FILE(APPEND ${file_comp} " <ComponentRef Id='${ComponentId}'/>\n")
|
||||
ENDIF()
|
||||
FOREACH(f ${all_files})
|
||||
IF(IS_DIRECTORY ${f})
|
||||
TRAVERSE_FILES(${f} ${topdir} ${file} ${file_comp} ${dir_root})
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
ENDFUNCTION()
|
||||
|
||||
FUNCTION(TRAVERSE_DIRECTORIES dir topdir file prefix)
|
||||
FILE(RELATIVE_PATH rel ${topdir} ${dir})
|
||||
IF(rel)
|
||||
MAKE_WIX_IDENTIFIER("${rel}" id)
|
||||
GET_FILENAME_COMPONENT(name ${dir} NAME)
|
||||
FILE(APPEND ${file} "${prefix}<Directory Id='D.${id}' Name='${name}'>\n")
|
||||
ENDIF()
|
||||
FILE(GLOB all_files ${dir}/*)
|
||||
FOREACH(f ${all_files})
|
||||
IF(IS_DIRECTORY ${f})
|
||||
TRAVERSE_DIRECTORIES(${f} ${topdir} ${file} "${prefix} ")
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
IF(rel)
|
||||
FILE(APPEND ${file} "${prefix}</Directory>\n")
|
||||
ENDIF()
|
||||
ENDFUNCTION()
|
||||
|
||||
SET(CPACK_WIX_COMPONENTS)
|
||||
SET(CPACK_WIX_COMPONENT_GROUPS)
|
||||
GET_FILENAME_COMPONENT(abs . ABSOLUTE)
|
||||
FOREACH(d ${DIRS})
|
||||
GET_FILENAME_COMPONENT(d ${d} ABSOLUTE)
|
||||
GET_FILENAME_COMPONENT(d_name ${d} NAME)
|
||||
FILE(WRITE ${abs}/${d_name}_component_group.wxs "<ComponentGroup Id='componentgroup.${d_name}'>")
|
||||
SET(COMP_NAME ${d_name})
|
||||
TRAVERSE_FILES(${d} ${d} ${abs}/${d_name}.wxs ${abs}/${d_name}_component_group.wxs "${abs}/dirs")
|
||||
FILE(APPEND ${abs}/${d_name}_component_group.wxs "</ComponentGroup>")
|
||||
IF(EXISTS ${d_name}.wxs)
|
||||
FILE(READ ${d_name}.wxs WIX_TMP)
|
||||
SET(CPACK_WIX_COMPONENTS "${CPACK_WIX_COMPONENTS}\n${WIX_TMP}")
|
||||
FILE(REMOVE ${d_name}.wxs)
|
||||
ENDIF()
|
||||
|
||||
FILE(READ ${d_name}_component_group.wxs WIX_TMP)
|
||||
|
||||
SET(CPACK_WIX_COMPONENT_GROUPS "${CPACK_WIX_COMPONENT_GROUPS}\n${WIX_TMP}")
|
||||
FILE(REMOVE ${d_name}_component_group.wxs)
|
||||
ENDFOREACH()
|
||||
|
||||
FILE(WRITE directories.wxs "<DirectoryRef Id='INSTALLDIR'>\n")
|
||||
TRAVERSE_DIRECTORIES(${abs}/dirs ${abs}/dirs directories.wxs "")
|
||||
FILE(APPEND directories.wxs "</DirectoryRef>\n")
|
||||
|
||||
FILE(READ directories.wxs CPACK_WIX_DIRECTORIES)
|
||||
FILE(REMOVE directories.wxs)
|
||||
|
||||
|
||||
FOREACH(src ${CPACK_WIX_INCLUDE})
|
||||
SET(CPACK_WIX_INCLUDES
|
||||
"${CPACK_WIX_INCLUDES}
|
||||
<?include ${src}?>"
|
||||
)
|
||||
ENDFOREACH()
|
||||
|
||||
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql_server.wxs.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/mysql_server.wxs)
|
||||
|
||||
SET(EXTRA_CANDLE_ARGS)
|
||||
IF("$ENV{EXTRA_CANDLE_ARGS}")
|
||||
SET(EXTRA_CANDLE_ARGS "$ENV{EXTRA_CANDLE_ARGS}")
|
||||
ENDIF()
|
||||
|
||||
SET(EXTRA_LIGHT_ARGS)
|
||||
IF("$ENV{EXTRA_LIGHT_ARGS}")
|
||||
SET(EXTRA_LIGHT_ARGS "$ENV{EXTRA_LIGHT_ARGS}")
|
||||
ENDIF()
|
||||
|
||||
FILE(REMOVE mysql_server.wixobj)
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${CANDLE_EXECUTABLE} -ext WixUtilExtension mysql_server.wxs ${EXTRA_CANDLE_ARGS}
|
||||
RESULT_VARIABLE CANDLE_RESULT
|
||||
)
|
||||
|
||||
IF(CANDLE_RESULT)
|
||||
MESSAGE(FATAL_ERROR "ERROR: can't run candle")
|
||||
ENDIF()
|
||||
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${LIGHT_EXECUTABLE} -ext WixUIExtension -ext WixUtilExtension
|
||||
mysql_server.wixobj -out ${CPACK_PACKAGE_FILE_NAME}.msi
|
||||
${EXTRA_LIGHT_ARGS}
|
||||
RESULT_VARIABLE LIGHT_RESULT
|
||||
)
|
||||
|
||||
IF(LIGHT_RESULT)
|
||||
MESSAGE(FATAL_ERROR "ERROR: can't run light")
|
||||
ENDIF()
|
||||
|
||||
# Switch monolithic install on again
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${CMAKE_COMMAND} -DCPACK_MONOLITHIC_INSTALL=1 ${CMAKE_BINARY_DIR}
|
||||
)
|
|
@ -1,115 +0,0 @@
|
|||
<Include xmlns="http://schemas.microsoft.com/wix/2006/wi"
|
||||
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
|
||||
|
||||
<!--
|
||||
Copyright (c) 2010, 2015, 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
|
||||
-->
|
||||
|
||||
<UI Id="WixUI_Mondo_Custom">
|
||||
<Dialog Id="CustomWelcomeDlg" Width="370" Height="270" Title="[ProductName] Setup" NoMinimize="yes">
|
||||
<Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)">
|
||||
<Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
|
||||
</Control>
|
||||
<Control Id="Next" Type="PushButton" X="220" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)">
|
||||
<Publish Event="NewDialog" Value="LicenseAgreementDlg">NOT OLDERVERSIONBEINGUPGRADED</Publish>
|
||||
<Publish Event="NewDialog" Value="UpgradeDlg">OLDERVERSIONBEINGUPGRADED</Publish>
|
||||
</Control>
|
||||
<Control Id="Back" Type="PushButton" X="156" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)" Disabled="yes" />
|
||||
<Control Id="Description" Type="Text" X="135" Y="80" Width="220" Height="60" Transparent="yes" NoPrefix="yes" Text="!(loc.WelcomeDlgDescription)" />
|
||||
<Control Id="Title" Type="Text" X="135" Y="20" Width="220" Height="60" Transparent="yes" NoPrefix="yes" Text="!(loc.WelcomeDlgTitle)" />
|
||||
<Control Id="CopyrightText" Type="Text" X="135" Y="200" Width="220" Height="40" Transparent="yes" Text="Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved." />
|
||||
<Control Id="Bitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="234" TabSkip="no" Text="!(loc.WelcomeDlgBitmap)" />
|
||||
<Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" />
|
||||
</Dialog>
|
||||
|
||||
<Dialog Id="UpgradeDlg" Width="370" Height="270" Title="[ProductName] Setup" NoMinimize="yes">
|
||||
<Control Id="Install" Type="PushButton" ElevationShield="yes" X="212" Y="243" Width="80" Height="17" Default="yes" Text="Upgrade">
|
||||
<Publish Event="EndDialog" Value="Return"><![CDATA[OutOfDiskSpace <> 1]]></Publish>
|
||||
<Publish Event="SpawnDialog" Value="OutOfRbDiskDlg">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST="P" OR NOT PROMPTROLLBACKCOST)</Publish>
|
||||
<Publish Event="EndDialog" Value="Return">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
|
||||
<Publish Event="EnableRollback" Value="False">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
|
||||
<Publish Event="SpawnDialog" Value="OutOfDiskDlg">(OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST="F")</Publish>
|
||||
</Control>
|
||||
<Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)">
|
||||
<Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
|
||||
</Control>
|
||||
<Control Id="Back" Type="PushButton" X="156" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)">
|
||||
<Condition Action="default">WixUI_InstallMode = "Remove"</Condition>
|
||||
</Control>
|
||||
<Control Id="InstallTitle" Type="Text" X="15" Y="15" Width="300" Height="15" Transparent="yes" NoPrefix="yes" Hidden="yes" Text="!(loc.VerifyReadyDlgInstallTitle)">
|
||||
<Condition Action="show">NOT Installed</Condition>
|
||||
</Control>
|
||||
<Control Id="InstallText" Type="Text" X="25" Y="70" Width="320" Height="80" Hidden="yes" Text="!(loc.VerifyReadyDlgInstallText)">
|
||||
<Condition Action="show">NOT Installed</Condition>
|
||||
</Control>
|
||||
<Control Id="UpgradeText" Type="Text" X="25" Y="70" Width="320" Height="80" Hidden="no" NoPrefix="yes"
|
||||
Text="Click Upgrade to upgrade your installation from version [OLDERVERSION] to version [ProductVersion]. Click Cancel to exit the upgrade."/>
|
||||
<Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="!(loc.VerifyReadyDlgBannerBitmap)" />
|
||||
<Control Id="BannerLine" Type="Line" X="0" Y="44" Width="370" Height="0" />
|
||||
<Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" />
|
||||
</Dialog>
|
||||
|
||||
<TextStyle Id="WixUI_Font_Normal" FaceName="Tahoma" Size="8" />
|
||||
<TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="12" />
|
||||
<TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes" />
|
||||
|
||||
<Property Id="DefaultUIFont" Value="WixUI_Font_Normal" />
|
||||
<Property Id="WixUI_Mode" Value="Mondo" />
|
||||
|
||||
<DialogRef Id="ErrorDlg" />
|
||||
<DialogRef Id="FatalError" />
|
||||
<DialogRef Id="FilesInUse" />
|
||||
<DialogRef Id="MsiRMFilesInUse" />
|
||||
<DialogRef Id="PrepareDlg" />
|
||||
<DialogRef Id="ProgressDlg" />
|
||||
<DialogRef Id="ResumeDlg" />
|
||||
<DialogRef Id="UserExit" />
|
||||
|
||||
<Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish>
|
||||
|
||||
<Publish Dialog="LicenseAgreementDlg" Control="Back" Event="NewDialog" Value="CustomWelcomeDlg">1</Publish>
|
||||
<Publish Dialog="LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="SetupTypeDlg" Order="2">LicenseAccepted = "1"</Publish>
|
||||
|
||||
<Publish Dialog="SetupTypeDlg" Control="Back" Event="NewDialog" Value="LicenseAgreementDlg">1</Publish>
|
||||
<Publish Dialog="SetupTypeDlg" Control="TypicalButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
|
||||
<Publish Dialog="SetupTypeDlg" Control="CustomButton" Event="NewDialog" Value="CustomizeDlg">1</Publish>
|
||||
<Publish Dialog="SetupTypeDlg" Control="CompleteButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
|
||||
|
||||
<Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="1">WixUI_InstallMode = "Change"</Publish>
|
||||
<Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="SetupTypeDlg" Order="2">WixUI_InstallMode = "InstallCustom"</Publish>
|
||||
<Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
|
||||
|
||||
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="CustomizeDlg" Order="1">WixUI_InstallMode = "InstallCustom"</Publish>
|
||||
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="SetupTypeDlg" Order="2">WixUI_InstallMode = "InstallTypical" OR WixUI_InstallMode = "InstallComplete"</Publish>
|
||||
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="CustomizeDlg" Order="3">WixUI_InstallMode = "Change"</Publish>
|
||||
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="4">WixUI_InstallMode = "Repair" OR WixUI_InstallMode = "Remove"</Publish>
|
||||
|
||||
<Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="MaintenanceTypeDlg">1</Publish>
|
||||
|
||||
<Publish Dialog="MaintenanceTypeDlg" Control="ChangeButton" Event="NewDialog" Value="CustomizeDlg">1</Publish>
|
||||
<Publish Dialog="MaintenanceTypeDlg" Control="RepairButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
|
||||
<Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
|
||||
<Publish Dialog="MaintenanceTypeDlg" Control="Back" Event="NewDialog" Value="MaintenanceWelcomeDlg">1</Publish>
|
||||
|
||||
<Publish Dialog="UpgradeDlg" Control="Back" Event="NewDialog" Value="CustomWelcomeDlg">1</Publish>
|
||||
|
||||
<InstallUISequence>
|
||||
<Show Dialog="CustomWelcomeDlg" Before="ProgressDlg">NOT Installed</Show>
|
||||
</InstallUISequence>
|
||||
</UI>
|
||||
|
||||
<UIRef Id="WixUI_Common" />
|
||||
</Include>
|
|
@ -1,81 +0,0 @@
|
|||
<Include xmlns="http://schemas.microsoft.com/wix/2006/wi"
|
||||
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
|
||||
|
||||
<!--
|
||||
Copyright (c) 2010, 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
|
||||
-->
|
||||
|
||||
<!-- Datafiles that installation will copy to CommonAppData (initial database)
|
||||
They are declared Permanent and NeverOverwrite since it is user data -->
|
||||
<DirectoryRef Id='TARGETDIR'>
|
||||
<Directory Id="CommonAppDataFolder">
|
||||
<Directory Id="datadir.mysql" Name="MySQL">
|
||||
<Directory Id="datadir.mysql.mysqlserver"
|
||||
Name="MySQL Server @MAJOR_VERSION@.@MINOR_VERSION@">
|
||||
<Directory Id="DATADIR" Name=".">
|
||||
<Component Id="component.datadir" Guid="d3491319-5dbc-4477-95f3-4f809ef1dd2d">
|
||||
<CreateFolder>
|
||||
<util:PermissionEx User="[LogonUser]" GenericAll="yes" />
|
||||
</CreateFolder>
|
||||
</Component>
|
||||
<Directory Id="datadir.mysql.mysqlserver.data" Name="data">
|
||||
<Directory Id="datadir.mysql.mysqlserver.data.mysql" Name="mysql">
|
||||
<Component Id="component.datadir.mysql"
|
||||
Guid="19ec0f1f-1a7f-424e-a788-b09346c0a709"
|
||||
Permanent="yes" NeverOverwrite="yes">
|
||||
<CreateFolder>
|
||||
<util:PermissionEx User="[LogonUser]" GenericAll="yes" />
|
||||
</CreateFolder>
|
||||
@DATADIR_MYSQL_FILES@
|
||||
</Component>
|
||||
</Directory>
|
||||
<Directory Id="datadir.mysql.mysqlserver.data.performance_schema"
|
||||
Name="performance_schema">
|
||||
<Component Id="component.datadir.performance_schema"
|
||||
Guid="af2a6776-2655-431f-a748-9e9f4645acc3"
|
||||
Permanent="yes" NeverOverwrite="yes">
|
||||
<CreateFolder>
|
||||
<util:PermissionEx User="[LogonUser]" GenericAll="yes" />
|
||||
</CreateFolder>
|
||||
@DATADIR_PERFORMANCE_SCHEMA_FILES@
|
||||
</Component>
|
||||
</Directory>
|
||||
<Directory Id="datadir.mysql.mysqlserver.data.test" Name="test">
|
||||
<Component Id="component.datadir.test" Guid="52fa9f0a-fcd1-420a-b2ac-95a8f70ad20a">
|
||||
<CreateFolder/>
|
||||
</Component>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</DirectoryRef>
|
||||
|
||||
<Feature Id='UserEditableDataFiles'
|
||||
Title='Server data files'
|
||||
Description='Server data files'
|
||||
ConfigurableDirectory='DATADIR'
|
||||
Level='1'>
|
||||
<ComponentRef Id="component.datadir"/>
|
||||
<ComponentRef Id="component.datadir.mysql"/>
|
||||
<ComponentRef Id="component.datadir.performance_schema"/>
|
||||
<ComponentRef Id="component.datadir.test"/>
|
||||
</Feature>
|
||||
</Include>
|
||||
|
||||
|
||||
|
|
@ -1,196 +0,0 @@
|
|||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
|
||||
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
|
||||
|
||||
<!--
|
||||
Copyright (c) 2010, 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
|
||||
-->
|
||||
|
||||
<Product
|
||||
Id="*"
|
||||
UpgradeCode="49EB7A6A-1CEF-4A1E-9E89-B9A4993963E3"
|
||||
Name="MySQL Server @MAJOR_VERSION@.@MINOR_VERSION@"
|
||||
Version="@MAJOR_VERSION@.@MINOR_VERSION@.@PATCH_VERSION@"
|
||||
Language="1033"
|
||||
Manufacturer="@MANUFACTURER@">
|
||||
|
||||
<Package Id='*'
|
||||
Keywords='Installer'
|
||||
Description="MySQL Database Server"
|
||||
Manufacturer='@MANUFACTURER@'
|
||||
InstallerVersion='200'
|
||||
Languages='1033'
|
||||
Compressed='yes'
|
||||
SummaryCodepage='1252'
|
||||
Platform='@Platform@'
|
||||
InstallScope="perMachine"/>
|
||||
|
||||
<Media Id='1' Cabinet='product.cab' EmbedCab='yes' />
|
||||
|
||||
<!-- Upgrade -->
|
||||
<Upgrade Id="49EB7A6A-1CEF-4A1E-9E89-B9A4993963E3">
|
||||
<UpgradeVersion
|
||||
Minimum="@MAJOR_VERSION@.@MINOR_VERSION@.0"
|
||||
IncludeMinimum="yes"
|
||||
Maximum="@MAJOR_VERSION@.@MINOR_VERSION@.@PATCH_VERSION@"
|
||||
IncludeMaximum="yes"
|
||||
Property="OLDERVERSIONBEINGUPGRADED"
|
||||
MigrateFeatures="yes"
|
||||
/>
|
||||
<UpgradeVersion
|
||||
Minimum="@MAJOR_VERSION@.@MINOR_VERSION@.@PATCH_VERSION@"
|
||||
IncludeMinimum="no"
|
||||
OnlyDetect="yes"
|
||||
Property="NEWERVERSIONDETECTED" />
|
||||
</Upgrade>
|
||||
<Condition Message="A later version of [ProductName] is already installed. Setup will now exit.">
|
||||
NOT NEWERVERSIONDETECTED OR Installed
|
||||
</Condition>
|
||||
<InstallExecuteSequence>
|
||||
<RemoveExistingProducts After="InstallInitialize"/>
|
||||
</InstallExecuteSequence>
|
||||
|
||||
<!-- Save/restore install location -->
|
||||
<CustomAction Id="SaveTargetDir" Property="ARPINSTALLLOCATION" Value="[INSTALLDIR]" />
|
||||
<InstallExecuteSequence>
|
||||
<Custom Action="SaveTargetDir" After="InstallValidate">
|
||||
NOT
|
||||
Installed
|
||||
</Custom>
|
||||
</InstallExecuteSequence>
|
||||
<InstallUISequence>
|
||||
<!-- App search is what does FindInstallLocation, and it is dependent on FindRelatedProducts -->
|
||||
<AppSearch After="FindRelatedProducts"/>
|
||||
</InstallUISequence>
|
||||
|
||||
<!-- Find previous installation -->
|
||||
<Property Id="INSTALLDIR">
|
||||
<RegistrySearch Id="FindInstallLocation"
|
||||
Root="HKLM"
|
||||
Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[OLDERVERSIONBEINGUPGRADED]"
|
||||
Name="InstallLocation"
|
||||
Type="raw" />
|
||||
</Property>
|
||||
<?if @Platform@ != "x64" ?>
|
||||
<Property Id="OLDERVERSION">
|
||||
<RegistrySearch Id="FindOlderVersion"
|
||||
Root="HKLM"
|
||||
Win64 = "no"
|
||||
Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[OLDERVERSIONBEINGUPGRADED]"
|
||||
Name="DisplayVersion"
|
||||
Type="raw" />
|
||||
</Property>
|
||||
<?else ?>
|
||||
<Property Id="OLDERVERSION">
|
||||
<RegistrySearch Id="FindOlderVersion"
|
||||
Root="HKLM"
|
||||
Win64 = "yes"
|
||||
Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[OLDERVERSIONBEINGUPGRADED]"
|
||||
Name="DisplayVersion"
|
||||
Type="raw" />
|
||||
</Property>
|
||||
<?endif ?>
|
||||
<Property Id="DATADIR">
|
||||
<RegistrySearch Id="FindDataDir"
|
||||
Root="HKLM"
|
||||
Key="SOFTWARE\MySQL AB\[ProductName]"
|
||||
Name="DataLocation"
|
||||
Type="raw" />
|
||||
</Property>
|
||||
<Property Id="INSTALLDIR2">
|
||||
<RegistrySearch Id="FindInstallLocation2"
|
||||
Root="HKLM"
|
||||
Key="SOFTWARE\MySQL AB\[ProductName]"
|
||||
Name="Location"
|
||||
Type="raw" />
|
||||
</Property>
|
||||
<CustomAction Id="SetInstallDir2" Property="INSTALLDIR" Value="[INSTALLDIR2]" />
|
||||
<InstallUISequence>
|
||||
<Custom Action="SetInstallDir2" After="AppSearch">INSTALLDIR2</Custom>
|
||||
</InstallUISequence>
|
||||
|
||||
|
||||
<!-- UI -->
|
||||
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR"></Property>
|
||||
<UIRef Id="@CPACK_WIX_UI@" />
|
||||
<UIRef Id="WixUI_ErrorProgressText" />
|
||||
<WixVariable
|
||||
Id="WixUIBannerBmp"
|
||||
Value="@CMAKE_CURRENT_SOURCE_DIR@/AdminHeader.jpg" />
|
||||
<WixVariable
|
||||
Id="WixUIDialogBmp"
|
||||
Value="@CMAKE_CURRENT_SOURCE_DIR@/AdminBackground.jpg" />
|
||||
<Icon
|
||||
Id="icon.ico"
|
||||
SourceFile="@CMAKE_CURRENT_SOURCE_DIR@/MySQLServer.ico"/>
|
||||
<Property
|
||||
Id="ARPPRODUCTICON"
|
||||
Value="icon.ico" />
|
||||
|
||||
<!-- License -->
|
||||
<WixVariable
|
||||
Id="WixUILicenseRtf"
|
||||
Value="@COPYING_RTF@"/>
|
||||
|
||||
<!-- How to remove the service on uninstall -->
|
||||
<Binary Id='wixca.dll' SourceFile='@WIXCA_LOCATION@' />
|
||||
<CustomAction Id="UnregisterProperty" Property="UnregisterService" Value="[INSTALLDIR]" Return="check" />
|
||||
<CustomAction Id="UnregisterPropertySilent" Property="UnregisterServiceSilently" Value="[INSTALLDIR]" Return="check" />
|
||||
<CustomAction Id="UnregisterService"
|
||||
BinaryKey="wixca.dll"
|
||||
DllEntry="RemoveService"
|
||||
Execute="deferred"
|
||||
Impersonate="no"
|
||||
Return="check" />
|
||||
<CustomAction Id="UnregisterServiceSilently"
|
||||
BinaryKey="wixca.dll"
|
||||
DllEntry="RemoveServiceNoninteractive"
|
||||
Execute="deferred"
|
||||
Impersonate="no"
|
||||
Return="check" />
|
||||
<InstallExecuteSequence>
|
||||
<Custom Action="UnregisterProperty" After="InstallInitialize">Installed And Not UPGRADINGPRODUCTCODE And REMOVE="ALL"</Custom>
|
||||
<Custom Action="UnregisterPropertySilent" After="InstallInitialize">Installed And Not UPGRADINGPRODUCTCODE And REMOVE="ALL"</Custom>
|
||||
<Custom Action="UnregisterService" After="UnregisterProperty">Installed And Not UPGRADINGPRODUCTCODE And REMOVE="ALL" And UILevel>4</Custom>
|
||||
<Custom Action="UnregisterServiceSilently" After="UnregisterPropertySilent">Installed And Not UPGRADINGPRODUCTCODE And REMOVE="ALL" And UILevel<=4</Custom>
|
||||
</InstallExecuteSequence>
|
||||
|
||||
<!-- Installation root-->
|
||||
<Directory Id='TARGETDIR' Name='SourceDir'>
|
||||
<Directory Id='@PlatformProgramFilesFolder@'>
|
||||
<Directory Id='directory.MySQL' Name='MySQL'>
|
||||
<Directory Id='INSTALLDIR' Name='MySQL Server @MAJOR_VERSION@.@MINOR_VERSION@'>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Directory>
|
||||
|
||||
<!-- CPACK_WIX_FEATURES -->
|
||||
@CPACK_WIX_FEATURES@
|
||||
|
||||
<!-- CPACK_WIX_DIRECTORIES -->
|
||||
@CPACK_WIX_DIRECTORIES@
|
||||
|
||||
<!--CPACK_WIX_COMPONENTS-->
|
||||
@CPACK_WIX_COMPONENTS@
|
||||
|
||||
<!--CPACK_WIX_COMPONENTS_GROUPS -->
|
||||
@CPACK_WIX_COMPONENT_GROUPS@
|
||||
|
||||
<!--CPACK_WIX_INCLUDES -->
|
||||
@CPACK_WIX_INCLUDES@
|
||||
</Product>
|
||||
|
||||
</Wix>
|
|
@ -1,36 +0,0 @@
|
|||
# Copyright (c) 2012, 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
|
||||
|
||||
|
||||
IF(UNIX)
|
||||
SET(prefix ${CMAKE_INSTALL_PREFIX})
|
||||
|
||||
SET(SPECFILENAME "mysql.spec")
|
||||
IF("${VERSION}" MATCHES "-ndb-")
|
||||
STRING(REGEX REPLACE "^.*-ndb-" "" NDBVERSION "${VERSION}")
|
||||
SET(SPECFILENAME "mysql-cluster-${NDBVERSION}.spec")
|
||||
ENDIF()
|
||||
|
||||
# Left in current directory, to be taken during build
|
||||
CONFIGURE_FILE(mysql.spec.in ${CMAKE_CURRENT_BINARY_DIR}/${SPECFILENAME} @ONLY)
|
||||
|
||||
FOREACH(fedfile my.cnf my_config.h mysql_config.sh
|
||||
mysqld.service mysql-systemd-start mysql.conf
|
||||
filter-requires.sh filter-provides.sh mysql.init
|
||||
mysql-5.5-libmysqlclient-symbols.patch)
|
||||
CONFIGURE_FILE(${fedfile} ${CMAKE_CURRENT_BINARY_DIR}/${fedfile} COPYONLY)
|
||||
ENDFOREACH()
|
||||
ENDIF()
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
#! /bin/bash
|
||||
#
|
||||
|
||||
/usr/lib/rpm/perl.prov $* |
|
||||
sed -e '/perl(hostnames)/d' -e '/perl(lib::mtr.*/d' -e '/perl(lib::v1.*/d' -e '/perl(mtr_.*/d' -e '/perl(My::.*/d'
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
#! /bin/bash
|
||||
#
|
||||
|
||||
/usr/lib/rpm/perl.req $* |
|
||||
sed -e '/perl(GD)/d' -e '/perl(hostnames)/d' -e '/perl(lib::mtr.*/d' -e '/perl(lib::v1.*/d' -e '/perl(mtr_.*/d' -e '/perl(My::.*/d'
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
# For advice on how to change settings please see
|
||||
# http://dev.mysql.com/doc/refman/5.5/en/server-configuration-defaults.html
|
||||
|
||||
[mysqld]
|
||||
#
|
||||
# Remove leading # and set to the amount of RAM for the most important data
|
||||
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
|
||||
# innodb_buffer_pool_size = 128M
|
||||
#
|
||||
# Remove leading # to turn on a very important data integrity option: logging
|
||||
# changes to the binary log between backups.
|
||||
# log_bin
|
||||
#
|
||||
# Remove leading # to set options mainly useful for reporting servers.
|
||||
# The server defaults are faster for transactions and fast SELECTs.
|
||||
# Adjust sizes as needed, experiment to find the optimal values.
|
||||
# join_buffer_size = 128M
|
||||
# sort_buffer_size = 2M
|
||||
# read_rnd_buffer_size = 2M
|
||||
datadir=/var/lib/mysql
|
||||
socket=/var/lib/mysql/mysql.sock
|
||||
|
||||
# Disabling symbolic-links is recommended to prevent assorted security risks
|
||||
symbolic-links=0
|
||||
|
||||
# Recommended in standard MySQL setup
|
||||
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
|
||||
|
||||
[mysqld_safe]
|
||||
log-error=/var/log/mysqld.log
|
||||
pid-file=/var/run/mysqld/mysqld.pid
|
|
@ -1,30 +0,0 @@
|
|||
/*
|
||||
* Fedora supports multi arch: having 32 and 64 versions of MySQL
|
||||
* installed at the same time. my_config.h will differ due arch
|
||||
* dependent defs creating a file conflict. We move arch specific
|
||||
* headers to arch specific file names and include the correct arch
|
||||
* specific file by installing this generic file.
|
||||
*
|
||||
*/
|
||||
|
||||
#if defined(__i386__)
|
||||
#include "my_config_i386.h"
|
||||
#elif defined(__ia64__)
|
||||
#include "my_config_ia64.h"
|
||||
#elif defined(__powerpc__)
|
||||
#include "my_config_ppc.h"
|
||||
#elif defined(__powerpc64__)
|
||||
#include "my_config_ppc64.h"
|
||||
#elif defined(__s390x__)
|
||||
#include "my_config_s390x.h"
|
||||
#elif defined(__s390__)
|
||||
#include "my_config_s390.h"
|
||||
#elif defined(__sparc__) && defined(__arch64__)
|
||||
#include "my_config_sparc64.h"
|
||||
#elif defined(__sparc__)
|
||||
#include "my_config_sparc.h"
|
||||
#elif defined(__x86_64__)
|
||||
#include "my_config_x86_64.h"
|
||||
#else
|
||||
#error "This MySQL devel package does not work your architecture?"
|
||||
#endif
|
|
@ -1,982 +0,0 @@
|
|||
diff -rup old/libmysql/CMakeLists.txt new/libmysql/CMakeLists.txt
|
||||
--- old/libmysql/CMakeLists.txt 2013-11-05 08:19:26.000000000 +0100
|
||||
+++ new/libmysql/CMakeLists.txt 2014-01-10 15:41:30.530068723 +0100
|
||||
@@ -205,13 +205,14 @@ IF(NOT DISABLE_SHARED)
|
||||
OUTPUT_NAME mysqlclient
|
||||
VERSION "${OS_SHARED_LIB_VERSION}"
|
||||
SOVERSION "${SHARED_LIB_MAJOR_VERSION}")
|
||||
+ CONFIGURE_FILE(libmysql.ver.in ${CMAKE_CURRENT_BINARY_DIR}/libmysql.ver)
|
||||
IF(LINK_FLAG_NO_UNDEFINED)
|
||||
GET_TARGET_PROPERTY(libmysql_link_flags libmysql LINK_FLAGS)
|
||||
IF(NOT libmysql_link_flag)
|
||||
SET(libmysql_link_flags)
|
||||
ENDIF()
|
||||
SET_TARGET_PROPERTIES(libmysql PROPERTIES LINK_FLAGS
|
||||
- "${libmysql_link_flags} ${LINK_FLAG_NO_UNDEFINED}")
|
||||
+ "${libmysql_link_flags} -Wl,--version-script=libmysql.ver ${LINK_FLAG_NO_UNDEFINED}")
|
||||
ENDIF()
|
||||
# clean direct output needs to be set several targets have the same name
|
||||
#(mysqlclient in this case)
|
||||
diff -rup old/libmysql/libmysql.c new/libmysql/libmysql.c
|
||||
--- old/libmysql/libmysql.c 2013-11-05 08:19:26.000000000 +0100
|
||||
+++ new/libmysql/libmysql.c 2014-01-10 15:46:35.708928462 +0100
|
||||
@@ -4870,3 +4870,612 @@ my_bool STDCALL mysql_read_query_result(
|
||||
return (*mysql->methods->read_query_result)(mysql);
|
||||
}
|
||||
|
||||
+#ifndef EMBEDDED_LIBRARY
|
||||
+
|
||||
+// Hack to provide both libmysqlclient_16 and libmysqlclient_18 symbol versions
|
||||
+
|
||||
+#define SYM_16(_exportedsym) __asm__(".symver symver16_" #_exportedsym "," #_exportedsym "@libmysqlclient_16")
|
||||
+
|
||||
+void STDCALL symver16_myodbc_remove_escape(MYSQL *mysql,char *name)
|
||||
+{
|
||||
+ return myodbc_remove_escape(mysql, name);
|
||||
+}
|
||||
+SYM_16(myodbc_remove_escape);
|
||||
+
|
||||
+
|
||||
+my_ulonglong STDCALL symver16_mysql_affected_rows(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_affected_rows(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_affected_rows);
|
||||
+
|
||||
+
|
||||
+my_bool STDCALL symver16_mysql_autocommit(MYSQL * mysql, my_bool auto_mode)
|
||||
+{
|
||||
+ return mysql_autocommit(mysql, auto_mode);
|
||||
+}
|
||||
+SYM_16(mysql_autocommit);
|
||||
+
|
||||
+
|
||||
+my_bool STDCALL symver16_mysql_change_user(MYSQL *mysql, const char *user, const char *passwd, const char *db)
|
||||
+{
|
||||
+ return mysql_change_user(mysql, user, passwd, db);
|
||||
+}
|
||||
+SYM_16(mysql_change_user);
|
||||
+
|
||||
+
|
||||
+const char * STDCALL symver16_mysql_character_set_name(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_character_set_name(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_character_set_name);
|
||||
+
|
||||
+
|
||||
+my_bool STDCALL symver16_mysql_commit(MYSQL * mysql)
|
||||
+{
|
||||
+ return mysql_commit(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_commit);
|
||||
+
|
||||
+
|
||||
+void STDCALL symver16_mysql_data_seek(MYSQL_RES *result, my_ulonglong row)
|
||||
+{
|
||||
+ return mysql_data_seek(result, row);
|
||||
+}
|
||||
+SYM_16(mysql_data_seek);
|
||||
+
|
||||
+
|
||||
+void STDCALL symver16_mysql_debug(const char *debug __attribute__((unused)))
|
||||
+{
|
||||
+ return mysql_debug(debug);
|
||||
+}
|
||||
+SYM_16(mysql_debug);
|
||||
+
|
||||
+
|
||||
+int STDCALL symver16_mysql_dump_debug_info(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_dump_debug_info(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_dump_debug_info);
|
||||
+
|
||||
+
|
||||
+my_bool STDCALL symver16_mysql_embedded(void)
|
||||
+{
|
||||
+ return mysql_embedded();
|
||||
+}
|
||||
+SYM_16(mysql_embedded);
|
||||
+
|
||||
+
|
||||
+my_bool STDCALL symver16_mysql_eof(MYSQL_RES *res)
|
||||
+{
|
||||
+ return mysql_eof(res);
|
||||
+}
|
||||
+SYM_16(mysql_eof);
|
||||
+
|
||||
+
|
||||
+ulong STDCALL symver16_mysql_escape_string(char *to,const char *from,ulong length)
|
||||
+{
|
||||
+ return mysql_escape_string(to, from, length);
|
||||
+}
|
||||
+SYM_16(mysql_escape_string);
|
||||
+
|
||||
+
|
||||
+MYSQL_FIELD * STDCALL symver16_mysql_fetch_field(MYSQL_RES *result)
|
||||
+{
|
||||
+ return mysql_fetch_field(result);
|
||||
+}
|
||||
+SYM_16(mysql_fetch_field);
|
||||
+
|
||||
+
|
||||
+MYSQL_FIELD * STDCALL symver16_mysql_fetch_field_direct(MYSQL_RES *res,uint fieldnr)
|
||||
+{
|
||||
+ return mysql_fetch_field_direct(res, fieldnr);
|
||||
+}
|
||||
+SYM_16(mysql_fetch_field_direct);
|
||||
+
|
||||
+
|
||||
+MYSQL_FIELD * STDCALL symver16_mysql_fetch_fields(MYSQL_RES *res)
|
||||
+{
|
||||
+ return mysql_fetch_fields(res);
|
||||
+}
|
||||
+SYM_16(mysql_fetch_fields);
|
||||
+
|
||||
+
|
||||
+unsigned int STDCALL symver16_mysql_field_count(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_field_count(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_field_count);
|
||||
+
|
||||
+
|
||||
+MYSQL_FIELD_OFFSET STDCALL symver16_mysql_field_seek(MYSQL_RES *result, MYSQL_FIELD_OFFSET field_offset)
|
||||
+{
|
||||
+ return mysql_field_seek(result, field_offset);
|
||||
+}
|
||||
+SYM_16(mysql_field_seek);
|
||||
+
|
||||
+
|
||||
+MYSQL_FIELD_OFFSET STDCALL symver16_mysql_field_tell(MYSQL_RES *res)
|
||||
+{
|
||||
+ return mysql_field_tell(res);
|
||||
+}
|
||||
+SYM_16(mysql_field_tell);
|
||||
+
|
||||
+
|
||||
+void STDCALL symver16_mysql_get_character_set_info(MYSQL *mysql, MY_CHARSET_INFO *csinfo)
|
||||
+{
|
||||
+ return mysql_get_character_set_info(mysql, csinfo);
|
||||
+}
|
||||
+SYM_16(mysql_get_character_set_info);
|
||||
+
|
||||
+
|
||||
+const char * STDCALL symver16_mysql_get_client_info(void)
|
||||
+{
|
||||
+ return mysql_get_client_info();
|
||||
+}
|
||||
+SYM_16(mysql_get_client_info);
|
||||
+
|
||||
+ulong STDCALL symver16_mysql_get_client_version(void)
|
||||
+{
|
||||
+ return mysql_get_client_version();
|
||||
+}
|
||||
+SYM_16(mysql_get_client_version);
|
||||
+
|
||||
+
|
||||
+const char * STDCALL symver16_mysql_get_host_info(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_get_host_info(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_get_host_info);
|
||||
+
|
||||
+
|
||||
+MYSQL_PARAMETERS *STDCALL symver16_mysql_get_parameters(void)
|
||||
+{
|
||||
+ return mysql_get_parameters();
|
||||
+}
|
||||
+SYM_16(mysql_get_parameters);
|
||||
+
|
||||
+
|
||||
+uint STDCALL symver16_mysql_get_proto_info(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_get_proto_info(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_get_proto_info);
|
||||
+
|
||||
+
|
||||
+const char * STDCALL symver16_mysql_get_server_info(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_get_server_info(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_get_server_info);
|
||||
+
|
||||
+
|
||||
+ulong STDCALL symver16_mysql_hex_string(char *to, const char *from, ulong length)
|
||||
+{
|
||||
+ return mysql_hex_string(to, from, length);
|
||||
+}
|
||||
+SYM_16(mysql_hex_string);
|
||||
+
|
||||
+
|
||||
+const char *STDCALL symver16_mysql_info(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_info(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_info);
|
||||
+
|
||||
+
|
||||
+my_ulonglong STDCALL symver16_mysql_insert_id(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_insert_id(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_insert_id);
|
||||
+
|
||||
+
|
||||
+int STDCALL symver16_mysql_kill(MYSQL *mysql,ulong pid)
|
||||
+{
|
||||
+ return mysql_kill(mysql, pid);
|
||||
+}
|
||||
+SYM_16(mysql_kill);
|
||||
+
|
||||
+
|
||||
+MYSQL_RES * STDCALL symver16_mysql_list_dbs(MYSQL *mysql, const char *wild)
|
||||
+{
|
||||
+ return mysql_list_dbs(mysql, wild);
|
||||
+}
|
||||
+SYM_16(mysql_list_dbs);
|
||||
+
|
||||
+
|
||||
+MYSQL_RES * STDCALL symver16_mysql_list_fields(MYSQL *mysql, const char *table, const char *wild)
|
||||
+{
|
||||
+ return mysql_list_fields(mysql, table, wild);
|
||||
+}
|
||||
+SYM_16(mysql_list_fields);
|
||||
+
|
||||
+
|
||||
+MYSQL_RES * STDCALL symver16_mysql_list_processes(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_list_processes(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_list_processes);
|
||||
+
|
||||
+
|
||||
+MYSQL_RES * STDCALL symver16_mysql_list_tables(MYSQL *mysql, const char *wild)
|
||||
+{
|
||||
+ return mysql_list_tables(mysql, wild);
|
||||
+}
|
||||
+SYM_16(mysql_list_tables);
|
||||
+
|
||||
+
|
||||
+my_bool STDCALL symver16_mysql_more_results(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_more_results(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_more_results);
|
||||
+
|
||||
+
|
||||
+int STDCALL symver16_mysql_next_result(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_next_result(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_next_result);
|
||||
+
|
||||
+
|
||||
+int STDCALL symver16_mysql_ping(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_ping(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_ping);
|
||||
+
|
||||
+
|
||||
+int STDCALL symver16_mysql_query(MYSQL *mysql, const char *query)
|
||||
+{
|
||||
+ return mysql_query(mysql, query);
|
||||
+}
|
||||
+SYM_16(mysql_query);
|
||||
+
|
||||
+
|
||||
+my_bool STDCALL symver16_mysql_read_query_result(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_read_query_result(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_read_query_result);
|
||||
+
|
||||
+
|
||||
+ulong STDCALL symver16_mysql_real_escape_string(MYSQL *mysql, char *to,const char *from, ulong length)
|
||||
+{
|
||||
+ return mysql_real_escape_string(mysql, to, from, length);
|
||||
+}
|
||||
+SYM_16(mysql_real_escape_string);
|
||||
+
|
||||
+
|
||||
+int STDCALL symver16_mysql_refresh(MYSQL *mysql,uint options)
|
||||
+{
|
||||
+ return mysql_refresh(mysql, options);
|
||||
+}
|
||||
+SYM_16(mysql_refresh);
|
||||
+
|
||||
+
|
||||
+my_bool STDCALL symver16_mysql_rollback(MYSQL * mysql)
|
||||
+{
|
||||
+ return mysql_rollback(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_rollback);
|
||||
+
|
||||
+
|
||||
+MYSQL_ROW_OFFSET STDCALL symver16_mysql_row_seek(MYSQL_RES *result, MYSQL_ROW_OFFSET row)
|
||||
+{
|
||||
+ return mysql_row_seek(result, row);
|
||||
+}
|
||||
+SYM_16(mysql_row_seek);
|
||||
+
|
||||
+
|
||||
+MYSQL_ROW_OFFSET STDCALL symver16_mysql_row_tell(MYSQL_RES *res)
|
||||
+{
|
||||
+ return mysql_row_tell(res);
|
||||
+}
|
||||
+SYM_16(mysql_row_tell);
|
||||
+
|
||||
+
|
||||
+void STDCALL symver16_mysql_server_end()
|
||||
+{
|
||||
+ return mysql_server_end();
|
||||
+}
|
||||
+SYM_16(mysql_server_end);
|
||||
+
|
||||
+
|
||||
+int STDCALL symver16_mysql_server_init(int argc __attribute__((unused)), char **argv __attribute__((unused)), char **groups __attribute__((unused)))
|
||||
+{
|
||||
+ return mysql_server_init(argc, argv, groups);
|
||||
+}
|
||||
+SYM_16(mysql_server_init);
|
||||
+
|
||||
+
|
||||
+void symver16_mysql_set_local_infile_default(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_set_local_infile_default(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_set_local_infile_default);
|
||||
+
|
||||
+
|
||||
+void symver16_mysql_set_local_infile_handler(MYSQL *mysql, int (*local_infile_init)(void **, const char *, void *), int (*local_infile_read)(void *, char *, uint), void (*local_infile_end)(void *), int (*local_infile_error)(void *, char *, uint), void *userdata)
|
||||
+{
|
||||
+ return mysql_set_local_infile_handler(mysql, local_infile_init, local_infile_read, local_infile_end, local_infile_error, userdata);
|
||||
+}
|
||||
+SYM_16(mysql_set_local_infile_handler);
|
||||
+
|
||||
+
|
||||
+int STDCALL symver16_mysql_set_server_option(MYSQL *mysql, enum enum_mysql_set_option option)
|
||||
+{
|
||||
+ return mysql_set_server_option(mysql, option);
|
||||
+}
|
||||
+SYM_16(mysql_set_server_option);
|
||||
+
|
||||
+
|
||||
+int STDCALL symver16_mysql_shutdown(MYSQL *mysql, enum mysql_enum_shutdown_level shutdown_level)
|
||||
+{
|
||||
+ return mysql_shutdown(mysql, shutdown_level);
|
||||
+}
|
||||
+SYM_16(mysql_shutdown);
|
||||
+
|
||||
+
|
||||
+const char *STDCALL symver16_mysql_sqlstate(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_sqlstate(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_sqlstate);
|
||||
+
|
||||
+
|
||||
+const char * STDCALL symver16_mysql_stat(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_stat(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_stat);
|
||||
+
|
||||
+
|
||||
+my_ulonglong STDCALL symver16_mysql_stmt_affected_rows(MYSQL_STMT *stmt)
|
||||
+{
|
||||
+ return mysql_stmt_affected_rows(stmt);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_affected_rows);
|
||||
+
|
||||
+
|
||||
+my_bool STDCALL symver16_mysql_stmt_attr_get(MYSQL_STMT *stmt, enum enum_stmt_attr_type attr_type, void *value)
|
||||
+{
|
||||
+ return mysql_stmt_attr_get(stmt, attr_type, value);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_attr_get);
|
||||
+
|
||||
+
|
||||
+my_bool STDCALL symver16_mysql_stmt_attr_set(MYSQL_STMT *stmt, enum enum_stmt_attr_type attr_type, const void *value)
|
||||
+{
|
||||
+ return mysql_stmt_attr_set(stmt, attr_type, value);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_attr_set);
|
||||
+
|
||||
+
|
||||
+my_bool STDCALL symver16_mysql_stmt_bind_param(MYSQL_STMT *stmt, MYSQL_BIND *my_bind)
|
||||
+{
|
||||
+ return mysql_stmt_bind_param(stmt, my_bind);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_bind_param);
|
||||
+
|
||||
+
|
||||
+my_bool STDCALL symver16_mysql_stmt_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *my_bind)
|
||||
+{
|
||||
+ return mysql_stmt_bind_result(stmt, my_bind);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_bind_result);
|
||||
+
|
||||
+
|
||||
+my_bool STDCALL symver16_mysql_stmt_close(MYSQL_STMT *stmt)
|
||||
+{
|
||||
+ return mysql_stmt_close(stmt);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_close);
|
||||
+
|
||||
+
|
||||
+void STDCALL symver16_mysql_stmt_data_seek(MYSQL_STMT *stmt, my_ulonglong row)
|
||||
+{
|
||||
+ return mysql_stmt_data_seek(stmt, row);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_data_seek);
|
||||
+
|
||||
+
|
||||
+uint STDCALL symver16_mysql_stmt_errno(MYSQL_STMT * stmt)
|
||||
+{
|
||||
+ return mysql_stmt_errno(stmt);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_errno);
|
||||
+
|
||||
+
|
||||
+const char *STDCALL symver16_mysql_stmt_error(MYSQL_STMT * stmt)
|
||||
+{
|
||||
+ return mysql_stmt_error(stmt);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_error);
|
||||
+
|
||||
+
|
||||
+int STDCALL symver16_mysql_stmt_execute(MYSQL_STMT *stmt)
|
||||
+{
|
||||
+ return mysql_stmt_execute(stmt);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_execute);
|
||||
+
|
||||
+
|
||||
+int STDCALL symver16_mysql_stmt_fetch(MYSQL_STMT *stmt)
|
||||
+{
|
||||
+ return mysql_stmt_fetch(stmt);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_fetch);
|
||||
+
|
||||
+
|
||||
+int STDCALL symver16_mysql_stmt_fetch_column(MYSQL_STMT *stmt, MYSQL_BIND *my_bind, uint column, ulong offset)
|
||||
+{
|
||||
+ return mysql_stmt_fetch_column(stmt, my_bind, column, offset);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_fetch_column);
|
||||
+
|
||||
+
|
||||
+unsigned int STDCALL symver16_mysql_stmt_field_count(MYSQL_STMT *stmt)
|
||||
+{
|
||||
+ return mysql_stmt_field_count(stmt);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_field_count);
|
||||
+
|
||||
+
|
||||
+my_bool STDCALL symver16_mysql_stmt_free_result(MYSQL_STMT *stmt)
|
||||
+{
|
||||
+ return mysql_stmt_free_result(stmt);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_free_result);
|
||||
+
|
||||
+
|
||||
+MYSQL_STMT * STDCALL symver16_mysql_stmt_init(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_stmt_init(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_init);
|
||||
+
|
||||
+
|
||||
+my_ulonglong STDCALL symver16_mysql_stmt_insert_id(MYSQL_STMT *stmt)
|
||||
+{
|
||||
+ return mysql_stmt_insert_id(stmt);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_insert_id);
|
||||
+
|
||||
+
|
||||
+my_ulonglong STDCALL symver16_mysql_stmt_num_rows(MYSQL_STMT *stmt)
|
||||
+{
|
||||
+ return mysql_stmt_num_rows(stmt);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_num_rows);
|
||||
+
|
||||
+
|
||||
+ulong STDCALL symver16_mysql_stmt_param_count(MYSQL_STMT * stmt)
|
||||
+{
|
||||
+ return mysql_stmt_param_count(stmt);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_param_count);
|
||||
+
|
||||
+
|
||||
+MYSQL_RES * STDCALL symver16_mysql_stmt_param_metadata(MYSQL_STMT *stmt)
|
||||
+{
|
||||
+ return mysql_stmt_param_metadata(stmt);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_param_metadata);
|
||||
+
|
||||
+
|
||||
+int STDCALL symver16_mysql_stmt_prepare(MYSQL_STMT *stmt, const char *query, ulong length)
|
||||
+{
|
||||
+ return mysql_stmt_prepare(stmt, query, length);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_prepare);
|
||||
+
|
||||
+
|
||||
+my_bool STDCALL symver16_mysql_stmt_reset(MYSQL_STMT *stmt)
|
||||
+{
|
||||
+ return mysql_stmt_reset(stmt);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_reset);
|
||||
+
|
||||
+
|
||||
+MYSQL_RES * STDCALL symver16_mysql_stmt_result_metadata(MYSQL_STMT *stmt)
|
||||
+{
|
||||
+ return mysql_stmt_result_metadata(stmt);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_result_metadata);
|
||||
+
|
||||
+
|
||||
+MYSQL_ROW_OFFSET STDCALL symver16_mysql_stmt_row_seek(MYSQL_STMT *stmt, MYSQL_ROW_OFFSET row)
|
||||
+{
|
||||
+ return mysql_stmt_row_seek(stmt, row);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_row_seek);
|
||||
+
|
||||
+
|
||||
+MYSQL_ROW_OFFSET STDCALL symver16_mysql_stmt_row_tell(MYSQL_STMT *stmt)
|
||||
+{
|
||||
+ return mysql_stmt_row_tell(stmt);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_row_tell);
|
||||
+
|
||||
+
|
||||
+my_bool STDCALL symver16_mysql_stmt_send_long_data(MYSQL_STMT *stmt, uint param_number, const char *data, ulong length)
|
||||
+{
|
||||
+ return mysql_stmt_send_long_data(stmt, param_number, data, length);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_send_long_data);
|
||||
+
|
||||
+
|
||||
+const char *STDCALL symver16_mysql_stmt_sqlstate(MYSQL_STMT * stmt)
|
||||
+{
|
||||
+ return mysql_stmt_sqlstate(stmt);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_sqlstate);
|
||||
+
|
||||
+
|
||||
+int STDCALL symver16_mysql_stmt_store_result(MYSQL_STMT *stmt)
|
||||
+{
|
||||
+ return mysql_stmt_store_result(stmt);
|
||||
+}
|
||||
+SYM_16(mysql_stmt_store_result);
|
||||
+
|
||||
+
|
||||
+void STDCALL symver16_mysql_thread_end()
|
||||
+{
|
||||
+ return mysql_thread_end();
|
||||
+}
|
||||
+SYM_16(mysql_thread_end);
|
||||
+
|
||||
+
|
||||
+ulong STDCALL symver16_mysql_thread_id(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_thread_id(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_thread_id);
|
||||
+
|
||||
+
|
||||
+my_bool STDCALL symver16_mysql_thread_init()
|
||||
+{
|
||||
+ return mysql_thread_init();
|
||||
+}
|
||||
+SYM_16(mysql_thread_init);
|
||||
+
|
||||
+
|
||||
+uint STDCALL symver16_mysql_thread_safe(void)
|
||||
+{
|
||||
+ return mysql_thread_safe();
|
||||
+}
|
||||
+SYM_16(mysql_thread_safe);
|
||||
+
|
||||
+
|
||||
+MYSQL_RES * STDCALL symver16_mysql_use_result(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_use_result(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_use_result);
|
||||
+
|
||||
+
|
||||
+uint STDCALL symver16_mysql_warning_count(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_warning_count(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_warning_count);
|
||||
+
|
||||
+/*****/
|
||||
+
|
||||
+MYSQL * STDCALL symver16_mysql_real_connect(MYSQL *mysql,const char *host, const char *user, const char *passwd, const char *db, uint port, const char *unix_socket,ulong client_flag)
|
||||
+{
|
||||
+ return mysql_real_connect(mysql, host, user, passwd, db, port, unix_socket, client_flag);
|
||||
+}
|
||||
+SYM_16(mysql_real_connect);
|
||||
+
|
||||
+/*****/
|
||||
+
|
||||
+my_bool symver16_my_init(void)
|
||||
+{
|
||||
+ return my_init();
|
||||
+}
|
||||
+SYM_16(my_init);
|
||||
+
|
||||
+#endif
|
||||
diff -rup old/libmysql/libmysql.ver.in new/libmysql/libmysql.ver.in
|
||||
--- old/libmysql/libmysql.ver.in 2013-11-05 08:19:26.000000000 +0100
|
||||
+++ new/libmysql/libmysql.ver.in 2014-01-10 15:41:30.545182782 +0100
|
||||
@@ -1 +1,136 @@
|
||||
-libmysqlclient_@SHARED_LIB_MAJOR_VERSION@ { global: *; };
|
||||
+libmysqlclient_16
|
||||
+{
|
||||
+ local:
|
||||
+ symver16_*;
|
||||
+};
|
||||
+
|
||||
+libmysqlclient_18
|
||||
+{
|
||||
+ global:
|
||||
+ my_init;
|
||||
+ myodbc_remove_escape;
|
||||
+ mysql_affected_rows;
|
||||
+ mysql_autocommit;
|
||||
+ mysql_change_user;
|
||||
+ mysql_character_set_name;
|
||||
+ mysql_close;
|
||||
+ mysql_commit;
|
||||
+ mysql_data_seek;
|
||||
+ mysql_debug;
|
||||
+ mysql_dump_debug_info;
|
||||
+ mysql_embedded;
|
||||
+ mysql_eof;
|
||||
+ mysql_errno;
|
||||
+ mysql_error;
|
||||
+ mysql_escape_string;
|
||||
+ mysql_fetch_field;
|
||||
+ mysql_fetch_field_direct;
|
||||
+ mysql_fetch_fields;
|
||||
+ mysql_fetch_lengths;
|
||||
+ mysql_fetch_row;
|
||||
+ mysql_field_count;
|
||||
+ mysql_field_seek;
|
||||
+ mysql_field_tell;
|
||||
+ mysql_free_result;
|
||||
+ mysql_get_character_set_info;
|
||||
+ mysql_get_client_info;
|
||||
+ mysql_get_client_version;
|
||||
+ mysql_get_host_info;
|
||||
+ mysql_get_parameters;
|
||||
+ mysql_get_proto_info;
|
||||
+ mysql_get_server_info;
|
||||
+ mysql_get_server_version;
|
||||
+ mysql_get_ssl_cipher;
|
||||
+ mysql_hex_string;
|
||||
+ mysql_info;
|
||||
+ mysql_init;
|
||||
+ mysql_insert_id;
|
||||
+ mysql_kill;
|
||||
+ mysql_list_dbs;
|
||||
+ mysql_list_fields;
|
||||
+ mysql_list_processes;
|
||||
+ mysql_list_tables;
|
||||
+ mysql_more_results;
|
||||
+ mysql_next_result;
|
||||
+ mysql_num_fields;
|
||||
+ mysql_num_rows;
|
||||
+ mysql_options;
|
||||
+ mysql_ping;
|
||||
+ mysql_query;
|
||||
+ mysql_read_query_result;
|
||||
+ mysql_real_connect;
|
||||
+ mysql_real_escape_string;
|
||||
+ mysql_real_query;
|
||||
+ mysql_refresh;
|
||||
+ mysql_rollback;
|
||||
+ mysql_row_seek;
|
||||
+ mysql_row_tell;
|
||||
+ mysql_select_db;
|
||||
+ mysql_send_query;
|
||||
+ mysql_server_end;
|
||||
+ mysql_server_init;
|
||||
+ mysql_set_character_set;
|
||||
+ mysql_set_local_infile_default;
|
||||
+ mysql_set_local_infile_handler;
|
||||
+ mysql_set_server_option;
|
||||
+ mysql_shutdown;
|
||||
+ mysql_sqlstate;
|
||||
+ mysql_ssl_set;
|
||||
+ mysql_stat;
|
||||
+ mysql_stmt_affected_rows;
|
||||
+ mysql_stmt_attr_get;
|
||||
+ mysql_stmt_attr_set;
|
||||
+ mysql_stmt_bind_param;
|
||||
+ mysql_stmt_bind_result;
|
||||
+ mysql_stmt_close;
|
||||
+ mysql_stmt_data_seek;
|
||||
+ mysql_stmt_errno;
|
||||
+ mysql_stmt_error;
|
||||
+ mysql_stmt_execute;
|
||||
+ mysql_stmt_fetch;
|
||||
+ mysql_stmt_fetch_column;
|
||||
+ mysql_stmt_field_count;
|
||||
+ mysql_stmt_free_result;
|
||||
+ mysql_stmt_init;
|
||||
+ mysql_stmt_insert_id;
|
||||
+ mysql_stmt_num_rows;
|
||||
+ mysql_stmt_param_count;
|
||||
+ mysql_stmt_param_metadata;
|
||||
+ mysql_stmt_prepare;
|
||||
+ mysql_stmt_reset;
|
||||
+ mysql_stmt_result_metadata;
|
||||
+ mysql_stmt_row_seek;
|
||||
+ mysql_stmt_row_tell;
|
||||
+ mysql_stmt_send_long_data;
|
||||
+ mysql_stmt_sqlstate;
|
||||
+ mysql_stmt_store_result;
|
||||
+ mysql_store_result;
|
||||
+ mysql_thread_end;
|
||||
+ mysql_thread_id;
|
||||
+ mysql_thread_init;
|
||||
+ mysql_thread_safe;
|
||||
+ mysql_use_result;
|
||||
+ mysql_warning_count;
|
||||
+
|
||||
+ free_defaults;
|
||||
+ handle_options;
|
||||
+ load_defaults;
|
||||
+ my_print_help;
|
||||
+
|
||||
+ #my_make_scrambled_password;
|
||||
+ THR_KEY_mysys;
|
||||
+
|
||||
+ mysql_client_find_plugin;
|
||||
+ mysql_client_register_plugin;
|
||||
+ mysql_load_plugin;
|
||||
+ mysql_load_plugin_v;
|
||||
+ mysql_plugin_options;
|
||||
+ mysql_stmt_next_result;
|
||||
+
|
||||
+ #mysql_default_charset_info;
|
||||
+ mysql_get_charset;
|
||||
+ mysql_get_charset_by_csname;
|
||||
+ mysql_net_realloc;
|
||||
+ #mysql_client_errors;
|
||||
+ *;
|
||||
+} libmysqlclient_16;
|
||||
diff -rup old/mysys/charset.c new/mysys/charset.c
|
||||
--- old/mysys/charset.c 2013-11-05 08:19:26.000000000 +0100
|
||||
+++ new/mysys/charset.c 2014-01-10 15:41:30.552919678 +0100
|
||||
@@ -941,3 +941,20 @@ size_t escape_quotes_for_mysql(CHARSET_I
|
||||
*to= 0;
|
||||
return overflow ? (ulong)~0 : (ulong) (to - to_start);
|
||||
}
|
||||
+
|
||||
+#ifndef EMBEDDED_LIBRARY
|
||||
+
|
||||
+// Hack to provide Fedora symbols
|
||||
+
|
||||
+CHARSET_INFO *mysql_get_charset(uint cs_number, myf flags)
|
||||
+{
|
||||
+ return get_charset(cs_number, flags);
|
||||
+}
|
||||
+
|
||||
+
|
||||
+CHARSET_INFO * mysql_get_charset_by_csname(const char *cs_name, uint cs_flags, myf flags)
|
||||
+{
|
||||
+ return get_charset_by_csname(cs_name, cs_flags, flags);
|
||||
+}
|
||||
+
|
||||
+#endif
|
||||
diff -rup old/sql/net_serv.cc new/sql/net_serv.cc
|
||||
--- old/sql/net_serv.cc 2013-11-05 08:19:26.000000000 +0100
|
||||
+++ new/sql/net_serv.cc 2014-01-10 15:41:30.563377346 +0100
|
||||
@@ -1190,3 +1190,17 @@ void my_net_set_write_timeout(NET *net,
|
||||
#endif
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
+
|
||||
+#ifndef EMBEDDED_LIBRARY
|
||||
+C_MODE_START
|
||||
+
|
||||
+// Hack to provide Fedora symbols
|
||||
+
|
||||
+my_bool mysql_net_realloc(NET *net, size_t length)
|
||||
+{
|
||||
+ return net_realloc(net, length);
|
||||
+}
|
||||
+
|
||||
+C_MODE_END
|
||||
+#endif
|
||||
+
|
||||
diff -rup old/sql/password.c new/sql/password.c
|
||||
--- old/sql/password.c 2013-11-05 08:19:26.000000000 +0100
|
||||
+++ new/sql/password.c 2014-01-10 15:41:30.567134663 +0100
|
||||
@@ -563,3 +563,17 @@ void make_password_from_salt(char *to, c
|
||||
*to++= PVERSION41_CHAR;
|
||||
octet2hex(to, (const char*) hash_stage2, SHA1_HASH_SIZE);
|
||||
}
|
||||
+
|
||||
+#ifndef EMBEDDED_LIBRARY
|
||||
+
|
||||
+// Hack to provide both libmysqlclient_16 and libmysqlclient_18 symbol versions
|
||||
+
|
||||
+#define SYM_16(_exportedsym) __asm__(".symver symver16_" #_exportedsym "," #_exportedsym "@libmysqlclient_16")
|
||||
+
|
||||
+void symver16_my_make_scrambled_password(char *to, const char *password, size_t pass_len)
|
||||
+{
|
||||
+ my_make_scrambled_password(to, password, pass_len);
|
||||
+}
|
||||
+SYM_16(my_make_scrambled_password);
|
||||
+
|
||||
+#endif
|
||||
diff -rup old/sql-common/client.c new/sql-common/client.c
|
||||
--- old/sql-common/client.c 2013-11-05 08:19:26.000000000 +0100
|
||||
+++ new/sql-common/client.c 2014-01-10 15:41:30.574151024 +0100
|
||||
@@ -4399,3 +4399,136 @@ static int clear_password_auth_client(MY
|
||||
|
||||
return res ? CR_ERROR : CR_OK;
|
||||
}
|
||||
+
|
||||
+#ifndef EMBEDDED_LIBRARY
|
||||
+
|
||||
+// Hack to provide both libmysqlclient_16 and libmysqlclient_18 symbol versions
|
||||
+
|
||||
+#define SYM_16(_exportedsym) __asm__(".symver symver16_" #_exportedsym "," #_exportedsym "@libmysqlclient_16")
|
||||
+
|
||||
+void STDCALL symver16_mysql_close(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_close(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_close);
|
||||
+
|
||||
+
|
||||
+uint STDCALL symver16_mysql_errno(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_errno(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_errno);
|
||||
+
|
||||
+
|
||||
+const char * STDCALL symver16_mysql_error(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_error(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_error);
|
||||
+
|
||||
+
|
||||
+ulong * STDCALL symver16_mysql_fetch_lengths(MYSQL_RES *res)
|
||||
+{
|
||||
+ return mysql_fetch_lengths(res);
|
||||
+}
|
||||
+SYM_16(mysql_fetch_lengths);
|
||||
+
|
||||
+
|
||||
+MYSQL_ROW STDCALL symver16_mysql_fetch_row(MYSQL_RES *res)
|
||||
+{
|
||||
+ return mysql_fetch_row(res);
|
||||
+}
|
||||
+SYM_16(mysql_fetch_row);
|
||||
+
|
||||
+
|
||||
+void STDCALL symver16_mysql_free_result(MYSQL_RES *result)
|
||||
+{
|
||||
+ return mysql_free_result(result);
|
||||
+}
|
||||
+SYM_16(mysql_free_result);
|
||||
+
|
||||
+
|
||||
+ulong STDCALL symver16_mysql_get_server_version(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_get_server_version(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_get_server_version);
|
||||
+
|
||||
+
|
||||
+const char * STDCALL symver16_mysql_get_ssl_cipher(MYSQL *mysql __attribute__((unused)))
|
||||
+{
|
||||
+ return mysql_get_ssl_cipher(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_get_ssl_cipher);
|
||||
+
|
||||
+
|
||||
+MYSQL * STDCALL symver16_mysql_init(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_init(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_init);
|
||||
+
|
||||
+
|
||||
+unsigned int STDCALL symver16_mysql_num_fields(MYSQL_RES *res)
|
||||
+{
|
||||
+ return mysql_num_fields(res);
|
||||
+}
|
||||
+SYM_16(mysql_num_fields);
|
||||
+
|
||||
+
|
||||
+my_ulonglong STDCALL symver16_mysql_num_rows(MYSQL_RES *res)
|
||||
+{
|
||||
+ return mysql_num_rows(res);
|
||||
+}
|
||||
+SYM_16(mysql_num_rows);
|
||||
+
|
||||
+
|
||||
+int STDCALL symver16_mysql_options(MYSQL *mysql,enum mysql_option option, const void *arg)
|
||||
+{
|
||||
+ return mysql_options(mysql, option, arg);
|
||||
+}
|
||||
+SYM_16(mysql_options);
|
||||
+
|
||||
+
|
||||
+int STDCALL symver16_mysql_real_query(MYSQL *mysql, const char *query, ulong length)
|
||||
+{
|
||||
+ return mysql_real_query(mysql, query, length);
|
||||
+}
|
||||
+SYM_16(mysql_real_query);
|
||||
+
|
||||
+
|
||||
+int STDCALL symver16_mysql_select_db(MYSQL *mysql, const char *db)
|
||||
+{
|
||||
+ return mysql_select_db(mysql, db);
|
||||
+}
|
||||
+SYM_16(mysql_select_db);
|
||||
+
|
||||
+
|
||||
+int STDCALL symver16_mysql_send_query(MYSQL* mysql, const char* query, ulong length)
|
||||
+{
|
||||
+ return mysql_send_query(mysql, query, length);
|
||||
+}
|
||||
+SYM_16(mysql_send_query);
|
||||
+
|
||||
+
|
||||
+int STDCALL symver16_mysql_set_character_set(MYSQL *mysql, const char *cs_name)
|
||||
+{
|
||||
+ return mysql_set_character_set(mysql, cs_name);
|
||||
+}
|
||||
+SYM_16(mysql_set_character_set);
|
||||
+
|
||||
+
|
||||
+my_bool STDCALL symver16_mysql_ssl_set(MYSQL *mysql __attribute__((unused)), const char *key __attribute__((unused)), const char *cert __attribute__((unused)), const char *ca __attribute__((unused)), const char *capath __attribute__((unused)), const char *cipher __attribute__((unused)))
|
||||
+{
|
||||
+ return mysql_ssl_set(mysql, key, cert, ca, capath, cipher);
|
||||
+}
|
||||
+SYM_16(mysql_ssl_set);
|
||||
+
|
||||
+
|
||||
+MYSQL_RES * STDCALL symver16_mysql_store_result(MYSQL *mysql)
|
||||
+{
|
||||
+ return mysql_store_result(mysql);
|
||||
+}
|
||||
+SYM_16(mysql_store_result);
|
||||
+
|
||||
+#endif
|
|
@ -1,68 +0,0 @@
|
|||
#! /bin/bash
|
||||
#
|
||||
# Scripts to run by MySQL systemd service
|
||||
#
|
||||
# Needed argument: pre | post
|
||||
#
|
||||
# pre mode : try to run mysql_install_db and fix perms and SELinux contexts
|
||||
# post mode : ping server until answer is received
|
||||
#
|
||||
|
||||
get_option () {
|
||||
local section=$1
|
||||
local option=$2
|
||||
local default=$3
|
||||
ret=$(/usr/bin/my_print_defaults $section | grep '^--'${option}'=' | cut -d= -f2-)
|
||||
[ -z $ret ] && ret=$default
|
||||
echo $ret
|
||||
}
|
||||
|
||||
install_db () {
|
||||
# Note: something different than datadir=/var/lib/mysql requires SELinux policy changes (in enforcing mode)
|
||||
datadir=$(get_option mysqld datadir "/var/lib/mysql")
|
||||
|
||||
# Restore log, dir, perms and SELinux contexts
|
||||
[ -d "$datadir" ] || install -d -m 0755 -omysql -gmysql "$datadir" || exit 1
|
||||
log=/var/log/mysqld.log
|
||||
[ -e $log ] || touch $log
|
||||
chmod 0640 $log
|
||||
chown mysql:mysql $log || exit 1
|
||||
if [ -x /usr/sbin/restorecon ]; then
|
||||
/usr/sbin/restorecon "$datadir"
|
||||
/usr/sbin/restorecon $log
|
||||
fi
|
||||
|
||||
# If special mysql dir is in place, skip db install
|
||||
[ -d "$datadir/mysql" ] && exit 0
|
||||
|
||||
# Create initial db
|
||||
/usr/bin/mysql_install_db --rpm --datadir="$datadir" --user=mysql
|
||||
exit 0
|
||||
}
|
||||
|
||||
pinger () {
|
||||
# Wait for ping to answer to signal startup completed,
|
||||
# might take a while in case of e.g. crash recovery
|
||||
# MySQL systemd service will timeout script if no answer
|
||||
datadir=$(get_option mysqld datadir "/var/lib/mysql")
|
||||
socket=$(get_option mysqld socket "$datadir/mysql.sock")
|
||||
case $socket in
|
||||
/*) adminsocket="$socket" ;;
|
||||
*) adminsocket="$datadir/$socket" ;;
|
||||
esac
|
||||
|
||||
while /bin/true ; do
|
||||
sleep 1
|
||||
mysqladmin --no-defaults --socket="$adminsocket" --user=UNKNOWN_MYSQL_USER ping >/dev/null 2>&1 && break
|
||||
done
|
||||
exit 0
|
||||
}
|
||||
|
||||
# main
|
||||
case $1 in
|
||||
"pre") install_db ;;
|
||||
"post") pinger ;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
|
@ -1 +0,0 @@
|
|||
d /var/run/mysqld 0755 mysql mysql -
|
|
@ -1,213 +0,0 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# mysqld This shell script takes care of starting and stopping
|
||||
# the MySQL subsystem (mysqld).
|
||||
#
|
||||
# chkconfig: - 64 36
|
||||
# description: MySQL database server.
|
||||
# processname: mysqld
|
||||
# config: /etc/my.cnf
|
||||
# pidfile: /var/run/mysqld/mysqld.pid
|
||||
|
||||
# Source function library.
|
||||
. /etc/rc.d/init.d/functions
|
||||
|
||||
# Source networking configuration.
|
||||
. /etc/sysconfig/network
|
||||
|
||||
|
||||
exec="/usr/bin/mysqld_safe"
|
||||
prog="mysqld"
|
||||
|
||||
# Set timeouts here so they can be overridden from /etc/sysconfig/mysqld
|
||||
STARTTIMEOUT=120
|
||||
STOPTIMEOUT=60
|
||||
|
||||
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
|
||||
|
||||
lockfile=/var/lock/subsys/$prog
|
||||
|
||||
|
||||
# extract value of a MySQL option from config files
|
||||
# Usage: get_mysql_option SECTION VARNAME DEFAULT
|
||||
# result is returned in $result
|
||||
# We use my_print_defaults which prints all options from multiple files,
|
||||
# with the more specific ones later; hence take the last match.
|
||||
get_mysql_option(){
|
||||
result=`/usr/bin/my_print_defaults "$1" | sed -n "s/^--$2=//p" | tail -n 1`
|
||||
if [ -z "$result" ]; then
|
||||
# not found, use default
|
||||
result="$3"
|
||||
fi
|
||||
}
|
||||
|
||||
get_mysql_option mysqld datadir "/var/lib/mysql"
|
||||
datadir="$result"
|
||||
get_mysql_option mysqld socket "$datadir/mysql.sock"
|
||||
socketfile="$result"
|
||||
get_mysql_option mysqld_safe log-error "/var/log/mysqld.log"
|
||||
errlogfile="$result"
|
||||
get_mysql_option mysqld_safe pid-file "/var/run/mysqld/mysqld.pid"
|
||||
mypidfile="$result"
|
||||
|
||||
case $socketfile in
|
||||
/*) adminsocket="$socketfile" ;;
|
||||
*) adminsocket="$datadir/$socketfile" ;;
|
||||
esac
|
||||
|
||||
start(){
|
||||
[ -x $exec ] || exit 5
|
||||
# check to see if it's already running
|
||||
RESPONSE=$(/usr/bin/mysqladmin --no-defaults --socket="$adminsocket" --user=UNKNOWN_MYSQL_USER ping 2>&1)
|
||||
if [ $? = 0 ]; then
|
||||
# already running, do nothing
|
||||
action $"Starting $prog: " /bin/true
|
||||
ret=0
|
||||
elif echo "$RESPONSE" | grep -q "Access denied for user"
|
||||
then
|
||||
# already running, do nothing
|
||||
action $"Starting $prog: " /bin/true
|
||||
ret=0
|
||||
else
|
||||
# prepare for start
|
||||
touch "$errlogfile"
|
||||
chown mysql:mysql "$errlogfile"
|
||||
chmod 0640 "$errlogfile"
|
||||
[ -x /sbin/restorecon ] && /sbin/restorecon "$errlogfile"
|
||||
if [ ! -d "$datadir/mysql" ] ; then
|
||||
# First, make sure $datadir is there with correct permissions
|
||||
if [ ! -e "$datadir" -a ! -h "$datadir" ]
|
||||
then
|
||||
mkdir -p "$datadir" || exit 1
|
||||
fi
|
||||
chown mysql:mysql "$datadir"
|
||||
chmod 0755 "$datadir"
|
||||
[ -x /sbin/restorecon ] && /sbin/restorecon "$datadir"
|
||||
# Now create the database
|
||||
action $"Initializing MySQL database: " /usr/bin/mysql_install_db --rpm --datadir="$datadir" --user=mysql
|
||||
ret=$?
|
||||
chown -R mysql:mysql "$datadir"
|
||||
if [ $ret -ne 0 ] ; then
|
||||
return $ret
|
||||
fi
|
||||
fi
|
||||
chown mysql:mysql "$datadir"
|
||||
chmod 0755 "$datadir"
|
||||
# Pass all the options determined above, to ensure consistent behavior.
|
||||
# In many cases mysqld_safe would arrive at the same conclusions anyway
|
||||
# but we need to be sure. (An exception is that we don't force the
|
||||
# log-error setting, since this script doesn't really depend on that,
|
||||
# and some users might prefer to configure logging to syslog.)
|
||||
# Note: set --basedir to prevent probes that might trigger SELinux
|
||||
# alarms, per bug #547485
|
||||
$exec --datadir="$datadir" --socket="$socketfile" \
|
||||
--pid-file="$mypidfile" \
|
||||
--basedir=/usr --user=mysql >/dev/null 2>&1 &
|
||||
safe_pid=$!
|
||||
# Spin for a maximum of N seconds waiting for the server to come up;
|
||||
# exit the loop immediately if mysqld_safe process disappears.
|
||||
# Rather than assuming we know a valid username, accept an "access
|
||||
# denied" response as meaning the server is functioning.
|
||||
ret=0
|
||||
TIMEOUT="$STARTTIMEOUT"
|
||||
while [ $TIMEOUT -gt 0 ]; do
|
||||
RESPONSE=$(/usr/bin/mysqladmin --no-defaults --socket="$adminsocket" --user=UNKNOWN_MYSQL_USER ping 2>&1) && break
|
||||
echo "$RESPONSE" | grep -q "Access denied for user" && break
|
||||
if ! /bin/kill -0 $safe_pid 2>/dev/null; then
|
||||
echo "MySQL Daemon failed to start."
|
||||
ret=1
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
let TIMEOUT=${TIMEOUT}-1
|
||||
done
|
||||
if [ $TIMEOUT -eq 0 ]; then
|
||||
echo "Timeout error occurred trying to start MySQL Daemon."
|
||||
ret=1
|
||||
fi
|
||||
if [ $ret -eq 0 ]; then
|
||||
action $"Starting $prog: " /bin/true
|
||||
touch $lockfile
|
||||
else
|
||||
action $"Starting $prog: " /bin/false
|
||||
fi
|
||||
fi
|
||||
return $ret
|
||||
}
|
||||
|
||||
stop(){
|
||||
if [ ! -f "$mypidfile" ]; then
|
||||
# not running; per LSB standards this is "ok"
|
||||
action $"Stopping $prog: " /bin/true
|
||||
return 0
|
||||
fi
|
||||
MYSQLPID=`cat "$mypidfile"`
|
||||
if [ -n "$MYSQLPID" ]; then
|
||||
/bin/kill "$MYSQLPID" >/dev/null 2>&1
|
||||
ret=$?
|
||||
if [ $ret -eq 0 ]; then
|
||||
TIMEOUT="$STOPTIMEOUT"
|
||||
while [ $TIMEOUT -gt 0 ]; do
|
||||
/bin/kill -0 "$MYSQLPID" >/dev/null 2>&1 || break
|
||||
sleep 1
|
||||
let TIMEOUT=${TIMEOUT}-1
|
||||
done
|
||||
if [ $TIMEOUT -eq 0 ]; then
|
||||
echo "Timeout error occurred trying to stop MySQL Daemon."
|
||||
ret=1
|
||||
action $"Stopping $prog: " /bin/false
|
||||
else
|
||||
rm -f $lockfile
|
||||
rm -f "$socketfile"
|
||||
action $"Stopping $prog: " /bin/true
|
||||
fi
|
||||
else
|
||||
action $"Stopping $prog: " /bin/false
|
||||
fi
|
||||
else
|
||||
# failed to read pidfile, probably insufficient permissions
|
||||
action $"Stopping $prog: " /bin/false
|
||||
ret=4
|
||||
fi
|
||||
return $ret
|
||||
}
|
||||
|
||||
restart(){
|
||||
stop
|
||||
start
|
||||
}
|
||||
|
||||
condrestart(){
|
||||
[ -e $lockfile ] && restart || :
|
||||
}
|
||||
|
||||
|
||||
# See how we were called.
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
stop)
|
||||
stop
|
||||
;;
|
||||
status)
|
||||
status -p "$mypidfile" $prog
|
||||
;;
|
||||
restart)
|
||||
restart
|
||||
;;
|
||||
condrestart|try-restart)
|
||||
condrestart
|
||||
;;
|
||||
reload)
|
||||
exit 3
|
||||
;;
|
||||
force-reload)
|
||||
restart
|
||||
;;
|
||||
*)
|
||||
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
|
||||
exit 2
|
||||
esac
|
||||
|
||||
exit $?
|
File diff suppressed because it is too large
Load diff
|
@ -1,28 +0,0 @@
|
|||
#! /bin/bash
|
||||
#
|
||||
# Wrapper script for mysql_config to support multilib
|
||||
#
|
||||
# Only works on OEL6/RHEL6 and similar
|
||||
#
|
||||
# This command respects setarch
|
||||
|
||||
bits=$(rpm --eval %__isa_bits)
|
||||
|
||||
case $bits in
|
||||
32|64) status=known ;;
|
||||
*) status=unknown ;;
|
||||
esac
|
||||
|
||||
if [ "$status" = "unknown" ] ; then
|
||||
echo "$0: error: command 'rpm --eval %__isa_bits' returned unknown value: $bits"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
if [ -x /usr/bin/mysql_config-$bits ] ; then
|
||||
/usr/bin/mysql_config-$bits "$@"
|
||||
else
|
||||
echo "$0: error: needed binary: /usr/bin/mysql_config-$bits is missing. Please check your MySQL installation."
|
||||
exit 1
|
||||
fi
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
#
|
||||
# Simple MySQL systemd service file
|
||||
#
|
||||
# systemd supports lots of fancy features, look here (and linked docs) for a full list:
|
||||
# http://www.freedesktop.org/software/systemd/man/systemd.exec.html
|
||||
#
|
||||
# Note: this file ( /usr/lib/systemd/system/mysql.service )
|
||||
# will be overwritten on package upgrade, please copy the file to
|
||||
#
|
||||
# /etc/systemd/system/mysql.service
|
||||
#
|
||||
# to make needed changes.
|
||||
#
|
||||
# systemd-delta can be used to check differences between the two mysql.service files.
|
||||
#
|
||||
|
||||
[Unit]
|
||||
Description=MySQL Community Server
|
||||
After=network.target
|
||||
After=syslog.target
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
Alias=mysql.service
|
||||
|
||||
[Service]
|
||||
User=mysql
|
||||
Group=mysql
|
||||
|
||||
# Execute pre and post scripts as root
|
||||
PermissionsStartOnly=true
|
||||
|
||||
# Needed to create system tables etc.
|
||||
ExecStartPre=/usr/bin/mysql-systemd-start pre
|
||||
|
||||
# Start main service
|
||||
ExecStart=/usr/bin/mysqld_safe
|
||||
|
||||
# Don't signal startup success before a ping works
|
||||
ExecStartPost=/usr/bin/mysql-systemd-start post
|
||||
|
||||
# Give up if ping don't get an answer
|
||||
TimeoutSec=600
|
||||
|
||||
Restart=always
|
||||
PrivateTmp=false
|
||||
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
# Copyright (c) 2012, 2014, 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.
|
||||
|
||||
IF(NOT CMAKE_SYSTEM_NAME MATCHES "SunOS")
|
||||
RETURN()
|
||||
ENDIF()
|
||||
|
||||
# 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()
|
|
@ -1,123 +0,0 @@
|
|||
#!/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 \
|
||||
--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
|
||||
|
Loading…
Reference in a new issue