gcc:python3:
extends: .test
variables:
- CFLAGS: "-O2"
+ # TODO: Re-enable the warning after libxml2 #208 is fixed.
+ CFLAGS: "-O2 -Wno-error=deprecated-declarations"
PYTHON: "/usr/bin/python3"
gcc:static:
bin_SCRIPTS = xslt-config
-dist-hook: cleanup libxslt.spec
+dist-hook: cleanup
touch $(distdir)/doc/*.xml
touch $(distdir)/doc/EXSLT/*.xml
touch $(distdir)/libxslt/*.syms
(cd $(srcdir) ; tar -cf - win32 vms examples) | (cd $(distdir); tar xf -)
-EXTRA_DIST = xsltConf.sh.in xslt-config.in libxslt.spec libxslt.spec.in \
- FEATURES TODO Copyright libxslt.m4 \
- win32/libxslt/libxslt.def win32/libxslt/libxslt.dsw \
- win32/libxslt/libxslt_so.dsp win32/libxslt/xsltproc.dsp \
- CMakeLists.txt config.h.cmake.in FindGcrypt.cmake libxslt-config.cmake.in libxslt-config.cmake.cmake.in
+EXTRA_DIST = xsltConf.sh.in \
+ FEATURES TODO Copyright \
+ CMakeLists.txt config.h.cmake.in libxslt-config.cmake.in libxslt-config.cmake.cmake.in
## We create xsltConf.sh here and not from configure because we want
## to get the paths expanded correctly. Macros like srcdir are given
pkgconfig_DATA = libxslt.pc libexslt.pc
cmakedir = $(libdir)/cmake/libxslt
-cmake_DATA = FindGcrypt.cmake libxslt-config.cmake
+dist_cmake_DATA = FindGcrypt.cmake
+cmake_DATA = libxslt-config.cmake
m4datadir = $(datadir)/aclocal
-m4data_DATA = libxslt.m4
+dist_m4data_DATA = libxslt.m4
NEWS file for libxslt
+v1.1.37: Aug 29 2022
+
+### Improvements
+
+- Don't use deprecated libxml2 macros
+- Don't mess with xmlDefaultSAXHandler
+
+### Build system
+
+- Require automake-1.16.3 or later
+- Remove generated files from distribution
+- Add missing compile definition for static builds to Autotools (Mike Dalessio)
+
+
v1.1.36: Aug 17 2022
### Removals and deprecations
m4_define([MAJOR_VERSION], [1])
m4_define([MINOR_VERSION], [1])
-m4_define([MICRO_VERSION], [36])
+m4_define([MICRO_VERSION], [37])
AC_INIT([libxslt], [MAJOR_VERSION.MINOR_VERSION.MICRO_VERSION])
AC_CONFIG_SRCDIR([libxslt/xslt.c])
AC_SUBST(LIBEXSLT_VERSION_NUMBER)
AC_SUBST(LIBEXSLT_VERSION_EXTRA)
-AM_INIT_AUTOMAKE([1.15 foreign no-dist-gzip dist-xz])
+AM_INIT_AUTOMAKE([1.16.3 foreign no-dist-gzip dist-xz])
AM_MAINTAINER_MODE([enable])
AM_SILENT_RULES([yes])
AC_SUBST(XSLT_LIBS)
AC_SUBST(XSLT_PRIVATE_LIBS)
+LIBXSLT_CFLAGS=""
+case ${host} in
+ *-*-mingw* | *-*-cygwin* | *-*-msvc* )
+ # If the host is Windows, and shared libraries are disabled, we
+ # need to add -DLIBXML_STATIC to EXTRA_CFLAGS in order for linking to
+ # work properly (without it, xmlexports.h would force the use of
+ # DLL imports, which obviously aren't present in a static
+ # library).
+ if test "x$enable_shared" = "xno"; then
+ LIBXSLT_CFLAGS="$LIBXSLT_CFLAGS -DLIBXSLT_STATIC -DLIBEXSLT_STATIC"
+ fi
+ ;;
+esac
+AC_SUBST(LIBXSLT_CFLAGS)
+
EXSLT_LIBDIR='-L${libdir}'
EXSLT_INCLUDEDIR='-I${includedir}'
EXSLT_PRIVATE_LIBS="$XSLT_PRIVATE_LIBS $LIBGCRYPT_LIBS"
-I$(top_builddir) -I$(top_builddir)/libxslt \
-I$(top_builddir)/libexslt
-AM_CFLAGS = $(LIBGCRYPT_CFLAGS) $(LIBXML_CFLAGS)
+AM_CFLAGS = $(LIBGCRYPT_CFLAGS) $(LIBXML_CFLAGS) $(LIBXSLT_CFLAGS)
lib_LTLIBRARIES = libexslt.la
AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/libxslt
-AM_CFLAGS = $(LIBXML_CFLAGS)
+AM_CFLAGS = $(LIBXML_CFLAGS) $(LIBXSLT_CFLAGS)
lib_LTLIBRARIES = libxslt.la
switch (nargs) {
case 3:
- CAST_TO_STRING;
+ if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_STRING))
+ xmlXPathStringFunction(ctxt, 1);
decimalObj = valuePop(ctxt);
ncname = xsltSplitQName(sheet->dict, decimalObj->stringval, &prefix);
if (prefix != NULL) {
}
/* Intentional fall-through */
case 2:
- CAST_TO_STRING;
+ if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_STRING))
+ xmlXPathStringFunction(ctxt, 1);
formatObj = valuePop(ctxt);
- CAST_TO_NUMBER;
+ if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_NUMBER))
+ xmlXPathNumberFunction(ctxt, 1);
numberObj = valuePop(ctxt);
break;
default:
- XP_ERROR(XPATH_INVALID_ARITY);
+ xmlXPathErr(ctxt, XPATH_INVALID_ARITY);
+ return;
}
if (formatValues != NULL) {
current = end = 0;
while (match[current] != 0) {
start = current;
- while (IS_BLANK_CH(match[current]))
+ while (xmlIsBlank_ch(match[current]))
current++;
end = current;
while ((match[end] != 0) && (match[end] != '|')) {
return xmlStrncmp(utf1, utf2, len);
}
+static int
+xsltIsLetterDigit(int val) {
+ return xmlIsBaseCharQ(val) || xmlIsIdeographicQ(val) ||
+ xmlIsDigitQ(val);
+}
+
/***** Stop temp insert *****/
/************************************************************************
* *
* Insert initial non-alphanumeric token.
* There is always such a token in the list, even if NULL
*/
- while (! (IS_LETTER(val=xmlStringCurrentChar(NULL, format+ix, &len)) ||
- IS_DIGIT(val)) ) {
+ while (!xsltIsLetterDigit(val = xmlStringCurrentChar(NULL, format+ix,
+ &len))) {
if (format[ix] == 0) /* if end of format string */
break; /* while */
ix += len;
* to correspond to the Letter and Digit classes from XML (and
* one wonders why XSLT doesn't refer to these instead).
*/
- while (IS_LETTER(val) || IS_DIGIT(val)) {
+ while (xsltIsLetterDigit(val)) {
ix += len;
val = xmlStringCurrentChar(NULL, format+ix, &len);
}
* Insert temporary non-alphanumeric final tooken.
*/
j = ix;
- while (! (IS_LETTER(val) || IS_DIGIT(val))) {
+ while (!xsltIsLetterDigit(val)) {
if (val == 0)
break; /* while */
ix += len;
#define CUR_PTR ctxt->cur
#define SKIP_BLANKS \
- while (IS_BLANK_CH(CUR)) NEXT
+ while (xmlIsBlank_ch(CUR)) NEXT
#define CURRENT (*ctxt->cur)
#define NEXT ((*ctxt->cur) ? ctxt->cur++: ctxt->cur)
NEXT;
cur = q = CUR_PTR;
val = xmlStringCurrentChar(NULL, cur, &len);
- while ((IS_CHAR(val)) && (val != '"')) {
+ while ((xmlIsCharQ(val)) && (val != '"')) {
cur += len;
val = xmlStringCurrentChar(NULL, cur, &len);
}
- if (!IS_CHAR(val)) {
+ if (!xmlIsCharQ(val)) {
ctxt->error = 1;
return(NULL);
} else {
NEXT;
cur = q = CUR_PTR;
val = xmlStringCurrentChar(NULL, cur, &len);
- while ((IS_CHAR(val)) && (val != '\'')) {
+ while ((xmlIsCharQ(val)) && (val != '\'')) {
cur += len;
val = xmlStringCurrentChar(NULL, cur, &len);
}
- if (!IS_CHAR(val)) {
+ if (!xmlIsCharQ(val)) {
ctxt->error = 1;
return(NULL);
} else {
cur += len;
CUR_PTR = cur;
} else {
- /* XP_ERROR(XPATH_START_LITERAL_ERROR); */
ctxt->error = 1;
return(NULL);
}
cur = q = CUR_PTR;
val = xmlStringCurrentChar(NULL, cur, &len);
- if (!IS_LETTER(val) && (val != '_'))
+ if (!xmlIsBaseCharQ(val) && !xmlIsIdeographicQ(val) && (val != '_'))
return(NULL);
- while ((IS_LETTER(val)) || (IS_DIGIT(val)) ||
+ while (xmlIsBaseCharQ(val) || xmlIsIdeographicQ(val) ||
+ xmlIsDigitQ(val) ||
(val == '.') || (val == '-') ||
(val == '_') ||
- (IS_COMBINING(val)) ||
- (IS_EXTENDER(val))) {
+ xmlIsCombiningQ(val) ||
+ xmlIsExtenderQ(val)) {
cur += len;
val = xmlStringCurrentChar(NULL, cur, &len);
}
current = end = 0;
while (pattern[current] != 0) {
start = current;
- while (IS_BLANK_CH(pattern[current]))
+ while (xmlIsBlank_ch(pattern[current]))
current++;
end = current;
level = 0;
element = elements;
while (*element != 0) {
- while (IS_BLANK_CH(*element))
+ while (xmlIsBlank_ch(*element))
element++;
if (*element == 0)
break;
end = element;
- while ((*end != 0) && (!IS_BLANK_CH(*end)))
+ while ((*end != 0) && (!xmlIsBlank_ch(*end)))
end++;
element = xmlStrndup(element, end - element);
if (element) {
-I$(top_srcdir)/libxslt \
-I$(top_srcdir) \
-I../libexslt \
- $(PYTHON_CFLAGS) $(LIBXML_CFLAGS)
+ $(PYTHON_CFLAGS) $(LIBXML_CFLAGS) $(LIBXSLT_CFLAGS)
libxsltmod_la_SOURCES = libxslt.c types.c
nodist_libxsltmod_la_SOURCES = libxslt-py.c
libxsltmod_la_LIBADD = \
libxslt.py: $(srcdir)/libxsl.py libxsltclass.py
cat $(srcdir)/libxsl.py libxsltclass.py > $@
-python_PYTHON = libxslt.py
+nodist_python_PYTHON = libxslt.py
GENERATE = generator.py
API_DESC = $(top_srcdir)/doc/libxslt-api.xml $(srcdir)/libxslt-python-api.xml
tests test: all
cd tests && $(MAKE) tests
-CLEANFILES = $(GENERATED) *.o libxslt.so *.pyc libxslt.py gen_prog
+CLEANFILES = $(GENERATED) *.pyc libxslt.py gen_prog
+
+clean-local:
+ rm -rf __pycache__
*/
libxslt_xsltErrorInitialize();
xmlLoadExtDtdDefaultValue = XML_DETECT_IDS | XML_COMPLETE_ATTRS;
- xmlDefaultSAXHandler.cdataBlock = NULL;
/*
* Register the EXSLT extensions and the test module
*/
EXTRA_DIST = xpath.dict xpath.xml xslt.dict xslt.xml seed
CLEANFILES = $(EXTRA_PROGRAMS)
AM_CPPFLAGS = -I$(top_srcdir)
-AM_CFLAGS = $(LIBXML_CFLAGS)
+AM_CFLAGS = $(LIBXML_CFLAGS) $(LIBXSLT_CFLAGS)
DEPENDENCIES = $(LIBXSLT_LIBS)
LDADD = $(LIBXSLT_LIBS) \
$(LIBXML_LIBS) $(EXTRA_LIBS) $(LIBM)
;;
--cflags)
- cflags="@LIBXML_CFLAGS@"
+ cflags="@LIBXML_CFLAGS@ @LIBXSLT_CFLAGS@"
if test "$includedir" != "/usr/include"; then
cflags="$cflags @XSLT_INCLUDEDIR@"
fi
noinst_PROGRAMS=testThreads
-AM_CFLAGS = $(LIBGCRYPT_CFLAGS) $(LIBXML_CFLAGS)
+AM_CFLAGS = $(LIBGCRYPT_CFLAGS) $(LIBXML_CFLAGS) $(LIBXSLT_CFLAGS)
xsltproc_SOURCES = xsltproc.c
xsltproc_LDFLAGS =