[Libreoffice-commits] .: 2 commits - configmgr/source configure.ac distro-configs/LibreOfficeAndroid.conf distro-configs/LibreOfficeAndroidX86.conf distro-configs/LibreOfficeiOS.conf distro-configs/LibreOfficeLinux.conf distro-configs/LibreOfficeMacOSX.conf distro-configs/LibreOfficeOpenBSD.conf distro-configs/LibreOfficeWin32.conf distro-configs/OxygenOfficeLinux.conf distro-configs/OxygenOfficeWin32.conf filter/Configuration_filter.mk filter/source officecfg/registry postprocess/packcomponents postprocess/packregistry scp2/InstallModule_ooo.mk scp2/source sdext/Module_sdext.mk sdext/Package_pdfimport_xcu.mk sdext/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Thu Nov 29 02:37:45 PST 2012


 configmgr/source/components.cxx                                              |   20 +-
 configmgr/source/parsemanager.cxx                                            |    6 
 configmgr/source/parsemanager.hxx                                            |    4 
 configmgr/source/parser.hxx                                                  |    6 
 configmgr/source/valueparser.cxx                                             |    4 
 configmgr/source/valueparser.hxx                                             |    4 
 configmgr/source/xcdparser.cxx                                               |   42 ++++-
 configmgr/source/xcdparser.hxx                                               |   14 +
 configmgr/source/xcsparser.cxx                                               |    6 
 configmgr/source/xcsparser.hxx                                               |    4 
 configmgr/source/xcuparser.cxx                                               |    6 
 configmgr/source/xcuparser.hxx                                               |    4 
 configure.ac                                                                 |   14 -
 distro-configs/LibreOfficeAndroid.conf                                       |    1 
 distro-configs/LibreOfficeAndroidX86.conf                                    |    1 
 distro-configs/LibreOfficeLinux.conf                                         |    1 
 distro-configs/LibreOfficeMacOSX.conf                                        |    1 
 distro-configs/LibreOfficeOpenBSD.conf                                       |    1 
 distro-configs/LibreOfficeWin32.conf                                         |    1 
 distro-configs/LibreOfficeiOS.conf                                           |    1 
 distro-configs/OxygenOfficeLinux.conf                                        |    1 
 distro-configs/OxygenOfficeWin32.conf                                        |    1 
 filter/Configuration_filter.mk                                               |   70 ---------
 filter/source/config/fragments/types/pdf_Portable_Document_Format_import.xcu |   29 ----
 officecfg/registry/data.dtd                                                  |    3 
 officecfg/registry/data/org/openoffice/Setup.xcu                             |    3 
 postprocess/packcomponents/makefile.mk                                       |    2 
 postprocess/packregistry/makefile.mk                                         |   15 +-
 scp2/InstallModule_ooo.mk                                                    |    6 
 scp2/source/ooo/file_library_ooo.scp                                         |   13 -
 scp2/source/ooo/file_ooo.scp                                                 |   23 ---
 scp2/source/ooo/module_hidden_ooo.scp                                        |    3 
 scp2/source/ooo/module_pdfimport.scp                                         |   72 ++++++++++
 sdext/Module_sdext.mk                                                        |    2 
 sdext/Package_pdfimport_xcu.mk                                               |    1 
 sdext/source/pdfimport/config/pdf_types.xcu                                  |   35 ++++
 sdext/source/pdfimport/test/testdocs/makefile.mk                             |    2 
 sdext/source/pdfimport/xpdftest/makefile.mk                                  |    2 
 38 files changed, 228 insertions(+), 196 deletions(-)

New commits:
commit 79e5ee5f6949f4b8645ef32dba61705d02473c60
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Thu Nov 29 11:27:45 2012 +0100

    Isolate PDF Import so it can be made optionally installable
    
    ...which can be attractive for installation sets that use --with-system-poppler
    but do not want the LO core package to depend on a poppler package.  See the
    comment at the top of scp2/source/ooo/module_pdfimport.scp for details.
    
    The build-time --disable-pdfimport configure switch is gone, PDF Import is built
    unconditionally for all platforms but Android and iOS now.  (The
    ENABLE_PDFIMPORT variable now uses TRUE/FALSE rather than YES/NO, to increase
    consistency across those variables.)
    
    Change-Id: I6509d0b2e770b276cd54540408fb1ec5a7dda058

