1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-26 05:02:18 +00:00

textproc/libxml2: Update to 2.9.13 and migrate to CMake

Depend on ICU and (lib)readline to follow other distros

Changelog: https://gitlab.gnome.org/GNOME/libxml2/-/tags/v2.9.13

I'd like to thank both tcberner and mandree for reviewing,
suggesting improvements and helping out in general. I'd also like
thank antoine for doing exp-runs.

PR:		262288
Reviewed by:	tcberner, mandree
Approved by:	desktop (tcberner)
Differential Revision:	https://reviews.freebsd.org/D34338
Exp-run by:	antoine
This commit is contained in:
Daniel Engberg 2022-03-25 17:51:30 +01:00
parent 30bb70e94e
commit a13ec21cd7
20 changed files with 481 additions and 547 deletions

View File

@ -1,81 +1,60 @@
# Created by: Yukihiro Nakai <Nakai@technologist.com>
PORTNAME= libxml2
DISTVERSION= 2.9.12
DISTVERSION= 2.9.13
PORTREVISION?= 0
CATEGORIES?= textproc gnome
MASTER_SITES= http://xmlsoft.org/sources/
MASTER_SITES= GNOME/sources/${PORTNAME}/${DISTVERSION:R}/
DIST_SUBDIR= gnome2
MAINTAINER?= desktop@FreeBSD.org
MAINTAINER= desktop@FreeBSD.org
COMMENT?= XML parser library for GNOME
LICENSE= MIT TRIO
LICENSE_COMB= multi
LICENSE_NAME_TRIO= Trio License
LICENSE_FILE_MIT= ${WRKSRC}/COPYING
LICENSE_FILE_TRIO= ${FILESDIR}/LICENSE.TRIO
LICENSE_PERMS_TRIO= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
LICENSE= MIT
USES+= cmake cpe iconv localbase:ldflags pkgconfig tar:xz
USES+= compiler cpe iconv libtool pathfix pkgconfig shebangfix
GNU_CONFIGURE= yes
CPE_VENDOR= xmlsoft
SHEBANG_FILES= *.py */*.py */*/*.py
USE_LDCONFIG= yes
INSTALL_TARGET= install-strip
TEST_TARGET= check
CONFIGURE_ARGS?=--with-iconv=${ICONV_PREFIX} \
--with-html-dir=${PREFIX}/share/doc \
--with-html-subdir=${PORTNAME} \
--without-icu \
--with-lzma=/usr \
--without-python
PLIST_SUB+= LIBVERSION=${DISTVERSION}
.if !defined(MASTERDIR)
# Don't build with Python support unless requested
CMAKE_${LIBXML2_SLAVE:DON:UOFF}=LIBXML2_WITH_PYTHON
OPTIONS_DEFINE= MEM_DEBUG SCHEMA THREAD_ALLOC THREADS VALIDATION \
XMLLINT_HIST
OPTIONS_DEFAULT= SCHEMA VALIDATION THREADS
OPTIONS_DEFINE= DOCS ICU MEM_DEBUG READLINE TEST THREAD_ALLOC
OPTIONS_DEFAULT= ICU READLINE
OPTIONS_SUB= yes
MEM_DEBUG_DESC= Memory debugging (DEVELOPERS ONLY!)
SCHEMA_DESC= XML schema support
THREAD_ALLOC_DESC= Per-thread memory (DEVELOPERS ONLY!)
VALIDATION_DESC= Validation support
XMLLINT_HIST_DESC= History for xmllint
READLINE_DESC= History for xmllint
MEM_DEBUG_CONFIGURE_WITH= mem-debug
SCHEMA_CONFIGURE_WITH= schemas
THREAD_ALLOC_CONFIGURE_WITH= thread-alloc
THREADS_CONFIGURE_WITH= threads
VALIDATION_CONFIGURE_OFF= --without-valid
XMLLINT_HIST_CONFIGURE_WITH= history
.endif # !defined(MASTERDIR)
.if !defined(MASTERDIR)
post-install:
@${RM} -r ${STAGEDIR}${PREFIX}/share/gtk-doc
.endif
.include <bsd.port.pre.mk>
DOCS_EXTRA_PATCHES_OFF= ${PATCHDIR}/extra-patch-docs
ICU_LIB_DEPENDS= libicudata.so:devel/icu
ICU_CMAKE_BOOL= LIBXML2_WITH_ICU
MEM_DEBUG_CAKE_BOOL= LIBXML2_WITH_MEM_DEBUG
READLINE_LIB_DEPENDS= libreadline.so:devel/readline
READLINE_CMAKE_OFF= -DHAVE_LIBHISTORY=false -DHAVE_LIBREADLINE=false
THREAD_ALLOC_CMAKE_BOOL=LIBXML2_WITH_THREAD_ALLOC
TEST_CMAKE_BOOL= LIBXML2_WITH_TESTS
TEST_TEST_TARGET= test
post-patch:
.for d in . doc doc/devhelp doc/examples
@${REINPLACE_CMD} -e '/^install-data-am:/ s|install-data-local||' \
${WRKSRC}/${d}/Makefile.in
.endfor
.for f in catalog.c xmlcatalog.c xmllint.c doc/xmllint.1
@${REINPLACE_CMD} -e \
's|/etc/xml/catalog|${LOCALBASE}/share/xml/catalog|g; \
s|/etc/sgml/catalog|${LOCALBASE}/share/sgml/catalog|g' \
${WRKSRC}/${f}
.endfor
.if ${CHOSEN_COMPILER_TYPE} == gcc
@${REINPLACE_CMD} -e 's/ -Wno-array-bounds//' ${WRKSRC}/configure
.if !defined(LIBXML2_SLAVE)
post-install:
${RM} ${STAGEDIR}${DOCSDIR}/xmlcatalog.1
${RM} ${STAGEDIR}${DOCSDIR}/xmllint.1.bak
${RM} ${STAGEDIR}${DOCSDIR}/xmllint.1
${RLN} ${STAGEDIR}${PREFIX}/lib/libxml2.so.${DISTVERSION} ${STAGEDIR}${PREFIX}/lib/libxml2.so.2
${INSTALL_DATA} ${WRKSRC}/libxml.m4 ${STAGEDIR}${PREFIX}/share/aclocal/libxml.m4
.endif
.include <bsd.port.post.mk>
.include <bsd.port.mk>

View File

@ -1,3 +1,3 @@
TIMESTAMP = 1622963062
SHA256 (gnome2/libxml2-2.9.12.tar.gz) = c8d6681e38c56f172892c85ddc0852e1fd4b53b4209e7f4ebf17f7e2eae71d92
SIZE (gnome2/libxml2-2.9.12.tar.gz) = 5681632
TIMESTAMP = 1645459375
SHA256 (gnome2/libxml2-2.9.13.tar.xz) = 276130602d12fe484ecc03447ee5e759d0465558fbc9d6bd144e3745306ebf0e
SIZE (gnome2/libxml2-2.9.13.tar.xz) = 3243336

View File

@ -1,12 +0,0 @@
(Following sentences are from trio.c of libxml2-2.9.4.tar.gz.)
Copyright (C) 1998 Bjorn Reese and Daniel Stenberg.
Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND
CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER.

View File

@ -0,0 +1,11 @@
--- CMakeLists.txt.orig 2022-02-22 00:19:24 UTC
+++ CMakeLists.txt
@@ -650,7 +650,7 @@ endif()
install(FILES libxml.3 DESTINATION ${CMAKE_INSTALL_MANDIR}/man3 COMPONENT documentation)
install(FILES doc/xmlcatalog.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 COMPONENT documentation)
install(FILES doc/xmllint.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 COMPONENT documentation)
-install(DIRECTORY doc/ DESTINATION ${CMAKE_INSTALL_DATADIR}/doc/libxml2 COMPONENT documentation PATTERN Makefile.* EXCLUDE)
+#install(DIRECTORY doc/ DESTINATION ${CMAKE_INSTALL_DATADIR}/doc/libxml2 COMPONENT documentation PATTERN Makefile.* EXCLUDE)
configure_package_config_file(
libxml2-config.cmake.cmake.in libxml2-config.cmake

View File

@ -0,0 +1,29 @@
--- CMakeLists.txt.orig 2022-02-19 16:23:47 UTC
+++ CMakeLists.txt
@@ -691,7 +691,7 @@ if(LIBXML2_WITH_PYTHON)
configure_file(python/setup.py.in setup.py @ONLY)
endif()
-set(XML_INCLUDEDIR "-I\${includedir}/libxml2")
+set(XML_INCLUDEDIR "-I\${includedir}/libxml2 -I\${includedir}")
set(XML_LIBDIR "-L\${libdir}")
set(XML_LIBS "-lxml2")
set(XML_PRIVATE_LIBS "${Z_LIBS} ${LZMA_LIBS} ${THREAD_LIBS} ${ICONV_LIBS} ${ICU_LIBS} ${M_LIBS}")
@@ -699,14 +699,14 @@ set(XML_PRIVATE_LIBS "${Z_LIBS} ${LZMA_LIBS} ${THREAD_
file(RELATIVE_PATH PACKAGE_RELATIVE_PATH "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig" "${CMAKE_INSTALL_PREFIX}")
string(REGEX REPLACE "/$" "" PACKAGE_RELATIVE_PATH "${PACKAGE_RELATIVE_PATH}")
-set(prefix "\${pcfiledir}/${PACKAGE_RELATIVE_PATH}")
+set(prefix ${CMAKE_INSTALL_PREFIX})
set(exec_prefix "\${prefix}")
set(libdir "\${prefix}/${CMAKE_INSTALL_LIBDIR}")
set(includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
configure_file(libxml-2.0.pc.in libxml-2.0.pc @ONLY)
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libxml-2.0.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig COMPONENT development)
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libxml-2.0.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}data/pkgconfig COMPONENT development)
-set(prefix "\$(cd \"\$(dirname \"\$0\")\"; pwd -P)/..")
+set(prefix ${CMAKE_INSTALL_PREFIX})
configure_file(xml2-config.in xml2-config @ONLY)
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/xml2-config DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT development)

View File

@ -1,47 +0,0 @@
--- Makefile.in.orig 2021-06-09 19:53:33 UTC
+++ Makefile.in
@@ -760,7 +760,7 @@ man_MANS = xml2-config.1 libxml.3
m4datadir = $(datadir)/aclocal
m4data_DATA = libxml.m4
runtest_SOURCES = runtest.c
-runtest_LDFLAGS =
+runtest_LDFLAGS = -pthread
runtest_DEPENDENCIES = $(DEPS)
runtest_LDADD = $(BASE_THREAD_LIBS) $(RDL_LIBS) $(LDADDS)
testrecurse_SOURCES = testrecurse.c
@@ -808,7 +808,7 @@ testC14N_LDFLAGS =
testC14N_DEPENDENCIES = $(DEPS)
testC14N_LDADD = $(LDADDS)
testThreads_SOURCES = testThreads.c
-testThreads_LDFLAGS =
+testThreads_LDFLAGS = -pthread
testThreads_DEPENDENCIES = $(DEPS)
testThreads_LDADD = $(BASE_THREAD_LIBS) $(LDADDS)
testURI_SOURCES = testURI.c
@@ -1285,7 +1285,7 @@ am--depfiles: $(am__depfiles_remade)
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.c.lo:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -fPIC -DPIC -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@@ -1774,7 +1774,7 @@ check-am: all-am
$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
check: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) check-recursive
-all-am: Makefile $(PROGRAMS) $(LTLIBRARIES) $(SCRIPTS) $(MANS) $(DATA) \
+all-am: Makefile $(LTLIBRARIES) $(SCRIPTS) $(MANS) $(DATA) \
config.h
install-binPROGRAMS: install-libLTLIBRARIES
@@ -1911,7 +1911,7 @@ info: info-recursive
info-am:
-install-data-am: install-cmakeDATA install-data-local \
+install-data-am: install-cmakeDATA \
install-m4dataDATA install-man install-pkgconfigDATA
install-dvi: install-dvi-recursive

View File

@ -1,11 +0,0 @@
--- config.h.in.orig 2018-03-05 15:54:17 UTC
+++ config.h.in
@@ -1,5 +1,8 @@
/* config.h.in. Generated from configure.ac by autoheader. */
+/* XXX */
+#define HAVE_VFSCANF
+
/* Type cast for the gethostbyname() argument */
#undef GETHOSTBYNAME_ARG_CAST

