diff --git a/Xalan.1 b/Xalan.1 new file mode 100644 index 0000000..28d0605 --- /dev/null +++ b/Xalan.1 @@ -0,0 +1,52 @@ +.TH XALAN "1" "April 2024" "" "User Commands" +.SH NAME +.B Xalan +\(en Transform XML documents using a stylesheet +.SH SYNOPSIS +.B Xalan +.RI [ OPTIONS ] +.I source +.I stylesheet +.SH DESCRIPTION +Transform XML documents using a stylesheet +that conforms to XSLT 1.0 standards. +.SH OPTIONS +A dash as the +.I source +argument reads from stdin. +.RB ( \- +cannot be used for both arguments.) +.TP +.B \-a +Use xml-stylesheet PI, not the +.I stylesheet +argument. +.TP +.B \-e\ \fIencoding +Force the specified encoding for the output. +.TP +.B \-i\ \fIinteger +Indent the specified amount. +.TP +.B \-m +Omit the +.B META +tag in HTML output. +.TP +.B \-o\ \fIfilename +Write output to the specified file. +.TP +.B \-p\ \fIname\ expression +Sets a stylesheet parameter. +.TP +.B \-t +Display timing information. +.TP +.B \-u +Disable escaping of URLs in HTML output. +.TP +.B \-? +Display a help message. +.TP +.B \-v +Validates source documents. diff --git a/gcc_15_fixes.patch b/gcc_15_fixes.patch new file mode 100644 index 0000000..0d954b0 --- /dev/null +++ b/gcc_15_fixes.patch @@ -0,0 +1,20 @@ +Index: xalan/src/xalanc/XMLSupport/XalanOtherEncodingWriter.hpp +=================================================================== +--- xalan.orig/src/xalanc/XMLSupport/XalanOtherEncodingWriter.hpp 2025-10-22 08:05:45.403631397 -0400 ++++ xalan/src/xalanc/XMLSupport/XalanOtherEncodingWriter.hpp 2025-10-22 08:18:14.821542155 -0400 +@@ -320,13 +320,13 @@ + { + XalanUnicodeChar value = decodeUTF16SurrogatePair(ch, theChars[i+1], getMemoryManager()); + +- if (this->m_isPresentable(value)) ++ if (m_predicate(value)) + { + write(value); + } + else + { +- this->writeNumberedEntityReference(value); ++ writeNumericCharacterReference(value); + } + + ++i; diff --git a/xalan-c-1.12-icu-75.patch b/xalan-c-1.12-icu-75.patch new file mode 100644 index 0000000..0e27218 --- /dev/null +++ b/xalan-c-1.12-icu-75.patch @@ -0,0 +1,15 @@ +>= ICU 75 needs C++17, see https://bugs.gentoo.org/934471. +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -32,9 +32,9 @@ if (POLICY CMP0067) + cmake_policy(SET CMP0067 NEW) + endif(POLICY CMP0067) + +-# Try C++14, then fall back to C++11 and C++98. Used for feature tests ++# Try C++17, then fall back to C++14, then C++11, and C++98. Used for feature tests + # for optional features. +-set(CMAKE_CXX_STANDARD 14) ++set(CMAKE_CXX_STANDARD 17) + + # Use folders (for IDE project grouping) + set_property(GLOBAL PROPERTY USE_FOLDERS ON) diff --git a/xalan-c.rpmlintrc b/xalan-c.rpmlintrc new file mode 100644 index 0000000..19f46cf --- /dev/null +++ b/xalan-c.rpmlintrc @@ -0,0 +1,10 @@ +# Not a real spelling error: +addFilter(r" spelling-error \('([Ss]tylesheet)s?',") +# Hardlinks within directories owned by a single package are safe. +addFilter(r" cross-directory-hard-link /\S+/xalan-c-doc/\S+ /\S+/xalan-c-doc/") +# All documentation is in the -doc subpackage. +addFilter(r" no-documentation$") +#xalan-c.x86_64: W: no-manual-page-for-binary Xalan +#xalan-c.x86_64: W: no-documentation +#xalan-c-devel.x86_64: W: no-documentation +#xalan-c-doc.x86_64: E: no-binary diff --git a/xalan-c.spec b/xalan-c.spec index 82e6bd0..5507f12 100644 --- a/xalan-c.spec +++ b/xalan-c.spec @@ -1,4 +1,5 @@ -%bcond_without icu +%bcond icu 1 + Name: xalan-c Version: 1.12.0 # The soversion is made from the major and minor version numbers, e.g. 112 for @@ -10,35 +11,75 @@ Version: 1.12.0 Release: %autorelease Summary: Xalan XSLT processor for C/C++ -License: ASL 2.0 -URL: http://xalan.apache.org/xalan-c/ -%global tag Xalan-C_%(echo '%{version}' | tr . _) +# The entire source is Apache-2.0, except cmake/RunTest.cmake, which is +# libtiff, but is a build-system file that does not contribute to the licenses +# of the binary RPMs. +License: Apache-2.0 +SourceLicense: %{license} AND libtiff +URL: https://apache.github.io/xalan-c/ +%global tag Xalan-C_%{gsub %{version} . _} %global tar_name xalan_c-%(echo %{version} | cut -d . -f -2) -%global release_url https://github.com/apache/xalan-c/releases/download/%{tag} -Source0: %{release_url}/%{tar_name}.tar.gz -Source1: %{release_url}/%{tar_name}.tar.gz.asc -Source2: %{release_url}/KEYS +%global forgeurl https://github.com/apache/xalan-c/ +%global releaseurl %{forgeurl}/releases/download/%{tag} +Source0: %{releaseurl}/%{tar_name}.tar.gz +Source1: %{releaseurl}/%{tar_name}.tar.gz.asc +Source2: %{releaseurl}/KEYS +# Man page hand-written for Fedora in groff_man(7) format based on Xalan -? +Source3: Xalan.1 + +# ICU 75 needs C++17 +# https://bugs.gentoo.org/934471 +# +# Fixes: +# +# [FTBFS] with icu-76.1 +# https://bugzilla.redhat.com/show_bug.cgi?id=2332317 +# +# Note that this patch is too trivial for there to be any need to associate a +# license with it; the patch merely adjusts the value of CMAKE_CXX_STANDARD +# from 14 to 17. +Patch: https://gitweb.gentoo.org/repo/gentoo.git/plain/dev-libs/xalan-c/files/xalan-c-1.12-icu-75.patch + +Patch: gcc_15_fixes.patch BuildRequires: gnupg2 BuildRequires: cmake # Either make or ninja is supported. BuildRequires: ninja-build BuildRequires: gcc-c++ + +BuildRequires: dos2unix +BuildRequires: hardlink + BuildRequires: xerces-c-devel %if %{with icu} BuildRequires: libicu-devel %endif -%description +Requires: xalan-c-libs%{?_isa} = %{version}-%{release} + +%global common_description %{expand: The Apache Xalan-C++ Project provides a library and a command line program to transform XML documents using a stylesheet that conforms to XSLT 1.0 standards. -Xalan is a project of the Apache Software Foundation. +Xalan is a project of the Apache Software Foundation.} + +%description %{common_description} + +This package contains the command-line tool. + + +%package libs +Summary: Shared libraries for xalan-c + +%description libs +The xalan-c-libs package contains libraries needed by the command-line tool and +by applications that use xalan-c. %package devel Summary: Development files for xalan-c -Requires: xalan-c%{?_isa} = %{version}-%{release} +Requires: xalan-c-libs%{?_isa} = %{version}-%{release} %description devel The xalan-c-devel package contains libraries and header files for developing @@ -55,6 +96,7 @@ Summary: Documentation for xalan-c # Normally, we would enable the Doxygen PDF documentation as a lesser # substitute, but building it fails with: # ! TeX capacity exceeded, sorry [pool size=5905151]. +BuildArch: noarch %description doc Documentation for xalan-c. See https://apache.github.io/xalan-c/ for full HTML @@ -64,7 +106,7 @@ documentation. %prep %{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}' -%autosetup -n %{tar_name} +%autosetup -n %{tar_name} -p 1 # https://github.com/apache/xalan-c/pull/35 chmod -v a-x NOTICE @@ -75,9 +117,19 @@ chmod -v a-x NOTICE # samples are only tested and not installed), and is annoying to exclude. rm -vf samples/configure samples/configure.in +# Convert line endings as needed: +find docs samples src -type f -exec file '{}' '+' | + grep -F 'CRLF' | + awk -F ':' '{ print $1 }' | + xargs dos2unix --keepdate + + +%conf +export CMAKE_POLICY_VERSION_MINIMUM=3.5 +%cmake %{?with_icu:-Dtranscoder=icu} -GNinja + %build -%cmake %{?with_icu:-Dtranscoder=icu} -GNinja %cmake_build @@ -89,42 +141,47 @@ rm -vf samples/configure samples/configure.in # the HTML version of the API documentation. rm -rf %{buildroot}%{_prefix}/share/doc/xalan-c/api +install -t '%{buildroot}%{_docdir}/%{name}-doc' -D -p -m 0644 \ + README.md docs/*.md +cp -rvp docs/images/ samples/ '%{buildroot}%{_docdir}/%{name}-doc' +hardlink -c -v '%{buildroot}%{_docdir}/%{name}-doc' + +install -t '%{buildroot}%{_mandir}/man1' -D -p -m 0644 '%{SOURCE3}' + %check %ctest %files -%license LICENSE -%doc CREDITS -%doc KEYS -%doc NOTICE -%doc README.md %{_bindir}/Xalan -%{_libdir}/libxalanMsg.so.%{so_version} -%{_libdir}/libxalanMsg.so.%{so_version}.* -%{_libdir}/libxalan-c.so.%{so_version} -%{_libdir}/libxalan-c.so.%{so_version}.* +%{_mandir}/man1/Xalan.1* + + +%files libs +%license CREDITS LICENSE NOTICE + +%{_libdir}/libxalanMsg.so.%{so_version}{,.*} +%{_libdir}/libxalan-c.so.%{so_version}{,.*} %files devel %{_libdir}/libxalanMsg.so %{_libdir}/libxalan-c.so + %{_includedir}/xalanc/ + %dir %{_libdir}/cmake/XalanC %{_libdir}/cmake/XalanC/*.cmake + %dir %{_libdir}/pkgconfig %{_libdir}/pkgconfig/xalan-c.pc %files doc -%license LICENSE -%doc CREDITS -%doc KEYS -%doc NOTICE -%doc README.md -%doc docs/*.md docs/images -%doc samples +%license CREDITS LICENSE NOTICE + +%{_docdir}/%{name}-doc/ %changelog