[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Trying to build FriCAS with GCL-2.7.0 (step-by-step)
From: |
Grégory Vanuxem |
Subject: |
Trying to build FriCAS with GCL-2.7.0 (step-by-step) |
Date: |
Thu, 29 Feb 2024 11:20:40 +0100 |
Hello,
I am giving a try to build FriCAS with gcl27 2.7.0-18 from debian.org
(amd64 arch). And first, sorry for this long email, I try to be as
precise as possible.
So far, I encountered the following issues:
Here is an offending piece of code:
=============src/lisp/fricas-lisp.lisp=====================
;; GCL may pass strings by value. 'sock_get_string_buf' should fill
;; string with data read from connection, therefore needs address of
;; actual string buffer. We use 'sock_get_string_buf_wrapper' to
;; resolve the problem
(SI::clines "int sock_get_string_buf_wrapper(int i, object x, int j)"
"{ if (type_of(x)!=t_string) FEwrong_type_argument(sLstring,x);"
" if (x->st.st_fillp<j)"
" FEerror(\"string too small in sock_get_string_buf_wrapper\",0);"
" return sock_get_string_buf(i, x->st.st_self, j); }")
==================================================
Which then produces during the compilation phase:
----------------------------------------------------------------------------------------
In file included from /home/greg/Git/jlfricas/src/lisp/fricas-lisp.c:2:
/usr/lib/gcl-2.7.0/unixport/../h/cmpinclude.h:87: note: macro
"FEerror" defined here
87 | #define FEerror(a,b,c)
Icall_gen_error_handler_noreturn(((object)&Cnil_body),null_string,sLerror,null_string,4,sKformat_control,make_simple_string(a),sKformat_arguments,list(b,c))
|
/home/greg/Git/jlfricas/src/lisp/fricas-lisp.c:2159:5: error:
‘FEerror’ undeclared (first use in this function); did you mean
‘sLerror’?
2159 | FEerror("string too small in sock_get_string_buf_wrapper",0);
| ^~~~~~~
| sLerror
/home/greg/Git/jlfricas/src/lisp/fricas-lisp.c:2160:10: warning:
implicit declaration of function ‘sock_get_string_buf’; did you mean
‘sock_get_string_buf_wrapper’? [-Wimplicit-function-declaration]
2160 | return sock_get_string_buf(i, x->st.st_self, j); }
| ^~~~~~~~~~~~~~~~~~~
| sock_get_string_buf_wrapper
-------------------------------------------------------------------------------------------
As you can see here, the 'FEerror' macro requires three arguments but
two previously. Maybe a backward compatible way of handling this is
available? That is, something compatible with GCL 2.6.14 and 2.7.0,
this snippet compiles smoothly with gcl-2.6.14-4 from debian.org.
I commented out these checks to go further.
At a stage a temporary image is build using:
==================================================
>echo '(compiler::link nil "prelisp" ' \
' (format nil "(progn (let ((SI::*load-path*' \
' (cons ~S SI::*load-path*))' \
' (si::*load-types* ~S))' \
' (compiler::emit-fn t))' \
' (when (fboundp (quote si::sgc-on))' \
' (si::sgc-on nil))' \
' (setq compiler::*default-system-p* t))' \
' (setq compiler::*default-large-memory-model-p* t))"' \
' si::*system-directory* (quote (list ".lsp")))' \
' "/home/greg/Git/jlfricas/src/lib/bsdsignal.o
/home/greg/Git/jlfricas/src/lib/cfuns-c.o
/home/greg/Git/jlfricas/src/lib/sockio-c.o ")' \
| gcl27
===================================================
And returns
----------------------------------------------------------------------------------------
GCL (GNU Common Lisp) 2.7.0 Thu Oct 26 12:00:01 PM EDT 2023 ANSI
git: Version_2_7_0pre21
Source License: LGPL(gcl,gmp), GPL(unexec,bfd,xgcl)
Binary License: GPL due to GPL'ed components: (XGCL UNEXEC)
Modifications of this banner must retain notice of a compatible license
Dedicated to the memory of W. Schelter
Use (help) to get some basic information on how to use GCL.
Temporary directory for compiler files set to /tmp/
>GCL (GNU Common Lisp) April 1994 4198612 pages
Building symbol table for /home/greg/Git/jlfricas/src/lisp/raw_prelisp ..
loading /usr/lib/gcl-2.7.0/unixport/../lsp/gcl_export.lsp
loading /usr/lib/gcl-2.7.0/unixport/../lsp/gcl_defmacro.lsp
loading /usr/lib/gcl-2.7.0/unixport/../lsp/gcl_evalmacros.lsp
loading /usr/lib/gcl-2.7.0/unixport/../lsp/gcl_top.lsp
loading /usr/lib/gcl-2.7.0/unixport/../lsp/gcl_autoload.lsp
>
NIL
>
MAKE-PACKAGE
-- [SNIP] --
SYSTEM>
(:RAW-IMAGE
:ANSI-CL :COMMON-LISP :LARGE-MEMORY-MODEL :DYNAMIC-EXTENT :INTDIV
:64BIT :C99 :GNU-LD :XGCL :UNEXEC :NATIVE-RELOC :EDITLINE
:TRUNCATE_USE_C :CLX-LITTLE-ENDIAN :BSD :GNU :LINUX :X86_64 :SGC
:IEEE-FLOATING-POINT :UNIX :GMP :GCL :AKCL :COMMON :KCL)
SYSTEM>Initializing gcl_s.o
Initializing gcl_sf.o
Initializing gcl_rm.o
Initializing gcl_dl.o
Initializing gcl_fle.o
Initializing gcl_defmacro.o
Initializing gcl_hash.o
Initializing gcl_evalmacros.o
Initializing gcl_module.o
Initializing gcl_predlib.o
Initializing gcl_deftype.o
-- [SNIP] --
CONDITIONS>
(:PCL-STRUCTURES
:PORTABLE-COMMONLOOPS :PCL :DEFPACKAGE :SDEBUG :SETF :ANSI-CL
:COMMON-LISP :LARGE-MEMORY-MODEL :DYNAMIC-EXTENT :INTDIV :64BIT :C99
:GNU-LD :XGCL :UNEXEC :NATIVE-RELOC :EDITLINE :TRUNCATE_USE_C
:CLX-LITTLE-ENDIAN :BSD :GNU :LINUX :X86_64 :SGC :IEEE-FLOATING-POINT
:UNIX :GMP :GCL :AKCL :COMMON :KCL)
CONDITIONS>
#<"SYSTEM" package>
SYSTEM>
T
SYSTEM>
#<function 000000000231d310>
SYSTEM>
NIL
SYSTEM>
""
SYSTEM>
NIL
SYSTEM>;; Loading #P"/usr/lib/gcl-2.7.0/lsp/sys-proclaim.lisp"
;; Finished loading #P"/usr/lib/gcl-2.7.0/lsp/sys-proclaim.lisp"
;; Loading #P"/usr/lib/gcl-2.7.0/cmpnew/sys-proclaim.lisp"
;; Finished loading #P"/usr/lib/gcl-2.7.0/cmpnew/sys-proclaim.lisp"
;; Loading #P"/usr/lib/gcl-2.7.0/xgcl-2/sys-proclaim.lisp"
;; Finished loading #P"/usr/lib/gcl-2.7.0/xgcl-2/sys-proclaim.lisp"
;; Loading #P"/usr/lib/gcl-2.7.0/pcl/sys-proclaim.lisp"
;; Finished loading #P"/usr/lib/gcl-2.7.0/pcl/sys-proclaim.lisp"
;; Loading #P"/usr/lib/gcl-2.7.0/clcs/sys-proclaim.lisp"
;; Finished loading #P"/usr/lib/gcl-2.7.0/clcs/sys-proclaim.lisp"
;; Loading #P"/usr/lib/gcl-2.7.0/gcl-tk/tk-package.lsp"
Error:
Fast links are on: do (si::use-fast-links nil) for debugging
Signalled by LOAD.
Condition in LOAD [or a callee]: INTERNAL-SIMPLE-FILE-ERROR: File
error on #P"/usr/lib/gcl-2.7.0/gcl-tk/tk-package.lsp": File does not
exist.
Broken at LOAD. Type :H for Help.
1 Return to top level.
===============================================
So here "tk-package.lsp" is required by GCL even if it is not used by
FriCAS as far as I know. So, what about adding gcl27-tk as a
"Suggests" in the Debian package, or maybe better as "Recommended"? Or
even better, is "tk-package.lsp" really required here? Wouldn't it be
possible to get rid of this to build a GCL image?
So, I installed gcl27-tk, and the build process went further, more
precisely to the core of FriCAS, algebra files. There it shocks on
something I did not understand I can not find the piece of code that
generates the following error:
----------------------------------------------------------------------------------
doing stamp-db
cp: './boo_db.input' et './boo_db.input' identify the same file
Correctable error:
Fast links are on: do (si::use-fast-links nil) for debugging
Signalled by SETQ.
If continued: Do (setq si::*path* "pathname") for path to use then :r
to continue
SIMPLE-ERROR: Environment variable FRICAS is not valid!
Broken at SYSTEM::GCL-TOP-LEVEL.
1 (abort) Return to debug level 3.
2 Return to debug level 2.
3 Return to debug level 1.
4 (continue) Do (setq si::*path* "pathname") for path to use then
:r to continue
5 Return to top level.
BOOT>>>>>>
Correctable error:
Fast links are on: do (si::use-fast-links nil) for debugging
Signalled by BLOCK.
If continued: Do (setq si::*path* "pathname") for path to use then :r
to continue
Condition in BLOCK [or a callee]: INTERNAL-SIMPLE-READER-ERROR: Stream
error on stream #<synonym stream to *TERMINAL-IO*>: Right paren found
with no left.
Broken at SYSTEM::GCL-TOP-LEVEL.
1 (abort) Return to debug level 4.
2 Return to debug level 3.
3 Return to debug level 2.
4 Return to debug level 1.
5 (continue) Do (setq si::*path* "pathname") for path to use then
:r to continue
-----------------------------------------------------------------------------------
etc.
It does not seem related to FriCAS, but it was late this night, I
stopped here, and will look deeper into this last issue later. I guess
solving the two previous issues, and this one will allow to _build_
FriCAS.
Regards,
- Greg
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Trying to build FriCAS with GCL-2.7.0 (step-by-step),
Grégory Vanuxem <=