%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 # version 1.12.x. We could do this automatically… # %%global so_version %%(echo %%{version} | cut -d . -f -2 | tr -d .) # …but we do not do so because we want to make sure we detect any soversion # update. %global so_version 112 Release: %autorelease Summary: Xalan XSLT processor for C/C++ # 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 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 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 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 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.} %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-libs%{?_isa} = %{version}-%{release} %description devel The xalan-c-devel package contains libraries and header files for developing applications that use xalan-c. %package doc Summary: Documentation for xalan-c # Doxygen HTML help is not suitable for packaging due to a minified JavaScript # bundle inserted by Doxygen itself. See discussion at # https://bugzilla.redhat.com/show_bug.cgi?id=2006555. # # 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 documentation. %prep %{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}' %autosetup -n %{tar_name} # https://github.com/apache/xalan-c/pull/35 chmod -v a-x NOTICE # Remove the Autotools build system cruft from the samples; otherwise, it would # be installed as documentation. We leave the CmakeLists.txt even though it # cannot be used standalone; it is used in the build (even though the built # 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 %cmake %{?with_icu:-Dtranscoder=icu} -GNinja %build %cmake_build %install %cmake_install # Remove CMake-installed docs in favor of using the doc macro. We refer to # _prefix/share instead of _datadir to mirror how the install path is defined # in the relevant CMakeLists.txt. Note also that we do *not* want to install # 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 %{_bindir}/Xalan %{_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 CREDITS LICENSE NOTICE %{_docdir}/%{name}-doc/ %changelog %autochangelog