binghe / fm-plugin-tools

A toolkit for FileMaker plug-in developments in Common Lisp
11 stars 3 forks source link

Examples of use cases? #2

Open lispstudent opened 6 months ago

lispstudent commented 6 months ago

I am much interested in combining LispWorks and Filemaker Pro, but I am not an experience Lisp developer, and I failed to see use-cases that can help me understand what fm-plugin-tools can do.

Is this perhaps similar to FMProKit?

How can one use fm-plugin-tools as a bridge between LispWorks code and FileMaker?

binghe commented 6 months ago

I am much interested in combining LispWorks and Filemaker Pro, but I am not an experience Lisp developer, and I failed to see use-cases that can help me understand what fm-plugin-tools can do.

Is this perhaps similar to FMProKit?

How can one use fm-plugin-tools as a bridge between LispWorks code and FileMaker?

This project lets you write FileMaker plugins completely in Common Lisp. With this project you don't need to write any C/C++ code and you can use LispWorks to generate/deliver binary FM plugins (essentially a dynamic library or DLL). The user must be experienced Common Lisp programmers and owns commercial licenses (professional edition is fine, but still quite expensive) of LispWorks.

One big use case is inside the regex-plugin folder, which is a FileMaker plugin adding functions of regular expressions when you do calculations of table fields or writing scripts (I use this plugin everyday).

Hope this helps, and feel free to ask more questions.

lispstudent commented 6 months ago

Thank you very much for the details. fm-plugin-tools is an amazing projects, with so many possibilities.

I do have a Hobby DV LispWorks 8 license for Mac, but I am not an experienced Common Lisp programmer.

I see a Win32 lisp file in the regex-plugin example, would that be fine for me to try to build the regex-plugin example on a Mac, Silicon CPU (M2)?

I would follow the documentation.

binghe commented 6 months ago

Thank you very much for the details. fm-plugin-tools is an amazing projects, with so many possibilities.

I do have a Hobby DV LispWorks 8 license for Mac, but I am not an experienced Common Lisp programmer.

I see a Win32 lisp file in the regex-plugin example, would that be fine for me to try to build the regex-plugin example on a Mac, Silicon CPU (M2)?

I would follow the documentation.

Yes, with a Hobby DV version you should be able to build the regex-plugin example on your M2 Mac. The resulting plugin, of course, can only be loaded in M2 version of FileMaker on macOS. But I've never tried with M2 Mac, as I only have Intel MacBook Pro and my FileMaker Pro version is 18 (Intel only). It would be interesting to know if you can build it. (However, with Hobby DV license you may not distribute the resulting plugin, if succeed. But I'm not so sure, check with LW people.)

You may need to modify the some scripts, to reflect your actual installation directory of LispWorks.

Let me know if you meet any issue, either specific to M2 Mac or to higher versions of FileMaker.

lispstudent commented 6 months ago

I will, thank you very much.

binghe commented 6 months ago

I have fixed the documentation page: https://binghe.github.io/fm-plugin-tools/

lispstudent commented 6 months ago

Thank you for pointing it out, it is helpful to have it online. I have downloaded the Plug-in SDK for Mac and I am studying that documentation.

lispstudent commented 6 months ago

I am having trouble creating the bindings to the C header files, the Listener returns: Reader cannot find package PREP.

This is what I do:

After cloning fm-plugin-tools repository into ~/Lisp, from LispWorks Listener:

;; From docs:
;; "use ASDF to load the PREPARE-FM-PLUGIN-TOOLS system."
;; "(Do not compile or load FM-PLUGIN-TOOLS itself yet.)"

