From e1854bdcf06b1d58087a5edaec18cb370279c12d Mon Sep 17 00:00:00 2001 From: "Alina (Xi) Li" Date: Thu, 21 Aug 2025 16:35:28 -0700 Subject: [PATCH 1/8] Draft versioninfo.rc file * dll properties cannot be added --- cpp/src/arrow/flight/sql/odbc/CMakeLists.txt | 5 +- .../flight/sql/odbc/install/versioninfo.rc | 62 +++++++++++++++++++ 2 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 cpp/src/arrow/flight/sql/odbc/install/versioninfo.rc diff --git a/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt b/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt index c33374df9c49..25b81d2fe317 100644 --- a/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt +++ b/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt @@ -57,7 +57,7 @@ arrow_install_all_headers("arrow/flight/sql/odbc") set(ARROW_FLIGHT_SQL_ODBC_SRCS entry_points.cc odbc_api.cc) if(WIN32) - list(APPEND ARROW_FLIGHT_SQL_ODBC_SRCS odbc.def) + list(APPEND ARROW_FLIGHT_SQL_ODBC_SRCS odbc.def install/versioninfo.rc) endif() add_arrow_lib(arrow_flight_sql_odbc @@ -112,6 +112,9 @@ if(ARROW_FLIGHT_SQL_ODBC_INSTALLER) # TODO: set up `flight_sql_odbc_lib` component for macOS Installer # TODO: set up `flight_sql_odbc_lib` component for Linux Installer if(WIN32) + # -AL- get build errors + # target_sources(arrow_flight_sql_odbc SHARED install/versioninfo.rc) + install(DIRECTORY "${BUILD_OUTPUT_ROOT_DIRECTORY}${CMAKE_BUILD_TYPE}/" DESTINATION bin COMPONENT flight_sql_odbc_lib diff --git a/cpp/src/arrow/flight/sql/odbc/install/versioninfo.rc b/cpp/src/arrow/flight/sql/odbc/install/versioninfo.rc new file mode 100644 index 000000000000..0377e37b9b0f --- /dev/null +++ b/cpp/src/arrow/flight/sql/odbc/install/versioninfo.rc @@ -0,0 +1,62 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +// -AL- todo: update version values +#define VER_FILEVERSION 3,10,349,0 +#define VER_FILEVERSION_STR "3.10.349.0\0" + +#define VER_PRODUCTVERSION 3,10,0,0 +#define VER_PRODUCTVERSION_STR "3.10\0" + +#define VER_COMPANYNAME_STR "TestTempCompany" +#define VER_PRODUCTNAME_STR "Arrow Flight SQL ODBC Driver" + + +#ifndef DEBUG +#define VER_DEBUG 0 +#else +#define VER_DEBUG VS_FF_DEBUG +#endif + +VS_VERSION_INFO VERSIONINFO +FILEVERSION VER_FILEVERSION +PRODUCTVERSION VER_PRODUCTVERSION +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904E4" + BEGIN + VALUE "CompanyName", VER_COMPANYNAME_STR + VALUE "FileVersion", VER_FILEVERSION_STR + VALUE "ProductName", VER_PRODUCTNAME_STR + VALUE "ProductVersion", VER_PRODUCTVERSION_STR + END + END + + BLOCK "VarFileInfo" + BEGIN + /* The following line should only be modified for localized versions. */ + /* It consists of any number of WORD,WORD pairs, with each pair */ + /* describing a language,codepage combination supported by the file. */ + /* */ + /* For example, a file might have values "0x409,1252" indicating that it */ + /* supports English language (0x409) in the Windows ANSI codepage (1252). */ + + VALUE "Translation", 0x409, 1252 + + END +END From 5f305e68d826c3d434630a879995eb33e2875f7b Mon Sep 17 00:00:00 2001 From: "Alina (Xi) Li" Date: Thu, 21 Aug 2025 16:56:22 -0700 Subject: [PATCH 2/8] Fix version.rc file * use `1 VERSIONINFO` for it to work properly --- .../flight/sql/odbc/install/versioninfo.rc | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/cpp/src/arrow/flight/sql/odbc/install/versioninfo.rc b/cpp/src/arrow/flight/sql/odbc/install/versioninfo.rc index 0377e37b9b0f..1ddcb66380a0 100644 --- a/cpp/src/arrow/flight/sql/odbc/install/versioninfo.rc +++ b/cpp/src/arrow/flight/sql/odbc/install/versioninfo.rc @@ -15,24 +15,17 @@ // specific language governing permissions and limitations // under the License. -// -AL- todo: update version values +// -AL- todo: update version values to use a template #define VER_FILEVERSION 3,10,349,0 -#define VER_FILEVERSION_STR "3.10.349.0\0" +#define VER_FILEVERSION_STR "3.10.349.0" -#define VER_PRODUCTVERSION 3,10,0,0 -#define VER_PRODUCTVERSION_STR "3.10\0" +#define VER_PRODUCTVERSION 3,10,12,0 +#define VER_PRODUCTVERSION_STR "3.10.12.0" #define VER_COMPANYNAME_STR "TestTempCompany" #define VER_PRODUCTNAME_STR "Arrow Flight SQL ODBC Driver" - -#ifndef DEBUG -#define VER_DEBUG 0 -#else -#define VER_DEBUG VS_FF_DEBUG -#endif - -VS_VERSION_INFO VERSIONINFO +1 VERSIONINFO FILEVERSION VER_FILEVERSION PRODUCTVERSION VER_PRODUCTVERSION BEGIN From bfba842a4419906e8be43594665fffb8959e7d90 Mon Sep 17 00:00:00 2001 From: "Alina (Xi) Li" Date: Fri, 22 Aug 2025 15:43:10 -0700 Subject: [PATCH 3/8] Set version variables --- cpp/src/arrow/flight/sql/odbc/CMakeLists.txt | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt b/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt index 25b81d2fe317..cc6901c52bfe 100644 --- a/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt +++ b/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt @@ -92,6 +92,10 @@ foreach(LIB_TARGET ${ARROW_FLIGHT_SQL_ODBC_LIBRARIES}) target_compile_definitions(${LIB_TARGET} PRIVATE ARROW_FLIGHT_SQL_ODBC_EXPORTING) endforeach() +set(ODBC_PACKAGE_VERSION_MAJOR "1") +set(ODBC_PACKAGE_VERSION_MINOR "0") +set(ODBC_PACKAGE_VERSION_PATCH "0") + # Construct ODBC Windows installer. Only Release installer is supported if(ARROW_FLIGHT_SQL_ODBC_INSTALLER) @@ -100,9 +104,9 @@ if(ARROW_FLIGHT_SQL_ODBC_INSTALLER) set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../LICENSE.txt") # Tentative version 1.0.0 - set(CPACK_PACKAGE_VERSION_MAJOR "1") - set(CPACK_PACKAGE_VERSION_MINOR "0") - set(CPACK_PACKAGE_VERSION_PATCH "0") + set(CPACK_PACKAGE_VERSION_MAJOR ${ODBC_PACKAGE_VERSION_MAJOR}) + set(CPACK_PACKAGE_VERSION_MINOR ${ODBC_PACKAGE_VERSION_MINOR}) + set(CPACK_PACKAGE_VERSION_PATCH ${ODBC_PACKAGE_VERSION_PATCH}) set(CPACK_PACKAGE_NAME "Apache Arrow Flight SQL ODBC") set(CPACK_PACKAGE_VENDOR "Apache Arrow") @@ -112,9 +116,6 @@ if(ARROW_FLIGHT_SQL_ODBC_INSTALLER) # TODO: set up `flight_sql_odbc_lib` component for macOS Installer # TODO: set up `flight_sql_odbc_lib` component for Linux Installer if(WIN32) - # -AL- get build errors - # target_sources(arrow_flight_sql_odbc SHARED install/versioninfo.rc) - install(DIRECTORY "${BUILD_OUTPUT_ROOT_DIRECTORY}${CMAKE_BUILD_TYPE}/" DESTINATION bin COMPONENT flight_sql_odbc_lib From 7d66b549a88543bbbd101824b01c43a16b6b7e7c Mon Sep 17 00:00:00 2001 From: "Alina (Xi) Li" Date: Fri, 22 Aug 2025 15:44:34 -0700 Subject: [PATCH 4/8] Change to use versioninfo.rc.in template --- cpp/src/arrow/flight/sql/odbc/CMakeLists.txt | 1 + .../sql/odbc/install/{versioninfo.rc => versioninfo.rc.in} | 0 2 files changed, 1 insertion(+) rename cpp/src/arrow/flight/sql/odbc/install/{versioninfo.rc => versioninfo.rc.in} (100%) diff --git a/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt b/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt index cc6901c52bfe..1c4c6dbda90c 100644 --- a/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt +++ b/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt @@ -57,6 +57,7 @@ arrow_install_all_headers("arrow/flight/sql/odbc") set(ARROW_FLIGHT_SQL_ODBC_SRCS entry_points.cc odbc_api.cc) if(WIN32) + configure_file("install/versioninfo.rc.in" "install/versioninfo.rc" @ONLY) list(APPEND ARROW_FLIGHT_SQL_ODBC_SRCS odbc.def install/versioninfo.rc) endif() diff --git a/cpp/src/arrow/flight/sql/odbc/install/versioninfo.rc b/cpp/src/arrow/flight/sql/odbc/install/versioninfo.rc.in similarity index 100% rename from cpp/src/arrow/flight/sql/odbc/install/versioninfo.rc rename to cpp/src/arrow/flight/sql/odbc/install/versioninfo.rc.in From bdb07af919143489a106e0cad40a1ee477998759 Mon Sep 17 00:00:00 2001 From: "Alina (Xi) Li" Date: Fri, 22 Aug 2025 15:45:44 -0700 Subject: [PATCH 5/8] Add `.rc` to gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index d9fda0a16413..64c713a74ed5 100644 --- a/.gitignore +++ b/.gitignore @@ -108,3 +108,6 @@ java/.mvn/.develocity/ # rat filtered_rat.txt rat.txt + +# rc +*.rc From 7d57f8f4eaee360b5648854a28497b26b3e6e3c8 Mon Sep 17 00:00:00 2001 From: "Alina (Xi) Li" Date: Fri, 22 Aug 2025 15:53:22 -0700 Subject: [PATCH 6/8] Add `@` variables to rc template --- cpp/src/arrow/flight/sql/odbc/CMakeLists.txt | 20 +++++++++++++------ .../flight/sql/odbc/install/versioninfo.rc.in | 12 +++++------ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt b/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt index 1c4c6dbda90c..59257d92ba52 100644 --- a/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt +++ b/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt @@ -54,10 +54,22 @@ add_subdirectory(tests) arrow_install_all_headers("arrow/flight/sql/odbc") +# ODBC Release information +set(ODBC_PACKAGE_VERSION_MAJOR "1") +set(ODBC_PACKAGE_VERSION_MINOR "0") +set(ODBC_PACKAGE_VERSION_PATCH "0") +set(ODBC_PACKAGE_NAME "Apache Arrow Flight SQL ODBC") +set(ODBC_PACKAGE_VENDOR "Apache Arrow") + set(ARROW_FLIGHT_SQL_ODBC_SRCS entry_points.cc odbc_api.cc) if(WIN32) + set(VER_FILEVERSION ${ODBC_PACKAGE_VERSION_MAJOR}.${ODBC_PACKAGE_VERSION_MINOR}.${ODBC_PACKAGE_VERSION_PATCH}) + set(VER_COMPANYNAME_STR ${ODBC_PACKAGE_VENDOR}) + set(VER_PRODUCTNAME_STR ${ODBC_PACKAGE_NAME}) + configure_file("install/versioninfo.rc.in" "install/versioninfo.rc" @ONLY) + list(APPEND ARROW_FLIGHT_SQL_ODBC_SRCS odbc.def install/versioninfo.rc) endif() @@ -93,10 +105,6 @@ foreach(LIB_TARGET ${ARROW_FLIGHT_SQL_ODBC_LIBRARIES}) target_compile_definitions(${LIB_TARGET} PRIVATE ARROW_FLIGHT_SQL_ODBC_EXPORTING) endforeach() -set(ODBC_PACKAGE_VERSION_MAJOR "1") -set(ODBC_PACKAGE_VERSION_MINOR "0") -set(ODBC_PACKAGE_VERSION_PATCH "0") - # Construct ODBC Windows installer. Only Release installer is supported if(ARROW_FLIGHT_SQL_ODBC_INSTALLER) @@ -109,8 +117,8 @@ if(ARROW_FLIGHT_SQL_ODBC_INSTALLER) set(CPACK_PACKAGE_VERSION_MINOR ${ODBC_PACKAGE_VERSION_MINOR}) set(CPACK_PACKAGE_VERSION_PATCH ${ODBC_PACKAGE_VERSION_PATCH}) - set(CPACK_PACKAGE_NAME "Apache Arrow Flight SQL ODBC") - set(CPACK_PACKAGE_VENDOR "Apache Arrow") + set(CPACK_PACKAGE_NAME ${ODBC_PACKAGE_NAME}) + set(CPACK_PACKAGE_VENDOR ${ODBC_PACKAGE_VENDOR}) set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Apache Arrow Flight SQL ODBC Driver") set(CPACK_PACKAGE_CONTACT "#TODO arrow maintainers") diff --git a/cpp/src/arrow/flight/sql/odbc/install/versioninfo.rc.in b/cpp/src/arrow/flight/sql/odbc/install/versioninfo.rc.in index 1ddcb66380a0..42ceab833554 100644 --- a/cpp/src/arrow/flight/sql/odbc/install/versioninfo.rc.in +++ b/cpp/src/arrow/flight/sql/odbc/install/versioninfo.rc.in @@ -16,14 +16,14 @@ // under the License. // -AL- todo: update version values to use a template -#define VER_FILEVERSION 3,10,349,0 -#define VER_FILEVERSION_STR "3.10.349.0" +#define VER_FILEVERSION @VER_FILEVERSION@ +#define VER_FILEVERSION_STR "@VER_FILEVERSION@\0" -#define VER_PRODUCTVERSION 3,10,12,0 -#define VER_PRODUCTVERSION_STR "3.10.12.0" +#define VER_PRODUCTVERSION @VER_FILEVERSION@ +#define VER_PRODUCTVERSION_STR "@VER_FILEVERSION@\0" -#define VER_COMPANYNAME_STR "TestTempCompany" -#define VER_PRODUCTNAME_STR "Arrow Flight SQL ODBC Driver" +#define VER_COMPANYNAME_STR "@VER_COMPANYNAME_STR@\0" +#define VER_PRODUCTNAME_STR "@VER_PRODUCTNAME_STR@\0" 1 VERSIONINFO FILEVERSION VER_FILEVERSION From 53d8b78a2f725f6fdcb253e9fa8332dbec81c47b Mon Sep 17 00:00:00 2001 From: "Alina (Xi) Li" Date: Fri, 22 Aug 2025 16:05:29 -0700 Subject: [PATCH 7/8] Adjust format --- cpp/src/arrow/flight/sql/odbc/CMakeLists.txt | 4 +++- cpp/src/arrow/flight/sql/odbc/install/versioninfo.rc.in | 1 - 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt b/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt index 59257d92ba52..69c3c27b465a 100644 --- a/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt +++ b/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt @@ -64,7 +64,9 @@ set(ODBC_PACKAGE_VENDOR "Apache Arrow") set(ARROW_FLIGHT_SQL_ODBC_SRCS entry_points.cc odbc_api.cc) if(WIN32) - set(VER_FILEVERSION ${ODBC_PACKAGE_VERSION_MAJOR}.${ODBC_PACKAGE_VERSION_MINOR}.${ODBC_PACKAGE_VERSION_PATCH}) + set(VER_FILEVERSION + ${ODBC_PACKAGE_VERSION_MAJOR}.${ODBC_PACKAGE_VERSION_MINOR}.${ODBC_PACKAGE_VERSION_PATCH} + ) set(VER_COMPANYNAME_STR ${ODBC_PACKAGE_VENDOR}) set(VER_PRODUCTNAME_STR ${ODBC_PACKAGE_NAME}) diff --git a/cpp/src/arrow/flight/sql/odbc/install/versioninfo.rc.in b/cpp/src/arrow/flight/sql/odbc/install/versioninfo.rc.in index 42ceab833554..a43dfe435a59 100644 --- a/cpp/src/arrow/flight/sql/odbc/install/versioninfo.rc.in +++ b/cpp/src/arrow/flight/sql/odbc/install/versioninfo.rc.in @@ -15,7 +15,6 @@ // specific language governing permissions and limitations // under the License. -// -AL- todo: update version values to use a template #define VER_FILEVERSION @VER_FILEVERSION@ #define VER_FILEVERSION_STR "@VER_FILEVERSION@\0" From a46ce5822c9c8440c39370028dd6229789a96c36 Mon Sep 17 00:00:00 2001 From: "Alina (Xi) Li" Date: Fri, 22 Aug 2025 17:06:32 -0700 Subject: [PATCH 8/8] Fix syntax error in rc file --- cpp/src/arrow/flight/sql/odbc/CMakeLists.txt | 3 +++ cpp/src/arrow/flight/sql/odbc/install/versioninfo.rc.in | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt b/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt index 69c3c27b465a..4e45181d8f9d 100644 --- a/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt +++ b/cpp/src/arrow/flight/sql/odbc/CMakeLists.txt @@ -65,6 +65,9 @@ set(ARROW_FLIGHT_SQL_ODBC_SRCS entry_points.cc odbc_api.cc) if(WIN32) set(VER_FILEVERSION + "${ODBC_PACKAGE_VERSION_MAJOR},${ODBC_PACKAGE_VERSION_MINOR},${ODBC_PACKAGE_VERSION_PATCH},0" + ) + set(VER_FILEVERSION_STR ${ODBC_PACKAGE_VERSION_MAJOR}.${ODBC_PACKAGE_VERSION_MINOR}.${ODBC_PACKAGE_VERSION_PATCH} ) set(VER_COMPANYNAME_STR ${ODBC_PACKAGE_VENDOR}) diff --git a/cpp/src/arrow/flight/sql/odbc/install/versioninfo.rc.in b/cpp/src/arrow/flight/sql/odbc/install/versioninfo.rc.in index a43dfe435a59..13024a7a50b5 100644 --- a/cpp/src/arrow/flight/sql/odbc/install/versioninfo.rc.in +++ b/cpp/src/arrow/flight/sql/odbc/install/versioninfo.rc.in @@ -16,10 +16,10 @@ // under the License. #define VER_FILEVERSION @VER_FILEVERSION@ -#define VER_FILEVERSION_STR "@VER_FILEVERSION@\0" +#define VER_FILEVERSION_STR "@VER_FILEVERSION_STR@\0" #define VER_PRODUCTVERSION @VER_FILEVERSION@ -#define VER_PRODUCTVERSION_STR "@VER_FILEVERSION@\0" +#define VER_PRODUCTVERSION_STR "@VER_FILEVERSION_STR@\0" #define VER_COMPANYNAME_STR "@VER_COMPANYNAME_STR@\0" #define VER_PRODUCTNAME_STR "@VER_PRODUCTNAME_STR@\0"