mirror of
git://git.yoctoproject.org/yocto-autobuilder-helper.git
synced 2025-07-19 20:59:02 +02:00

`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>
175 lines
6.0 KiB
Bash
Executable File
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
|