Bug 419167 - packages fail to compile under macOS when using case-sensitive filesystem
Summary: packages fail to compile under macOS when using case-sensitive filesystem
Status: RESOLVED WORKSFORME
Alias: None
Product: Craft
Classification: Developer tools
Component: Blueprints (show other bugs)
Version: master
Platform: Other macOS
: NOR crash
Target Milestone: ---
Assignee: Hannah von Reth
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-03-24 03:05 UTC by Dawid Wróbel
Modified: 2023-10-17 18:23 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Dawid Wróbel 2020-03-24 03:05:14 UTC
SUMMARY
craft fails to build kpimtextedit not being able to locate the sonnet/highlighter.h header. The header is present in CraftRoot/include/KF5/SonnetUi/Sonnet, but that location is not included during compilation – only the  /Volumes/External/CraftRoot/include/KF5/SonnetUi is.


STEPS TO REPRODUCE
1. Install craft 
2. Issue "craft kpimtextedit"

OBSERVED RESULT
FAILED: src/CMakeFiles/KF5PimTextEdit.dir/KF5PimTextEdit_autogen/mocs_compilation.cpp.o
/Library/Developer/CommandLineTools/usr/bin/clang++  -DBUILD_TESTING -DKCOREADDONS_LIB -DKF5PimTextEdit_EXPORTS -DKF_DEPRECATED_WARNINGS_SINCE=0x060000 -DQT_CONCURRENT_LIB -DQT_CORE_LIB -DQT_DBUS_LIB -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 -DQT_GUI_LIB -DQT_MAC_USE_COCOA -DQT_NETWORK_LIB -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_FROM_BYTEARRAY -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_NO_FOREACH -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_SIGNALS_SLOTS_KEYWORDS -DQT_NO_URL_CAST_FROM_STRING -DQT_STRICT_ITERATORS -DQT_TEXTTOSPEECH_LIB -DQT_USE_QSTRINGBUILDER -DQT_WIDGETS_LIB -DQT_XML_LIB -DTRANSLATION_DOMAIN=\"libkpimtextedit\" -D_DARWIN_C_SOURCE -D_LARGEFILE64_SOURCE -Isrc -I/Volumes/External/CraftRoot/build/kde/pim/kpimtextedit/work/kpimtextedit-19.12.3/src -Isrc/KF5PimTextEdit_autogen/include -isystem /Volumes/External/CraftRoot/include/KF5/KCodecs -isystem /Volumes/External/CraftRoot/include/KF5 -iframework /Volumes/External/CraftRoot/lib -isystem /Volumes/External/CraftRoot/lib/QtCore.framework/Headers -isystem /Volumes/External/CraftRoot/./mkspecs/macx-clang -isystem /Volumes/External/CraftRoot/include/KF5/SonnetUi -isystem /Volumes/External/CraftRoot/lib/QtWidgets.framework/Headers -isystem /Volumes/External/CraftRoot/lib/QtGui.framework/Headers -isystem /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/OpenGL.framework/Headers -isystem /Volumes/External/CraftRoot/include/KF5/SonnetCore -isystem /Volumes/External/CraftRoot/include/KF5/KWidgetsAddons -isystem /Volumes/External/CraftRoot/include/KF5/KIOWidgets -isystem /Volumes/External/CraftRoot/include/KF5/KIOCore -isystem /Volumes/External/CraftRoot/include/KF5/KCoreAddons -isystem /Volumes/External/CraftRoot/include/KF5/KService -isystem /Volumes/External/CraftRoot/include/KF5/KConfigCore -isystem /Volumes/External/CraftRoot/lib/QtNetwork.framework/Headers -isystem /Volumes/External/CraftRoot/lib/QtConcurrent.framework/Headers -isystem /Volumes/External/CraftRoot/lib/QtDBus.framework/Headers -isystem /Volumes/External/CraftRoot/include/KF5/KJobWidgets -isystem /Volumes/External/CraftRoot/include/KF5/KCompletion -isystem /Volumes/External/CraftRoot/include/KF5/KConfigWidgets -isystem /Volumes/External/CraftRoot/include/KF5/KConfigGui -isystem /Volumes/External/CraftRoot/lib/QtXml.framework/Headers -isystem /Volumes/External/CraftRoot/include/KF5/KAuth -isystem /Volumes/External/CraftRoot/include -isystem /Volumes/External/CraftRoot/include/KF5/KXmlGui -isystem /Volumes/External/CraftRoot/include/KF5/KI18n -isystem /Volumes/External/CraftRoot/include/KF5/KSyntaxHighlighting -isystem /Volumes/External/CraftRoot/lib/QtTextToSpeech.framework/Headers -fno-operator-names -fno-exceptions -Wno-gnu-zero-variadic-macro-arguments -Wall -Wextra -Wcast-align -Wchar-subscripts -Wformat-security -Wno-long-long -Wpointer-arith -Wundef -Wnon-virtual-dtor -Woverloaded-virtual -Werror=return-type -Wvla -Wdate-time -fdiagnostics-color=always -pedantic -Wzero-as-null-pointer-constant -O2 -g -DNDEBUG -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -mmacosx-version-min=10.13 -fPIC -fvisibility=hidden -fvisibility-inlines-hidden   -fPIC -std=gnu++11 -MD -MT src/CMakeFiles/KF5PimTextEdit.dir/KF5PimTextEdit_autogen/mocs_compilation.cpp.o -MF src/CMakeFiles/KF5PimTextEdit.dir/KF5PimTextEdit_autogen/mocs_compilation.cpp.o.d -o src/CMakeFiles/KF5PimTextEdit.dir/KF5PimTextEdit_autogen/mocs_compilation.cpp.o -c src/KF5PimTextEdit_autogen/mocs_compilation.cpp
In file included from src/KF5PimTextEdit_autogen/mocs_compilation.cpp:6:
In file included from src/KF5PimTextEdit_autogen/EHOWY2AH33/moc_richtextcomposeremailquotehighlighter.cpp:10:
/Volumes/External/CraftRoot/build/kde/pim/kpimtextedit/work/kpimtextedit-19.12.3/src/composer-ng/richtextcomposeremailquotehighlighter.h:23:10: fatal error: 'sonnet/highlighter.h' file not found
#include <sonnet/highlighter.h>



