diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ad6f8eb0f3a14532f71500160530ead041bc43c9_LmdpdGxhYi1jaS55bWw=..ee4f953bd1a10ee1d9ecbab7391e728c7c1ef768_LmdpdGxhYi1jaS55bWw= 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -51,7 +51,7 @@
   before_script:
     - "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12"
     - $Env:Path="C:\msys64\$Env:MINGW_PATH\bin;C:\msys64\usr\bin;$Env:Path"
-    - bash -lc 'sh .gitlab-ci/setup_mingw.sh'
+    - bash -lc 'sh .gitlab-ci/setup_mingw.sh autotools'
   script:
     - bash -lc 'sh .gitlab-ci/test.sh'
 
@@ -136,7 +136,7 @@
   before_script:
     - "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12"
     - $Env:Path="C:\msys64\$Env:MINGW_PATH\bin;C:\msys64\usr\bin;$Env:Path"
-    - bash -lc 'sh .gitlab-ci/setup_mingw.sh'
+    - bash -lc 'sh .gitlab-ci/setup_mingw.sh cmake ninja'
     - .gitlab-ci/Install-7-Zip
     - git clone --depth 1 https://gitlab.gnome.org/GNOME/libxml2.git libxml2-source
     - cmake -G Ninja -DBUILD_SHARED_LIBS=$Env:BUILD_SHARED_LIBS -DCMAKE_INSTALL_PREFIX=libxml2-install -DLIBXML2_WITH_TESTS=OFF -S libxml2-source -B libxml2-build
diff --git a/.gitlab-ci/setup_mingw.sh b/.gitlab-ci/setup_mingw.sh
index ad6f8eb0f3a14532f71500160530ead041bc43c9_LmdpdGxhYi1jaS9zZXR1cF9taW5ndy5zaA==..ee4f953bd1a10ee1d9ecbab7391e728c7c1ef768_LmdpdGxhYi1jaS9zZXR1cF9taW5ndy5zaA== 100644
--- a/.gitlab-ci/setup_mingw.sh
+++ b/.gitlab-ci/setup_mingw.sh
@@ -1,6 +1,8 @@
 #!/bin/sh
 
+pacman --noconfirm -Syu
+
 prefix=
 if [ -n "$MINGW_PACKAGE_PREFIX" ]; then
     prefix="${MINGW_PACKAGE_PREFIX}-"
 fi
@@ -3,14 +5,7 @@
 prefix=
 if [ -n "$MINGW_PACKAGE_PREFIX" ]; then
     prefix="${MINGW_PACKAGE_PREFIX}-"
 fi
-
-pacman --noconfirm -Syu
-pacman --noconfirm -S --needed \
-    ${prefix}autotools \
-    ${prefix}cmake \
-    ${prefix}libiconv \
-    ${prefix}ninja \
-    ${prefix}python \
-    ${prefix}xz \
-    ${prefix}zlib
+for module in libiconv python xz zlib "$@"; do
+    pacman --noconfirm -S --needed ${prefix}$module
+done