#57294 closed defect (fixed)
libkdegames @4.14.3: 'al.h' file not found
Reported by: | rlhamil | Owned by: | NicosPavlov |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.5.4 |
Keywords: | mojave | Cc: | mopihopi |
Port: | libkdegames |
Description
include file <al.h> isn't found. openal-soft is installed (regular openal won't build, there was already a ticket for that), so why isn't it finding it?
Attachments (2)
Change History (26)
Changed 6 years ago by rlhamil
Attachment: | main.log-libkdegames.txt added |
---|
comment:1 Changed 6 years ago by ryandesign (Ryan Carsten Schmidt)
Keywords: | mojave added; mojaveProblems removed |
---|---|
Owner: | set to NicosPavlov |
Status: | new → assigned |
Summary: | libkdegames build fails on mojave → libkdegames @4.14.3: 'al.h' file not found |
comment:2 Changed 6 years ago by ryandesign (Ryan Carsten Schmidt)
Port: | libkdegames added; port removed |
---|
comment:3 Changed 6 years ago by stanimura
I had the same error, but, in my case, it seems to solve on Mojave without openal-soft/openal as adding the following in Portfile.
pre-configure { configure.cppflags-append "-I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Versions/A/Headers" configure.cflags-append "-I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Versions/A/Headers" configure.cxxflags-append "-I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Versions/A/Headers" }
The missing al.h is possibly located in
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/Versions/A/Headers/al.h
However, I am not sure if the al.h is right al.h.
comment:4 Changed 6 years ago by rlhamil
Wow, you may have the answer there! Not only did libkdegames build, but with that in place, all the ports brought in by kdegames4 built just fine.
While I doubt those options would hurt anything even if the directory did not exist on an older OS version, can those directives be made conditional on the OS version (e.g. os.version 18.0.0 or later)? If possible, that would IMO be highest confidence that no older versions where it works now would be affected.
comment:5 Changed 6 years ago by kencu (Ken)
That's not the right fix, but it's a good clue as to what the right fix should be.
Does this port not use -framework OpenAL.framework
anywhere?
Ken
comment:6 Changed 6 years ago by NicosPavlov
It seems that builds on previous versions have been detecting the framework automatically. I don't have Mojave installed to test the issue, but on High Sierra, the configure stage shows that it is properly found:
[...] -- Found automoc4: /opt/local/bin/automoc4 -- Found OpenAL: /System/Library/Frameworks/OpenAL.framework -- Found SndFile: /opt/local/lib/libsndfile.dylib [...] ----------------------------------------------------------------------------- -- The following external packages were located on your system. -- This installation will have the extra features provided by these packages. ----------------------------------------------------------------------------- * OpenAL - OpenAL (Open Audio Library) is a free software cross-platform audio API. * SndFile - libsndfile is a C library written by Erik de Castro Lopo for reading and writing audio files. * KDeclarative - KDeclarative is a KDE library for KDE specific QML support.
comment:7 Changed 6 years ago by rlhamil
On Mojave with unmodified Portfile, it says the following, except that it's NOT finding the right thing because the al.h header is NOT there. So it fails later on.
-- Found OpenAL: /System/Library/Frameworks/OpenAL.framework -- Found SndFile: /opt/local/lib/libsndfile.dylib -- Checking libsndfile capabilities -- INCLUDES FOR SOUND: /System/Library/Frameworks/OpenAL.framework/Headers /opt/local/include -- LIBRARIES FOR SOUND: /System/Library/Frameworks/OpenAL.framework /opt/local/lib/libsndfile.dylib
If you need -framework OpenAL.framework, then I guess you need a -F /path/to/frameworks_directory option too, but if I try a trivial
clang -v -F/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks -framework OpenAL.framework
it fails with can't find framework long before it notices that I didn't even give it anything to compile or link. :-) So there's some missing magic still needed, I suppose.
comment:8 Changed 6 years ago by kencu (Ken)
Getting there. You should not need to pass in the System frameworks directory.
Maybe this port is having issues with the -isysroot thing. Do you have the command-line tools installed? If not, this port might need some fixing to use the SDK rather than "/".
comment:9 Changed 5 years ago by mopihopi
Cc: | mopihopi added |
---|
comment:10 Changed 5 years ago by yaseppochi (Stephen J. Turnbull)
macOS Catalina 10.15.3 on MacBook Pro port 2.6.2 openal-soft @1.20.1_1 (active) I have no idea whether this is correct or if the port even works, but it builds. (I'm in the middle of a complete system reinstall following Mojave -> Catalina upgrade, so not able to really test, and not sure this will complete any time soon.) Following stanimura (comment3) I added
pre-configure { configure.cppflags-append "-I/opt/local/include/AL" configure.cflags-append "-I/opt/local/include/AL" configure.cxxflags-append "-I/opt/local/include/AL" }
to the Portfile for libkdegames.
comment:11 Changed 5 years ago by yaseppochi (Stephen J. Turnbull)
Following up to comment:10, both kmahjongg and kmines crash on startup. I'm removing those ports and libkdegames, too.
comment:12 Changed 5 years ago by LenoreHorner
18 months later this failure is still present on Mojave. Kencu, you've said twice the proposed fixes aren't right. Do you actually know how to fix this? Command line tools are installed for me. Log attached. Well, I was going to attach the log, but I can't find a button for doing so either before or after submitting text.
Changed 5 years ago by LenoreHorner
Attachment: | libkdegames_main.log added |
---|
another log file in case it helps (18 months later so it's probaby a different version of Mojave)
comment:13 Changed 5 years ago by NicosPavlov
Sorry, I somewhat left that ticket as is as I was not on Mojave at the time it was submitted, and then forgot to look at it in details after I upgraded.
It seems that a rather easy fix can take care of the issue. Just patching the problematic file with:
-#include <al.h> -#include <alc.h> +#include <OpenAL/al.h> +#include <OpenAL/alc.h>
seems to do the trick. I am just not sure if this patch then causes issues with older OS versions.
comment:14 Changed 5 years ago by kencu (Ken)
something is setting
-DOPENAL_INCLUDE_DIR=/System/Library/Frameworks/OpenAL.framework/Headers -DOPENAL_LIBRARY=/System/Library/Frameworks/OpenAL.framework
instead of using the proper sdkroot
On 10.14 and up, there is no sdk at "/".
comment:15 Changed 5 years ago by NicosPavlov
Yes, it is in the kde4 PortGroup file.
I tried to remove these lines from the PortGroup, but it did not change anything on the error. Fixing the include statements did.
comment:16 Changed 5 years ago by kencu (Ken)
I wonder what are the modified include ststements now finding? /opt/local/include/OpenAL/
?
Have to fix the PortGroup file, imho. I can look later, if you like -- Happy Easter!
comment:17 Changed 5 years ago by NicosPavlov
Good point, but I don't have OpenAL in Macports (not installed), and I do have a framework at
/System/Library/Frameworks/OpenAL.framework
but no
/System/Library/Frameworks/OpenAL.framework/Headers
As the only other OpenAL frameworks I have are in the Command Line tools or embedded in the XCode app, I suppose it links to the one in System.
So there might be things to fix, but I am not sure all the statements in the PortGroup should be thrown away.
comment:18 Changed 5 years ago by kencu (Ken)
assuming you want to use OpenAL from the SDK instead of from the port (do you?), you'd have to use {configure.sdkroot} instead of just always assuming "/".
There is a "bug" in base in that {configure.sdkroot} can be "" so you have to test for that.
comment:19 Changed 5 years ago by kencu (Ken)
there is also a {frameworks_dir} I recall that might in fact be the thing you really should use to get right to it. I would have to check the exact spelling on that, but it should be the full path to the current frameworks directory in the selected sdk, if I understand properly what it is referencing.
Edit: No, frameworks_dir is where MP should install frameworks, not where it finds them in the SDK. K
comment:20 Changed 5 years ago by kencu (Ken)
This same issue is being discussed on multiple mailing lists, with everyone coming to the same conclusion in different places :>
comment:21 Changed 5 years ago by NicosPavlov
Alright, so I checked again, and I don't know what happened the first time, but removing the -DOPENAL_INCLUDE_DIR and -DOPENAL_LIBRARY variable from the PortGroup works.
In that case, it finds the proper SDK:
Found OpenAL: /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/OpenAL.framework
based on configure.sdk.
So the solution would be to suppress the paths in the PortGroup, and check for configure.sdkroot, and set it to "/" if it is empty.
I just need to check which ports in the KDE PortGroup would be affected by that change.
comment:23 Changed 5 years ago by Nicolas Pavillon <pavillon.nicolas@…>
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
comment:24 Changed 5 years ago by kencu (Ken)
I'm sure you know that Apple has deprecated OpenAL in Catalina, and so we'll likely need to switch to use MacPorts' version of openal once 10.16 comes out.
libkdegames doesn't declare a dependency on openal or openal-soft, so either it shouldn't be using them, or it needs to declare a dependency one of them and have this build failure fixed.