From c492963e50504a203ee547d2e621940b8da85f9b Mon Sep 17 00:00:00 2001
From: Olivier Benz <olivier.benz@b-data.ch>
Date: Thu, 7 Sep 2023 08:47:00 +0200
Subject: [PATCH] Fix images based on Alpine 3.{17,18}

- Downgrade package pkgconf to v1.8.1
---
 VERSION_MATRIX.md      | 5 +++++
 latest.Dockerfile      | 7 +++++++
 prior/9.4.4.Dockerfile | 7 +++++++
 prior/9.4.5.Dockerfile | 7 +++++++
 prior/9.4.6.Dockerfile | 7 +++++++
 prior/9.4.7.Dockerfile | 7 +++++++
 prior/9.6.1.Dockerfile | 7 +++++++
 7 files changed, 47 insertions(+)

diff --git a/VERSION_MATRIX.md b/VERSION_MATRIX.md
index 6dfe6ac..3848520 100644
--- a/VERSION_MATRIX.md
+++ b/VERSION_MATRIX.md
@@ -32,3 +32,8 @@ Topmost entry = Tag `latest`
 
 [^1]: unsupported build; *statically linked* binary  
 [^2]: w/o Haddock; due to `HADDOCK_DOCS=NO`
+
+## Bug fixes
+
+* Images based on Alpine 3.{17,18}: Package pkgconf downgraded to v1.8.1
+  * Due to https://github.com/haskell/cabal/issues/8923
diff --git a/latest.Dockerfile b/latest.Dockerfile
index 899cf1c..eebc24f 100644
--- a/latest.Dockerfile
+++ b/latest.Dockerfile
@@ -105,6 +105,13 @@ COPY --from=bootstrap /tmp/ghc-"$GHC_VERSION"/_build/bindist/ghc-"$GHC_VERSION"-
 COPY --from=bootstrap /root/.cabal/bin/cabal /usr/local/bin/cabal
 
 RUN cd /tmp \
+  # Fix https://github.com/haskell/cabal/issues/8923
+  && PKG_CONFIG_VERSION="$(pkg-config --version)" \
+  && if [ "${PKG_CONFIG_VERSION%.*}" = "1.9" ]; then \
+    # Downgrade pkgconf from 1.9.x to 1.8.1
+    curl -sSLO http://dl-cdn.alpinelinux.org/alpine/v3.16/main/"$(uname -m)"/pkgconf-1.8.1-r0.apk; \
+    apk add --no-cache pkgconf-1.8.1-r0.apk; \
+  fi \
   && tar -xJf ghc-"$GHC_VERSION"-*-alpine-linux.tar.xz \
   && cd ghc-"$GHC_VERSION"-*-alpine-linux \
   && ./configure --disable-ld-override \
diff --git a/prior/9.4.4.Dockerfile b/prior/9.4.4.Dockerfile
index 09ad71a..f49fd9a 100644
--- a/prior/9.4.4.Dockerfile
+++ b/prior/9.4.4.Dockerfile
@@ -103,6 +103,13 @@ COPY --from=bootstrap /tmp/ghc-$GHC_VERSION/_build/bindist/ghc-$GHC_VERSION-*-al
 COPY --from=bootstrap /root/.cabal/bin/cabal /usr/local/bin/cabal
 
 RUN cd /tmp \
+  # Fix https://github.com/haskell/cabal/issues/8923
+  && PKG_CONFIG_VERSION="$(pkg-config --version)" \
+  && if [ "${PKG_CONFIG_VERSION%.*}" = "1.9" ]; then \
+    # Downgrade pkgconf from 1.9.x to 1.8.1
+    curl -sSLO http://dl-cdn.alpinelinux.org/alpine/v3.16/main/"$(uname -m)"/pkgconf-1.8.1-r0.apk; \
+    apk add --no-cache pkgconf-1.8.1-r0.apk; \
+  fi \
   && tar -xJf ghc-$GHC_VERSION-*-alpine-linux.tar.xz \
   && cd ghc-$GHC_VERSION-*-alpine-linux \
   && ./configure --disable-ld-override \
diff --git a/prior/9.4.5.Dockerfile b/prior/9.4.5.Dockerfile
index 629f4b9..26229b2 100644
--- a/prior/9.4.5.Dockerfile
+++ b/prior/9.4.5.Dockerfile
@@ -103,6 +103,13 @@ COPY --from=bootstrap /tmp/ghc-$GHC_VERSION/_build/bindist/ghc-$GHC_VERSION-*-al
 COPY --from=bootstrap /root/.cabal/bin/cabal /usr/local/bin/cabal
 
 RUN cd /tmp \
