From: Kent Boortz
Date: May 16 2011 10:55am
Subject: bzr commit into mysql-5.5 branch (kent.boortz:3387)
List-Archive: http://lists.mysql.com/commits/137416
Message-Id: <20110516105510.11202.qmail@helheim>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="===============0791095876=="
--===============0791095876==
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
#At file:///net/helheim/store/bteam/bzr/kent/wix-5.6/mysql-5.5/ based on revid:andrei.elkin@stripped
3387 Kent Boortz 2011-05-16
- Changes needed to use newer WiX version
- Added an alterantive search path for WiX components
- Added a custom welcome dialog to include the copyright line
- Excluded some binaries to make package smaller, in effect makig the
"essentials" package obsolete
- Added a bit more error checking when running the WiX tools
WiX changes done by Johannes Taxacher"
modified:
packaging/WiX/ca/CMakeLists.txt
packaging/WiX/create_msi.cmake.in
packaging/WiX/custom_ui.wxs
packaging/WiX/extra.wxs.in
=== modified file 'packaging/WiX/ca/CMakeLists.txt'
--- a/packaging/WiX/ca/CMakeLists.txt 2010-11-24 20:23:41 +0000
+++ b/packaging/WiX/ca/CMakeLists.txt 2011-05-16 10:54:57 +0000
@@ -13,15 +13,43 @@
# 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)
-LINK_DIRECTORIES(${WIX_DIR}/../SDK/lib)
+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)
- LINK_LIBRARIES(wcautil_x64 dutil_x64 msi version)
+ SET(WIX_ARCH_SUFFIX "_x64")
ELSE()
- LINK_LIBRARIES(wcautil dutil msi version)
+ SET(WIX_ARCH_SUFFIX)
ENDIF()
-
-ADD_LIBRARY(wixca SHARED ${WIXCA_SOURCES})
+
+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 )
=== modified file 'packaging/WiX/create_msi.cmake.in'
--- a/packaging/WiX/create_msi.cmake.in 2010-11-20 14:47:50 +0000
+++ b/packaging/WiX/create_msi.cmake.in 2011-05-16 10:54:57 +0000
@@ -15,6 +15,28 @@ 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)
@@ -197,11 +219,18 @@ 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()
- FILE(RELATIVE_PATH dir_rel ${topdir} ${dir})
IF(dir_rel)
MAKE_DIRECTORY(${dir_root}/${dir_rel})
MAKE_WIX_IDENTIFIER("${dir_rel}" id)
@@ -215,18 +244,31 @@ FUNCTION(TRAVERSE_FILES dir topdir file
FOREACH(f ${all_files})
IF(NOT IS_DIRECTORY ${f})
FILE(RELATIVE_PATH rel ${topdir} ${f})
- 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} " \n")
- FILE(APPEND ${file} " \n")
- FILE(APPEND ${file} " \n")
- FILE(APPEND ${file_comp} " \n")
- ELSE()
- SET(NONEXEFILES "${NONEXEFILES}\n" )
+ 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} " \n")
+ FILE(APPEND ${file} " \n")
+ FILE(APPEND ${file} " \n")
+ FILE(APPEND ${file_comp} " \n")
+ ELSE()
+ SET(NONEXEFILES "${NONEXEFILES}\n" )
+ ENDIF()
ENDIF()
ENDIF()
ENDFOREACH()
@@ -247,18 +289,18 @@ ENDFUNCTION()
FUNCTION(TRAVERSE_DIRECTORIES dir topdir file prefix)
FILE(RELATIVE_PATH rel ${topdir} ${dir})
- IF(rel AND IS_DIRECTORY "${f}")
+ IF(rel)
MAKE_WIX_IDENTIFIER("${rel}" id)
GET_FILENAME_COMPONENT(name ${dir} NAME)
FILE(APPEND ${file} "${prefix}\n")
ENDIF()
FILE(GLOB all_files ${dir}/*)
- FOREACH(f ${all_files})
+ FOREACH(f ${all_files})
IF(IS_DIRECTORY ${f})
TRAVERSE_DIRECTORIES(${f} ${topdir} ${file} "${prefix} ")
ENDIF()
ENDFOREACH()
- IF(rel AND IS_DIRECTORY "${f}")
+ IF(rel)
FILE(APPEND ${file} "${prefix}\n")
ENDIF()
ENDFUNCTION()
@@ -317,16 +359,25 @@ 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}
- OUTPUT_QUIET
)
-
=== modified file 'packaging/WiX/custom_ui.wxs'
--- a/packaging/WiX/custom_ui.wxs 2010-07-24 15:26:45 +0000
+++ b/packaging/WiX/custom_ui.wxs 2011-05-16 10:54:57 +0000
@@ -1,7 +1,22 @@
-
+
+
=== modified file 'packaging/WiX/extra.wxs.in'
--- a/packaging/WiX/extra.wxs.in 2010-07-24 15:26:45 +0000
+++ b/packaging/WiX/extra.wxs.in 2011-05-16 10:54:57 +0000
@@ -1,6 +1,142 @@
+
+
+
+
+ Not Installed And (Not PATCH Or OLDERVERSIONBEINGUPGRADED) And UILevel>4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed and NOT OLDERVERSIONBEINGUPGRADED
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
--===============0791095876==
MIME-Version: 1.0
Content-Type: text/bzr-bundle; charset="us-ascii";
name="bzr/kent.boortz@stripped"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: kent.boortz@stripped
# target_branch: file:///net/helheim/store/bteam/bzr/kent/wix-\
# 5.6/mysql-5.5/
# testament_sha1: 59e10c8cd9ae11f00cd0b67cc8174a554f63550d
# timestamp: 2011-05-16 12:55:10 +0200
# base_revision_id: andrei.elkin@stripped\
# rjsc2wd5p083ctqs
#
# Begin bundle
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
--===============0791095876==--