diff --git a/configure.ac b/configure.ac
index ef57fbb..c40e523 100644
--- a/configure.ac
+++ b/configure.ac
@@ -565,11 +565,6 @@ AC_ARG_ENABLE(extensions,
         [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
 )
 
-AC_ARG_ENABLE(pdfimport,
-    AS_HELP_STRING([--disable-pdfimport],
-        [Disable PDF import.])
-)
-
 AC_ARG_ENABLE(scripting,
     AS_HELP_STRING([--disable-scripting],
         [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.])
@@ -4157,11 +4152,11 @@ if test "$cross_compiling" = "yes"; then
     ./configure \
         --disable-graphite \
         --disable-build-mozilla \
-        --disable-pdfimport \
         --disable-postgresql-sdbc \
         --disable-zenity \
         --with-parallelism="$with_parallelism" \
         --without-doxygen \
+        ENABLE_PDFIMPORT=FALSE \
         $sub_conf_opts \
         2>&1 | sed -e 's/^/    /'
     test -f ./config_host.mk 2>/dev/null || exit
@@ -9795,9 +9790,9 @@ AC_SUBST(ENABLE_MINIMIZER)
 
 # pdf import?
 AC_MSG_CHECKING([whether to build the PDF import])
-if test "x$enable_pdfimport" != "xno"; then
+if test "$_os" != Android -a "$_os" != iOS -a "$ENABLE_PDFIMPORT" != FALSE; then
   AC_MSG_RESULT([yes])
-  ENABLE_PDFIMPORT=YES
+  ENABLE_PDFIMPORT=TRUE
 
   dnl ===================================================================
   dnl Check for system poppler
@@ -9825,8 +9820,7 @@ if test "x$enable_pdfimport" != "xno"; then
   fi
 else
   AC_MSG_RESULT([no])
-  ENABLE_PDFIMPORT=NO
-  SCPDEFS="$SCPDEFS -DWITHOUT_PDFIMPORT"
+  ENABLE_PDFIMPORT=FALSE
 fi
 AC_SUBST(ENABLE_PDFIMPORT)
 AC_SUBST(SYSTEM_POPPLER)
diff --git a/distro-configs/LibreOfficeAndroid.conf b/distro-configs/LibreOfficeAndroid.conf
index 10b351c..14b31df 100644
--- a/distro-configs/LibreOfficeAndroid.conf
+++ b/distro-configs/LibreOfficeAndroid.conf
@@ -12,7 +12,6 @@
 --disable-mozilla
 --disable-odk
 --disable-opengl
---disable-pdfimport
 --disable-postgresql-sdbc
 --disable-python
 --disable-randr
diff --git a/distro-configs/LibreOfficeAndroidX86.conf b/distro-configs/LibreOfficeAndroidX86.conf
index 4414b58..43f1c0b 100644
--- a/distro-configs/LibreOfficeAndroidX86.conf
+++ b/distro-configs/LibreOfficeAndroidX86.conf
@@ -12,7 +12,6 @@
 --disable-mozilla
 --disable-odk
 --disable-opengl
---disable-pdfimport
 --disable-postgresql-sdbc
 --disable-python
 --disable-randr
diff --git a/distro-configs/LibreOfficeLinux.conf b/distro-configs/LibreOfficeLinux.conf
index 6f22043..0ffc31c 100644
--- a/distro-configs/LibreOfficeLinux.conf
+++ b/distro-configs/LibreOfficeLinux.conf
@@ -35,7 +35,6 @@
 --enable-ext-presenter-minimizer
 --enable-ext-nlpsolver
 --enable-epm
---enable-pdfimport
 --enable-python=internal
 --enable-online-update
 --disable-unix-qstart-libpng
diff --git a/distro-configs/LibreOfficeMacOSX.conf b/distro-configs/LibreOfficeMacOSX.conf
index 2aa870e..686f5fe 100644
--- a/distro-configs/LibreOfficeMacOSX.conf
+++ b/distro-configs/LibreOfficeMacOSX.conf
@@ -9,6 +9,5 @@
 --enable-ext-nlpsolver
 --enable-extension-integration
 --enable-online-update
---enable-pdfimport
 --without-system-postgresql
 --disable-gtk
diff --git a/distro-configs/LibreOfficeOpenBSD.conf b/distro-configs/LibreOfficeOpenBSD.conf
index 3862cfe..52ba333 100644
--- a/distro-configs/LibreOfficeOpenBSD.conf
+++ b/distro-configs/LibreOfficeOpenBSD.conf
@@ -15,7 +15,6 @@
 --enable-ext-presenter-minimizer
 --enable-ext-report-builder
 --enable-ext-wiki-publisher
---enable-pdfimport
 --enable-python=system
 --with-alloc=system
 --with-ant-home=/usr/local/ant
diff --git a/distro-configs/LibreOfficeWin32.conf b/distro-configs/LibreOfficeWin32.conf
index c8f036a..7c92efe 100644
--- a/distro-configs/LibreOfficeWin32.conf
+++ b/distro-configs/LibreOfficeWin32.conf
@@ -14,4 +14,3 @@
 --enable-ext-presenter-minimizer
 --enable-ext-nlpsolver
 --enable-online-update
---enable-pdfimport
diff --git a/distro-configs/LibreOfficeiOS.conf b/distro-configs/LibreOfficeiOS.conf
index 52fb60f..6234d99 100644
--- a/distro-configs/LibreOfficeiOS.conf
+++ b/distro-configs/LibreOfficeiOS.conf
@@ -13,7 +13,6 @@
 --disable-mozilla
 --disable-odk
 --disable-opengl
---disable-pdfimport
 --disable-postgresql-sdbc
 --disable-python
 --disable-randr
diff --git a/distro-configs/OxygenOfficeLinux.conf b/distro-configs/OxygenOfficeLinux.conf
index 0777056..0c428a6 100644
--- a/distro-configs/OxygenOfficeLinux.conf
+++ b/distro-configs/OxygenOfficeLinux.conf
@@ -51,7 +51,6 @@
 --enable-ext-barcode
 --disable-ext-oooblogger
 --enable-ext-mysql-connector
---enable-pdfimport
 --enable-postgresql-sdbc
 --with-sun-templates
 --enable-neon
diff --git a/distro-configs/OxygenOfficeWin32.conf b/distro-configs/OxygenOfficeWin32.conf
index 22aa137..a3a879d 100644
--- a/distro-configs/OxygenOfficeWin32.conf
+++ b/distro-configs/OxygenOfficeWin32.conf
@@ -37,5 +37,4 @@
 --enable-graphite
 --enable-dependency-tracking
 --enable-mozilla
---enable-pdfimport
 --with-system-mozilla=mozilla
diff --git a/filter/Configuration_filter.mk b/filter/Configuration_filter.mk
index b629c0b..5b41bda 100644
--- a/filter/Configuration_filter.mk
+++ b/filter/Configuration_filter.mk
@@ -329,6 +329,7 @@ $(call filter_Configuration_add_types,fcfg_langpack,fcfg_writer_types.xcu,filter
 	generic_Text \
 	writer_MIZI_Hwp_97 \
 	writer_StarOffice_XML_Writer_Template \
+	pdf_Portable_Document_Format \
 	writer8_template \
 	writer8 \
 	writer_MS_Word_2003_XML \
@@ -338,15 +339,6 @@ $(call filter_Configuration_add_types,fcfg_langpack,fcfg_writer_types.xcu,filter
 	writer_OOXML_Template \
 	writer_layout_dump_xml \
 )
-ifeq ($(ENABLE_PDFIMPORT),YES)
-$(call filter_Configuration_add_types,fcfg_langpack,fcfg_writer_types.xcu,filter/source/config/fragments/types,\
-	pdf_Portable_Document_Format_import \
-)
-else
-$(call filter_Configuration_add_types,fcfg_langpack,fcfg_writer_types.xcu,filter/source/config/fragments/types,\
-	pdf_Portable_Document_Format \
-)
-endif
 
 $(call filter_Configuration_add_filters,fcfg_langpack,fcfg_writer_filters.xcu,filter/source/config/fragments/filters,\
 	HTML__StarWriter_ \
@@ -401,17 +393,9 @@ $(call filter_Configuration_add_types,fcfg_langpack,fcfg_web_types.xcu,filter/so
 	writer_web_HTML_help \
 	writer_StarOffice_XML_Writer \
 	writer_web_StarOffice_XML_Writer_Web_Template \
-	writerweb8_writer_template \
-)
-ifeq ($(ENABLE_PDFIMPORT),YES)
-$(call filter_Configuration_add_types,fcfg_langpack,fcfg_web_types.xcu,filter/source/config/fragments/types,\
-	pdf_Portable_Document_Format_import \
-)
-else
-$(call filter_Configuration_add_types,fcfg_langpack,fcfg_web_types.xcu,filter/source/config/fragments/types,\
 	pdf_Portable_Document_Format \
+	writerweb8_writer_template \
 )
-endif
 
 $(call filter_Configuration_add_filters,fcfg_langpack,fcfg_web_filters.xcu,filter/source/config/fragments/filters,\
 	HTML \
@@ -440,17 +424,9 @@ $(call filter_Configuration_add_types,fcfg_langpack,fcfg_global_types.xcu,filter
 	generic_Text \
 	writer_StarOffice_XML_Writer \
 	writer_globaldocument_StarOffice_XML_Writer_GlobalDocument \
-	writerglobal8 \
-)
-ifeq ($(ENABLE_PDFIMPORT),YES)
-$(call filter_Configuration_add_types,fcfg_langpack,fcfg_global_types.xcu,filter/source/config/fragments/types,\
-	pdf_Portable_Document_Format_import \
-)
-else
-$(call filter_Configuration_add_types,fcfg_langpack,fcfg_global_types.xcu,filter/source/config/fragments/types,\
 	pdf_Portable_Document_Format \
+	writerglobal8 \
 )
-endif
 
 $(call filter_Configuration_add_filters,fcfg_langpack,fcfg_global_filters.xcu,filter/source/config/fragments/filters,\
 	Text__encoded___StarWriter_GlobalDocument_ \
@@ -489,6 +465,7 @@ $(call filter_Configuration_add_types,fcfg_langpack,fcfg_calc_types.xcu,filter/s
 	calc_SYLK \
 	calc_StarOffice_XML_Calc \
 	calc_StarOffice_XML_Calc_Template \
+	pdf_Portable_Document_Format \
 	calc_dBase\
 	calc8 \
 	calc8_template \
@@ -499,15 +476,6 @@ $(call filter_Configuration_add_types,fcfg_langpack,fcfg_calc_types.xcu,filter/s
 	calc_OOXML \
 	calc_OOXML_Template \
 )
-ifeq ($(ENABLE_PDFIMPORT),YES)
-$(call filter_Configuration_add_types,fcfg_langpack,fcfg_calc_types.xcu,filter/source/config/fragments/types,\
-	pdf_Portable_Document_Format_import \
-)
-else
-$(call filter_Configuration_add_types,fcfg_langpack,fcfg_calc_types.xcu,filter/source/config/fragments/types,\
-	pdf_Portable_Document_Format \
-)
-endif
 
 $(call filter_Configuration_add_filters,fcfg_langpack,fcfg_calc_filters.xcu,filter/source/config/fragments/filters,\
 	DIF \
@@ -564,6 +532,7 @@ $(call filter_Configuration_add_ui_filters,fcfg_langpack,filter/source/config/fr
 $(call filter_Configuration_add_types,fcfg_langpack,fcfg_draw_types.xcu,filter/source/config/fragments/types,\
 	draw_StarOffice_XML_Draw \
 	draw_StarOffice_XML_Draw_Template \
+	pdf_Portable_Document_Format \
 	draw8 \
 	draw8_template \
 	draw_WordPerfect_Graphics \
@@ -572,15 +541,6 @@ $(call filter_Configuration_add_types,fcfg_langpack,fcfg_draw_types.xcu,filter/s
 	draw_CorelDraw_Document \
 	draw_Corel_Presentation_Exchange \
 )
-ifeq ($(ENABLE_PDFIMPORT),YES)
-$(call filter_Configuration_add_types,fcfg_langpack,fcfg_draw_types.xcu,filter/source/config/fragments/types,\
-	pdf_Portable_Document_Format_import \
-)
-else
-$(call filter_Configuration_add_types,fcfg_langpack,fcfg_draw_types.xcu,filter/source/config/fragments/types,\
-	pdf_Portable_Document_Format \
-)
-endif
 
 $(call filter_Configuration_add_filters,fcfg_langpack,fcfg_draw_filters.xcu,filter/source/config/fragments/filters,\
 	StarOffice_XML__Draw_ \
@@ -610,6 +570,7 @@ $(call filter_Configuration_add_types,fcfg_langpack,fcfg_impress_types.xcu,filte
 	impress_MS_PowerPoint_97_Vorlage \
 	impress_StarOffice_XML_Impress \
 	impress_StarOffice_XML_Impress_Template \
+	pdf_Portable_Document_Format \
 	pwp_PlaceWare \
 	impress8 \
 	impress8_template \
@@ -621,15 +582,6 @@ $(call filter_Configuration_add_types,fcfg_langpack,fcfg_impress_types.xcu,filte
 	impress_OOXML_Presentation_Template \
 	impress_OOXML_Presentation_AutoPlay \
 )
-ifeq ($(ENABLE_PDFIMPORT),YES)
-$(call filter_Configuration_add_types,fcfg_langpack,fcfg_impress_types.xcu,filter/source/config/fragments/types,\
-	pdf_Portable_Document_Format_import \
-)
-else
-$(call filter_Configuration_add_types,fcfg_langpack,fcfg_impress_types.xcu,filter/source/config/fragments/types,\
-	pdf_Portable_Document_Format \
-)
-endif
 
 $(call filter_Configuration_add_filters,fcfg_langpack,fcfg_impress_filters.xcu,filter/source/config/fragments/filters,\
 	MS_PowerPoint_97 \
@@ -690,17 +642,9 @@ $(call filter_Configuration_add_types,fcfg_langpack,fcfg_math_types.xcu,filter/s
 	math_MathML_XML_Math \
 	math_MathType_3x \
 	math_StarOffice_XML_Math \
-	math8 \
-)
-ifeq ($(ENABLE_PDFIMPORT),YES)
-$(call filter_Configuration_add_types,fcfg_langpack,fcfg_math_types.xcu,filter/source/config/fragments/types,\
-	pdf_Portable_Document_Format_import \
-)
-else
-$(call filter_Configuration_add_types,fcfg_langpack,fcfg_math_types.xcu,filter/source/config/fragments/types,\
 	pdf_Portable_Document_Format \
+	math8 \
 )
-endif
 
 $(call filter_Configuration_add_filters,fcfg_langpack,fcfg_math_filters.xcu,filter/source/config/fragments/filters,\
 	MathML_XML__Math_ \
diff --git a/filter/source/config/fragments/types/pdf_Portable_Document_Format_import.xcu b/filter/source/config/fragments/types/pdf_Portable_Document_Format_import.xcu
deleted file mode 100644
index ab0ec52..0000000
--- a/filter/source/config/fragments/types/pdf_Portable_Document_Format_import.xcu
+++ /dev/null
@@ -1,29 +0,0 @@
-<!--
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- *   Licensed to the Apache Software Foundation (ASF) under one or more
- *   contributor license agreements. See the NOTICE file distributed
- *   with this work for additional information regarding copyright
- *   ownership. The ASF licenses this file to you under the Apache
- *   License, Version 2.0 (the "License"); you may not use this file
- *   except in compliance with the License. You may obtain a copy of
- *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
- -->
-    <node oor:name="pdf_Portable_Document_Format" oor:op="replace" >
-        <prop oor:name="DetectService"><value>org.libreoffice.comp.documents.PDFDetector</value></prop>
-        <prop oor:name="URLPattern"/>
-        <prop oor:name="Extensions"><value>pdf</value></prop>
-        <prop oor:name="MediaType"><value>application/pdf</value></prop>
-        <prop oor:name="Preferred"><value>true</value></prop>
-        <prop oor:name="PreferredFilter"><value>draw_pdf_import</value></prop>
-        <prop oor:name="UIName">
-            <value>PDF - Portable Document Format (Draw)</value>
-        </prop>
-        <prop oor:name="ClipboardFormat"/>
-    </node>
diff --git a/officecfg/registry/data/org/openoffice/Setup.xcu b/officecfg/registry/data/org/openoffice/Setup.xcu
index 2c25173..05ddaac 100644
--- a/officecfg/registry/data/org/openoffice/Setup.xcu
+++ b/officecfg/registry/data/org/openoffice/Setup.xcu
@@ -795,6 +795,9 @@
               <value>
                 <it>com.sun.PresenterScreen-*</it>
                 <it>com.sun.star.PDFImport-*</it>
+                    <!-- arguably, dropping PDFImport extensions should be
+                         conditional on having in-core PDF import actually built
+                         and installed -->
               </value>
             </prop>
           </node>
diff --git a/postprocess/packcomponents/makefile.mk b/postprocess/packcomponents/makefile.mk
index a195b66..2758f25 100644
--- a/postprocess/packcomponents/makefile.mk
+++ b/postprocess/packcomponents/makefile.mk
@@ -302,7 +302,7 @@ my_components += \
 my_components += component/extensions/source/plugin/pl
 .END
 
-.IF "$(ENABLE_PDFIMPORT)" == "YES"
+.IF "$(ENABLE_PDFIMPORT)" == "TRUE"
 my_components += component/sdext/source/pdfimport/pdfimport
 .END
 
diff --git a/postprocess/packregistry/makefile.mk b/postprocess/packregistry/makefile.mk
index 5877fe6..f353ef2 100644
--- a/postprocess/packregistry/makefile.mk
+++ b/postprocess/packregistry/makefile.mk
@@ -342,9 +342,6 @@ MY_FILES_main += \
     $(MY_MOD)/org/openoffice/Office/DataAccess/Drivers-jdbc.xcu
 MY_DRIVERS += hsqldb jdbc
 .END
-.IF "$(ENABLE_PDFIMPORT)" == "YES"
-MY_FILES_main += pdfimport/pdf_import_filter.xcu
-.END
 .IF "$(ENABLE_TDEAB)" == "TRUE"
 MY_FILES_main += $(MY_MOD)/org/openoffice/Office/DataAccess/Drivers-tdeab.xcu
 .END
@@ -470,6 +467,16 @@ MY_FILES_ogltrans = \
     $(MY_MOD)/org/openoffice/Office/Impress-ogltrans.xcu
 .END
 
+.IF "$(ENABLE_PDFIMPORT)" == "TRUE"
+MY_XCDS += $(MISC)/pdfimport.xcd
+MY_OPTDEPS_pdfimport = calc draw impress math writer
+    # HACK: for all fcfg_X_types.xcu in filter/Configuration_filter.mk that
+    # include pdf_Portable_Document_Format (i.e., X in calc, draw, global,
+    # impress, math, web, writer), add optional dependencies on those XCDS that
+    # include those fcfg_X_types.xcu
+MY_FILES_pdfimport = pdfimport/pdf_import_filter.xcu pdfimport/pdf_types.xcu
+.END
+
 .IF "$(GUIBASE)" == "WIN"
 MY_XCDS += $(MISC)/forcedefault.xcd
 MY_DEPS_forcedefault = main
@@ -497,6 +504,8 @@ $(MISC)/%.xcd .ERRREMOVE : $(MISC)/%.list
 $(MISC)/%.list : makefile.mk
     - $(RM) $@
     echo '<list>' $(foreach,i,$(MY_DEPS_$(@:b)) '<dependency file="$i"/>') \
+        $(foreach,i,$(MY_OPTDEPS_$(@:b)) \
+            '<dependency file="$i" optional="true"/>') \
         $(foreach,i,$(MY_FILES_$(@:b)) '<filename>$i</filename>') '</list>' > $@
 
 $(MISC)/lang/Langpack-{$(alllangiso)}.xcd : $(SOLARXMLDIR)/$(MY_MOD)/$$(@:b).xcu
diff --git a/scp2/InstallModule_ooo.mk b/scp2/InstallModule_ooo.mk
index 57676b3..23fbb67 100644
--- a/scp2/InstallModule_ooo.mk
+++ b/scp2/InstallModule_ooo.mk
@@ -230,4 +230,10 @@ $(eval $(call gb_InstallModule_add_localized_scpfiles,scp2/ooo,\
     scp2/source/ooo/module_systemint \
 ))
 
+ifeq ($(ENABLE_PDFIMPORT),TRUE)
+$(eval $(call gb_InstallModule_add_scpfiles,scp2/ooo,\
+    scp2/source/ooo/module_pdfimport \
+))
+endif
+
 # vim: set shiftwidth=4 tabstop=4 noexpandtab:
diff --git a/scp2/source/ooo/file_library_ooo.scp b/scp2/source/ooo/file_library_ooo.scp
index 090abbc..6141f0e 100644
--- a/scp2/source/ooo/file_library_ooo.scp
+++ b/scp2/source/ooo/file_library_ooo.scp
@@ -903,19 +903,6 @@ STD_LIB_FILE( gid_File_Lib_Log, log)
 
 STD_LIB_FILE( gid_File_Lib_Pdffilter, pdffilter)
 
-#if !defined WITHOUT_PDFIMPORT
-File gid_File_PDFImport
-    TXT_FILE_BODY;
-    Dir = SCP2_OOO_BIN_DIR;
-#if defined UNX
-    Name = STRING(CONCAT2(pdfimport.uno,UNXSUFFIX));
-#else
-    Name = "pdfimport.uno.dll";
-#endif
-    Styles = (PACKED);
-End
-#endif
-
 SPECIAL_LIB_FILE(gid_File_Lib_Deployment,deployment)
 
 SPECIAL_LIB_FILE(gid_File_Lib_DeploymentGui,deploymentgui)
diff --git a/scp2/source/ooo/file_ooo.scp b/scp2/source/ooo/file_ooo.scp
index 9079a4f..6b30e72 100644
--- a/scp2/source/ooo/file_ooo.scp
+++ b/scp2/source/ooo/file_ooo.scp
@@ -115,29 +115,6 @@ File gid_File_Exe_Nsplugin
 End
 #endif
 
-#if !defined WITHOUT_PDFIMPORT
-
-Directory gid_Dir_Share_Xpdfimport
-    ParentID = gid_Brand_Dir_Share;
-    DosName = "xpdfimport";
-End
-
-File gid_File_Dat_XpdfimportErrPdf
-    TXT_FILE_BODY;
-    Dir = gid_Dir_Share_Xpdfimport;
-    Name = "xpdfimport_err.pdf";
-    Styles = (PACKED);
-End
-
-File gid_File_Exe_Xpdfimport
-    BIN_FILE_BODY;
-    Dir = gid_Brand_Dir_Program;
-    Name = EXENAME(xpdfimport);
-    Styles = (PACKED);
-End
-
-#endif
-
 File gid_File_Bin_Gengal
     BIN_FILE_BODY;
     Dir = gid_Brand_Dir_Program;
diff --git a/scp2/source/ooo/module_hidden_ooo.scp b/scp2/source/ooo/module_hidden_ooo.scp
index 0949760..13bb7b7 100644
--- a/scp2/source/ooo/module_hidden_ooo.scp
+++ b/scp2/source/ooo/module_hidden_ooo.scp
@@ -180,8 +180,6 @@ Module gid_Module_Root_Files_4
 	Default = YES;
 	Styles = (HIDDEN_ROOT);
 	Files = (gid_File_Dat_Root4,
-        gid_File_Dat_XpdfimportErrPdf,
-        gid_File_Exe_Xpdfimport,
 	gid_File_Filter_Eme,
 	gid_File_Filter_Sdfilt,
 	gid_File_Filter_Svgio,
@@ -237,7 +235,6 @@ Module gid_Module_Root_Files_4
 	gid_File_Lib_Oox,
 	gid_File_Lib_Pcr,
 	gid_File_Lib_Pdffilter,
-        gid_File_Lib_PdfImport,
 	gid_File_Lib_Pk,
 	gid_File_Lib_Pl,
 	gid_File_Lib_Sf_Prothdlr,
diff --git a/scp2/source/ooo/module_pdfimport.scp b/scp2/source/ooo/module_pdfimport.scp
new file mode 100644
index 0000000..897bd6c
--- /dev/null
+++ b/scp2/source/ooo/module_pdfimport.scp
@@ -0,0 +1,72 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+// This module is normally included unconditionally in the core installation, it
+// provides various import filters for both plain PDF and hybrid PDF/ODF.  For
+// --with-system-poppler builds it can be advantageous though to package this
+// module as an individual, optional part, so that the core installation does
+// not feature a dependency on a poppler package.
+//
+// The
+// /org.openoffice.TypeDetection.Types/Types/pdf_Portable_Document_Format
+// configuration node contained in pdfimport.xcd needs to override a
+// node with the same name but which lacks import functionality and
+// which is duplicated across calc, draw, impress, math, writer .xcd
+// files.  For this to work, there is a hack in
+// postprocess/packregistry/makefile.mk to make pdfimport.xcd depend
+// on all those other .xcd files (optinally, as not all of the other
+// .xcd files need to be present in a given installation).
+
+#include "macros.inc"
+
+Module gid_Module_Pdfimport
+    ParentID = gid_Module_Root_Brand;
+    Styles = (HIDDEN_ROOT);
+    Dirs = (gid_Dir_Share_Xpdfimport);
+    Files = (
+        gid_File_Dat_XpdfimportErrPdf,
+        gid_File_Exe_Xpdfimport,
+        gid_File_Lib_PdfimportUno,
+        gid_File_Xcd_Pdfimport);
+End
+
+Directory gid_Dir_Share_Xpdfimport
+    ParentID = gid_Brand_Dir_Share;
+    DosName = "xpdfimport";
+End
+
+File gid_File_Dat_XpdfimportErrPdf
+    TXT_FILE_BODY;
+    Dir = gid_Dir_Share_Xpdfimport;
+    Name = "xpdfimport_err.pdf";
+    Styles = (PACKED);
+End
+
+File gid_File_Exe_Xpdfimport
+    BIN_FILE_BODY;
+    Dir = gid_Brand_Dir_Program;
+    Name = EXENAME(xpdfimport);
+    Styles = (PACKED);
+End
+
+File gid_File_Lib_PdfimportUno
+    TXT_FILE_BODY;
+    Dir = gid_Brand_Dir_Program;
+    Name = SCP2_URE_DL_BARE("pdfimport.uno");
+    Styles = (PACKED);
+End
+
+File gid_File_Xcd_Pdfimport
+    TXT_FILE_BODY;
+    Dir = gid_Brand_Dir_Share_Registry;
+    Name = "pdfimport.xcd";
+    Styles = (PACKED);
+End
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/Module_sdext.mk b/sdext/Module_sdext.mk
index 2d506be..726b147 100644
--- a/sdext/Module_sdext.mk
+++ b/sdext/Module_sdext.mk
@@ -40,7 +40,7 @@ $(eval $(call gb_Module_add_targets,sdext,\
 ))
 endif
 
-ifeq ($(ENABLE_PDFIMPORT),YES)
+ifeq ($(ENABLE_PDFIMPORT),TRUE)
 $(eval $(call gb_Module_add_targets,sdext,\
     Executable_xpdfimport \
     Library_pdfimport \
diff --git a/sdext/Package_pdfimport_xcu.mk b/sdext/Package_pdfimport_xcu.mk
index 2dcf39c..cbc0971 100644
--- a/sdext/Package_pdfimport_xcu.mk
+++ b/sdext/Package_pdfimport_xcu.mk
@@ -10,5 +10,6 @@
 $(eval $(call gb_Package_Package,pdfimport_xcu,$(SRCDIR)/sdext))
 
 $(eval $(call gb_Package_add_file,pdfimport_xcu,xml/pdfimport/pdf_import_filter.xcu,source/pdfimport/config/pdf_import_filter.xcu))
+$(eval $(call gb_Package_add_file,pdfimport_xcu,xml/pdfimport/pdf_types.xcu,source/pdfimport/config/pdf_types.xcu))
 
 # vim: set noet sw=4 ts=4:
diff --git a/sdext/source/pdfimport/config/pdf_types.xcu b/sdext/source/pdfimport/config/pdf_types.xcu
new file mode 100644
index 0000000..c3d538b
--- /dev/null
+++ b/sdext/source/pdfimport/config/pdf_types.xcu
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE oor:component-data SYSTEM "../../../../component-update.dtd">
+<!--
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ *   Licensed to the Apache Software Foundation (ASF) under one or more
+ *   contributor license agreements. See the NOTICE file distributed
+ *   with this work for additional information regarding copyright
+ *   ownership. The ASF licenses this file to you under the Apache
+ *   License, Version 2.0 (the "License"); you may not use this file
+ *   except in compliance with the License. You may obtain a copy of
+ *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ -->
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:package="org.openoffice.TypeDetection" oor:name="Types">
+    <node oor:name="Types">
+    <node oor:name="pdf_Portable_Document_Format" oor:op="replace" >
+        <prop oor:name="DetectService"><value>org.libreoffice.comp.documents.PDFDetector</value></prop>
+        <prop oor:name="URLPattern"/>
+        <prop oor:name="Extensions"><value>pdf</value></prop>
+        <prop oor:name="MediaType"><value>application/pdf</value></prop>
+        <prop oor:name="Preferred"><value>true</value></prop>
+        <prop oor:name="PreferredFilter"><value>draw_pdf_import</value></prop>
+        <prop oor:name="UIName">
+            <value>PDF - Portable Document Format (Draw)</value>
+        </prop>
+        <prop oor:name="ClipboardFormat"/>
+    </node>
+    </node>
+</oor:component-data>
diff --git a/sdext/source/pdfimport/test/testdocs/makefile.mk b/sdext/source/pdfimport/test/testdocs/makefile.mk
index d5c3ac3..273ebb6 100644
--- a/sdext/source/pdfimport/test/testdocs/makefile.mk
+++ b/sdext/source/pdfimport/test/testdocs/makefile.mk
@@ -33,7 +33,7 @@ TESTFILES=\
     verticaltext.pdf
 
 # --- Fake uno bootstrap ------------------------
-.IF "$(ENABLE_PDFIMPORT)" != "NO"
+.IF "$(ENABLE_PDFIMPORT)" == "TRUE"
 
 $(BIN)$/pdfi_unittest_test.ini : makefile.mk
     rm -f $@
diff --git a/sdext/source/pdfimport/xpdftest/makefile.mk b/sdext/source/pdfimport/xpdftest/makefile.mk
index 985a620..bb9fed8 100644
--- a/sdext/source/pdfimport/xpdftest/makefile.mk
+++ b/sdext/source/pdfimport/xpdftest/makefile.mk
@@ -26,7 +26,7 @@ ENABLE_EXCEPTIONS=TRUE
 
 .INCLUDE: settings.mk
 
-.IF "$(ENABLE_PDFIMPORT)" == "NO"
+.IF "$(ENABLE_PDFIMPORT)" == "FALSE"
 @all:
     @echo "PDF Import extension disabled."
 .ENDIF
commit 053108588dd634838457ba81e7dc70e82aa50e02
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Thu Nov 29 11:23:09 2012 +0100

    Support optional dependencies among .xcd files
    
    ...that are effectively ignored if the depended-on file does not exist.  This
    will be needed by a subsequent commit to make PDF Import optionally installable.
    
    Change-Id: I2283be3ce75f52811a371f41aa8784f507425ee3

diff --git a/configmgr/source/components.cxx b/configmgr/source/components.cxx
index 6476cd8..82b4be7 100644
--- a/configmgr/source/components.cxx
+++ b/configmgr/source/components.cxx
@@ -23,6 +23,7 @@
 #include <cassert>
 #include <cstddef>
 #include <list>
+#include <set>
 
 #include "com/sun/star/beans/Optional.hpp"
 #include "com/sun/star/beans/UnknownPropertyException.hpp"
@@ -92,7 +93,7 @@ void parseXcsFile(
     assert(partial == 0 && modifications == 0 && additions == 0);
     (void) partial; (void) modifications; (void) additions;
     bool ok = rtl::Reference< ParseManager >(
-        new ParseManager(url, new XcsParser(layer, data)))->parse();
+        new ParseManager(url, new XcsParser(layer, data)))->parse(0);
     assert(ok);
     (void) ok; // avoid warnings
 }
@@ -107,7 +108,7 @@ void parseXcuFile(
         new ParseManager(
             url,
             new XcuParser(layer, data, partial, modifications, additions)))->
-        parse();
+        parse(0);
     assert(ok);
     (void) ok; // avoid warnings
 }
@@ -724,7 +725,8 @@ void Components::parseXcdFiles(int layer, rtl::OUString const & url) {
             css::uno::Reference< css::uno::XInterface >());
     }
     UnresolvedList unres;
-    XcdParser::Dependencies deps;
+    std::set< OUString > existingDeps;
+    std::set< OUString > processedDeps;
     for (;;) {
         osl::DirectoryItem i;
         osl::FileBase::RC rc = dir.getNextItem(i, SAL_MAX_UINT32);
@@ -758,10 +760,12 @@ void Components::parseXcdFiles(int layer, rtl::OUString const & url) {
                 rtl::OUString name(
                     file.copy(
                         0, file.getLength() - RTL_CONSTASCII_LENGTH(".xcd")));
+                existingDeps.insert(name);
                 rtl::Reference< ParseManager > manager;
                 try {
                     manager = new ParseManager(
-                        stat.getFileURL(), new XcdParser(layer, deps, data_));
+                        stat.getFileURL(),
+                        new XcdParser(layer, processedDeps, data_));
                 } catch (css::container::NoSuchElementException & e) {
                     throw css::uno::RuntimeException(
                         (rtl::OUString(
@@ -770,8 +774,8 @@ void Components::parseXcdFiles(int layer, rtl::OUString const & url) {
                          e.Message),
                         css::uno::Reference< css::uno::XInterface >());
                 }
-                if (manager->parse()) {
-                    deps.insert(name);
+                if (manager->parse(0)) {
+                    processedDeps.insert(name);
                 } else {
                     unres.push_back(UnresolvedListItem(name, manager));
                 }
@@ -781,8 +785,8 @@ void Components::parseXcdFiles(int layer, rtl::OUString const & url) {
     while (!unres.empty()) {
         bool resolved = false;
         for (UnresolvedList::iterator i(unres.begin()); i != unres.end();) {
-            if (i->manager->parse()) {
-                deps.insert(i->name);
+            if (i->manager->parse(&existingDeps)) {
+                processedDeps.insert(i->name);
                 unres.erase(i++);
                 resolved = true;
             } else {
diff --git a/configmgr/source/parsemanager.cxx b/configmgr/source/parsemanager.cxx
index a280f95..27f3f20 100644
--- a/configmgr/source/parsemanager.cxx
+++ b/configmgr/source/parsemanager.cxx
@@ -20,6 +20,7 @@
 #include "sal/config.h"
 
 #include <cassert>
+#include <set>
 
 #include "com/sun/star/container/NoSuchElementException.hpp"
 #include "com/sun/star/uno/RuntimeException.hpp"
@@ -62,7 +63,7 @@ ParseManager::ParseManager(
     (void)id;
 }
 
-bool ParseManager::parse() {
+bool ParseManager::parse(std::set< OUString > const * existingDependencies) {
     for (;;) {
         switch (itemData_.is()
                 ? xmlreader::XmlReader::RESULT_BEGIN
@@ -70,7 +71,8 @@ bool ParseManager::parse() {
                     parser_->getTextMode(), &itemData_, &itemNamespaceId_))
         {
         case xmlreader::XmlReader::RESULT_BEGIN:
-            if (!parser_->startElement(reader_, itemNamespaceId_, itemData_))
+            if (!parser_->startElement(
+                    reader_, itemNamespaceId_, itemData_, existingDependencies))
             {
                 return false;
             }
diff --git a/configmgr/source/parsemanager.hxx b/configmgr/source/parsemanager.hxx
index bf88643..2760ab2 100644
--- a/configmgr/source/parsemanager.hxx
+++ b/configmgr/source/parsemanager.hxx
@@ -22,6 +22,8 @@
 
 #include "sal/config.h"
 
+#include <set>
+
 #include "com/sun/star/container/NoSuchElementException.hpp"
 #include "com/sun/star/uno/RuntimeException.hpp"
 #include "rtl/ref.hxx"
@@ -44,7 +46,7 @@ public:
             com::sun::star::container::NoSuchElementException,
             com::sun::star::uno::RuntimeException));
 
-    bool parse();
+    bool parse(std::set< rtl::OUString > const * existingDependencies);
 
     enum { NAMESPACE_OOR = 1, NAMESPACE_XS = 2, NAMESPACE_XSI = 3 };
 
diff --git a/configmgr/source/parser.hxx b/configmgr/source/parser.hxx
index 69afc4c..c2e905c 100644
--- a/configmgr/source/parser.hxx
+++ b/configmgr/source/parser.hxx
@@ -23,10 +23,12 @@
 #include "sal/config.h"
 
 #include <memory>
+#include <set>
 
 #include "salhelper/simplereferenceobject.hxx"
 #include "xmlreader/xmlreader.hxx"
 
+namespace rtl { class OUString; }
 namespace xmlreader { struct Span; }
 
 namespace configmgr {
@@ -36,8 +38,8 @@ public:
     virtual xmlreader::XmlReader::Text getTextMode() = 0;
 
     virtual bool startElement(
-        xmlreader::XmlReader & reader, int nsId, xmlreader::Span const & name)
-        = 0;
+        xmlreader::XmlReader & reader, int nsId, xmlreader::Span const & name,
+        std::set< rtl::OUString > const * existingDependencies) = 0;
 
     virtual void endElement(xmlreader::XmlReader const & reader) = 0;
 
diff --git a/configmgr/source/valueparser.cxx b/configmgr/source/valueparser.cxx
index 929d52c..75ddef2 100644
--- a/configmgr/source/valueparser.cxx
+++ b/configmgr/source/valueparser.cxx
@@ -20,6 +20,7 @@
 #include "sal/config.h"
 
 #include <cassert>
+#include <set>
 
 #include "com/sun/star/uno/Any.hxx"
 #include "com/sun/star/uno/Reference.hxx"
@@ -287,7 +288,8 @@ xmlreader::XmlReader::Text ValueParser::getTextMode() const {
 }
 
 bool ValueParser::startElement(
-    xmlreader::XmlReader & reader, int nsId, xmlreader::Span const & name)
+    xmlreader::XmlReader & reader, int nsId, xmlreader::Span const & name,
+    std::set< rtl::OUString > const *)
 {
     if (!node_.is()) {
         return false;
diff --git a/configmgr/source/valueparser.hxx b/configmgr/source/valueparser.hxx
index 19a1753..de28ce6 100644
--- a/configmgr/source/valueparser.hxx
+++ b/configmgr/source/valueparser.hxx
@@ -22,6 +22,7 @@
 
 #include "sal/config.h"
 
+#include <set>
 #include <vector>
 
 #include "boost/noncopyable.hpp"
@@ -51,7 +52,8 @@ public:
     xmlreader::XmlReader::Text getTextMode() const;
 
     bool startElement(
-        xmlreader::XmlReader & reader, int nsId, xmlreader::Span const & name);
+        xmlreader::XmlReader & reader, int nsId, xmlreader::Span const & name,
+        std::set< OUString > const *);
 
     bool endElement();
 
diff --git a/configmgr/source/xcdparser.cxx b/configmgr/source/xcdparser.cxx
index d89f619..d7bc544 100644
--- a/configmgr/source/xcdparser.cxx
+++ b/configmgr/source/xcdparser.cxx
@@ -21,6 +21,7 @@
 
 #include <cassert>
 #include <climits>
+#include <set>
 
 #include "com/sun/star/uno/Reference.hxx"
 #include "com/sun/star/uno/RuntimeException.hpp"
@@ -45,8 +46,10 @@ namespace css = com::sun::star;
 
 }
 
-XcdParser::XcdParser(int layer, Dependencies const & dependencies, Data & data):
-    layer_(layer), dependencies_(dependencies), data_(data), state_(STATE_START)
+XcdParser::XcdParser(
+    int layer, std::set< OUString > const & processedDependencies, Data & data):
+    layer_(layer), processedDependencies_(processedDependencies), data_(data),
+    state_(STATE_START)
 {}
 
 XcdParser::~XcdParser() {}
@@ -57,12 +60,14 @@ xmlreader::XmlReader::Text XcdParser::getTextMode() {
 }
 
 bool XcdParser::startElement(
-    xmlreader::XmlReader & reader, int nsId, xmlreader::Span const & name)
+    xmlreader::XmlReader & reader, int nsId, xmlreader::Span const & name,
+    std::set< OUString > const * existingDependencies)
 {
     if (nestedParser_.is()) {
         assert(nesting_ != LONG_MAX);
         ++nesting_;
-        return nestedParser_->startElement(reader, nsId, name);
+        return nestedParser_->startElement(
+            reader, nsId, name, existingDependencies);
     }
     switch (state_) {
     case STATE_START:
@@ -77,7 +82,8 @@ bool XcdParser::startElement(
         if (nsId == xmlreader::XmlReader::NAMESPACE_NONE &&
             name.equals(RTL_CONSTASCII_STRINGPARAM("dependency")))
         {
-            if (dependency_.isEmpty()) {
+            if (dependencyFile_.isEmpty()) {
+                dependencyOptional_ = false;
                 xmlreader::Span attrFile;
                 for (;;) {
                     int attrNsId;
@@ -90,6 +96,13 @@ bool XcdParser::startElement(
                         attrLn.equals(RTL_CONSTASCII_STRINGPARAM("file")))
                     {
                         attrFile = reader.getAttributeValue(false);
+                    } else if ((attrNsId ==
+                                xmlreader::XmlReader::NAMESPACE_NONE) &&
+                               attrLn.equals(
+                                   RTL_CONSTASCII_STRINGPARAM("optional")))
+                    {
+                        dependencyOptional_ = xmldata::parseBoolean(
+                            reader.getAttributeValue(true));
                     }
                 }
                 if (!attrFile.is()) {
@@ -100,8 +113,8 @@ bool XcdParser::startElement(
                          reader.getUrl()),
                         css::uno::Reference< css::uno::XInterface >());
                 }
-                dependency_ = attrFile.convertFromUtf8();
-                if (dependency_.isEmpty()) {
+                dependencyFile_ = attrFile.convertFromUtf8();
+                if (dependencyFile_.isEmpty()) {
                     throw css::uno::RuntimeException(
                         (rtl::OUString(
                             RTL_CONSTASCII_USTRINGPARAM(
@@ -110,11 +123,16 @@ bool XcdParser::startElement(
                         css::uno::Reference< css::uno::XInterface >());
                 }
             }
-            if (dependencies_.find(dependency_) == dependencies_.end()) {
+            if ((processedDependencies_.find(dependencyFile_) ==
+                 processedDependencies_.end()) &&
+                (!dependencyOptional_ || existingDependencies == 0 ||
+                 (existingDependencies->find(dependencyFile_) !=
+                  existingDependencies->end())))
+            {
                 return false;
             }
             state_ = STATE_DEPENDENCY;
-            dependency_ = rtl::OUString();
+            dependencyFile_ = rtl::OUString();
             return true;
         }
         state_ = STATE_COMPONENTS;
@@ -125,14 +143,16 @@ bool XcdParser::startElement(
         {
             nestedParser_ = new XcsParser(layer_, data_);
             nesting_ = 1;
-            return nestedParser_->startElement(reader, nsId, name);
+            return nestedParser_->startElement(
+                reader, nsId, name, existingDependencies);
         }
         if (nsId == ParseManager::NAMESPACE_OOR &&
             name.equals(RTL_CONSTASCII_STRINGPARAM("component-data")))
         {
             nestedParser_ = new XcuParser(layer_ + 1, data_, 0, 0, 0);
             nesting_ = 1;
-            return nestedParser_->startElement(reader, nsId, name);
+            return nestedParser_->startElement(
+                reader, nsId, name, existingDependencies);
         }
         break;
     default: // STATE_DEPENDENCY
diff --git a/configmgr/source/xcdparser.hxx b/configmgr/source/xcdparser.hxx
index 97d6062..ca17964 100644
--- a/configmgr/source/xcdparser.hxx
+++ b/configmgr/source/xcdparser.hxx
@@ -38,9 +38,9 @@ struct Data;
 
 class XcdParser: public Parser {
 public:
-    typedef std::set< rtl::OUString > Dependencies;
-
-    XcdParser(int layer, Dependencies const & dependencies, Data & data);
+    XcdParser(
+        int layer, std::set< OUString > const & processedDependencies,
+        Data & data);
 
 private:
     virtual ~XcdParser();
@@ -48,7 +48,8 @@ private:
     virtual xmlreader::XmlReader::Text getTextMode();
 
     virtual bool startElement(
-        xmlreader::XmlReader & reader, int nsId, xmlreader::Span const & name);
+        xmlreader::XmlReader & reader, int nsId, xmlreader::Span const & name,
+        std::set< OUString > const * existingDependencies);
 
     virtual void endElement(xmlreader::XmlReader const & reader);
 
@@ -58,10 +59,11 @@ private:
         STATE_START, STATE_DEPENDENCIES, STATE_DEPENDENCY, STATE_COMPONENTS };
 
     int layer_;
-    Dependencies const & dependencies_;
+    std::set< OUString > const & processedDependencies_;
     Data & data_;
     State state_;
-    rtl::OUString dependency_;
+    rtl::OUString dependencyFile_;
+    bool dependencyOptional_;
     rtl::Reference< Parser > nestedParser_;
     long nesting_;
 };
diff --git a/configmgr/source/xcsparser.cxx b/configmgr/source/xcsparser.cxx
index fe760eb..686bfdb 100644
--- a/configmgr/source/xcsparser.cxx
+++ b/configmgr/source/xcsparser.cxx
@@ -21,6 +21,7 @@
 
 #include <cassert>
 #include <cstddef>
+#include <set>
 
 #include "com/sun/star/uno/Any.hxx"
 #include "com/sun/star/uno/Reference.hxx"
@@ -127,9 +128,10 @@ xmlreader::XmlReader::Text XcsParser::getTextMode() {
 }
 
 bool XcsParser::startElement(
-    xmlreader::XmlReader & reader, int nsId, xmlreader::Span const & name)
+    xmlreader::XmlReader & reader, int nsId, xmlreader::Span const & name,
+    std::set< OUString > const * existingDependencies)
 {
-    if (valueParser_.startElement(reader, nsId, name)) {
+    if (valueParser_.startElement(reader, nsId, name, existingDependencies)) {
         return true;
     }
     if (state_ == STATE_START) {
diff --git a/configmgr/source/xcsparser.hxx b/configmgr/source/xcsparser.hxx
index 63ecac7..930f409 100644
--- a/configmgr/source/xcsparser.hxx
+++ b/configmgr/source/xcsparser.hxx
@@ -22,6 +22,7 @@
 
 #include "sal/config.h"
 
+#include <set>
 #include <stack>
 
 #include "rtl/ref.hxx"
@@ -49,7 +50,8 @@ private:
     virtual xmlreader::XmlReader::Text getTextMode();
 
     virtual bool startElement(
-        xmlreader::XmlReader & reader, int nsId, xmlreader::Span const & name);
+        xmlreader::XmlReader & reader, int nsId, xmlreader::Span const & name,
+        std::set< rtl::OUString > const * existingDependencies);
 
     virtual void endElement(xmlreader::XmlReader const & reader);
 
diff --git a/configmgr/source/xcuparser.cxx b/configmgr/source/xcuparser.cxx
index 4967747..56f9e21 100644
--- a/configmgr/source/xcuparser.cxx
+++ b/configmgr/source/xcuparser.cxx
@@ -21,6 +21,7 @@
 
 #include <algorithm>
 #include <cassert>
+#include <set>
 
 #include "com/sun/star/uno/Any.hxx"
 #include "com/sun/star/uno/Reference.hxx"
@@ -77,9 +78,10 @@ xmlreader::XmlReader::Text XcuParser::getTextMode() {
 }
 
 bool XcuParser::startElement(
-    xmlreader::XmlReader & reader, int nsId, xmlreader::Span const & name)
+    xmlreader::XmlReader & reader, int nsId, xmlreader::Span const & name,
+    std::set< OUString > const * existingDependencies)
 {
-    if (valueParser_.startElement(reader, nsId, name)) {
+    if (valueParser_.startElement(reader, nsId, name, existingDependencies)) {
         return true;
     }
     if (state_.empty()) {
diff --git a/configmgr/source/xcuparser.hxx b/configmgr/source/xcuparser.hxx
index 85d63c9..1b9f318 100644
--- a/configmgr/source/xcuparser.hxx
+++ b/configmgr/source/xcuparser.hxx
@@ -22,6 +22,7 @@
 
 #include "sal/config.h"
 
+#include <set>
 #include <stack>
 
 #include "rtl/ref.hxx"
@@ -61,7 +62,8 @@ private:
     virtual xmlreader::XmlReader::Text getTextMode();
 
     virtual bool startElement(
-        xmlreader::XmlReader & reader, int nsId, xmlreader::Span const & name);
+        xmlreader::XmlReader & reader, int nsId, xmlreader::Span const & name,
+        std::set< OUString > const * existingDependencies);
 
     virtual void endElement(xmlreader::XmlReader const & reader);
 
diff --git a/officecfg/registry/data.dtd b/officecfg/registry/data.dtd
index 921814d..2c9bce6 100644
--- a/officecfg/registry/data.dtd
+++ b/officecfg/registry/data.dtd
@@ -22,7 +22,8 @@
 
 <!ELEMENT dependency EMPTY>
 <!ATTLIST dependency
-    file CDATA #REQUIRED>
+    file CDATA #REQUIRED
+    optional (false | true) #IMPLIED>
 
 <!ENTITY % component-schema.dtd SYSTEM "component-schema.dtd">
 %component-schema.dtd;


More information about the Libreoffice-commits mailing list