EXPECTED RESULT
kpimtextedit to compile successfully 


SOFTWARE/OS VERSIONS
macOS: 10.15.3
Qt Version: craft's own
Comment 1 Dawid Wróbel 2020-03-24 03:18:50 UTC
OK, the problem is not with a missing include but the "Sonnet" folder case, which should be "sonnet", i.e. CraftRoot/include/KF5/SonnetUi/sonnet
Comment 2 Dawid Wróbel 2020-03-24 03:31:49 UTC
Actually, looks like the code references headers in both upper and lower case folder and same issue happens for SonnetCore/Sonnet and KIOWidgets/KIO, so I doubt this is a mistake and it definitely goes beyond my basic cmake knowledge.

Either way, I was able to workaround by symlinking KIOWidgets/KIO, SonnetUi/Sonnet and SonnetCore/Sonnet to their lowercase folder names and it worked.
Comment 3 Hannah von Reth 2020-03-25 08:22:27 UTC
Sounds like an upstream issue.
Comment 4 Hannah von Reth 2020-03-25 08:34:47 UTC
Ah I remember this issue.
Its caused by our builder using a case insensitive os, so the upper and lowercase headers get merged.

When the used on a case sensitive file system the compat headers are missing....
Comment 5 Dawid Wróbel 2020-03-25 14:29:07 UTC
clang has -Wnonportable-include-path and -Wnonportable-system-include-path that should fix this. They're not on by default because they can slow down the compilation time. I suppose a logic could be added to check if the compilation uses case-sensitive filesystem (for both Linux and macOS) and turn them on if needed.
Comment 6 Hannah von Reth 2020-03-25 16:22:44 UTC
The issue is that an install step adds the uppercase path includes.
But if the host is case insensitive that has no effect.
So when everything is done on a case sensitive platform both the upper and the lowercase path exist and everything is fine.
Comment 7 Justin Zobel 2022-10-05 02:24:41 UTC
Thank you for reporting this crash in KDE software. As it has been a while since this issue was reported, can we please ask you to see if you can reproduce the crash with a recent software version?

If you can reproduce the issue, please change the status to "CONFIRMED" when replying. Thank you!
Comment 8 Bug Janitor Service 2022-10-20 04:59:37 UTC
Dear Bug Submitter,

This bug has been in NEEDSINFO status with no change for at least
15 days. Please provide the requested information as soon as
possible and set the bug status as REPORTED. Due to regular bug
tracker maintenance, if the bug is still in NEEDSINFO status with
no change in 30 days the bug will be closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

If you have already provided the requested information, please
mark the bug as REPORTED so that the KDE team knows that the bug is
ready to be confirmed.

Thank you for helping us make KDE software even better for everyone!
Comment 9 Bug Janitor Service 2022-11-04 05:08:04 UTC
This bug has been in NEEDSINFO status with no change for at least
30 days. The bug is now closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

Thank you for helping us make KDE software even better for everyone!