Bug 112368 - WebKit doesn't build with --disable-xslt: libxslt/transform.h: No such file or directory
Summary: WebKit doesn't build with --disable-xslt: libxslt/transform.h: No such file o...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Tools / Tests (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-03-14 11:17 PDT by Tobias Mueller
Modified: 2013-03-14 17:12 PDT (History)
3 users (show)

See Also:


Attachments
Patch making XSLT mandatory (5.48 KB, patch)
2013-03-14 11:20 PDT, Tobias Mueller
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Tobias Mueller 2013-03-14 11:17:51 PDT
I tried to save compilation time by disabling as many optional things as possible. One of them being XSLT as per ./configure --help. As XSLT is optional, I didn't install it.

But then WebKit doesn't build:
  CXX    DerivedSources/WebCore/libWebCore_la-JSHTMLAllCollection.lo
  CXX    DerivedSources/WebCore/libWebCore_la-JSHTMLAnchorElement.lo
In file included from ./Source/WebCore/xml/XSLTProcessor.h:29:0,
                 from DerivedSources/WebCore/JSXSLTProcessor.h:27,
                 from DerivedSources/WebCore/JSDOMWindow.cpp:590:
./Source/WebCore/xml/XSLStyleSheet.h:33:31: fatal error: libxslt/transform.h: No such file or directory
compilation terminated.
make[1]: *** [DerivedSources/WebCore/libWebCore_la-JSDOMWindow.lo] Error 1
make[1]: *** Waiting for unfinished jobs....
  CXX    DerivedSources/WebCore/libWebCore_la-JSHTMLAppletElement.lo
