#1113414 pmdk: FTBFS with CMake 4

#1113414#5
Date:
2025-08-31 23:02:56 UTC
From:
To:
Dear maintainer,

During a test rebuild for CMake 4, pmdk failed to rebuild.

Log Summary:
-------------------------------------------------------------------------------
[...]
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
make[5]: Entering directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_recovery'
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_pmalloc_rand_mt'
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_pool'
make -C obj_recreate clean
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
make -C obj_root clean
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_pmemcheck'
make -C obj_reorder_basic clean
make[5]: Entering directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_recreate'
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_heap_reopen'
make[5]: Entering directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_root'
make -C obj_strdup clean
make[5]: Entering directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_reorder_basic'
make[5]: Entering directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_strdup'
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_pool_lock'
make -C obj_sds clean
make[5]: Entering directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_sds'
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_pool_lookup'
make -C obj_toid clean
make[5]: Entering directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_toid'
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_recovery'
make -C obj_tx_alloc clean
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
make[5]: Entering directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_alloc'
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_strdup'
make -C obj_tx_alloc_mt clean
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_root'
make -C obj_tx_add_range clean
make[5]: Entering directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_alloc_mt'
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_reorder_basic'
make -C obj_tx_add_range_direct clean
make[5]: Entering directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_add_range'
make[5]: Entering directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_add_range_direct'
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_recreate'
make -C obj_tx_callbacks clean
make[5]: Entering directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_callbacks'
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_toid'
make -C obj_tx_flow clean
make[5]: Entering directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_flow'
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_sds'
make -C obj_tx_free clean
make[5]: Entering directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_free'
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_alloc'
make -C obj_tx_invalid clean
make[5]: Entering directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_invalid'
Please add valid testconfig.py file - see testconfig.py.example
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_callbacks'
make -C obj_tx_lock clean
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_alloc_mt'
make -C obj_tx_locks clean
make[5]: Entering directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_lock'
make[5]: Entering directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_locks'
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_flow'
make -C obj_tx_locks_abort clean
make[5]: Entering directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_locks_abort'
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_free'
make -C obj_tx_mt clean
make[5]: Entering directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_mt'
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_invalid'
make -C obj_tx_realloc clean
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
make[5]: Entering directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_realloc'
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_locks'
make -C obj_tx_strdup clean
make[5]: Entering directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_strdup'
Please add valid testconfig.py file - see testconfig.py.example
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_lock'
make -C obj_tx_user_data clean
Please add valid testconfig.py file - see testconfig.py.example
make[5]: Entering directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_user_data'
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_locks_abort'
make -C obj_ulog_size clean
make[5]: Entering directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_ulog_size'
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_mt'
make -C obj_zones clean
make[5]: Entering directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_zones'
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_realloc'
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_strdup'
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_zones'
Please add valid testconfig.py file - see testconfig.py.example
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_pool_open_mt'
Please add valid testconfig.py file - see testconfig.py.example
Please add valid testconfig.py file - see testconfig.py.example
Please add valid testconfig.py file - see testconfig.py.example
Please add valid testconfig.py file - see testconfig.py.example
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_add_range'
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_add_range_direct'
Please add valid testconfig.py file - see testconfig.py.example
Please add valid testconfig.py file - see testconfig.py.example
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_tx_user_data'
rm -f *.o */*.o core *.core a.out *.log testfile* .synced
make[5]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test/obj_ulog_size'
rm -f -r ../../src/test/.sync-dir
rm -f *.synced
rm -f ../../src/test/tools/anonymous_mmap/max_dax_devices
rm -f envconfig.sh envconfig.py
make[4]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src/test'
make[3]: Leaving directory '/build/reproducible-path/pmdk-1.13.1/src'
make[2]: *** [Makefile:61: clean] Error 2
make[2]: Leaving directory '/build/reproducible-path/pmdk-1.13.1'
dh_auto_clean: error: make -j8 clean returned exit code 2
make[1]: *** [debian/rules:14: override_dh_auto_clean] Error 25
make[1]: Leaving directory '/build/reproducible-path/pmdk-1.13.1'
make: *** [debian/rules:11: clean] Error 2
dpkg-buildpackage: error: debian/rules clean subprocess returned exit status 2
--------------------------------------------------------------------------------
Build finished at 2025-08-30T14:34:02Z
-------------------------------------------------------------------------------

The above is just how the build ends and not necessarily the most relevant part.
If required, the full build log is available here (for the next 30 days):
https://debusine.debian.net/artifact/2407587/

The most likely cause of build failures is the removed backwards compatibility for
CMake versions earlier than 3.5. You can find additional information in my
debian-devel announcement:

https://lists.debian.org/debian-devel/2025/04/msg00310.html

About the archive rebuild: The build was made on debusine.debian.net,
using sbuild.

You can find the build task here:
https://debusine.debian.net/work-request/154521/

If this is really a bug in one of the build-depends, please use
reassign and affects, so that this is still visible in the BTS web
page for this package.

Thanks,
Timo

#1113414#12
Date:
2025-09-01 11:52:22 UTC
From:
To:
I have downgraded the bug to non-RC severity temporarily and reverted
CMake in unstable to version 3.31.6. I plan to re-upgrade in about a
month's time. I realize that despite my April announcement, the upload
to unstable came rather surprising, and I don't want to cause
unnecessary pain.

Also, the build log URL has an unfortunate mistake. The correct URL
should include the workspace, i.e.,

https://debusine.debian.net/debian/developers/artifact/XXXX

CMake 4 will also be available in experimental again, so it can be
used to verify that the bug is fixed.

Cheers
Timo

#1113414#23
Date:
2026-01-05 13:06:41 UTC
From:
To:
Please find a patch attached.