From 4be0e4cb43006be14a6a23d8bd3bdbd413ac9c2e Mon Sep 17 00:00:00 2001 From: takase1121 <20792268+takase1121@users.noreply.github.com> Date: Sun, 15 Sep 2024 11:12:35 +0800 Subject: [PATCH] reorganize and rewrite docker images and CI --- .github/workflows/build.yml | 69 ------- .github/workflows/ci.yml | 186 +++++++++++++++++++ Dockerfile-manylinux | 40 ---- Dockerfile-ubuntu | 40 ---- LICENSE | 19 ++ README.md | 48 +++-- action.yml | 66 +++++++ docker/Dockerfile-manylinux | 61 ++++++ docker/Dockerfile-ubuntu | 53 ++++++ entrypoint-ubuntu.sh => docker/entrypoint.sh | 3 +- entrypoint-manylinux.sh | 10 - entrypoint.sh | 80 ++++++++ libdecor-0-0_0.1.0-3build1_amd64.deb | Bin 15116 -> 0 bytes libdecor-0-dev_0.1.0-3build1_amd64.deb | Bin 5544 -> 0 bytes libdecor-0.1.0-3.el8.x86_64.rpm | Bin 43384 -> 0 bytes libdecor-devel-0.1.0-3.el8.x86_64.rpm | Bin 11256 -> 0 bytes 16 files changed, 496 insertions(+), 179 deletions(-) delete mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/ci.yml delete mode 100644 Dockerfile-manylinux delete mode 100644 Dockerfile-ubuntu create mode 100644 LICENSE create mode 100644 action.yml create mode 100644 docker/Dockerfile-manylinux create mode 100644 docker/Dockerfile-ubuntu rename entrypoint-ubuntu.sh => docker/entrypoint.sh (83%) delete mode 100755 entrypoint-manylinux.sh create mode 100755 entrypoint.sh delete mode 100644 libdecor-0-0_0.1.0-3build1_amd64.deb delete mode 100644 libdecor-0-dev_0.1.0-3build1_amd64.deb delete mode 100644 libdecor-0.1.0-3.el8.x86_64.rpm delete mode 100644 libdecor-devel-0.1.0-3.el8.x86_64.rpm diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 779eb23..0000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,69 +0,0 @@ -name: Create and publish Docker image - -on: [push] - -env: - REGISTRY: ghcr.io - IMAGE_NAME: ${{ github.repository }} - -jobs: - build-and-push-image: - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - - strategy: - fail-fast: true - matrix: - docker: - - { dockerfile: 'Dockerfile-ubuntu', suffix: '' } - - { dockerfile: 'Dockerfile-manylinux', suffix: '-manylinux' } - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Checkout Lite XL - uses: actions/checkout@v4 - with: - repository: lite-xl/lite-xl - path: lite-xl - - - name: Log in to the Container registry - uses: docker/login-action@v3 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Extract metadata (tags, labels) for Docker - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}${{ matrix.docker.suffix }} - - - name: Build Docker image - uses: docker/build-push-action@v6 - with: - context: . - file: ${{ matrix.docker.dockerfile }} - load: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - - - name: Test Docker Image - run: | - docker run --entrypoint /entrypoint.sh -v "$(pwd)/lite-xl":"/lite-xl" --rm \ - "${DOCKER_METADATA_OUTPUT_TAGS%%$'\n'*}" cd /lite-xl '&&' meson setup --wrap-mode=forcefallback build - - - name: Build and push Docker image - uses: docker/build-push-action@v6 - if: startsWith(github.ref, 'refs/tags/v') - with: - context: . - file: ${{ matrix.docker.dockerfile }} - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..b381743 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,186 @@ +name: CI + +on: [push] + +env: + REGISTRY: ghcr.io + IMAGE_BASE: ${{ github.repository }} + +jobs: + build: + runs-on: ubuntu-latest + + permissions: + contents: read + packages: write + + strategy: + fail-fast: false + matrix: + suffix: + - "ubuntu" + - "manylinux" + platform: + - linux/arm64 + - linux/amd64 + + steps: + - name: Prepare + id: prepare + run: | + digest_key="${{ matrix.suffix }}_${{ matrix.platform }}" + echo "DIGEST_KEY=${digest_key//\//-}" >> $GITHUB_OUTPUT + echo "IMAGE_NAME=${{ env.REGISTRY }}/${{ env.IMAGE_BASE }}-${{ matrix.suffix }}" >> $GITHUB_OUTPUT + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ steps.prepare.outputs.IMAGE_NAME }} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Set up container cache + uses: actions/cache@v4 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-${{ steps.prepare.outputs.DIGEST_KEY }}-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-${{ steps.prepare.outputs.DIGEST_KEY }}-buildx- + + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Build Docker image + id: build + uses: docker/build-push-action@v6 + with: + context: docker + file: docker/Dockerfile-${{ matrix.suffix }} + platforms: ${{ matrix.platform }} + labels: ${{ steps.meta.outputs.labels }} + outputs: type=image,name=${{ steps.prepare.outputs.IMAGE_NAME }},push-by-digest=true,name-canonical=true,push=true + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max + + # https://github.com/docker/build-push-action/issues/252 + # https://github.com/moby/buildkit/issues/1896 + - name: Fix Buildx cache not being cleared + run: | + rm -rf /tmp/.buildx-cache + mv /tmp/.buildx-cache-new /tmp/.buildx-cache + + - name: Export digest + run: | + mkdir -p /tmp/digests + digest="${{ steps.build.outputs.digest }}" + touch "/tmp/digests/${digest#sha256:}" + + - name: Upload digest + uses: actions/upload-artifact@v4 + with: + name: digests-${{ steps.prepare.outputs.DIGEST_KEY }} + path: /tmp/digests/* + if-no-files-found: error + retention-days: 1 + + merge: + runs-on: ubuntu-latest + needs: [build] + + permissions: + contents: read + packages: write + + strategy: + fail-fast: false + matrix: + image: + - { suffix: "", original: "ubuntu" } + - { suffix: "-ubuntu", original: "ubuntu" } + - { suffix: "-manylinux", original: "manylinux" } + + steps: + - name: Prepare + id: prepare + run: | + digest_key="${{ matrix.image.original }}" + echo "DIGEST_KEY=${digest_key//\//-}" >> $GITHUB_OUTPUT + echo "IMAGE_NAME=${{ env.REGISTRY }}/${{ env.IMAGE_BASE }}${{ matrix.image.suffix }}" >> $GITHUB_OUTPUT + echo "ORIGINAL_IMAGE_NAME=${{ env.REGISTRY }}/${{ env.IMAGE_BASE }}-${{ matrix.image.original }}" >> $GITHUB_OUTPUT + + - name: Download digests + uses: actions/download-artifact@v4 + with: + path: /tmp/digests + pattern: digests-${{ steps.prepare.outputs.DIGEST_KEY }}* + merge-multiple: true + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ steps.prepare.outputs.IMAGE_NAME }} + + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Create manifest list and push + working-directory: /tmp/digests + run: | + docker buildx imagetools create \ + $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ + $(printf '${{ steps.prepare.outputs.ORIGINAL_IMAGE_NAME }}@sha256:%s ' *) + + - name: Inspect image + run: | + docker buildx imagetools inspect ${{ steps.prepare.outputs.IMAGE_NAME }}:${{ steps.meta.outputs.version }} + + smoke-test: + runs-on: ubuntu-latest + needs: [merge] + + strategy: + matrix: + platform: + - linux/arm64 + - linux/amd64 + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Checkout Lite XL + uses: actions/checkout@v4 + with: + repository: lite-xl/lite-xl + path: lite-xl + + - name: Configure Lite XL + uses: ./ + with: + platform: ${{ matrix.platform }} + run: | + cd lite-xl + meson setup --wrap-mode=forcefallback build diff --git a/Dockerfile-manylinux b/Dockerfile-manylinux deleted file mode 100644 index 6cde447..0000000 --- a/Dockerfile-manylinux +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright (c) 2023 Lite XL Contributors -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -FROM quay.io/pypa/manylinux2014_x86_64 - -# these files are from RHEL8 -ADD libdecor-devel-0.1.0-3.el8.x86_64.rpm libdecor-0.1.0-3.el8.x86_64.rpm / - -# install deps -RUN yum -y update && yum clean all && \ - yum -y install wget curl zip unzip rh-python38 ccache fuse fuse3 sudo \ - libX11-devel libXi-devel libXcursor-devel libxkbcommon-devel libXrandr-devel wayland-devel wayland-protocols-devel dbus-devel ibus-devel SDL2-devel \ - gcc-aarch64-linux-gnu gcc-c++-aarch64-linux-gnu binutils-aarch64-linux-gnu - -# install meson and ninja -RUN source /opt/rh/rh-python38/enable && pip3 install meson ninja - -# install libdecor -RUN rpm -ivh --nodeps libdecor-devel-0.1.0-3.el8.x86_64.rpm -RUN rpm -ivh --nodeps libdecor-0.1.0-3.el8.x86_64.rpm - -ADD entrypoint-manylinux.sh /entrypoint.sh - diff --git a/Dockerfile-ubuntu b/Dockerfile-ubuntu deleted file mode 100644 index 0b9abd6..0000000 --- a/Dockerfile-ubuntu +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright (c) 2023 Lite XL Contributors -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -FROM ubuntu:18.04 - -# these files are from ubuntu 20.04 -ADD libdecor-0-dev_0.1.0-3build1_amd64.deb libdecor-0-0_0.1.0-3build1_amd64.deb / - -# install deps -RUN apt-get update && apt-get -y upgrade && \ - apt-get install -y sudo ccache curl wget python3.7 python3-pip build-essential \ - zip unzip git cmake wayland-protocols libsdl2-dev software-properties-common clang gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu && \ - python3.7 -m pip install meson ninja - -# update git -RUN sudo add-apt-repository -y ppa:git-core/ppa && \ - sudo apt-get update -y && sudo apt-get --with-new-pkgs upgrade -y git - -# install libdecor -RUN dpkg --force-all -i libdecor-0-dev_0.1.0-3build1_amd64.deb libdecor-0-0_0.1.0-3build1_amd64.deb - -ADD entrypoint-ubuntu.sh /entrypoint.sh - diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..493f6e9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2023-Present Lite XL Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 3a5fd83..a7e1ba0 100644 --- a/README.md +++ b/README.md @@ -1,28 +1,22 @@ # Lite XL Build Box -> **Note** +> [!IMPORTANT] > The Ubuntu variant of the build box is considered obsolete and will be removed in the future. > Please migrate to the CentOS variant. This is a Docker image of the setup used to build Lite XL. It is based on manylinux_2014 with some workarounds to ensure libdecor support. -## Notes - -Before installing anything, -you will need to uninstall `libdecor-devel` to prevent -any broken dependencies error during installation. - # Installed packages +- Python 3.11 (provided by manylinux) - `wget` - `curl` - `zip` - `unzip` - `ccache` - `sudo` -- `rh-python38` (configured as `python3`) -- `pip` (provided by `rh-python38`) +- `pip` (provided by `cp311-cp311`) - `git` - `cmake` - `meson` @@ -43,7 +37,32 @@ any broken dependencies error during installation. - `gcc-aarch64-linux-gnu` - `gcc-c++-aarch64-linux-gnu` - `binutils-aarch64-linux-gnu` -- `libdecor-devel` (package yanked from RHEL8) +- `libdecor-devel` (package yanked from Raven Extras) + +# GitHub Actions + +The recommended way of using this build box is via the `lite-xl-build-box` Action. +This action sets up the container environment correctly and runs a script in the container. + +```yaml +- name: Set up QEMU + uses: docker/setup-qemu-action@v3 + +- name: Build AppImages + uses: lite-xl/lite-xl-build-box@v3 + with: + run: | + bash scripts/appimage.sh --debug --static --version ${INSTALL_REF} --release + bash scripts/appimage.sh --debug --nobuild --addons --version ${INSTALL_REF} + +- name: Build AppImages (aarch64) + uses: lite-xl/lite-xl-build-box@v3 + with: + platform: linux/arm64 + run: | + bash scripts/appimage.sh --debug --static --version ${INSTALL_REF} --release + bash scripts/appimage.sh --debug --nobuild --addons --version ${INSTALL_REF} +``` # Step Entrypoint @@ -53,7 +72,7 @@ you can pass a script directly, similar to `run` by specifying ```yaml - name: Build AppImages - uses: docker://ghcr.io/lite-xl/lite-xl-build-box-manylinux:v2.2.0 + uses: docker://ghcr.io/lite-xl/lite-xl-build-box-manylinux:latest with: entrypoint: /entrypoint.sh args: | @@ -67,12 +86,6 @@ into a single line.
Instructions for Ubuntu -## Notes - -Before installing anything, -you will need to uninstall `libdecor-0-dev` and `libdecor-0` to prevent -any broken dependencies error during installation. - # Installed packages - `ccache` @@ -90,7 +103,6 @@ any broken dependencies error during installation. - `clang` - `gcc-aarch64-linux-gnu` - `binutils-aarch64-linux-gnu` -- `libdecor-0` (package yanked from Ubuntu 20.04) - `libdecor-0-dev` (package yanked from Ubuntu 20.04) # Step Entrypoint diff --git a/action.yml b/action.yml new file mode 100644 index 0000000..bd18a77 --- /dev/null +++ b/action.yml @@ -0,0 +1,66 @@ +# action.yml +name: "Lite XL Build Box Action" +description: "Runs a command inside Lite XL Build Box." +inputs: + image: + description: "Image name." + required: false + default: ghcr.io/${{ github.repository }}-manylinux:latest + volumes: + description: "A list of volumes to mount." + required: false + options: + description: 'Extra options passed to "docker run".' + required: false + run: + description: 'A list of commands to run inside the container (mutually exclusive with "run-args").' + required: false + run_args: + description: 'A list of arguments passed to "docker run" after the image name (mutually exclusive with "run").' + required: false + shell: + description: "Use a specific shell or entrypoint." + required: false + default: bash + platform: + description: "The platform to run the container on." + required: false + registry: + description: "Container Registry." + required: false + username: + description: "Username." + required: false + password: + description: "Password." + required: false + docker_network: + description: "Docker Network ID." + default: ${{ job.container.network }} + required: false +runs: + using: "composite" + steps: + - name: Login into registry + if: inputs.username != '' && inputs.password != '' && inputs.registry != '' + uses: docker/login-action@v3 + with: + registry: ${{ inputs.registry }} + username: ${{ inputs.username }} + password: ${{ inputs.password }} + + - name: Run Docker + shell: bash + env: + INPUT_IMAGE: ${{ inputs.image }} + INPUT_VOLUMES: ${{ inputs.volumes }} + INPUT_OPTIONS: ${{ inputs.options }} + INPUT_RUN: ${{ inputs.run }} + INPUT_RUN_ARGS: ${{ inputs.run_args }} + INPUT_SHELL: ${{ inputs.shell }} + INPUT_REGISTRY: ${{ inputs.registry }} + INPUT_USERNAME: ${{ inputs.username }} + INPUT_PASSWORD: ${{ inputs.password }} + INPUT_DOCKER_NETWORK: ${{ inputs.docker_network }} + INPUT_PLATFORM: ${{ inputs.platform }} + run: "$GITHUB_ACTION_PATH/entrypoint.sh" diff --git a/docker/Dockerfile-manylinux b/docker/Dockerfile-manylinux new file mode 100644 index 0000000..df75fc7 --- /dev/null +++ b/docker/Dockerfile-manylinux @@ -0,0 +1,61 @@ +# Copyright (c) 2023-Present Lite XL Contributors +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +# https://github.com/lukewiwa/manylinux2014 +# this image supports multi-platform builds +FROM docker.io/lukewiwa/manylinux2014 + +# add the entrypoint into the image +COPY entrypoint.sh / + +# use CPython 3.11 +ARG PYTHON_VERSION=cp311-cp311 + +# get TARGETARCH from buildx +ARG TARGETARCH + +# use the manylinux built-in CPython +ENV PATH="/opt/python/$PYTHON_VERSION/bin:$PATH" + +# install epel on aarch64 because it is not included +RUN if [[ $TARGETARCH = 'arm64' ]]; then \ + yum -y update && \ + yum -y install "https://archives.fedoraproject.org/pub/archive/epel/7/$(rpm --eval '%{_arch}')/Packages/e/epel-release-7-12.noarch.rpm" && \ + yum -y clean all && \ + rm -fr /var/cache; \ + fi + +# install deps +RUN yum -y update && \ + yum -y install wget curl zip unzip ccache fuse fuse3 sudo \ + libX11-devel libXi-devel libXcursor-devel libxkbcommon-devel libXrandr-devel wayland-devel wayland-protocols-devel dbus-devel ibus-devel SDL2-devel \ + gcc-aarch64-linux-gnu gcc-c++-aarch64-linux-gnu binutils-aarch64-linux-gnu && \ + yum -y clean all && \ + rm -fr /var/cache + +# install meson and ninja +RUN pip install --no-cache-dir --no-compile meson ninja + +# pretend to have libdecor installed +RUN rpm -i --force --nodeps --ignorearch "https://pkgs.sysadmins.ws/el8/extras/x86_64/libdecor-devel-0.1.0-3.el8.x86_64.rpm" && \ + touch /usr/lib64/libdecor-0.so /usr/lib64/libdecor-0.so.0 && \ + yum -y history sync && \ + yum -y clean all && \ + rm -fr /var/cache \ No newline at end of file diff --git a/docker/Dockerfile-ubuntu b/docker/Dockerfile-ubuntu new file mode 100644 index 0000000..01673d6 --- /dev/null +++ b/docker/Dockerfile-ubuntu @@ -0,0 +1,53 @@ +# Copyright (c) 2023-Present Lite XL Contributors +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +FROM ubuntu:18.04 + +ARG TARGETARCH + +# copy entrypoint into image +COPY entrypoint.sh / + +# install deps +RUN apt-get update && apt-get -y upgrade && \ + apt-get install -y software-properties-common && \ + add-apt-repository -y ppa:git-core/ppa && \ + apt-get update && apt-get -y upgrade && \ + apt-get install -y sudo ccache curl wget python3.8 python3-pip build-essential \ + zip unzip git cmake wayland-protocols libsdl2-dev clang && \ + rm -rf /var/lib/apt/lists/* + +# install cross compiler +RUN if [ $TARGETARCH = 'amd64' ]; then \ + apt-get update && apt-get -y upgrade && \ + apt-get install -y gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu && \ + rm -rf /var/lib/apt/lists/*; \ + fi + +# install meson and ninja +RUN python3.8 -m pip install --no-cache-dir --no-compile --upgrade pip && \ + python3.8 -m pip install --no-cache-dir --no-compile meson ninja + +# pretend to have libdecor +RUN wget "http://archive.ubuntu.com/ubuntu/pool/main/libd/libdecor-0/libdecor-0-dev_0.1.0-3build1_amd64.deb" && \ + dpkg --force-all -i "libdecor-0-dev_0.1.0-3build1_amd64.deb" && \ + rm -f "libdecor-0-dev_0.1.0-3build1_amd64.deb" && \ + perl -i~ -pe 's|\QDepends: libdecor-0-0 (= 0.1.0-3build1), libwayland-dev\E\n||g' /var/lib/dpkg/status && \ + touch /usr/lib/$(dpkg-architecture -q DEB_TARGET_MULTIARCH)/libdecor-0.so /usr/lib/$(dpkg-architecture -q DEB_TARGET_MULTIARCH)/libdecor-0.so.0 \ No newline at end of file diff --git a/entrypoint-ubuntu.sh b/docker/entrypoint.sh similarity index 83% rename from entrypoint-ubuntu.sh rename to docker/entrypoint.sh index 9970e1c..758d3da 100755 --- a/entrypoint-ubuntu.sh +++ b/docker/entrypoint.sh @@ -1,8 +1,7 @@ -#!/bin/bash +#!/usr/bin/env bash SCRIPT="$(mktemp)" printf '%s' "$*" >> "$SCRIPT" exec /bin/bash --login -e -o pipefail "$SCRIPT" - diff --git a/entrypoint-manylinux.sh b/entrypoint-manylinux.sh deleted file mode 100755 index 29ef5bb..0000000 --- a/entrypoint-manylinux.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -SCRIPT="$(mktemp)" - -printf '%s' "$*" >> "$SCRIPT" - -source /opt/rh/rh-python38/enable - -exec /bin/bash --login -e -o pipefail "$SCRIPT" - diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 0000000..95bdd9c --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,80 @@ +#!/usr/bin/env bash +set -eo pipefail +IFS=$'\n\t' + +# adapted from https://github.com/addnab/docker-run-action/blob/main/entrypoint.sh + +main() { + local COLOR_RED="\e[0;31m" + local COLOR_RESET="\e[0m" + + local script + IFS=" " read -r -a argv <<< "$INPUT_OPTIONS" + IFS=" " read -r -a run_args <<< "$INPUT_RUN_ARGS" + + # try to guard against both run and run_args being specified + if [[ -n "$INPUT_RUN" ]] && [[ -n "$INPUT_RUN_ARGS" ]]; then + echo -e "${COLOR_RED}error: run and run-args are mutually exclusive.${COLOR_RESET}" + fi + + # pull the image + if [[ -n "$INPUT_PLATFORM" ]]; then + docker pull -q --platform "$INPUT_PLATFORM" "$INPUT_IMAGE" + else + docker pull -q "$INPUT_IMAGE" + fi + + # set required parameters + argv+=(--rm --workdir /github/workspace --entrypoint "$INPUT_SHELL") + + # set network + if [[ -n "$INPUT_DOCKER_NETWORK" ]]; then + argv+=(--network "$INPUT_DOCKER_NETWORK") + fi + + # set the platform + if [[ -n "$INPUT_PLATFORM" ]]; then + argv+=(--platform "$INPUT_PLATFORM") + fi + + # load all environment variables + for prefix in GITHUB_ RUNNER_ ACTIONS_; do + while IFS= read -r env; do + argv+=(-e "$env") + done <<< "$(env | grep -o "^${prefix}[^=]*")" + done + + # load extra environment variables + argv+=(-e HOME -e CI=true -e GITHUB_ACTIONS=true) + + # add important volumes + # some directories here are taken from action steps that uses docker:// protocols + DOCKER_HOST="${DOCKER_HOST:-unix:///var/run/docker.sock}" + DOCKER_HOST="${DOCKER_HOST#unix://}" + argv+=( + -v "$DOCKER_HOST:$DOCKER_HOST" + -v "$RUNNER_TEMP/_github_home:/github/home" + -v "$RUNNER_TEMP/_github_workflow:/github/workflow" + -v "$RUNNER_TEMP/_runner_file_commands:/github/file_commands" + -v "$GITHUB_WORKSPACE:/github/workspace" + ) + + # add user defined volumes + while IFS= read -r line; do + if [[ -n "${line// }" ]]; then + argv+=('-v' "$line") + fi + done <<< "$INPUT_VOLUMES" + + # create the script file and mount it in the container + if [[ -n "$INPUT_RUN" ]]; then + script="$(mktemp -t script.sh.XXXXXX)" + printf '%s' "$INPUT_RUN" > "$script" + run_args=('--login' '-e' '-o' 'pipefail' '/script.sh') + argv+=('-v' "$script:/script.sh:ro") + fi + + exec docker run "${argv[@]}" "$INPUT_IMAGE" "${run_args[@]}" +} + +main "$@" \ No newline at end of file diff --git a/libdecor-0-0_0.1.0-3build1_amd64.deb b/libdecor-0-0_0.1.0-3build1_amd64.deb deleted file mode 100644 index ba03ecc3962781446ee6a42d2e5f447ceede5aa1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15116 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 diff --git a/libdecor-0-dev_0.1.0-3build1_amd64.deb b/libdecor-0-dev_0.1.0-3build1_amd64.deb deleted file mode 100644 index 8ee27a270763f20ac0ea278245774f623d43448d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5544 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 diff --git a/libdecor-0.1.0-3.el8.x86_64.rpm b/libdecor-0.1.0-3.el8.x86_64.rpm deleted file mode 100644 index b83e675e8a261acb61f91cc277c76c5f6953760e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43384 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