On 5/4/21 1:24 PM, Konrad Weihmann wrote:
> 
> 
> On 04.05.21 13:20, Bastian Krause wrote:
>> 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 <[email protected]>
>> ---
>>   ...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..11176e3039
>> --- /dev/null
>> +++
>> b/meta/recipes-devtools/ccache/ccache/0001-doc-allow-disabling-docs-man-page-generation.patch
>>
>> @@ -0,0 +1,161 @@
>> +From e87d882e8c31e4c6b90e770643c0d176c2455a01 Mon Sep 17 00:00:00 2001
>> +From: Bastian Krause <[email protected]>
>> +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: Pending
> 
> Just some nitpick, but shouldn't that be Submitted instead - as I see a
> PR open for this feature at the mentioned upstream repo
> 
> (see https://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines)

You're right. Thanks for pointing that out. I'll fix this in a v2.

Regards,
Bastian

> 
>> +Signed-off-by: Bastian Krause <[email protected]>
>> +---
>> + 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"
>>
>>
>>
>>
>>
> 
> 
> 
> 


-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#151234): 
https://lists.openembedded.org/g/openembedded-core/message/151234
Mute This Topic: https://lists.openembedded.org/mt/82575058/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to