[ 
https://issues.apache.org/jira/browse/MINIFICPP-1405?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Adam Hunyadi updated MINIFICPP-1405:
------------------------------------
    Description: 
*Background:*

Building civetweb is unstable on certain environment (our CI jobs show errors 
on builds on Ubuntu builds only).
{code:bash|title=Example build failure with Ninja and clang-11}
[1/445] Performing build step for 'civetweb-external'
 FAILED: 
civetweb-external-prefix/src/civetweb-external-stamp/civetweb-external-build 
thirdparty/civetweb-install/lib/libcivetweb.a 
thirdparty/civetweb-install/lib/libcivetweb-cpp.a 
 cd 
/home/oceanfish81/Desktop/nifi-minifi-cpp/build/civetweb-external-prefix/src/civetweb-external-build
 && /usr/local/bin/cmake --build . && /usr/local/bin/cmake -E touch 
/home/oceanfish81/Desktop/nifi-minifi-cpp/build/civetweb-external-prefix/src/civetweb-external-stamp/civetweb-external-build
 [1/6] Building CXX object src/CMakeFiles/civetweb-cpp.dir/CivetServer.cpp.o
 FAILED: src/CMakeFiles/civetweb-cpp.dir/CivetServer.cpp.o 
 /usr/bin/clang++-11 -DNO_SSL_DL -DUSE_STACK_SIZE=102400 
-I/home/oceanfish81/Desktop/nifi-minifi-cpp/build/thirdparty/libressl-install/include
 
-I/home/oceanfish81/Desktop/nifi-minifi-cpp/build/thirdparty/civetweb-src/include
 -std=c++11 -std=c++14 -Wall -Wextra -Wshadow -Wmissing-prototypes -Weverything 
/W4 -Wno-padded /Wd4820 -Wno-unused-macros -Wno-format-nonliteral /WX 
-pedantic-errors -fvisibility=hidden -Os -DNDEBUG -fPIC -MD -MT 
src/CMakeFiles/civetweb-cpp.dir/CivetServer.cpp.o -MF 
src/CMakeFiles/civetweb-cpp.dir/CivetServer.cpp.o.d -o 
src/CMakeFiles/civetweb-cpp.dir/CivetServer.cpp.o -c 
/home/oceanfish81/Desktop/nifi-minifi-cpp/build/thirdparty/civetweb-src/src/CivetServer.cpp
 clang: error: no such file or directory: '/W4'
 clang: error: no such file or directory: '/Wd4820'
 clang: error: no such file or directory: '/WX'
 [2/6] Building C object src/CMakeFiles/c-executable.dir/main.c.o
 FAILED: src/CMakeFiles/c-executable.dir/main.c.o 
 /usr/bin/clang-11 -DNO_SSL_DL -DUSE_STACK_SIZE=102400 
-I/home/oceanfish81/Desktop/nifi-minifi-cpp/build/thirdparty/libressl-install/include
 
-I/home/oceanfish81/Desktop/nifi-minifi-cpp/build/thirdparty/civetweb-src/include
 -std=c11 -Wall -Wextra -Wshadow -Wconversion -Wmissing-prototypes -Weverything 
-Wparentheses /W4 -Wno-padded -Wno-unused-macros -Wno-reserved-id-macros 
-Wno-format-nonliteral -Wno-date-time -Wno-cast-qual /Wd4820 -pedantic-errors 
-fvisibility=hidden -Os -DNDEBUG -fPIE -MD -MT 
src/CMakeFiles/c-executable.dir/main.c.o -MF 
src/CMakeFiles/c-executable.dir/main.c.o.d -o 
src/CMakeFiles/c-executable.dir/main.c.o -c 
/home/oceanfish81/Desktop/nifi-minifi-cpp/build/thirdparty/civetweb-src/src/main.c
 clang: error: no such file or directory: '/W4'
 clang: error: no such file or directory: '/Wd4820'
 ninja: build stopped: subcommand failed.
 ninja: build stopped: subcommand failed.
{code}

*Proposal:*

Update civetweb version, see if the problem persists. If it still does, patch 
out all MSVC warning flags from the civetweb cmake file.

*Update:*

Seems like civetweb had an issue with checking available compiler flags. I 
opened a PR to fix it in their repo, and backported the change to our version.
My speculation of when this bug happens is that since their code used to set 
CMAKE_REQUIRED_FLAGS to given flag values like this:

{code:bash|title=Example build failure with Ninja and clang-11}
set(CMAKE_REQUIRED_FLAGS "${FLAG}")
{code}

  was:
*Background:*

Building civetweb is unstable on certain environment (our CI jobs show errors 
on builds on Ubuntu builds only).
{code:bash|title=Example build failure with Ninja and clang-11}
[1/445] Performing build step for 'civetweb-external'
 FAILED: 
civetweb-external-prefix/src/civetweb-external-stamp/civetweb-external-build 
thirdparty/civetweb-install/lib/libcivetweb.a 
thirdparty/civetweb-install/lib/libcivetweb-cpp.a 
 cd 
/home/oceanfish81/Desktop/nifi-minifi-cpp/build/civetweb-external-prefix/src/civetweb-external-build
 && /usr/local/bin/cmake --build . && /usr/local/bin/cmake -E touch 
/home/oceanfish81/Desktop/nifi-minifi-cpp/build/civetweb-external-prefix/src/civetweb-external-stamp/civetweb-external-build
 [1/6] Building CXX object src/CMakeFiles/civetweb-cpp.dir/CivetServer.cpp.o
 FAILED: src/CMakeFiles/civetweb-cpp.dir/CivetServer.cpp.o 
 /usr/bin/clang++-11 -DNO_SSL_DL -DUSE_STACK_SIZE=102400 
-I/home/oceanfish81/Desktop/nifi-minifi-cpp/build/thirdparty/libressl-install/include
 
-I/home/oceanfish81/Desktop/nifi-minifi-cpp/build/thirdparty/civetweb-src/include
 -std=c++11 -std=c++14 -Wall -Wextra -Wshadow -Wmissing-prototypes -Weverything 
/W4 -Wno-padded /Wd4820 -Wno-unused-macros -Wno-format-nonliteral /WX 
-pedantic-errors -fvisibility=hidden -Os -DNDEBUG -fPIC -MD -MT 
src/CMakeFiles/civetweb-cpp.dir/CivetServer.cpp.o -MF 
src/CMakeFiles/civetweb-cpp.dir/CivetServer.cpp.o.d -o 
src/CMakeFiles/civetweb-cpp.dir/CivetServer.cpp.o -c 
/home/oceanfish81/Desktop/nifi-minifi-cpp/build/thirdparty/civetweb-src/src/CivetServer.cpp
 clang: error: no such file or directory: '/W4'
 clang: error: no such file or directory: '/Wd4820'
 clang: error: no such file or directory: '/WX'
 [2/6] Building C object src/CMakeFiles/c-executable.dir/main.c.o
 FAILED: src/CMakeFiles/c-executable.dir/main.c.o 
 /usr/bin/clang-11 -DNO_SSL_DL -DUSE_STACK_SIZE=102400 
-I/home/oceanfish81/Desktop/nifi-minifi-cpp/build/thirdparty/libressl-install/include
 
-I/home/oceanfish81/Desktop/nifi-minifi-cpp/build/thirdparty/civetweb-src/include
 -std=c11 -Wall -Wextra -Wshadow -Wconversion -Wmissing-prototypes -Weverything 
-Wparentheses /W4 -Wno-padded -Wno-unused-macros -Wno-reserved-id-macros 
-Wno-format-nonliteral -Wno-date-time -Wno-cast-qual /Wd4820 -pedantic-errors 
-fvisibility=hidden -Os -DNDEBUG -fPIE -MD -MT 
src/CMakeFiles/c-executable.dir/main.c.o -MF 
src/CMakeFiles/c-executable.dir/main.c.o.d -o 
src/CMakeFiles/c-executable.dir/main.c.o -c 
/home/oceanfish81/Desktop/nifi-minifi-cpp/build/thirdparty/civetweb-src/src/main.c
 clang: error: no such file or directory: '/W4'
 clang: error: no such file or directory: '/Wd4820'
 ninja: build stopped: subcommand failed.
 ninja: build stopped: subcommand failed.
{code}

*Proposal:*

Update civetweb version, see if the problem persists. If it still does, patch 
out all MSVC warning flags from the civetweb cmake file. 


> Fix improperly defined warning flags for civetweb
> -------------------------------------------------
>
>                 Key: MINIFICPP-1405
>                 URL: https://issues.apache.org/jira/browse/MINIFICPP-1405
>             Project: Apache NiFi MiNiFi C++
>          Issue Type: Bug
>    Affects Versions: 1.0.0
>         Environment: $ uname -a
> Linux laptop 4.15.0-123-generic #126~16.04.1-Ubuntu SMP Wed Oct 21 13:51:51 
> UTC 2020 i686 i686 i686 GNU/Linux
> $ clang-11 --version
> Ubuntu clang version 
> 11.0.0-++20200721055954+cebd637c886-1~exp1~20200721161335.13
> Target: i686-pc-linux-gnu
> Thread model: posix
> $ cmake --version
> cmake version 3.19.0-rc2
> $ ninja --version
> 1.10.0.git.kitware.jobserver-1
>            Reporter: Ivan Serdyuk
>            Assignee: Adam Hunyadi
>            Priority: Major
>              Labels: Linux, MiNiFi-CPP-Hygiene, Ubuntu_16.04, linux, ubuntu
>         Attachments: build.ninja
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> *Background:*
> Building civetweb is unstable on certain environment (our CI jobs show errors 
> on builds on Ubuntu builds only).
> {code:bash|title=Example build failure with Ninja and clang-11}
> [1/445] Performing build step for 'civetweb-external'
>  FAILED: 
> civetweb-external-prefix/src/civetweb-external-stamp/civetweb-external-build 
> thirdparty/civetweb-install/lib/libcivetweb.a 
> thirdparty/civetweb-install/lib/libcivetweb-cpp.a 
>  cd 
> /home/oceanfish81/Desktop/nifi-minifi-cpp/build/civetweb-external-prefix/src/civetweb-external-build
>  && /usr/local/bin/cmake --build . && /usr/local/bin/cmake -E touch 
> /home/oceanfish81/Desktop/nifi-minifi-cpp/build/civetweb-external-prefix/src/civetweb-external-stamp/civetweb-external-build
>  [1/6] Building CXX object src/CMakeFiles/civetweb-cpp.dir/CivetServer.cpp.o
>  FAILED: src/CMakeFiles/civetweb-cpp.dir/CivetServer.cpp.o 
>  /usr/bin/clang++-11 -DNO_SSL_DL -DUSE_STACK_SIZE=102400 
> -I/home/oceanfish81/Desktop/nifi-minifi-cpp/build/thirdparty/libressl-install/include
>  
> -I/home/oceanfish81/Desktop/nifi-minifi-cpp/build/thirdparty/civetweb-src/include
>  -std=c++11 -std=c++14 -Wall -Wextra -Wshadow -Wmissing-prototypes 
> -Weverything /W4 -Wno-padded /Wd4820 -Wno-unused-macros 
> -Wno-format-nonliteral /WX -pedantic-errors -fvisibility=hidden -Os -DNDEBUG 
> -fPIC -MD -MT src/CMakeFiles/civetweb-cpp.dir/CivetServer.cpp.o -MF 
> src/CMakeFiles/civetweb-cpp.dir/CivetServer.cpp.o.d -o 
> src/CMakeFiles/civetweb-cpp.dir/CivetServer.cpp.o -c 
> /home/oceanfish81/Desktop/nifi-minifi-cpp/build/thirdparty/civetweb-src/src/CivetServer.cpp
>  clang: error: no such file or directory: '/W4'
>  clang: error: no such file or directory: '/Wd4820'
>  clang: error: no such file or directory: '/WX'
>  [2/6] Building C object src/CMakeFiles/c-executable.dir/main.c.o
>  FAILED: src/CMakeFiles/c-executable.dir/main.c.o 
>  /usr/bin/clang-11 -DNO_SSL_DL -DUSE_STACK_SIZE=102400 
> -I/home/oceanfish81/Desktop/nifi-minifi-cpp/build/thirdparty/libressl-install/include
>  
> -I/home/oceanfish81/Desktop/nifi-minifi-cpp/build/thirdparty/civetweb-src/include
>  -std=c11 -Wall -Wextra -Wshadow -Wconversion -Wmissing-prototypes 
> -Weverything -Wparentheses /W4 -Wno-padded -Wno-unused-macros 
> -Wno-reserved-id-macros -Wno-format-nonliteral -Wno-date-time -Wno-cast-qual 
> /Wd4820 -pedantic-errors -fvisibility=hidden -Os -DNDEBUG -fPIE -MD -MT 
> src/CMakeFiles/c-executable.dir/main.c.o -MF 
> src/CMakeFiles/c-executable.dir/main.c.o.d -o 
> src/CMakeFiles/c-executable.dir/main.c.o -c 
> /home/oceanfish81/Desktop/nifi-minifi-cpp/build/thirdparty/civetweb-src/src/main.c
>  clang: error: no such file or directory: '/W4'
>  clang: error: no such file or directory: '/Wd4820'
>  ninja: build stopped: subcommand failed.
>  ninja: build stopped: subcommand failed.
> {code}
> *Proposal:*
> Update civetweb version, see if the problem persists. If it still does, patch 
> out all MSVC warning flags from the civetweb cmake file.
> *Update:*
> Seems like civetweb had an issue with checking available compiler flags. I 
> opened a PR to fix it in their repo, and backported the change to our version.
> My speculation of when this bug happens is that since their code used to set 
> CMAKE_REQUIRED_FLAGS to given flag values like this:
> {code:bash|title=Example build failure with Ninja and clang-11}
> set(CMAKE_REQUIRED_FLAGS "${FLAG}")
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to