yocto-autobuilder-helper/scripts/run-docs-build
Richard Purdie 8702fdbb72 Clarify license and copyright information
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-05-17 10:29:45 +01:00

5.8 KiB
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/buildtools/x86_64-buildtools-docs-nativesdk-standalone-3.2+snapshot-20201105.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 -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

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 master releases.rst
make clean
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 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 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
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