+  # Fix https://github.com/haskell/cabal/issues/8923
+  && PKG_CONFIG_VERSION="$(pkg-config --version)" \
+  && if [ "${PKG_CONFIG_VERSION%.*}" = "1.9" ]; then \
+    # Downgrade pkgconf from 1.9.x to 1.8.1
+    curl -sSLO http://dl-cdn.alpinelinux.org/alpine/v3.16/main/"$(uname -m)"/pkgconf-1.8.1-r0.apk; \
+    apk add --no-cache pkgconf-1.8.1-r0.apk; \
+  fi \
   && tar -xJf ghc-$GHC_VERSION-*-alpine-linux.tar.xz \
   && cd ghc-$GHC_VERSION-*-alpine-linux \
   && ./configure --disable-ld-override \
diff --git a/prior/9.4.6.Dockerfile b/prior/9.4.6.Dockerfile
index d3f767f..1983831 100644
--- a/prior/9.4.6.Dockerfile
+++ b/prior/9.4.6.Dockerfile
@@ -105,6 +105,13 @@ COPY --from=bootstrap /tmp/ghc-"$GHC_VERSION"/_build/bindist/ghc-"$GHC_VERSION"-
 COPY --from=bootstrap /root/.cabal/bin/cabal /usr/local/bin/cabal
 
 RUN cd /tmp \
+  # Fix https://github.com/haskell/cabal/issues/8923
+  && PKG_CONFIG_VERSION="$(pkg-config --version)" \
+  && if [ "${PKG_CONFIG_VERSION%.*}" = "1.9" ]; then \
+    # Downgrade pkgconf from 1.9.x to 1.8.1
+    curl -sSLO http://dl-cdn.alpinelinux.org/alpine/v3.16/main/"$(uname -m)"/pkgconf-1.8.1-r0.apk; \
+    apk add --no-cache pkgconf-1.8.1-r0.apk; \
+  fi \
   && tar -xJf ghc-"$GHC_VERSION"-*-alpine-linux.tar.xz \
   && cd ghc-"$GHC_VERSION"-*-alpine-linux \
   && ./configure --disable-ld-override \
diff --git a/prior/9.4.7.Dockerfile b/prior/9.4.7.Dockerfile
index 8462a46..da76758 100644
--- a/prior/9.4.7.Dockerfile
+++ b/prior/9.4.7.Dockerfile
@@ -105,6 +105,13 @@ COPY --from=bootstrap /tmp/ghc-"$GHC_VERSION"/_build/bindist/ghc-"$GHC_VERSION"-
 COPY --from=bootstrap /root/.cabal/bin/cabal /usr/local/bin/cabal
 
 RUN cd /tmp \
+  # Fix https://github.com/haskell/cabal/issues/8923
+  && PKG_CONFIG_VERSION="$(pkg-config --version)" \
+  && if [ "${PKG_CONFIG_VERSION%.*}" = "1.9" ]; then \
+    # Downgrade pkgconf from 1.9.x to 1.8.1
+    curl -sSLO http://dl-cdn.alpinelinux.org/alpine/v3.16/main/"$(uname -m)"/pkgconf-1.8.1-r0.apk; \
+    apk add --no-cache pkgconf-1.8.1-r0.apk; \
+  fi \
   && tar -xJf ghc-"$GHC_VERSION"-*-alpine-linux.tar.xz \
   && cd ghc-"$GHC_VERSION"-*-alpine-linux \
   && ./configure --disable-ld-override \
diff --git a/prior/9.6.1.Dockerfile b/prior/9.6.1.Dockerfile
index 40c45b4..55ad1a5 100644
--- a/prior/9.6.1.Dockerfile
+++ b/prior/9.6.1.Dockerfile
@@ -103,6 +103,13 @@ COPY --from=bootstrap /tmp/ghc-"$GHC_VERSION"/_build/bindist/ghc-"$GHC_VERSION"-
 COPY --from=bootstrap /root/.cabal/bin/cabal /usr/local/bin/cabal
 
 RUN cd /tmp \
+  # Fix https://github.com/haskell/cabal/issues/8923
+  && PKG_CONFIG_VERSION="$(pkg-config --version)" \
+  && if [ "${PKG_CONFIG_VERSION%.*}" = "1.9" ]; then \
+    # Downgrade pkgconf from 1.9.x to 1.8.1
+    curl -sSLO http://dl-cdn.alpinelinux.org/alpine/v3.16/main/"$(uname -m)"/pkgconf-1.8.1-r0.apk; \
+    apk add --no-cache pkgconf-1.8.1-r0.apk; \
+  fi \
   && tar -xJf ghc-"$GHC_VERSION"-*-alpine-linux.tar.xz \
   && cd ghc-"$GHC_VERSION"-*-alpine-linux \
   && ./configure --disable-ld-override \
-- 
GitLab