diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..bcd6ffa --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,5 @@ +## Security + +## Preferred Languages + +We prefer all communications to be in English. diff --git a/alpine-arm64/Dockerfile b/alpine-arm64/Dockerfile index a26c26d..af54fe5 100644 --- a/alpine-arm64/Dockerfile +++ b/alpine-arm64/Dockerfile @@ -1,6 +1,9 @@ -FROM arm64v8/node:14.16.0-alpine +ARG REPO=alpine +ARG TAG=3.16 +FROM arm64v8/${REPO}:${TAG} -RUN apk add g++ python make git bash curl perl pkgconfig libsecret-dev && uname -m +RUN apk add nodejs npm g++ python3 make git bash curl perl pkgconfig libsecret-dev krb5-dev +RUN npm install -g yarn RUN mkdir -p /root/vscode WORKDIR /root/vscode diff --git a/alpine-x64/Dockerfile b/alpine-x64/Dockerfile index d9b7b55..72a3063 100644 --- a/alpine-x64/Dockerfile +++ b/alpine-x64/Dockerfile @@ -1,8 +1,9 @@ -ARG REPO=node -ARG TAG=14.16.0-alpine +ARG REPO=alpine +ARG TAG=3.16 FROM ${REPO}:${TAG} -RUN apk add g++ python make git bash curl perl pkgconfig libsecret-dev +RUN apk add nodejs npm g++ python3 make git bash curl perl pkgconfig libsecret-dev krb5-dev +RUN npm install -g yarn RUN mkdir -p /root/vscode -WORKDIR /root/vscode \ No newline at end of file +WORKDIR /root/vscode diff --git a/buster-arm64/Dockerfile b/archived/buster-arm64/Dockerfile_Unused similarity index 93% rename from buster-arm64/Dockerfile rename to archived/buster-arm64/Dockerfile_Unused index e368b79..e4378dc 100644 --- a/buster-arm64/Dockerfile +++ b/archived/buster-arm64/Dockerfile_Unused @@ -16,7 +16,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ libx11-xcb-dev:arm64 \ libxkbfile-dev:arm64 \ libsecret-1-dev:arm64 \ - libkrb5-dev:arm64 \ curl \ gnupg \ unzip \ @@ -31,9 +30,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ libc6-dev \ libbz2-dev \ libffi-dev \ - zlib1g-dev \ - # VSCodium - jq + zlib1g-dev # Compile python3.9 from source RUN curl -O https://www.python.org/ftp/python/3.9.4/Python-3.9.4.tar.xz @@ -59,4 +56,4 @@ ENV AS=/usr/bin/aarch64-linux-gnu-as \ CXX=/usr/bin/aarch64-linux-gnu-g++ \ LD=/usr/bin/aarch64-linux-gnu-ld \ FC=/usr/bin/aarch64-linux-gnu-gfortran \ - PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig + PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig \ No newline at end of file diff --git a/buster-armhf/Dockerfile b/archived/buster-armhf/Dockerfile_Unused similarity index 93% rename from buster-armhf/Dockerfile rename to archived/buster-armhf/Dockerfile_Unused index 459ea1e..88d7f3f 100644 --- a/buster-armhf/Dockerfile +++ b/archived/buster-armhf/Dockerfile_Unused @@ -16,7 +16,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ libx11-xcb-dev:armhf \ libxkbfile-dev:armhf \ libsecret-1-dev:armhf \ - libkrb5-dev:armhf \ curl \ gnupg \ unzip \ @@ -31,9 +30,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ libc6-dev \ libbz2-dev \ libffi-dev \ - zlib1g-dev \ - # VSCodium - jq + zlib1g-dev # Compile python3.9 from source RUN curl -O https://www.python.org/ftp/python/3.9.4/Python-3.9.4.tar.xz @@ -59,4 +56,4 @@ ENV AS=/usr/bin/arm-linux-gnueabihf-as \ CXX=/usr/bin/arm-linux-gnueabihf-g++ \ LD=/usr/bin/arm-linux-gnueabihf-ld \ FC=/usr/bin/arm-linux-gnueabihf-gfortran \ - PKG_CONFIG_PATH=/usr/lib/arm-linux-gnueabihf/pkgconfig + PKG_CONFIG_PATH=/usr/lib/arm-linux-gnueabihf/pkgconfig \ No newline at end of file diff --git a/archived/focal-x64/Dockerfile_Unused b/archived/focal-x64/Dockerfile_Unused new file mode 100644 index 0000000..6349007 --- /dev/null +++ b/archived/focal-x64/Dockerfile_Unused @@ -0,0 +1,86 @@ +ARG REPO=mcr.microsoft.com/mirror/docker/library/ubuntu +ARG TAG=20.04 +FROM ${REPO}:${TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +RUN groupadd --gid 1000 builduser \ + && useradd --uid 1000 --gid builduser --shell /bin/bash --create-home builduser \ + && mkdir -p /setup + +# Set up TEMP directory +ENV TEMP=/tmp +RUN chmod a+rwx /tmp + +# Latest stable git +RUN apt-get update && apt-get install -y software-properties-common +RUN add-apt-repository ppa:git-core/ppa -y + +RUN apt-get update && apt-get install -y \ + apt-transport-https \ + ca-certificates \ + curl \ + file \ + git \ + gnome-keyring \ + iproute2 \ + libfuse2 \ + libgconf-2-4 \ + libgdk-pixbuf2.0-0 \ + libgl1 \ + libgtk-3.0 \ + libsecret-1-dev \ + libssl-dev \ + libx11-dev \ + libx11-xcb-dev \ + libxkbfile-dev \ + locales \ + lsb-release \ + lsof \ + python-dbus \ + python3-pip \ + sudo \ + wget \ + xvfb \ + tzdata \ + unzip \ + && curl https://chromium.googlesource.com/chromium/src/+/HEAD/build/install-build-deps.sh\?format\=TEXT | base64 --decode | cat > /setup/install-build-deps.sh \ + && curl https://chromium.googlesource.com/chromium/src/+/HEAD/build/install-build-deps.py\?format\=TEXT | base64 --decode | cat > /setup/install-build-deps.py \ + # Remove snapcraft to avoid issues on docker build + && sed -i 's/packages.append("snapcraft")/#packages.append("snapcraft")/g' /setup/install-build-deps.py \ + && chmod +x /setup/install-build-deps.sh \ + && chmod +x /setup/install-build-deps.py \ + && bash /setup/install-build-deps.sh --no-syms --no-prompt --no-chromeos-fonts --no-arm --no-nacl \ + && rm -rf /var/lib/apt/lists/* + +# Yarn +RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - +RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list +RUN apt-get update && apt-get install -y yarn + +# No Sudo Prompt +RUN echo 'builduser ALL=NOPASSWD: ALL' >> /etc/sudoers.d/50-builduser \ + && echo 'Defaults env_keep += "DEBIAN_FRONTEND"' >> /etc/sudoers.d/env_keep + +# Dotnet +RUN wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb +RUN dpkg -i packages-microsoft-prod.deb +RUN apt-get update && apt-get install -y dotnet-sdk-2.1 + +# Set python3 as default +RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 1 +RUN python --version + +# Add xvfb init script +COPY xvfb-init.sh /etc/init.d/xvfb +RUN chmod a+x /etc/init.d/xvfb + +# Setup dbus path +RUN sudo mkdir -p /var/run/dbus + +# Check compiler toolchain +RUN gcc --version +RUN g++ --version + +USER builduser +WORKDIR /home/builduser \ No newline at end of file diff --git a/archived/focal-x64/xvfb-init.sh b/archived/focal-x64/xvfb-init.sh new file mode 100755 index 0000000..95b1482 --- /dev/null +++ b/archived/focal-x64/xvfb-init.sh @@ -0,0 +1,3 @@ +XVFB=/usr/bin/Xvfb +XVFBARGS=":10 -ac -screen 0 1280x800x24 -nolisten tcp -dpi 96 +extension RANDR" +/sbin/start-stop-daemon --start --quiet --background --exec $XVFB -- $XVFBARGS \ No newline at end of file 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/archived/stretch-arm64/Dockerfile_Unused b/archived/stretch-arm64/Dockerfile_Unused index 6c03075..4573a6a 100644 --- a/archived/stretch-arm64/Dockerfile_Unused +++ b/archived/stretch-arm64/Dockerfile_Unused @@ -1,8 +1,6 @@ -FROM debian:stretch - -# add backports (VSCodium) -RUN echo "deb http://deb.debian.org/debian stretch-backports main" | tee -a /etc/apt/sources.list -RUN apt-get update && apt-get install -y -t stretch-backports git git-man +ARG REPO=debian +ARG TAG=stretch +FROM ${REPO}:${TAG} RUN dpkg --add-architecture arm64 RUN apt-get update && apt-get install -y --no-install-recommends \ @@ -32,9 +30,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ libc6-dev \ libbz2-dev \ libffi-dev \ - zlib1g-dev \ - # VSCodium - jq + zlib1g-dev # Compile python3.9 from source RUN curl -O https://www.python.org/ftp/python/3.9.4/Python-3.9.4.tar.xz diff --git a/archived/stretch-armhf/Dockerfile_Unused b/archived/stretch-armhf/Dockerfile_Unused index f1b2ed9..08bbe2b 100644 --- a/archived/stretch-armhf/Dockerfile_Unused +++ b/archived/stretch-armhf/Dockerfile_Unused @@ -1,22 +1,20 @@ -FROM debian:stretch - -# add backports (VSCodium) -RUN echo "deb http://deb.debian.org/debian stretch-backports main" | tee -a /etc/apt/sources.list -RUN apt-get update && apt-get install -y -t stretch-backports git git-man +ARG REPO=debian +ARG TAG=stretch +FROM ${REPO}:${TAG} RUN dpkg --add-architecture armhf + +RUN sed -i 's/deb.debian.org/archive.debian.org/g' /etc/apt/sources.list +RUN sed -i 's/security.debian.org/archive.debian.org/g' /etc/apt/sources.list +RUN sed -i '/stretch-updates/d' /etc/apt/sources.list + RUN apt-get update && apt-get install -y --no-install-recommends \ crossbuild-essential-armhf \ git \ pkg-config \ - fakeroot \ - rpm \ sudo \ apt-transport-https \ ca-certificates \ - libx11-dev:armhf \ - libx11-xcb-dev:armhf \ - libxkbfile-dev:armhf \ libsecret-1-dev:armhf \ curl \ gnupg \ @@ -32,9 +30,22 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ libc6-dev \ libbz2-dev \ libffi-dev \ - zlib1g-dev \ - # VSCodium - jq + zlib1g-dev + +# Remove expired CA cert for openSSL 1.0.2 +# https://www.openssl.org/blog/blog/2021/09/13/LetsEncryptRootCertExpire/ +RUN rm -f /usr/share/ca-certificates/mozilla/DST_Root_CA_X3.crt +RUN update-ca-certificates --fresh + +# Install Node.js +RUN curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash - +Run sudo apt-get install -y nodejs +RUN node --version + +# Yarn +RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - +RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list +RUN apt-get update && apt-get install -y yarn # Compile python3.9 from source RUN curl -O https://www.python.org/ftp/python/3.9.4/Python-3.9.4.tar.xz @@ -43,16 +54,6 @@ RUN cd Python-3.9.4 && ./configure --enable-optimizations && make altinstall RUN update-alternatives --install /usr/bin/python python /usr/local/bin/python3.9 1 RUN python --version -# Remove expired CA cert for openSSL 1.0.2 -# https://www.openssl.org/blog/blog/2021/09/13/LetsEncryptRootCertExpire/ -RUN rm -f /usr/share/ca-certificates/mozilla/DST_Root_CA_X3.crt -RUN update-ca-certificates --fresh - -# Yarn -RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - -RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list -RUN apt-get update && apt-get install -y yarn - ENV AS=/usr/bin/arm-linux-gnueabihf-as \ AR=/usr/bin/arm-linux-gnueabihf-ar \ CC=/usr/bin/arm-linux-gnueabihf-gcc \ @@ -61,3 +62,6 @@ ENV AS=/usr/bin/arm-linux-gnueabihf-as \ LD=/usr/bin/arm-linux-gnueabihf-ld \ FC=/usr/bin/arm-linux-gnueabihf-gfortran \ PKG_CONFIG_PATH=/usr/lib/arm-linux-gnueabihf/pkgconfig + +RUN mkdir -p /root/vscode +WORKDIR /root/vscode diff --git a/bionic-arm32v7/Dockerfile b/bionic-arm32v7/Dockerfile new file mode 100644 index 0000000..550c198 --- /dev/null +++ b/bionic-arm32v7/Dockerfile @@ -0,0 +1,39 @@ +FROM arm32v7/ubuntu:bionic + +ARG DEBIAN_FRONTEND=noninteractive + +# Disable user so it can run on GH (VSCodium) +# RUN groupadd --gid 1000 builduser \ +# && useradd --uid 1000 --gid builduser --shell /bin/bash --create-home builduser + +RUN apt-get update && apt-get install -y --no-install-recommends \ + software-properties-common \ + gcc \ + g++ \ + binutils \ + build-essential \ + git \ + pkg-config \ + sudo \ + apt-transport-https \ + ca-certificates \ + curl \ + gnupg \ + make \ + python3 \ + libkrb5-dev \ + unzip \ + # VSCodium + jq + +# Set python3 as default +RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 1 +RUN python --version + +# Disable user so it can run on GH (VSCodium) +# # No Sudo Prompt +# RUN echo 'builduser ALL=NOPASSWD: ALL' >> /etc/sudoers.d/50-builduser \ +# && echo 'Defaults env_keep += "DEBIAN_FRONTEND"' >> /etc/sudoers.d/env_keep + +# USER builduser +# WORKDIR /home/builduser diff --git a/bionic-arm64/Dockerfile b/bionic-arm64/Dockerfile new file mode 100644 index 0000000..dcc54d6 --- /dev/null +++ b/bionic-arm64/Dockerfile @@ -0,0 +1,78 @@ +ARG REPO=mcr.microsoft.com/mirror/docker/library/ubuntu +ARG TAG=18.04 +FROM ${REPO}:${TAG} + +ARG DEBIAN_FRONTEND=noninteractive + +# Disable user so it can run on GH (VSCodium) +# RUN groupadd --gid 1000 builduser \ +# && useradd --uid 1000 --gid builduser --shell /bin/bash --create-home builduser + +# ubuntu keeps its i386/amd64 and other architecture repos separate +# the default i386/amd64 packages can be found in http://archive.ubuntu.com while all other architectures are in http://ports.ubuntu.com/ +# add the required repos for armhf/arm64 and only fetch i386/amd64 from archive.ubuntu.com (to prevent apt from erroring about missing architecture support) +RUN sed -i "s/^deb/deb [arch=amd64,i386]/g" /etc/apt/sources.list +RUN echo "deb [arch=arm64,armhf] http://ports.ubuntu.com/ bionic main universe multiverse restricted" | tee -a /etc/apt/sources.list +RUN echo "deb [arch=arm64,armhf] http://ports.ubuntu.com/ bionic-security main universe multiverse restricted" | tee -a /etc/apt/sources.list +RUN echo "deb [arch=arm64,armhf] http://ports.ubuntu.com/ bionic-updates main universe multiverse restricted" | tee -a /etc/apt/sources.list +RUN dpkg --add-architecture arm64 +RUN apt-get update && apt-get install -y --no-install-recommends \ + gcc-8-aarch64-linux-gnu \ + g++-8-aarch64-linux-gnu \ + binutils-aarch64-linux-gnu \ + build-essential \ + git \ + pkg-config \ + fakeroot \ + rpm \ + sudo \ + apt-transport-https \ + ca-certificates \ + libx11-dev:arm64 \ + libx11-xcb-dev:arm64 \ + libxkbfile-dev:arm64 \ + libsecret-1-dev:arm64 \ + libkrb5-dev:arm64 \ + curl \ + gnupg \ + unzip \ + # VSCodium + jq + +# Disable user so it can run on GH (VSCodium) +# # No Sudo Prompt +# RUN echo 'builduser ALL=NOPASSWD: ALL' >> /etc/sudoers.d/50-builduser \ +# && echo 'Defaults env_keep += "DEBIAN_FRONTEND"' >> /etc/sudoers.d/env_keep + +# Set python3 as default +RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 1 +RUN python --version + +# Yarn +RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - +RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list +RUN apt-get update && apt-get install -y yarn + +# Node.js +RUN curl --silent --location https://deb.nodesource.com/setup_16.x | sudo -E bash - +RUN apt-get update && apt-get install -y nodejs +RUN npm install -g npm@latest +RUN npm install -g node-gyp + +# Install docker client +RUN sudo mkdir -m 0755 -p /etc/apt/keyrings +RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg +RUN echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null +RUN sudo apt-get update && sudo apt-get install -y docker-ce + +# Disable user so it can run on GH (VSCodium) +# USER builduser +# WORKDIR /home/builduser + +ENV AS=/usr/bin/aarch64-linux-gnu-as \ + AR=/usr/bin/aarch64-linux-gnu-ar \ + CC=/usr/bin/aarch64-linux-gnu-gcc-8 \ + CPP=/usr/bin/aarch64-linux-gnu-cpp-8 \ + CXX=/usr/bin/aarch64-linux-gnu-g++-8 \ + LD=/usr/bin/aarch64-linux-gnu-ld \ + PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig diff --git a/bionic-armhf/Dockerfile b/bionic-armhf/Dockerfile index 8ef35bd..5a29397 100644 --- a/bionic-armhf/Dockerfile +++ b/bionic-armhf/Dockerfile @@ -4,6 +4,10 @@ FROM ${REPO}:${TAG} ARG DEBIAN_FRONTEND=noninteractive +# Disable user so it can run on GH (VSCodium) +# RUN groupadd --gid 1000 builduser \ +# && useradd --uid 1000 --gid builduser --shell /bin/bash --create-home builduser + # ubuntu keeps its i386/amd64 and other architecture repos separate # the default i386/amd64 packages can be found in http://archive.ubuntu.com while all other architectures are in http://ports.ubuntu.com/ # add the required repos for armhf/arm64 and only fetch i386/amd64 from archive.ubuntu.com (to prevent apt from erroring about missing architecture support) @@ -28,11 +32,19 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ libx11-xcb-dev:armhf \ libxkbfile-dev:armhf \ libsecret-1-dev:armhf \ + libkrb5-dev:armhf \ curl \ gnupg \ - unzip \ - # VSCodium - jq + unzip + +# No Sudo Prompt +RUN echo 'builduser ALL=NOPASSWD: ALL' >> /etc/sudoers.d/50-builduser \ + && echo 'Defaults env_keep += "DEBIAN_FRONTEND"' >> /etc/sudoers.d/env_keep + +# Disable user so it can run on GH (VSCodium) +# # No Sudo Prompt +# RUN echo 'builduser ALL=NOPASSWD: ALL' >> /etc/sudoers.d/50-builduser \ +# && echo 'Defaults env_keep += "DEBIAN_FRONTEND"' >> /etc/sudoers.d/env_keep # Set python3 as default RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 1 @@ -43,6 +55,22 @@ RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list RUN apt-get update && apt-get install -y yarn +# Node.js +RUN curl --silent --location https://deb.nodesource.com/setup_16.x | sudo -E bash - +RUN apt-get update && apt-get install -y nodejs +RUN npm install -g npm@latest +RUN npm install -g node-gyp + +# Install docker client +RUN sudo mkdir -m 0755 -p /etc/apt/keyrings +RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg +RUN echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null +RUN sudo apt-get update && sudo apt-get install -y docker-ce + +# Disable user so it can run on GH (VSCodium) +# USER builduser +# WORKDIR /home/builduser + ENV AS=/usr/bin/arm-linux-gnueabihf-as \ AR=/usr/bin/arm-linux-gnueabihf-ar \ CC=/usr/bin/arm-linux-gnueabihf-gcc-8 \ diff --git a/bionic-x64/Dockerfile b/bionic-x64/Dockerfile index 637e7c0..efbdc65 100644 --- a/bionic-x64/Dockerfile +++ b/bionic-x64/Dockerfile @@ -1,20 +1,19 @@ -FROM ubuntu:18.04 +ARG REPO=mcr.microsoft.com/mirror/docker/library/ubuntu +ARG TAG=18.04 +FROM ${REPO}:${TAG} ARG DEBIAN_FRONTEND=noninteractive -RUN groupadd --gid 1000 builduser \ - && useradd --uid 1000 --gid builduser --shell /bin/bash --create-home builduser \ - && mkdir -p /setup +# Disable user so it can run on GH (VSCodium) +# RUN groupadd --gid 1000 builduser \ +# && useradd --uid 1000 --gid builduser --shell /bin/bash --create-home builduser \ + +RUN mkdir -p /setup # Set up TEMP directory ENV TEMP=/tmp RUN chmod a+rwx /tmp -# Core environment variables -ENV LANG="en_US.UTF-8" \ - LANGUAGE="en_US.UTF-8" \ - LC_ALL="en_US.UTF-8" - # Latest stable git RUN apt-get update && apt-get install -y software-properties-common RUN add-apt-repository ppa:git-core/ppa -y @@ -23,6 +22,7 @@ RUN apt-get update && apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ + file \ git \ gnome-keyring \ iproute2 \ @@ -32,6 +32,7 @@ RUN apt-get update && apt-get install -y \ libgl1 \ libgtk-3.0 \ libsecret-1-dev \ + libkrb5-dev \ libssl-dev \ libx11-dev \ libx11-xcb-dev \ @@ -40,7 +41,7 @@ RUN apt-get update && apt-get install -y \ lsb-release \ lsof \ python-dbus \ - python-pip \ + python3-pip \ sudo \ wget \ xvfb \ @@ -49,45 +50,45 @@ RUN apt-get update && apt-get install -y \ # VSCodium jq \ imagemagick \ - && locale-gen en_US.UTF-8 \ && curl https://chromium.googlesource.com/chromium/src/+/HEAD/build/install-build-deps.sh\?format\=TEXT | base64 --decode | cat > /setup/install-build-deps.sh \ + && curl https://chromium.googlesource.com/chromium/src/+/HEAD/build/install-build-deps.py\?format\=TEXT | base64 --decode | cat > /setup/install-build-deps.py \ + # Remove snapcraft to avoid issues on docker build + && sed -i 's/packages.append("snapcraft")/#packages.append("snapcraft")/g' /setup/install-build-deps.py \ && chmod +x /setup/install-build-deps.sh \ - && bash /setup/install-build-deps.sh --syms --no-prompt --no-chromeos-fonts --no-arm --no-nacl \ + && chmod +x /setup/install-build-deps.py \ + && bash /setup/install-build-deps.sh --no-syms --no-prompt --no-chromeos-fonts --no-arm --no-nacl \ && rm -rf /var/lib/apt/lists/* +# Disable user so it can run on GH (VSCodium) +# # No Sudo Prompt +# RUN echo 'builduser ALL=NOPASSWD: ALL' >> /etc/sudoers.d/50-builduser \ +# && echo 'Defaults env_keep += "DEBIAN_FRONTEND"' >> /etc/sudoers.d/env_keep + # Yarn RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list RUN apt-get update && apt-get install -y yarn -# ripgrep (VSCodium) -RUN wget -q https://github.com/BurntSushi/ripgrep/releases/download/13.0.0/ripgrep_13.0.0_amd64.deb -RUN dpkg -i ripgrep_13.0.0_amd64.deb - -# No Sudo Prompt -RUN echo 'builduser ALL=NOPASSWD: ALL' >> /etc/sudoers.d/50-builduser \ - && echo 'Defaults env_keep += "DEBIAN_FRONTEND"' >> /etc/sudoers.d/env_keep - -# Dotnet -RUN wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -RUN dpkg -i packages-microsoft-prod.deb -RUN apt-get update && apt-get install -y dotnet-sdk-2.1 +# Node.js +RUN curl --silent --location https://deb.nodesource.com/setup_16.x | sudo -E bash - +RUN apt-get update && apt-get install -y nodejs +RUN npm install -g npm@latest +RUN npm install -g node-gyp # Set python3 as default RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 1 RUN python --version -# Add xvfb init script -COPY xvfb-init.sh /etc/init.d/xvfb -RUN chmod a+x /etc/init.d/xvfb - -# Setup dbus path -RUN sudo mkdir -p /var/run/dbus +# Install docker client +RUN sudo mkdir -m 0755 -p /etc/apt/keyrings +RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg +RUN echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null +RUN sudo apt-get update && sudo apt-get install -y docker-ce # Check compiler toolchain RUN gcc --version RUN g++ --version -# Disable user to it can run on GH (VSCodium) +# Disable user so it can run on GH (VSCodium) # USER builduser # WORKDIR /home/builduser diff --git a/centos7-devtoolset8-arm64/Dockerfile b/centos7-devtoolset8-arm64/Dockerfile index 715cb6f..bad916c 100644 --- a/centos7-devtoolset8-arm64/Dockerfile +++ b/centos7-devtoolset8-arm64/Dockerfile @@ -6,8 +6,10 @@ ARG INSTALL_PKGS="devtoolset-8-gcc \ devtoolset-8-gdb \ make \ git \ + unzip \ sudo \ libsecret-devel \ + krb5-devel \ nodejs \ python3" @@ -19,9 +21,10 @@ RUN yum install -y centos-release-scl-rh && \ rpm -V $INSTALL_PKGS && \ yum -y clean all --enablerepo='*' -# update npm and install yarn +# update npm and install yarn, node-gyp RUN npm install -g npm@latest RUN npm install -g yarn +RUN npm install -g node-gyp # jq (VSCodium) RUN curl -L -O https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 && \ diff --git a/centos7-devtoolset8-x64/Dockerfile b/centos7-devtoolset8-x64/Dockerfile index bdc9030..56aa760 100644 --- a/centos7-devtoolset8-x64/Dockerfile +++ b/centos7-devtoolset8-x64/Dockerfile @@ -8,6 +8,7 @@ ARG INSTALL_PKGS="devtoolset-8-gcc \ devtoolset-8-gdb \ make \ git \ + unzip \ sudo \ libsecret-devel \ krb5-devel \ @@ -22,9 +23,10 @@ RUN yum install -y centos-release-scl-rh && \ rpm -V $INSTALL_PKGS && \ yum -y clean all --enablerepo='*' -# update npm and install yarn +# update npm and install yarn, node-gyp RUN npm install -g npm@latest RUN npm install -g yarn +RUN npm install -g node-gyp # jq (VSCodium) RUN curl -L -O https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 && \ @@ -33,5 +35,10 @@ RUN curl -L -O https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux6 ENV PATH=/opt/rh/devtoolset-8/root/usr/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +# install cmake3 +RUN git clone https://gitlab.kitware.com/cmake/cmake.git +RUN cd cmake && git checkout v3.26.0 && ./bootstrap --prefix=/usr/local -- -DCMAKE_USE_OPENSSL=OFF \ + make && make install + RUN mkdir -p /root/vscode WORKDIR /root/vscode diff --git a/snapcraft-x64/Dockerfile b/snapcraft-x64/Dockerfile new file mode 100644 index 0000000..f775429 --- /dev/null +++ b/snapcraft-x64/Dockerfile @@ -0,0 +1,72 @@ +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 \ + libkrb5-dev \ + 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