|
15 | 15 | # |
16 | 16 | ####################### |
17 | 17 |
|
18 | | -set(PLANTUML_DATE "1.2018.1") |
| 18 | +set(PLANTUML_DATE "1.2025.10") |
19 | 19 | set(PLANTUML_ARCHIVE ${CMAKE_CURRENT_BINARY_DIR}/plantuml-${PLANTUML_DATE}.tar.bz2) |
20 | 20 | set(PLANTUML_JAR ${CMAKE_CURRENT_BINARY_DIR}/plantuml-${PLANTUML_DATE}/plantuml.jar) |
21 | 21 |
|
22 | 22 | file(DOWNLOAD https://ci.trafficserver.apache.org/bintray/plantuml-${PLANTUML_DATE}.tar.bz2 ${PLANTUML_ARCHIVE} |
23 | | - EXPECTED_HASH SHA1=4dbf218641a777007f9bc72ca8017a41a23e1081 |
| 23 | + EXPECTED_HASH SHA1=248b535bb361119d154e3435dfe5382ddeca55d6 |
24 | 24 | ) |
25 | 25 | file(ARCHIVE_EXTRACT INPUT ${PLANTUML_ARCHIVE} PATTERNS *.jar) |
26 | 26 |
|
27 | 27 | configure_file(ext/local-config.cmake.in.py ext/local-config.py) |
28 | 28 | configure_file(ext/traffic-server.cmake.in.py ext/traffic-server.py) |
29 | 29 | configure_file(ext/extras/txnbox.cmake.in.py ext/extras/txnbox.py) |
30 | | -configure_file(conf.cmake.in.py conf.py) |
| 30 | +configure_file(conf.cmake.in.py conf.py @ONLY) |
31 | 31 | configure_file(manpages.cmake.in.py manpages.py) |
32 | 32 |
|
33 | 33 | # copy static directory to build |
@@ -65,31 +65,73 @@ foreach(UML ${UML_FILES}) |
65 | 65 | list(APPEND SVG_FILES ${CMAKE_CURRENT_SOURCE_DIR}/uml/images/${uml_name}.svg) |
66 | 66 | add_custom_command( |
67 | 67 | OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/uml/images/${uml_name}.svg |
68 | | - COMMAND ${Java_JAVA_EXECUTABLE} -jar ${PLANTUML_JAR} -o ${CMAKE_CURRENT_SOURCE_DIR}/uml/images -tsvg -graphvizdot |
69 | | - ${GRAPHVIZ_DOT} ${CMAKE_CURRENT_SOURCE_DIR}/${UML} |
| 68 | + COMMAND ${CMAKE_COMMAND} -E env GRAPHVIZ_DOT=${GRAPHVIZ_DOT} ${Java_JAVA_EXECUTABLE} -Djava.awt.headless=true |
| 69 | + -Dapple.awt.UIElement=true -jar ${PLANTUML_JAR} -o ${CMAKE_CURRENT_SOURCE_DIR}/uml/images -tsvg |
| 70 | + ${CMAKE_CURRENT_SOURCE_DIR}/${UML} |
70 | 71 | DEPENDS ${UML} |
71 | 72 | VERBATIM |
72 | 73 | ) |
73 | 74 | endforeach() |
74 | 75 | add_custom_target(generate_svg_from_uml DEPENDS ${SVG_FILES}) |
75 | 76 |
|
76 | 77 | # Docs are built with python so we need a target to setup pipenv |
77 | | -set(RUNPIPENV PIPENV_PIPFILE=${CMAKE_CURRENT_SOURCE_DIR}/Pipfile ${PipEnv}) |
| 78 | +# Copy Pipfile to build directory and explicitly point pipenv to it |
| 79 | +# PIPENV_VENV_IN_PROJECT=1 creates .venv next to the Pipfile location (if not already in a venv) |
| 80 | +# PIPENV_VERBOSITY=-1 suppresses warnings |
| 81 | +# If user is already in a virtualenv, pipenv will use it; otherwise creates one in build dir |
| 82 | +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Pipfile ${CMAKE_CURRENT_BINARY_DIR}/Pipfile COPYONLY) |
| 83 | +set(RUNPIPENV PIPENV_PIPFILE=${CMAKE_CURRENT_BINARY_DIR}/Pipfile PIPENV_VENV_IN_PROJECT=1 PIPENV_VERBOSITY=-1 ${PipEnv}) |
| 84 | +# Create a marker file to indicate pipenv setup is complete |
| 85 | +# This is more reliable than using Pipfile.lock which might already exist |
78 | 86 | add_custom_command( |
79 | | - OUTPUT Pipfile.lock |
80 | | - COMMAND ${RUNPIPENV} install |
81 | | - COMMENT "Setup pipenv" |
82 | | - DEPENDS Pipfile |
| 87 | + OUTPUT .pipenv_installed |
| 88 | + COMMAND ${RUNPIPENV} install --python ${Python3_EXECUTABLE} |
| 89 | + COMMAND ${CMAKE_COMMAND} -E touch .pipenv_installed |
| 90 | + COMMENT "Setup pipenv in build directory (${CMAKE_CURRENT_BINARY_DIR}/.venv) and install packages" |
| 91 | + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/Pipfile |
83 | 92 | WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
| 93 | + VERBATIM |
84 | 94 | ) |
85 | 95 |
|
86 | 96 | add_custom_target( |
87 | 97 | generate_docs |
88 | | - COMMAND ${RUNPIPENV} run python ${CMAKE_CURRENT_SOURCE_DIR}/checkvers.py --check-version |
89 | | - COMMAND ${RUNPIPENV} run python -m sphinx -W -c ${CMAKE_CURRENT_BINARY_DIR} -b html ${CMAKE_CURRENT_SOURCE_DIR} |
| 98 | + COMMAND ${CMAKE_COMMAND} -E env "JAVA_TOOL_OPTIONS=-Djava.awt.headless=true -Dapple.awt.UIElement=true" ${RUNPIPENV} |
| 99 | + run python ${CMAKE_CURRENT_SOURCE_DIR}/checkvers.py --check-version |
| 100 | + COMMAND ${CMAKE_COMMAND} -E env "JAVA_TOOL_OPTIONS=-Djava.awt.headless=true -Dapple.awt.UIElement=true" ${RUNPIPENV} |
| 101 | + run python -m sphinx -W -c ${CMAKE_CURRENT_BINARY_DIR} -b html ${CMAKE_CURRENT_SOURCE_DIR} |
90 | 102 | ${CMAKE_CURRENT_BINARY_DIR}/docbuild/html |
91 | | - DEPENDS generate_docs_setup generate_svg_from_uml Pipfile.lock |
| 103 | + DEPENDS generate_docs_setup .pipenv_installed |
92 | 104 | WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
| 105 | + COMMENT "Sphinx PlantUML extension now generates diagrams automatically in build tree" |
| 106 | +) |
| 107 | +# Generate PDF documentation (Letter paper size - US standard) |
| 108 | +add_custom_target( |
| 109 | + generate_pdf |
| 110 | + COMMAND ${CMAKE_COMMAND} -E env "JAVA_TOOL_OPTIONS=-Djava.awt.headless=true -Dapple.awt.UIElement=true" ${RUNPIPENV} |
| 111 | + run python ${CMAKE_CURRENT_SOURCE_DIR}/checkvers.py --check-version |
| 112 | + COMMAND ${CMAKE_COMMAND} -E env "JAVA_TOOL_OPTIONS=-Djava.awt.headless=true -Dapple.awt.UIElement=true" ${RUNPIPENV} |
| 113 | + run python -m sphinx -c ${CMAKE_CURRENT_BINARY_DIR} -b latex -t latex_paper ${CMAKE_CURRENT_SOURCE_DIR} |
| 114 | + ${CMAKE_CURRENT_BINARY_DIR}/docbuild/latex |
| 115 | + COMMAND ${CMAKE_COMMAND} -E chdir ${CMAKE_CURRENT_BINARY_DIR}/docbuild/latex latexmk -pdf -interaction=nonstopmode -f |
| 116 | + ApacheTrafficServer.tex |
| 117 | + DEPENDS generate_docs_setup .pipenv_installed |
| 118 | + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
| 119 | + COMMENT "Building PDF documentation with Sphinx and LaTeX (Letter paper, PlantUML generates PNG automatically)" |
| 120 | +) |
| 121 | + |
| 122 | +# Generate PDF documentation (A4 paper size - International standard) |
| 123 | +add_custom_target( |
| 124 | + generate_pdf_a4 |
| 125 | + COMMAND ${CMAKE_COMMAND} -E env "JAVA_TOOL_OPTIONS=-Djava.awt.headless=true -Dapple.awt.UIElement=true" ${RUNPIPENV} |
| 126 | + run python ${CMAKE_CURRENT_SOURCE_DIR}/checkvers.py --check-version |
| 127 | + COMMAND ${CMAKE_COMMAND} -E env "JAVA_TOOL_OPTIONS=-Djava.awt.headless=true -Dapple.awt.UIElement=true" ${RUNPIPENV} |
| 128 | + run python -m sphinx -c ${CMAKE_CURRENT_BINARY_DIR} -b latex -t latex_a4 ${CMAKE_CURRENT_SOURCE_DIR} |
| 129 | + ${CMAKE_CURRENT_BINARY_DIR}/docbuild/latex-a4 |
| 130 | + COMMAND ${CMAKE_COMMAND} -E chdir ${CMAKE_CURRENT_BINARY_DIR}/docbuild/latex-a4 latexmk -pdf -interaction=nonstopmode |
| 131 | + -f ApacheTrafficServer.tex |
| 132 | + DEPENDS generate_docs_setup .pipenv_installed |
| 133 | + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} |
| 134 | + COMMENT "Building PDF documentation with Sphinx and LaTeX (A4 paper, PlantUML generates PNG automatically)" |
93 | 135 | ) |
94 | 136 |
|
95 | 137 | #add_custom_command( |
|
0 commit comments