Hi folks,
This is an update on the current state of our GitLab CI infrastructure. We had
a problem 3 weeks ago where the Windows CI builds stopped working
(https://gitlab.com/libtiff/libtiff/-/merge_requests/790#note_3050047945).
Unfortunately, the build hosts weren’t repairable, and they have now been
removed entirely. We were broken firstly by a Windows update stopping needed
tools from running (SmartScreen blacklisted ninja.exe …), and then by an issue
with Go on AMD64 processors when run via Bhyve virtualisation which caused
stack problems in the Go runtime affecting both gitlab-runner and docker.
I’ve since replaced these twice over without success, and have now set up a
bare metal Windows installation which hosts Windows Container builds using
Docker. This is an AMD Ryzen system with 32GB RAM and 1TB storage which should
be more than sufficient for hosting the libtiff Windows builds. This is
working, and it is now possible to have a different build environment
(container image) for VS2022, VS2026, Cygwin and MinGW64. You can find them
here:
https://gitlab.com/codelibre/containers/vs2022-libtiff
https://gitlab.com/codelibre/containers/vs2026-libtiff
https://gitlab.com/codelibre/containers/cygwin-libtiff
https://gitlab.com/codelibre/containers/mingw-libtiff
and
https://gitlab.com/codelibre/containers/visualstudio-2022
https://gitlab.com/codelibre/containers/visualstudio-2026
(Base containers shared with other projects)
Note that these are hosted in the “codelibre” group rather than “libtiff” due
to the excessive size of Windows container images. The libtiff group has a
limited quota while I have a paid plain with 50 GB per project. You are still
free to fork them, open merge requests and pull the container images from the
registry if you set up Windows Containers on a local system. If the build
dependencies change or need updating, MRs are probably the best approach. I
will likely set up a rebuild of the images on a schedule so that they pull in
tool and library dependency updates. Any preferences on this? Could initially
go for monthly and see if it works out?
Overall, this should be a net improvement upon the manually-installed system we
had before, as well as the fixed AppVeyor images which only got updated
sporadically. It also means the libtiff tools and library dependencies are
completely isolated from the other build jobs the build system is running.
These can now be used with the libtiff CI build:
https://gitlab.com/libtiff/libtiff/-/pipelines/2342441382 (MR
https://gitlab.com/libtiff/libtiff/-/merge_requests/827)
All jobs building fine, except that note that there has been a regression, I
think due to the recent IFD loop changes. This makes the Cygwin builds
segfault in the directory test:
2026-02-22T20:51:46.266401Z 01O 12: Test command: /usr/bin/cmake.exe
"-DSTDOUT_COMMAND=/cygdrive/c/builds/libtiff/libtiff/cmake-build/test/test_directory.exe"
"-DLIBTIFF=/cygdrive/c/builds/libtiff/libtiff/cmake-build/libtiff/cygtiff-6.dll"
"-DTIFFCP=/cygdrive/c/builds/libtiff/libtiff/cmake-build/tools/tiffcp.exe"
"-DTIFFINFO=/cygdrive/c/builds/libtiff/libtiff/cmake-build/tools/tiffinfo.exe"
"-DTIFFSPLIT=/cygdrive/c/builds/libtiff/libtiff/cmake-build/tools/tiffsplit.exe"
"-DCYGWIN=1" "-P" "/cygdrive/c/builds/libtiff/libtiff/test/TiffTest.cmake"
2026-02-22T20:51:46.266401Z 01O 12: Working Directory:
/cygdrive/c/builds/libtiff/libtiff/cmake-build/test
2026-02-22T20:51:46.266401Z 01O 12: Environment variables:
2026-02-22T20:51:46.266401Z 01O 12:
srcdir=/cygdrive/c/builds/libtiff/libtiff/test
2026-02-22T20:51:46.266401Z 01O 12: Test timeout computed to be: 1000
2026-02-22T20:51:46.315162Z 01O 12: -- Running
/cygdrive/c/builds/libtiff/libtiff/cmake-build/test/test_directory.exe
2026-02-22T20:51:46.348882Z 01O 12:
2026-02-22T20:51:46.348882Z 01O 12: --- Test for non-BigTIFF and LE open
option. ---
2026-02-22T20:51:46.366155Z 01O 12: _TIFFCheckDirNumberAndOffset: Warning, TIFF
directory 1 has IFD looping to directory 0 at offset 0x144 (324).
2026-02-22T20:51:46.366155Z 01O 12: TIFFWriteDirectorySec: Starting directory 2
at offset 0x144 (324) might cause an IFD loop.
2026-02-22T20:51:46.366155Z 01O 12: MissingRequired: TIFF directory is missing
required "ImageLength" field.
2026-02-22T20:51:46.35Z 01O 12: CMake Error at
/cygdrive/c/builds/libtiff/libtiff/test/TiffTestCommon.cmake:86 (message):
2026-02-22T20:51:46.35Z 01O 12: Returned failed status Segmentation fault!
2026-02-22T20:51:46.35Z 01O 12: Call Stack (most recent call first):
2026-02-22T20:51:46.35Z 01O 12:
/cygdrive/c/builds/libtiff/libtiff/test/TiffTest.cmake:66 (test_stdout_noargs)
2026-02-22T20:51:46.35Z 01O 12:
2026-02-22T20:51:46.35Z 01O 12:
Would anyone be able to take another look at that change?
Kind regards,
Roger
___
Tiff mailing list
[email protected]