Issue 123316
Summary [lldb-docs] Remove dependency between 'lldb-python-doc-package' and 'lldb-python'?
Labels new issue
Assignees
Reporter hwhsu1231
    ## Question

Is it necessary for the `lldb-python-doc-package` target to depend on the `lldb-python` target?

## What happened...

Hello, LLVM Maintenance Team.

Recently, I attempted to build the documentation for the LLVM project. During the process, I noticed that building the LLDB documentation consumes a significant amount of time.

To minimize the time spent on the build, I opted to use `clangdev` installed via Conda to skip the step of building the Clang project from sources. Below are the commands I used for `llvmorg-19.1.6` tag and the complete log output:

<details><summary>Click to expand the commands</summary>

```bash
git clone --branch=llvmorg-19.1.6 --depth=1 https://github.com/llvm/llvm-project.git llvm-19.1.6
cd llvm-19.1.6
conda create --prefix ./.venv --yes
conda activate ./.venv
conda install gcc gxx binutils ninja clangdev=19.1.6 python=3.12 doxygen graphviz perl swig --channel conda-forge --yes
export LANG=en_US.UTF-8
export PYTHONNOUSERSITE=1
pip install -r llvm/docs/requirements.txt
export CMAKE_PROGRAM_PATH=$(pwd)/.venv/bin
export CMAKE_INCLUDE_PATH=$(pwd)/.venv/include
export CMAKE_LIBRARY_PATH=$(pwd)/.venv/lib
export CMAKE_INSTALL_PREFIX=$(pwd)/.venv
cmake -B ./build -S ./llvm -G Ninja -D CMAKE_BUILD_TYPE=Release -D LLVM_ENABLE_PROJECTS="clang;lldb" -D LLVM_ENABLE_SPHINX=ON -D LLDB_TEST_COMPILER=clang
cmake --build ./build --target docs-lldb-html --parallel 4
^C
```

</details>

[log-build-19.1.6-lldb-docs.txt](https://github.com/user-attachments/files/18452772/log-build-19.1.6-lldb-docs.txt)

>From the log output, we can see that nearly **4,700** steps are required to complete the final build of the `docs-lldb-html` target:

```bash
(/home/hwhsu1231/Repo/testing/llvm-19.1.6/.venv) hwhsu1231@vb-kubuntu:~/Repo/testing/llvm-19.1.6$ cmake --build ./build --target docs-lldb-html --parallel 4
[15/4754] Building CXX object lib/Support/CMakeFiles/LLVMSupport.dir/Base64.cpp.o^C
(/home/hwhsu1231/Repo/testing/llvm-19.1.6/.venv) hwhsu1231@vb-kubuntu:~/Repo/testing/llvm-19.1.6$
```

The reason seems to lie in the following code (the `lldb-python` target must be built before building the `lldb-python-doc-package` target):

https://github.com/llvm/llvm-project/blob/7ec139ad4bc09857ab2b93926feef0d110071668/lldb/docs/CMakeLists.txt#L37

## Experiment

To verify my hypothesis, I conducted the following 2 experiments:

### Experiment 1

First, when building the LLDB documentation for the `llvmorg-18.1.8` tag, it did not take as much time. This is because, at that point, `lldb-python-doc-package` did not depend on `lldb-python`:

https://github.com/llvm/llvm-project/blob/3b5b5c1ec4a3095ab096dd780e84d7ab81f3d7ff/lldb/docs/CMakeLists.txt#L30

<details><summary>Click to expand the commands</summary>

```bash
git clone --branch=llvmorg-18.1.8 --depth=1 https://github.com/llvm/llvm-project.git llvm-18.1.8
cd llvm-18.1.8
conda create --prefix ./.venv --yes
conda activate ./.venv
conda install gcc gxx binutils ninja clangdev=18.1.8 python=3.12 doxygen graphviz perl swig --channel conda-forge --yes
export LANG=en_US.UTF-8
export PYTHONNOUSERSITE=1
pip install -r llvm/docs/requirements.txt
export CMAKE_PROGRAM_PATH=$(pwd)/.venv/bin
export CMAKE_INCLUDE_PATH=$(pwd)/.venv/include
export CMAKE_LIBRARY_PATH=$(pwd)/.venv/lib
export CMAKE_INSTALL_PREFIX=$(pwd)/.venv
cmake -B ./build -S ./llvm -G Ninja -D CMAKE_BUILD_TYPE=Release -D LLVM_ENABLE_PROJECTS="clang;lldb" -D LLVM_ENABLE_SPHINX=ON -D LLDB_TEST_COMPILER=clang
cmake --build ./build --target docs-lldb-html --parallel 4
firefox build/tools/lldb/docs/html/index.html
```

</details>

[log-exp1-build-18.1.8-lldb-docs.txt](https://github.com/user-attachments/files/18452812/log-exp1-build-18.1.8-lldb-docs.txt)

### Experiment 2

Next, before building the LLDB documentation for the `llvmorg-19.1.6` tag, I removed the `lldb-python` dependency target using the `sed` command:

<details><summary>Click to expand the commands</summary>

```bash
git clone --branch=llvmorg-19.1.6 --depth=1 https://github.com/llvm/llvm-project.git llvm-19.1.6
cd llvm-19.1.6
conda create --prefix ./.venv --yes
conda activate ./.venv
conda install gcc gxx binutils ninja clangdev=19.1.6 python=3.12 doxygen graphviz perl swig --channel conda-forge --yes
export LANG=en_US.UTF-8
export PYTHONNOUSERSITE=1
pip install -r llvm/docs/requirements.txt
export CMAKE_PROGRAM_PATH=$(pwd)/.venv/bin
export CMAKE_INCLUDE_PATH=$(pwd)/.venv/include
export CMAKE_LIBRARY_PATH=$(pwd)/.venv/lib
export CMAKE_INSTALL_PREFIX=$(pwd)/.venv
sed -i 's/add_dependencies(lldb-python-doc-package swig_wrapper_python lldb-python)/add_dependencies(lldb-python-doc-package swig_wrapper_python)/' ./lldb/docs/CMakeLists.txt
cmake -B ./build -S ./llvm -G Ninja -D CMAKE_BUILD_TYPE=Release -D LLVM_ENABLE_PROJECTS="clang;lldb" -D LLVM_ENABLE_SPHINX=ON -D LLDB_TEST_COMPILER=clang
cmake --build ./build --target docs-lldb-html --parallel 4
firefox build/tools/lldb/docs/html/index.html
```

</details>

[log-exp2-build-19.1.6-lldb-docs.txt](https://github.com/user-attachments/files/18452815/log-exp2-build-19.1.6-lldb-docs.txt)

As a result, we can see that no critical errors occurred, and the build process required only 5 steps to complete.

## Conclusion

If building the `lldb-python` target does not affect the LLDB documentation build, I would suggest removing the `lldb-python` dependency from the `lldb-python-doc-package` target in LLDB. This change should significantly reduce the time required to build the LLDB documentation.

_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to