Before, ccache's configure stage built HTML documentation and man pages depending on if asciidoc is installed. This patch makes it configurable.
Pass the new cmake option BUILD_DOCS along and add the asciidoc dependency if necessary. This fixes an issue when ccache's configure stage found asciidoc/a2x on the system outside of the sysroot (e.g. installed via 'apt install asciidoc'). ccache would then decide to build docs and manual pages, but would fail during compilation: the system's a2x could not find the system's asciidoc because it did not reside in the set PATH. By enabling/disabling docs/man page generation explicitly and adding asciidoc to DEPENDS as necessary, this is no longer an issue. Signed-off-by: Bastian Krause <b...@pengutronix.de> --- Changes since (implicit) v1: - fixed patch's "Upstream-Status" ("Submitted" instead of "Pending"), thanks to Konrad Weihmann <kweihm...@outlook.com> --- ...w-disabling-docs-man-page-generation.patch | 161 ++++++++++++++++++ meta/recipes-devtools/ccache/ccache_4.2.1.bb | 6 +- 2 files changed, 166 insertions(+), 1 deletion(-) create mode 100644 meta/recipes-devtools/ccache/ccache/0001-doc-allow-disabling-docs-man-page-generation.patch diff --git a/meta/recipes-devtools/ccache/ccache/0001-doc-allow-disabling-docs-man-page-generation.patch b/meta/recipes-devtools/ccache/ccache/0001-doc-allow-disabling-docs-man-page-generation.patch new file mode 100644 index 0000000000..51ca0e82f6 --- /dev/null +++ b/meta/recipes-devtools/ccache/ccache/0001-doc-allow-disabling-docs-man-page-generation.patch @@ -0,0 +1,161 @@ +From aebabafe085dd1b84027a1e31e5566c82528bd62 Mon Sep 17 00:00:00 2001 +From: Bastian Krause <b...@pengutronix.de> +Date: Tue, 4 May 2021 11:41:56 +0200 +Subject: [PATCH] doc: allow disabling docs/man page generation + +The assumption that HTML documentation and manual pages should be +generated if the required tools (asciidoc) are present is not always +true. So add a cmake option that allows disabling the docs/man page +generation. The default is to generate docs/man pages like before. + +Origin: https://github.com/ccache/ccache/pull/844 +Upstream-Status: Submitted +Signed-off-by: Bastian Krause <b...@pengutronix.de> +--- + doc/CMakeLists.txt | 128 +++++++++++++++++++++++---------------------- + 1 file changed, 66 insertions(+), 62 deletions(-) + +diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt +index c5ce224d..74b7831b 100644 +--- a/doc/CMakeLists.txt ++++ b/doc/CMakeLists.txt +@@ -1,70 +1,74 @@ ++option(BUILD_DOCS "Indicates whether HTML documentation and manual pages should be built or not" ON) ++ + find_program(ASCIIDOC_EXE asciidoc) + mark_as_advanced(ASCIIDOC_EXE) # Don't show in CMake UIs + +-if(NOT ASCIIDOC_EXE) +- message(WARNING "Could not find asciidoc; documentation will not be generated") +-else() +- # +- # HTML documentation +- # +- function(generate_html adoc_file) +- get_filename_component(base_name "${adoc_file}" NAME_WE) +- set(html_file "${base_name}.html") +- add_custom_command( +- OUTPUT "${html_file}" +- COMMAND +- ${ASCIIDOC_EXE} +- -o "${html_file}" +- -a revnumber="${CCACHE_VERSION}" +- -a toc +- -b xhtml11 +- "${CMAKE_SOURCE_DIR}/${adoc_file}" +- MAIN_DEPENDENCY "${CMAKE_SOURCE_DIR}/${adoc_file}" +- ) +- set(html_files "${html_files}" "${html_file}" PARENT_SCOPE) +- endfunction() ++if (BUILD_DOCS) ++ if(NOT ASCIIDOC_EXE) ++ message(WARNING "Could not find asciidoc; documentation will not be generated") ++ else() ++ # ++ # HTML documentation ++ # ++ function(generate_html adoc_file) ++ get_filename_component(base_name "${adoc_file}" NAME_WE) ++ set(html_file "${base_name}.html") ++ add_custom_command( ++ OUTPUT "${html_file}" ++ COMMAND ++ ${ASCIIDOC_EXE} ++ -o "${html_file}" ++ -a revnumber="${CCACHE_VERSION}" ++ -a toc ++ -b xhtml11 ++ "${CMAKE_SOURCE_DIR}/${adoc_file}" ++ MAIN_DEPENDENCY "${CMAKE_SOURCE_DIR}/${adoc_file}" ++ ) ++ set(html_files "${html_files}" "${html_file}" PARENT_SCOPE) ++ endfunction() + +- generate_html(LICENSE.adoc) +- generate_html(doc/AUTHORS.adoc) +- generate_html(doc/MANUAL.adoc) +- generate_html(doc/NEWS.adoc) ++ generate_html(LICENSE.adoc) ++ generate_html(doc/AUTHORS.adoc) ++ generate_html(doc/MANUAL.adoc) ++ generate_html(doc/NEWS.adoc) + +- add_custom_target(doc-html DEPENDS "${html_files}") +- set(doc_files "${html_files}") ++ add_custom_target(doc-html DEPENDS "${html_files}") ++ set(doc_files "${html_files}") + +- # +- # Man page +- # +- find_program(A2X_EXE a2x) +- mark_as_advanced(A2X_EXE) # Don't show in CMake UIs +- if(NOT A2X_EXE) +- message(WARNING "Could not find a2x; man page will not be generated") +- else() +- # MANUAL.adoc -> MANUAL.xml -> man page +- add_custom_command( +- OUTPUT MANUAL.xml +- COMMAND +- ${ASCIIDOC_EXE} +- -o - +- -a revnumber=${CCACHE_VERSION} +- -d manpage +- -b docbook "${CMAKE_SOURCE_DIR}/doc/MANUAL.adoc" +- | perl -pe 's!<literal>\(.*?\)</literal>!<emphasis role="strong">\\1</emphasis>!g' +- >MANUAL.xml +- MAIN_DEPENDENCY "${CMAKE_SOURCE_DIR}/doc/MANUAL.adoc" +- ) +- add_custom_command( +- OUTPUT ccache.1 +- COMMAND ${A2X_EXE} --doctype manpage --format manpage MANUAL.xml +- MAIN_DEPENDENCY MANUAL.xml +- ) +- add_custom_target(doc-man-page DEPENDS ccache.1) +- install( +- FILES "${CMAKE_CURRENT_BINARY_DIR}/ccache.1" +- DESTINATION "${CMAKE_INSTALL_MANDIR}/man1" +- ) +- set(doc_files "${doc_files}" ccache.1) +- endif() ++ # ++ # Man page ++ # ++ find_program(A2X_EXE a2x) ++ mark_as_advanced(A2X_EXE) # Don't show in CMake UIs ++ if(NOT A2X_EXE) ++ message(WARNING "Could not find a2x; man page will not be generated") ++ else() ++ # MANUAL.adoc -> MANUAL.xml -> man page ++ add_custom_command( ++ OUTPUT MANUAL.xml ++ COMMAND ++ ${ASCIIDOC_EXE} ++ -o - ++ -a revnumber=${CCACHE_VERSION} ++ -d manpage ++ -b docbook "${CMAKE_SOURCE_DIR}/doc/MANUAL.adoc" ++ | perl -pe 's!<literal>\(.*?\)</literal>!<emphasis role="strong">\\1</emphasis>!g' ++ >MANUAL.xml ++ MAIN_DEPENDENCY "${CMAKE_SOURCE_DIR}/doc/MANUAL.adoc" ++ ) ++ add_custom_command( ++ OUTPUT ccache.1 ++ COMMAND ${A2X_EXE} --doctype manpage --format manpage MANUAL.xml ++ MAIN_DEPENDENCY MANUAL.xml ++ ) ++ add_custom_target(doc-man-page DEPENDS ccache.1) ++ install( ++ FILES "${CMAKE_CURRENT_BINARY_DIR}/ccache.1" ++ DESTINATION "${CMAKE_INSTALL_MANDIR}/man1" ++ ) ++ set(doc_files "${doc_files}" ccache.1) ++ endif() + +- add_custom_target(doc ALL DEPENDS "${doc_files}") ++ add_custom_target(doc ALL DEPENDS "${doc_files}") ++ endif() + endif() +-- +2.29.2 + diff --git a/meta/recipes-devtools/ccache/ccache_4.2.1.bb b/meta/recipes-devtools/ccache/ccache_4.2.1.bb index 90b9c6181f..8dd5893d68 100644 --- a/meta/recipes-devtools/ccache/ccache_4.2.1.bb +++ b/meta/recipes-devtools/ccache/ccache_4.2.1.bb @@ -11,7 +11,9 @@ LIC_FILES_CHKSUM = "file://LICENSE.adoc;md5=698a26b57e513d678e1e7727bf56395b" DEPENDS = "zstd" -SRC_URI = "https://github.com/ccache/ccache/releases/download/v${PV}/${BP}.tar.gz" +SRC_URI = "https://github.com/ccache/ccache/releases/download/v${PV}/${BP}.tar.gz \ + file://0001-doc-allow-disabling-docs-man-page-generation.patch \ + " SRC_URI[sha256sum] = "320d2b17d2f76393e5d4bb28c8dee5ca783248e9cd23dff0654694d60f8a4b62" UPSTREAM_CHECK_URI = "https://github.com/ccache/ccache/releases/" @@ -21,3 +23,5 @@ inherit cmake PATCHTOOL = "patch" BBCLASSEXTEND = "native nativesdk" + +PACKAGECONFIG[docs] = "-DBUILD_DOCS=ON,-DBUILD_DOCS=OFF,asciidoc" -- 2.29.2
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#151235): https://lists.openembedded.org/g/openembedded-core/message/151235 Mute This Topic: https://lists.openembedded.org/mt/82575337/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-