From dbbe0dca514f2a8419c8695e3002d1722524f89b Mon Sep 17 00:00:00 2001
From: Administrator <contact@microhacks.co.uk>
Date: Thu, 18 Aug 2022 01:39:50 +0000
Subject: [PATCH] Support arm64

---
 .gitlab-ci.yml               | 44 ++++++++++++++++++++++++------------
 arm64.dockerfile             | 38 +++++++++++++++++++++++++++++++
 Dockerfile => x86.dockerfile |  2 ++
 3 files changed, 69 insertions(+), 15 deletions(-)
 create mode 100644 arm64.dockerfile
 rename Dockerfile => x86.dockerfile (92%)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3788836..6418360 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,16 +1,4 @@
-# This file is a template, and might need editing before it works on your project.
-# To contribute improvements to CI/CD templates, please follow the Development guide at:
-# https://docs.gitlab.com/ee/development/cicd/templates.html
-# This specific template is located at:
-# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Docker.gitlab-ci.yml
-
-# Build a Docker image with CI/CD and push to the GitLab registry.
-# Docker-in-Docker documentation: https://docs.gitlab.com/ee/ci/docker/using_docker_build.html
-#
-# This template uses one generic job with conditional builds
-# for the default branch and all other (MR) branches.
-
-docker-build:
+x86:
   # Use the official docker image.
   image: docker:latest
   stage: build
@@ -29,9 +17,35 @@ docker-build:
         tag=":$CI_COMMIT_REF_SLUG"
         echo "Running on branch '$CI_COMMIT_BRANCH': tag = $tag"
       fi
-    - docker build --pull -t "$CI_REGISTRY_IMAGE${tag}" .
+    - docker build --pull -f x86.dockerfile -t "$CI_REGISTRY_IMAGE${tag}" .
     - docker push "$CI_REGISTRY_IMAGE${tag}"
   # Run this job in a branch where a Dockerfile exists
   rules:
     - changes:
-      - Dockerfile
\ No newline at end of file
+      - x86.dockerfile
+arm64:
+  image: docker:latest
+  stage: build
+  tags:
+    - arm64
+  services:
+    - docker:dind
+  before_script:
+    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
+  # Default branch leaves tag empty (= latest tag)
+  # All other branches are tagged with the escaped branch name (commit ref slug)
+  script:
+    - |
+      if [[ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]]; then
+        tag="arm64"
+        echo "Running on default branch '$CI_DEFAULT_BRANCH': tag = 'arm64'"
+      else
+        tag=":$CI_COMMIT_REF_SLUG"
+        echo "Running on branch '$CI_COMMIT_BRANCH': tag = $tag"
+      fi
+    - docker build --pull -f arm64.dockerfile -t "$CI_REGISTRY_IMAGE${tag}-arm64" .
+    - docker push "$CI_REGISTRY_IMAGE${tag}-arm64"
+  # Run this job in a branch where a Dockerfile exists
+  rules:
+    - changes:
+      - x86.dockerfile
diff --git a/arm64.dockerfile b/arm64.dockerfile
new file mode 100644
index 0000000..bbd7dca
--- /dev/null
+++ b/arm64.dockerfile
@@ -0,0 +1,38 @@
+## This file can be used to build arm64 Linux versions of a Bevy project
+
+FROM ghcr.io/rust-lang/rust:nightly-buster
+
+RUN apt-get update -yqq && \
+    apt-get upgrade -yqq &&\
+    apt-get install -yqq --no-install-recommends \
+    ca-certificates \
+    build-essential \
+    g++ \
+    clang \
+    pkg-config \
+    libx11-dev \
+    libasound2-dev \
+    libudev-dev \
+    lld \
+    libgtk-3-dev \
+    libwebkit2gtk-4.0-dev \
+    curl \
+    wget \
+    libssl-dev \
+    libgtk-3-dev \
+    libayatana-appindicator3-dev \
+    librsvg2-dev \
+    git \
+    git-lfs \
+    zip
+
+# RUN wget https://lab.lcr.gr/microhacks/crunch/-/jobs/artifacts/trunk/raw/target/release/crunch?job=build-linux && \
+#    mv 'crunch?job=build-linux' crunch && \
+#    chmod +x crunch && \
+#    mv crunch /usr/local/bin/crunch
+
+# RUN wget https://lab.lcr.gr/microhacks/flit/-/jobs/artifacts/trunk/raw/target/release/flit?job=build-linux && \
+#    mv 'flit?job=build-linux' flit && \
+#    chmod +x flit && \
+#    mv flit /usr/local/bin/flit
+
diff --git a/Dockerfile b/x86.dockerfile
similarity index 92%
rename from Dockerfile
rename to x86.dockerfile
index 12033da..448ecd8 100644
--- a/Dockerfile
+++ b/x86.dockerfile
@@ -1,3 +1,5 @@
+## This file can be used to build x86 Linux, x86 Windows and Wasm versions of a Bevy project
+
 FROM ghcr.io/rust-lang/rust:nightly-buster
 
 RUN apt-get update -yqq && \
-- 
GitLab