Thomas-Martin Seck wrote:
Hi,

I noticed that squid-3 does not seem to like --enable-esi in conjunction
with --disable-optimizations. A build where both options are defined
fails as follows; builds where either option is defined work.

(This is 3.0.STABLE12 on FreeBSD 7, first observed on amd64 by the
FreeBSD ports committer, reproducible on a physically different machine
on i386 by me.  Compiler is FreeBSD's gcc-4.2.1 system compiler.  Other
versions of FreeBSD were not tested. libxml2 is located in
/usr/local/lib/.)

Build environment:

$ make -DWITH_SQUID_DEBUG -DWITH_SQUID_ESI -VCONFIGURE_ENV -VCONFIGURE_ARGS
CFLAGS="-pipe -I/usr/local/include -I/usr/local/include/libxml2 -g"  CPPFLAGS="" 
LDFLAGS=" -L/usr/local/lib" SHELL=/bin/sh CONFIG_SHELL=/bin/sh lt_cv_sys_max_cmd_len=262144
--with-default-user=squid  --bindir=/usr/local/sbin   --sbindir=/usr/local/sbin   --datadir=/usr/local/etc/squid  --libexecdir=/usr/local/libexec/squid  
--localstatedir=/usr/local/squid  --sysconfdir=/usr/local/etc/squid  --enable-removal-policies="lru heap"  --disable-linux-netfilter  
--disable-linux-tproxy  --disable-epoll --enable-auth="basic digest negotiate ntlm"  --enable-basic-auth-helpers="DB NCSA PAM MSNT SMB 
squid_radius_auth YP"  --enable-digest-auth-helpers="password"  --enable-external-acl-helpers="ip_user session unix_group wbinfo_group"  
--enable-ntlm-auth-helpers="SMB" --enable-negotiate-auth-helpers="squid_kerb_auth" --enable-storeio="ufs diskd null" --enable-esi 
--enable-kqueue --disable-optimizations --enable-err-languages="Armenian Azerbaijani Bulgarian Catalan Czech Danish  Dutch English Estonian Finnish French 
German Greek  Hebrew Hungarian Italian Japanese Korean Lithuanian  Polish Portuguese Romanian Russian-1251 Russian-koi8-r  Serbian Simplify_Chin
ese Slovak Spanish Swedish  Traditional_Chinese Turkish Ukrainian-1251  
Ukrainian-koi8-u Ukrainian-utf8"  --enable-default-err-language=templates  
--prefix=/usr/local

Extract from build transcript (complete transcript available upon
request):

[...]

