Merge remote-tracking branch 'microsoft/main'

This commit is contained in:
Baptiste Augrain 2023-08-04 11:53:42 +02:00
commit fc8eabbdbf
17 changed files with 403 additions and 137 deletions

5
SECURITY.md Normal file
View File

@ -0,0 +1,5 @@
## Security
## Preferred Languages
We prefer all communications to be in English.

View File

@ -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

View File

@ -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
WORKDIR /root/vscode

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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

39
bionic-arm32v7/Dockerfile Normal file
View File

@ -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

78
bionic-arm64/Dockerfile Normal file
View File

@ -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

View File

@ -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 \

View File

@ -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

View File

@ -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 && \

View File

@ -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

72
snapcraft-x64/Dockerfile Normal file
View File

@ -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"