Unfortunately the building of latest gcl27 (master) on macOS 14 and macOS 15 are
both failed at the following compilation error: (it looks like an easy type
conversion issue?)

:info:build     /usr/bin/clang -DHAVE_CONFIG_H -I. -I./h  -I h -I
/usr/include/tirpc -I/opt/local/include
-isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk  -pipe -Os
-isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk -arch x86_64
-fsigned-char -pipe -fcommon -fno-builtin-malloc -fno-builtin-free -fno-PIE
-fno-pie -fno-PIC -fno-pic -std=gnu17 -Wall -Wno-builtin-requires-header
-Wno-empty-body -Wno-self-assign -Wno-unused-but-set-variable
-D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -fbracket-depth=512
-Wno-incomplete-setjmp-declaration -m64   -I/opt/local/include
-isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk -O3
-fomit-frame-pointer -I o  -MT o/usig.o -MD -MP -MF $depbase.Tpo -c -o o/usig.o
o/usig.c &&\
:info:build     mv -f $depbase.Tpo $depbase.Po
:info:build o/usig.c:237:36: error: incompatible pointer to integer conversion
initializing 'fixnum' (aka 'long') with an expression of type 'object' (aka
'union lispunion *') [-Wint-conversion]
:info:build   237 |
ifuncall3(sSfloating_point_error,FPE_CODE(i,v),FPE_ADDR(i,v),FPE_CTXT(v));
:info:build       |                                    ^~~~~~~~~~~~~
:info:build ./h/config.h:135:25: note: expanded from macro 'FPE_CODE'
:info:build   135 | #define FPE_CODE(i_,v_) make_fixnum(FFN(fSfpe_code)(*(fixnum
*)&UC(v_)->uc_mcontext->__fs.__fpu_fsw,UC(v_)->uc_mcontext->__fs.__fpu_mxcsr))
:info:build       |
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:info:build ./h/../h/fixnum.h:36:44: note: expanded from macro 'make_fixnum'
:info:build    36 | #define make_fixnum(a_)  ({register fixnum _q1=(a_);register
object _q3;\
:info:build       |                                            ^   ~~~~
:info:build 1 error generated.
:info:build make[1]: *** [o/usig.o] Error 1
:info:build make[1]: Leaving directory
`/opt/local/var/macports/build/_Users_binghe_Lisp_macports-gcl_lang_gcl27/gcl27/work/gcl-2.7.1'

Note that on macOS 13 the default C compiler is Apple clang 14.0.0 (which is
successfully in building GCL 2.7), while on both macOS 14 and 15 the compiler is
Apple clang 16.0.0. I believe the above error will show up too if the building
process on ARM64 macOS can reach this far.

--Chun

On 28/04/25 06:09, Camm Maguire wrote:
> Greetings!  I've pushed a --disable-libboot configure option to master
> you might want to try out.  Still looking for the right incantation to
> make it work as it does elsewhere, but this requires deep knowledge for
> the mac.
> 
> Take care,
> 
> "Chun Tian (binghe)" <binghe.l...@gmail.com> writes:
> 
>> Greetings,
>>
>> I just tried building gcl27 in my macOS 12 VM, and it failed showing the same
>> issues as in macOS 13:
>>
>> :info:build echo "(system:save-system \"unixport/gcl0\")" | cat
>> unixport/cinit.lisp - | unixport/saved_pre_gcl
>> :info:build
>> dlopen(/opt/local/var/macports/build/_Users_binghe_Lisp_macports-gcl_lang_gcl27/gcl27/work/gcl-2.7.1/unixport/libboot.so,
>> 0x0009): symbol not found in flat namespace (_Cnil_body)
>> :info:build dlsym(0x0, gcl_init_boot): invalid handle
>> :info:build Segmentation violation: c stack ok:signalling errorSegmentation
>> violation: c stack ok:signalling error
>> :info:build Unrecoverable error: Segmentation violation..
>> :info:build /bin/sh: line 1: 55292 Done                    echo
>> "(system:save-system \"unixport/gcl0\")"
>> :info:build      55293                       | cat unixport/cinit.lisp -
>> :info:build      55294 Abort trap: 6           | unixport/saved_pre_gcl
>> :info:build make[1]: *** [unixport/gcl0] Error 134
>>
>> Note that, I have tried to use either Apple clang 13 and MacPorts GCC 13, but
>> the error outputs are identical. Therefore I think the above issue with
>> libboot.so is more like an issue with Apple's new linker, which even the
>> MacPorts GCC must also use.
>>
>> --Chun
>>
>> On 25/04/25 02:15, Camm Maguire wrote:
>>> Greetings, and once again, thank you so very much for being the 'point
>>> of the spear' with macports!
>>>
>>> Please enlighten me a little regarding the pull request process.  My
>>> crude understanding is that we build fine on macos 10 (catalina), you in
>>> addition have tested successfully on macos 11 (Big sur) as noted in your
>>> request, and we fail at the moment on 13,14,15.  What about 12?  In
>>> general, where can I view successful build logs?
>>>
>>> The reason I ask is to isolate an apparent binary library api
>>> incompatibility change between two apple gcc versions (e.g. the one on
>>> 12 and the one on 13).  The library in question is built to dynamically
>>> resolve undefined symbols in the running executable, which (to my
>>> understanding) works fine at least on 10,11, and 12.  I suspect there
>>> were some 'namespace' changes which affect the search algorithm for
>>> undefined symbols, and this could be addressed by adding an appropriate
>>> linker flag to the creation rule of libboot.so.
>>>
>>> Thankfully, even if this fails, it is only a nuisance.  I'm working a
>>> little on a cygwin port, and there such libraries are not supported at
>>> all.  We can easily compile in this library at the cost of wasted space
>>> in the final executable if need be.
>>>
>>> Then the general question -- I assume this is all testing the installed
>>> apple gcc/clang/llvm.  What about using the macports gcc?  We should
>>> support both, but the latter would seem to be closer to the widely
>>> tested Linux gcc as a start.
>>>
>>> For any interested, this latest release has made a start on a systematic
>>> approach to bootstrapping common lisp.  A long time ago there was a
>>> thought to write everything in C, but this is very cumbersome and
>>> limited technically.  Then a '.d' file syntax was invented as a crude
>>> bridge, etc.  Now we have what will be a shrinking C core implementing
>>> a interpreter, maybe eventually just funcall/apply, eval, and
>>> macroexpand.  We load everything else in .lsp and interpret the
>>> compilation to safety level3.  Then we use that compiler to compile to
>>> (default) safety level 0, etc.  This is akin to the staged process
>>> followed by gcc.  What we have now is very preliminary in this regard.
>>> It does have the 'dogfood' detection benefits of exercising everything
>>> at all safety levels and catching errors quickly.  There is some
>>> assurance in a successful build that the code is at least logically
>>> correct.  
>>>
>>> libboot.so is code that I need to run the early interpreter which itself
>>> cannot (yet) be interpreted, but which is defined later elsewhere and
>>> does not need to appear in the final image.  Hence a shared library
>>> opened by dlopen only in the raw image and pre image stages.
>>>
>>> In any case, the answers to the above questions will help us figure out
>>> how to handle this.
>>>
>>> Take care,
>>>
>>> "Chun Tian (binghe)" <binghe.l...@gmail.com> writes:
>>>
>>>> Greetings,
>>>>
>>>> Finally I have a "working" Portfile (in attach) for gcl27, tested on 
>>>> MacPorts'
>>>> GitHub CI workflow, including macOS 13 x86, macOS 14 arm64 and macOS 15 
>>>> arm64.
>>>>
>>>> On macOS 13 x86, you can find the building logs from the following link (I 
>>>> put a
>>>> copy in attach in case the link is no more available in the future).
>>>>
>>>> https://github.com/binghe/macports-ports/actions/runs/14638869916/job/41076302619
>>>>
>>>> The building log shows that "unixport/saved_pre_gcl" has been built 
>>>> successfully
>>>> but then it follows a segmentation violation:
>>>>
>>>> echo "(system:save-system \"unixport/gcl0\")" | cat unixport/cinit.lisp - |
>>>> unixport/saved_pre_gcl
>>>>
>>>> dlopen(/opt/local/var/macports/build/_Users_runner_work_macports-ports_macports-ports_ports_lang_gcl27/gcl27/work/gcl-2.7.1/unixport/libboot.so,
>>>> 0x0009): symbol not found in flat namespace '_Cnil_body'
>>>>   dlsym(0x0, gcl_init_boot): invalid handle
>>>>   Segmentation violation: c stack ok:signalling errorSegmentation 
>>>> violation: c
>>>> stack ok:signalling error
>>>>   Unrecoverable error: Segmentation violation..
>>>>   /bin/sh: line 1: 12984 Done                    echo "(system:save-system
>>>> \"unixport/gcl0\")"
>>>>        12985                       | cat unixport/cinit.lisp -
>>>>        12986 Abort trap: 6           | unixport/saved_pre_gcl
>>>>   make[1]: *** [unixport/gcl0] Error 134
>>>>
>>>> Is there anything we can learn just by watch this log?
>>>>
>>>> --Chun
>>>>
>>>> On 24/04/25 08:02, Camm Maguire wrote:
>>>>> Greetings!  Just a quick note that we've recently verified that GCL self
>>>>> builds, builds ACL2, and runs its regression without error (16 parallel
>>>>> processes taking several hours), using the apple supplied gcc.  When we
>>>>> get a macports package, I imagine we will use the macports gcc, but I
>>>>> expect the results to be the same.
>>>>>
>>>>> Take care,
>>>>>
>>>>
>>>>
>>>>
>>>
>>
> 

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to