]> git.proxmox.com Git - ceph.git/blob - ceph/admin/build-doc
import ceph 16.2.7
[ceph.git] / ceph / admin / build-doc
1 #!/bin/sh
2
3 cd "$(dirname "$0")"
4 cd ..
5 TOPDIR=`pwd`
6
7 install -d -m0755 build-doc
8
9 if command -v dpkg >/dev/null; then
10 packages=`cat ${TOPDIR}/doc_deps.deb.txt`
11 for package in $packages; do
12 if [ "$(dpkg --status -- $package 2>&1 | sed -n 's/^Status: //p')" != "install ok installed" ]; then
13 # add a space after old values
14 missing="${missing:+$missing }$package"
15 fi
16 done
17 if [ -n "$missing" ]; then
18 echo "$0: missing required packages, please install them:" 1>&2
19 echo "sudo apt-get install -o APT::Install-Recommends=true $missing" 1>&2
20 exit 1
21 fi
22 elif command -v yum >/dev/null; then
23 for package in ant ditaa doxygen libxslt-devel libxml2-devel graphviz python3-devel python3-pip python3-Cython; do
24 if ! rpm -q --whatprovides $package >/dev/null ; then
25 missing="${missing:+$missing }$package"
26 fi
27 done
28 if [ -n "$missing" ]; then
29 echo "$0: missing required packages, please install them:" 1>&2
30 echo "yum install $missing"
31 exit 1
32 fi
33 else
34 for command in dot doxygen ant ditaa cython; do
35 if ! command -v "$command" > /dev/null; then
36 # add a space after old values
37 missing="${missing:+$missing }$command"
38 fi
39 done
40 if [ -n "$missing" ]; then
41 echo "$0: missing required command, please install them:" 1>&2
42 echo "$missing" 1>&2
43 exit 1
44 fi
45 fi
46
47 # Don't enable -e until after running all the potentially-erroring checks
48 # for availability of commands
49 set -e
50
51 [ -z "$vdir" ] && vdir="$TOPDIR/build-doc/virtualenv"
52
53 if [ ! -e $vdir ]; then
54 python3 -m venv $vdir
55 fi
56
57 $vdir/bin/pip install --quiet wheel
58 $vdir/bin/pip install --quiet \
59 -r $TOPDIR/admin/doc-requirements.txt \
60 -r $TOPDIR/admin/doc-python-common-requirements.txt
61 BUILD_DOC=1 $vdir/bin/pip install --quiet \
62 -r $TOPDIR/admin/doc-pybind.txt
63
64 install -d -m0755 \
65 $TOPDIR/build-doc/output/html \
66 $TOPDIR/build-doc/output/man
67
68 for opt in "$@"; do
69 case $opt in
70 html|man|livehtml)
71 sphinx_targets="$sphinx_targets $opt"
72 shift
73 ;;
74 --)
75 shift
76 break
77 esac
78 done
79
80 if [ -z "$sphinx_targets" ]; then
81 sphinx_targets="html man"
82 fi
83
84 cd build-doc
85
86 for target in $sphinx_targets; do
87 # Build with -W so that warnings are treated as errors and this fails
88 case $target in
89 html)
90 $vdir/bin/sphinx-build -W --keep-going -a -b dirhtml -d doctrees \
91 $TOPDIR/doc $TOPDIR/build-doc/output/$target
92 ;;
93 man)
94 $vdir/bin/sphinx-build -W --keep-going -a -b man -t man -d doctrees \
95 $TOPDIR/doc $TOPDIR/build-doc/output/$target
96 ;;
97 livehtml)
98 $vdir/bin/pip install --quiet sphinx-autobuild
99 $vdir/bin/sphinx-autobuild --re-ignore '.*\.dot' "$@" \
100 $TOPDIR/doc $TOPDIR/build-doc/output/html
101 ;;
102 esac
103 done
104
105 #
106 # Build and install JavaDocs
107 #
108 JAVADIR=$TOPDIR/src/java
109
110 # Clean and build JavaDocs
111 rm -rf $JAVADIR/doc
112 ant -buildfile $JAVADIR/build.xml docs
113
114 # Create clean target directory
115 JAVA_OUTDIR=$TOPDIR/build-doc/output/html/cephfs/api/libcephfs-java/javadoc
116 rm -rf $JAVA_OUTDIR
117 mkdir $JAVA_OUTDIR
118
119 # Copy JavaDocs to target directory
120 cp -a $JAVADIR/doc/* $JAVA_OUTDIR/
121
122 echo "SUCCESS"