summaryrefslogtreecommitdiffstats
path: root/taskcluster/docker/snap-coreXX-build/Dockerfile
diff options
context:
space:
mode:
Diffstat (limited to 'taskcluster/docker/snap-coreXX-build/Dockerfile')
-rw-r--r--taskcluster/docker/snap-coreXX-build/Dockerfile80
1 files changed, 80 insertions, 0 deletions
diff --git a/taskcluster/docker/snap-coreXX-build/Dockerfile b/taskcluster/docker/snap-coreXX-build/Dockerfile
new file mode 100644
index 0000000000..29a343f6ea
--- /dev/null
+++ b/taskcluster/docker/snap-coreXX-build/Dockerfile
@@ -0,0 +1,80 @@
+FROM $DOCKER_IMAGE_PARENT
+MAINTAINER Gabriele Svelto <gsvelto@mozilla.com>
+
+RUN mkdir -p /builds
+RUN id worker || useradd -d /builds/worker -s /bin/bash -m worker
+WORKDIR /builds/worker
+
+# We need to declare all potentially cache volumes as caches. Also,
+# making high I/O paths volumes increase I/O throughput because of
+# AUFS slowness.
+VOLUME /builds/worker/checkouts
+
+RUN apt-get update && \
+ apt-get install -y \
+ build-essential \
+ curl \
+ libavcodec58 \
+ libavutil56 \
+ jq \
+ patch \
+ patchelf \
+ python3-dev \
+ python3-yaml \
+ squashfs-tools \
+ tar \
+ unzip \
+ uuid \
+ wget \
+ zip
+
+ARG SNAP_BASE
+
+COPY install-snap.sh /usr/local/bin/
+
+RUN install-snap.sh core
+
+RUN install-snap.sh core20
+
+# Snapcraft snap depends on core20 for python3.8 even when we target core22
+RUN install-snap.sh snapcraft
+
+RUN install-snap.sh core22
+
+ARG SNAP_LIST
+
+RUN for snap in $SNAP_LIST; do install-snap.sh "${snap}"; done
+
+# Create a snapcraft runner
+RUN mkdir -p /snap/bin
+RUN echo "#!/bin/sh" > /snap/bin/snapcraft
+RUN snap_version="$(awk '/^version:/{print $2}' /snap/snapcraft/current/meta/snap.yaml)" && echo "export SNAP_VERSION=\"$snap_version\"\nexport PATH=\$SNAP/bin/:\$SNAP/libexec/snapcraft/:\$PATH" >> /snap/bin/snapcraft
+RUN echo 'exec "$SNAP/bin/snapcraft" "$@"' >> /snap/bin/snapcraft
+RUN chmod +x /snap/bin/snapcraft
+
+# Generate locale
+RUN apt update && apt dist-upgrade --yes && apt install --yes sudo snapd locales && locale-gen en_US.UTF-8 && apt-get autoremove -y
+
+# Set the proper environment
+ENV LANG="en_US.UTF-8"
+ENV LANGUAGE="en_US:en"
+ENV LC_ALL="en_US.UTF-8"
+ENV PATH="/snap/bin:$PATH"
+ENV SNAP="/snap/snapcraft/current"
+ENV SNAP_NAME="snapcraft"
+ENV SNAP_ARCH="amd64"
+
+# Snapcraft pull will need to sudo apt-get update ...
+RUN echo "worker ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/worker && \
+ chmod 0440 /etc/sudoers.d/worker
+
+COPY run.sh /builds/worker/run.sh
+
+COPY parse.py /builds/worker/parse.py
+
+COPY patches /builds/worker/patches/
+
+RUN chown -R worker:worker /builds/worker
+
+# Set a default command useful for debugging
+CMD ["/bin/bash", "--login"]