MINIFICPP-1405 - Update civetweb version, remove patch, disable building lua and duktape deps

MINIFICPP-1405 - Add patch fixing how civetweb checks available compiler
options

Signed-off-by: Arpad Boda <aboda@apache.org>

This closes #952

MINIFICPP-1391 Remove XCode 10.3 CI job, add 12.0

MINIFICPP-1391 Replace usages of set-env

set-env has been deprecated and triggers a warning; see
https://github.blog/changelog/2020-10-01-github-actions-deprecating-set-env-and-add-path-commands/

MINIFICPP-1391 Remove the CMAKE_BUILD_OPTIONS env setting

This environment setting doesn't do anything, and it gives the false
appearance as if the Pcap extension was enabled (it isn't).

As the Pcap extension is not in a good shape, I have left it disabled.

ENABLE_LUA_SCRIPTING seems to work (at least it compiles), so I enabled it
in the jobs where the intention was to enable it.

MINIFICPP-1391 Increase the time limit on the docker test

Cherry picked from main, where:
Signed-off-by: Arpad Boda <aboda@apache.org>

This closes #925
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 349cd7d..5b95da3 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,22 +1,6 @@
 name: "MiNiFi-CPP CI"
 on: [push, pull_request, workflow_dispatch]
 jobs:
-  macos_xcode_10_3:
-    name: "macos-xcode10.3"
-    runs-on: macos-10.15
-    timeout-minutes: 60
-    steps:
-      - id: checkout
-        uses: actions/checkout@v2
-      - id: install_dependencies
-        run: brew install ossp-uuid boost flex openssl python lua libpcap xz libssh2
-      - id: setup_env
-        run: |
-          echo -e "127.0.0.1\t$HOSTNAME" | sudo tee -a /etc/hosts > /dev/null
-          echo "::set-env name=CMAKE_BUILD_OPTIONS::-DENABLE_PCAP=TRUE -DENABLE_LUA_SCRIPTING=1"
-          sudo xcode-select -switch /Applications/Xcode_10.3.app
-      - id: build
-        run: ./bootstrap.sh -e -t && cd build  && cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_RULE_MESSAGES=OFF -DSTRICT_GSL_CHECKS=AUDIT .. && cmake --build . --parallel 4 && make test ARGS="--timeout 300 -j4 --output-on-failure" && make linter
   macos_xcode_11_2_1:
     name: "macos-xcode11.2.1"
     runs-on: macos-10.15
@@ -29,10 +13,24 @@
       - id: setup_env
         run: |
           echo -e "127.0.0.1\t$HOSTNAME" | sudo tee -a /etc/hosts > /dev/null
-          echo "::set-env name=CMAKE_BUILD_OPTIONS::-DENABLE_PCAP=TRUE -DENABLE_LUA_SCRIPTING=1"
           sudo xcode-select -switch /Applications/Xcode_11.2.1.app
       - id: build
-        run: ./bootstrap.sh -e -t && cd build  && cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_RULE_MESSAGES=OFF -DSTRICT_GSL_CHECKS=AUDIT .. && cmake --build . --parallel 4 && make test ARGS="--timeout 300 -j4 --output-on-failure" && make linter
+        run: ./bootstrap.sh -e -t && cd build  && cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_LUA_SCRIPTING=1 -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_RULE_MESSAGES=OFF -DSTRICT_GSL_CHECKS=AUDIT .. && cmake --build . --parallel 4 && make test ARGS="--timeout 300 -j4 --output-on-failure" && make linter
+  macos_xcode_12_0:
+    name: "macos-xcode12.0"
+    runs-on: macos-10.15
+    timeout-minutes: 60
+    steps:
+      - id: checkout
+        uses: actions/checkout@v2
+      - id: install_dependencies
+        run: brew install ossp-uuid boost flex openssl python lua libpcap xz libssh2
+      - id: setup_env
+        run: |
+          echo -e "127.0.0.1\t$HOSTNAME" | sudo tee -a /etc/hosts > /dev/null
+          sudo xcode-select -switch /Applications/Xcode_12.app
+      - id: build
+        run: ./bootstrap.sh -e -t && cd build  && cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_LUA_SCRIPTING=1 -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_RULE_MESSAGES=OFF -DSTRICT_GSL_CHECKS=AUDIT .. && cmake --build . --parallel 4 && make test ARGS="--timeout 300 -j4 --output-on-failure" && make linter
   windows:
     name: "windows"
     runs-on: windows-2016
@@ -77,9 +75,8 @@
             ubuntu-16.04-ccache-refs/heads/main-
       - id: install_deps
         run: |
-          echo "::set-env name=CMAKE_BUILD_OPTIONS::-DENABLE_PCAP=TRUE"
           sudo apt install -y ccache
-          echo "::set-env name=PATH::/usr/lib/ccache:$PATH"
+          echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
       - id: build
         run: ./bootstrap.sh -e -t && cd build  && cmake -DUSE_SHARED_LIBS= -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_RULE_MESSAGES=OFF -DSTRICT_GSL_CHECKS=AUDIT .. && cmake --build . --parallel 4   && make test ARGS="--timeout 300 -j2 --output-on-failure"
   ubuntu_16_04_gcc_4_8:
@@ -99,11 +96,10 @@
             ubuntu-16.04-gcc-4.8-ccache-refs/heads/main-
       - id: install_deps
         run: |
-          echo "::set-env name=CMAKE_BUILD_OPTIONS::-DENABLE_PCAP=TRUE"
           sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
           sudo apt update
           sudo apt install -y gcc-4.8 g++-4.8 bison flex libboost-all-dev uuid-dev openssl libcurl4-openssl-dev ccache libpython3-dev liblua5.1-0-dev libpcap-dev libssh2-1-dev
-          echo "::set-env name=PATH::/usr/lib/ccache:$PATH"
+          echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
           sudo unlink /usr/bin/gcc && sudo ln -s /usr/bin/gcc-4.8 /usr/bin/gcc
           sudo unlink /usr/bin/g++ && sudo ln -s /usr/bin/g++-4.8 /usr/bin/g++
       - id: build
@@ -125,9 +121,8 @@
             ubuntu-20.04-ccache-refs/heads/main-
       - id: install_deps
         run: |
-          echo "::set-env name=CMAKE_BUILD_OPTIONS::-DENABLE_PCAP=TRUE"
           sudo apt install -y ccache libfl-dev
-          echo "::set-env name=PATH::/usr/lib/ccache:$PATH"
+          echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
       - id: build
         run: ./bootstrap.sh -e -t && cd build  && cmake -DUSE_SHARED_LIBS= -DSTRICT_GSL_CHECKS=AUDIT .. && make -j4 VERBOSE=1  && make test ARGS="--timeout 300 -j2 --output-on-failure"
   ubuntu_16_04_all:
@@ -147,11 +142,10 @@
             ubuntu-16.04-all-ccache-refs/heads/main-
       - id: install_deps
         run: |
-          echo "::set-env name=CMAKE_BUILD_OPTIONS::-DENABLE_PCAP=TRUE"
           sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
           sudo apt update
           sudo apt install -y ccache openjdk-8-jdk maven
-          echo "::set-env name=PATH::/usr/lib/ccache:$PATH"
+          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"
   debian:
@@ -171,9 +165,8 @@
             debian-ccache-refs/heads/main-
       - id: install_deps
         run: |
-          echo "::set-env name=CMAKE_BUILD_OPTIONS::-DENABLE_PCAP=TRUE"
           sudo apt install -y ccache
-          echo "::set-env name=PATH::/usr/lib/ccache:$PATH"
+          echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
       - id: build
         run: mkdir -p build && cd build && cmake -DSTRICT_GSL_CHECKS=AUDIT .. && make debian
   centos:
@@ -193,9 +186,8 @@
             centos-ccache-refs/heads/main-
       - id: install_deps
         run: |
-          echo "::set-env name=CMAKE_BUILD_OPTIONS::-DENABLE_PCAP=TRUE"
           sudo apt install -y ccache
-          echo "::set-env name=PATH::/usr/lib/ccache:$PATH"
+          echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
       - id: build
         run: mkdir -p build && cd build && cmake -DSTRICT_GSL_CHECKS=AUDIT .. && make centos
   fedora:
@@ -215,9 +207,8 @@
             fedora-ccache-refs/heads/main-
       - id: install_deps
         run: |
-          echo "::set-env name=CMAKE_BUILD_OPTIONS::-DENABLE_PCAP=TRUE"
           sudo apt install -y ccache
-          echo "::set-env name=PATH::/usr/lib/ccache:$PATH"
+          echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
       - id: build
         run: mkdir -p build && cd build && cmake -DSTRICT_GSL_CHECKS=AUDIT .. && make fedora
   ubuntu_18_04:
@@ -237,9 +228,8 @@
             ubuntu-18.04-ccache-refs/heads/main
       - id: install_deps
         run: |
-          echo "::set-env name=CMAKE_BUILD_OPTIONS::-DENABLE_PCAP=TRUE"
           sudo apt install -y ccache
-          echo "::set-env name=PATH::/usr/lib/ccache:$PATH"
+          echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
       - id: build
         run: mkdir -p build && cd build && cmake -DSTRICT_GSL_CHECKS=AUDIT .. && make u18
   ubuntu_16_04_shared:
@@ -259,8 +249,7 @@
             ubuntu-16.04-shared-ccache-refs/heads/main-
       - id: install_deps
         run: |
-          echo "::set-env name=CMAKE_BUILD_OPTIONS::-DENABLE_PCAP=TRUE"
           sudo apt install -y ccache
-          echo "::set-env name=PATH::/usr/lib/ccache:$PATH"
+          echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
       - id: build
         run: ./bootstrap.sh -e -t && cd build  && cmake -DUSE_SHARED_LIBS=ON -DSTRICT_GSL_CHECKS=AUDIT .. &&  cmake --build . --parallel 4  && make test ARGS="--timeout 300 -j4 --output-on-failure"
diff --git a/cmake/BundledCivetWeb.cmake b/cmake/BundledCivetWeb.cmake
index 7ed493e..38c9163 100644
--- a/cmake/BundledCivetWeb.cmake
+++ b/cmake/BundledCivetWeb.cmake
@@ -21,17 +21,21 @@
     # Define patch step
     set(PC "${Patch_EXECUTABLE}" -p1 -i "${SOURCE_DIR}/thirdparty/civetweb/civetweb.patch")
 
+    set(LIBDIR "lib")
     # Define byproducts
     if (WIN32)
         set(SUFFIX "lib")
     else()
 		set(PREFIX "lib")
-        set(SUFFIX "a")
+      include(GNUInstallDirs)
+      set(LIBDIR "${CMAKE_INSTALL_LIBDIR}")
+      set(SUFFIX "a")
+
     endif()
 
     set(BYPRODUCTS
-            "lib/${PREFIX}civetweb.${SUFFIX}"
-            "lib/${PREFIX}civetweb-cpp.${SUFFIX}"
+            "${LIBDIR}/${PREFIX}civetweb.${SUFFIX}"
+            "${LIBDIR}/${PREFIX}civetweb-cpp.${SUFFIX}"
             )
 
     set(CIVETWEB_BIN_DIR "${BINARY_DIR}/thirdparty/civetweb-install/" CACHE STRING "" FORCE)
@@ -44,11 +48,12 @@
     set(CIVETWEB_CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS}
             "-DCMAKE_INSTALL_PREFIX=${CIVETWEB_BIN_DIR}"
             -DCIVETWEB_ENABLE_SSL_DYNAMIC_LOADING=OFF
+            -DCIVETWEB_BUILD_TESTING=OFF
+            -DCIVETWEB_ENABLE_DUKTAPE=OFF
+            -DCIVETWEB_ENABLE_LUA=OFF
             -DCIVETWEB_ENABLE_CXX=ON
-            -DBUILD_TESTING=OFF
             -DCIVETWEB_ALLOW_WARNINGS=ON
-            -DCIVETWEB_ENABLE_ASAN=OFF # TODO
-            )
+            -DCIVETWEB_ENABLE_ASAN=OFF)
     if (OPENSSL_OFF)
         list(APPEND CIVETWEB_CMAKE_ARGS -DCIVETWEB_ENABLE_SSL=OFF)
     endif()
