yocto-autobuilder-helper/scripts/run-docs-build
Quentin Schulz 695bd33b47 scripts: run-docs-build: use latest version of set_versions.py script
`git checkout <pathspec>` without <tree-ish> only undo the changes made
to pathspec compared to HEAD. It is not guaranteed that HEAD is on
latest commit of master branch from upstream when running this script,
therefore let's add the <tree-ish> argument to specify which branch to
use to make sure set_versions.py is the latest, otherwise getlatest
might return the wrong information.

Cc: Quentin Schulz <foss+yocto@0leil.net>
Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-07-20 14:25:19 +01:00

175 lines
6.0 KiB
Bash
Executable File

#!/bin/bash
#
# SPDX-License-Identifier: GPL-2.0-only
#
# Called with $1 as the build directory
# $2 as the path to yocto-docs
# $3 as the path to bitbake
#
# Environment variables:
# - docs_buildtools as the path to buildtools script for the docs.
# Can be found here: https://autobuilder.yocto.io/pub/buildtools/
# - docbookarchive as the path to old (pre 3.1.5 and Sphinx migration) docs tarball
# Can be found here: https://downloads.yoctoproject.org/mirror/docbook-mirror/docbook-archives-20201105.tar.xz
# - PUBLISH (0/1) for whether the files should be rsync'ed to docs.yoctoproject.org
set -e
set -u
set -o pipefail
set -x
builddir=$(realpath "$1")
ypdocs=$(realpath "$2/documentation/")
bbdocs=$(realpath "$3/doc/")
docs_buildtools=${docs_buildtools:-/srv/autobuilder/autobuilder.yocto.io/pub/non-release/20220616-20/buildtools/x86_64-buildtools-docs-nativesdk-standalone-4.1+snapshot-cf7d8894545b83f55420fa33f7848e1bfc6754ff.sh}
outputdir=$builddir/output
scriptdir="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
PUBLISH=${PUBLISH:-1}
cd $builddir
mkdir buildtools
$docs_buildtools -y -d $builddir/buildtools
. $builddir/buildtools/environment-setup*
# Getting the old docbook built docs from an archive. Not rebuilding them.
#wget https://downloads.yoctoproject.org/mirror/docbook-mirror/docbook-archives-20201105.tar.xz
docbookarchive=${docbookarchive:-/srv/autobuilder/autobuilder.yocto.io/pub/docbook-mirror/docbook-archives-20201105.tar.xz}
mkdir $outputdir
cd $outputdir
echo Extracing old content from archive
tar --exclude=eclipse -xJf $docbookarchive
$scriptdir/docs_add_banner.py
cd $bbdocs
mkdir $outputdir/bitbake
# A decision was made to keep updating all the Sphinx generated docs for the moment,
# even the ones corresponding to no longer supported releases
# https://lists.yoctoproject.org/g/docs/message/2193
# We copy the releases.rst file from master so that all versions of the docs
# see the latest releases.
first_sphinx_commit=84ccba0f4aff91528f764523fe1205a354c889ed
latest_branch=$(git branch --remote --contains "$first_sphinx_commit" --format '%(refname:lstrip=3)' --sort='-version:refname' | grep --max-count=1 "[0-9]*\.[0-9]*")
for branch in 1.46 $(git branch --remote --contains "$first_sphinx_commit" --format '%(refname:lstrip=3)'); do
if [ "$branch" = "HEAD" ]; then
continue
fi
echo Building bitbake $branch branch
git checkout $branch
git checkout origin/master releases.rst
make clean
SPHINXOPTS="-j auto" make publish
if [ "$branch" = "master-next" ]; then
branch="next"
mkdir $outputdir/bitbake/$branch
elif [ "$branch" = "master" ]; then
branch="dev"
mkdir $outputdir/bitbake/$branch
elif [ "$branch" = "$latest_branch" ]; then
branch=""
mkdir $outputdir/bitbake/$latest_branch
cp -r ./_build/final/* $outputdir/bitbake/$latest_branch
else
mkdir $outputdir/bitbake/$branch
fi
cp -r ./_build/final/* $outputdir/bitbake/$branch
git reset --hard
done
if [ "$PUBLISH" -ne 0 ]; then
# only sync bitbake folder for now. We need bitbake to be published first
# since the bitbake intersphinx index will be downloaded to build yocto-docs
cd $outputdir
rsync -irlp --checksum --ignore-times --delete bitbake docs@docs.yoctoproject.org:docs/
fi
cd $ypdocs
# transition must build after master for the switchers.js file
# Again, keeping even the no longer supported releases (see above comment)
first_sphinx_commit=01dd5af7954e24552aca022917669b27bb0541ed
first_dunfell_sphinx_commit=c25fe058b88b893b0d146f3ed27320b47cdec236
git checkout origin/master set_versions.py
#latest_tag=$(git tag --contains "$first_sphinx_commit" --contains "$first_dunfell_sphinx_commit" --sort="version:refname" 'yocto-*' | tail -1 | sed 's/yocto-//')
latest_tag=$(./set_versions.py getlatest)
git reset --hard
git clean -f
for branch in dunfell $(git branch --remote --contains "$first_sphinx_commit" --format '%(refname:lstrip=3)') $(git tag --contains "$first_sphinx_commit" --contains "$first_dunfell_sphinx_commit" 'yocto-*') transition; do
if [ "$branch" = "HEAD" ]; then
continue
fi
# Do not build <release>-next branches as they are development branches only
# Do build master-next branch though!
if echo "$branch" | grep -v "master-next" | grep -q -E "-next$"; then
continue
fi
echo Building $branch
git checkout $branch
if [ -e "${scriptdir}/docs-build-patches/${branch}/" ]; then
echo Adding patch for $branch
git am "${scriptdir}/docs-build-patches/${branch}/"000*
fi
git checkout origin/master releases.rst sphinx-static/switchers.js.in set_versions.py
if [ -e poky.yaml ]; then
cp poky.yaml poky.yaml.in
case $branch in
yocto-*)
./set_versions.py $(echo "$branch" | sed 's/yocto-//')
;;
*)
./set_versions.py
;;
esac
fi
make clean
SPHINXOPTS="-j auto" make publish
# Strip yocto- from tag names
branch=$(echo "$branch" | sed 's/yocto-//')
if [ "$branch" = "master-next" ]; then
branch="next"
mkdir $outputdir/$branch
elif [ "$branch" = "master" ]; then
branch="dev"
mkdir $outputdir/$branch
elif [ "$branch" = "$latest_tag" ]; then
branch=""
mkdir $outputdir/$latest_tag
cp -r ./_build/final/* $outputdir/$latest_tag
echo Linking to $latest_tag as current
ln -s $latest_tag $outputdir/current
elif [ "$branch" = "transition" ]; then
branch=""
else
mkdir $outputdir/$branch
fi
cp -r ./_build/final/* $outputdir/$branch
git reset --hard
git clean -f
done
# Update bitbake switchers.js with the copy from master ypdocs
cd $outputdir/bitbake
find . -name switchers.js -exec cp $outputdir/current/_static/switchers.js {} \;
if [ "$PUBLISH" -ne 0 ]; then
cd $outputdir
rsync -irlp --checksum --ignore-times --delete . docs@docs.yoctoproject.org:docs/
fi