From 0db12fd2ba4e8473b44096b635199b89008aa716 Mon Sep 17 00:00:00 2001 From: Sam Darwin Date: Fri, 16 Aug 2024 07:36:29 -0600 Subject: [PATCH] Boost release 24.04 (#69) --- .github/workflows/boost_release.yml | 76 ++++++++++++++++++ docker/python3/noble/Dockerfile | 112 +++++++++++++++++++++++++++ docker/python3/noble/README.md | 41 ++++++++++ docker/python3/noble/buildimage.sh | 5 ++ docker/python3/noble/buildrelease.sh | 26 +++++++ 5 files changed, 260 insertions(+) create mode 100644 .github/workflows/boost_release.yml create mode 100644 docker/python3/noble/Dockerfile create mode 100644 docker/python3/noble/README.md create mode 100755 docker/python3/noble/buildimage.sh create mode 100755 docker/python3/noble/buildrelease.sh diff --git a/.github/workflows/boost_release.yml b/.github/workflows/boost_release.yml new file mode 100644 index 0000000..f0ed0b1 --- /dev/null +++ b/.github/workflows/boost_release.yml @@ -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 diff --git a/docker/python3/noble/Dockerfile b/docker/python3/noble/Dockerfile new file mode 100644 index 0000000..34cd877 --- /dev/null +++ b/docker/python3/noble/Dockerfile @@ -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 diff --git a/docker/python3/noble/README.md b/docker/python3/noble/README.md new file mode 100644 index 0000000..5440218 --- /dev/null +++ b/docker/python3/noble/README.md @@ -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. + diff --git a/docker/python3/noble/buildimage.sh b/docker/python3/noble/buildimage.sh new file mode 100755 index 0000000..a0ba433 --- /dev/null +++ b/docker/python3/noble/buildimage.sh @@ -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 diff --git a/docker/python3/noble/buildrelease.sh b/docker/python3/noble/buildrelease.sh new file mode 100755 index 0000000..a648711 --- /dev/null +++ b/docker/python3/noble/buildrelease.sh @@ -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