View File

@ -1,11 +0,0 @@
--- configure.orig 2019-10-30 19:14:22 UTC
+++ configure
@@ -15525,6 +15525,8 @@ fi
fi
fi
;;
+ *freebsd*) THREAD_LIBS=""
+ ;;
esac
if test "$WITH_THREADS" = "1" ; then
THREAD_CFLAGS="$THREAD_CFLAGS -D_REENTRANT"

View File

@ -1,211 +0,0 @@
From 85b1792e37b131e7a51af98a37f92472e8de5f3f Mon Sep 17 00:00:00 2001
From: Nick Wellnhofer <wellnhofer@aevum.de>
Date: Tue, 18 May 2021 20:08:28 +0200
Subject: [PATCH] Work around lxml API abuse
Make xmlNodeDumpOutput and htmlNodeDumpFormatOutput work with corrupted
parent pointers. This used to work with the old recursive code but the
non-recursive rewrite required parent pointers to be set correctly.
Unfortunately, lxml relies on the old behavior and passes subtrees with
a corrupted structure. Fall back to a recursive function call if an
invalid parent pointer is detected.
Fixes #255.
---
HTMLtree.c | 46 ++++++++++++++++++++++++++++------------------
xmlsave.c | 31 +++++++++++++++++++++----------
2 files changed, 49 insertions(+), 28 deletions(-)
diff --git a/HTMLtree.c b/HTMLtree.c
index 24434d45..bdd639c7 100644
--- HTMLtree.c
+++ HTMLtree.c
@@ -744,7 +744,7 @@ void
htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
xmlNodePtr cur, const char *encoding ATTRIBUTE_UNUSED,
int format) {
- xmlNodePtr root;
+ xmlNodePtr root, parent;
xmlAttrPtr attr;
const htmlElemDesc * info;
@@ -755,6 +755,7 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
}
root = cur;
+ parent = cur->parent;
while (1) {
switch (cur->type) {
case XML_HTML_DOCUMENT_NODE:
@@ -762,13 +763,25 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
if (((xmlDocPtr) cur)->intSubset != NULL) {
htmlDtdDumpOutput(buf, (xmlDocPtr) cur, NULL);
}
- if (cur->children != NULL) {
+ /* Always validate cur->parent when descending. */
+ if ((cur->parent == parent) && (cur->children != NULL)) {
+ parent = cur;
cur = cur->children;
continue;
}
break;
case XML_ELEMENT_NODE:
+ /*
+ * Some users like lxml are known to pass nodes with a corrupted
+ * tree structure. Fall back to a recursive call to handle this
+ * case.
+ */
+ if ((cur->parent != parent) && (cur->children != NULL)) {
+ htmlNodeDumpFormatOutput(buf, doc, cur, encoding, format);
+ break;
+ }
+
/*
* Get specific HTML info for that node.
*/
@@ -817,6 +830,7 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
(cur->name != NULL) &&
(cur->name[0] != 'p')) /* p, pre, param */
xmlOutputBufferWriteString(buf, "\n");
+ parent = cur;
cur = cur->children;
continue;
}
@@ -825,9 +839,9 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
(info != NULL) && (!info->isinline)) {
if ((cur->next->type != HTML_TEXT_NODE) &&
(cur->next->type != HTML_ENTITY_REF_NODE) &&
- (cur->parent != NULL) &&
- (cur->parent->name != NULL) &&
- (cur->parent->name[0] != 'p')) /* p, pre, param */
+ (parent != NULL) &&
+ (parent->name != NULL) &&
+ (parent->name[0] != 'p')) /* p, pre, param */
xmlOutputBufferWriteString(buf, "\n");
}
@@ -842,9 +856,9 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
break;
if (((cur->name == (const xmlChar *)xmlStringText) ||
(cur->name != (const xmlChar *)xmlStringTextNoenc)) &&
- ((cur->parent == NULL) ||
- ((xmlStrcasecmp(cur->parent->name, BAD_CAST "script")) &&
- (xmlStrcasecmp(cur->parent->name, BAD_CAST "style"))))) {
+ ((parent == NULL) ||
+ ((xmlStrcasecmp(parent->name, BAD_CAST "script")) &&
+ (xmlStrcasecmp(parent->name, BAD_CAST "style"))))) {
xmlChar *buffer;
buffer = xmlEncodeEntitiesReentrant(doc, cur->content);
@@ -902,13 +916,9 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
break;
}
- /*
- * The parent should never be NULL here but we want to handle
- * corrupted documents gracefully.
- */
- if (cur->parent == NULL)
- return;
- cur = cur->parent;
+ cur = parent;
+ /* cur->parent was validated when descending. */
+ parent = cur->parent;
if ((cur->type == XML_HTML_DOCUMENT_NODE) ||
(cur->type == XML_DOCUMENT_NODE)) {
@@ -939,9 +949,9 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
(cur->next != NULL)) {
if ((cur->next->type != HTML_TEXT_NODE) &&
(cur->next->type != HTML_ENTITY_REF_NODE) &&
- (cur->parent != NULL) &&
- (cur->parent->name != NULL) &&
- (cur->parent->name[0] != 'p')) /* p, pre, param */
+ (parent != NULL) &&
+ (parent->name != NULL) &&
+ (parent->name[0] != 'p')) /* p, pre, param */
xmlOutputBufferWriteString(buf, "\n");
}
}
diff --git a/xmlsave.c b/xmlsave.c
index 61a40459..aedbd5e7 100644
--- xmlsave.c
+++ xmlsave.c
@@ -847,7 +847,7 @@ htmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
static void
xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
int format = ctxt->format;
- xmlNodePtr tmp, root, unformattedNode = NULL;
+ xmlNodePtr tmp, root, unformattedNode = NULL, parent;
xmlAttrPtr attr;
xmlChar *start, *end;
xmlOutputBufferPtr buf;
@@ -856,6 +856,7 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
buf = ctxt->buf;
root = cur;
+ parent = cur->parent;
while (1) {
switch (cur->type) {
case XML_DOCUMENT_NODE:
@@ -868,7 +869,9 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
break;
case XML_DOCUMENT_FRAG_NODE:
- if (cur->children != NULL) {
+ /* Always validate cur->parent when descending. */
+ if ((cur->parent == parent) && (cur->children != NULL)) {
+ parent = cur;
cur = cur->children;
continue;
}
@@ -887,7 +890,18 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
break;
case XML_ELEMENT_NODE:
- if ((cur != root) && (ctxt->format == 1) && (xmlIndentTreeOutput))
+ /*
+ * Some users like lxml are known to pass nodes with a corrupted
+ * tree structure. Fall back to a recursive call to handle this
+ * case.
+ */
+ if ((cur->parent != parent) && (cur->children != NULL)) {
+ xmlNodeDumpOutputInternal(ctxt, cur);
+ break;
+ }
+
+ if ((ctxt->level > 0) && (ctxt->format == 1) &&
+ (xmlIndentTreeOutput))
xmlOutputBufferWrite(buf, ctxt->indent_size *
(ctxt->level > ctxt->indent_nr ?
ctxt->indent_nr : ctxt->level),
@@ -942,6 +956,7 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
xmlOutputBufferWrite(buf, 1, ">");
if (ctxt->format == 1) xmlOutputBufferWrite(buf, 1, "\n");
if (ctxt->level >= 0) ctxt->level++;
+ parent = cur;
cur = cur->children;
continue;
}
@@ -1058,13 +1073,9 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
break;
}
- /*
- * The parent should never be NULL here but we want to handle
- * corrupted documents gracefully.
- */
- if (cur->parent == NULL)
- return;
- cur = cur->parent;
+ cur = parent;
+ /* cur->parent was validated when descending. */
+ parent = cur->parent;
if (cur->type == XML_ELEMENT_NODE) {
if (ctxt->level > 0) ctxt->level--;
--
GitLab

View File

@ -0,0 +1,86 @@
From b66ce0bba83febe2f4d119097a0391f5d886c3b4 Mon Sep 17 00:00:00 2001
From: Nick Wellnhofer <wellnhofer@aevum.de>
Date: Tue, 1 Mar 2022 12:39:02 +0100
Subject: [PATCH] Don't include ICU headers in public headers
There's no need to make these implementation details public.
---
configure.ac | 2 --
encoding.c | 14 ++++++++++++++
include/libxml/encoding.h | 21 +++------------------
3 files changed, 17 insertions(+), 20 deletions(-)
diff --git a/encoding.c b/encoding.c
index 0847934a..bfa5a304 100644
--- encoding.c
+++ encoding.c
@@ -48,6 +48,20 @@
#include "buf.h"
#include "enc.h"
+#ifdef LIBXML_ICU_ENABLED
+#include <unicode/ucnv.h>
+/* Size of pivot buffer, same as icu/source/common/ucnv.cpp CHUNK_SIZE */
+#define ICU_PIVOT_BUF_SIZE 1024
+typedef struct _uconv_t uconv_t;
+struct _uconv_t {
+ UConverter *uconv; /* for conversion between an encoding and UTF-16 */
+ UConverter *utf8; /* for conversion between UTF-8 and UTF-16 */
+ UChar pivot_buf[ICU_PIVOT_BUF_SIZE];
+ UChar *pivot_source;
+ UChar *pivot_target;
+};
+#endif
+
static xmlCharEncodingHandlerPtr xmlUTF16LEHandler = NULL;
static xmlCharEncodingHandlerPtr xmlUTF16BEHandler = NULL;
diff --git a/include/libxml/encoding.h b/include/libxml/encoding.h
index c875af6f..77f137f4 100644
--- include/libxml/encoding.h
+++ include/libxml/encoding.h
@@ -27,9 +27,7 @@
#ifdef LIBXML_ICONV_ENABLED
#include <iconv.h>
#endif
-#ifdef LIBXML_ICU_ENABLED
-#include <unicode/ucnv.h>
-#endif
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -128,19 +126,6 @@ typedef int (* xmlCharEncodingOutputFunc)(unsigned char *out, int *outlen,
* Block defining the handlers for non UTF-8 encodings.
* If iconv is supported, there are two extra fields.
*/
-#ifdef LIBXML_ICU_ENABLED
-/* Size of pivot buffer, same as icu/source/common/ucnv.cpp CHUNK_SIZE */
-#define ICU_PIVOT_BUF_SIZE 1024
-struct _uconv_t {
- UConverter *uconv; /* for conversion between an encoding and UTF-16 */
- UConverter *utf8; /* for conversion between UTF-8 and UTF-16 */
- UChar pivot_buf[ICU_PIVOT_BUF_SIZE];
- UChar *pivot_source;
- UChar *pivot_target;
-};
-typedef struct _uconv_t uconv_t;
-#endif
-
typedef struct _xmlCharEncodingHandler xmlCharEncodingHandler;
typedef xmlCharEncodingHandler *xmlCharEncodingHandlerPtr;
struct _xmlCharEncodingHandler {
@@ -152,8 +137,8 @@ struct _xmlCharEncodingHandler {
iconv_t iconv_out;
#endif /* LIBXML_ICONV_ENABLED */
#ifdef LIBXML_ICU_ENABLED
- uconv_t *uconv_in;
- uconv_t *uconv_out;
+ struct _uconv_t *uconv_in;
+ struct _uconv_t *uconv_out;
#endif /* LIBXML_ICU_ENABLED */
};
--
GitLab

View File

@ -1,46 +0,0 @@
From 13ad8736d294536da4cbcd70a96b0a2fbf47070c Mon Sep 17 00:00:00 2001
From: Nick Wellnhofer <wellnhofer@aevum.de>
Date: Tue, 25 May 2021 10:55:25 +0200
Subject: [PATCH] Fix regression in xmlNodeDumpOutputInternal
Commit 85b1792e could cause additional whitespace if xmlNodeDump was
called with a non-zero starting level.
---
xmlsave.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/xmlsave.c b/xmlsave.c
index aedbd5e7..489505f4 100644
--- xmlsave.c
+++ xmlsave.c
@@ -890,6 +890,13 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
break;
case XML_ELEMENT_NODE:
+ if ((cur != root) && (ctxt->format == 1) &&
+ (xmlIndentTreeOutput))
+ xmlOutputBufferWrite(buf, ctxt->indent_size *
+ (ctxt->level > ctxt->indent_nr ?
+ ctxt->indent_nr : ctxt->level),
+ ctxt->indent);
+
/*
* Some users like lxml are known to pass nodes with a corrupted
* tree structure. Fall back to a recursive call to handle this
@@ -900,13 +907,6 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) {
break;
}
- if ((ctxt->level > 0) && (ctxt->format == 1) &&
- (xmlIndentTreeOutput))
- xmlOutputBufferWrite(buf, ctxt->indent_size *
- (ctxt->level > ctxt->indent_nr ?
- ctxt->indent_nr : ctxt->level),
- ctxt->indent);
-
xmlOutputBufferWrite(buf, 1, "<");
if ((cur->ns != NULL) && (cur->ns->prefix != NULL)) {
xmlOutputBufferWriteString(buf, (const char *)cur->ns->prefix);
--
GitLab

View File

@ -1,31 +0,0 @@
From 3e1aad4fe584747fd7d17cc7b2863a78e2d21a77 Mon Sep 17 00:00:00 2001
From: Nick Wellnhofer <wellnhofer@aevum.de>
Date: Wed, 2 Jun 2021 17:31:49 +0200
Subject: [PATCH] Fix XPath recursion limit
Fix accounting of recursion depth when parsing XPath expressions.
This silly bug introduced in commit 804c5297 could lead to spurious
errors when parsing larger expressions or XSLT documents.
Should fix #264.
---
xpath.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/xpath.c b/xpath.c
index 7497ba07..1aa2f1ab 100644
--- xpath.c
+++ xpath.c
@@ -10983,7 +10983,7 @@ xmlXPathCompileExpr(xmlXPathParserContextPtr ctxt, int sort) {
}
if (xpctxt != NULL)
- xpctxt->depth -= 1;
+ xpctxt->depth -= 10;
}
/**
--
GitLab

View File

@ -1,43 +0,0 @@
From 92d9ab4c28842a09ca2b76d3ff2f933e01b6cd6f Mon Sep 17 00:00:00 2001
From: Nick Wellnhofer <wellnhofer@aevum.de>
Date: Mon, 7 Jun 2021 15:09:53 +0200
Subject: [PATCH] Fix whitespace when serializing empty HTML documents
The old, non-recursive HTML serialization code would always terminate
the output with a newline. The new implementation omitted the newline
if the document node had no children. Readd the newline when
serializing empty documents.
Fixes #266.
---
HTMLtree.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/HTMLtree.c b/HTMLtree.c
index bdd639c7..7a2b8558 100644
--- HTMLtree.c
+++ HTMLtree.c
@@ -763,11 +763,15 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
if (((xmlDocPtr) cur)->intSubset != NULL) {
htmlDtdDumpOutput(buf, (xmlDocPtr) cur, NULL);
}
- /* Always validate cur->parent when descending. */
- if ((cur->parent == parent) && (cur->children != NULL)) {
- parent = cur;
- cur = cur->children;
- continue;
+ if (cur->children != NULL) {
+ /* Always validate cur->parent when descending. */
+ if (cur->parent == parent) {
+ parent = cur;
+ cur = cur->children;
+ continue;
+ }
+ } else {
+ xmlOutputBufferWriteString(buf, "\n");
}
break;
--
GitLab

View File

@ -1,9 +0,0 @@
--- libxml-2.0-uninstalled.pc.in.orig 2016-02-09 10:17:32 UTC
+++ libxml-2.0-uninstalled.pc.in
@@ -8,5 +8,5 @@ Name: libXML
Version: @VERSION@
Description: libXML library version2.
Requires:
-Libs: -L${libdir} -lxml2 @ICU_LIBS@ @THREAD_LIBS@ @Z_LIBS@ @LZMA_LIBS@ @ICONV_LIBS@ @M_LIBS@ @LIBS@
+Libs: -L${libdir} -lxml2 @THREAD_LIBS@ @Z_LIBS@ @LZMA_LIBS@ @ICONV_LIBS@ @M_LIBS@ @LIBS@
Cflags: -I${includedir} @XML_INCLUDEDIR@ @XML_CFLAGS@

View File

@ -1,9 +1,11 @@
--- libxml-2.0.pc.in.orig 2016-02-09 10:17:32 UTC
--- libxml-2.0.pc.in.orig 2022-03-08 22:00:47 UTC
+++ libxml-2.0.pc.in
@@ -9,5 +9,5 @@ Version: @VERSION@
@@ -8,6 +8,6 @@ Name: libXML
Version: @VERSION@
Description: libXML library version2.
Requires:
Libs: -L${libdir} -lxml2
-Libs: -L${libdir} -lxml2
-Libs.private: @ICU_LIBS@ @THREAD_LIBS@ @Z_LIBS@ @LZMA_LIBS@ @ICONV_LIBS@ @M_LIBS@ @WIN32_EXTRA_LIBADD@ @LIBS@
+Libs.private: @THREAD_LIBS@ @Z_LIBS@ @LZMA_LIBS@ @ICONV_LIBS@ @M_LIBS@ @WIN32_EXTRA_LIBADD@ @LIBS@
+Libs: -L${libdir} @XML_LIBS@
+Libs.private: @XML_PRIVATE_LIBS@ @WIN32_EXTRA_LIBADD@ @LIBS@
Cflags: @XML_INCLUDEDIR@ @XML_CFLAGS@

View File

@ -1,20 +0,0 @@
--- python/Makefile.in.orig 2019-11-16 14:42:34 UTC
+++ python/Makefile.in
@@ -493,7 +493,7 @@ top_srcdir = @top_srcdir@
# Makefile for libxml2 python library
AUTOMAKE_OPTIONS = 1.4 foreign
-SUBDIRS = . tests
+SUBDIRS = .
docsdir = $(datadir)/doc/libxml2-python-$(LIBXML_VERSION)
dist_docs_DATA = TODO
EXTRA_DIST = \
@@ -513,7 +513,7 @@ EXTRA_DIST = \
@WITH_PYTHON_TRUE@python_LTLIBRARIES = libxml2mod.la
@WITH_PYTHON_TRUE@libxml2mod_la_SOURCES = libxml.c libxml_wrap.h libxml2-py.h libxml2-py.c types.c
@WITH_PYTHON_TRUE@libxml2mod_la_LDFLAGS = $(CYGWIN_EXTRA_LDFLAGS) $(WIN32_EXTRA_LDFLAGS) -module -avoid-version \
-@WITH_PYTHON_TRUE@ $(top_builddir)/libxml2.la $(CYGWIN_EXTRA_PYTHON_LIBADD) $(WIN32_EXTRA_PYTHON_LIBADD) $(PYTHON_LIBS)
+@WITH_PYTHON_TRUE@ -lxml2 $(CYGWIN_EXTRA_PYTHON_LIBADD) $(WIN32_EXTRA_PYTHON_LIBADD) $(PYTHON_LIBS)
@WITH_PYTHON_TRUE@BUILT_SOURCES = libxml2-export.c libxml2-py.h libxml2-py.c
@WITH_PYTHON_TRUE@dist_python_DATA = \

View File

@ -1,11 +0,0 @@
--- python/tests/Makefile.in.orig 2019-11-16 14:42:34 UTC
+++ python/tests/Makefile.in
@@ -387,7 +387,7 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-exampledir = $(datadir)/doc/libxml2-python-$(LIBXML_VERSION)/examples
+exampledir = $(datadir)/examples/py-libxml2
dist_example_DATA = $(PYTESTS) $(XMLS)
PYTESTS = \
build.py \

View File

@ -1,15 +0,0 @@
--- xml2Conf.sh.in.orig 2019-10-22 18:28:43 UTC
+++ xml2Conf.sh.in
@@ -1,6 +1,12 @@
#
# Configuration file for using the XML library in GNOME applications
#
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+includedir=@includedir@
+libdir=@libdir@
+
XML2_LIBDIR="@XML_LIBDIR@"
XML2_LIBS="@XML_LIBS@ @XML_PRIVATE_LIBS@"
XML2_INCLUDEDIR="@XML_INCLUDEDIR@"

View File

@ -48,15 +48,303 @@ include/libxml2/libxml/xmlwriter.h
include/libxml2/libxml/xpath.h
include/libxml2/libxml/xpathInternals.h
include/libxml2/libxml/xpointer.h
lib/cmake/libxml2/libxml2-config.cmake
lib/libxml2.a
lib/cmake/libxml2-%%LIBVERSION%%/libxml2-config-version.cmake
lib/cmake/libxml2-%%LIBVERSION%%/libxml2-config.cmake
lib/cmake/libxml2-%%LIBVERSION%%/libxml2-export-%%CMAKE_BUILD_TYPE%%.cmake
lib/cmake/libxml2-%%LIBVERSION%%/libxml2-export.cmake
lib/libxml2.so
lib/libxml2.so.2
lib/libxml2.so.%%LIBVERSION%%
lib/xml2Conf.sh
libdata/pkgconfig/libxml-2.0.pc
share/aclocal/libxml.m4
man/man1/xml2-config.1.gz
man/man1/xmlcatalog.1.gz
man/man1/xmllint.1.gz
man/man3/libxml.3.gz
share/aclocal/libxml.m4
%%PORTDOCS%%%%DOCSDIR%%/APIchunk0.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk1.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk10.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk11.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk12.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk13.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk14.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk15.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk16.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk17.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk18.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk19.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk2.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk20.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk21.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk22.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk23.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk24.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk25.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk26.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk27.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk28.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk29.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk3.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk4.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk5.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk6.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk7.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk8.html
%%PORTDOCS%%%%DOCSDIR%%/APIchunk9.html
%%PORTDOCS%%%%DOCSDIR%%/APIconstructors.html
%%PORTDOCS%%%%DOCSDIR%%/APIfiles.html
%%PORTDOCS%%%%DOCSDIR%%/APIfunctions.html
%%PORTDOCS%%%%DOCSDIR%%/APIsymbols.html
%%PORTDOCS%%%%DOCSDIR%%/DOM.gif
%%PORTDOCS%%%%DOCSDIR%%/DOM.html
%%PORTDOCS%%%%DOCSDIR%%/FAQ.html
%%PORTDOCS%%%%DOCSDIR%%/Libxml2-Logo-180x168.gif
%%PORTDOCS%%%%DOCSDIR%%/Libxml2-Logo-90x34.gif
%%PORTDOCS%%%%DOCSDIR%%/XMLinfo.html
%%PORTDOCS%%%%DOCSDIR%%/XSLT.html
%%PORTDOCS%%%%DOCSDIR%%/api.xsl
%%PORTDOCS%%%%DOCSDIR%%/apibuild.py
%%PORTDOCS%%%%DOCSDIR%%/architecture.html
%%PORTDOCS%%%%DOCSDIR%%/bugs.html
%%PORTDOCS%%%%DOCSDIR%%/catalog.gif
%%PORTDOCS%%%%DOCSDIR%%/catalog.html
%%PORTDOCS%%%%DOCSDIR%%/checkapisym.xsl
%%PORTDOCS%%%%DOCSDIR%%/contribs.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/devhelp2.xsl
%%PORTDOCS%%%%DOCSDIR%%/devhelp/general.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/home.png
%%PORTDOCS%%%%DOCSDIR%%/devhelp/html.xsl
%%PORTDOCS%%%%DOCSDIR%%/devhelp/index.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/left.png
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-DOCBparser.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-HTMLparser.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-HTMLtree.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-SAX.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-SAX2.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-c14n.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-catalog.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-chvalid.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-debugXML.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-dict.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-encoding.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-entities.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-globals.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-hash.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-list.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-nanoftp.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-nanohttp.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-parser.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-parserInternals.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-pattern.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-relaxng.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-schemasInternals.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-schematron.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-threads.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-tree.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-uri.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-valid.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-xinclude.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-xlink.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-xmlIO.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-xmlautomata.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-xmlerror.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-xmlexports.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-xmlmemory.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-xmlmodule.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-xmlreader.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-xmlregexp.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-xmlsave.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-xmlschemas.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-xmlschemastypes.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-xmlstring.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-xmlunicode.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-xmlversion.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-xmlwriter.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-xpath.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-xpathInternals.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2-xpointer.html
%%PORTDOCS%%%%DOCSDIR%%/devhelp/libxml2.devhelp2
%%PORTDOCS%%%%DOCSDIR%%/devhelp/right.png
%%PORTDOCS%%%%DOCSDIR%%/devhelp/style.css
%%PORTDOCS%%%%DOCSDIR%%/devhelp/up.png
%%PORTDOCS%%%%DOCSDIR%%/docs.html
%%PORTDOCS%%%%DOCSDIR%%/downloads.html
%%PORTDOCS%%%%DOCSDIR%%/elfgcchack.xsl
%%PORTDOCS%%%%DOCSDIR%%/encoding.html
%%PORTDOCS%%%%DOCSDIR%%/entities.html
%%PORTDOCS%%%%DOCSDIR%%/example.html
%%PORTDOCS%%%%DOCSDIR%%/examples/examples.xml
%%PORTDOCS%%%%DOCSDIR%%/examples/examples.xsl
%%PORTDOCS%%%%DOCSDIR%%/examples/index.html
%%PORTDOCS%%%%DOCSDIR%%/examples/index.py
%%PORTDOCS%%%%DOCSDIR%%/examples/io1.c
%%PORTDOCS%%%%DOCSDIR%%/examples/io1.res
%%PORTDOCS%%%%DOCSDIR%%/examples/io2.c
%%PORTDOCS%%%%DOCSDIR%%/examples/io2.res
%%PORTDOCS%%%%DOCSDIR%%/examples/parse1.c
%%PORTDOCS%%%%DOCSDIR%%/examples/parse2.c
%%PORTDOCS%%%%DOCSDIR%%/examples/parse3.c
%%PORTDOCS%%%%DOCSDIR%%/examples/parse4.c
%%PORTDOCS%%%%DOCSDIR%%/examples/reader1.c
%%PORTDOCS%%%%DOCSDIR%%/examples/reader1.res
%%PORTDOCS%%%%DOCSDIR%%/examples/reader2.c
%%PORTDOCS%%%%DOCSDIR%%/examples/reader3.c
%%PORTDOCS%%%%DOCSDIR%%/examples/reader3.res
%%PORTDOCS%%%%DOCSDIR%%/examples/reader4.c
%%PORTDOCS%%%%DOCSDIR%%/examples/reader4.res
%%PORTDOCS%%%%DOCSDIR%%/examples/test1.xml
%%PORTDOCS%%%%DOCSDIR%%/examples/test2.xml
%%PORTDOCS%%%%DOCSDIR%%/examples/test3.xml
%%PORTDOCS%%%%DOCSDIR%%/examples/testWriter.c
%%PORTDOCS%%%%DOCSDIR%%/examples/tree1.c
%%PORTDOCS%%%%DOCSDIR%%/examples/tree1.res
%%PORTDOCS%%%%DOCSDIR%%/examples/tree2.c
%%PORTDOCS%%%%DOCSDIR%%/examples/tree2.res
%%PORTDOCS%%%%DOCSDIR%%/examples/tst.xml
%%PORTDOCS%%%%DOCSDIR%%/examples/writer.xml
%%PORTDOCS%%%%DOCSDIR%%/examples/xpath1.c
%%PORTDOCS%%%%DOCSDIR%%/examples/xpath1.res
%%PORTDOCS%%%%DOCSDIR%%/examples/xpath2.c
%%PORTDOCS%%%%DOCSDIR%%/examples/xpath2.res
%%PORTDOCS%%%%DOCSDIR%%/guidelines.html
%%PORTDOCS%%%%DOCSDIR%%/help.html
%%PORTDOCS%%%%DOCSDIR%%/html/book1.html
%%PORTDOCS%%%%DOCSDIR%%/html/home.png
%%PORTDOCS%%%%DOCSDIR%%/html/index.html
%%PORTDOCS%%%%DOCSDIR%%/html/left.png
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-DOCBparser.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-HTMLparser.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-HTMLtree.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-SAX.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-SAX2.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-c14n.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-catalog.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-chvalid.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-debugXML.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-dict.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-encoding.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-entities.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-globals.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-hash.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-lib.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-list.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-nanoftp.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-nanohttp.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-parser.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-parserInternals.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-pattern.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-relaxng.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-schemasInternals.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-schematron.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-threads.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-tree.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-uri.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-valid.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-xinclude.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-xlink.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-xmlIO.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-xmlautomata.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-xmlerror.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-xmlexports.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-xmlmemory.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-xmlmodule.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-xmlreader.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-xmlregexp.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-xmlsave.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-xmlschemas.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-xmlschemastypes.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-xmlstring.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-xmlunicode.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-xmlversion.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-xmlwriter.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-xpath.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-xpathInternals.html
%%PORTDOCS%%%%DOCSDIR%%/html/libxml-xpointer.html
%%PORTDOCS%%%%DOCSDIR%%/html/right.png
%%PORTDOCS%%%%DOCSDIR%%/html/up.png
%%PORTDOCS%%%%DOCSDIR%%/index.html
%%PORTDOCS%%%%DOCSDIR%%/index.py
%%PORTDOCS%%%%DOCSDIR%%/interface.html
%%PORTDOCS%%%%DOCSDIR%%/intro.html
%%PORTDOCS%%%%DOCSDIR%%/library.html
%%PORTDOCS%%%%DOCSDIR%%/libxml.gif
%%PORTDOCS%%%%DOCSDIR%%/libxml2-api.xml
%%PORTDOCS%%%%DOCSDIR%%/libxml2.xsa
%%PORTDOCS%%%%DOCSDIR%%/namespaces.html
%%PORTDOCS%%%%DOCSDIR%%/newapi.xsl
%%PORTDOCS%%%%DOCSDIR%%/news.html
%%PORTDOCS%%%%DOCSDIR%%/news.xsl
%%PORTDOCS%%%%DOCSDIR%%/python.html
%%PORTDOCS%%%%DOCSDIR%%/redhat.gif
%%PORTDOCS%%%%DOCSDIR%%/search.php
%%PORTDOCS%%%%DOCSDIR%%/searches.html
%%PORTDOCS%%%%DOCSDIR%%/searches.xsl
%%PORTDOCS%%%%DOCSDIR%%/site.xsl
%%PORTDOCS%%%%DOCSDIR%%/smallfootonly.gif
%%PORTDOCS%%%%DOCSDIR%%/structure.gif
%%PORTDOCS%%%%DOCSDIR%%/symbols.xml
%%PORTDOCS%%%%DOCSDIR%%/syms.xsl
%%PORTDOCS%%%%DOCSDIR%%/threads.html
%%PORTDOCS%%%%DOCSDIR%%/tree.html
%%PORTDOCS%%%%DOCSDIR%%/tutorial/apa.html
%%PORTDOCS%%%%DOCSDIR%%/tutorial/apb.html
%%PORTDOCS%%%%DOCSDIR%%/tutorial/apc.html
%%PORTDOCS%%%%DOCSDIR%%/tutorial/apd.html
%%PORTDOCS%%%%DOCSDIR%%/tutorial/ape.html
%%PORTDOCS%%%%DOCSDIR%%/tutorial/apf.html
%%PORTDOCS%%%%DOCSDIR%%/tutorial/apg.html
%%PORTDOCS%%%%DOCSDIR%%/tutorial/aph.html
%%PORTDOCS%%%%DOCSDIR%%/tutorial/api.html
%%PORTDOCS%%%%DOCSDIR%%/tutorial/ar01s02.html
%%PORTDOCS%%%%DOCSDIR%%/tutorial/ar01s03.html
%%PORTDOCS%%%%DOCSDIR%%/tutorial/ar01s04.html
%%PORTDOCS%%%%DOCSDIR%%/tutorial/ar01s05.html
%%PORTDOCS%%%%DOCSDIR%%/tutorial/ar01s06.html
%%PORTDOCS%%%%DOCSDIR%%/tutorial/ar01s07.html
%%PORTDOCS%%%%DOCSDIR%%/tutorial/ar01s08.html
%%PORTDOCS%%%%DOCSDIR%%/tutorial/ar01s09.html
%%PORTDOCS%%%%DOCSDIR%%/tutorial/images/blank.png
%%PORTDOCS%%%%DOCSDIR%%/tutorial/images/callouts/1.png
%%PORTDOCS%%%%DOCSDIR%%/tutorial/images/callouts/10.png
%%PORTDOCS%%%%DOCSDIR%%/tutorial/images/callouts/2.png
%%PORTDOCS%%%%DOCSDIR%%/tutorial/images/callouts/3.png
%%PORTDOCS%%%%DOCSDIR%%/tutorial/images/callouts/4.png
%%PORTDOCS%%%%DOCSDIR%%/tutorial/images/callouts/5.png
%%PORTDOCS%%%%DOCSDIR%%/tutorial/images/callouts/6.png
%%PORTDOCS%%%%DOCSDIR%%/tutorial/images/callouts/7.png
%%PORTDOCS%%%%DOCSDIR%%/tutorial/images/callouts/8.png
%%PORTDOCS%%%%DOCSDIR%%/tutorial/images/callouts/9.png
%%PORTDOCS%%%%DOCSDIR%%/tutorial/images/caution.png
%%PORTDOCS%%%%DOCSDIR%%/tutorial/images/draft.png
%%PORTDOCS%%%%DOCSDIR%%/tutorial/images/home.png
%%PORTDOCS%%%%DOCSDIR%%/tutorial/images/important.png
%%PORTDOCS%%%%DOCSDIR%%/tutorial/images/next.png
%%PORTDOCS%%%%DOCSDIR%%/tutorial/images/note.png
%%PORTDOCS%%%%DOCSDIR%%/tutorial/images/prev.png
%%PORTDOCS%%%%DOCSDIR%%/tutorial/images/tip.png
%%PORTDOCS%%%%DOCSDIR%%/tutorial/images/toc-blank.png
%%PORTDOCS%%%%DOCSDIR%%/tutorial/images/toc-minus.png
%%PORTDOCS%%%%DOCSDIR%%/tutorial/images/toc-plus.png
%%PORTDOCS%%%%DOCSDIR%%/tutorial/images/up.png
%%PORTDOCS%%%%DOCSDIR%%/tutorial/images/warning.png
%%PORTDOCS%%%%DOCSDIR%%/tutorial/includeaddattribute.c
%%PORTDOCS%%%%DOCSDIR%%/tutorial/includeaddkeyword.c
%%PORTDOCS%%%%DOCSDIR%%/tutorial/includeconvert.c
%%PORTDOCS%%%%DOCSDIR%%/tutorial/includegetattribute.c
%%PORTDOCS%%%%DOCSDIR%%/tutorial/includekeyword.c
%%PORTDOCS%%%%DOCSDIR%%/tutorial/includexpath.c
%%PORTDOCS%%%%DOCSDIR%%/tutorial/index.html
%%PORTDOCS%%%%DOCSDIR%%/tutorial/ix01.html
%%PORTDOCS%%%%DOCSDIR%%/upgrade.html
%%PORTDOCS%%%%DOCSDIR%%/w3c.png
%%PORTDOCS%%%%DOCSDIR%%/wiki.xsl
%%PORTDOCS%%%%DOCSDIR%%/xml.html
%%PORTDOCS%%%%DOCSDIR%%/xmlcatalog_man.html
%%PORTDOCS%%%%DOCSDIR%%/xmlcatalog_man.xml
%%PORTDOCS%%%%DOCSDIR%%/xmldtd.html
%%PORTDOCS%%%%DOCSDIR%%/xmlio.html
%%PORTDOCS%%%%DOCSDIR%%/xmllint.html
%%PORTDOCS%%%%DOCSDIR%%/xmllint.xml
%%PORTDOCS%%%%DOCSDIR%%/xmlmem.html
%%PORTDOCS%%%%DOCSDIR%%/xmlreader.html
%%PORTDOCS%%%%DOCSDIR%%/xsa.xsl

View File

@ -3,30 +3,36 @@
CATEGORIES= textproc gnome python
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
MAINTAINER= desktop@FreeBSD.org
COMMENT= Python interface for XML parser library for GNOME
MASTERDIR= ${.CURDIR}/../libxml2
BUILD_WRKSRC= ${WRKSRC}/python
INSTALL_WRKSRC= ${BUILD_WRKSRC}
DESCR= ${.CURDIR}/pkg-descr
PLIST= ${.CURDIR}/pkg-plist
USES+= gnome python shebangfix
USE_GNOME= libxml2
USES= gettext-runtime gnome python:3.6+
USE_PYTHON= autoplist distutils
USE_PYTHON= flavors
SHEBANG_FILES= *.py doc/*.py python/*.py python/tests/*.py
CPPFLAGS+= `${PYTHON_CMD}-config --cflags`
LDFLAGS+= -L${LOCALBASE}/lib `${PYTHON_CMD}-config --libs`
CONFIGURE_ARGS= --with-iconv=${ICONV_PREFIX} \
--with-html-dir=${PREFIX}/share/doc \
--with-html-subdir=${PORTNAME} \
--with-python=${PYTHON_CMD}
# Help CMake determine the correct version of Python if
# multiple versions are installed
CMAKE_ARGS= -DPython_EXECUTABLE=${PYTHON_CMD}
DOCSDIR= ${PREFIX}/share/doc/py-libxml2
EXAMPLESDIR= ${PREFIX}/share/examples/py-libxml2
OPTIONS_SLAVE= ${OPTIONS_DEFINE:NTEST}
post-install:
@${STRIP_CMD} ${STAGEDIR}${PYTHON_SITELIBDIR}/libxml2mod*.so
# Tell master port we're a slave port
LIBXML2_SLAVE= python
# Grab pkg-descr from slave port
DESCR= ${.CURDIR}/pkg-descr
# Don't append pkg-plist from master port
PLIST=
PLIST_FILES= ${PYTHON_SITELIBDIR}/drv_libxml2.py \
${PYTHON_SITELIBDIR}/libxml2.py \
${PYTHON_SITELIBDIR}/libxml2mod.so \
${PYTHON_SITELIBDIR}/libxml2mod.so.${DISTVERSION}
do-install:
${MKDIR} ${STAGEDIR}${PYTHON_SITELIBDIR}
${INSTALL_SCRIPT} ${WRKSRC}/python/drv_libxml2.py ${STAGEDIR}${PYTHON_SITELIBDIR}
${INSTALL_SCRIPT} ${BUILD_WRKSRC}/libxml2.py ${STAGEDIR}${PYTHON_SITELIBDIR}
${INSTALL_LIB} ${BUILD_WRKSRC}/libxml2mod.so ${STAGEDIR}${PYTHON_SITELIBDIR}
${RLN} ${STAGEDIR}${PYTHON_SITELIBDIR}/libxml2mod.so ${STAGEDIR}${PYTHON_SITELIBDIR}/libxml2mod.so.${DISTVERSION}
.include "${MASTERDIR}/Makefile"