Boost release 24.04 (#69)

This commit is contained in:
Sam Darwin
2024-08-16 07:36:29 -06:00
committed by GitHub
parent d8881a1dbb
commit 0db12fd2ba
5 changed files with 260 additions and 0 deletions

76
.github/workflows/boost_release.yml vendored Normal file
View File

@@ -0,0 +1,76 @@
---
# Copyright 2022 Sam Darwin
#
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
name: boost_release
on:
pull_request:
paths:
- ci_boost_common.py
- ci_boost_release.py
- '.github/workflows/boost_release.yml'
push:
paths:
- ci_boost_common.py
- ci_boost_release.py
- '.github/workflows/boost_release.yml'
branches:
- master
- develop
- feature/**
jobs:
linux:
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
container: cppalliance/boost_superproject_build:24.04-v1
packages: htop
- os: ubuntu-latest
container: cppalliance/boost_superproject_build:22.04-v1
packages: htop
timeout-minutes: 720
runs-on: ${{matrix.os}}
container: ${{matrix.container}}
steps:
- uses: actions/checkout@v4
- name: boost_release
run: |
set -xe
whoami
env
pwd
mkdir -p /root
cp ci_boost_common.py /root/
cp ci_boost_release.py /root/
cd /root/
boostbranch=develop
if [ ! -d project ]; then
git clone https://github.com/boostorg/boost project
cd project
# "git checkout" can also checkout commits
git checkout $boostbranch
cd ..
fi
export CIRCLECI=true
export CIRCLE_BRANCH=develop
export CIRCLE_WORKING_DIRECTORY=$(pwd)/project
python3 ci_boost_release.py checkout_post
EOL=LF python3 ci_boost_release.py test_override

View File

@@ -0,0 +1,112 @@
FROM ubuntu:noble
LABEL maintainer="samuel.d.darwin@gmail.com"
WORKDIR /root
RUN set -xe \
&& apt-get update \
&& DEBIAN_FRONTEND="noninteractive" apt-get install -y tzdata \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y locales \
&& apt-get install -y \
apt-transport-https \
bison \
ca-certificates \
clang \
cmake \
curl \
default-jre-headless \
docbook \
docbook-xml \
docbook-xsl \
docutils-common \
docutils-doc \
dos2unix \
flex \
ghostscript \
git \
graphviz \
jq \
libsaxonhe-java \
openssh-client \
p7zip-full \
python-is-python3 \
python3-pip \
python3-venv \
rsync \
ruby \
software-properties-common \
sshpass \
sudo \
texlive \
texlive-latex-extra \
unzip \
vim \
wget \
xsltproc \
&& sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen \
&& dpkg-reconfigure --frontend=noninteractive locales \
&& update-locale LANG=en_US.UTF-8 \
&& python3 -m venv /opt/venvboostdocs \
&& export PATH=/opt/venvboostdocs/bin:$PATH \
&& mkdir /tmp/aws_cli_install && cd /tmp/aws_cli_install && curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && unzip awscliv2.zip && ./aws/install && cd /root && rm -rf /tmp/aws_cli_install \
&& mkdir /tmp/rclone_install && cd /tmp/rclone_install && wget https://downloads.rclone.org/v1.63.1/rclone-v1.63.1-linux-amd64.deb && dpkg -i rclone-v1.63.1-linux-amd64.deb && cd /root && rm -rf /tmp/rclone_install \
&& curl -s -S --retry 10 -L -o gh_2.40.1_linux_amd64.deb https://github.com/cli/cli/releases/download/v2.40.1/gh_2.40.1_linux_amd64.deb \
&& dpkg -i gh_2.40.1_linux_amd64.deb \
&& gem install public_suffix --version 5.0.3 \
&& gem install css_parser --version 1.16.0 \
&& git clone -b 'Release_1_9_5' --depth 1 https://github.com/doxygen/doxygen.git \
&& cd doxygen \
&& cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release \
&& cd build \
&& make install \
&& cd && rm -rf doxygen* \
&& curl -s -S --retry 10 -L -o saxonhe.zip https://sourceforge.net/projects/saxon/files/Saxon-HE/9.9/SaxonHE9-9-1-4J.zip/download \
&& unzip saxonhe.zip \
&& rm /usr/share/java/Saxon-HE.jar \
&& cp saxon9he.jar /usr/share/java/Saxon-HE.jar \
&& rm -r * \
&& mkdir build && cd build \
&& curl -s -S --retry 10 -L -o rapidxml.zip http://sourceforge.net/projects/rapidxml/files/latest/download \
&& unzip -n -d rapidxml rapidxml.zip \
&& pip3 install setuptools \
&& pip3 install docutils==0.19 \
&& pip3 install Jinja2==3.1.2 \
&& pip3 install MarkupSafe==2.1.1 \
&& pip3 install Sphinx==5.2.1 \
&& pip3 install git+https://github.com/pfultz2/sphinx-boost@8ad7d424c6b613864976546d801439c34a27e3f6 \
&& pip3 install myst-parser==0.18.1 \
&& curl -s -S --retry 10 -L -o docbook-xml.zip http://www.docbook.org/xml/4.5/docbook-xml-4.5.zip \
&& unzip -n -d docbook-xml docbook-xml.zip \
&& curl -s -S --retry 10 -L -o docbook-xsl.zip https://sourceforge.net/projects/docbook/files/docbook-xsl/1.79.1/docbook-xsl-1.79.1.zip/download \
&& unzip -n -d docbook-xsl docbook-xsl.zip \
&& gem install asciidoctor --version 2.0.17 \
&& gem install asciidoctor-diagram --version 2.2.14 \
&& gem install asciidoctor-multipage --version 0.0.18 \
&& gem install rouge --version 4.0.0 \
&& gem install pygments.rb --version 2.3.0 \
&& pip3 install Pygments==2.13.0 \
&& pip3 install https://github.com/bfgroup/jam_pygments/archive/master.zip \
&& pip3 install future==1.0.0 \
&& pip3 install six==1.14.0 \
&& chmod -R 777 /opt/venvboostdocs \
&& rm -rf /var/lib/apt/lists/* \
&& apt-get clean -y
ENV PATH /opt/venvboostdocs/bin:$PATH
ENV NODE_VERSION=18.18.1
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
ENV NVM_DIR=/root/.nvm
RUN . "$NVM_DIR/nvm.sh" && nvm install ${NODE_VERSION}
RUN . "$NVM_DIR/nvm.sh" && nvm use v${NODE_VERSION}
RUN . "$NVM_DIR/nvm.sh" && nvm alias default v${NODE_VERSION}
ENV PATH="/root/.nvm/versions/node/v${NODE_VERSION}/bin/:${PATH}"
RUN node --version
RUN npm --version
RUN npm install -g gulp-cli@2.3.0
RUN npm install -g @mermaid-js/mermaid-cli@10.5.1
ENV LC_ALL en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US.UTF-8
# public_suffix and css_parser using versions that support ruby 2.5

View File

@@ -0,0 +1,41 @@
Earlier notes:
In the Dockerfile, docbook is being installed twice. As apt packages:
```
docbook \
docbook-xml \
docbook-xsl \
```
and zip files:
```
&& curl -s -S --retry 10 -L -o docbook-xml.zip http://www.docbook.org/xml/4.5/docbook-xml-4.5.zip \
&& unzip -n -d docbook-xml docbook-xml.zip \
&& curl -s -S --retry 10 -L -o docbook-xsl.zip https://sourceforge.net/projects/docbook/files/docbook-xsl/1.79.1/docbook-xsl-1.79.1.zip/download \
&& unzip -n -d docbook-xsl docbook-xsl.zip
```
There are boostbook warnings if DOCBOOK_XSL_DIR and DOCBOOK_DTD_DIR aren't specified. build_docs is setting those variables, pointing to the unzipped location.
The main release script does not set those variables. It is using the default. Which might be the apt packages.
Versions are approximately the same currently between packages and downloads.
---
2023 note. Focal had pinned these gems to support Ruby 2.5
```
&& gem install public_suffix --version 4.0.7 \
&& gem install css_parser --version 1.12.0 \
```
In Jammy, it may be unnecessary. But, continuing to track these gems.
```
&& gem install public_suffix --version 5.0.3 \
&& gem install css_parser --version 1.16.0 \
```
In the near future they can return to being unpinned.

View File

@@ -0,0 +1,5 @@
#!/bin/bash
# update the image name as necessary.
imagename="cppalliance/boost_superproject_build:24.04-v1"
docker build --progress=plain -t $imagename . 2>&1 | tee /tmp/output.txt

View File

@@ -0,0 +1,26 @@
#!/bin/bash
# Run this inside the container
set -ex
cd $HOME
boostbranch=develop
if [ ! -d project ]; then
git clone https://github.com/boostorg/boost project
cd project
# "git checkout" can also checkout commits
git checkout $boostbranch
cd ..
fi
export CIRCLECI=true
export CIRCLE_BRANCH=develop
export CIRCLE_WORKING_DIRECTORY=~/project
wget "https://raw.githubusercontent.com/boostorg/release-tools/master/ci_boost_common.py" -P ${HOME}
wget "https://raw.githubusercontent.com/boostorg/release-tools/master/ci_boost_release.py" -P ${HOME}
python3 ${HOME}/ci_boost_release.py checkout_post
EOL=LF python3 ${HOME}/ci_boost_release.py test_override