soci: update to 4.1.2 (#24538)

This commit is contained in:
Raed Rizqie 2025-06-12 01:48:24 +08:00 committed by GitHub
parent 8a49c3a8dc
commit f8756b662f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 29 additions and 157 deletions

View File

@ -0,0 +1,13 @@
diff --git a/src/core/backend-loader.cpp b/src/core/backend-loader.cpp
index 7620c87..0efa041 100644
--- a/src/core/backend-loader.cpp
+++ b/src/core/backend-loader.cpp
@@ -46,7 +46,7 @@ private:
typedef HMODULE soci_dynlib_handle_t;
-extern "C" IMAGE_DOS_HEADER __ImageBase;
+extern "C" { IMAGE_DOS_HEADER __ImageBase; }
std::string get_this_dynlib_path()
{

View File

@ -3,8 +3,8 @@
_realname=soci
pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=4.0.3
pkgrel=5
pkgver=4.1.2
pkgrel=1
pkgdesc="SOCI - The C++ Database Access Library (mingw-w64)"
arch=('any')
mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64')
@ -19,35 +19,25 @@ makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
"${MINGW_PACKAGE_PREFIX}-cmake"
"${MINGW_PACKAGE_PREFIX}-ninja"
"${MINGW_PACKAGE_PREFIX}-boost"
$([[ ${CARCH} == aarch64 ]] || echo "${MINGW_PACKAGE_PREFIX}-firebird")
"${MINGW_PACKAGE_PREFIX}-firebird"
"${MINGW_PACKAGE_PREFIX}-libmariadbclient"
"${MINGW_PACKAGE_PREFIX}-postgresql"
"${MINGW_PACKAGE_PREFIX}-sqlite3")
optdepends=("${MINGW_PACKAGE_PREFIX}-libmariadbclient: support for MySQL databases"
optdepends=("${MINGW_PACKAGE_PREFIX}-firebird: support for Firebird databases"
"${MINGW_PACKAGE_PREFIX}-libmariadbclient: support for MySQL databases"
"${MINGW_PACKAGE_PREFIX}-postgresql: support for PostGreSQL databases"
"${MINGW_PACKAGE_PREFIX}-sqlite3: support for SQLite databases")
if [[ ${CARCH} != aarch64 ]]; then
optdepends+=("${MINGW_PACKAGE_PREFIX}-firebird: support for Firebird databases")
fi
source=("https://github.com/SOCI/soci/archive/v${pkgver}/${_realname}-${pkgver}.tar.gz"
soci-4.0.0.patch
soci-cmake-sociconfig.patch
soci-tests-catch.patch)
sha256sums=('4b1ff9c8545c5d802fbe06ee6cd2886630e5c03bf740e269bb625b45cf934928'
'fe7db55531f0d061cced835709065672904bb00d26514e0c323124bab43f2b90'
'65f820a25a8c19e1bd608372f7092db88b2428b529cb05622574527a6ca4591c'
'2490363693b9350527f6e0115123d99fb375f701f7b241992cccb18c59940cb7')
001-fix-undefined-reference.patch)
sha256sums=('c0974067e57242f21d9a85677c5f6cc7848fba3cbd5ec58d76c95570a5a7a15b'
'93b96f408da20a4775d75483d35ea1f64a7283e7f80fc26881010baebf42c7ad')
prepare() {
cd "${srcdir}/${_realname}-${pkgver}"
patch -p1 -i "${srcdir}"/soci-4.0.0.patch
patch -p1 -i "${srcdir}"/soci-cmake-sociconfig.patch
patch -p1 -i "${srcdir}"/soci-tests-catch.patch
cd "${_realname}-${pkgver}"
patch -p1 -i "${srcdir}"/001-fix-undefined-reference.patch
}
build() {
mkdir -p "${srcdir}/build-${MSYSTEM}" && cd "${srcdir}/build-${MSYSTEM}"
declare -a _extra_config
if check_option "debug" "n"; then
_extra_config+=("-DCMAKE_BUILD_TYPE=Release")
@ -56,20 +46,20 @@ build() {
fi
MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
${MINGW_PREFIX}/bin/cmake.exe -Wno-dev \
cmake -Wno-dev \
-DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
"${_extra_config[@]}" \
"../${_realname}-${pkgver}"
-S ${_realname}-${pkgver} \
-B build-${MSYSTEM}
${MINGW_PREFIX}/bin/cmake --build .
cmake --build build-${MSYSTEM}
}
package() {
cd "${srcdir}/build-${MSYSTEM}"
DESTDIR="${pkgdir}" ${MINGW_PREFIX}/bin/cmake --install .
DESTDIR="${pkgdir}" cmake --install build-${MSYSTEM}
local PREFIX_WIN=$(cygpath -wm ${MINGW_PREFIX})
for _f in "${pkgdir}${MINGW_PREFIX}"/lib/cmake/SOCI/*.cmake; do
for _f in "${pkgdir}${MINGW_PREFIX}"/lib/cmake/soci*/*.cmake; do
sed -e "s|${PREFIX_WIN}|\$\{_IMPORT_PREFIX\}|g" -i ${_f}
done

View File

@ -1,63 +0,0 @@
--- a/cmake/modules/FindMySQL.cmake
+++ b/cmake/modules/FindMySQL.cmake
@@ -21,9 +21,14 @@
PATHS
$ENV{MYSQL_INCLUDE_DIR}
$ENV{MYSQL_DIR}/include
+ if(MSVC)
$ENV{ProgramFiles}/MySQL/*/include
$ENV{SystemDrive}/MySQL/*/include
$ENV{ProgramW6432}/MySQL/*/include
+ else()
+ PATH_SUFFIXES
+ mysql
+ endif()
)
else(WIN32)
find_path(MYSQL_INCLUDE_DIR mysql.h
@@ -55,6 +60,7 @@
endif(CMAKE_BUILD_TYPE_TOLOWER MATCHES "debug")
# find_library(MYSQL_LIBRARIES NAMES mysqlclient
+ if(MSVC)
set(MYSQL_LIB_PATHS
$ENV{MYSQL_DIR}/lib/${binary_dist}
$ENV{MYSQL_DIR}/libmysql/${build_dist}
@@ -71,6 +77,15 @@
PATHS
${MYSQL_LIB_PATHS}
)
+ else()
+ set(MYSQL_LIB_PATHS
+ $ENV{MYSQL_DIR}/lib
+ )
+ find_library(MYSQL_LIBRARIES NAMES mysqlclient
+ PATHS
+ ${MYSQL_LIB_PATHS}
+ )
+ endif()
else(WIN32)
# find_library(MYSQL_LIBRARIES NAMES mysqlclient
set(MYSQL_LIB_PATHS
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -137,7 +137,7 @@
message(FATAL_ERROR "No thread library found")
endif()
-if(NOT MSVC)
+if(NOT WIN32)
set(DL_FIND_QUIETLY TRUE)
find_package(DL)
if(DL_FOUND)
--- a/tests/odbc/CMakeLists.txt
+++ b/tests/odbc/CMakeLists.txt
@@ -35,7 +35,7 @@
SOURCE test-odbc-mysql.cpp ${SOCI_TESTS_COMMON}
CONNSTR "test-mysql.dsn")
-if(WIN32)
+if(SOCI_TARGET_ARCH_X64)
set(TEST_PGSQL_DSN "test-postgresql-win64.dsn")
else()
set(TEST_PGSQL_DSN "test-postgresql.dsn")

View File

@ -1,57 +0,0 @@
--- a/cmake/SociConfig.cmake
+++ b/cmake/SociConfig.cmake
@@ -10,20 +10,20 @@
include(CheckCXXSymbolExists)
-if(WIN32)
+if(MSVC)
check_cxx_symbol_exists("_M_AMD64" "" SOCI_TARGET_ARCH_X64)
if(NOT RTC_ARCH_X64)
check_cxx_symbol_exists("_M_IX86" "" SOCI_TARGET_ARCH_X86)
endif(NOT RTC_ARCH_X64)
# add check for arm here
# see http://msdn.microsoft.com/en-us/library/b0084kay.aspx
-else(WIN32)
+else()
check_cxx_symbol_exists("__i386__" "" SOCI_TARGET_ARCH_X86)
check_cxx_symbol_exists("__x86_64__" "" SOCI_TARGET_ARCH_X64)
check_cxx_symbol_exists("__arm__" "" SOCI_TARGET_ARCH_ARM)
-endif(WIN32)
+endif()
-if(NOT DEFINED LIB_SUFFIX)
+if(NOT DEFINED LIB_SUFFIX AND NOT MINGW)
if(SOCI_TARGET_ARCH_X64)
set(_lib_suffix "64")
else()
@@ -77,6 +77,21 @@
set(SOCI_GCC_CLANG_COMMON_FLAGS
"-pedantic -Wno-error=parentheses -Wall -Wextra -Wpointer-arith -Wcast-align -Wcast-qual -Wfloat-equal -Woverloaded-virtual -Wredundant-decls -Wno-long-long")
+ if (MINGW)
+ add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
+ add_definitions(-D_CRT_SECURE_NO_WARNINGS)
+ add_definitions(-D_CRT_NONSTDC_NO_WARNING)
+ add_definitions(-D_SCL_SECURE_NO_WARNINGS)
+
+ if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
+ add_definitions(-DCATCH_CONFIG_CPP11_NO_IS_ENUM)
+ endif()
+
+ set(SOCI_CXX11 ON)
+ set(SOCI_CXX_VERSION_FLAGS "-std=c++14")
+ set(SOCI_GCC_CLANG_COMMON_FLAGS "${SOCI_GCC_CLANG_COMMON_FLAGS} -Wno-deprecated-copy")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SOCI_GCC_CLANG_COMMON_FLAGS} ${SOCI_CXX_VERSION_FLAGS}")
+ else()
if (SOCI_CXX11)
set(SOCI_CXX_VERSION_FLAGS "-std=c++11")
@@ -115,6 +130,7 @@
else()
message(WARNING "Unknown toolset - using default flags to build SOCI")
endif()
+ endif()
endif()

View File

@ -1,11 +0,0 @@
--- a/tests/catch.hpp
+++ b/tests/catch.hpp
@@ -7170,7 +7170,7 @@
namespace Catch {
struct RandomNumberGenerator {
- typedef std::ptrdiff_t result_type;
+ typedef std::size_t result_type;
result_type operator()( result_type n ) const { return std::rand() % n; }