@@ -58,8 +63,8 @@
     # Build project
     ExternalProject_Add(
             civetweb-external
-            URL "https://github.com/civetweb/civetweb/archive/v1.10.tar.gz"
-            URL_HASH "SHA256=e6958f005aa01b02645bd3ff9760dd085e83d30530cdd97b584632419195bea5"
+            URL "https://github.com/civetweb/civetweb/archive/v1.12.tar.gz"
+            URL_HASH "SHA256=8cab1e2ad8fb3e2e81fed0b2321a5afbd7269a644c44ed4c3607e0a212c6d9e1"
             SOURCE_DIR "${BINARY_DIR}/thirdparty/civetweb-src"
             LIST_SEPARATOR % # This is needed for passing semicolon-separated lists
             CMAKE_ARGS ${CIVETWEB_CMAKE_ARGS}
@@ -76,7 +81,7 @@
     # Set variables
     set(CIVETWEB_FOUND "YES" CACHE STRING "" FORCE)
     set(CIVETWEB_INCLUDE_DIR "${CIVETWEB_BIN_DIR}/include" CACHE STRING "" FORCE)
-    set(CIVETWEB_LIBRARIES "${CIVETWEB_BIN_DIR}/lib/${PREFIX}civetweb.${SUFFIX}" "${CIVETWEB_BIN_DIR}/lib/${PREFIX}civetweb-cpp.${SUFFIX}" CACHE STRING "" FORCE)
+    set(CIVETWEB_LIBRARIES "${CIVETWEB_BIN_DIR}/${LIBDIR}/${PREFIX}civetweb.${SUFFIX}" "${CIVETWEB_BIN_DIR}/${LIBDIR}/${PREFIX}civetweb-cpp.${SUFFIX}" CACHE STRING "" FORCE)
 
     # Set exported variables for FindPackage.cmake
     set(PASSTHROUGH_VARIABLES ${PASSTHROUGH_VARIABLES} "-DEXPORTED_CIVETWEB_INCLUDE_DIR=${CIVETWEB_INCLUDE_DIR}" CACHE STRING "" FORCE)
@@ -86,7 +91,7 @@
     file(MAKE_DIRECTORY ${CIVETWEB_INCLUDE_DIR})
 
     add_library(CIVETWEB::c-library STATIC IMPORTED)
-    set_target_properties(CIVETWEB::c-library PROPERTIES IMPORTED_LOCATION "${CIVETWEB_BIN_DIR}/lib/${PREFIX}civetweb.${SUFFIX}")
+    set_target_properties(CIVETWEB::c-library PROPERTIES IMPORTED_LOCATION "${CIVETWEB_BIN_DIR}/${LIBDIR}/${PREFIX}civetweb.${SUFFIX}")
     set_property(TARGET CIVETWEB::c-library APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${CIVETWEB_INCLUDE_DIR})
     add_dependencies(CIVETWEB::c-library civetweb-external)
     if (NOT OPENSSL_OFF)
@@ -94,7 +99,7 @@
     endif()
 
     add_library(CIVETWEB::civetweb-cpp STATIC IMPORTED)
-    set_target_properties(CIVETWEB::civetweb-cpp PROPERTIES IMPORTED_LOCATION "${CIVETWEB_BIN_DIR}/lib/${PREFIX}civetweb-cpp.${SUFFIX}")
+    set_target_properties(CIVETWEB::civetweb-cpp PROPERTIES IMPORTED_LOCATION "${CIVETWEB_BIN_DIR}/${LIBDIR}/${PREFIX}civetweb-cpp.${SUFFIX}")
     set_property(TARGET CIVETWEB::civetweb-cpp APPEND PROPERTY INTERFACE_LINK_LIBRARIES CIVETWEB::c-library)
     add_dependencies(CIVETWEB::civetweb-cpp civetweb-external)
 endfunction(use_bundled_civetweb)
diff --git a/thirdparty/civetweb/civetweb.patch b/thirdparty/civetweb/civetweb.patch
index c55ce58..dc574e4 100644
--- a/thirdparty/civetweb/civetweb.patch
+++ b/thirdparty/civetweb/civetweb.patch
@@ -1,61 +1,29 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 2c08bd28..ccb4fd7f 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -101,7 +101,7 @@ message(STATUS "Lua CGI support - ${CIVETWEB_ENABLE_LUA}")
- # Enable installing CivetWeb executables
- option(CIVETWEB_INSTALL_EXECUTABLE "Enable installing CivetWeb executable" ON)
- mark_as_advanced(FORCE CIVETWEB_INSTALL_EXECUTABLE) # Advanced users can disable
--message(STATUS "Executable installation - ${CIVETWEB_INSTALL_EXECUTABLE}") 
-+message(STATUS "Executable installation - ${CIVETWEB_INSTALL_EXECUTABLE}")
- 
- # Allow builds to complete with warnings (do not set -Werror)
- # CivetWeb Linux support is stable:
-@@ -294,8 +294,8 @@ if (MINGW)
- endif()
- if (NOT CIVETWEB_ALLOW_WARNINGS)
-   add_c_compiler_flag(-Werror)
-+  add_c_compiler_flag(/WX)
- endif()
--add_c_compiler_flag(/WX)
- add_c_compiler_flag(-pedantic-errors)
- add_c_compiler_flag(-fvisibility=hidden)
- add_c_compiler_flag(-fstack-protector-strong RELEASE)
-diff --git a/src/civetweb.c b/src/civetweb.c
-index c0ccbaa2..c692d1c8 100644
---- a/src/civetweb.c
-+++ b/src/civetweb.c
-@@ -14202,7 +14202,7 @@ ssl_get_protocol(int version_id)
-  * https://www.openssl.org/docs/man1.1.0/ssl/SSL_set_info_callback.html
-  * https://linux.die.net/man/3/ssl_set_info_callback */
- static void
--ssl_info_callback(SSL *ssl, int what, int ret)
-+ssl_info_callback(const SSL *ssl, int what, int ret)
- {
- 	(void)ret;
- 
-@@ -16237,10 +16237,13 @@ worker_thread_run(struct worker_thread_args *thread_args)
- 					mg_free(conn->request_info.client_cert);
- 					conn->request_info.client_cert = 0;
- 				}
--			}
-+			} else {
-+        /* make sure the connection is cleaned up on SSL failure */
-+        close_connection(conn);
-+      }
- #endif
--		} else {
--			/* process HTTP connection */
-+    } else {
-+      /* process HTTP connection */
- 			process_new_connection(conn);
- 		}
- 
-@@ -17249,7 +17252,6 @@ mg_get_system_info_impl(char *buffer, int buflen)
- #pragma GCC diagnostic push
- /* Disable bogus compiler warning -Wdate-time */
- #pragma GCC diagnostic ignored "-Wall"
--#pragma GCC diagnostic ignored "-Werror"
- #endif
- 		mg_snprintf(NULL,
- 		            NULL,
+--- a/cmake/AddCCompilerFlag.cmake
++++ b/cmake/AddCCompilerFlag.cmake
+@@ -24,9 +24,8 @@ function(add_c_compiler_flag FLAG)
+   string(REPLACE "+" "X" SANITIZED_FLAG ${SANITIZED_FLAG})
+   string(REGEX REPLACE "[^A-Za-z_0-9]" "_" SANITIZED_FLAG ${SANITIZED_FLAG})
+   string(REGEX REPLACE "_+" "_" SANITIZED_FLAG ${SANITIZED_FLAG})
+-  set(CMAKE_REQUIRED_FLAGS "${FLAG}")
+-  check_c_compiler_flag("" ${SANITIZED_FLAG})
+-  if(${SANITIZED_FLAG})
++  check_c_compiler_flag(${SANITIZED_FLAG} NO_DIAGNOSTICS_PRODUCED)
++  if(${NO_DIAGNOSTICS_PRODUCED})
+     set(VARIANT ${ARGV1})
+     if(ARGV1)
+       string(REGEX REPLACE "[^A-Za-z_0-9]" "_" VARIANT "${VARIANT}")
+diff --git a/cmake/AddCXXCompilerFlag.cmake b/cmake/AddCXXCompilerFlag.cmake
+--- a/cmake/AddCXXCompilerFlag.cmake
++++ b/cmake/AddCXXCompilerFlag.cmake
+@@ -24,9 +24,8 @@ function(add_cxx_compiler_flag FLAG)
+   string(REPLACE "+" "X" SANITIZED_FLAG ${SANITIZED_FLAG})
+   string(REGEX REPLACE "[^A-Za-z_0-9]" "_" SANITIZED_FLAG ${SANITIZED_FLAG})
+   string(REGEX REPLACE "_+" "_" SANITIZED_FLAG ${SANITIZED_FLAG})
+-  set(CMAKE_REQUIRED_FLAGS "${FLAG}")
+-  check_cxx_compiler_flag("" ${SANITIZED_FLAG})
+-  if(${SANITIZED_FLAG})
++  check_cxx_compiler_flag(${SANITIZED_FLAG} NO_DIAGNOSTICS_PRODUCED)
++  if(${NO_DIAGNOSTICS_PRODUCED})
+     set(VARIANT ${ARGV1})
+     if(ARGV1)
+       string(REGEX REPLACE "[^A-Za-z_0-9]" "_" VARIANT "${VARIANT}")