On 8/7/23 04:00, Dmitry Melekhov wrote:
Built using --disable-esi without problems.
First of all, if you do not need ESI, I recommend building with
--disable-esi to avoid accidental exposure to dangerous ESI bugs in
deployments that should not be using ESI features.
FWIW, in Project CI environment that also uses GCC on Ubuntu 22.04,
Squid v6.1 ESI build[1] succeeds, including the Libxml2Parser.cc
compilation step that fails in your environment.
[1] https://github.com/squid-cache/squid/actions/runs/5471818575
$ grep -A6 LIBEXPAT configure.log
checking for LIBEXPAT... yes
checking for expat.h... yes
checking for LIBXML2... yes
checking for libxml/parser.h... yes
checking for libxml/HTMLparser.h... yes
checking for libxml/HTMLtree.h... yes
configure: Enabling ESI processor: -lexpat -lm -lxml2
$ grep HAVE_LIBXML include/autoconf.h
#define HAVE_LIBXML2 1
#define HAVE_LIBXML_HTMLPARSER_H 1
#define HAVE_LIBXML_HTMLTREE_H 1
#define HAVE_LIBXML_PARSER_H 1
Can you share the corresponding ./configure output and
include/autoconf.h lines from your build environment?
Could you tell me what can cause this?
I suspect your system lacks libxml/HTMLparser.h or Squid ./configure was
unable to find that header. I cannot find relevant libxml2
documentation, but if libxml promises to declare xmlParserCtxtPtr in
libxml/HTMLparser.h, then this is a Squid bug: When that bug (if it is a
Squid bug) is fixed, your build will fail at ./configure time instead of
"make" time.
Next steps:
* If your system lacks libxml/HTMLparser.h, then install the missing
libxml2 headers. Check the output sampled above to confirm that the
installation led to header discovery by ./configure.
* If your system has libxml/HTMLparser.h, set/adjust CPPFLAGS given to
./configure. Check the output sampled above to confirm that your
adjustments led to header discovery by ./configure.
HTH,
Alex.
/bin/bash ../../libtool --tag=CXX --mode=compile g++ -std=c++17
-DHAVE_CONFIG_H -DDEFAULT_CONFIG_FILE=\"/etc/squid/squid.conf\"
-DDEFAULT_SQUID_DATA_DIR=\"/usr/share/squid\"
-DDEFAULT_SQUID_CONFIG_DIR=\"/etc/squid\" -I../.. -I../../include
-I../../lib -I../../src -I../../include -isystem /usr/include/mit-krb5
-isystem /usr/include/mit-krb5 -I../../libltdl -Wall -Wextra
-Wimplicit-fallthrough=5 -Wpointer-arith -Wwrite-strings -Wcomments
-Wshadow -Wmissing-declarations -Woverloaded-virtual -Werror -pipe
-D_REENTRANT -m64 -g -O2 -MT Libxml2Parser.lo -MD -MP -MF
$depbase.Tpo -c -o Libxml2Parser.lo Libxml2Parser.cc &&\
mv -f $depbase.Tpo $depbase.Plo
libtool: compile: g++ -std=c++17 -DHAVE_CONFIG_H
-DDEFAULT_CONFIG_FILE=\"/etc/squid/squid.conf\"
-DDEFAULT_SQUID_DATA_DIR=\"/usr/share/squid\"
-DDEFAULT_SQUID_CONFIG_DIR=\"/etc/squid\" -I../.. -I../../include
-I../../lib -I../../src -I../../include -isystem /usr/include/mit-krb5
-isystem /usr/include/mit-krb5 -I../../libltdl -Wall -Wextra
-Wimplicit-fallthrough=5 -Wpointer-arith -Wwrite-strings -Wcomments
-Wshadow -Wmissing-declarations -Woverloaded-virtual -Werror -pipe
-D_REENTRANT -m64 -g -O2 -MT Libxml2Parser.lo -MD -MP -MF
.deps/Libxml2Parser.Tpo -c Libxml2Parser.cc -fPIC -DPIC -o
.libs/Libxml2Parser.o
In file included from Libxml2Parser.cc:20:
../../src/esi/Libxml2Parser.h:66:13: error: 'xmlParserCtxtPtr' does not
name a type
66 | mutable xmlParserCtxtPtr parser; /* our parser */
| ^~~~~~~~~~~~~~~~
Libxml2Parser.cc:45:8: error: 'htmlDocPtr' does not name a type
45 | static htmlDocPtr entity_doc = nullptr;
| ^~~~~~~~~~
Libxml2Parser.cc:51:43: error: 'xmlChar' does not name a type
51 | esi_startElementSAXFunc(void * ctx, const xmlChar * name, const
xmlChar ** atts)
| ^~~~~~~
Libxml2Parser.cc:51:65: error: 'xmlChar' does not name a type
51 | esi_startElementSAXFunc(void * ctx, const xmlChar * name, const
xmlChar ** atts)
| ^~~~~~~
Libxml2Parser.cc: In function 'void esi_startElementSAXFunc(void*, const
int*, const int**)':
Libxml2Parser.cc:54:5: error: 'xmlChar' was not declared in this scope
54 | xmlChar **tmp = (xmlChar **)atts;
| ^~~~~~~
Libxml2Parser.cc:54:15: error: 'tmp' was not declared in this scope; did
you mean 'tm'?
54 | xmlChar **tmp = (xmlChar **)atts;
| ^~~
| tm
Libxml2Parser.cc:54:32: error: expected primary-expression before ')' token
54 | xmlChar **tmp = (xmlChar **)atts;
| ^
Libxml2Parser.cc: At global scope:
Libxml2Parser.cc:70:40: error: 'xmlChar' does not name a type
70 | esi_endElementSAXFunc(void *ctx, const xmlChar *name)
| ^~~~~~~
Libxml2Parser.cc:77:37: error: 'xmlChar' does not name a type
77 | esi_commentSAXFunc(void *ctx, const xmlChar *value)
| ^~~~~~~
Libxml2Parser.cc:84:40: error: 'xmlChar' does not name a type
84 | esi_charactersSAXFunc(void *ctx, const xmlChar *ch, int len)
| ^~~~~~~
Libxml2Parser.cc:90:8: error: 'xmlEntityPtr' does not name a type
90 | static xmlEntityPtr
| ^~~~~~~~~~~~
Libxml2Parser.cc: In constructor
'ESILibxml2Parser::ESILibxml2Parser(ESIParserClient*)':
Libxml2Parser.cc:110:5: error: 'xmlSAXHandler' was not declared in this
scope
110 | xmlSAXHandler sax;
| ^~~~~~~~~~~~~
Libxml2Parser.cc:111:5: error: 'xmlInitParser' was not declared in this
scope
111 | xmlInitParser();
| ^~~~~~~~~~~~~
Libxml2Parser.cc:112:13: error: 'sax' was not declared in this scope;
did you mean 'max'?
112 | memset(&sax, 0, sizeof(sax));
| ^~~
| max
Libxml2Parser.cc:117:21: error: 'esi_getEntitySAXFunc' was not declared
in this scope
117 | sax.getEntity = esi_getEntitySAXFunc;
| ^~~~~~~~~~~~~~~~~~~~
Libxml2Parser.cc:120:5: error: 'parser' was not declared in this scope;
did you mean 'Parser'?
120 | parser = xmlCreatePushParserCtxt(&sax, static_cast<void
*>(this), nullptr, 0, nullptr);
| ^~~~~~
| Parser
Libxml2Parser.cc:120:14: error: 'xmlCreatePushParserCtxt' was not
declared in this scope
120 | parser = xmlCreatePushParserCtxt(&sax, static_cast<void
*>(this), nullptr, 0, nullptr);
| ^~~~~~~~~~~~~~~~~~~~~~~
Libxml2Parser.cc:122:9: error: 'entity_doc' was not declared in this scope
122 | if (entity_doc == nullptr)
| ^~~~~~~~~~
Libxml2Parser.cc:123:22: error: 'htmlNewDoc' was not declared in this scope
123 | entity_doc = htmlNewDoc(nullptr, nullptr);
| ^~~~~~~~~~
Libxml2Parser.cc: In destructor 'virtual
ESILibxml2Parser::~ESILibxml2Parser()':
Libxml2Parser.cc:128:23: error: 'parser' was not declared in this scope;
did you mean 'Parser'?
128 | xmlFreeParserCtxt(parser);
| ^~~~~~
| Parser
Libxml2Parser.cc:128:5: error: 'xmlFreeParserCtxt' was not declared in
this scope
128 | xmlFreeParserCtxt(parser);
| ^~~~~~~~~~~~~~~~~
Libxml2Parser.cc: In member function 'virtual bool
ESILibxml2Parser::parse(const char*, size_t, bool)':
Libxml2Parser.cc:135:27: error: 'parser' was not declared in this scope;
did you mean 'Parser'?
135 | return (xmlParseChunk(parser, dataToParse, lengthOfData,
endOfStream) == 0);
| ^~~~~~
| Parser
Libxml2Parser.cc:135:13: error: 'xmlParseChunk' was not declared in this
scope
135 | return (xmlParseChunk(parser, dataToParse, lengthOfData,
endOfStream) == 0);
| ^~~~~~~~~~~~~
Libxml2Parser.cc: In member function 'virtual long int
ESILibxml2Parser::lineNumber() const':
Libxml2Parser.cc:141:43: error: 'parser' was not declared in this scope;
did you mean 'Parser'?
141 | return (long int)xmlSAX2GetLineNumber(parser);
| ^~~~~~
| Parser
Libxml2Parser.cc:141:22: error: 'xmlSAX2GetLineNumber' was not declared
in this scope
141 | return (long int)xmlSAX2GetLineNumber(parser);
| ^~~~~~~~~~~~~~~~~~~~
Libxml2Parser.cc: In member function 'virtual const char*
ESILibxml2Parser::errorString() const':
Libxml2Parser.cc:147:5: error: 'xmlErrorPtr' was not declared in this scope
147 | xmlErrorPtr error = xmlGetLastError();
| ^~~~~~~~~~~
Libxml2Parser.cc:149:9: error: 'error' was not declared in this scope;
did you mean 'perror'?
149 | if (error == nullptr)
| ^~~~~
| perror
Libxml2Parser.cc:152:12: error: 'error' was not declared in this scope;
did you mean 'perror'?
152 | return error->message;
| ^~~~~
| perror
make[3]: *** [Makefile:886: Libxml2Parser.lo] Error 1
make[3]: Leaving directory '/var/local/files/squid-6.1/src/esi'
make[2]: *** [Makefile:6005: all-recursive] Error 1
make[2]: Leaving directory '/var/local/files/squid-6.1/src'
make[1]: *** [Makefile:5005: all] Error 2
make[1]: Leaving directory '/var/local/files/squid-6.1/src'
make: *** [Makefile:600: all-recursive] Error 1
And how to fix it?
Thank you!
_______________________________________________
squid-users mailing list
squid-users@xxxxxxxxxxxxxxxxxxxxx
http://lists.squid-cache.org/listinfo/squid-users
_______________________________________________
squid-users mailing list
squid-users@xxxxxxxxxxxxxxxxxxxxx
http://lists.squid-cache.org/listinfo/squid-users