Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 23 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: Release Draft
# This workflow is triggered on creating tags
on:
push:
workflow_dispatch:
tags:
- "*.*.*"
workflow_dispatch:

env:
BUILD_TYPE: Release
Expand Down Expand Up @@ -40,7 +40,12 @@ jobs:
brew unlink unixodbc
brew install libiodbc mysql-client
brew link --overwrite --force libiodbc


- name: Build and install AWS SDK C++
working-directory: ./scripts
run: |
./build_aws_sdk_unix.sh $BUILD_TYPE

- name: Create build environment
run: cmake -E make_directory ${{ github.workspace }}/build

Expand All @@ -51,6 +56,7 @@ jobs:
-DMYSQLCLIENT_STATIC_LINKING=true
-DODBC_INCLUDES=$ODBC_DM_INCLUDES
-DCONNECTOR_PLATFORM=macos
-DBUNDLE_DEPENDENCIES=true

- name: Build driver
working-directory: ${{ github.workspace }}/build
Expand Down Expand Up @@ -94,6 +100,11 @@ jobs:
curl -L https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-${{ vars.MYSQL_VERSION }}-linux-glibc2.12-x86_64.tar.xz -o mysql.tar.gz
tar xf mysql.tar.gz

- name: Build and install AWS SDK C++
working-directory: ./scripts
run: |
./build_aws_sdk_unix.sh $BUILD_TYPE

- name: Create build environment
shell: bash
run: cmake -E make_directory ${{ github.workspace }}/build
Expand All @@ -107,6 +118,7 @@ jobs:
-DWITH_UNIXODBC=1
-DCONNECTOR_PLATFORM=linux
-DMYSQL_DIR=./mysql-${{ vars.MYSQL_VERSION }}-linux-glibc2.12-x86_64/
-DBUNDLE_DEPENDENCIES=true

# Build driver
- name: Build driver
Expand Down Expand Up @@ -142,12 +154,20 @@ jobs:
curl -L https://cdn.mysql.com/archives/mysql-8.0/mysql-${{ vars.MYSQL_VERSION }}-winx64.zip -o mysql.zip
unzip -d C:/ mysql.zip

- name: Add msbuild to PATH
uses: microsoft/[email protected]

- name: Build and install AWS SDK C++
working-directory: ./scripts
run: |
.\build_aws_sdk_win.ps1 x64 ${{ env.BUILD_TYPE}} ON "${{env.CMAKE_GENERATOR}}"

- name: Setup nmake
uses: ilammy/msvc-dev-cmd@v1

- name: Run build installer script
run: |
.\build_installer.ps1 x64 $BUILD_TYPE C:/mysql-${{ vars.MYSQL_VERSION }}-winx64
.\build_installer.ps1 x64 ${{ env.BUILD_TYPE}} "${{env.CMAKE_GENERATOR}}" C:/mysql-${{ vars.MYSQL_VERSION }}-winx64

- name: Upload Windows installer as artifact
if: success()
Expand Down
25 changes: 17 additions & 8 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -788,10 +788,18 @@ endif()
set(PLUGINS)

# additional bundled dependencies of the client library
if(APPLE)
set(BUNDLED_LIBS
libssl libcrypto ssleay libeay
libaws-c-auth libaws-c-cal libaws-c-common libaws-c-compression libaws-c-event-stream libaws-c-http libaws-c-io
libaws-c-mqtt libaws-c-s3 libaws-c-sdkutils libaws-checksums libaws-cpp-sdk-core libaws-cpp-sdk-rds libaws-cpp-sdk-secretsmanager libaws-crt-cpp
)
else(APPLE)
set(BUNDLED_LIBS
libssl libcrypto ssleay libeay ${AWSSDK_LINK_LIBRARIES}
)
endif(APPLE)

set(BUNDLED_LIBS
libssl libcrypto ssleay libeay
)

# List plugins and other libraries that can be found bundled with the server
# but which are not relevant on client-side and can be safely ignored.
Expand Down Expand Up @@ -840,10 +848,10 @@ function(bundle_lib lib)
endfunction(bundle_lib)

