yocto-autobuilder-helper/scripts/run-docs-build
Quentin Schulz d69a2adc43 scripts: run-docs-build: automatically build new yocto-docs branches
Since commit 01dd5af7954e24552aca022917669b27bb0541ed, all later
releases of yocto-docs can be built with Sphinx. Instead of manually
updating this list, let's have git return the list of remote branches
which contains the commit.

dunfell branch was initially released without Sphinx support but was
later patched, hence why it's explicitly listed.

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-03-18 17:02:09 +00:00

139 lines
4.3 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
for branch in dunfell transition $(git branch --remote --contains "$first_sphinx_commit" --format '%(refname:lstrip=3)'); 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 branch
git checkout $branch
git checkout master releases.rst
make clean
make publish
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
# Yocto Project releases/tags
v_sphinx='yocto-3.1.5' #This and newer versions have Sphinx docs.
cd $ypdocs
for tag in $(git tag --list 'yocto-*'); do
first=$(printf '%s\n%s' $tag $v_sphinx | sort --version-sort | head -n1)
if [ "$first" = "$v_sphinx" ]; then
echo Processing $tag
cd $ypdocs
git checkout $tag
if [ -e "${scriptdir}/docs-build-patches/${tag}/" ]; then
echo Adding patch for $tag
git am "${scriptdir}/docs-build-patches/${tag}/"000*
fi
git checkout master releases.rst
make clean
make publish
version=$(echo $tag | cut -c7-)
mkdir $outputdir/$version
cp -r ./_build/final/* $outputdir/$version
git reset --hard
echo Finished processing $tag
fi
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/