The os-string flag being default: False interacts badly with --allow-newer. Any builds with --allow-newer that pull in hashable will end up using the new filepath but without os-string, and so failing with the very error that this patch was meant to solve. Pinging @RyanGlScott as the author of that patch.
Designs
Child items
...
Show closed items
Linked items
0
Link issues together to show that they're related or that one is blocking others.
Learn more.
Error: cabal-3.10.2.1: Failed to build hashable-1.4.3.0 (which is required by doctest-parallel-0.3.1). See the build log above for details....[3 of 7] Compiling Data.Hashable.Class ( src/Data/Hashable/Class.hs, dist/build/Data/Hashable/Class.o, dist/build/Data/Hashable/Class.dyn_o )src/Data/Hashable/Class.hs:167:1: error: [GHC-87110] Could not load module ‘System.OsString.Internal.Types’. It is a member of the hidden package ‘os-string-2.0.2’. Perhaps you need to add ‘os-string’ to the build-depends in your .cabal file.
My settings use an automatic flag for the doctest suite that would turn off doctest-parallel if the cabal constraint solver realized the problem with hashable. However, the failure happens when building hashable, not when doing the solving, and then of course cabal does not backtrack.
My initial attempt at checking in that patch was to always enable the os-string flag and force --allow-newer=filepath. This ended up going very poorly, however, as it would create broken build plans that attempt to reinstall unix (see here for one example). Try as I might, I could not get the build plan to work. The only way I could get it to work was to deliberately not allow newer versions of filepath.
Perhaps there is a cleaner way of handling this, but it's not yet obvious to me what that would be.
I just did some more testing with a version with default switched to True, and it seems to have fixed the problem I originally reported without causing any new problems.