Update to support version 5.3+?
Latest version on Fedora is 5.3.1, 5.4.2 upstream. Could this get updated to support some newer versions? Thanks.
will try to get to it at some point soon, feel free to remind me about it if it takes too long.
pushed something to the 5.4.3 branch, let me know if it works with your code and library versions.
pushed something to the 5.4.3 branch, let me know if it works with your code and library versions.
Not working yet, I get a file compilation error when compiling low-level.lisp. The ecase expression doesn't seem to have a clause for 5.3+, maybe relevant? On my Fedora box, assimp version returns 5.3.
Lisp Session Log
CL-USER> (ql:quickload :classimp :verbose t)
To load "classimp":
Load 1 ASDF system:
classimp
; Loading "classimp"
; compiling file "/home/zyd/src/third-party/classimp/low-level.lisp" (written 20 SEP 2024 02:55:32 PM):
........
; file: /home/zyd/src/third-party/classimp/low-level.lisp
; in: DEFCSTRUCT/V AI-SCENE
; (%OPEN-ASSET-IMPORT-LIBRARY::DEFCSTRUCT/V %OPEN-ASSET-IMPORT-LIBRARY:AI-SCENE
; (%OPEN-ASSET-IMPORT-LIBRARY:M-FLAGS :UNSIGNED-INT)
; (%OPEN-ASSET-IMPORT-LIBRARY:M-ROOT-NODE
; (:POINTER (:STRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-NODE)))
; (%OPEN-ASSET-IMPORT-LIBRARY:M-NUM-MESHES :UNSIGNED-INT)
; (%OPEN-ASSET-IMPORT-LIBRARY:M-MESHES
; (:POINTER (:POINTER (:STRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-MESH))))
; (%OPEN-ASSET-IMPORT-LIBRARY:M-NUM-MATERIALS :UNSIGNED-INT)
; (%OPEN-ASSET-IMPORT-LIBRARY:M-MATERIALS
; (:POINTER (:POINTER (:STRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-MATERIAL))))
; (%OPEN-ASSET-IMPORT-LIBRARY:M-NUM-ANIMATIONS :UNSIGNED-INT)
; (%OPEN-ASSET-IMPORT-LIBRARY:M-ANIMATIONS
; (:POINTER (:POINTER (:STRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-ANIMATION))))
; (%OPEN-ASSET-IMPORT-LIBRARY:M-NUM-TEXTURES :UNSIGNED-INT)
; (%OPEN-ASSET-IMPORT-LIBRARY:M-TEXTURES
; (:POINTER (:POINTER (:STRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-TEXTURE))))
; ...)
;
; caught COMMON-LISP:ERROR:
; (during macroexpansion of (DEFCSTRUCT/V AI-SCENE
; ...))
; :5.3+ fell through COMMON-LISP:ECASE expression.
; Wanted one of (:|3.0-3.3| :|3.0-4.1| :|3.0-5.0| :|4.0-5.4.2| :3.0+ :3.1+ :3.2+
; :3.3+ :>3.3 :4.0+ :4.1+ :5.0+ :5.1+ :5.2+ :>5.2 :5.3.0+ :5.4.0+
; :5.4.3+ :>5.4).
; in: DEFCFUN ("aiImportFile" AI-IMPORT-FILE)
; (CFFI:DEFCFUN ("aiImportFile" %OPEN-ASSET-IMPORT-LIBRARY:AI-IMPORT-FILE)
; (:POINTER (:STRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-SCENE))
; (%OPEN-ASSET-IMPORT-LIBRARY::P-FILE :STRING)
; (%OPEN-ASSET-IMPORT-LIBRARY::P-FLAGS
; %OPEN-ASSET-IMPORT-LIBRARY:AI-POST-PROCESS-STEPS))
;
; caught COMMON-LISP:ERROR:
; (during macroexpansion of (DEFCFUN ("aiImportFile" AI-IMPORT-FILE)
; ...))
; Unknown CFFI type (:STRUCT AI-SCENE)
; in: DEFCSTRUCT AI-UV-TRANSFORM
; (CFFI:DEFCSTRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-UV-TRANSFORM
; (%OPEN-ASSET-IMPORT-LIBRARY:M-TRANSLATION
; (:STRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-VECTOR-2D))
; (%OPEN-ASSET-IMPORT-LIBRARY:M-SCALING
; (:STRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-VECTOR-2D))
; (%OPEN-ASSET-IMPORT-LIBRARY:M-ROTATION %OPEN-ASSET-IMPORT-LIBRARY:AI-REAL))
; --> DEFCLASS PROGN
; ==>
; (LET ()
; (SB-PCL::LOAD-DEFCLASS '%OPEN-ASSET-IMPORT-LIBRARY::AI-UV-TRANSFORM-TCLASS
; 'STANDARD-CLASS
; '(CFFI::FOREIGN-STRUCT-TYPE
; CFFI::TRANSLATABLE-FOREIGN-TYPE)
; (LIST) (LIST :DIRECT-DEFAULT-INITARGS NIL) 'NIL 'NIL
; 'NIL (SB-C:SOURCE-LOCATION)))
;
; note: deleting unused function
; "top level form"
; ==>
; (CFFI::NOTICE-FOREIGN-STRUCT-DEFINITION
; '%OPEN-ASSET-IMPORT-LIBRARY:AI-UV-TRANSFORM
; '(:CLASS %OPEN-ASSET-IMPORT-LIBRARY::AI-UV-TRANSFORM-TCLASS)
; '((%OPEN-ASSET-IMPORT-LIBRARY:M-TRANSLATION
; (:STRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-VECTOR-2D))
; (%OPEN-ASSET-IMPORT-LIBRARY:M-SCALING
; (:STRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-VECTOR-2D))
; (%OPEN-ASSET-IMPORT-LIBRARY:M-ROTATION
; %OPEN-ASSET-IMPORT-LIBRARY:AI-REAL)))
;
; note: deleting unused function
; "top level form"
; --> CFFI:DEFINE-PARSE-METHOD EVAL-WHEN SETF
; ==>
; (LET* ((#:NEW0
; (LAMBDA ()
; (CFFI::PARSE-DEPRECATED-STRUCT-TYPE
; '%OPEN-ASSET-IMPORT-LIBRARY:AI-UV-TRANSFORM :STRUCT))))
; (FUNCALL #'(SETF CFFI::FIND-TYPE-PARSER) #:NEW0
; '%OPEN-ASSET-IMPORT-LIBRARY:AI-UV-TRANSFORM))
;
; note: deleting unused function
; "top level form"
; --> CFFI:DEFINE-PARSE-METHOD EVAL-WHEN
; ==>
; '%OPEN-ASSET-IMPORT-LIBRARY:AI-UV-TRANSFORM
;
; note: deleting unused function
; "top level form"
; ==>
; '(:STRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-UV-TRANSFORM)
;
; note: deleting unused function
; "top level form"
; in: DEFCSTRUCT AI-MEMORY-INFO
; (CFFI:DEFCSTRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-MEMORY-INFO
; (%OPEN-ASSET-IMPORT-LIBRARY:TEXTURES :UNSIGNED-INT)
; (%OPEN-ASSET-IMPORT-LIBRARY:MATERIALS :UNSIGNED-INT)
; (%OPEN-ASSET-IMPORT-LIBRARY:MESHES :UNSIGNED-INT)
; (%OPEN-ASSET-IMPORT-LIBRARY:NODES :UNSIGNED-INT)
; (%OPEN-ASSET-IMPORT-LIBRARY:ANIMATIONS :UNSIGNED-INT)
; (%OPEN-ASSET-IMPORT-LIBRARY:CAMERAS :UNSIGNED-INT)
; (%OPEN-ASSET-IMPORT-LIBRARY:LIGHTS :UNSIGNED-INT)
; (%OPEN-ASSET-IMPORT-LIBRARY:TOTAL :UNSIGNED-INT))
; --> DEFCLASS PROGN
; ==>
; (LET ()
; (SB-PCL::LOAD-DEFCLASS '%OPEN-ASSET-IMPORT-LIBRARY::AI-MEMORY-INFO-TCLASS
; 'STANDARD-CLASS
; '(CFFI::FOREIGN-STRUCT-TYPE
; CFFI::TRANSLATABLE-FOREIGN-TYPE)
; (LIST) (LIST :DIRECT-DEFAULT-INITARGS NIL) 'NIL 'NIL
; 'NIL (SB-C:SOURCE-LOCATION)))
;
; note: deleting unused function
; "top level form"
; ==>
; (CFFI::NOTICE-FOREIGN-STRUCT-DEFINITION
; '%OPEN-ASSET-IMPORT-LIBRARY:AI-MEMORY-INFO
; '(:CLASS %OPEN-ASSET-IMPORT-LIBRARY::AI-MEMORY-INFO-TCLASS)
; '((%OPEN-ASSET-IMPORT-LIBRARY:TEXTURES :UNSIGNED-INT)
; (%OPEN-ASSET-IMPORT-LIBRARY:MATERIALS :UNSIGNED-INT)
; (%OPEN-ASSET-IMPORT-LIBRARY:MESHES :UNSIGNED-INT)
; (%OPEN-ASSET-IMPORT-LIBRARY:NODES :UNSIGNED-INT)
; (%OPEN-ASSET-IMPORT-LIBRARY:ANIMATIONS :UNSIGNED-INT)
; (%OPEN-ASSET-IMPORT-LIBRARY:CAMERAS :UNSIGNED-INT)
; (%OPEN-ASSET-IMPORT-LIBRARY:LIGHTS :UNSIGNED-INT)
; (%OPEN-ASSET-IMPORT-LIBRARY:TOTAL :UNSIGNED-INT)))
;
; note: deleting unused function
; "top level form"
; --> CFFI:DEFINE-PARSE-METHOD EVAL-WHEN SETF
; ==>
; (LET* ((#:NEW0
; (LAMBDA ()
; (CFFI::PARSE-DEPRECATED-STRUCT-TYPE
; '%OPEN-ASSET-IMPORT-LIBRARY:AI-MEMORY-INFO :STRUCT))))
; (FUNCALL #'(SETF CFFI::FIND-TYPE-PARSER) #:NEW0
; '%OPEN-ASSET-IMPORT-LIBRARY:AI-MEMORY-INFO))
;
; note: deleting unused function
; "top level form"
; --> CFFI:DEFINE-PARSE-METHOD EVAL-WHEN
; ==>
; '%OPEN-ASSET-IMPORT-LIBRARY:AI-MEMORY-INFO
;
; note: deleting unused function
; "top level form"
; ==>
; '(:STRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-MEMORY-INFO)
;
; note: deleting unused function
; "top level form"
; in: DEFCFUN ("aiGetVersionRevision" AI-GET-VERSION-REVISION)
; (CFFI:DEFCFUN ("aiGetVersionRevision"
; %OPEN-ASSET-IMPORT-LIBRARY:AI-GET-VERSION-REVISION)
; :UNSIGNED-INT)
; --> DEFUN PROGN
; ==>
; (SB-IMPL::%DEFUN '%OPEN-ASSET-IMPORT-LIBRARY:AI-GET-VERSION-REVISION
; (SB-INT:NAMED-LAMBDA %OPEN-ASSET-IMPORT-LIBRARY:AI-GET-VERSION-REVISION
; NIL
; (DECLARE (SB-C::TOP-LEVEL-FORM))
; (BLOCK %OPEN-ASSET-IMPORT-LIBRARY:AI-GET-VERSION-REVISION
; (CFFI-SYS:%FOREIGN-FUNCALL "aiGetVersionRevision"
; (:UNSIGNED-INT) :CONVENTION
; :CDECL :LIBRARY :DEFAULT))))
;
; note: deleting unused function
; "top level form"
; in: DEFCFUN ("aiGetMemoryRequirements" AI-GET-MEMORY-REQUIREMENTS)
; (CFFI:DEFCFUN ("aiGetMemoryRequirements"
; %OPEN-ASSET-IMPORT-LIBRARY:AI-GET-MEMORY-REQUIREMENTS)
; :VOID
; (%OPEN-ASSET-IMPORT-LIBRARY::P-IN
; (:POINTER (:STRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-SCENE)))
; (%OPEN-ASSET-IMPORT-LIBRARY::IN
; (:POINTER (:STRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-MEMORY-INFO))))
;
; caught COMMON-LISP:ERROR:
; (during macroexpansion of (DEFCFUN ("aiGetMemoryRequirements" AI-GET-MEMORY-REQUIREMENTS)
; ...))
; Unknown CFFI type (:STRUCT AI-SCENE)
; in: DEFCFUN ("aiGetEmbeddedTexture" AI-GET-EMBEDDED-TEXTURE)
; (CFFI:DEFCFUN ("aiGetEmbeddedTexture"
; %OPEN-ASSET-IMPORT-LIBRARY::AI-GET-EMBEDDED-TEXTURE)
; (:POINTER (:STRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-TEXTURE))
; (%OPEN-ASSET-IMPORT-LIBRARY::P-IN
; (:POINTER (:STRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-SCENE)))
; (%OPEN-ASSET-IMPORT-LIBRARY::FILENAME :STRING))
;
; caught COMMON-LISP:ERROR:
; (during macroexpansion of (DEFCFUN ("aiGetEmbeddedTexture" AI-GET-EMBEDDED-TEXTURE)
; ...))
; Unknown CFFI type (:STRUCT AI-SCENE)
.
; in: DEFCFUN ("aiImportFileEx" AI-IMPORT-FILE-EX)
; (CFFI:DEFCFUN ("aiImportFileEx" %OPEN-ASSET-IMPORT-LIBRARY:AI-IMPORT-FILE-EX)
; (:POINTER (:STRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-SCENE))
; (%OPEN-ASSET-IMPORT-LIBRARY::P-FILE :STRING)
; (%OPEN-ASSET-IMPORT-LIBRARY::P-FLAGS
; %OPEN-ASSET-IMPORT-LIBRARY:AI-POST-PROCESS-STEPS)
; (%OPEN-ASSET-IMPORT-LIBRARY::P-FS
; (:POINTER (:STRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-FILE-IO))))
;
; caught COMMON-LISP:ERROR:
; (during macroexpansion of (DEFCFUN ("aiImportFileEx" AI-IMPORT-FILE-EX)
; ...))
; Unknown CFFI type (:STRUCT AI-SCENE)
; in:
; DEFCFUN ("aiImportFileExWithProperties" AI-IMPORT-FILE-EX-WITH-PROPERTIES)
; (CFFI:DEFCFUN ("aiImportFileExWithProperties"
; %OPEN-ASSET-IMPORT-LIBRARY:AI-IMPORT-FILE-EX-WITH-PROPERTIES)
; (:POINTER (:STRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-SCENE))
; (%OPEN-ASSET-IMPORT-LIBRARY::P-FILE :STRING)
; (%OPEN-ASSET-IMPORT-LIBRARY::P-FLAGS
; %OPEN-ASSET-IMPORT-LIBRARY:AI-POST-PROCESS-STEPS)
; (%OPEN-ASSET-IMPORT-LIBRARY::P-FS
; (:POINTER (:STRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-FILE-IO)))
; (%OPEN-ASSET-IMPORT-LIBRARY::P-PROPS (:POINTER)))
;
; caught COMMON-LISP:ERROR:
; (during macroexpansion of (DEFCFUN ("aiImportFileExWithProperties" AI-IMPORT-FILE-EX-WITH-PROPERTIES)
; ...))
; Unknown CFFI type (:STRUCT AI-SCENE)
; in:
; DEFCFUN ("aiImportFileFromMemoryWithProperties"
; AI-IMPORT-FILE-FROM-MEMORY-WITH-PROPERTIES)
; (CFFI:DEFCFUN ("aiImportFileFromMemoryWithProperties"
; %OPEN-ASSET-IMPORT-LIBRARY:AI-IMPORT-FILE-FROM-MEMORY-WITH-PROPERTIES)
; (:POINTER (:STRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-SCENE))
; (%OPEN-ASSET-IMPORT-LIBRARY::P-BUFFER :POINTER)
; (%OPEN-ASSET-IMPORT-LIBRARY::P-LENGTH :UNSIGNED-INT)
; (%OPEN-ASSET-IMPORT-LIBRARY::P-FLAGS
; %OPEN-ASSET-IMPORT-LIBRARY:AI-POST-PROCESS-STEPS)
; (%OPEN-ASSET-IMPORT-LIBRARY::P-HINT :STRING)
; (%OPEN-ASSET-IMPORT-LIBRARY::P-PROPS :POINTER))
;
; caught COMMON-LISP:ERROR:
; (during macroexpansion of (DEFCFUN ("aiImportFileFromMemoryWithProperties"
; AI-IMPORT-FILE-FROM-MEMORY-WITH-PROPERTIES)
; ...))
; Unknown CFFI type (:STRUCT AI-SCENE)
.
; in: DEFCFUN ("aiReleaseImport" AI-RELEASE-IMPORT)
; (CFFI:DEFCFUN ("aiReleaseImport" %OPEN-ASSET-IMPORT-LIBRARY:AI-RELEASE-IMPORT)
; :VOID
; (%OPEN-ASSET-IMPORT-LIBRARY::P-SCENE
; (:POINTER (:STRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-SCENE))))
;
; caught COMMON-LISP:ERROR:
; (during macroexpansion of (DEFCFUN ("aiReleaseImport" AI-RELEASE-IMPORT)
; ...))
; Unknown CFFI type (:STRUCT AI-SCENE)
; in: DEFCFUN ("aiApplyPostProcessing" AI-APPLY-POST-PROCESSING)
; (CFFI:DEFCFUN ("aiApplyPostProcessing"
; %OPEN-ASSET-IMPORT-LIBRARY:AI-APPLY-POST-PROCESSING)
; (:POINTER (:STRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-SCENE))
; (%OPEN-ASSET-IMPORT-LIBRARY::P-SCENE
; (:POINTER (:STRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-SCENE)))
; (%OPEN-ASSET-IMPORT-LIBRARY::P-FLAGS :UNSIGNED-INT))
;
; caught COMMON-LISP:ERROR:
; (during macroexpansion of (DEFCFUN ("aiApplyPostProcessing" AI-APPLY-POST-PROCESSING)
; ...))
; Unknown CFFI type (:STRUCT AI-SCENE)
; in: DEFCFUN ("aiImportFileFromMemory" AI-IMPORT-FILE-FROM-MEMORY)
; (CFFI:DEFCFUN ("aiImportFileFromMemory"
; %OPEN-ASSET-IMPORT-LIBRARY:AI-IMPORT-FILE-FROM-MEMORY)
; (:POINTER (:STRUCT %OPEN-ASSET-IMPORT-LIBRARY:AI-SCENE))
; (%OPEN-ASSET-IMPORT-LIBRARY::P-BUFFER :POINTER)
; (%OPEN-ASSET-IMPORT-LIBRARY::P-LENGTH :UNSIGNED-INT)
; (%OPEN-ASSET-IMPORT-LIBRARY::P-FLAGS
; %OPEN-ASSET-IMPORT-LIBRARY:AI-POST-PROCESS-STEPS)
; (%OPEN-ASSET-IMPORT-LIBRARY::P-HINT :POINTER))
;
; caught COMMON-LISP:ERROR:
; (during macroexpansion of (DEFCFUN ("aiImportFileFromMemory" AI-IMPORT-FILE-FROM-MEMORY)
; ...))
; Unknown CFFI type (:STRUCT AI-SCENE)
ok, that should be fixed now
Seems good now. Though I get this odd warning:
; file: /home/zyd/src/third-party/classimp/low-level.lisp
; in: DEFUN %OPEN-ASSET-IMPORT-LIBRARY::FOO
; (%OPEN-ASSET-IMPORT-LIBRARY::NONEXISTANT)
;
; caught STYLE-WARNING:
; undefined function: %OPEN-ASSET-IMPORT-LIBRARY::NONEXISTANT
;
; compilation unit finished
; Undefined function:
; %OPEN-ASSET-IMPORT-LIBRARY::NONEXISTANT
; caught 1 STYLE-WARNING condition
hmm, no idea what that was doing there, cleaned it up. thanks for testing
merged the branch