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: 10000000
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.366665Z 01O 12: CMake Error at 
/cygdrive/c/builds/libtiff/libtiff/test/TiffTestCommon.cmake:86 (message):
2026-02-22T20:51:46.366665Z 01O 12:   Returned failed status Segmentation fault!
2026-02-22T20:51:46.366665Z 01O 12: Call Stack (most recent call first):
2026-02-22T20:51:46.366665Z 01O 12:   
/cygdrive/c/builds/libtiff/libtiff/test/TiffTest.cmake:66 (test_stdout_noargs)
2026-02-22T20:51:46.366665Z 01O 12: 
2026-02-22T20:51:46.366665Z 01O 12: 

Would anyone be able to take another look at that change?


Kind regards,
Roger

_______________________________________________
Tiff mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/tiff

Reply via email to