diff --git a/.gitignore b/.gitignore index 3da1189..a007b45 100644 --- a/.gitignore +++ b/.gitignore @@ -59,3 +59,13 @@ doxygen-1.7.1.src.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-obsolete-egrep.patch b/doxygen-obsolete-egrep.patch deleted file mode 100644 index 9a859b5..0000000 --- a/doxygen-obsolete-egrep.patch +++ /dev/null @@ -1,40 +0,0 @@ ---- doxygen-1.9.6.orig/templates/latex/latexmakefile.tpl 2023-03-09 10:29:08.772377871 +0100 -+++ doxygen-1.9.6/templates/latex/latexmakefile.tpl 2023-03-09 10:29:23.754555476 +0100 -@@ -9,7 +9,7 @@ - {# TODO: generateBib #} - pdflatex refman - latex_count=8 ; \ -- while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ -+ while grep -E -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ - do \ - echo "Rerunning latex...." ;\ - pdflatex refman ;\ -@@ -43,7 +43,7 @@ - echo "Rerunning latex...." - {{ config.LATEX_CMD_NAME }} refman.tex - latex_count=8 ; \ -- while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ -+ while grep -E -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ - do \ - echo "Rerunning latex...." ;\ - {{ config.LATEX_CMD_NAME }} refman.tex ;\ ---- doxygen-1.9.6.orig/src/latexgen.cpp 2023-03-09 11:10:52.092688592 +0100 -+++ doxygen-1.9.6/src/latexgen.cpp 2023-03-09 11:11:07.666867516 +0100 -@@ -346,7 +346,7 @@ - t << "\techo \"Rerunning latex....\"\n" - << "\t$(LATEX_CMD) $(MANUAL_FILE).tex\n" - << "\tlatex_count=$(LATEX_COUNT) ; \\\n" -- << "\twhile egrep -s 'Rerun (LaTeX|to get cross-references right|to get bibliographical references right)' $(MANUAL_FILE).log && [ $$latex_count -gt 0 ] ;\\\n" -+ << "\twhile grep -E -s 'Rerun (LaTeX|to get cross-references right|to get bibliographical references right)' $(MANUAL_FILE).log && [ $$latex_count -gt 0 ] ;\\\n" - << "\t do \\\n" - << "\t echo \"Rerunning latex....\" ;\\\n" - << "\t $(LATEX_CMD) $(MANUAL_FILE).tex ; \\\n" -@@ -374,7 +374,7 @@ - } - t << "\t$(LATEX_CMD) $(MANUAL_FILE)\n" - << "\tlatex_count=$(LATEX_COUNT) ; \\\n" -- << "\twhile egrep -s 'Rerun (LaTeX|to get cross-references right|to get bibliographical references right)' $(MANUAL_FILE).log && [ $$latex_count -gt 0 ] ;\\\n" -+ << "\twhile grep -E -s 'Rerun (LaTeX|to get cross-references right|to get bibliographical references right)' $(MANUAL_FILE).log && [ $$latex_count -gt 0 ] ;\\\n" - << "\t do \\\n" - << "\t echo \"Rerunning latex....\" ;\\\n" - << "\t $(LATEX_CMD) $(MANUAL_FILE) ;\\\n" 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 6009311..7818615 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -1,53 +1,42 @@ %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 1 - -%if 0%{?stable} -%global irelease 2 -%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.6 -%if 0%{?stable} -Release: 7%{?dist} -%else -%global commit e18f715eb55121a4219d00bc4d824cebf1fb504b -%global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global date 20220217 -Release: 0.%{date}git%{shortcommit}.1 -%endif +Version: 1.15.0 +Release: 1%{?dist} # No version is specified. -License: GPL-1.0-or-later +License: GPL-2.0-or-later Url: https://github.com/doxygen -%if 0%{?stable} -Source0: https://sourceforge.net/projects/doxygen/files/rel-%{version}/%{name}-%{version}.src.tar.gz -%else -Source0: https://github.com/%{name}/%{name}/archive/%{commit}/%{name}-%{commit}.tar.gz -%endif +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 -Patch0: doxygen-obsolete-egrep.patch +Source3: README.rpm-packaging +Source4: doxygen-unbundler + +# upstream fixes BuildRequires: %{_bindir}/python3 -BuildRequires: gcc-c++ gcc 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) @@ -124,7 +113,28 @@ BuildRequires: xapian-core-devel %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 @@ -135,16 +145,26 @@ 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} @@ -221,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 @@ -270,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" @@ -285,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" @@ -307,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 @@ -321,6 +340,90 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* 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 diff --git a/sources b/sources index b45c18d..7883325 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ SHA512 (doxywizard-icons.tar.xz) = 865a86d7535e64ad92e36ba1f901d51cd6b603e762e5c68761a45bc1f965a36e6a6c8d29468ecb2ec799f0add2347537723832aff6660c76af453f80a0a370ad -SHA512 (doxygen-1.9.6.src.tar.gz) = f8b0d19d33fa8a5bb92b38f1c775bd3cde7f024566cf93ed61ab0cafe86643971c04b7f2492364767b3e6ce5b518bad5e0321c82f0a72875ccf936ea7d3595b2 +SHA512 (doxygen-1.15.0.src.tar.gz) = e53cc8da6cf1fe3ca3b3637647ed6afa28365351eac81d010f6691d939df5e449b3d898a6f695dd850d12659dfd7018fc864071b30fbca5dd196dc094ec4371e