CL-USER 1 > (require 'asdf) ; already loaded in my case by init files
NIL

CL-USER 2 > (cd "~/Lisp/fm-plugin-tools")
#P"/Users/lispstudent/Lisp/fm-plugin-tools/"

CL-USER 3 > (load "prepare-fm-plugin-tools.asd")
; Loading text file /Users/lispstudent/Lisp/fm-plugin-tools/prepare-fm-plugin-tools.asd
#P"/Users/lispstudent/Lisp/fm-plugin-tools/prepare-fm-plugin-tools.asd"

;; "Call the function PREP:PREPARE. It should return :DONE when it's finished. "

Error while reading: Reader cannot find package PREP.

CL-USER 4 > (prep:prepare)
lispstudent commented 6 months ago

I solved this step by executing,

CL-USER 5 > (ql:quickload "prepare-fm-plugin-tools")

CL-USER 6 > (prep:prepare)
Processing FMXExtern.h...
Processing FMXClient.h...
Processing FMXTypes.h...
Processing FMXText.h...
Processing FMXCalcEngine.h...
Processing FMXBinaryData.h...
Processing FMXTextStyle.h...
Processing FMXData.h...
Processing FMXDateTime.h...
Processing FMXFixPt.h...
:DONE
lispstudent commented 6 months ago

Runningbuild-plugin64.command successfully builds the example plugin,

cd /Users/lispstudent/Lisp/fm-plugin-tools
# ./build-plugin64.command
; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/itself/0001/0005.64yfasl
; Loaded public patch PATCH-ITSELF 1.5

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/itself/0001/0006.64yfasl
; Loaded public patch PATCH-ITSELF 1.6

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/itself/0001/0007.64yfasl
; Loaded public patch PATCH-ITSELF 1.7

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/itself/0001/0008.64yfasl
; Loaded public patch PATCH-ITSELF 1.8

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/capi-cocoa/0001/0013.64yfasl
; Loaded public patch CAPI-COCOA 1.13

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/capi-cocoa/0001/0014.64yfasl
; Loaded public patch CAPI-COCOA 1.14

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/capi-cocoa/0001/0015.64yfasl
; Loaded public patch CAPI-COCOA 1.15

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/capi-cocoa/0001/0016.64yfasl
; Loaded public patch CAPI-COCOA 1.16

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/capi-cocoa/0001/0017.64yfasl
; Loaded public patch CAPI-COCOA 1.17

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/capi-cocoa/0001/0018.64yfasl
;  Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/full/0001/0003.64yfasl
; Loaded public patch FULL 1.3

;  Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/full/0001/0004.64yfasl
; Loaded public patch FULL 1.4

;  Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/full/0001/0005.64yfasl
; Loaded public patch FULL 1.5

;  Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/full/0001/0006.64yfasl
; Loaded public patch FULL 1.6

;  Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/full/0001/0007.64yfasl
;   Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/capi/0001/0011.64yfasl
;  Loaded public patch CAPI 1.11

;   Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/capi/0001/0012.64yfasl
;  Loaded public patch CAPI 1.12

;   Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/capi/0001/0013.64yfasl
;  Loaded public patch CAPI 1.13

;   Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/capi/0001/0014.64yfasl
;  Loaded public patch CAPI 1.14

;   Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/capi/0001/0015.64yfasl
;  Loaded public patch CAPI 1.15

;   Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/capi/0001/0016.64yfasl
;  Loaded public patch CAPI 1.16

; Loaded public patch FULL 1.7

; Loaded public patch CAPI-COCOA 1.18

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/capi-cocoa/0001/0019.64yfasl
;  Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/cocoa/0001/0002.64yfasl
; Loaded public patch COCOA 1.2

; Loaded public patch CAPI-COCOA 1.19

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/compiler/0001/0002.64yfasl
; Loaded public patch COMPILER 1.2

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/compiler/0001/0003.64yfasl
; Loaded public patch COMPILER 1.3

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/compiler/0001/0004.64yfasl
; Loaded public patch COMPILER 1.4

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/compiler/0001/0005.64yfasl
; Loaded public patch COMPILER 1.5

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/compiler/0001/0006.64yfasl
; Loaded public patch COMPILER 1.6

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/editor/0001/0002.64yfasl
; Loaded public patch EDITOR 1.2

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/editor/0001/0003.64yfasl
; Loaded public patch EDITOR 1.3

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/editor/0001/0004.64yfasl
; Loaded public patch EDITOR 1.4

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/editor/0001/0005.64yfasl
; Loaded public patch EDITOR 1.5

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/editor/0001/0006.64yfasl
; Loaded public patch EDITOR 1.6

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/editor/0001/0007.64yfasl
; Loaded public patch EDITOR 1.7

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/editor/0001/0008.64yfasl
; Loaded public patch EDITOR 1.8

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/editor/0001/0009.64yfasl
; Loaded public patch EDITOR 1.9

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/editor/0001/0010.64yfasl
; Loaded public patch EDITOR 1.10

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/editor/0001/0011.64yfasl
; Loaded public patch EDITOR 1.11

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/fli/0001/0003.64yfasl
; Loaded public patch FLI 1.3

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/fli/0001/0004.64yfasl
; Loaded public patch FLI 1.4

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/full/0001/0008.64yfasl
; Loaded public patch FULL 1.8

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/hqn-web/0001/0001.64yfasl
; Loaded public patch HQN-WEB 1.1

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/hqn-web/0001/0002.64yfasl
; Loaded public patch HQN-WEB 1.2

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/mp/0001/0002.64yfasl
; Loaded public patch MP 1.2

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/objc/0001/0001.64yfasl
; Loaded public patch OBJC 1.1

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/system/0001/0011.64yfasl
; Loaded public patch SYSTEM 1.11

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/system/0001/0012.64yfasl
; Loaded public patch SYSTEM 1.12

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/system/0001/0013.64yfasl
; Loaded public patch SYSTEM 1.13

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/system/0001/0014.64yfasl
; Loaded public patch SYSTEM 1.14

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/system/0001/0015.64yfasl
; Loaded public patch SYSTEM 1.15

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/system/0001/0016.64yfasl
; Loaded public patch SYSTEM 1.16

; Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/patches/system/0001/0017.64yfasl
; Loaded public patch SYSTEM 1.17

; Loading text file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/private-patches/load.lisp
LispWorks(R): The Common Lisp Programming Environment
Copyright (C) 1987-2021 LispWorks Ltd.  All rights reserved.
Version 8.0.1
Saved by LispWorks as lispworks-8-0-0-arm64-darwin, at 06 Dec 2021 17:56
User lispstudent on argo.vsm.in
; Loading text file /Users/lispstudent/Lisp/fm-plugin-tools/deliver.lisp
;  Loading text file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/private-patches/load.lisp
;  Loading text file /Users/lispstudent/quicklisp/setup.lisp
; Loading /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/load-on-demand/utilities/asdf.64yfasl on demand...
Warning: Using DEFPACKAGE to modify #<The QL-SETUP package, 24/32 internal, 3/16 external>.
; Loading /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/load-on-demand/processes/comm-defsys.lisp on demand...
;; Creating system "COMM"
; Loading /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/load-on-demand/processes/macos-comm-defsys.lisp on demand...
;; Creating system "MACOS-COMM"
; Loading /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/load-on-demand/ccl/describe.64yfasl on demand...
; Loading /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/load-on-demand/ccl/inspector-values.64yfasl on demand...
; Loading /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/load-on-demand/ffi/types/inspector.64yfasl on demand...
To load "cl-fad":
  Load 1 ASDF system:
    cl-fad
; Loading "cl-fad"

;  Loading text file /Users/lispstudent/Lisp/fm-plugin-tools/fm-plugin-example.asd
;  Loading text file /Users/lispstudent/Lisp/fm-plugin-tools/fm-plugin-tools.asd
;  Loading text file /Users/lispstudent/quicklisp/dists/quicklisp/software/cxml-20200610-git/cxml.asd
;;; Checking for wide character support... yes, using code points.
;  Loading text file /Users/lispstudent/quicklisp/dists/quicklisp/software/closure-common-20181018-git/closure-common.asd
;;; Checking for wide character support... yes, using code points.
;;; Building Closure with CHARACTER RUNES
;  Loading text file /Users/lispstudent/quicklisp/dists/quicklisp/software/trivial-gray-streams-20231021-git/trivial-gray-streams.asd
;  Loading text file /Users/lispstudent/quicklisp/dists/quicklisp/software/babel-20230214-git/babel.asd
;  Loading text file /Users/lispstudent/quicklisp/dists/quicklisp/software/puri-20201016-git/puri.asd
;  Loading text file /Users/lispstudent/quicklisp/dists/quicklisp/software/cl-ppcre-20230618-git/cl-ppcre-unicode.asd
;  Loading text file /Users/lispstudent/quicklisp/dists/quicklisp/software/cl-ppcre-20230618-git/cl-ppcre.asd
;  Loading text file /Users/lispstudent/quicklisp/dists/quicklisp/software/cl-unicode-20210228-git/cl-unicode.asd
;  Loading text file /Users/lispstudent/quicklisp/dists/quicklisp/software/flexi-streams-20220220-git/flexi-streams.asd
;  Loading text file /Users/lispstudent/quicklisp/dists/quicklisp/software/zpb-exif-release-1.2.5/zpb-exif.asd
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/trivial-gray-streams-20231021-git/package.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/trivial-gray-streams-20231021-git/streams.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/babel-20230214-git/src/packages.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/babel-20230214-git/src/encodings.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-ascii.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-ebcdic.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-ebcdic-int.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-iso-8859.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-unicode.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-cp437.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-cp1251.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-cp1252.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/babel-20230214-git/src/jpn-table.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-jpn.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-gbk.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-koi8.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/babel-20230214-git/src/external-format.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/babel-20230214-git/src/strings.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/babel-20230214-git/src/gbk-map.64yfasl
Warning: (DEFPARAMETER *GBK-UNICODE-MAPPING*) being redefined in /Users/lispstudent/quicklisp/dists/quicklisp/software/babel-20230214-git/src/gbk-map.lisp (previously in /Users/lispstudent/quicklisp/dists/quicklisp/software/babel-20230214-git/src/enc-gbk.lisp).
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/babel-20230214-git/src/sharp-backslash.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/closure-common-20181018-git/package.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/closure-common-20181018-git/definline.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/closure-common-20181018-git/characters.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/closure-common-20181018-git/syntax.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/closure-common-20181018-git/encodings.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/closure-common-20181018-git/encodings-data.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/closure-common-20181018-git/xstream.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/closure-common-20181018-git/ystream.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/closure-common-20181018-git/hax.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/puri-20201016-git/src.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cxml-20200610-git/xml/package.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cxml-20200610-git/xml/util.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cxml-20200610-git/xml/sax-handler.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cxml-20200610-git/xml/xml-name-rune-p.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cxml-20200610-git/xml/split-sequence.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cxml-20200610-git/xml/xml-parse.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cxml-20200610-git/xml/unparse.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cxml-20200610-git/xml/xmls-compat.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cxml-20200610-git/xml/recoder.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cxml-20200610-git/xml/xmlns-normalizer.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cxml-20200610-git/xml/space-normalizer.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cxml-20200610-git/xml/catalog.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cxml-20200610-git/xml/sax-proxy.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cxml-20200610-git/xml/atdoc-configuration.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/Lisp/fm-plugin-tools/packages.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/Lisp/fm-plugin-tools/specials.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/Lisp/fm-plugin-tools/utils.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/Lisp/fm-plugin-tools/fli.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/Lisp/fm-plugin-tools/fm-objects.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/Lisp/fm-plugin-tools/locale-objects.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/Lisp/fm-plugin-tools/color-objects.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/Lisp/fm-plugin-tools/style-objects.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/Lisp/fm-plugin-tools/text-objects.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/Lisp/fm-plugin-tools/fix-pt-objects.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/Lisp/fm-plugin-tools/date-time-objects.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/Lisp/fm-plugin-tools/binary-data-objects.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/Lisp/fm-plugin-tools/data-objects.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/Lisp/fm-plugin-tools/functions.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/Lisp/fm-plugin-tools/main.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-ppcre-20230618-git/packages.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-ppcre-20230618-git/specials.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-ppcre-20230618-git/util.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-ppcre-20230618-git/errors.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-ppcre-20230618-git/charset.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-ppcre-20230618-git/charmap.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-ppcre-20230618-git/chartest.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-ppcre-20230618-git/lexer.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-ppcre-20230618-git/parser.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-ppcre-20230618-git/regex-class.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-ppcre-20230618-git/regex-class-util.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-ppcre-20230618-git/convert.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-ppcre-20230618-git/optimize.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-ppcre-20230618-git/closures.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-ppcre-20230618-git/repetition-closures.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-ppcre-20230618-git/scanner.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-ppcre-20230618-git/api.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-unicode-20210228-git/packages.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-unicode-20210228-git/specials.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-unicode-20210228-git/util.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-unicode-20210228-git/conditions.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-unicode-20210228-git/lists.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-unicode-20210228-git/hash-tables.64yfasl
;;; Computing Hangul syllable names
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-unicode-20210228-git/api.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-unicode-20210228-git/methods.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-unicode-20210228-git/test-functions.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-unicode-20210228-git/derived.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-unicode-20210228-git/alias.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-ppcre-20230618-git/cl-ppcre-unicode/packages.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/cl-ppcre-20230618-git/cl-ppcre-unicode/resolver.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/flexi-streams-20220220-git/packages.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/flexi-streams-20220220-git/mapping.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/flexi-streams-20220220-git/ascii.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/flexi-streams-20220220-git/koi8-r.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/flexi-streams-20220220-git/mac.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/flexi-streams-20220220-git/iso-8859.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/flexi-streams-20220220-git/enc-cn-tbl.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/flexi-streams-20220220-git/code-pages.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/flexi-streams-20220220-git/specials.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/flexi-streams-20220220-git/util.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/flexi-streams-20220220-git/conditions.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/flexi-streams-20220220-git/external-format.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/flexi-streams-20220220-git/length.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/flexi-streams-20220220-git/encode.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/flexi-streams-20220220-git/decode.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/flexi-streams-20220220-git/in-memory.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/flexi-streams-20220220-git/stream.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/flexi-streams-20220220-git/lw-char-stream.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/flexi-streams-20220220-git/output.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/flexi-streams-20220220-git/input.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/flexi-streams-20220220-git/io.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/flexi-streams-20220220-git/strings.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/quicklisp/dists/quicklisp/software/zpb-exif-release-1.2.5/exif.64yfasl
Warning: (DEFVAR *OPTIMIZATIONS*) defined more than once in /Users/lispstudent/quicklisp/dists/quicklisp/software/zpb-exif-release-1.2.5/exif.lisp.
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/Lisp/fm-plugin-tools/plugin-example/packages.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/Lisp/fm-plugin-tools/plugin-example/specials.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/Lisp/fm-plugin-tools/plugin-example/cf.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/Lisp/fm-plugin-tools/plugin-example/utils.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/Lisp/fm-plugin-tools/plugin-example/configuration.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/Lisp/fm-plugin-tools/plugin-example/functions.64yfasl
;  Loading fasl file /Users/lispstudent/.cache/common-lisp/lw-8.0.1-macosx-arm64/Users/lispstudent/Lisp/fm-plugin-tools/plugin-example/init.64yfasl
;;; Compiling file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/examples/configuration/macos-application-bundle ...
;;; Safety = 3, Speed = 1, Space = 1, Float = 1, Interruptible = 1
;;; Compilation speed = 1, Debug = 2, Fixnum safety = 3
;;; Source level debugging is on
;;; Source file recording is  on
;;; Cross referencing is on
; (TOP-LEVEL-FORM 0)
; (TOP-LEVEL-FORM 1)
; WRITE-MACOS-APPLICATION-BUNDLE
; CHOOSE-TEMPLATE-BUNDLE-PATH
; EXECUTABLE-APPLICATION-BUNDLE-DIRECTORY
; MAKE-APPLICATION-SUBPATHS
; COPY-MODIFIED-INFO-PLIST
; WRITE-DOCUMENT-TYPES
; WRITE-MODIFIED-INFO-VALUE
; COPY-FILES
;; Processing Cross Reference Information
;  Loading fasl file /private/var/tmp/macos-application-bundle-0pT7U5v.64yfasl
;  Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/load-on-demand/deliv/variables.64yfasl
;   Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/load-on-demand/deliv/pkg.64yfasl
;   Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/load-on-demand/deliv/delivery-keywords.64yfasl
;  Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/load-on-demand/deliv/clean-share.64yfasl
;  Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/load-on-demand/deliv/clean-actions.64yfasl
;  Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/load-on-demand/deliv/clean-gui.64yfasl
;  Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/load-on-demand/deliv/clean-unix.64yfasl
;  Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/load-on-demand/deliv/dvintfc.64yfasl
;  Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/load-on-demand/deliv/shake-share.64yfasl
;  Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/load-on-demand/nclos/deliv-patch.64yfasl
;  Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/load-on-demand/utilities/around-shake-actions-runtime.64yfasl

;;; Delivery function    DO-NOTHING
;;; Destination file     #P"/Users/lispstudent/src/FMPLisp.fmplugin/Contents/MacOS/FMPLisp"
;;; Delivery severity    0
;;; Delivery parameters  (:IMAGE-TYPE :BUNDLE :KEEP-SYMBOLS (#:|FM-PLUGIN-TOOLS-foreign-callable19528| #:|FM-PLUGIN-TOOLS-foreign-callable19514| #:|FM-PLUGIN-TOOLS-foreign-callable19493| #:|FM-PLUGIN-TOOLS-foreign-callable19477| #:|FM-PLUGIN-TOOLS-foreign-callable19462| #:|FM-PLUGIN-TOOLS-foreign-callable19448| #:|FM-PLUGIN-TOOLS-foreign-callable19431| #:|FM-PLUGIN-TOOLS-foreign-callable19416| #:|FM-PLUGIN-TOOLS-foreign-callable19402| #:|FM-PLUGIN-TOOLS-foreign-callable19364| #:|FM-PLUGIN-TOOLS-foreign-callable19349| #:|FM-PLUGIN-TOOLS-foreign-callable19336|) :KEEP-LISP-READER T :KEEP-DEBUG-MODE T :VERSIONINFO (:BINARY-VERSION 12884967424 :VERSION-STRING "0.3.1" :COMPANY-NAME "Edi Weitz" :PRODUCT-NAME "FMPLisp" :FILE-DESCRIPTION "An example plug-in created with FM-PLUGIN-TOOLS." :LEGAL-COPYRIGHT "Copyright (c) 2006-2010, Dr. Edmund Weitz.  All rights reserved.") :DLL-EXPORTS ("FMExternCallProc") :INTERFACE NIL :MULTIPROCESSING NIL)
; Loading /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/load-on-demand/editor/mac-mode.64yfasl on demand...
; Loading /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/load-on-demand/editor/selection-mode.64yfasl on demand...
; Loading /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/load-on-demand/editor/delete-selection.64yfasl on demand...
;  Loading text file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/config/mac-key-binds.lisp
;   Loading text file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/config/selection-key-binds.lisp
;  Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/load-on-demand/deliv/pkg.64yfasl
;  Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/load-on-demand/deliv/do-command-classes.64yfasl
;  Loading fasl file /Applications/LispWorks 8.0 (64-bit)/Library/lib/8-0-0-0/load-on-demand/deliv/command-classes.64yfasl

Shaking stage : Starting delivery
Removing plist indicators ::   (EDITOR::SECTION-PARSING-FUNCTION EDITOR::SECTION EXTERNAL-FORMAT::EF-FUNCTION-SPEC)

 > Generation 7: 36887672 (0x232DC78)
       Cons               4543408 (0x4553B0)
       Non-Pointer        3632376 (0x376CF8)
       Other              9641240 (0x931D18)
       Symbol             6516272 (0x636E30)
       Function           12471232 (0xBE4BC0)
       Non-Pointer-Static 11808 (0x2E20)
       Mixed-Static       70656 (0x11400)
       Weak               680 (0x2A8)
 -- Segments:
       Cons               8200038800 - 8200490000
       Non-Pointer        8210000800 - 821037C000
       Other              8220038800 - 8220970000
       Symbol             8230038800 - 8230674000
       Function           8240010000 - 8240BC4000
       Function           8100010000 - 8100048000
       Non-Pointer-Static 8090000800 - 8090018000
       Mixed-Static       800004E800 - 8000074000
       Weak               8250038800 - 825003C000
================================
 > Generation 6: 0 (0x0)
 > Generation 5: 0 (0x0)
 > Generation 4: 0 (0x0)
 > Generation 3: 27330952 (0x1A10988)
       Cons               8164496 (0x7C9490)
       Non-Pointer        4143296 (0x3F38C0)
       Other              10248984 (0x9C6318)
       Symbol             1707952 (0x1A0FB0)
       Function           3066192 (0x2EC950)
       Weak               32 (0x20)
 -- Segments:
       Cons               8290018800 - 82907E4000
       Non-Pointer        8260000800 - 82603F8000
       Other              8270018800 - 82709E4000
       Symbol             8280018800 - 82801BC000
       Function           82A0010000 - 82A0300000
       Weak               82B0018800 - 82B001C000
================================
 > Generation 2: 8376576 (0x7FD100)
       Cons               2058480 (0x1F68F0)
       Non-Pointer        460264 (0x705E8)
       Other              4285296 (0x416370)
       Symbol             563488 (0x89920)
       Function           686616 (0xA7A18)
       Non-Pointer-Static 279296 (0x44300)
       Weak               43136 (0xA880)
 -- Segments:
       Cons               82C0010800 - 82C020C000
       Non-Pointer        82D0000800 - 82D0074000
       Other              82E0010800 - 82E042C000
       Symbol             82F0010800 - 82F00A0000
       Function           8300010000 - 83000BC000
       Non-Pointer-Static 8050000800 - 8050048000
       Weak               8310010800 - 831001C000
================================
 > Generation 1: 16616 (0x40E8)
       Cons               480 (0x1E0)
       Non-Pointer        15688 (0x3D48)
       Other              272 (0x110)
       Symbol             144 (0x90)
       Weak               32 (0x20)
 -- Segments:
       Cons               8320008800 - 832000C000
       Non-Pointer        8330000800 - 8330008000
       Other              8340008800 - 834000C000
       Symbol             8350008800 - 835000C000
       Weak               8370008800 - 837000C000
================================
 > Generation 0: 2306296 (0x2330F8)
       Cons               1216864 (0x129160)
       Non-Pointer        10472 (0x28E8)
       Other              990848 (0xF1E80)
       Symbol             88112 (0x15830)
 -- Segments:
       Cons               8040000800 - 8040404000
       Non-Pointer        8010000800 - 8010404000
       Other              8020000800 - 8020404000
       Symbol             8030000800 - 8030104000
================================

Total allocated 74918112 (0x47728E0), total size 96534528 (0x5C10000)

Shaking stage : Saving image
Build saving image: /Users/lispstudent/src/FMPLisp.fmplugin/Contents/MacOS/FMPLisp
Build saved image: /Users/lispstudent/src/FMPLisp.fmplugin/Contents/MacOS/FMPLisp
Build split image: /Users/lispstudent/src/FMPLisp.fmplugin/Contents/MacOS/Resources/FMPLisp.lwheap
Build executable: /Users/lispstudent/src/FMPLisp.fmplugin/Contents/MacOS/FMPLisp

Delivery successful - /Users/lispstudent/src/FMPLisp.fmplugin/Contents/MacOS/FMPLisp
binghe commented 6 months ago

Looks good, but can you actually load it in FileMaker Pro?

binghe commented 6 months ago

Besides, this is NOT the regex plugin but the other smaller example. You can use the delivery scripts inside the regex-plugin folder to build the regex plugin.

lispstudent commented 6 months ago

Ah, you are right of course! Launching Filemaker, I do not see the plugin in Preferences > Plugins

I am now going to run the script from the inside the regex-plugin folder and report back.

binghe commented 6 months ago

Ah, you are right of course! Launching Filemaker, I do not see the plugin in Preferences > Plugins

I am now going to run the script from the inside the regex-plugin folder and report back.

You need to copy the plugin bundle into FileMaker's plugin folder - the exact location depends on FMP version, it can open the folder for your from the settings, then you just copy. There will be extra security warnings since the plugin is not code-signed, you need to modify your macOS privacy settings to let it pass. FileMaker itself may also complain that the plugin does not have certifications, which is another different requirement then code signing. If everything is done correctly, you should be able to load the plugin, but it won't create any new menu items. Instead you need to create a database and see if you have more custom functions available.

lispstudent commented 6 months ago

Delivery is successful, but the scritp cannot copy the plugin with this error:

Delivery successful - /Users/lispstudent/src/RegexPlugIn.fmplugin/Contents/MacOS/RegexPlugIn

mv: rename /Users/lispstudent/src/RegexPlugIn.app to /Users/lispstudent/Library/Application Support/FileMaker/FileMaker Pro/20.0/Extensions/RegexPlugIn.fmplugin: No such file or directory

Couldn't copy the bundle to /Users/lispstudent/Library/Application Support/FileMaker/FileMaker Pro/20.0/Extensions.

Changing line 36 of build-plugin64.command,

from: mv "$build_dir/$name.app" "$target_dir/$name.fmplugin" to: mv "$build_dir/$name.fmplugin" "$target_dir/$name.fmplugin"

allows the script to copy the plugin.

But launching Filemaker Pro does not show the plugin in the Preferences > Plugins setting pane.

Screenshot 2024-03-07 at 11 10 39

By clicking on Reveal Plugin-In Folder I can verify it is there.

Screenshot 2024-03-07 at 11 12 39
lispstudent commented 6 months ago

I have tried to compile with (defvar *deliver-level* 0) instead of (defvar *deliver-level* 5), with same results:

Plugin is compiled and copied over in the proper directory, /Users/lispstudent/Library/Application Support/FileMaker/FileMaker Pro/20.0/Extensions/.

A freshly launched FileMaker does not see the plugins. I tried with other third-party plugin in same directory, .i.e BaseElementsand they are seen.

How could I go about debugging this issue?

binghe commented 6 months ago

You can set the variable *fm-logfile to T, to enable some basic logging. This log file will be created at your "~/Library/Application Support/FM-PlugIn-Tools/fm-plugin-tools.log":

(defun fm-log (control-string &rest format-args)
  "Utility function which might be useful for debugging a plug-in.
Writes data to the file denoted by *FM-LOGFILE* unless this value
is NIL.  CONTROL-STRING and FORMAT-ARGS are interpreted as by
FORMAT."
  (when *fm-logfile*
    (let ((fm-logfile (if (eq *fm-logfile* t)
                        (merge-pathnames "FM-PlugIn-Tools/fm-plugin-tools.log"
                                         (sys:get-folder-path #-:macosx :local-appdata
                                                              #+:macosx :my-appsupport))
                        *fm-logfile*)))
      (with-open-file (out (ensure-directories-exist fm-logfile)
                           :direction :output
                           :element-type 'lw:simple-char
                           :external-format '(:utf-8 :eol-style :lf)
                           :if-exists :append
                           :if-does-not-exist :create)
        (apply #'format out control-string format-args)
        (finish-output out))))
  (values))

If, unfortunately, after enabling the log, such a log file doesn't exist at all. This will mean that the code inside plugin didn't execute at all, and this means the translation of SDK header files has some problems due to FMP version changes, or the new ARM64 platform. Then this is harder to fix for me, without actually having a Mac with Apple Silicon processors.

lispstudent commented 6 months ago

Thank you so much for the code, very instructive!

Where shall I include it, in main.lisp, or perhaps functions.lisp?

binghe commented 6 months ago

Thank you so much for the code, very instructive!

Where shall I include it, in main.lisp, or perhaps functions.lisp?

That function is already in utils.lisp. I meant putting the following line into deliver.lisp, before calling lw:deliver:

(setq fm:*fm-logfile* t)
lispstudent commented 6 months ago

Thank you. I have added that line in deliver.lisp. After launching FileMaker Pro, I do not see the log file fm-plugin-tools.log or any empty directory at ~/Library/Application Support/FM-PlugIn-Tools/.

My school has FileMaker for Windows, and may have a LispWorks Windows license. I could try to compile it there. Would that help?

binghe commented 6 months ago

If I found time, I will first make sure the last PluginSDK works on Intel macOS, and then confirm with x64 Windows. This may involved some actual code changes in the C++ header parser, and perhaps it will cause some positive changes on your side.

lispstudent commented 6 months ago

Thank you very, very much for your help and time.

I am learning a lot from this process. Will you let me know if there is anything I can do. For sure I could test building on Mac M2, and I believe I could on Windows 10/11 as well.

Thank you again.

binghe commented 6 months ago

Hello there, I can confirm that this project currently doesn't support FileMaker SDKHeader version 20. If I use SDKHeader from 18 to build FM plugins, the resulting plugin can be correctly loaded into FileMaker Pro 20 (2023) on Intel macOS and x64 Windows. But FileMaker Pro 18 doesn't support ARM macOS, and I don't think you can use old SDK headers to generate working plugins for FileMaker Pro 20 on ARM64 macOS.

I need some time to analyse the differences between SDKHeader 18 and 20, and fix the SDK parser.

lispstudent commented 6 months ago

Thank you for the confirmation, very much appreciated.

Please, let me know if/when I can be of any help by testing.