From c2531c5641dd44dd3cdd1230b0437a0ca90524f2 Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Tue, 31 Dec 2024 22:55:48 -0700 Subject: [PATCH 1/7] Bump Mingw image version number to `1.12` --- dockerBuildEnv/nas2d-mingw.version.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dockerBuildEnv/nas2d-mingw.version.mk b/dockerBuildEnv/nas2d-mingw.version.mk index 6403c2e6..3ad1e929 100644 --- a/dockerBuildEnv/nas2d-mingw.version.mk +++ b/dockerBuildEnv/nas2d-mingw.version.mk @@ -1 +1 @@ -ImageVersion_mingw := 1.11 +ImageVersion_mingw := 1.12 From 8ed056ebe88702c0f510e6ac414da3cc95c1cdd1 Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Thu, 20 Feb 2025 22:38:21 -0700 Subject: [PATCH 2/7] Set library search path using `LDFLAGS_EXTRA` This is a custom variable used by the NAS2D `makefile`. --- dockerBuildEnv/nas2d-mingw.Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dockerBuildEnv/nas2d-mingw.Dockerfile b/dockerBuildEnv/nas2d-mingw.Dockerfile index 73f0aadc..e52c2eb9 100644 --- a/dockerBuildEnv/nas2d-mingw.Dockerfile +++ b/dockerBuildEnv/nas2d-mingw.Dockerfile @@ -153,6 +153,8 @@ RUN useradd --uid 1000 -m -s /bin/bash user ENV CPPFLAGS_EXTRA=-D"GLEW_STATIC" # Disable warnings for redundant declarations of intrinsics, triggered by SDL2 ENV WARN_EXTRA=-Wno-redundant-decls +# Set a library search path to make rebuilding easier in a debug sessions +ENV LDFLAGS_EXTRA="-L/usr/local/x86_64-w64-mingw32/lib" # Be explicit about the extra flags with the default command CMD ["make", "--keep-going", "check"] From 71831cf4ae8b26a1dea1f6968c3e314f2466b9b2 Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Fri, 21 Feb 2025 00:12:16 -0700 Subject: [PATCH 3/7] Install `lsb-release` package instead of `software-properties-common` We are no longer using `add-apt-repository` so we don't need `software-properties-common`. We do still use `lsb_release` (package `lsb-release`), which was installed by `software-properties-common`. This switch minimizes dependencies (by quite a bit). --- dockerBuildEnv/nas2d-mingw.Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dockerBuildEnv/nas2d-mingw.Dockerfile b/dockerBuildEnv/nas2d-mingw.Dockerfile index e52c2eb9..2e423fa4 100644 --- a/dockerBuildEnv/nas2d-mingw.Dockerfile +++ b/dockerBuildEnv/nas2d-mingw.Dockerfile @@ -5,7 +5,7 @@ FROM ubuntu:22.04 # Install base development tools # Includes tools to build download, unpack, and build source packages # Includes tools needed for primary CircleCI containers -# The software-properties-common package is needed for add-apt-repository, used to install wine +# The lsb-release package is used to install wine # Set DEBIAN_FRONTEND to prevent tzdata package install from prompting for timezone RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ mingw-w64=8.0.0-1 \ @@ -20,7 +20,7 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-ins gzip=1.10-* \ bzip2=1.0.8-* \ gnupg=2.2.27-* \ - software-properties-common=0.99.22.* \ + lsb-release=11.1.0* \ ca-certificates=* \ && rm -rf /var/lib/apt/lists/* From 1232b4af63bcd771d8bfff4f9fd9a850cd19ae9e Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Sun, 29 Dec 2024 19:06:41 -0700 Subject: [PATCH 4/7] Update Wine to latest version available for `jammy` (Ubuntu `22.04`) --- dockerBuildEnv/nas2d-mingw.Dockerfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dockerBuildEnv/nas2d-mingw.Dockerfile b/dockerBuildEnv/nas2d-mingw.Dockerfile index 2e423fa4..8d03c7cd 100644 --- a/dockerBuildEnv/nas2d-mingw.Dockerfile +++ b/dockerBuildEnv/nas2d-mingw.Dockerfile @@ -43,10 +43,10 @@ RUN curl -L https://dl.winehq.org/wine-builds/winehq.key | gpg --dearmor > /etc/ echo "deb [signed-by=/etc/apt/keyrings/apt.wine.gpg] https://dl.winehq.org/wine-builds/ubuntu/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/wine.list && \ dpkg --add-architecture i386 && \ apt-get update && apt-get install -y --no-install-recommends \ - wine-stable-amd64=8.0.2~* \ - wine-stable-i386=8.0.2~* \ - wine-stable=8.0.2~* \ - winehq-stable=8.0.2~* \ + wine-stable-amd64=9.0.0.0~* \ + wine-stable-i386=9.0.0.0~* \ + wine-stable=9.0.0.0~* \ + winehq-stable=9.0.0.0~* \ && rm -rf /var/lib/apt/lists/* # Set default install location for custom packages From 08c63a2c2fb91ed68e37a2f9d9e7848a0174e811 Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Mon, 11 Nov 2024 08:24:57 -0700 Subject: [PATCH 5/7] Update base image to Ubuntu `24.04` for Mingw environment This requires updating `apt` packages. This also requires removing the `user` hack, since the new base image already comes with such a user. --- dockerBuildEnv/nas2d-mingw.Dockerfile | 38 +++++++++++++-------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/dockerBuildEnv/nas2d-mingw.Dockerfile b/dockerBuildEnv/nas2d-mingw.Dockerfile index 8d03c7cd..0f6450d3 100644 --- a/dockerBuildEnv/nas2d-mingw.Dockerfile +++ b/dockerBuildEnv/nas2d-mingw.Dockerfile @@ -1,6 +1,6 @@ # See Docker section of makefile in root project folder for usage commands. -FROM ubuntu:22.04 +FROM ubuntu:24.04 # Install base development tools # Includes tools to build download, unpack, and build source packages @@ -8,19 +8,20 @@ FROM ubuntu:22.04 # The lsb-release package is used to install wine # Set DEBIAN_FRONTEND to prevent tzdata package install from prompting for timezone RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ - mingw-w64=8.0.0-1 \ - cmake=3.22.1-* \ + mingw-w64=11.0.1-* \ + cmake=3.28.3-* \ make=4.3-* \ - binutils=2.38-* \ - git=1:2.34.1-* \ - ssh=1:8.9p1-* \ - googletest=1.11.0-3 \ - curl=7.81.0-* \ - tar=1.34+* \ - gzip=1.10-* \ + binutils=2.42-* \ + libgtest-dev=1.14.0-* \ + libgmock-dev=1.14.0-* \ + git=1:2.43.0-* \ + ssh=1:9.6p1-* \ + curl=8.5.0-* \ + tar=1.35+* \ + gzip=1.12-* \ bzip2=1.0.8-* \ - gnupg=2.2.27-* \ - lsb-release=11.1.0* \ + gnupg=2.4.4-* \ + lsb-release=12.0-* \ ca-certificates=* \ && rm -rf /var/lib/apt/lists/* @@ -43,10 +44,9 @@ RUN curl -L https://dl.winehq.org/wine-builds/winehq.key | gpg --dearmor > /etc/ echo "deb [signed-by=/etc/apt/keyrings/apt.wine.gpg] https://dl.winehq.org/wine-builds/ubuntu/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/wine.list && \ dpkg --add-architecture i386 && \ apt-get update && apt-get install -y --no-install-recommends \ - wine-stable-amd64=9.0.0.0~* \ - wine-stable-i386=9.0.0.0~* \ - wine-stable=9.0.0.0~* \ - winehq-stable=9.0.0.0~* \ + wine=9.0~repack-4build3 \ + wine64=9.0~repack-4build3 \ + wine32:i386=9.0~repack-4build3 \ && rm -rf /var/lib/apt/lists/* # Set default install location for custom packages @@ -125,8 +125,8 @@ ENV BIN64=${INSTALL64}bin/ ENV BIN32=${INSTALL32}bin/ ENV PATH64="${PATH}:${BIN64}" ENV PATH32="${PATH}:${BIN32}" -ENV WINEPATH64=${BIN64};/usr/lib/gcc/${ARCH64}/10-win32/ -ENV WINEPATH32=${BIN32};/usr/lib/gcc/${ARCH32}/10-win32/ +ENV WINEPATH64=${BIN64};/usr/lib/gcc/${ARCH64}/13-win32/ +ENV WINEPATH32=${BIN32};/usr/lib/gcc/${ARCH32}/13-win32/ # Setup compiler and tooling default folders ENV CPLUS_INCLUDE_PATH="${INCLUDE64}" @@ -138,8 +138,6 @@ ENV WINEPATH="${WINEPATH64}" ENV CXX=${CXX64} ENV CC=${CC64} -RUN useradd --uid 1000 -m -s /bin/bash user - # Cache the result of `wineboot` for faster startup (or don't for smaller images) # USER user From adfce142eb472b7386f4624c0bc25b955c2849ab Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Thu, 14 Nov 2024 07:37:56 -0700 Subject: [PATCH 6/7] Add `mingw` to the list of Docker images to potentially build --- .github/workflows/buildDockerBuildEnv.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/buildDockerBuildEnv.yml b/.github/workflows/buildDockerBuildEnv.yml index 3b6ea17d..546021cf 100644 --- a/.github/workflows/buildDockerBuildEnv.yml +++ b/.github/workflows/buildDockerBuildEnv.yml @@ -22,6 +22,7 @@ jobs: - 'arch' - 'clang' - 'gcc' + - 'mingw' env: defaultBranch: ${{ github.event.repository.default_branch }} From 134ada6ba48f1afb28e5670d25e5e8a213ddef4f Mon Sep 17 00:00:00 2001 From: Daniel Stevens Date: Thu, 14 Nov 2024 07:43:37 -0700 Subject: [PATCH 7/7] Update CircleCI to use new Mingw build image --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index aaccd00e..95bb1918 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -48,7 +48,7 @@ jobs: - build-and-test build-linux-mingw: docker: - - image: outpostuniverse/nas2d-mingw:1.11 + - image: ghcr.io/lairworks/build-env-nas2d-mingw:1.12 environment: WARN_EXTRA: "-Wno-redundant-decls" LDFLAGS_EXTRA: "-L/usr/local/x86_64-w64-mingw32/lib"