macro(copy_lib_for_wix lib)

get_filename_component(lib_name ${lib} NAME)
configure_file(${lib} ${CMAKE_SOURCE_DIR}/wix/x64/${lib_name} COPYONLY)

if(WIN32)
get_filename_component(lib_name ${lib} NAME)
configure_file(${lib} ${CMAKE_SOURCE_DIR}/wix/x64/${lib_name} COPYONLY)
endif(WIN32)
endmacro(copy_lib_for_wix)

# Bundle libraries listed in a list variable ${to_bundle}.
Expand All @@ -866,7 +874,8 @@ macro(bundle_libs to_bundle ignored)

file(GLOB _bundled
"${MYSQL_LIB_DIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}*"
"${MYSQL_LIB_DIR}/private/*${CMAKE_SHARED_LIBRARY_SUFFIX}*"
"${MYSQL_LIB_DIR}/private/*${CMAKE_SHARED_LIBRARY_SUFFIX}*"
"${CMAKE_SOURCE_DIR}/aws_sdk/install/lib/*${CMAKE_SHARED_LIBRARY_SUFFIX}*"
)

# On windows, libs are in bin directory
Expand Down
21 changes: 12 additions & 9 deletions build_installer.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@ Note that building the installer requires the following:

$ARCHITECTURE = $args[0]
$CONFIGURATION = $args[1]
$MYSQL_DIR = $args[2]
$GENERATOR = $args[2]
$MYSQL_DIR = $args[3]

