This is an automated email from the ASF dual-hosted git repository.

szaszm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git


The following commit(s) were added to refs/heads/main by this push:
     new 61fc357  MINIFICPP-1446 - SQL extension doesn't compile on Debian
61fc357 is described below

commit 61fc357830f649b7bde6eb123c96f739e86f0ad4
Author: Arpad Boda <[email protected]>
AuthorDate: Tue Jan 19 12:17:27 2021 +0100

    MINIFICPP-1446 - SQL extension doesn't compile on Debian
    
    - ossp-uuid: check if patch is already applied instead of just ignoring 
errors
    - AWS Win build fix
    - Compile SQL in Win and Ubuntu-all CI, also compile AWS on Win
    
    This closes #973
    
    Signed-off-by: Marton Szasz <[email protected]>
    
    Co-authored-by: Marton Szasz <[email protected]>
    Co-authored-by: Gabor Gyimesi <[email protected]>
---
 .github/workflows/ci.yml                      |  4 ++--
 cmake/BundledOSSPUUID.cmake                   |  7 +++++--
 extensions/aws/processors/PutS3Object.h       |  2 +-
 extensions/aws/utils/AWSInitializer.h         |  4 ++++
 extensions/expression-language/Expression.cpp |  8 ++++++++
 extensions/sql/CMakeLists.txt                 | 20 ++++++++------------
 6 files changed, 28 insertions(+), 17 deletions(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 0712203..1e00d42 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -47,7 +47,7 @@ jobs:
       - name: Setup PATH
         uses: microsoft/[email protected]
       - id: build
-        run: win_build_vs.bat build /CI
+        run: win_build_vs.bat build /CI /S /A
         shell: cmd
   windows_VS2019:
     name: "windows-vs2019"
@@ -150,7 +150,7 @@ jobs:
           sudo apt install -y ccache openjdk-8-jdk maven
           echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
       - id: build
-        run: sudo mount tmpfs -t tmpfs /tmp && ./bootstrap.sh -e -t && cd 
build  && cmake -DUSE_SHARED_LIBS= -DENABLE_LIBRDKAFKA=ON -DENABLE_OPC=ON 
-DENABLE_SFTP=ON -DENABLE_MQTT=ON -DENABLE_COAP=ON -DENABLE_PYTHON=ON 
-DSTRICT_GSL_CHECKS=AUDIT .. &&  cmake --build . --parallel 4  && make test 
ARGS="--timeout 300 -j8 --output-on-failure"
+        run: sudo mount tmpfs -t tmpfs /tmp && ./bootstrap.sh -e -t && cd 
build  && cmake -DUSE_SHARED_LIBS= -DENABLE_LIBRDKAFKA=ON -DENABLE_OPC=ON 
-DENABLE_SFTP=ON -DENABLE_MQTT=ON -DENABLE_COAP=ON -DENABLE_PYTHON=ON 
-DENABLE_SQL=ON -DSTRICT_GSL_CHECKS=AUDIT .. &&  cmake --build . --parallel 4  
&& make test ARGS="--timeout 300 -j8 --output-on-failure"
   debian:
     name: "debian"
     runs-on: ubuntu-18.04
diff --git a/cmake/BundledOSSPUUID.cmake b/cmake/BundledOSSPUUID.cmake
index 95b1bb4..1bf311e 100644
--- a/cmake/BundledOSSPUUID.cmake
+++ b/cmake/BundledOSSPUUID.cmake
@@ -21,8 +21,11 @@ function(use_bundled_osspuuid SOURCE_DIR BINARY_DIR)
     message("Using bundled ossp-uuid")
 
     # Define patch step
-    set(PC "${Patch_EXECUTABLE}" -p1 -i 
"${SOURCE_DIR}/thirdparty/ossp-uuid/ossp-uuid-mac-fix.patch" &&
-           "${Patch_EXECUTABLE}" -p1 -i 
"${SOURCE_DIR}/thirdparty/ossp-uuid/ossp-uuid-no-prog.patch")
+    # if already applied, reverse application should succeed
+    set(PC bash -c "set -x && (\"${Patch_EXECUTABLE}\" -p1 -N -i 
\"${SOURCE_DIR}/thirdparty/ossp-uuid/ossp-uuid-mac-fix.patch\" &&\
+            \"${Patch_EXECUTABLE}\" -p1 -N -i 
\"${SOURCE_DIR}/thirdparty/ossp-uuid/ossp-uuid-no-prog.patch\") ||\
+            (\"${Patch_EXECUTABLE}\" -p1 -R --dry-run -i 
\"${SOURCE_DIR}/thirdparty/ossp-uuid/ossp-uuid-mac-fix.patch\" &&\
+            \"${Patch_EXECUTABLE}\" -p1 -R --dry-run -i 
\"${SOURCE_DIR}/thirdparty/ossp-uuid/ossp-uuid-no-prog.patch\")")
 
     # Define byproducts
     set(BYPRODUCTS "lib/libuuid.a"
diff --git a/extensions/aws/processors/PutS3Object.h 
b/extensions/aws/processors/PutS3Object.h
index 1d5c62a..1251153 100644
--- a/extensions/aws/processors/PutS3Object.h
+++ b/extensions/aws/processors/PutS3Object.h
@@ -94,7 +94,7 @@ class PutS3Object : public S3Processor {
       buffer.reserve(BUFFER_SIZE);
       read_size_ = 0;
       while (read_size_ < flow_size_) {
-        auto next_read_size = std::min(flow_size_ - read_size_, BUFFER_SIZE);
+        auto next_read_size = (std::min)(flow_size_ - read_size_, BUFFER_SIZE);
         int read_ret = stream->read(buffer.data(), next_read_size);
         if (read_ret < 0) {
           return -1;
diff --git a/extensions/aws/utils/AWSInitializer.h 
b/extensions/aws/utils/AWSInitializer.h
index ced4ff1..64e07c6 100755
--- a/extensions/aws/utils/AWSInitializer.h
+++ b/extensions/aws/utils/AWSInitializer.h
@@ -30,6 +30,10 @@
 #undef GetMessage
 #endif
 
+#if defined(WIN32) && defined(GetObject)
+#undef GetObject
+#endif
+
 namespace org {
 namespace apache {
 namespace nifi {
diff --git a/extensions/expression-language/Expression.cpp 
b/extensions/expression-language/Expression.cpp
index 312eb6e..545983f 100644
--- a/extensions/expression-language/Expression.cpp
+++ b/extensions/expression-language/Expression.cpp
@@ -30,7 +30,15 @@
 #include <utils/OsUtils.h>
 #include <expression/Expression.h>
 #include <regex>
+
 #ifndef DISABLE_CURL
+#ifdef WIN32
+#pragma comment(lib, "wldap32.lib" )
+#pragma comment(lib, "crypt32.lib" )
+#pragma comment(lib, "Ws2_32.lib")
+
+#define CURL_STATICLIB
+#endif
 #include <curl/curl.h>
 #endif
 
diff --git a/extensions/sql/CMakeLists.txt b/extensions/sql/CMakeLists.txt
index 41ad6e7..bc6a6e9 100644
--- a/extensions/sql/CMakeLists.txt
+++ b/extensions/sql/CMakeLists.txt
@@ -36,12 +36,7 @@ else()
        # Build iODBC
 
        # Define byproducts
-       if(NOT APPLE)
-               include(GNUInstallDirs)
-               set(IODBC_BYPRODUCT "${CMAKE_INSTALL_LIBDIR}/libiodbc.a")
-       else()
-               set(IODBC_BYPRODUCT "lib/libiodbc.a")
-       endif()
+       set(IODBC_BYPRODUCT "lib/libiodbc.a")
 
        set(IODBC_BYPRODUCT_DIR 
"${CMAKE_CURRENT_BINARY_DIR}/thirdparty/iodbc-install/")
 
@@ -89,11 +84,12 @@ find_package(Patch)
 set(PC "${Patch_EXECUTABLE}" -p1 -i 
"${CMAKE_CURRENT_SOURCE_DIR}/patch/soci.patch")
 
 # Define byproducts
-if(NOT APPLE AND CMAKE_SIZEOF_VOID_P EQUAL 8)
-       include(GNUInstallDirs)
-       set(LIBDIR "${CMAKE_INSTALL_LIBDIR}")
-else()
+# This should be based on GNUInstallDirs, but it's done wrong in Soci:
+# https://github.com/SOCI/soci/blob/release/4.0/CMakeLists.txt#L140
+if(APPLE OR CMAKE_SIZEOF_VOID_P EQUAL 4)
        set(LIBDIR "lib")
+else()
+       set(LIBDIR "lib64")
 endif()
 
 if (WIN32)
@@ -155,12 +151,12 @@ set(SOCI_LIBRARIES "${SOCI_LIBRARIES_LIST}" CACHE STRING 
"" FORCE)
 file(MAKE_DIRECTORY ${SOCI_INCLUDE_DIR})
 
 add_library(SOCI::libsoci_core STATIC IMPORTED)
-set_target_properties(SOCI::libsoci_core PROPERTIES IMPORTED_LOCATION 
"${SOCI_BYPRODUCT_DIR}/lib${LIBSUFFIX}/libsoci_core${BYPRODUCT_SUFFIX}")
+set_target_properties(SOCI::libsoci_core PROPERTIES IMPORTED_LOCATION 
"${SOCI_BYPRODUCT_DIR}/${LIBDIR}/libsoci_core${BYPRODUCT_SUFFIX}")
 set_target_properties(SOCI::libsoci_core PROPERTIES 
INTERFACE_INCLUDE_DIRECTORIES "${SOCI_INCLUDE_DIR}")
 add_dependencies(SOCI::libsoci_core soci-external)
 
 add_library(SOCI::libsoci_odbc STATIC IMPORTED)
-set_target_properties(SOCI::libsoci_odbc PROPERTIES IMPORTED_LOCATION 
"${SOCI_BYPRODUCT_DIR}/lib${LIBSUFFIX}/libsoci_odbc${BYPRODUCT_SUFFIX}")
+set_target_properties(SOCI::libsoci_odbc PROPERTIES IMPORTED_LOCATION 
"${SOCI_BYPRODUCT_DIR}/${LIBDIR}/libsoci_odbc${BYPRODUCT_SUFFIX}")
 set_target_properties(SOCI::libsoci_odbc PROPERTIES 
INTERFACE_INCLUDE_DIRECTORIES "${SOCI_INCLUDE_DIR}")
 add_dependencies(SOCI::libsoci_odbc soci-external)
 set_property(TARGET SOCI::libsoci_odbc APPEND PROPERTY 
INTERFACE_LINK_LIBRARIES SOCI::libsoci_core)

Reply via email to