Hello,

I think I've tried to raise some awareness about this already in the past. The 
issue has come up again among KDE/Mac users, and this time I decided to file a 
ticket on BKO. Finding the right category wasn't trivial, so I picked what 
seemed the best compromise and relay it here:

https://bugs.kde.org/show_bug.cgi?id=369554

I don't really know how invasive it would be to address this issue properly, or 
rather, how to fix this without being overly invasive. Looking at KPeople I see

/opt/local/include/KF5/KPeople/KPeople/Widgets/Actions
/opt/local/include/KF5/KPeople/kpeople/widgets/actions.h

which means that on a case-insensitive-but-preserving FS (HFS, NTFS) you can 
end up with 4 different situations:

/opt/local/include/KF5/KPeople/kpeople/widgets/{Actions,actions.h}
/opt/local/include/KF5/KPeople/KPeople/widgets/{Actions,actions.h}
/opt/local/include/KF5/KPeople/kpeople/Widgets/{Actions,actions.h}
/opt/local/include/KF5/KPeople/KPeople/Widgets/{Actions,actions.h}

and that's presuming that the case preservations works reliably. Transfer such 
a tree via a FAT32 thumbdrive and all bets are off. Evidently that's less 
likely to happen with a headerfile directory (and just shouldn't be done) but 
I'm concerned that the underlying implicit assumption about the FS has been 
made elsewhere too. And as I note in the ticket: Mac OS app bundles should 
support being transferred to and from case-insensitive volumes and still be 
usable on a case-sensitive volume (idem for KF5 framework bundles if they ever 
see the light).

The most straightforward fix would be to use only CamelCase OR lowercase header 
directories, i.e. one of
/opt/local/include/KF5/KPeople/kpeople/widgets/{Actions,actions.h}
/opt/local/include/KF5/KPeople/KPeople/Widgets/{Actions,actions.h}

This is also what Qt5 does, and one can presume they have seen a lot more 
testing of this approach on many more platforms.
NB: one could create the appropriate symlinks when installing to a 
case-sensitive FS, but evidently that makes it impossible to copy the result to 
a case-insensitive FS.

I realise that doing this is an invasive change that requires patching lots of 
dependent code, and even if those patches could be generated automatically the 
patched code would then no longer build against older versions of the 
frameworks. Still, it'd be an almost perfect way to force people to look for 
other places where the assumption about FS case-sensitivity could lead to 
problems.

R

Reply via email to