# Set default values
if ($null -eq $CONFIGURATION) {
Expand All @@ -56,20 +57,22 @@ if ($null -eq $MYSQL_DIR) {
}

# BUILD DRIVER
cmake -S . -G "Visual Studio 16 2019" -DMYSQL_DIR="$MYSQL_DIR" -DMYSQLCLIENT_STATIC_LINKING=TRUE -DCMAKE_BUILD_TYPE="$CONFIGURATION" -DBUNDLE_DEPENDENCIES=TRUE
cmake --build . --config "$CONFIGURATION"
cmake -S . -B ./build -G $GENERATOR -DMYSQL_DIR="$MYSQL_DIR" -DMYSQLCLIENT_STATIC_LINKING=TRUE -DCMAKE_BUILD_TYPE="$CONFIGURATION" -DBUNDLE_DEPENDENCIES=TRUE
cmake --build ./build --config "$CONFIGURATION"

# CREATE INSTALLER
# Copy dll, installer, and info files to wix folder
New-Item -Path .\Wix\x64 -ItemType Directory -Force
New-Item -Path .\Wix\x86 -ItemType Directory -Force
New-Item -Path .\Wix\doc -ItemType Directory -Force
Copy-Item .\lib\$CONFIGURATION\awsmysqlodbc*.dll .\Wix\x64
Copy-Item .\lib\$CONFIGURATION\awsmysqlodbc*.lib .\Wix\x64
Copy-Item .\lib\$CONFIGURATION\awsmysqlodbc*.dll .\Wix\x86
Copy-Item .\lib\$CONFIGURATION\awsmysqlodbc*.lib .\Wix\x86
Copy-Item .\bin\$CONFIGURATION\myodbc-installer.exe .\Wix\x64
Copy-Item .\bin\$CONFIGURATION\myodbc-installer.exe .\Wix\x86
Copy-Item .\build\lib\$CONFIGURATION\awsmysqlodbc*.dll .\Wix\x64
Copy-Item .\build\lib\$CONFIGURATION\awsmysqlodbc*.lib .\Wix\x64
Copy-Item .\build\lib\$CONFIGURATION\aws-*.dll .\Wix\x64
Copy-Item .\build\lib\$CONFIGURATION\awsmysqlodbc*.dll .\Wix\x86
Copy-Item .\build\lib\$CONFIGURATION\awsmysqlodbc*.lib .\Wix\x86
Copy-Item .\build\lib\$CONFIGURATION\aws-*.dll .\Wix\x86
Copy-Item .\build\bin\$CONFIGURATION\myodbc-installer.exe .\Wix\x64
Copy-Item .\build\bin\$CONFIGURATION\myodbc-installer.exe .\Wix\x86
Copy-Item .\INFO_BIN .\Wix\doc
Copy-Item .\INFO_SRC .\Wix\doc
Copy-Item .\ChangeLog .\Wix\doc
Expand Down
2 changes: 1 addition & 1 deletion wix/cmake/getodbcversion.c
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ int main(int argc, char *argv[])
fprintf(fp, "<?define odbc_ver_long=\"%d.%d.%d\" ?>\n", v1, v2, v3);
if (v3 == 0) {
if (v2 == 0)
fprintf(fp, "<?define odbc_ver_prev=\"%d.%d.%d\" ?>\n", v1-1, 999, 999);
fprintf(fp, "<?define odbc_ver_prev=\"%d.%d.%d\" ?>\n", v1-1, 255, 999);
else
fprintf(fp, "<?define odbc_ver_prev=\"%d.%d.%d\" ?>\n", v1, v2-1, 999);
} else {
Expand Down
55 changes: 30 additions & 25 deletions wix/mysql_odbc_fragment.xml
Original file line number Diff line number Diff line change
Expand Up @@ -53,15 +53,6 @@
<Directory Id="INSTALLDIR" Name=".">

<?if $(var.odbc_64bit) = 1 ?>

<Component Id="lib" Guid="5c83cc2b-ed0c-48b7-b265-4bc708f8c16d" SharedDllRefCount="yes" Win64="yes">
<File Id="awsmysqlodbca.lib" Name="awsmysqlodbca.lib" KeyPath="yes" DiskId="1" Source="x64\awsmysqlodbca.lib" />
<File Id="awsmysqlodbcw.lib" Name="awsmysqlodbcw.lib" DiskId="1" Source="x64\awsmysqlodbcw.lib" />
<?if $(var.odbc_pdb) = 1 ?>
<File Id="awsmysqlodbca.lib.pdb" Name="awsmysqlodbca.pdb" DiskId="1" Source="x64\awsmysqlodbca.pdb" />
<File Id="awsmysqlodbcw.lib.pdb" Name="awsmysqlodbcw.pdb" DiskId="1" Source="x64\awsmysqlodbcw.pdb" />
<?endif?>
</Component>
<Component Id="driver" Guid="a2c91917-2d05-45d1-a5dd-4bbea3036133" SharedDllRefCount="yes" Win64="yes">
<File Id="awsmysqlodbca.dll" Name="awsmysqlodbca.dll" Checksum="yes" KeyPath="yes" DiskId="1" Source="x64\awsmysqlodbca.dll"/>
<File Id="awsmysqlodbcw.dll" Name="awsmysqlodbcw.dll" Checksum="yes" DiskId="1" Source="x64\awsmysqlodbcw.dll"/>
Expand All @@ -70,13 +61,24 @@
<File Id="license" Name="LICENSE.txt" DiskId="1" Source="doc\LICENSE.txt" />
<File Id="info_bin" Name="INFO_BIN" DiskId="1" Source="doc\INFO_BIN" />
<File Id="info_src" Name="INFO_SRC" DiskId="1" Source="doc\INFO_SRC" />
<File Id="aws_c_auth.dll" Name="aws-c-auth.dll" DiskId="1" Source="x64\aws-c-auth.dll"/>
<File Id="aws_c_cal.dll" Name="aws-c-cal.dll" DiskId="1" Source="x64\aws-c-cal.dll"/>
<File Id="aws_c_common.dll" Name="aws-c-common.dll" DiskId="1" Source="x64\aws-c-common.dll"/>
<File Id="aws_c_compression.dll" Name="aws-c-compression.dll" DiskId="1" Source="x64\aws-c-compression.dll"/>
<File Id="aws_c_event_stream.dll" Name="aws-c-event-stream.dll" DiskId="1" Source="x64\aws-c-event-stream.dll"/>
<File Id="aws_checksums.dll" Name="aws-checksums.dll" DiskId="1" Source="x64\aws-checksums.dll"/>
<File Id="aws_c_http.dll" Name="aws-c-http.dll" DiskId="1" Source="x64\aws-c-http.dll"/>
<File Id="aws_c_io.dll" Name="aws-c-io.dll" DiskId="1" Source="x64\aws-c-io.dll"/>
<File Id="aws_c_mqtt.dll" Name="aws-c-mqtt.dll" DiskId="1" Source="x64\aws-c-mqtt.dll"/>
<File Id="aws_cpp_sdk_core.dll" Name="aws-cpp-sdk-core.dll" DiskId="1" Source="x64\aws-cpp-sdk-core.dll"/>
<File Id="aws_cpp_sdk_rds.dll" Name="aws-cpp-sdk-rds.dll" DiskId="1" Source="x64\aws-cpp-sdk-rds.dll"/>
<File Id="aws_cpp_sdk_secretsmanager.dll" Name="aws-cpp-sdk-secretsmanager.dll" DiskId="1" Source="x64\aws-cpp-sdk-secretsmanager.dll"/>
<File Id="aws_crt_cpp.dll" Name="aws-crt-cpp.dll" DiskId="1" Source="x64\aws-crt-cpp.dll"/>
<File Id="aws_c_s3.dll" Name="aws-c-s3.dll" DiskId="1" Source="x64\aws-c-s3.dll"/>
<File Id="aws_c_sdkutils.dll" Name="aws-c-sdkutils.dll" DiskId="1" Source="x64\aws-c-sdkutils.dll"/>
</Component>
<Component Id="setup" Guid="e706b738-01f6-4a7c-bf4a-eb4599a4abb4" SharedDllRefCount="yes" Win64="yes">
<File Id="awsmysqlodbcS.dll" Name="awsmysqlodbcS.dll" KeyPath="yes" DiskId="1" Source="x64\awsmysqlodbcS.dll" />
<File Id="awsmysqlodbcS.lib" Name="awsmysqlodbcS.lib" DiskId="1" Source="x64\awsmysqlodbcS.lib"/>
<?if $(var.odbc_pdb) = 1 ?>
<File Id="awsmysqlodbcS.lib.pdb" Name="awsmysqlodbcS.pdb" DiskId="1" Source="x64\awsmysqlodbcS.pdb"/>
<?endif?>
</Component>
<Component Id="installer" Guid="4d743672-e573-45e2-8002-8d32866a5ae2" SharedDllRefCount="yes" Win64="yes">
<File Id="installer" Name="myodbc-installer.exe" KeyPath="yes" DiskId="1" Source="x64\myodbc-installer.exe" />
Expand All @@ -86,14 +88,6 @@
<File Id="libssl_1_1_x64.dll" Name="libssl-1_1-x64.dll" DiskId="1" Source="x64\libssl-1_1-x64.dll" />
</Component>
<?else ?>
<Component Id="lib" Guid="f35e60c3-0095-43ed-9414-4bfb2d0b9a60" SharedDllRefCount="yes">
<File Id="awsmysqlodbca.lib" Name="awsmysqlodbca.lib" KeyPath="yes" DiskId="1" Source="x86\awsmysqlodbca.lib" />
<File Id="awsmysqlodbcw.lib" Name="awsmysqlodbcw.lib" DiskId="1" Source="x86\awsmysqlodbcw.lib" />
<?if $(var.odbc_pdb) = 1 ?>
<File Id="awsmysqlodbca.lib.pdb" Name="awsmysqlodbca.pdb" DiskId="1" Source="x86\awsmysqlodbca.pdb" />
<File Id="awsmysqlodbcw.lib.pdb" Name="awsmysqlodbcw.pdb" DiskId="1" Source="x86\awsmysqlodbcw.pdb" />
<?endif?>
</Component>
<Component Id="driver" Guid="2d5f8fc4-4cc3-46b7-9221-f28a5f930ebf" SharedDllRefCount="yes">
<File Id="awsmysqlodbca.dll" Name="awsmysqlodbca.dll" Checksum="yes" KeyPath="yes" DiskId="1" Source="x86\awsmysqlodbca.dll"/>
<File Id="awsmysqlodbcw.dll" Name="awsmysqlodbcw.dll" Checksum="yes" DiskId="1" Source="x86\awsmysqlodbcw.dll"/>
Expand All @@ -102,13 +96,24 @@
<File Id="license" Name="LICENSE.txt" DiskId="1" Source="doc\LICENSE.txt" />
<File Id="info_bin" Name="INFO_BIN" DiskId="1" Source="doc\INFO_BIN" />
<File Id="info_src" Name="INFO_SRC" DiskId="1" Source="doc\INFO_SRC" />
<File Id="aws_c_auth.dll" Name="aws-c-auth.dll" DiskId="1" Source="x86\aws-c-auth.dll"/>
<File Id="aws_c_cal.dll" Name="aws-c-cal.dll" DiskId="1" Source="x86\aws-c-cal.dll"/>
<File Id="aws_c_common.dll" Name="aws-c-common.dll" DiskId="1" Source="x86\aws-c-common.dll"/>
<File Id="aws_c_compression.dll" Name="aws-c-compression.dll" DiskId="1" Source="x86\aws-c-compression.dll"/>
<File Id="aws_c_event_stream.dll" Name="aws-c-event-stream.dll" DiskId="1" Source="x86\aws-c-event-stream.dll"/>
<File Id="aws_checksums.dll" Name="aws-checksums.dll" DiskId="1" Source="x86\aws-checksums.dll"/>
<File Id="aws_c_http.dll" Name="aws-c-http.dll" DiskId="1" Source="x86\aws-c-http.dll"/>
<File Id="aws_c_io.dll" Name="aws-c-io.dll" DiskId="1" Source="x86\aws-c-io.dll"/>
<File Id="aws_c_mqtt.dll" Name="aws-c-mqtt.dll" DiskId="1" Source="x86\aws-c-mqtt.dll"/>
<File Id="aws_cpp_sdk_core.dll" Name="aws-cpp-sdk-core.dll" DiskId="1" Source="x86\aws-cpp-sdk-core.dll"/>
<File Id="aws_cpp_sdk_rds.dll" Name="aws-cpp-sdk-rds.dll" DiskId="1" Source="x86\aws-cpp-sdk-rds.dll"/>
<File Id="aws_cpp_sdk_secretsmanager.dll" Name="aws-cpp-sdk-secretsmanager.dll" DiskId="1" Source="x86\aws-cpp-sdk-secretsmanager.dll"/>
<File Id="aws_crt_cpp.dll" Name="aws-crt-cpp.dll" DiskId="1" Source="x86\aws-crt-cpp.dll"/>
<File Id="aws_c_s3.dll" Name="aws-c-s3.dll" DiskId="1" Source="x86\aws-c-s3.dll"/>
<File Id="aws_c_sdkutils.dll" Name="aws-c-sdkutils.dll" DiskId="1" Source="x86\aws-c-sdkutils.dll"/>
</Component>
<Component Id="setup" Guid="80e53cdf-b4fc-4911-a9c2-17853a6c83a8" SharedDllRefCount="yes">
<File Id="awsmysqlodbcS.dll" Name="awsmysqlodbcS.dll" KeyPath="yes" DiskId="1" Source="x86\awsmysqlodbcS.dll" />
<File Id="awsmysqlodbcS.lib" Name="awsmysqlodbcS.lib" DiskId="1" Source="x86\awsmysqlodbcS.lib"/>
<?if $(var.odbc_pdb) = 1 ?>
<File Id="awsmysqlodbcS.lib.pdb" Name="awsmysqlodbcS.pdb" DiskId="1" Source="x86\awsmysqlodbcS.pdb"/>
<?endif?>
</Component>
<Component Id="installer" Guid="dcf4dd91-f481-4333-a276-a0a11cce51ca" SharedDllRefCount="yes">
<File Id="installer" Name="myodbc-installer.exe" KeyPath="yes" DiskId="1" Source="x86\myodbc-installer.exe" />
Expand Down