diff --git a/.gitignore b/.gitignore index 790d790..a007b45 100644 --- a/.gitignore +++ b/.gitignore @@ -55,5 +55,17 @@ doxygen-1.7.1.src.tar.gz /doxygen-1.9.1.src.tar.gz /doxygen-1.9.2.src.tar.gz /doxygen-1.9.2-d882240f-git.src.tar.gz -/doxygen-1.9.3.src.tar.gz /doxygen-e18f715eb55121a4219d00bc4d824cebf1fb504b.tar.gz +/doxygen-1.9.4.src.tar.gz +/doxygen-1.9.5.src.tar.gz +/doxygen-1.9.6.src.tar.gz +/doxygen-1.9.7.src.tar.gz +/doxygen-1.9.8.src.tar.gz +/doxygen-1.10.0.src.tar.gz +/doxygen-1.11.0.src.tar.gz +/doxygen-1.12.0.src.tar.gz +/doxygen-1.13.0.src.tar.gz +/doxygen-1.13.1.src.tar.gz +/doxygen-1.13.2.src.tar.gz +/doxygen-1.14.0.src.tar.gz +/doxygen-1.15.0.src.tar.gz diff --git a/README.rpm-packaging b/README.rpm-packaging new file mode 100644 index 0000000..9f09233 --- /dev/null +++ b/README.rpm-packaging @@ -0,0 +1,36 @@ +# Javascript asset handling for RPM packaging + +RPM packages should unbundle Javascript assets during the RPM build +process. Currently, this process is not fully automated. + +If Doxygen HTML documentation is installed, add + + %{?doxygen_js_requires} + +to the subpackage that contains the HTML documentation. + +If HTML documentation is installed during the %install phase, invoke + + %{doxygen_unbundle_buildroot} + +towards the end of the %install section. It will process Javascript +files under %{_docdir} (/usr/share/doc). If another directory needs +to be processed, use an explicit directory argument: + + %{doxygen_unbundle_buildroot /usr/share/example/doc} + +The path is relative to %{buildroot} or $RPM_BUILD_ROOT. + +If HTML documentation is not installed, but propagated into package +using %doc directives, it is necessary to invoke + + %{doxygen_unbundle} + +after running Doxygen (typically from the %build section). This +unbundles assets found under the current directory. A specific +directory can be processed by passing it as an argument: + + %{doxygen_unbundle example/doc} + +In this case, the path argument is relative to the current directory, +not the buildroot. diff --git a/doxygen-unbundler b/doxygen-unbundler new file mode 100644 index 0000000..aaf8bed --- /dev/null +++ b/doxygen-unbundler @@ -0,0 +1,69 @@ +#!/usr/bin/bash -e +# Replace Doxygen-generated Javascript files with symblic links. + +set -o pipefail + +jsdir="$1" +buildroot="$2" +subdir="$3" + +if test -z "$jsdir" ; then + echo "error: Javascript directory argument required" 1>&2 + exit 1 +fi + +js_files="$(echo "$jsdir"/doxygen/*.js)" + +if test -z "$buildroot" ; then + # Only absolute links are possible because the final installation + # destination is unknown. + if test -z "$subdir"; then + subdir="." + fi + find "$subdir" -type f -name '*.js' \ + | while read js_file; do + for js_file_ref in $js_files; do + if cmp -s "$js_file_ref" "$js_file"; then + ln -sf "$js_file_ref" "$js_file" + break + fi + done + done +else + # Create relative links. + cd "$buildroot" + abs_buildroot="$(readlink -f .)" + cd "./$subdir" + + # Compute the number of ../ needed to reach the root directory. + prefix="" + while true; do + p="$(readlink -f "${prefix:-.}")" + if test "$p" = "$abs_buildroot"; then + break + elif test "$p" = "/"; then + echo "error: Could not find buildroot directory" 1>&2 + exit 1 + elif test -z "$prefix"; then + prefix=".." + else + prefix="../$prefix" + fi + done + + # Create relative links. + find . -type f -name '*.js' -printf "%d %p\n" \ + | while read depth js_file; do + for js_file_ref in $js_files; do + if cmp -s "$js_file_ref" "$js_file"; then + target_prefix="$prefix" + i=1 + while test "$i" -lt "$depth"; do + target_prefix="../$target_prefix" + i=$(($i + 1)) + done + ln -sf "$target_prefix$js_file_ref" "$js_file" + fi + done + done +fi diff --git a/doxygen.spec b/doxygen.spec index 150711f..7818615 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -1,45 +1,43 @@ %if 0%{?fedora} %global xapian_core_support ON -%global clang_support ON +%global build_wizard ON +%global system_spdlog ON +%global system_fmt ON %else %global xapian_core_support OFF -%global clang_support OFF -%endif - -%global stable 0 - -%if 0%{?stable} -%global irelease 1 -%else -%global commit e18f715eb55121a4219d00bc4d824cebf1fb504b -%global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global date 20220217 -%global irelease 0.%{date}git%{shortcommit} +%global build_wizard OFF +%global system_spdlog OFF +%global system_fmt OFF %endif +%global build_search %{xapian_core_support} +%global clang_support ON +%global system_sqlite3 ON Summary: A documentation system for C/C++ Name: doxygen Epoch: 2 -Version: 1.9.4 -Release: %{irelease}%{?dist} - +Version: 1.15.0 +Release: 1%{?dist} # No version is specified. -License: GPL+ -Url: http://www.doxygen.nl -%if 0%{?stable} -Source0: https://doxygen.nl/files/%{name}-%{version}.src.tar.gz -%else -Source0: https://github.com/%{name}/%{name}/archive/%{commit}/%{name}-%{commit}.tar.gz -%endif +License: GPL-2.0-or-later +Url: https://github.com/doxygen +Source0: https://www.doxygen.nl/files/%{name}-%{version}.src.tar.gz # this icon is part of kdesdk Source1: doxywizard.desktop # these icons are part of doxygen and converted from doxywizard.ico Source2: doxywizard-icons.tar.xz -# upstream patches +Source3: README.rpm-packaging +Source4: doxygen-unbundler + +# upstream fixes BuildRequires: %{_bindir}/python3 -BuildRequires: gcc-c++ gcc -BuildRequires: perl-interpreter +BuildRequires: perl-interpreter, perl-open +BuildRequires: texlive-bibtex +BuildRequires: web-assets-devel +# Building an RPM package typically needs unbundling of Javascript assets. +Requires: (js-doxygen if redhat-rpm-config) + %if ! 0%{?_module_build} BuildRequires: tex(dvips) BuildRequires: tex(latex) @@ -103,21 +101,40 @@ BuildRequires: ghostscript BuildRequires: gettext BuildRequires: desktop-file-utils BuildRequires: graphviz -%else -BuildRequires: zlib-devel %endif +BuildRequires: zlib-devel BuildRequires: flex BuildRequires: bison BuildRequires: cmake BuildRequires: git %if "x%{?xapian_core_support}" == "xON" BuildRequires: xapian-core-devel -BuildRequires: zlib-devel %endif %if "x%{?clang_support}" == "xON" BuildRequires: llvm-devel BuildRequires: clang-devel +%else +BuildRequires: gcc-c++ gcc %endif +%if "%{system_spdlog}" == "ON" +BuildRequires: spdlog-devel +%else +# SPDLOG_VER* defined in deps/spdlog/include/spdlog/version.h +Provides: bundled(spdlog) = 1.14.1 +%endif +%if "%{system_sqlite3}" == "ON" +BuildRequires: sqlite-devel +%else +# SQLITE_VERSION defined in deps/sqlite3/sqlite3.h +Provides: bundled(sqlite) = 3.42.0 +%endif +%if "%{system_fmt}" == "ON" +BuildRequires: fmt-devel +%else +# deps/fmt/README.md +Provides: bundled(fmt) = 10.2.1 +%endif + Requires: perl-interpreter Requires: graphviz @@ -128,21 +145,32 @@ documentation is extracted directly from the sources. Doxygen can also be configured to extract the code structure from undocumented source files. -%if ! 0%{?_module_build} +%package -n js-doxygen +Summary: Javascript files used by Doxygen +Requires: web-assets-filesystem +BuildArch: noarch +%description -n js-doxygen +Javascript files for use by locally installed Doxygen documentation. + +%if "x%{build_wizard}" == "xON" %package doxywizard Summary: A GUI for creating and editing configuration files Requires: %{name} = %{epoch}:%{version}-%{release} -BuildRequires: qt5-qtbase-devel +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qtsvg-devel %description doxywizard Doxywizard is a GUI for creating and editing configuration files that are used by doxygen. +%endif +%if ! 0%{?_module_build} %package latex Summary: Support for producing latex/pdf output from doxygen Requires: %{name} = %{epoch}:%{version}-%{release} Requires: tex(latex) Requires: tex(dvips) +Requires: texlive-wasy %if 0%{?fedora} > 17 || 0%{?rhel} > 6 # From doc/manual.sty Requires: tex(helvet.sty) @@ -213,48 +241,37 @@ Requires: texlive-epstopdf %prep -%if 0%{?stable} %autosetup -p1 -a2 -%else -%autosetup -n %{name}-%{commit} -a2 -%endif - -# convert into utf-8 -iconv --from=ISO-8859-1 --to=UTF-8 LANGUAGE.HOWTO > LANGUAGE.HOWTO.new -touch -r LANGUAGE.HOWTO LANGUAGE.HOWTO.new -mv LANGUAGE.HOWTO.new LANGUAGE.HOWTO +cp %{SOURCE3} . %build -%if ! 0%{?_module_build} %cmake \ - -DPYTHON_EXECUTABLE=%{_bindir}/python3 \ - -Duse_libclang=%{clang_support} \ - -Dbuild_doc=OFF \ - -Dbuild_wizard=ON \ - -Dbuild_xmlparser=ON \ - -Dbuild_search=%{xapian_core_support} \ - -DMAN_INSTALL_DIR=%{_mandir}/man1 \ - -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \ - -DBUILD_SHARED_LIBS=OFF \ -%else -%cmake \ - -DPYTHON_EXECUTABLE=%{_bindir}/python3 \ - -Duse_libclang=%{clang_support} \ - -Dbuild_doc=OFF \ - -Dbuild_wizard=OFF \ - -Dbuild_xmlparser=ON \ - -Dbuild_search=OFF \ - -DMAN_INSTALL_DIR=%{_mandir}/man1 \ - -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \ - -DBUILD_SHARED_LIBS=OFF \ -%endif + -Dbuild_wizard=%{build_wizard} \ + -DBUILD_SHARED_LIBS=OFF \ + -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \ + -Dbuild_search=%{build_search} \ + -Duse_libclang=%{clang_support} \ + -DMAN_INSTALL_DIR=%{_mandir}/man1 \ + -Dbuild_doc=OFF \ + -DPYTHON_EXECUTABLE=%{_bindir}/python3 \ + -Dbuild_xmlparser=ON \ + -Duse_sys_sqlite3=%{system_sqlite3} \ + -Duse_sys_spdlog=%{system_spdlog} \ + -Duse_sys_fmt=%{system_fmt} %cmake_build %{?_smp_mflags} %install %cmake_install +# install man pages +mkdir -p %{buildroot}/%{_mandir}/man1 +cp doc/*.1 %{buildroot}/%{_mandir}/man1/ + +%if "x%{build_wizard}" == "xOFF" +rm -f %{buildroot}/%{_mandir}/man1/doxywizard.1* +%else # install icons icondir=%{buildroot}%{_datadir}/icons/hicolor mkdir -m755 -p $icondir/{16x16,32x32,48x48,128x128}/apps @@ -262,12 +279,7 @@ install -m644 -p -D doxywizard-6.png $icondir/16x16/apps/doxywizard.png install -m644 -p -D doxywizard-5.png $icondir/32x32/apps/doxywizard.png install -m644 -p -D doxywizard-4.png $icondir/48x48/apps/doxywizard.png install -m644 -p -D doxywizard-3.png $icondir/128x128/apps/doxywizard.png - -# install man pages -mkdir -p %{buildroot}/%{_mandir}/man1 -cp doc/*.1 %{buildroot}/%{_mandir}/man1/ -%if 0%{?_module_build} -rm -f %{buildroot}/%{_mandir}/man1/doxywizard.1* +desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %if "x%{?xapian_core_support}" == "xOFF" @@ -277,15 +289,25 @@ rm -f %{buildroot}/%{_mandir}/man1/doxyindexer.1* %{buildroot}/%{_mandir}/man1/d # remove duplicate rm -rf %{buildroot}/%{_docdir}/packages -%if ! 0%{?_module_build} -desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} -%endif +# Install the asset files. +install -m644 -D --target-directory=%{buildroot}%{_jsdir}/doxygen templates/html/*.js + +# Generate the macros file. Expand version/release/%%_jsdir. +mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d +cat > %{buildroot}%{_rpmconfigdir}/macros.d/macros.doxygen <<'EOF' +%%doxygen_js_requires() Requires: js-doxygen >= %{version}-%{release} +%%doxygen_unbundle_buildroot() %%{_rpmconfigdir}/redhat/doxygen-unbundler "%{_jsdir}" "%%{buildroot}" %%[ %%# == 0 ? "%%{_docdir}" : "%%1"] +%%doxygen_unbundle() %{_rpmconfigdir}/redhat/doxygen-unbundler "%{_jsdir}" "" %%* +EOF + + # Install the unbundler script. +install -m755 -D --target-directory=%{buildroot}%{_rpmconfigdir}/redhat %{SOURCE4} %check %ctest %files -%doc LANGUAGE.HOWTO README.md +%doc LANGUAGE.HOWTO README.md README.rpm-packaging %license LICENSE %if ! 0%{?_module_build} %if "x%{?xapian_core_support}" == "xON" @@ -299,13 +321,18 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %{_mandir}/man1/doxyindexer.1* %{_mandir}/man1/doxysearch.1* %endif -%if ! 0%{?_module_build} +%{_rpmconfigdir}/macros.d/macros.doxygen +%{_rpmconfigdir}/redhat/doxygen-unbundler +%if "x%{build_wizard}" == "xON" %files doxywizard %{_bindir}/doxywizard %{_mandir}/man1/doxywizard* %{_datadir}/applications/doxywizard.desktop -%endif %{_datadir}/icons/hicolor/*/apps/doxywizard.png +%endif + +%files -n js-doxygen +%{_jsdir}/doxygen/* %if ! 0%{?_module_build} %files latex @@ -313,8 +340,131 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog -* Thu Feb 17 2022 Than Ngo - 1.9.4-0.20220217gite18f715e -- update to 1.9.4 snapshot +* Thu Nov 13 2025 Than Ngo - 2:1.15.0-1 +- Update to 1.15.0 + +* Wed Jul 23 2025 Fedora Release Engineering - 2:1.14.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Wed Jun 25 2025 Than Ngo - 2:1.14.0-3 +- Upstream fix for input buffer overflow + +* Wed May 28 2025 Yaakov Selkowitz - 2:1.14.0-2 +- Use bundled spdlog on RHEL, redux + +* Sun May 25 2025 Than Ngo - 2:1.14.0-1 +- Fix rhbz#2368381, update to 1.14.0 + +* Tue Feb 11 2025 Yaakov Selkowitz - 2:1.13.2-5 +- Use bundled spdlog on RHEL + +* Mon Feb 10 2025 Than Ngo - 2:1.13.2-4 +- built with system sqlite3 and spdlog + +* Sat Feb 08 2025 Than Ngo - 2:1.13.2-3 +- Introduce js-doxygen subpackage and unbundle Javascript during RPM builds +- Use system spdlog and sqlite3 + +* Thu Jan 16 2025 Fedora Release Engineering - 2:1.13.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Mon Jan 13 2025 Than Ngo - 2:1.13.2-1 +- Fix rhbz#2336720, Update to 1.13.2 +- Fix rhbz#2336536, FTBFS in ignition-transport + +* Fri Jan 03 2025 Than Ngo - 2:1.13.1-1 +- Fix rhbz#2335266, Update to 1.13.1 + +* Thu Jan 02 2025 Than Ngo - 2:1.13.0-1 +- Fix rhbz#2334703, Update to 1.13.0 + +* Mon Oct 28 2024 Than Ngo - 2:1.12.0-3 +- Fix rhbz#2295788, Non-reproducible file names in doxygen output + +* Mon Oct 28 2024 Than Ngo - 2:1.12.0-2 +- Fix rhbz#x2322116, broken markdown links to anchors + +* Wed Aug 07 2024 Than Ngo - 2:1.12.0-1 +- update to 1.12.0 + +* Wed Jul 17 2024 Fedora Release Engineering - 2:1.11.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Fri Jun 14 2024 Than Ngo - 2:1.11.0-4 +- fixed rhbz#2292250, update license + +* Fri May 31 2024 Than Ngo - 2:1.11.0-3 +- removed workaround for debuginfo + +* Wed May 29 2024 Than Ngo - 2:1.11.0-2 +- fixed rhbz#2283362, fix buffer overflow + +* Tue May 21 2024 Than Ngo - 2:1.11.0-1 +- update to 1.11.0 + +* Wed Jan 24 2024 Fedora Release Engineering - 2:1.10.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Than Ngo - 2:1.10.0-2 +- don't use clang to build doxygen as workaround for a bug in gcc-14 + +* Tue Dec 26 2023 Than Ngo - 1.10.0-1 +- bz#2255826, update to 1.10 + +* Mon Sep 11 2023 Than Ngo - 1.9.8-1 +- fix bz#2235035, update to 1.9.8 + +* Wed Jul 19 2023 Fedora Release Engineering - 2:1.9.7-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Tue May 30 2023 Than Ngo - 2:1.9.7-2 +- disable build_wizard for eln +- fixed broken unicode test + +* Fri May 19 2023 Than Ngo - 2:1.9.7-1 +- fix #2208417, rebase to 1.9.7 + +* Fri Mar 10 2023 Than Ngo - 2:1.9.6-7 +- replace obsolescent egrep with grep -E + +* Fri Feb 17 2023 Than Ngo - 2:1.9.6-6 +- migrated to SPDX license + +* Wed Jan 25 2023 Than Ngo - 2:1.9.6-5 +- rebuilt against new ghostscript-10 + +* Fri Jan 20 2023 Than Ngo - 2:1.9.6-4 +- fixed bz#2162170, add Require on texlive-wasy + +* Thu Jan 19 2023 Fedora Release Engineering - 2:1.9.6-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Wed Jan 18 2023 Than Ngo - 2:1.9.6-2 +- fixed bz#2161515 - doxygen FTBFS if _module_build is 1 + +* Tue Jan 03 2023 Than Ngo - 2:1.9.6-1 +- fixed bz#2156564, update to 1.9.6 + +* Sun Sep 18 2022 Pete Walter - 2:1.9.5-2 +- Rebuild for llvm 15 + +* Fri Sep 09 2022 Than Ngo - 2:1.9.5-1 +- 1.9.5 + +* Thu Aug 04 2022 Than Ngo - 2:1.9.4-2 +- Fixed #2113876, Failed to build LaTex output + +* Thu Jul 21 2022 Fedora Release Engineering - 2:1.9.4-1.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Fri May 06 2022 Than Ngo - 2:1.9.4-1 +- 1.9.4 + +* Thu Feb 17 2022 Than Ngo - 2:1.9.4-0.20220217gite18f715e +- update to 1.9.4 snapshot + +* Thu Jan 20 2022 Fedora Release Engineering - 2:1.9.1-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild * Wed Oct 27 2021 Than Ngo - 2:1.9.1-12 - revert 1.9.1, noarch package built differently on different architectures diff --git a/sources b/sources index c0431d9..7883325 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ SHA512 (doxywizard-icons.tar.xz) = 865a86d7535e64ad92e36ba1f901d51cd6b603e762e5c68761a45bc1f965a36e6a6c8d29468ecb2ec799f0add2347537723832aff6660c76af453f80a0a370ad -SHA512 (doxygen-e18f715eb55121a4219d00bc4d824cebf1fb504b.tar.gz) = 312b9c77444c9b81f5514f83bde113f22a51f83d76b7c7b426ed18a461c929d088cb1717c779c5c08cc0939b50a2f00dfe61754ee1a4dee3a69f70aedcef2043 +SHA512 (doxygen-1.15.0.src.tar.gz) = e53cc8da6cf1fe3ca3b3637647ed6afa28365351eac81d010f6691d939df5e449b3d898a6f695dd850d12659dfd7018fc864071b30fbca5dd196dc094ec4371e