Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,14 @@ jobs:
- name: Build images
run: |
docker build --tag ghcr.io/msys2/msys2-docker-experimental:latest ./msys2
docker build --tag ghcr.io/msys2/cygwin-docker-experimental:latest ./cygwin
docker build --tag ghcr.io/msys2/msys2-docker-devcontainer:latest ./devcontainer

- name: Save images
if: github.event_name == 'pull_request'
run: |
docker image save ghcr.io/msys2/msys2-docker-experimental:latest | zstd -T0 -c > experimental.tar.zst
docker image save ghcr.io/msys2/cygwin-docker-experimental:latest | zstd -T0 -c > cygwin.tar.zst
docker image save ghcr.io/msys2/msys2-docker-devcontainer:latest | zstd -T0 -c > devcontainer.tar.zst

- name: Upload artifacts
Expand All @@ -63,4 +65,5 @@ jobs:
if: github.event_name != 'pull_request'
run: |
docker push ghcr.io/msys2/msys2-docker-experimental:latest
docker push ghcr.io/msys2/cygwin-docker-experimental:latest
docker push ghcr.io/msys2/msys2-docker-devcontainer:latest
46 changes: 46 additions & 0 deletions cygwin/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
FROM ghcr.io/msys2/msys2-docker-build-base AS build

# Install dependencies and download Cygwin setup
RUN apt update && apt install -y --no-install-recommends curl ca-certificates

# Download Cygwin setup executable
RUN mkdir -p /tmp/cygwin
RUN curl --fail -L 'https://www.cygwin.com/setup-x86_64.exe' -o /tmp/cygwin/setup-x86_64.exe

FROM debian:trixie

# Install runtime deps
RUN apt update \
&& apt install -y --no-install-recommends xvfb wine64 xauth ca-certificates \
&& apt remove -y wine64 libwine \
&& rm -rf /var/lib/apt/lists/*
COPY --from=build /wine /
RUN ldconfig

# Avoid "tzset" startup warning + wineboot crashing
ENV TZ=UTC

# Initialize Wine
RUN WINEDEBUG=-all wineboot --init && wineserver --wait

# Copy Cygwin setup into Wine's filesystem
COPY --from=build /tmp/cygwin/setup-x86_64.exe /tmp/setup-x86_64.exe

# Install Cygwin via Wine
RUN WINEDEBUG=-all xvfb-run -a wine /tmp/setup-x86_64.exe \
--quiet-mode \
--no-shortcuts \
--no-startmenu \
--no-desktop \
--root 'C:\cygwin64' \
--site 'https://mirrors.kernel.org/sourceware/cygwin/' \
--local-package-dir 'C:\cygwin64\packages' \
&& wineserver --wait \
&& rm -Rf /root/.wine/drive_c/cygwin64/packages \
&& mv /tmp/setup-x86_64.exe /root/.wine/drive_c/cygwin64/bin/setup.exe

COPY ./cygwin /usr/bin/cygwin
RUN chmod +x /usr/bin/cygwin

WORKDIR /root/.wine/drive_c/cygwin64/home/root
CMD ["cygwin"]
3 changes: 3 additions & 0 deletions cygwin/cygwin
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/bin/bash

WINEDEBUG="-all" WINEPATH="C:\\cygwin64\\bin" xvfb-run -a wine bash.exe -o igncr -l "$@"
27 changes: 27 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
services:
build-base:
build:
context: ./build-base
image: ghcr.io/msys2/msys2-docker-build-base:latest
pull_policy: never

msys2:
build:
context: ./msys2
additional_contexts:
ghcr.io/msys2/msys2-docker-build-base: "service:build-base"
image: ghcr.io/msys2/msys2-docker-experimental:latest

cygwin:
build:
context: ./cygwin
additional_contexts:
ghcr.io/msys2/msys2-docker-build-base: "service:build-base"
image: ghcr.io/msys2/cygwin-docker-experimental:latest

devcontainer:
build:
context: ./devcontainer
additional_contexts:
ghcr.io/msys2/msys2-docker-build-base: "service:build-base"
image: ghcr.io/msys2/msys2-docker-devcontainer:latest