Install OTP 26 on macOS via asdf

Using macOS 11.6, trying to install OTP26 via asdf and getting:

In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:12:
/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSBundle.h:91:143: error: function does not return NSString
- (NSAttributedString *)localizedAttributedStringForKey:(NSString *)key value:(nullable NSString *)value table:(nullable NSString *)tableName NS_FORMAT_ARGUMENT(1) NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(12.0), ios(15.0), watchos(8.0), tvos(15.0));

What’s the fix for this function does not return NSString error?

Hi @chocolatedonut that is a very strange error, can you show how you’re installing it specifically?

Hi Ben. I set erlang 26.0.2 in .tool-versions (along with elixir 1.15.4-otp-26) and ran asdf install.

asdf is v0.10.0-77fd510 and only potentially relevant env-var is KERL_BUILD_DOCS=yes.

Here’s the tail part of otp_build_26.0.2.log, from the error mentioned in OP to the end:

h:91:143: error: function does not return NSString
- (NSAttributedString *)localizedAttributedStringForKey:(NSString *)key value:(nullable NSString *)value table:(nullable NSString *)tableName NS_FORMAT_ARGUMENT(1) NS_REFINED_FOR_SWIFT API_AVAILABLE(macos(12.0), ios(15.0), watchos(8.0), tvos(15.0));
                                                         ~~~~~~~~~~~~~~                                                                       ^                  ~
/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:103:48: note: expanded from macro 'NS_FORMAT_ARGUMENT'
        #define NS_FORMAT_ARGUMENT(A) __attribute__ ((format_arg(A)))
                                                      ^          ~
In file included from gen/wxe_func_table.cpp:21:
In file included from /opt/homebrew/include/wx-3.2/wx/wx.h:24:
In file included from /opt/homebrew/include/wx-3.2/wx/event.h:22:
In file included from /opt/homebrew/include/wx-3.2/wx/cursor.h:75:
/opt/homebrew/include/wx-3.2/wx/utils.h:749:35: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
    wxEventLoop* m_modalEventLoop = NULL;
                                  ^
1 warning generated.
 CXX	aarch64-apple-darwin20.6.0/wxe_main.o
1 warning generated.
 CXX	aarch64-apple-darwin20.6.0/wxe_impl.o
1 warning generated.
 CXX	aarch64-apple-darwin20.6.0/wxe_helpers.o