depbase=`echo ESI.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;  if c++ -DHAVE_CONFIG_H 
-DDEFAULT_CONFIG_FILE=\"/usr/local/etc/squid/squid.conf\" -I. -I. -I../include -I. -I. -I../include  -I../include 
-I../lib/libTrie/include      -Werror -Wall -Wpointer-arith -Wwrite-strings -Wcomments -pipe -I/usr/local/include 
-I/usr/local/include/libxml2 -g -MT ESI.o -MD -MP -MF "$depbase.Tpo" -c -o ESI.o ESI.cc;  then mv -f 
"$depbase.Tpo" "$depbase.Po"; else rm -f "$depbase.Tpo"; exit 1; fi
depbase=`echo ESIAssign.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;  if c++ -DHAVE_CONFIG_H 
-DDEFAULT_CONFIG_FILE=\"/usr/local/etc/squid/squid.conf\" -I. -I. -I../include -I. -I. -I../include  -I../include 
-I../lib/libTrie/include      -Werror -Wall -Wpointer-arith -Wwrite-strings -Wcomments -pipe -I/usr/local/include 
-I/usr/local/include/libxml2 -g -MT ESIAssign.o -MD -MP -MF "$depbase.Tpo" -c -o ESIAssign.o ESIAssign.cc;  then mv -f 
"$depbase.Tpo" "$depbase.Po"; else rm -f "$depbase.Tpo"; exit 1; fi
depbase=`echo ESIContext.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;  if c++ -DHAVE_CONFIG_H 
-DDEFAULT_CONFIG_FILE=\"/usr/local/etc/squid/squid.conf\" -I. -I. -I../include -I. -I. -I../include  -I../include 
-I../lib/libTrie/include      -Werror -Wall -Wpointer-arith -Wwrite-strings -Wcomments -pipe -I/usr/local/include 
-I/usr/local/include/libxml2 -g -MT ESIContext.o -MD -MP -MF "$depbase.Tpo" -c -o ESIContext.o ESIContext.cc;  then mv -f 
"$depbase.Tpo" "$depbase.Po"; else rm -f "$depbase.Tpo"; exit 1; fi
depbase=`echo ESICustomParser.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;  if c++ -DHAVE_CONFIG_H 
-DDEFAULT_CONFIG_FILE=\"/usr/local/etc/squid/squid.conf\" -I. -I. -I../include -I. -I. -I../include  -I../include 
-I../lib/libTrie/include      -Werror -Wall -Wpointer-arith -Wwrite-strings -Wcomments -pipe -I/usr/local/include 
-I/usr/local/include/libxml2 -g -MT ESICustomParser.o -MD -MP -MF "$depbase.Tpo" -c -o ESICustomParser.o 
ESICustomParser.cc;  then mv -f "$depbase.Tpo" "$depbase.Po"; else rm -f "$depbase.Tpo"; exit 1; fi
depbase=`echo ESIExpatParser.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;  if c++ -DHAVE_CONFIG_H 
-DDEFAULT_CONFIG_FILE=\"/usr/local/etc/squid/squid.conf\" -I. -I. -I../include -I. -I. -I../include  -I../include 
-I../lib/libTrie/include      -Werror -Wall -Wpointer-arith -Wwrite-strings -Wcomments -pipe -I/usr/local/include 
-I/usr/local/include/libxml2 -g -MT ESIExpatParser.o -MD -MP -MF "$depbase.Tpo" -c -o ESIExpatParser.o ESIExpatParser.cc;  
then mv -f "$depbase.Tpo" "$depbase.Po"; else rm -f "$depbase.Tpo"; exit 1; fi
depbase=`echo ESIExpression.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;  if c++ -DHAVE_CONFIG_H 
-DDEFAULT_CONFIG_FILE=\"/usr/local/etc/squid/squid.conf\" -I. -I. -I../include -I. -I. -I../include  -I../include 
-I../lib/libTrie/include      -Werror -Wall -Wpointer-arith -Wwrite-strings -Wcomments -pipe -I/usr/local/include 
-I/usr/local/include/libxml2 -g -MT ESIExpression.o -MD -MP -MF "$depbase.Tpo" -c -o ESIExpression.o ESIExpression.cc;  
then mv -f "$depbase.Tpo" "$depbase.Po"; else rm -f "$depbase.Tpo"; exit 1; fi
depbase=`echo ESIInclude.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;  if c++ -DHAVE_CONFIG_H 
-DDEFAULT_CONFIG_FILE=\"/usr/local/etc/squid/squid.conf\" -I. -I. -I../include -I. -I. -I../include  -I../include 
-I../lib/libTrie/include      -Werror -Wall -Wpointer-arith -Wwrite-strings -Wcomments -pipe -I/usr/local/include 
-I/usr/local/include/libxml2 -g -MT ESIInclude.o -MD -MP -MF "$depbase.Tpo" -c -o ESIInclude.o ESIInclude.cc;  then mv -f 
"$depbase.Tpo" "$depbase.Po"; else rm -f "$depbase.Tpo"; exit 1; fi
depbase=`echo ESILibxml2Parser.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;  if c++ -DHAVE_CONFIG_H 
-DDEFAULT_CONFIG_FILE=\"/usr/local/etc/squid/squid.conf\" -I. -I. -I../include -I. -I. -I../include  -I../include 
-I../lib/libTrie/include      -Werror -Wall -Wpointer-arith -Wwrite-strings -Wcomments -pipe -I/usr/local/include 
-I/usr/local/include/libxml2 -g -MT ESILibxml2Parser.o -MD -MP -MF "$depbase.Tpo" -c -o ESILibxml2Parser.o 
ESILibxml2Parser.cc;  then mv -f "$depbase.Tpo" "$depbase.Po"; else rm -f "$depbase.Tpo"; exit 1; fi
depbase=`echo ESIParser.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;  if c++ -DHAVE_CONFIG_H 
-DDEFAULT_CONFIG_FILE=\"/usr/local/etc/squid/squid.conf\" -I. -I. -I../include -I. -I. -I../include  -I../include 
-I../lib/libTrie/include      -Werror -Wall -Wpointer-arith -Wwrite-strings -Wcomments -pipe -I/usr/local/include 
-I/usr/local/include/libxml2 -g -MT ESIParser.o -MD -MP -MF "$depbase.Tpo" -c -o ESIParser.o ESIParser.cc;  then mv -f 
"$depbase.Tpo" "$depbase.Po"; else rm -f "$depbase.Tpo"; exit 1; fi
depbase=`echo ESISegment.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;  if c++ -DHAVE_CONFIG_H 
-DDEFAULT_CONFIG_FILE=\"/usr/local/etc/squid/squid.conf\" -I. -I. -I../include -I. -I. -I../include  -I../include 
-I../lib/libTrie/include      -Werror -Wall -Wpointer-arith -Wwrite-strings -Wcomments -pipe -I/usr/local/include 
-I/usr/local/include/libxml2 -g -MT ESISegment.o -MD -MP -MF "$depbase.Tpo" -c -o ESISegment.o ESISegment.cc;  then mv -f 
"$depbase.Tpo" "$depbase.Po"; else rm -f "$depbase.Tpo"; exit 1; fi
depbase=`echo ESISequence.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;  if c++ -DHAVE_CONFIG_H 
-DDEFAULT_CONFIG_FILE=\"/usr/local/etc/squid/squid.conf\" -I. -I. -I../include -I. -I. -I../include  -I../include 
-I../lib/libTrie/include      -Werror -Wall -Wpointer-arith -Wwrite-strings -Wcomments -pipe -I/usr/local/include 
-I/usr/local/include/libxml2 -g -MT ESISequence.o -MD -MP -MF "$depbase.Tpo" -c -o ESISequence.o ESISequence.cc;  then mv 
-f "$depbase.Tpo" "$depbase.Po"; else rm -f "$depbase.Tpo"; exit 1; fi
depbase=`echo ESIVarState.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;  if c++ -DHAVE_CONFIG_H 
-DDEFAULT_CONFIG_FILE=\"/usr/local/etc/squid/squid.conf\" -I. -I. -I../include -I. -I. -I../include  -I../include 
-I../lib/libTrie/include      -Werror -Wall -Wpointer-arith -Wwrite-strings -Wcomments -pipe -I/usr/local/include 
-I/usr/local/include/libxml2 -g -MT ESIVarState.o -MD -MP -MF "$depbase.Tpo" -c -o ESIVarState.o ESIVarState.cc;  then mv 
-f "$depbase.Tpo" "$depbase.Po"; else rm -f "$depbase.Tpo"; exit 1; fi
depbase=`echo ETag.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;  if c++ -DHAVE_CONFIG_H 
-DDEFAULT_CONFIG_FILE=\"/usr/local/etc/squid/squid.conf\" -I. -I. -I../include -I. -I. -I../include  -I../include 
-I../lib/libTrie/include      -Werror -Wall -Wpointer-arith -Wwrite-strings -Wcomments -pipe -I/usr/local/include 
-I/usr/local/include/libxml2 -g -MT ETag.o -MD -MP -MF "$depbase.Tpo" -c -o ETag.o ETag.cc;  then mv -f 
"$depbase.Tpo" "$depbase.Po"; else rm -f "$depbase.Tpo"; exit 1; fi

[...]

/bin/sh ../libtool --tag=CXX --mode=link c++ -Werror -Wall -Wpointer-arith 
-Wwrite-strings -Wcomments  -pipe -I/usr/local/include 
-I/usr/local/include/libxml2 -g  -L/usr/local/lib -o ufsdump  debug.o int.o 
mem.o  store_key_md5.o StoreMeta.o  StoreMetaMD5.o StoreMetaSTD.o  
StoreMetaSTDLFS.o StoreMetaUnpacker.o  StoreMetaURL.o StoreMetaVary.o  String.o 
time.o ufsdump.o  url.o AsyncCall.o BodyPipe.o  ConfigParser.o store.o  
StoreFileSystem.o StoreSwapLogData.o  access_log.o acl.o acl_noncore.o  
ACLChecklist.o ACLProxyAuth.o  ACLUserData.o ACLRegexData.o  ACLStringData.o 
authenticate.o  cache_cf.o cache_manager.o  CacheDigest.o carp.o cbdata.o  
client_db.o client_side.o  client_side_reply.o client_side_request.o  
clientStream.o comm_select.o comm_select_win32.o  comm_poll.o comm_epoll.o 
comm_kqueue.o ConfigOption.o   disk.o dns_internal.o  errorpage.o ESI.o 
ESIAssign.o  ESIContext.o ESICustomParser.o  ESIExpatParser.o ESIExpression.o  
ESIInclude.o ESILibxml2Parser.o  ESIParser.
o ESISegment.o ESISequence.o  ESIVarState.o ETag.o  event.o external_acl.o  
ExternalACLEntry.o fd.o fde.o  filemap.o forward.o fqdncache.o  ftp.o gopher.o 
helper.o  htcp.o http.o HttpStatusLine.o  HttpHdrCc.o HttpHdrRange.o 
HttpHdrSc.o  HttpHdrScTarget.o HttpHdrContRange.o  HttpHeader.o 
HttpHeaderTools.o  HttpBody.o HttpMsg.o HttpReply.o  HttpRequest.o 
HttpRequestMethod.o  icmp.o icp_v2.o icp_v3.o  ACLIdent.o ident.o internal.o 
ipc.o  ipcache.o  list.o  logfile.o mem_node.o MemBuf.o  MemObject.o mime.o 
multicast.o  neighbors.o net_db.o Packer.o  Parsing.o  pconn.o  peer_digest.o 
peer_select.o  peer_sourcehash.o peer_userhash.o  redirect.o referer.o 
refresh.o  RemovalPolicy.o send-announce.o  snmp_core.o snmp_agent.o  tunnel.o  
Server.o SquidNew.o stat.o  StatHist.o stmem.o store_io.o  StoreIOState.o 
store_client.o  store_digest.o store_dir.o store_log.o  store_rebuild.o 
store_swapin.o  store_swapmeta.o store_swapout.o  SwapDir.o tools.o unlinkd.o  
URLScheme.o urn.o useragent.
o  wccp.o wccp2.o whois.o  wordlist.o  repl_modules.o globals.o  
string_arrays.o libsquid.la  libauth.la  -L../lib   repl/liblru.a 
repl/libheap.a  fs/libufs.a fs/libnull.a  auth/libbasic.a auth/libdigest.a 
auth/libnegotiate.a auth/libntlm.a  -lcrypt   ../snmplib/libsnmp.a    
-lmiscutil  -lexpat -lxml2 -lm
c++ -Werror -Wall -Wpointer-arith -Wwrite-strings -Wcomments -pipe 
-I/usr/local/include -I/usr/local/include/libxml2 -g -o ufsdump debug.o int.o 
mem.o store_key_md5.o StoreMeta.o StoreMetaMD5.o StoreMetaSTD.o 
StoreMetaSTDLFS.o StoreMetaUnpacker.o StoreMetaURL.o StoreMetaVary.o String.o 
time.o ufsdump.o url.o AsyncCall.o BodyPipe.o ConfigParser.o store.o 
StoreFileSystem.o StoreSwapLogData.o access_log.o acl.o acl_noncore.o 
ACLChecklist.o ACLProxyAuth.o ACLUserData.o ACLRegexData.o ACLStringData.o 
authenticate.o cache_cf.o cache_manager.o CacheDigest.o carp.o cbdata.o 
client_db.o client_side.o client_side_reply.o client_side_request.o 
clientStream.o comm_select.o comm_select_win32.o comm_poll.o comm_epoll.o 
comm_kqueue.o ConfigOption.o disk.o dns_internal.o errorpage.o ESI.o 
ESIAssign.o ESIContext.o ESICustomParser.o ESIExpatParser.o ESIExpression.o 
ESIInclude.o ESILibxml2Parser.o ESIParser.o ESISegment.o ESISequence.o 
ESIVarState.o ETag.o event.o external_acl.o ExternalACLEn
try.o fd.o fde.o filemap.o forward.o fqdncache.o ftp.o gopher.o helper.o htcp.o 
http.o HttpStatusLine.o HttpHdrCc.o HttpHdrRange.o HttpHdrSc.o 
HttpHdrScTarget.o HttpHdrContRange.o HttpHeader.o HttpHeaderTools.o HttpBody.o 
HttpMsg.o HttpReply.o HttpRequest.o HttpRequestMethod.o icmp.o icp_v2.o 
icp_v3.o ACLIdent.o ident.o internal.o ipc.o ipcache.o list.o logfile.o 
mem_node.o MemBuf.o MemObject.o mime.o multicast.o neighbors.o net_db.o 
Packer.o Parsing.o pconn.o peer_digest.o peer_select.o peer_sourcehash.o 
peer_userhash.o redirect.o referer.o refresh.o RemovalPolicy.o send-announce.o 
snmp_core.o snmp_agent.o tunnel.o Server.o SquidNew.o stat.o StatHist.o stmem.o 
store_io.o StoreIOState.o store_client.o store_digest.o store_dir.o store_log.o 
store_rebuild.o store_swapin.o store_swapmeta.o store_swapout.o SwapDir.o 
tools.o unlinkd.o URLScheme.o urn.o useragent.o wccp.o wccp2.o whois.o 
wordlist.o repl_modules.o globals.o string_arrays.o  -L/usr/local/lib 
./.libs/libsquid.a ./.lib
s/libauth.a 
-L/var/tmp/ports/usr/ports/experimental/squid30/work/squid-3.0.STABLE12/lib 
repl/liblru.a repl/libheap.a fs/libufs.a fs/libnull.a auth/libbasic.a 
auth/libdigest.a auth/libnegotiate.a auth/libntlm.a -lcrypt 
../snmplib/libsnmp.a -lmiscutil /usr/local/lib/libexpat.so 
/usr/local/lib/libxml2.so -lz /usr/local/lib/libiconv.so -lm   -Wl,--rpath 
-Wl,/usr/local/lib -Wl,--rpath -Wl,/usr/local/lib
ESICustomParser.o(.text+0xa07): In function `ESICustomParser::findTag(char 
const*, unsigned int)':
/var/tmp/ports/usr/ports/experimental/squid30/work/squid-3.0.STABLE12/src/ESICustomParser.cc:86:
 undefined reference to `Trie::findPrefix(char const*, unsigned int)'
*** Error code 1

Regards,

Found and fixed. Thank you.

http://www.squid-cache.org/Versions/v3/3.0/changesets/b8959.patch

Amos
--
Please be using
  Current Stable Squid 2.7.STABLE5 or 3.0.STABLE12
  Current Beta Squid 3.1.0.4

Reply via email to