yocto-autobuilder-helper/scripts/run-docs-build
Quentin Schulz 6fd933fe06 scripts: run-docs-build: factor out yocto-docs tags and branches building
Except patching which is specific to tags and yocto- tag prefix
stripping, the logic is identical, so let's merge both loops together.

Cc: Quentin Schuls <foss+yocto@0leil.net>
Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-03-18 17:02:09 +00:00

125 lines
4.0 KiB
Bash
Executable File

#!/bin/bash
# Called with $1 as the build directory
# $2 as the path to yocto-docs
# $3 as the path to bitbake
set -e
set -u
set -o pipefail
set -x
builddir=$1
ypdocs=$2/documentation/
bbdocs=$3/doc/
docs_buildtools=/srv/autobuilder/autobuilder.yocto.io/pub/buildtools/x86_64-buildtools-docs-nativesdk-standalone-3.2+snapshot-20201105.sh
outputdir=$builddir/output
scriptdir="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
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=/srv/autobuilder/autobuilder.yocto.io/pub/docbook-mirror/docbook-archives-20201105.tar.xz
mkdir $outputdir
cd $outputdir
echo Extracing old content from archive
tar -xJf $docbookarchive
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
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 master releases.rst
make clean
make publish
if [ "$branch" = "master-next" ]; then
branch="next"
mkdir $outputdir/bitbake/$branch
elif [ "$branch" = "master" ]; then
branch=""
else
mkdir $outputdir/bitbake/$branch
fi
cp -r ./_build/final/* $outputdir/bitbake/$branch
git reset --hard
done
# 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/
cd $ypdocs
# Again, keeping even the no longer supported releases (see above comment)
first_sphinx_commit=01dd5af7954e24552aca022917669b27bb0541ed
first_dunfell_sphinx_commit=c25fe058b88b893b0d146f3ed27320b47cdec236
for branch in dunfell transition $(git branch --remote --contains "$first_sphinx_commit" --format '%(refname:lstrip=3)') $(git tag --contains "$first_sphinx_commit" --contains "$first_dunfell_sphinx_commit" 'yocto-*'); 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 master releases.rst
make clean
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" ] || [ "$branch" = "transition" ]; then
branch=""
else
mkdir $outputdir/$branch
fi
cp -r ./_build/final/* $outputdir/$branch
git reset --hard
done
# get current release (e.g. most recent tag), and add a 'current' link
tag=$(git tag --list 'yocto-*' | sort --version-sort | tail -1 | cut -c7-)
echo Linking to $tag as current
ln -s $tag $outputdir/current
# Update switchers.js with the copy from master ypdocs
cd $outputdir
find . -name switchers.js -not -path ./_static/switchers.js -exec cp ./_static/switchers.js {} \;
cd $outputdir
rsync -irlp --checksum --ignore-times --delete . docs@docs.yoctoproject.org:docs/