diff --git a/archived/snapcraft-x64/Dockerfile_Unused b/archived/snapcraft-x64/Dockerfile_Unused deleted file mode 100644 index 3ffb1dd..0000000 --- a/archived/snapcraft-x64/Dockerfile_Unused +++ /dev/null @@ -1,54 +0,0 @@ -ARG RISK=stable -ARG UBUNTU=18.04 - -FROM ubuntu:$UBUNTU as builder -ARG RISK -ARG UBUNTU -RUN echo "Building snapcraft:$RISK in ubuntu:$UBUNTU" - -# Grab dependencies -RUN apt-get update -RUN apt-get dist-upgrade --yes -RUN apt-get install --yes \ - curl \ - jq \ - squashfs-tools - -# Grab the core18 snap (which snapcraft uses as a base) from the stable channel -# and unpack it in the proper place. -RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/core18' | jq '.download_url' -r) --output core18.snap -RUN mkdir -p /snap/core18 -RUN unsquashfs -d /snap/core18/current core18.snap - -# Grab the snapcraft snap from the $RISK channel and unpack it in the proper -# place. -RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/snapcraft?channel='$RISK | jq '.download_url' -r) --output snapcraft.snap -RUN mkdir -p /snap/snapcraft -RUN unsquashfs -d /snap/snapcraft/current snapcraft.snap - -# Create a snapcraft runner (TODO: move version detection to the core of -# snapcraft). -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\"" >> /snap/bin/snapcraft -RUN echo 'exec "$SNAP/usr/bin/python3" "$SNAP/bin/snapcraft" "$@"' >> /snap/bin/snapcraft -RUN chmod +x /snap/bin/snapcraft - -# Multi-stage build, only need the snaps from the builder. Copy them one at a -# time so they can be cached. -FROM ubuntu:$UBUNTU -COPY --from=builder /snap/core18 /snap/core18 -COPY --from=builder /snap/snapcraft /snap/snapcraft -COPY --from=builder /snap/bin/snapcraft /snap/bin/snapcraft - -# Generate locale and install dependencies. -RUN apt-get update && apt-get dist-upgrade --yes && apt-get install --yes snapd sudo locales && locale-gen en_US.UTF-8 - -# 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" \ No newline at end of file diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 79b2b68..8f53405 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -56,3 +56,11 @@ jobs: - template: build.yml parameters: arch: buster-armhf + +- job: snapcraft_x64 + pool: + vmImage: 'ubuntu-latest' + steps: + - template: build.yml + parameters: + arch: snapcraft-x64 diff --git a/snapcraft-x64/Dockerfile b/snapcraft-x64/Dockerfile new file mode 100644 index 0000000..f5642c4 --- /dev/null +++ b/snapcraft-x64/Dockerfile @@ -0,0 +1,71 @@ +ARG RISK=stable +ARG REPO=mcr.microsoft.com/mirror/docker/library/ubuntu +ARG TAG=20.04 + +FROM ${REPO}:${TAG} as builder +ARG RISK +ARG REPO +ARG TAG +RUN echo "Building snapcraft:$RISK in $REPO:$TAG" + +# Grab dependencies +RUN apt-get update +RUN apt-get dist-upgrade --yes +RUN apt-get install --yes \ + curl \ + jq \ + squashfs-tools \ + git \ + build-essential \ + autoconf + +# Grab the core20 snap (which snapcraft uses as a base) from the stable channel +# and unpack it in the proper place. +RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/core20' | jq '.download_url' -r) --output core20.snap +RUN mkdir -p /snap/core20 +RUN unsquashfs -d /snap/core20/current core20.snap + +# Grab the snapcraft snap from the $RISK channel and unpack it in the proper +# place. +RUN curl -L $(curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/snapcraft?channel='$RISK | jq '.download_url' -r) --output snapcraft.snap +RUN mkdir -p /snap/snapcraft +RUN unsquashfs -d /snap/snapcraft/current snapcraft.snap + +# Fix Python3 installation: Make sure we use the interpreter from +# the snapcraft snap: +RUN unlink /snap/snapcraft/current/usr/bin/python3 +RUN ln -s /snap/snapcraft/current/usr/bin/python3.* /snap/snapcraft/current/usr/bin/python3 +RUN echo /snap/snapcraft/current/lib/python3.*/site-packages >> /snap/snapcraft/current/usr/lib/python3/dist-packages/site-packages.pth +RUN /snap/snapcraft/current/usr/bin/python3 /snap/snapcraft/current/usr/bin/pip3 install -U setuptools + +# Create a snapcraft runner (TODO: move version detection to the core of +# snapcraft). +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 | tr -d \')" && echo "export SNAP_VERSION=\"$snap_version\"" >> /snap/bin/snapcraft +RUN echo 'exec "$SNAP/usr/bin/python3" "$SNAP/bin/snapcraft" "$@"' >> /snap/bin/snapcraft +RUN chmod +x /snap/bin/snapcraft + +# Build patchelf +RUN git clone https://github.com/NixOS/patchelf +RUN cd patchelf && ./bootstrap.sh && ./configure && make && make check && cp ./src/patchelf /snap/bin/patchelf + +# Multi-stage build, only need the snaps from the builder. Copy them one at a +# time so they can be cached. +FROM ${REPO}:${TAG} +COPY --from=builder /snap/core20 /snap/core20 +COPY --from=builder /snap/snapcraft /snap/snapcraft +COPY --from=builder /snap/bin/snapcraft /snap/bin/snapcraft +COPY --from=builder /snap/bin/patchelf /snap/bin/patchelf + +# Generate locale and install dependencies. +RUN apt-get update && apt-get install --yes snapd sudo locales && locale-gen en_US.UTF-8 + +# Set the proper environment. +ENV LANG="en_US.UTF-8" +ENV LANGUAGE="en_US:en" +ENV LC_ALL="en_US.UTF-8" +ENV SNAP="/snap/snapcraft/current" +ENV SNAP_NAME="snapcraft" +ENV SNAP_ARCH="amd64" +ENV PATH="/snap/bin:/snap/snapcraft/current/usr/bin:$PATH" \ No newline at end of file