azerothcore / azerothcore-wotlk

Complete Open Source and Modular solution for MMO
http://www.azerothcore.org
GNU Affero General Public License v3.0
6.56k stars 2.63k forks source link

[azerothcore][macOS] Compile error on macOS 10.14.6 #6886

Closed eyeofstorm closed 3 years ago

eyeofstorm commented 3 years ago

Current Behaviour

After merge the ACCore with the following commit.

https://github.com/azerothcore/azerothcore-wotlk/commit/ebb80145b3b213a126536246034969c7441d945f

Building on macOS 10.14 while running "make -j 4", following error happens.

'~path' is unavailable: introduced in macos 10.15

It seems that this commit uses some API introduced in 10.15. Revert to the parent commit above or change the build target to 10.15 will pass the compile.

Does AC no more support macOS 10.14? If true, this is a bad news for those people who want to run the client an server in the same machine. Since the 10.14 is the last macOS version that support 32bit application, and WotLK has no 64bit application at all.

Expected Blizzlike Behaviour

none

Source

None

Steps to reproduce the problem

  1. Sure your macOS is 10.14
  2. Just compile the source

Extra Notes

None

AC rev. hash/commit

ebb80145b3b213a126536246034969c7441d945f

Operating system

macOS Mojave 10.14.6

Custom changes or Modules

None

FrancescoBorzi commented 3 years ago

Does AC no more support macOS 10.14?

the only macOS version supported is currently 10.15, see https://github.com/azerothcore/azerothcore-wotlk/blob/master/.github/SECURITY.md

If true, this is a bad news for those people who want to run the client an server in the same machine. Since the 10.14 is the last macOS version that support 32bit application, and WotLK has no 64bit application at all.

I run AC and the client using 10.15 with: https://www.mangosrumors.org/how-to-run-wow-32-bit-on-mac-os/

However... it would be nice to fix your issue and allow people to use AC on macOS 10.14 too.

FrancescoBorzi commented 3 years ago

@eyeofstorm what is your clang --version ?

eyeofstorm commented 3 years ago

Does AC no more support macOS 10.14?

the only macOS version supported is currently 10.15, see https://github.com/azerothcore/azerothcore-wotlk/blob/master/.github/SECURITY.md

If true, this is a bad news for those people who want to run the client an server in the same machine. Since the 10.14 is the last macOS version that support 32bit application, and WotLK has no 64bit application at all.

I run AC and the client using 10.15 with: https://www.mangosrumors.org/how-to-run-wow-32-bit-on-mac-os/

However... it would be nice to fix your issue and allow people to use AC on macOS 10.14 too.

Very helpful. I'll try it. Thanks.

eyeofstorm commented 3 years ago

@eyeofstorm what is your clang --version ?

Apple clang version 11.0.0 (clang-1100.0.33.17) Target: x86_64-apple-darwin18.7.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

FrancescoBorzi commented 3 years ago

@eyeofstorm what is your clang --version ?

Apple clang version 11.0.0 (clang-1100.0.33.17) Target: x86_64-apple-darwin18.7.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

@eyeofstorm ok, clang-11 should be good enough.

maybe this can help:

https://stackoverflow.com/questions/58943032/c-build-failed-on-xcode-osx-with-multiple-errors-file-io-is-unavailable-i

necropola commented 3 years ago

Maybe the equivalent of #6889 just on MacOS and not on debian. I'm wondering whether PR #6914 also fixes building on MacOS 10.14 ...

eyeofstorm commented 3 years ago

Maybe the equivalent of #6889 just on MacOS and not on debian. I'm wondering whether PR #6914 also fixes building on MacOS 10.14 ...

I'm afraid can't. On macOS 10.14, It is another issue. As I mentioned before, when change build target to 10.15, Building will finished with no errors.

I'm running cmake on branch pr-6914, and then following error happens.

-- CMake version: 3.20.1
-- The CXX compiler identification is AppleClang 11.0.0.11000033
-- The C compiler identification is AppleClang 11.0.0.11000033
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang - skipped
-- Detecting C compile features
-- Detecting C compile features - done
> Warning: module using deprecated add config file api
-- Running cmake hook: AFTER_LOAD_CONF
-- No hooks registered for AFTER_LOAD_CONF
-- Enabled С++17 support
-- Detected 64-bit platform
-- UNIX: Using default configuration directory
-- UNIX: Using default library directory
-- UNIX: Configuring uninstall target
-- UNIX: Created uninstall target
-- UNIX: Detected compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
-- Clang: Minimum version required is 10.0.0, found 11.0.0.11000033 - ok!
-- Performing Test CLANG_HAVE_PROPER_CHARCONV
-- Performing Test CLANG_HAVE_PROPER_CHARCONV - Success
-- Running cmake hook: AFTER_LOAD_CMAKE_MODULES
-- No hooks registered for AFTER_LOAD_CMAKE_MODULES
-- Found ACE library: /usr/local/lib/libACE.dylib
-- Found ACE headers: /usr/local/include
-- Using mysql-config: /usr/local/mysql/bin/mysql_config
-- Found MySQL library: /usr/local/mysql/lib/libmysqlclient.dylib
-- Found MySQL headers: /usr/local/mysql/include
-- Found MySQL executable: /usr/local/mysql/bin/mysql
-- Found git binary : /usr/bin/git

* AzerothCore revision            : b6168c2d94c4 2021-07-13 22:01:32 +0900 (pr-6914 branch)
* AzerothCore buildtype           : Release

