From: Date: April 23 2007 9:41pm Subject: bk commit into 5.0 tree (iggy:1.2449) BUG#24732 List-Archive: http://lists.mysql.com/commits/25175 X-Bug: 24732 Message-Id: <20070423194147.424BEA90144@recycle> Below is the list of changes that have just been committed into a local 5.0 repository of iggy. When iggy does a push these changes will be propagated to the main repository and, within 24 hours after the push, to the public repository. For information on how to access the public repository see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html ChangeSet@stripped, 2007-04-23 15:41:24-04:00, iggy@recycle.(none) +12 -0 Bug#24732 Executables do not include Vista manifests - Added script to generate application specific manifest. - Added new CMake MACRO to add customer build events which will first generate a manifest and then embeds that manifest into an executable. BitKeeper/etc/ignore@stripped, 2007-04-23 15:41:22-04:00, iggy@recycle.(none) +2 -1 Bug#24732 Executables do not include Vista manifests - Revise ignore rules to disallow auto-generated cmake files but to allow custom macros defined in a .cmake file. CMakeLists.txt@stripped, 2007-04-23 15:41:22-04:00, iggy@recycle.(none) +27 -0 Bug#24732 Executables do not include Vista manifests - Added logic for EMBED_MANIFESTS configuration option. client/CMakeLists.txt@stripped, 2007-04-23 15:41:22-04:00, iggy@recycle.(none) +14 -0 Bug#24732 Executables do not include Vista manifests - Embed manifest with custom CMake MACRO for client executables. extra/CMakeLists.txt@stripped, 2007-04-23 15:41:22-04:00, iggy@recycle.(none) +7 -0 Bug#24732 Executables do not include Vista manifests - Embed manifest with custom CMake MACRO for my_print_default executable. libmysql/CMakeLists.txt@stripped, 2007-04-23 15:41:22-04:00, iggy@recycle.(none) +5 -0 Bug#24732 Executables do not include Vista manifests - Embed manifest with custom CMake MACRO for myTest executable. myisam/CMakeLists.txt@stripped, 2007-04-23 15:41:22-04:00, iggy@recycle.(none) +8 -0 Bug#24732 Executables do not include Vista manifests - Embed manifest with custom CMake MACRO for myisam executables. server-tools/instance-manager/CMakeLists.txt@stripped, 2007-04-23 15:41:22-04:00, iggy@recycle.(none) +5 -0 Bug#24732 Executables do not include Vista manifests - Embed manifest with custom CMake MACRO for mysqlmanager executable. sql/CMakeLists.txt@stripped, 2007-04-23 15:41:22-04:00, iggy@recycle.(none) +5 -0 Bug#24732 Executables do not include Vista manifests - Embed manifest with custom CMake MACRO for mysqld executable. win/README@stripped, 2007-04-23 15:41:22-04:00, iggy@recycle.(none) +2 -0 Bug#24732 Executables do not include Vista manifests - Added new configuration option documentation. win/configure.js@stripped, 2007-04-23 15:41:22-04:00, iggy@recycle.(none) +1 -0 Bug#24732 Executables do not include Vista manifests - Added new EMBED_MANIFESTS configuration option. win/create_manifest.js@stripped, 2007-04-23 15:41:22-04:00, iggy@recycle.(none) +85 -0 Bug#24732 Executables do not include Vista manifests - Manifest generator. This script generates a basic manifest. win/create_manifest.js@stripped, 2007-04-23 15:41:22-04:00, iggy@recycle.(none) +0 -0 win/mysql_manifest.cmake@stripped, 2007-04-23 15:41:22-04:00, iggy@recycle.(none) +20 -0 Bug#24732 Executables do not include Vista manifests - Define new CMake MACRO for adding Windows manifests to executables. win/mysql_manifest.cmake@stripped, 2007-04-23 15:41:22-04:00, iggy@recycle.(none) +0 -0 # This is a BitKeeper patch. What follows are the unified diffs for the # set of deltas contained in the patch. The rest of the patch, the part # that BitKeeper cares about, is below these diffs. # User: iggy # Host: recycle.(none) # Root: /src/bug24732/my50-bug24732 --- 1.9/CMakeLists.txt 2007-04-19 11:01:18 -04:00 +++ 1.10/CMakeLists.txt 2007-04-23 15:41:22 -04:00 @@ -128,6 +128,33 @@ ENDIF(CMAKE_GENERATOR MATCHES "Visual St ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D _CRT_SECURE_NO_DEPRECATE") +IF(EMBED_MANIFESTS) + # Search for the Manifest tool. CMake will first search it's defaults + # (CMAKE_FRAMEWORK_PATH, CMAKE_APPBUNDLE_PATH, CMAKE_PROGRAM_PATH and + # the system PATH) followed by the listed paths which are the current + # possible defaults and should be updated when necessary. The custom + # manifests are designed to be compatible with all mt versions. + FIND_PROGRAM(HAVE_MANIFEST_TOOL NAMES mt + PATHS + "$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/VC/bin" + "$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/Common7/Tools/Bin" + "$ENV{PROGRAMFILES}/Microsoft Visual Studio 8/SDK/v2.0/Bin") + IF(HAVE_MANIFEST_TOOL) + MESSAGE(STATUS "Found Mainfest Tool. Embedding custom manifests.") + ELSE(HAVE_MANIFEST_TOOL) + MESSAGE(FATAL_ERROR "Manifest tool, mt.exe, can't be found.") + ENDIF(HAVE_MANIFEST_TOOL) + # Disable automatic manifest generation. + STRING(REPLACE "/MANIFEST" "/MANIFEST:NO" CMAKE_EXE_LINKER_FLAGS + ${CMAKE_EXE_LINKER_FLAGS}) + # Set the processor architecture. + IF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64") + SET(PROCESSOR_ARCH "X64") + ELSE(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64") + SET(PROCESSOR_ARCH "X86") + ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64") +ENDIF(EMBED_MANIFESTS) + ADD_SUBDIRECTORY(vio) ADD_SUBDIRECTORY(dbug) ADD_SUBDIRECTORY(strings) --- 1.6/client/CMakeLists.txt 2007-04-19 12:32:54 -04:00 +++ 1.7/client/CMakeLists.txt 2007-04-23 15:41:22 -04:00 @@ -12,6 +12,7 @@ # 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("${PROJECT_SOURCE_DIR}/win/mysql_manifest.cmake") SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX") SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX") @@ -97,4 +98,17 @@ ADD_EXECUTABLE(mysqladmin mysqladmin.cc) TARGET_LINK_LIBRARIES(mysqladmin mysqlclient mysys dbug yassl taocrypt zlib wsock32) ADD_EXECUTABLE(echo echo.c) + +IF(EMBED_MANIFESTS) + MYSQL_EMBED_MANIFEST("mysql" "asInvoker") + MYSQL_EMBED_MANIFEST("mysqltest" "asInvoker") + MYSQL_EMBED_MANIFEST("mysqlcheck" "asInvoker") + MYSQL_EMBED_MANIFEST("mysqldump" "asInvoker") + MYSQL_EMBED_MANIFEST("mysqlimport" "asInvoker") + MYSQL_EMBED_MANIFEST("mysql_upgrade" "asInvoker") + MYSQL_EMBED_MANIFEST("mysqlshow" "asInvoker") + MYSQL_EMBED_MANIFEST("mysqlbinlog" "asInvoker") + MYSQL_EMBED_MANIFEST("mysqladmin" "asInvoker") + MYSQL_EMBED_MANIFEST("echo" "asInvoker") +ENDIF(EMBED_MANIFESTS) --- 1.4/extra/CMakeLists.txt 2007-02-23 10:51:11 -05:00 +++ 1.5/extra/CMakeLists.txt 2007-04-23 15:41:22 -04:00 @@ -12,6 +12,7 @@ # 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("${PROJECT_SOURCE_DIR}/win/mysql_manifest.cmake") SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX") SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX") @@ -45,3 +46,9 @@ TARGET_LINK_LIBRARIES(perror strings mys ADD_EXECUTABLE(replace replace.c) TARGET_LINK_LIBRARIES(replace strings mysys dbug wsock32) + +IF(EMBED_MANIFESTS) + MYSQL_EMBED_MANIFEST("my_print_defaults" "asInvoker") + MYSQL_EMBED_MANIFEST("perror" "asInvoker") + MYSQL_EMBED_MANIFEST("replace" "asInvoker") +ENDIF(EMBED_MANIFESTS) --- 1.2/libmysql/CMakeLists.txt 2006-12-30 08:10:45 -05:00 +++ 1.3/libmysql/CMakeLists.txt 2007-04-23 15:41:22 -04:00 @@ -12,6 +12,7 @@ # 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("${PROJECT_SOURCE_DIR}/win/mysql_manifest.cmake") # Need to set USE_TLS, since __declspec(thread) approach to thread local # storage does not work properly in DLLs. @@ -67,3 +68,7 @@ TARGET_LINK_LIBRARIES(libmysql mysys str ADD_EXECUTABLE(myTest mytest.c) TARGET_LINK_LIBRARIES(myTest libmysql) + +IF(EMBED_MANIFESTS) + MYSQL_EMBED_MANIFEST("myTest" "asInvoker") +ENDIF(EMBED_MANIFESTS) --- 1.2/myisam/CMakeLists.txt 2006-12-30 08:10:45 -05:00 +++ 1.3/myisam/CMakeLists.txt 2007-04-23 15:41:22 -04:00 @@ -12,6 +12,7 @@ # 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("${PROJECT_SOURCE_DIR}/win/mysql_manifest.cmake") SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX") SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX") @@ -39,3 +40,10 @@ TARGET_LINK_LIBRARIES(myisamlog myisam m ADD_EXECUTABLE(myisampack myisampack.c) TARGET_LINK_LIBRARIES(myisampack myisam mysys dbug strings zlib wsock32) + +IF(EMBED_MANIFESTS) + MYSQL_EMBED_MANIFEST("myisam_ftdump" "asInvoker") + MYSQL_EMBED_MANIFEST("myisamchk" "asInvoker") + MYSQL_EMBED_MANIFEST("myisamlog" "asInvoker") + MYSQL_EMBED_MANIFEST("myisampack" "asInvoker") +ENDIF(EMBED_MANIFESTS) --- 1.2/server-tools/instance-manager/CMakeLists.txt 2006-12-30 08:10:45 -05:00 +++ 1.3/server-tools/instance-manager/CMakeLists.txt 2007-04-23 15:41:22 -04:00 @@ -12,6 +12,7 @@ # 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("${PROJECT_SOURCE_DIR}/win/mysql_manifest.cmake") SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX") SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX") @@ -30,3 +31,7 @@ ADD_EXECUTABLE(mysqlmanager buffer.cc co ADD_DEPENDENCIES(mysqlmanager GenError) TARGET_LINK_LIBRARIES(mysqlmanager dbug mysys strings taocrypt vio yassl zlib wsock32) + +IF(EMBED_MANIFESTS) + MYSQL_EMBED_MANIFEST("mysqlmanager" "asInvoker") +ENDIF(EMBED_MANIFESTS) --- 1.4/sql/CMakeLists.txt 2007-01-11 03:19:27 -05:00 +++ 1.5/sql/CMakeLists.txt 2007-04-23 15:41:22 -04:00 @@ -12,6 +12,7 @@ # 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("${PROJECT_SOURCE_DIR}/win/mysql_manifest.cmake") SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_SYMDIR /Zi") @@ -83,6 +84,10 @@ ADD_EXECUTABLE(mysqld ../sql-common/clie TARGET_LINK_LIBRARIES(mysqld heap myisam myisammrg mysys yassl zlib dbug yassl taocrypt strings vio regex wsock32) + +IF(EMBED_MANIFESTS) + MYSQL_EMBED_MANIFEST("mysqld" "requireAdministrator") +ENDIF(EMBED_MANIFESTS) IF(WITH_EXAMPLE_STORAGE_ENGINE) TARGET_LINK_LIBRARIES(mysqld example) --- 1.3/win/README 2007-03-28 17:00:25 -04:00 +++ 1.4/win/README 2007-04-23 15:41:22 -04:00 @@ -50,6 +50,8 @@ The options right now are MYSQL_TCP_PORT= Server port, default 3306 DISABLE_GRANT_OPTIONS Disables the use of --init-file and --skip-grant-tables options of mysqld.exe + EMBED_MANIFESTS Embed custom manifests into final exes, otherwise VS + default will be used. So the command line could look like: --- 1.4/win/configure.js 2007-03-28 17:00:25 -04:00 +++ 1.5/win/configure.js 2007-04-23 15:41:22 -04:00 @@ -47,6 +47,7 @@ try case "WITH_PARTITION_STORAGE_ENGINE": case "__NT__": case "DISABLE_GRANT_OPTIONS": + case "EMBED_MANIFESTS": configfile.WriteLine("SET (" + args.Item(i) + " TRUE)"); break; case "MYSQL_SERVER_SUFFIX": --- New file --- +++ win/create_manifest.js 07/04/23 15:41:22 /* manifest.js - Writes a custom XML manifest for each executable/library 6 command line options must be supplied: name - Name of the executable/library into which the mainfest will be embedded. version - Version of the executable arch - Architecture intended. type - Application type. exe_level - Application execution level. [asInvoker|highestAvailable|requireAdministrator] outfile - Final destination where mainfest will be written. Example: cscript manifest.js name=mysql version=5.0.32 arch=X86 type=win32 exe_level=asInvoker outfile=out.xml */ try { var args = WScript.Arguments for (i=0; i < args.Count(); i++) { var parts = args.Item(i).split('='); switch (parts[0]) { case "name": var app_name= parts[1]; break; case "version": var app_version= parts[1]; break; case "arch": var app_arch= parts[1]; break; case "type": var app_type= parts[1]; break; case "exe_level": var app_exe_level= parts[1]; break; case "outfile": var manifest_file= parts[1]; break; default: WScript.echo("Invalid argument supplied."); } } if (i != 6) throw new Error(1, "Incorrect number of arguments."); var manifest_xml= "\r\n"; manifest_xml+= "\r\n"; // Identify the application security requirements. manifest_xml+= "\t\r\n"; manifest_xml+= "\t\t\r\n\t\t\t\r\n\t\t\t\t"; manifest_xml+= "