diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml deleted file mode 100644 index 90b5e423..00000000 --- a/.github/workflows/docker-build.yml +++ /dev/null @@ -1,100 +0,0 @@ -name: Build and Push GCC/Clang Docker image - -on: - schedule: - - cron: '0 0 * * *' - workflow_dispatch: - -env: - DOCKER_IMAGE: luohaothu/gcc-trunk - -jobs: - check-and-build: - runs-on: ubuntu-latest - outputs: - gcc-version: ${{ steps.detect-versions.outputs.GCC_VERSION }} - llvm-version: ${{ steps.detect-versions.outputs.LLVM_VERSION }} - should-build: ${{ steps.check-tag.outputs.should-build }} - image-tag: ${{ steps.format-tag.outputs.tag }} - - steps: - - name: Free up disk space - run: | - sudo apt-get clean - sudo apt-get autoremove -y - sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc - df -h - - - name: Checkout code - uses: actions/checkout@v4 - - - name: Detect latest compiler versions - id: detect-versions - run: | - chmod +x scripts/detect-latest-versions.sh - ./scripts/detect-latest-versions.sh - echo "GCC_VERSION=${GCC_VERSION}" >> $GITHUB_ENV - echo "LLVM_VERSION=${LLVM_VERSION}" >> $GITHUB_ENV - shell: bash - - - name: Format image tag - id: format-tag - run: | - TAG="gcc-${GCC_VERSION}-llvm-${LLVM_VERSION}" - echo "tag=${TAG}" >> $GITHUB_OUTPUT - echo "Image tag will be: ${{ env.DOCKER_IMAGE }}:${TAG}" - shell: bash - env: - GCC_VERSION: ${{ steps.detect-versions.outputs.GCC_VERSION }} - LLVM_VERSION: ${{ steps.detect-versions.outputs.LLVM_VERSION }} - - - name: Check if Docker image tag exists - id: check-tag - uses: tyriis/docker-image-tag-exists@v2.1.0 - with: - registry: docker.io - repository: luohaothu/gcc-trunk - tag: ${{ steps.format-tag.outputs.tag }} - - - name: Determine if build is needed - id: should-build - run: | - if [ "${{ steps.check-tag.outputs.tag }}" = "found" ]; then - echo "Image tag already exists, skipping build" - echo "should-build=false" >> $GITHUB_OUTPUT - else - echo "Image tag does not exist, will build" - echo "should-build=true" >> $GITHUB_OUTPUT - fi - shell: bash - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Login to Docker Hub - if: steps.should-build.outputs.should-build == 'true' - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Build and push - if: steps.should-build.outputs.should-build == 'true' - uses: docker/build-push-action@v5 - with: - context: ./scripts - file: ./scripts/Dockerfile - push: true - build-args: | - GCC_VERSION=${{ steps.detect-versions.outputs.GCC_VERSION }} - LLVM_VERSION=${{ steps.detect-versions.outputs.LLVM_VERSION }} - tags: | - ${{ env.DOCKER_IMAGE }}:${{ steps.format-tag.outputs.tag }} - ${{ env.DOCKER_IMAGE }}:latest - labels: | - gcc.version=${{ steps.detect-versions.outputs.GCC_VERSION }} - llvm.version=${{ steps.detect-versions.outputs.LLVM_VERSION }} - build.date=${{ github.event.head_commit.timestamp }} diff --git a/scripts/Dockerfile b/scripts/Dockerfile deleted file mode 100644 index b52ff070..00000000 --- a/scripts/Dockerfile +++ /dev/null @@ -1,113 +0,0 @@ -ARG GCC_VERSION -ARG LLVM_VERSION - -FROM ubuntu:24.04 - -ARG GCC_VERSION -ARG LLVM_VERSION - -ENV DEBIAN_FRONTEND=noninteractive - -# Use Tsinghua Tuna mirror for faster apt installs (Ubuntu 24.04 uses DEB822 sources). -RUN cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak && \ - cat > /etc/apt/sources.list.d/ubuntu.sources <<'EOF' -Types: deb -URIs: http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ -Suites: noble noble-updates noble-backports -Components: main restricted universe multiverse -Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg - -Types: deb -URIs: http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ -Suites: noble-security -Components: main restricted universe multiverse -Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg -EOF - -RUN apt-get update && apt-get install -y \ - ca-certificates \ - wget \ - git \ - make \ - flex \ - bison \ - build-essential \ - libgmp-dev \ - libmpc-dev \ - libmpfr-dev \ - texinfo \ - zlib1g-dev \ - libisl-dev \ - gnupg \ - lsb-release \ - software-properties-common \ - curl \ - ninja-build \ - cmake \ - python3 \ - && rm -rf /var/lib/apt/lists/* - -WORKDIR /gcc-build - -RUN git clone --depth 1 --branch "releases/gcc-${GCC_VERSION}" --single-branch \ - https://mirrors.tuna.tsinghua.edu.cn/git/gcc.git gcc-source && \ - mkdir -p gcc-build && \ - cd gcc-build && \ - ../gcc-source/configure \ - --disable-multilib \ - --enable-languages=c,c++,fortran \ - --prefix=/usr/local && \ - make -j$(nproc) && \ - make install && \ - cd / && \ - rm -rf /gcc-build - -WORKDIR /llvm-build - -RUN git clone --depth 1 --branch "llvmorg-${LLVM_VERSION}" --single-branch \ - https://mirrors.tuna.tsinghua.edu.cn/git/llvm-project.git llvm-project && \ - mkdir -p build && \ - cd build && \ - cmake -G Ninja \ - -DLLVM_ENABLE_PROJECTS="clang;lld;flang" \ - -DLLVM_ENABLE_RTTI=ON \ - -DLLVM_ENABLE_CXX_STD=ON \ - -DLLVM_TARGETS_TO_BUILD=X86 \ - -DLLVM_BUILD_EXAMPLES=OFF \ - -DLLVM_INCLUDE_TESTS=OFF \ - -DLLVM_INCLUDE_DOCS=OFF \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX=/usr/local \ - ../llvm-project/llvm && \ - ninja && \ - ninja install && \ - cd / && \ - rm -rf /llvm-build - -WORKDIR / - -ENV PATH="/usr/local/bin:${PATH}" -ENV LD_LIBRARY_PATH="/usr/local/lib:/usr/local/lib64" -ENV CC=gcc -ENV CXX=g++ -ENV FC=gfortran - -RUN echo "=== GCC ===" && \ - gcc --version && \ - g++ --version && \ - gfortran --version && \ - echo "=== LLVM/Clang ===" && \ - clang --version && \ - clang++ --version && \ - flang --version && \ - echo "=== Versions ===" && \ - echo "GCC version: $(gcc --version | head -n1)" && \ - echo "Clang version: $(clang --version | head -n1)" && \ - echo "Flang version: $(flang --version | head -n1)" - -WORKDIR /workspace - -LABEL maintainer="luohaothu" -LABEL description="Docker image with GCC ${GCC_VERSION} and LLVM/Clang ${LLVM_VERSION}" -LABEL gcc.version="${GCC_VERSION}" -LABEL llvm.version="${LLVM_VERSION}" diff --git a/scripts/detect-latest-versions.sh b/scripts/detect-latest-versions.sh deleted file mode 100755 index a669593a..00000000 --- a/scripts/detect-latest-versions.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash -set -e - -echo "Detecting latest compiler releases..." - -GCC_VERSION=$(curl -s https://ftp.gnu.org/gnu/gcc/ | \ - grep -oP 'href="gcc-\d+\.\d+(?:\.\d+)?/' | \ - sed 's/href="gcc-//' | \ - sed 's/\///' | \ - sort -Vu | \ - tail -n 1) - -if [ -z "$GCC_VERSION" ]; then - echo "Failed to detect GCC version" - exit 1 -fi - -LLVM_VERSION=$(curl -s https://api.github.com/repos/llvm/llvm-project/releases/latest | \ - python3 -c "import json, sys; data = json.load(sys.stdin); tag = data.get('tag_name', ''); print(tag.replace('llvmorg-', ''))") - -if [ -z "$LLVM_VERSION" ]; then - echo "Failed to detect LLVM version" - exit 1 -fi - -echo "Detected versions:" -echo "GCC_VERSION=$GCC_VERSION" -echo "LLVM_VERSION=$LLVM_VERSION" - -if [ -n "$GITHUB_OUTPUT" ]; then - echo "GCC_VERSION=$GCC_VERSION" >> $GITHUB_OUTPUT - echo "LLVM_VERSION=$LLVM_VERSION" >> $GITHUB_OUTPUT -fi