* Install core to                 : /Users/xxxxxx/azeroth-wotlk-server
* Install libraries to            : /Users/xxxxxx/azeroth-wotlk-server/lib
* Install configs to              : /Users/xxxxxx/azeroth-wotlk-server/etc

* Build world/auth                : Yes (default)
* Build with scripts              : Yes (static)
* Build with modules              : Yes (static)
* Build map/vmap tools            : No  (default)
* Build unit tests                : No  (default)
* Build core w/PCH                : No
* Build scripts w/PCH             : No
* Show compile-warnings           : No  (default)
* Use coreside debug              : No  (default)
* Use unix gperftools             : No  (default)
* Use GIT revision hash           : Yes (default)
* Enable extra features           : Yes (default)
* Enable vmap DisableMgr checks   : Yes (default)
* Enable extra logging functions  : No (default)
* Show source tree                : No (For UNIX default)

-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE  
-- Found Boost: /usr/local/lib/cmake/Boost-1.75.0/BoostConfig.cmake (found suitable version "1.75.0", minimum required is "1.67") found components: system filesystem program_options iostreams regex 
-- Performing Test boost_filesystem_copy_links_without_NO_SCOPED_ENUM
-- Performing Test boost_filesystem_copy_links_without_NO_SCOPED_ENUM - Success
-- Found ZLIB: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/lib/libz.tbd (found version "1.2.11") 
-- Looking for strtod_l
-- Looking for strtod_l - found
-- Found OpenSSL: /usr/local/opt/openssl@1.1/lib/libssl.dylib;/usr/local/opt/openssl@1.1/lib/libcrypto.dylib  
-- Looking for C++ include filesystem
-- Looking for C++ include filesystem - found
-- Performing Test CXX_FILESYSTEM_NO_LINK_NEEDED
-- Performing Test CXX_FILESYSTEM_NO_LINK_NEEDED - Failed
-- Performing Test CXX_FILESYSTEM_STDCPPFS_NEEDED
-- Performing Test CXX_FILESYSTEM_STDCPPFS_NEEDED - Failed
-- Performing Test CXX_FILESYSTEM_CPPFS_NEEDED
-- Performing Test CXX_FILESYSTEM_CPPFS_NEEDED - Failed
CMake Error at src/cmake/macros/FindFilesystem.cmake:239 (message):
  Cannot Compile simple program using std::filesystem
Call Stack (most recent call first):
  deps/stdfs/CMakeLists.txt:12 (find_package)

-- Configuring incomplete, errors occurred!
FrancescoBorzi commented 3 years ago

thanks for your feedback @eyeofstorm

@necropola in your PR 6914, can you please exclude macOS from your script?

necropola commented 3 years ago

I'll try to figure out, if there is a way to build on macOS 14 when std::filesystem is required. If not, then there is not much we can do.

Update: Does not look good. After a bit of research, I come to the following conclusions:

The only thing that we could actually do is to get rid of std::filesystementirely and use boost::filesystem instead, i. e. revert the change in commonand also use boost::filesystem in tools. This would make my PR obsolete of course.

This was also one of the suggested solutions for the same problem on macOS 10.13 (https://stackoverflow.com/questions/49577343/filesystem-with-c17-doesnt-work-on-my-mac-os-x-high-sierra). Someone even made and suggested a lightweight header-only filesystem implementation specifically for macOS < 10.15 to avoid the (big) boost dependency: https://github.com/gulrak/filesystem

@Winfidonarleyan Do you have a better idea?

necropola commented 3 years ago

@eyeofstorm Wait ....

As I mentioned before, when change build target to 10.15, Building will finished with no errors.

Sorry, these questions are maybe stupid, but I'm not a mac user.

iraizo commented 3 years ago

Can't you just install clang instead of Apple-clang fork, which would install a newer version of Libc++ containing the filesystem headers

FrancescoBorzi commented 3 years ago

@eyeofstorm the biggest issue of using macOS 10.14 is that we cannot run it in our CI so there is no way for us to know if any change would break it. So even if we fixed this completely, there could be easily something else that would break it tomorrow. That's why we recommend macOS 10.15 or higher. Did you give it a try? Using what I suggested to run the client (I do it with 10.15 and works fine for me, both client and server).

eyeofstorm commented 3 years ago

@necropola

So you have the SDK 10.15 and can set the build target to 10.15 or does the SDK 10.14 also allow to set the build target to 10.15?

I have the SDK 10.15 and can set the build target to 10.15 On My macOS 10.14 MacBook.

Isn't that the solution or does the result then no longer run on 10.14 (but on 10.15)?

Setting the build target to 10.15 will building AC with no errors, but can not running on macOS 10.14.

Does it also compile with my PR when you set the build target to 10.15?

No, cmake may failed. Actually, With or Without your PR-6914, 10.15 will pass through the building, But 10.14 can't. So your PR actually not effect to the macOS.

eyeofstorm commented 3 years ago

@eyeofstorm the biggest issue of using macOS 10.14 is that we cannot run it in our CI so there is no way for us to know if any change would break it. So even if we fixed this completely, there could be easily something else that would break it tomorrow. That's why we recommend macOS 10.15 or higher. Did you give it a try? Using what I suggested to run the client (I do it with 10.15 and works fine for me, both client and server).

Since macOS 10.15 is the only official supported version, I think the best way is switch to macOS 10.15. I'll try it. Thank you very much.

FrancescoBorzi commented 3 years ago

@eyeofstorm I'll close this, let us know how it goes with macOS 10.15. If you need any assistance, just ping us on the AC Discord