amagovpt / autenticacao.gov

Middleware Oficial de Identificação Eletrónica em Portugal - Cartão de Cidadão, da Chave Móvel Digital e Sistema de Certificação de atributos profissionais
https://www.autenticacao.gov.pt
European Union Public License 1.2
171 stars 33 forks source link

Erro com a versão do GSOAP #55

Open jfmcarreira opened 3 years ago

jfmcarreira commented 3 years ago

Eu estou a tentar compilar o software contundo estou a obter um erro com a versão do GSOAP.

Tanto em Ubutu 20.04 como em Gentoo. Em ambos os casos não tenho o gsoap instalado e parece que os includes são todos de dentro do projeto.

g++ -c -pipe -fPIC -fvisibility=hidden -O2 -std=gnu++11 -Wall -Wextra -D_REENTRANT -fPIC -DPTEID_35 -DEIDMW_PREFIX=/usr/local -DQT_DEPRECATED_WARNINGS -DWITH_OPENSSL -DQT_NO_DEBUG -DQT_QUICKCONTROLS2_LIB -DQT_QUICK_LIB -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB-DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CONCURRENT_LIB -DQT_CORE_LIB -I. -I/usr/include/poppler/qt5 -I../CMD/services -I../applayer -I../common -I../cardlayer -I../eidlib -I../_Builds -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtQuickControls2 -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtConcurrent -I/usr/include/x86_64-linux-gnu/qt5/QtCore -Ibuild -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o build/gapi.o gapi.cpp
In file included from SCAP-services-v3/SCAPH.h:16,
from gapi.cpp:28:
SCAP-services-v3/SCAPStub.h:36:3: error: #error "GSOAP VERSION 208105 MISMATCH IN GENERATED CODE VERSUS LIBRARY CODE: PLEASE REINSTALL PACKAGE"
36 | # error "GSOAP VERSION 208105 MISMATCH IN GENERATED CODE VERSUS LIBRARY CODE: PLEASE REINSTALL PACKAGE"
agrr commented 3 years ago

Boa tarde, esse erro acontece porque nesse sistema o compilador está a incluir uma versão diferente do header file stdsoap2.h. A versão que é incluída no projeto está em pteid-mw-pt/_src/eidmw/eidguiV2/stdsoap2.h e provém do gsoap 2.8.105, tal como se pode confirmar no primeiro bloco de comentários do ficheiro.

De qualquer forma posso confirmar que a compilação do projeto em Ubuntu 20.04 funciona mesmo com o pacote libgsoap-dev instalado, que tem uma versão anterior: 2.8.91

jfmcarreira commented 3 years ago

Eu mesmo instalando esse pacote continua a falhar.

Contudo, o meu objectivo não é compilar a aplicação para Ubuntu apenas o fiz para testes. No meu sistema compilei usando o seguinte patch:

diff --git a/eidguiV2/SCAP-services-v3/SCAP.nsmap b/eidguiV2/SCAP-services-v3/SCAP.nsmap
index aa212895..55feaf37 100644
--- a/eidguiV2/SCAP-services-v3/SCAP.nsmap
+++ b/eidguiV2/SCAP-services-v3/SCAP.nsmap
@@ -1,5 +1,5 @@

-#include "stdsoap2.h"
+#include "../stdsoap2.h"
 /* This defines the global XML namespaces[] table to #include and compile */
 SOAP_NMAC struct Namespace SCAP_namespaces[] = {
         { "SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/", "http://www.w3.org/*/soap-envelope", NULL },
diff --git a/eidguiV2/SCAP-services-v3/SCAPStub.h b/eidguiV2/SCAP-services-v3/SCAPStub.h
index 6c71b0f5..e70bb1ac 100644
--- a/eidguiV2/SCAP-services-v3/SCAPStub.h
+++ b/eidguiV2/SCAP-services-v3/SCAPStub.h
@@ -31,7 +31,7 @@ A commercial use license is available from Genivia Inc., contact@genivia.com
 #ifndef WITH_NONAMESPACES
 #define WITH_NONAMESPACES
 #endif
-#include "stdsoap2.h"
+#include "../stdsoap2.h"
 #if GSOAP_VERSION != 208105
 # error "GSOAP VERSION 208105 MISMATCH IN GENERATED CODE VERSUS LIBRARY CODE: PLEASE REINSTALL PACKAGE"
 #endif

Parece-me que isto consegue garantir que ele não vai buscar o #include "stdsoap2.h" à diretoria errada.