|
| 1 | +FROM snapcore/snapcraft AS snapcraft |
| 2 | +# Using multi-stage dockerfile to obtain snapcraft binary |
| 3 | + |
| 4 | +FROM ubuntu:bionic AS xarbuilder |
| 5 | +RUN apt-get update \ |
| 6 | + && apt-get install -y \ |
| 7 | + wget tar libssl1.0-dev libxml2-dev make g++ |
| 8 | +RUN cd /tmp \ |
| 9 | + && wget https://github.com/downloads/mackyle/xar/xar-1.6.1.tar.gz 2>&1 \ |
| 10 | + && tar -zxvf xar-1.6.1.tar.gz 2>&1 \ |
| 11 | + && mv xar-1.6.1 xar \ |
| 12 | + && cd xar \ |
| 13 | + && ./configure 2>&1 \ |
| 14 | + && make 2>&1 \ |
| 15 | + && make install 2>&1 |
| 16 | + |
| 17 | +FROM goflutter/golang-cross:latest AS hover |
| 18 | + |
| 19 | +# Add dart apt repository |
| 20 | +RUN wget -qO- https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - 2>&1 \ |
| 21 | + && wget -qO- https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list |
| 22 | + |
| 23 | +# Install dependencies via apt |
| 24 | +RUN apt-get update \ |
| 25 | + && apt-get upgrade -y \ |
| 26 | + && apt-get install -y \ |
| 27 | + # why is gnupg-agent needed? Can this be removed?? |
| 28 | + gnupg-agent \ |
| 29 | + # for what command are these dependencies?? |
| 30 | + libgl1-mesa-dev xorg-dev \ |
| 31 | + # dependencies for flutter |
| 32 | + dart unzip \ |
| 33 | + # dependencies for darwin-bundle |
| 34 | + icnsutils \ |
| 35 | + # dependencies for darwin-dmg |
| 36 | + genisoimage \ |
| 37 | + # dependencies for darwin-pkg |
| 38 | + cpio git \ |
| 39 | + # dependencies for linux-appimage |
| 40 | + libglib2.0-0 curl file \ |
| 41 | + # dependencies for linux-rpm |
| 42 | + rpm \ |
| 43 | + # dependencies for linux-snap |
| 44 | + locales \ |
| 45 | + # dependencies for windows-msi |
| 46 | + wixl imagemagick \ |
| 47 | + && rm -rf /var/lib/apt/lists/* \ |
| 48 | + && ln -sf /usr/lib/dart/bin/pub /usr/bin/pub |
| 49 | + |
| 50 | +# Install darwin-pkg dependencies |
| 51 | +# TODO, optimization: make bomutils in a separate stage, copy binaries/libs, like xar. |
| 52 | +RUN cd /tmp \ |
| 53 | + && git clone https://github.com/hogliux/bomutils 2>&1 \ |
| 54 | + && cd bomutils \ |
| 55 | + && make 2>&1 \ |
| 56 | + && make install 2>&1 |
| 57 | +COPY --from=xarbuilder /usr/local/bin/xar /usr/local/bin/xar |
| 58 | +COPY --from=xarbuilder /usr/local/lib/libxar.so.1 /usr/local/lib/libxar.so.1 |
| 59 | +COPY --from=xarbuilder /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 |
| 60 | + |
| 61 | +# Install linux-appimage dependencies |
| 62 | +# Currently broken |
| 63 | +#RUN cd /opt \ |
| 64 | +# && curl -LO https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage \ |
| 65 | +# && chmod a+x appimagetool-x86_64.AppImage \ |
| 66 | +# && ./appimagetool-x86_64.AppImage --appimage-extract \ |
| 67 | +# && mv squashfs-root appimagetool \ |
| 68 | +# && rm appimagetool-x86_64.AppImage |
| 69 | +#ENV PATH=/opt/appimagetool/usr/bin:$PATH |
| 70 | + |
| 71 | +# Install linux-snap dependencies (based on https://hub.docker.com/r/snapcore/snapcraft/dockerfile) |
| 72 | +COPY --from=snapcraft /snap/core /snap/core |
| 73 | +COPY --from=snapcraft /snap/snapcraft /snap/snapcraft |
| 74 | +COPY --from=snapcraft /snap/bin/snapcraft /snap/bin/snapcraft |
| 75 | +# RUN locale-gen en_US.UTF-8 # TODO: remove locales from apt install above or re-enable these env vars |
| 76 | +# ENV LANG="en_US.UTF-8" |
| 77 | +# ENV LANGUAGE="en_US:en" |
| 78 | +# ENV LC_ALL="en_US.UTF-8" |
| 79 | +ENV PATH="/snap/bin:$PATH" |
| 80 | +ENV SNAP="/snap/snapcraft/current" |
| 81 | +ENV SNAP_NAME="snapcraft" |
| 82 | +ENV SNAP_ARCH="amd64" |
| 83 | +# RUN dpkg-reconfigure locales |
| 84 | + |
| 85 | +# TODO: Add pacman pkg packaging |
| 86 | + |
| 87 | +# Install Flutter from the beta channel |
| 88 | +RUN git clone --single-branch --depth=1 --branch beta https://github.com/flutter/flutter /opt/flutter 2>&1 \ |
| 89 | + && ln -sf /opt/flutter/bin/flutter /usr/bin/flutter \ |
| 90 | + && flutter doctor -v |
| 91 | + |
| 92 | +# Build hover |
| 93 | +WORKDIR /go/src/app |
| 94 | +COPY . . |
| 95 | +RUN go get -d -v ./... 2>&1 |
| 96 | +RUN go install -v ./... 2>&1 |
| 97 | + |
| 98 | +COPY docker/hover-safe.sh /usr/local/bin/hover-safe.sh |
| 99 | + |
| 100 | +WORKDIR /app |
0 commit comments