diff --git a/.github/workflows/texer.yml b/.github/workflows/texer.yml index e04bbf3..396663b 100644 --- a/.github/workflows/texer.yml +++ b/.github/workflows/texer.yml @@ -3,7 +3,7 @@ name: ghcr.io/opencyphal/texer container build and publish. on: release: types: [ published ] - + pull_request: branches: [ "main" ] diff --git a/.github/workflows/toolshed.yml b/.github/workflows/toolshed.yml index 1191a57..046c046 100644 --- a/.github/workflows/toolshed.yml +++ b/.github/workflows/toolshed.yml @@ -3,7 +3,7 @@ name: ghcr.io/opencyphal/toolshed container build and publish. on: release: types: [ published ] - + pull_request: branches: [ "main" ] @@ -14,27 +14,47 @@ env: jobs: - build_and_publish: + dry_run: + if: ${{ github.event_name == 'pull_request' || ( github.event_name == 'release' && startsWith( github.ref, 'ts') && github.event.release.prerelease ) }} + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - # Add QEMU to allow building non-native containers as + # part of multi-platform container builds. + name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - # Setup buildx so we can do multi-platform container builds. + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: build + run: cd ${{ env.IMAGE_NAME}} && docker buildx build --platform linux/arm64,linux/amd64 . + + release: + if: ${{ github.event_name == 'release' && startsWith( github.ref, 'ts' ) && !github.event.release.prerelease }} runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: process event - id: process_event - uses: olegtarasov/get-tag@v2.1.2 + - # Add QEMU to allow building non-native containers as + # part of multi-platform container builds. + name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - # Setup buildx so we can do multi-platform container builds. + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to GHCR + uses: docker/login-action@v2 with: - tagRegex: "(${{ env.IMAGE_VERSION_PREFIX }}).*" - - name: dryrun-build - if: ${{ github.event_name == 'pull_request' || ( github.event_name == 'release' && startsWith( steps.process_event.outputs.tag, env.IMAGE_VERSION_PREFIX ) && github.event.release.prerelease ) }} - run: docker build ./${{ env.IMAGE_NAME }} + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: build-and-push - if: ${{ github.event_name == 'release' && startsWith( steps.process_event.outputs.tag, env.IMAGE_VERSION_PREFIX ) && !github.event.release.prerelease }} - uses: macbre/push-to-ghcr@master - with: - context: ./${{ env.IMAGE_NAME }} - dockerfile: ./${{ env.IMAGE_NAME }}/Dockerfile - image_name: ${{ env.ORG_NAMESPACE }}/${{ env.IMAGE_NAME }} - github_token: ${{ secrets.GITHUB_TOKEN }} - repository: ghcr.io + run: cd ${{ env.IMAGE_NAME }} && docker buildx build --platform linux/arm64,linux/amd64 --push -t ghcr.io/${{ env.ORG_NAMESPACE }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_VERSION_PREFIX }}${{ github.ref }} . diff --git a/.github/workflows/toxic.yml b/.github/workflows/toxic.yml index a8d9f98..8bf3c95 100644 --- a/.github/workflows/toxic.yml +++ b/.github/workflows/toxic.yml @@ -3,7 +3,7 @@ name: ghcr.io/opencyphal/toxic container build and publish. on: release: types: [ published ] - + pull_request: branches: [ "main" ] diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..2997cfd --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "git-blame.gitWebUrl": "" +} \ No newline at end of file diff --git a/README.md b/README.md index e8fb526..40e0ab6 100644 --- a/README.md +++ b/README.md @@ -23,12 +23,14 @@ like [libcanard](https://github.com/OpenCyphal/libcanard) and #### Supported Versions -| tag | Python | Gcc | Clang | Cmake | Other Utilities | -|----------|--------|-----|-------|-------|-----------------| -| [ts20.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 9.3.0 | 10.0.0 | 3.16.3 | | -| [ts22.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 11.3.0 | 15.0.7 | 3.22.1 | -| [ts22.4.2](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 11.3.0 | 15.0.7 | 3.22.1 | -| [ts22.4.3](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 11.3.0 | 15.0.7 | 3.22.1 | +| tag | Python | Gcc | Clang | Cmake | Platforms | Other Utilities | +|----------|--------|-----|-------|-------|-----------|-----------------| +| [ts20.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 9.3.0 | 10.0.0 | 3.16.3 | | | +| [ts22.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 11.3.0 | 15.0.7 | 3.22.1 | | +| [ts22.4.2](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 11.3.0 | 15.0.7 | 3.22.1 | | +| [ts22.4.3](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 11.3.0 | 15.0.7 | 3.22.1 | | +| ts22.4.4 - An experimental release that shouldn't be used. | +| [ts22.4.5](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toolshed) | 3.10 | 11.4.0 | 18.0.0 | 3.22.1 | | You can use this in your workflow yaml like this: @@ -49,10 +51,10 @@ is based on Ubuntu and provides the necessary compilers and utilities to author #### Supported Versions -| tag | Python | Tex Live | git | Other Utilities | -|----------|--------|----------|-----|-----------------| -| [te20.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/texer) | 3.11 | 2019 | 2.25.1 | | -| [te22.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/texer) | 3.11 | 2022 | 2.34.1 | | +| tag | Python | Tex Live | git | Platforms | Other Utilities | +|----------|--------|----------|-----|-----------|-----------------| +| [te20.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/texer) | 3.11 | 2019 | 2.25.1 | | | +| [te22.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/texer) | 3.11 | 2022 | 2.34.1 | | | You can use this in your workflow yaml like this: @@ -74,10 +76,10 @@ is based on Ubuntu and provides all modern Python3 distributions, pip, tox, and #### Supported Versions -| tag | Base Python | Python Versions | Tox | Nox | pip | Other Utilities | -|----------|-------------|-----------------|-----|-----|-----|-----------------| -| [tx20.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toxic) | 3.8 | 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12 | 4.4.5 | (not available) | 20.0.2 | | -| [tx22.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toxic) | 3.8 | 3.7, 3.8, 3.9, 3.10, 3.11, 3.12 | 4.4.5 | (not available) | 20.0.2 | | +| tag | Base Python | Python Versions | Tox | Nox | pip | Platforms | Other Utilities | +|----------|-------------|-----------------|-----|-----|-----|-----------|-----------------| +| [tx20.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toxic) | 3.8 | 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12 | 4.4.5 | (not available) | 20.0.2 | | | +| [tx22.4.1](https://github.com/OpenCyphal/docker_toolchains/pkgs/container/toxic) | 3.8 | 3.7, 3.8, 3.9, 3.10, 3.11, 3.12 | 4.4.5 | (not available) | 20.0.2 | | | You can use this in your workflow yaml like this: diff --git a/toolshed/Dockerfile b/toolshed/Dockerfile index 595bf3b..cdfae7d 100644 --- a/toolshed/Dockerfile +++ b/toolshed/Dockerfile @@ -1,7 +1,7 @@ # # Builds the toolshed/ubuntu-22.04 toolchain container. # -FROM ubuntu:22.04 +FROM ubuntu:22.04 AS base LABEL org.opencontainers.image.description "Provides a consistent build and test environment for development, continuous-integration, and test automation of OpenCyphal C and C++ based projects." @@ -19,53 +19,60 @@ ENV LC_ALL=en_US.UTF-8 COPY provision.sh / RUN /provision.sh + # +---------------------------------------------------------------------------+ # | NVM/nodejs # +---------------------------------------------------------------------------+ +FROM base AS node + WORKDIR /tmp ADD nvm-install.sh ./nvm-install.sh RUN . ./nvm-install.sh ENV NVM_DIR="~/.nvm" RUN . ~/.nvm/nvm.sh && nvm install v16.20.0 + +# +---------------------------------------------------------------------------+ +# | INSTALL PYTHON STUFF +# +---------------------------------------------------------------------------+ +FROM node AS python +WORKDIR /tmp + +RUN pip3 install virtualenv +RUN pip3 install tox +RUN pip3 install nox +RUN pip3 install gcovr +RUN pip3 list + + # +---------------------------------------------------------------------------+ # | LLVM # +---------------------------------------------------------------------------+ +FROM python AS llvm WORKDIR /tmp + ADD llvm-install.sh ./llvm-install.sh ADD llvm-select.sh ./llvm-select.sh -RUN ./llvm-install.sh 15 all -RUN ./llvm-select.sh 15 +RUN ./llvm-install.sh 18 all +RUN ./llvm-select.sh 18 + # +---------------------------------------------------------------------------+ -# | DOXYGEN BUILD +# | GCC # +---------------------------------------------------------------------------+ -ARG DOXYGEN_VERSION=1_9_6 - -WORKDIR /tmp -COPY doxygen-Release_${DOXYGEN_VERSION}.sha512.txt . -ADD https://github.com/doxygen/doxygen/archive/refs/tags/Release_${DOXYGEN_VERSION}.tar.gz doxygen-Release_${DOXYGEN_VERSION}.tar.gz -RUN sha512sum -c doxygen-Release_${DOXYGEN_VERSION}.sha512.txt -RUN mkdir doxygen-Release -RUN tar -xvf doxygen-Release_${DOXYGEN_VERSION}.tar.gz -C doxygen-Release --strip-components 1 -RUN rm doxygen-Release_${DOXYGEN_VERSION}.tar.gz -RUN mkdir doxygen-Release/build +FROM llvm AS gcc-arm64 -WORKDIR /tmp/doxygen-Release/build -RUN cmake -G "Unix Makefiles" -Dbuild_parse:BOOL=ON -Duse_libclang:BOOL=ON .. -RUN make -RUN make install +ARG GCC_HOST_PLATFORM=aarch64 -WORKDIR /tmp -RUN rm -rf doxygen-Release +FROM llvm AS gcc-amd64 +ARG GCC_HOST_PLATFORM=x86_64 -# +---------------------------------------------------------------------------+ -# | INSTALL TOOLCHAINS -# +---------------------------------------------------------------------------+ +FROM gcc-$TARGETARCH AS gcc +WORKDIR /tmp # ARM: M-Cores, Bare Metal -ARG GCC_ARM_NONE_EABI_PLATFORM=x86_64 +ARG GCC_ARM_NONE_EABI_PLATFORM=${GCC_HOST_PLATFORM} ARG GCC_ARM_NONE_EABI_VERSION=11.2-2022.02 ARG GCC_ARM_NONE_EABI_TRIPLE=arm-none-eabi ARG GCC_ARM_NONE_EABI_BASENAME=gcc-arm-${GCC_ARM_NONE_EABI_VERSION}-${GCC_ARM_NONE_EABI_PLATFORM}-${GCC_ARM_NONE_EABI_TRIPLE} @@ -84,7 +91,7 @@ ENV PATH="/usr/share/${GCC_ARM_NONE_EABI_BASENAME}/bin:${PATH}" RUN ${GCC_ARM_NONE_EABI_TRIPLE}-gcc --version # ARM: A-Cores, Linux -ARG GCC_ARM_NONE_LINUX_PLATFORM=x86_64 +ARG GCC_ARM_NONE_LINUX_PLATFORM=${GCC_HOST_PLATFORM} ARG GCC_ARM_NONE_LINUX_VERSION=11.2-2022.02 ARG GCC_ARM_NONE_LINUX_TRIPLE=arm-none-linux-gnueabihf ARG GCC_ARM_NONE_LINUX_BASENAME=gcc-arm-${GCC_ARM_NONE_LINUX_VERSION}-${GCC_ARM_NONE_LINUX_PLATFORM}-${GCC_ARM_NONE_LINUX_TRIPLE} @@ -101,21 +108,47 @@ ENV PATH="/usr/share/${GCC_ARM_NONE_LINUX_BASENAME}/bin:${PATH}" RUN ${GCC_ARM_NONE_LINUX_TRIPLE}-gcc --version -# +---------------------------------------------------------------------------+ -# | INSTALL THE PATH FOR INTERATIVE SESSIONS -# +---------------------------------------------------------------------------+ -RUN echo "export PATH=$PATH" >> ~/.bashrc # +---------------------------------------------------------------------------+ -# | INSTALL PYTHON STUFF +# | DOXYGEN BUILD # +---------------------------------------------------------------------------+ -RUN pip3 install virtualenv -RUN pip3 install tox -RUN pip3 install nox -RUN pip3 install gcovr -RUN pip3 list +FROM gcc AS doxygen-arm64 + +ARG USE_LIB_CLANG=OFF + +FROM gcc AS doxygen-amd64 + +ARG USE_LIB_CLANG=OFF + +FROM doxygen-$TARGETARCH AS doxygen +WORKDIR /tmp + +ARG DOXYGEN_VERSION=1_9_6 + +COPY doxygen-Release_${DOXYGEN_VERSION}.sha512.txt . +ADD https://github.com/doxygen/doxygen/archive/refs/tags/Release_${DOXYGEN_VERSION}.tar.gz doxygen-Release_${DOXYGEN_VERSION}.tar.gz +RUN sha512sum -c doxygen-Release_${DOXYGEN_VERSION}.sha512.txt +RUN mkdir doxygen-Release +RUN tar -xvf doxygen-Release_${DOXYGEN_VERSION}.tar.gz -C doxygen-Release --strip-components 1 +RUN rm doxygen-Release_${DOXYGEN_VERSION}.tar.gz +RUN mkdir doxygen-Release/build + +WORKDIR /tmp/doxygen-Release/build +RUN cmake -G "Unix Makefiles" -Dbuild_parse:BOOL=ON -Duse_libclang:BOOL=${USE_LIB_CLANG} .. +RUN make +RUN make install + +WORKDIR /tmp +RUN rm -rf doxygen-Release + # +---------------------------------------------------------------------------+ -# | LEAVE THE WORKDIR AS /repo +# | FINALIZE # +---------------------------------------------------------------------------+ +FROM doxygen AS all + +# INSTALL THE PATH FOR INTERATIVE SESSIONS +RUN echo "export PATH=$PATH" >> ~/.bashrc + +# LEAVE THE WORKDIR AS /repo WORKDIR /repo diff --git a/toolshed/README.md b/toolshed/README.md index f743e8d..700ff9d 100644 --- a/toolshed/README.md +++ b/toolshed/README.md @@ -29,22 +29,69 @@ export FGP = (fine-grained permission for OpenCyphal organization) echo $FGP | docker login ghcr.io -u (github username) --password-stdin ``` -... now build (where x is the next version number for the container): +... build a multi-platform image following the instructions [here](https://docs.docker.com/build/building/multi-platform/#multiple-native-nodes): ```bash -docker build -t ghcr.io/opencyphal/toolshed:ts22.4.x . +docker buildx create --use --name cyphalbuild ``` -... and finally, push. +If you already created the `cyphalbuild` builder then just use it instead of creating it: ```bash -docker push ghcr.io/opencyphal/toolshed:ts22.4.x +docker buildx use cyphalbuild ``` -## Testing out the container +... then build the container: -To login to an interactive session do: +```bash +docker buildx build --platform linux/amd64,linux/arm64 -t ghcr.io/opencyphal/toolshed:ts22.4.x . +``` + +(where x is the next version number for the container) + +When the build completes you'll see the following warning: + +> WARNING: No output specified with docker-container driver. Build result will only remain in the build cache. To push result image into registry use --push or to load image into docker use --load + +It's important you don't restart your docker build container before you load and/or push since it may blow away the cache you need to push or load from. + +### Load +Currently you can't use --load with docker desktop so the only way to test the container is to rebuild for one platform only: + +```bash +docker buildx build --platform linux/arm64 --load -t ghcr.io/opencyphal/toolshed:ts22.4.x . +``` + +This will be operating off of the cache so it shouldn't take very long to complete. After it does you'll see your image using the classic `docker images` command. Now you can login to the container to test it out: ```bash docker run --rm -it -v ${PWD}:/repo ghcr.io/opencyphal/toolshed:ts22.4.x ``` + +### Push + +As with load, you need to re-build with a `--push` argument but you'll be using the cache so the build should be a no-op: + +```bash +docker buildx build --platform linux/amd64,linux/arm64 --push -t ghcr.io/opencyphal/toolshed:ts22.4.x . +``` + +## More on Multi-Platform Builders + +The two commands above make some assumptions about defaults and capabilities that we haven't verified on all build hosts. First, the `buildx create` command is assumed to target the correct Docker context. You can see your contexts by doing: + +``` +docker context ls +``` + +... then target a specific context by adding it as an additional argument to the builder create command: + +``` +docker buildx create --use --name cyphalbuild desktop-linux +``` + +We also assume you are using a build that has our two supported host platforms `linux/amd64` and `linux/arm64`. You can verify this after creating the builder using the inspect command. This should also verify that your builder is now in effect: + +``` +docker buildx inspect --bootstrap +``` \ No newline at end of file diff --git a/toolshed/gcc-arm-11.2-2022.02-aarch64-arm-none-eabi.sha512.txt b/toolshed/gcc-arm-11.2-2022.02-aarch64-arm-none-eabi.sha512.txt new file mode 100644 index 0000000..b43d91c --- /dev/null +++ b/toolshed/gcc-arm-11.2-2022.02-aarch64-arm-none-eabi.sha512.txt @@ -0,0 +1 @@ +be19622e61d320427143c8492d8955447b75de080f3228766942e3529874adcf1f174a84e8f1f3ec92d14f72e9a93ba3fc43a347000fecb1c4bf1c3c7cf0667f gcc-arm-11.2-2022.02-aarch64-arm-none-eabi.tar.xz \ No newline at end of file diff --git a/toolshed/gcc-arm-11.2-2022.02-aarch64-arm-none-linux-gnueabihf.sha512.txt b/toolshed/gcc-arm-11.2-2022.02-aarch64-arm-none-linux-gnueabihf.sha512.txt new file mode 100644 index 0000000..53fe507 --- /dev/null +++ b/toolshed/gcc-arm-11.2-2022.02-aarch64-arm-none-linux-gnueabihf.sha512.txt @@ -0,0 +1 @@ +f2acde25fbd5a0e5fcf2eb796942a7fa988dfe2a6190a0505f3b43b57ea3a4eb3b23e51aa35894d551a07a85561374040456826e407a02443daab132937f3be4 gcc-arm-11.2-2022.02-aarch64-arm-none-linux-gnueabihf.tar.xz diff --git a/toolshed/llvm-install.sh b/toolshed/llvm-install.sh index 8e97026..d057053 100755 --- a/toolshed/llvm-install.sh +++ b/toolshed/llvm-install.sh @@ -20,7 +20,7 @@ usage() { exit 1; } -CURRENT_LLVM_STABLE=15 +CURRENT_LLVM_STABLE=17 BASE_URL="http://apt.llvm.org" # Check for required tools @@ -50,9 +50,9 @@ source /etc/os-release DISTRO=${DISTRO,,} case ${DISTRO} in debian) - if [[ "${VERSION}" == "unstable" ]] || [[ "${VERSION}" == "testing" ]] || [[ "${VERSION_CODENAME}" == "bookworm" ]]; then - # For now, bookworm == sid. - # TODO change when bookworm is released + # Debian Trixie has a workaround because of + # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1038383 + if [[ "${VERSION}" == "unstable" ]] || [[ "${VERSION}" == "testing" ]] || [[ "${VERSION_CODENAME}" == "trixie" ]]; then CODENAME=unstable LINKNAME= else @@ -125,7 +125,8 @@ LLVM_VERSION_PATTERNS[13]="-13" LLVM_VERSION_PATTERNS[14]="-14" LLVM_VERSION_PATTERNS[15]="-15" LLVM_VERSION_PATTERNS[16]="-16" -LLVM_VERSION_PATTERNS[17]="" +LLVM_VERSION_PATTERNS[17]="-17" +LLVM_VERSION_PATTERNS[18]="" if [ ! ${LLVM_VERSION_PATTERNS[$LLVM_VERSION]+_} ]; then echo "This script does not support LLVM version $LLVM_VERSION" @@ -161,32 +162,15 @@ if [[ -z "`apt-key list 2> /dev/null | grep -i llvm`" ]]; then # Delete the key in the old format apt-key del AF4F7421 fi - -# first install the ubuntu base so we can establish the paths to clang -apt-get install -y - add-apt-repository "${REPO_NAME}" apt-get update PKG="clang-$LLVM_VERSION lldb-$LLVM_VERSION lld-$LLVM_VERSION clangd-$LLVM_VERSION" if [[ $ALL -eq 1 ]]; then # same as in test-install.sh # No worries if we have dups - PKG="$PKG clang-tidy-$LLVM_VERSION" - PKG="$PKG clang-format-$LLVM_VERSION" - PKG="$PKG clang-tools-$LLVM_VERSION" - PKG="$PKG llvm-$LLVM_VERSION-dev" - PKG="$PKG lld-$LLVM_VERSION" - PKG="$PKG lldb-$LLVM_VERSION" - PKG="$PKG llvm-$LLVM_VERSION-tools" - PKG="$PKG libomp-$LLVM_VERSION-dev" - PKG="$PKG libc++-$LLVM_VERSION-dev" - PKG="$PKG libc++abi-$LLVM_VERSION-dev" - PKG="$PKG libclang-common-$LLVM_VERSION-dev" - PKG="$PKG libclang-$LLVM_VERSION-dev" - PKG="$PKG libclang-cpp$LLVM_VERSION-dev" - PKG="$PKG libunwind-$LLVM_VERSION-dev" + PKG="$PKG clang-tidy-$LLVM_VERSION clang-format-$LLVM_VERSION clang-tools-$LLVM_VERSION llvm-$LLVM_VERSION-dev lld-$LLVM_VERSION lldb-$LLVM_VERSION llvm-$LLVM_VERSION-tools libomp-$LLVM_VERSION-dev libc++-$LLVM_VERSION-dev libc++abi-$LLVM_VERSION-dev libclang-common-$LLVM_VERSION-dev libclang-$LLVM_VERSION-dev libclang-cpp$LLVM_VERSION-dev libunwind-$LLVM_VERSION-dev" if test $LLVM_VERSION -gt 14; then PKG="$PKG libclang-rt-$LLVM_VERSION-dev libpolly-$LLVM_VERSION-dev" fi fi -apt-get install -y $PKG +apt-get install -y $PKG \ No newline at end of file diff --git a/toolshed/provision.sh b/toolshed/provision.sh index f25569d..74ac797 100755 --- a/toolshed/provision.sh +++ b/toolshed/provision.sh @@ -22,6 +22,8 @@ set -o pipefail export DEBIAN_FRONTEND=noninteractive apt-get update +apt-get -y install unzip +apt-get -y install zip # setup locales in the container so Python can default to utf-8. apt-get -y install locales @@ -45,10 +47,6 @@ apt-get -y install lcov apt-get -y install valgrind apt-get -y install graphviz apt-get -y install curl -apt-get -y install unzip -apt-get -y install zip -apt-get -y install gcc-multilib -apt-get -y install g++-multilib apt-get -y install qemu apt-get -y install ninja-build apt-get -y install can-utils diff --git a/toolshed/sigstore.public.key b/toolshed/sigstore.public.key new file mode 100644 index 0000000..918419c --- /dev/null +++ b/toolshed/sigstore.public.key @@ -0,0 +1,53 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +7ZT2Mw== +=Wi8g +-----END PGP PUBLIC KEY BLOCK-----