make[1]: Leaving directory `/tmp/WebKit'
make: *** [all] Error 2


When XSLT is installed, but when WebKit is configured with --disable-xslt:

libtool: link: g++ -fvisibility-inlines-hidden -fno-rtti -g3 -pipe -O2 -Wno-c++11-compat -Wno-c++11-extensions -O2 -Wl,--unresolved-symbols=ignore-in-object-files -Wl,-O0 -Wl,--enable-new-dtags -Wl,--sort-common -Wl,--as-needed -o Programs/.libs/WebKitPluginProcess Source/WebKit2/Platform/CoreIPC/Programs_WebKitPluginProcess-ArgumentCoders.o Source/WebKit2/Platform/CoreIPC/Programs_WebKitPluginProcess-ArgumentDecoder.o Source/WebKit2/Platform/CoreIPC/Programs_WebKitPluginProcess-ArgumentEncoder.o Source/WebKit2/Platform/CoreIPC/Programs_WebKitPluginProcess-Attachment.o Source/WebKit2/Platform/CoreIPC/Programs_WebKitPluginProcess-BinarySemaphore.o Source/WebKit2/Platform/CoreIPC/Programs_WebKitPluginProcess-Connection.o Source/WebKit2/Platform/CoreIPC/Programs_WebKitPluginProcess-DataReference.o Source/WebKit2/Platform/CoreIPC/Programs_WebKitPluginProcess-MessageDecoder.o Source/WebKit2/Platform/CoreIPC/Programs_WebKitPluginProcess-MessageEncoder.o Source/WebKit2/Platform/CoreIPC/Programs_WebKitPluginProcess-MessageReceiverMap.o Source/WebKit2/Platform/CoreIPC/Programs_WebKitPluginProcess-StringReference.o Source/WebKit2/Platform/CoreIPC/unix/Programs_WebKitPluginProcess-AttachmentUnix.o Source/WebKit2/Platform/CoreIPC/unix/Programs_WebKitPluginProcess-ConnectionUnix.o Source/WebKit2/Platform/Programs_WebKitPluginProcess-Module.o Source/WebKit2/Platform/Programs_WebKitPluginProcess-WorkQueue.o Source/WebKit2/Platform/gtk/Programs_WebKitPluginProcess-ModuleGtk.o Source/WebKit2/Platform/gtk/Programs_WebKitPluginProcess-WorkQueueGtk.o Source/WebKit2/Platform/unix/Programs_WebKitPluginProcess-SharedMemoryUnix.o Source/WebKit2/PluginProcess/Programs_WebKitPluginProcess-PluginControllerProxy.o Source/WebKit2/PluginProcess/Programs_WebKitPluginProcess-PluginCreationParameters.o Source/WebKit2/PluginProcess/Programs_WebKitPluginProcess-PluginProcess.o Source/WebKit2/PluginProcess/Programs_WebKitPluginProcess-WebProcessConnection.o Source/WebKit2/Shared/Plugins/Programs_WebKitPluginProcess-PluginProcessCreationParameters.o Source/WebKit2/PluginProcess/unix/Programs_WebKitPluginProcess-PluginControllerProxyUnix.o Source/WebKit2/PluginProcess/unix/Programs_WebKitPluginProcess-PluginProcessMainUnix.o Source/WebKit2/PluginProcess/unix/Programs_WebKitPluginProcess-PluginProcessUnix.o Source/WebKit2/Shared/Programs_WebKitPluginProcess-ChildProcess.o Source/WebKit2/Shared/Programs_WebKitPluginProcess-ChildProcessProxy.o Source/WebKit2/Shared/Programs_WebKitPluginProcess-ConnectionStack.o Source/WebKit2/Shared/Plugins/Programs_WebKitPluginProcess-NPIdentifierData.o Source/WebKit2/Shared/Plugins/Programs_WebKitPluginProcess-NPObjectMessageReceiver.o Source/WebKit2/Shared/Plugins/Programs_WebKitPluginProcess-NPObjectProxy.o Source/WebKit2/Shared/Plugins/Programs_WebKitPluginProcess-NPRemoteObjectMap.o Source/WebKit2/Shared/Plugins/Programs_WebKitPluginProcess-NPVariantData.o Source/WebKit2/Shared/Plugins/Netscape/Programs_WebKitPluginProcess-NetscapePluginModule.o Source/WebKit2/Shared/Plugins/Netscape/x11/Programs_WebKitPluginProcess-NetscapePluginModuleX11.o Source/WebKit2/Shared/Programs_WebKitPluginProcess-ShareableBitmap.o Source/WebKit2/Shared/Programs_WebKitPluginProcess-WebCoreArgumentCoders.o Source/WebKit2/Shared/Programs_WebKitPluginProcess-WebEvent.o Source/WebKit2/Shared/Programs_WebKitPluginProcess-WebKeyboardEvent.o Source/WebKit2/Shared/Programs_WebKitPluginProcess-WebKit2Initialize.o Source/WebKit2/Shared/Programs_WebKitPluginProcess-WebMouseEvent.o Source/WebKit2/Shared/Programs_WebKitPluginProcess-WebWheelEvent.o Source/WebKit2/Shared/gtk/Programs_WebKitPluginProcess-NativeWebKeyboardEventGtk.o Source/WebKit2/Shared/gtk/Programs_WebKitPluginProcess-NativeWebWheelEventGtk.o Source/WebKit2/Shared/gtk/Programs_WebKitPluginProcess-NativeWebMouseEventGtk.o Source/WebKit2/Shared/gtk/Programs_WebKitPluginProcess-ProcessExecutablePathGtk.o Source/WebKit2/Shared/gtk/Programs_WebKitPluginProcess-WebEventFactory.o Source/WebKit2/Shared/cairo/Programs_WebKitPluginProcess-ShareableBitmapCairo.o Source/WebKit2/Shared/soup/Programs_WebKitPluginProcess-WebCoreArgumentCodersSoup.o Source/WebKit2/UIProcess/Plugins/unix/Programs_WebKitPluginProcess-PluginProcessProxyUnix.o Source/WebKit2/WebProcess/Plugins/Programs_WebKitPluginProcess-Plugin.o Source/WebKit2/WebProcess/Plugins/Netscape/Programs_WebKitPluginProcess-NPRuntimeUtilities.o Source/WebKit2/WebProcess/Plugins/Netscape/Programs_WebKitPluginProcess-NetscapeBrowserFuncs.o Source/WebKit2/WebProcess/Plugins/Netscape/Programs_WebKitPluginProcess-NetscapePlugin.o Source/WebKit2/WebProcess/Plugins/Netscape/Programs_WebKitPluginProcess-NetscapePluginStream.o Source/WebKit2/WebProcess/Plugins/Netscape/x11/Programs_WebKitPluginProcess-NetscapePluginX11.o Source/WebKit2/unix/Programs_WebKitPluginProcess-PluginMainUnix.o DerivedSources/WebKit2/Programs_WebKitPluginProcess-NPObjectMessageReceiverMessageReceiver.o DerivedSources/WebKit2/Programs_WebKitPluginProcess-PluginControllerProxyMessageReceiver.o DerivedSources/WebKit2/Programs_WebKitPluginProcess-PluginProcessMessageReceiver.o DerivedSources/WebKit2/Programs_WebKitPluginProcess-WebProcessConnectionMessageReceiver.o -Wl,--export-dynamic -pthread  -L/opt/gnome2/lib64 ./.libs/libjavascriptcoregtk-3.0.so -lpthread ./.libs/libWebCore.a ./.libs/libWebCorePlatform.a ./.libs/libWebCoreGtk2.a -lgmodule-2.0 -lgthread-2.0 -lgailutil -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -ljpeg -lsecret-1 -lsoup-2.4 -lgio-2.0 -lxml2 -lGL -ldl -lpangoft2-1.0 -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lglib-2.0 -lpng15 -lsqlite3 -licui18n -licuuc -licudata -lwebp -lXrender -lXt -lX11 -lz -lrt -pthread -Wl,-rpath -Wl,/opt/gnome2/lib64
./.libs/libwebkit2gtk-3.0.so: undefined reference to `xsltSetCtxtSecurityPrefs'
./.libs/libwebkit2gtk-3.0.so: undefined reference to `xsltNextImport'
./.libs/libwebkit2gtk-3.0.so: undefined reference to `xsltSetSecurityPrefs'
./.libs/libwebkit2gtk-3.0.so: undefined reference to `xsltQuoteUserParams'
./.libs/libwebkit2gtk-3.0.so: undefined reference to `xsltTransformError'
./.libs/libwebkit2gtk-3.0.so: undefined reference to `xsltNewTransformContext'
./.libs/libwebkit2gtk-3.0.so: undefined reference to `xsltNewSecurityPrefs'
./.libs/libwebkit2gtk-3.0.so: undefined reference to `xsltSecurityForbid'
./.libs/libwebkit2gtk-3.0.so: undefined reference to `xsltSaveResultTo'
./.libs/libwebkit2gtk-3.0.so: undefined reference to `xsltFreeTransformContext'
./.libs/libwebkit2gtk-3.0.so: undefined reference to `xsltComputeSortResult'
./.libs/libwebkit2gtk-3.0.so: undefined reference to `xsltRegisterExtFunction'
./.libs/libwebkit2gtk-3.0.so: undefined reference to `xsltApplyStylesheetUser'
./.libs/libwebkit2gtk-3.0.so: undefined reference to `xsltGetNsProp'
./.libs/libwebkit2gtk-3.0.so: undefined reference to `xsltLoadStylesheetPI'
./.libs/libwebkit2gtk-3.0.so: undefined reference to `xsltSetCtxtSortFunc'
./.libs/libwebkit2gtk-3.0.so: undefined reference to `xsltEvalAttrValueTemplate'
./.libs/libwebkit2gtk-3.0.so: undefined reference to `xsltFreeSecurityPrefs'
./.libs/libwebkit2gtk-3.0.so: undefined reference to `xsltParseStylesheetDoc'
./.libs/libwebkit2gtk-3.0.so: undefined reference to `xsltFreeStylesheet'
./.libs/libwebkit2gtk-3.0.so: undefined reference to `xsltSetLoaderFunc'
./.libs/libwebkit2gtk-3.0.so: undefined reference to `xsltFunctionNodeSet'
collect2: error: ld returned 1 exit status
make[1]: *** [Programs/WebKitWebProcess] Error 1


the following objects need XSLT symbols:
$ find Source/ .libs/ -name '*.o' | parallel "nm {} | (grep 'U xslt' && echo {})"
                 U xsltGetNsProp
                 U xsltLoadStylesheetPI
                 U xsltParseStylesheetDoc
Source/WebCore/xml/.libs/libWebCore_la-XSLStyleSheetLibxslt.o
                 U xsltApplyStylesheetUser
                 U xsltFreeSecurityPrefs
                 U xsltFreeStylesheet
                 U xsltFreeTransformContext
                 U xsltNewSecurityPrefs
                 U xsltNewTransformContext
                 U xsltNextImport
                 U xsltQuoteUserParams
                 U xsltSaveResultTo
                 U xsltSecurityForbid
                 U xsltSetCtxtSecurityPrefs
                 U xsltSetCtxtSortFunc
                 U xsltSetLoaderFunc
                 U xsltSetSecurityPrefs
Source/WebCore/xml/.libs/libWebCore_la-XSLTProcessorLibxslt.o
                 U xsltComputeSortResult
                 U xsltEvalAttrValueTemplate
                 U xsltTransformError
Source/WebCore/xml/.libs/libWebCore_la-XSLTUnicodeSort.o
                 U xsltFunctionNodeSet
                 U xsltRegisterExtFunction
Source/WebCore/xml/.libs/libWebCore_la-XSLTExtensions.o


I configured like this:
$ head config.log 
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by WebKitGTK configure 2.1.0, which was
generated by GNU Autoconf 2.68.  Invocation command line was

  $ ./configure --disable-xslt


One solution is to fix the build system to not depend on XSLT stuff, i.e. it may be possible to not include the objects mentioned in libWebCore.
But I know next to nothing about it so it is way easier for me to depend on XSLT. Also, nothing ever uses ENABLE_XSLT.
So I wrote the patch attached.
Comment 1 Tobias Mueller 2013-03-14 11:20:24 PDT
Created attachment 193156 [details]
Patch making XSLT mandatory
Comment 2 Martin Robinson 2013-03-14 11:25:48 PDT
Comment on attachment 193156 [details]
Patch making XSLT mandatory

Okay. This seems reasonable.
Comment 3 Martin Robinson 2013-03-14 15:19:14 PDT
Comment on attachment 193156 [details]
Patch making XSLT mandatory

I actually just realized that this does not take care of the automake flag in SetupAutomake.m4.
Comment 4 Tobias Mueller 2013-03-14 16:45:01 PDT
(In reply to comment #3)
> I actually just realized that this does not take care of the automake flag in SetupAutomake.m4.

Like which?

$ grep -ir xslt Source/autotools/
Source/autotools/Versions.m4:m4_define([libxslt_required_version], [1.1.7])
Source/autotools/FindDependencies.m4:PKG_CHECK_MODULES([LIBXSLT],[libxslt >= libxslt_required_version])
Source/autotools/FindDependencies.m4:AC_SUBST([LIBXSLT_CFLAGS])
Source/autotools/FindDependencies.m4:AC_SUBST([LIBXSLT_LIBS])
$

The only relevant reference I can see is in Source/WTF/wtf/FeatureDefines.h but I suppose that was forgotten with the cleanup by bug 111830 , but it seems to be gracefully handled.
Comment 5 Martin Robinson 2013-03-14 16:52:52 PDT
(In reply to comment #4)
> (In reply to comment #3)
> > I actually just realized that this does not take care of the automake flag in SetupAutomake.m4.
> 
> Like which?


Ah! I missed https://bugs.webkit.org/show_bug.cgi?id=111830.
Comment 6 WebKit Review Bot 2013-03-14 17:12:16 PDT
Comment on attachment 193156 [details]
Patch making XSLT mandatory

Clearing flags on attachment: 193156

Committed r145859: <http://trac.webkit.org/changeset/145859>
Comment 7 WebKit Review Bot 2013-03-14 17:12:20 PDT
All reviewed patches have been landed.  Closing bug.