1 error generated.
make[3]: *** [Makefile:165: aarch64-apple-darwin20.6.0/wxe_ps_init.o] Error 1
make[3]: *** Waiting for unfinished jobs....
gen/wxe_init.cpp:610:57: warning: wxSTC_INDICS_MASK is deprecated. Style byte indicators are no longer used. [-W#pragma-messages]
    { WXE_ATOM_define, "wxSTC_INDICS_MASK", rt.make_int(wxSTC_INDICS_MASK) },
                                                        ^
/opt/homebrew/include/wx-3.2/wx/stc/stc.h:2493:27: note: expanded from macro 'wxSTC_INDICS_MASK'
#define wxSTC_INDICS_MASK wxSTC_DEPRECATED_MACRO_VALUE(0xE0,\
                          ^
/opt/homebrew/include/wx-3.2/wx/stc/stc.h:2473:9: note: expanded from macro 'wxSTC_DEPRECATED_MACRO_VALUE'
        _Pragma(wxSTC_STRINGIFY(GCC warning msg)) value
        ^
<scratch space>:86:6: note: expanded from here
 GCC warning "wxSTC_INDICS_MASK is deprecated. Style byte indicators are no longer used."
     ^
gen/wxe_init.cpp:611:57: warning: wxSTC_INDIC2_MASK is deprecated. Style byte indicators are no longer used. [-W#pragma-messages]
    { WXE_ATOM_define, "wxSTC_INDIC2_MASK", rt.make_int(wxSTC_INDIC2_MASK) },
                                                        ^
/opt/homebrew/include/wx-3.2/wx/stc/stc.h:2491:27: note: expanded from macro 'wxSTC_INDIC2_MASK'
#define wxSTC_INDIC2_MASK wxSTC_DEPRECATED_MACRO_VALUE(0x80,\
                          ^
/opt/homebrew/include/wx-3.2/wx/stc/stc.h:2473:9: note: expanded from macro 'wxSTC_DEPRECATED_MACRO_VALUE'
        _Pragma(wxSTC_STRINGIFY(GCC warning msg)) value
        ^
<scratch space>:89:6: note: expanded from here
 GCC warning "wxSTC_INDIC2_MASK is deprecated. Style byte indicators are no longer used."
     ^
gen/wxe_init.cpp:612:57: warning: wxSTC_INDIC1_MASK is deprecated. Style byte indicators are no longer used. [-W#pragma-messages]
    { WXE_ATOM_define, "wxSTC_INDIC1_MASK", rt.make_int(wxSTC_INDIC1_MASK) },
                                                        ^
/opt/homebrew/include/wx-3.2/wx/stc/stc.h:2489:27: note: expanded from macro 'wxSTC_INDIC1_MASK'
#define wxSTC_INDIC1_MASK wxSTC_DEPRECATED_MACRO_VALUE(0x40,\
                          ^
/opt/homebrew/include/wx-3.2/wx/stc/stc.h:2473:9: note: expanded from macro 'wxSTC_DEPRECATED_MACRO_VALUE'
        _Pragma(wxSTC_STRINGIFY(GCC warning msg)) value
        ^
<scratch space>:92:6: note: expanded from here
 GCC warning "wxSTC_INDIC1_MASK is deprecated. Style byte indicators are no longer used."
     ^
gen/wxe_init.cpp:613:57: warning: wxSTC_INDIC0_MASK is deprecated. Style byte indicators are no longer used. [-W#pragma-messages]
    { WXE_ATOM_define, "wxSTC_INDIC0_MASK", rt.make_int(wxSTC_INDIC0_MASK) },
                                                        ^
/opt/homebrew/include/wx-3.2/wx/stc/stc.h:2487:27: note: expanded from macro 'wxSTC_INDIC0_MASK'
#define wxSTC_INDIC0_MASK wxSTC_DEPRECATED_MACRO_VALUE(0x20,\
                          ^
/opt/homebrew/include/wx-3.2/wx/stc/stc.h:2473:9: note: expanded from macro 'wxSTC_DEPRECATED_MACRO_VALUE'
        _Pragma(wxSTC_STRINGIFY(GCC warning msg)) value
        ^
<scratch space>:95:6: note: expanded from here
 GCC warning "wxSTC_INDIC0_MASK is deprecated. Style byte indicators are no longer used."
     ^
1 warning generated.
In file included from wxe_main.cpp:25:
In file included from ./wxe_impl.h:29:
In file included from /opt/homebrew/include/wx-3.2/wx/glcanvas.h:18:
In file included from /opt/homebrew/include/wx-3.2/wx/app.h:19:
In file included from /opt/homebrew/include/wx-3.2/wx/event.h:22:
In file included from /opt/homebrew/include/wx-3.2/wx/cursor.h:75:
/opt/homebrew/include/wx-3.2/wx/utils.h:749:35: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
    wxEventLoop* m_modalEventLoop = NULL;
                                  ^
1 warning generated.
In file included from wxe_impl.cpp:25:
In file included from /opt/homebrew/include/wx-3.2/wx/wx.h:24:
In file included from /opt/homebrew/include/wx-3.2/wx/event.h:22:
In file included from /opt/homebrew/include/wx-3.2/wx/cursor.h:75:
/opt/homebrew/include/wx-3.2/wx/utils.h:749:35: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
    wxEventLoop* m_modalEventLoop = NULL;
                                  ^
In file included from wxe_helpers.cpp:21:
In file included from /opt/homebrew/include/wx-3.2/wx/wx.h:24:
In file included from /opt/homebrew/include/wx-3.2/wx/event.h:22:
In file included from /opt/homebrew/include/wx-3.2/wx/cursor.h:75:
/opt/homebrew/include/wx-3.2/wx/utils.h:749:35: warning: in-class initialization of non-static data member is a C++11 extension [-Wc++11-extensions]
    wxEventLoop* m_modalEventLoop = NULL;
                                  ^
1 warning generated.
1 warning generated.
1 warning generated.
1 warning generated.
5 warnings generated.
make[3]: Leaving directory '/Users/cd/.asdf/plugins/erlang/kerl-home/builds/asdf_26.0.2/otp_src_26.0.2/lib/wx/c_src'
make[2]: *** [/Users/cd/.asdf/plugins/erlang/kerl-home/builds/asdf_26.0.2/otp_src_26.0.2/make/otp_subdir.mk:29: opt] Error 2
make[2]: Leaving directory '/Users/cd/.asdf/plugins/erlang/kerl-home/builds/asdf_26.0.2/otp_src_26.0.2/lib/wx'
make[1]: *** [/Users/cd/.asdf/plugins/erlang/kerl-home/builds/asdf_26.0.2/otp_src_26.0.2/make/otp_subdir.mk:29: opt] Error 2
make[1]: Leaving directory '/Users/cd/.asdf/plugins/erlang/kerl-home/builds/asdf_26.0.2/otp_src_26.0.2/lib'
make: *** [Makefile:518: libs] Error 2

This seems related to WX. The fastest solution is to add a flag to not build WX if you will not use it, by default it doesn’t build if it can’t locate WX, otherwise take a look at issues like this one: Unable to compile with wx on mac os x mojave · Issue #95 · asdf-vm/asdf-erlang · GitHub

2 Likes

Thank you both! KERL_CONFIGURE_OPTIONS="--without-wx" asdf install solved the issue.

3 Likes

As documented in the readme, the real fix is probably brew install wxwidgets.