CLISP-LINK(1)

okay so bestie, welcome to clisp-link β€” it's the manual page for the clisp-link script, running on x86_64-pc-linux-gnu. buckle up, this one's a whole vibe ✨


🌸 NAME 🌸

clisp-link β€” link a new external module to CLISP[1]. that's it, that's the girl. πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

clisp-link [create] [module] [file...]

clisp-link [add] [source] [destination] [module...]

clisp-link [run] [source] [module...]

clisp-link [install] [module...]

✨ DESCRIPTION ✨

okay so this is a shell script and it operates on CLISP[1] module sets and linking sets. here's the tea on what she does:

  • creates new module sets out of source files πŸ’…
  • adds module sets to a linking set to produce a new linking set πŸ”₯
  • runs CLISP[1] with module sets added
  • Only in CLISP[1] built without configure flag --without-dynamic-modules. β€” installs new module sets for general use πŸ‘‘

πŸŽ€ OPTIONS πŸŽ€

  • create β€” the command
$ clisp-link create module file ...

creates a module set in the module directory which refers (via symbolic links) to files file... the files are expected to be modules of their own, no cap.

  • add β€” the command
$ clisp-link add source destination module ...

combines the linking set in directory source and the modules in directories module... to a new linking set, in the directory destination which is newly created. brand new, fresh out the box 🫢

  • run β€” the command
$ clisp-link run source module ...

runs the linking set in directory source, with the modules in directories module... unless CLISP[1] has been built with the configuration option --without-dynamic-modules, the loading will be performed using SYS::DYNLOAD-MODULES. otherwise β€” and bestie, this is much slower 😭 β€” a temporary linking set will be created and deleted afterwards.

  • install β€” Only in CLISP[1] built without configure flag --without-dynamic-modules.

the command

$ clisp-link install module ...

installs the modules in directories module... into CUSTOM:*LIB-DIRECTORY* or, if it is not writable to the user (e.g., if a system-wide CLISP[1] installation is used and the user does not have administrative privileges), into CUSTOM:*USER-LIB-DIRECTORY*.

variable CUSTOM:*USER-LIB-DIRECTORY* is initially set to (MERGE-PATHNAMES[2] ".clisp/" (USER-HOMEDIR-PATHNAME[3])) if that directory exists, and can be reset in the RC file. ✨

Note β€” Do not add CUSTOM:*USER-LIB-DIRECTORY* to CUSTOM:*LOAD-PATHS* or under any element thereof. Use REQUIRE instead of LOAD to load dynamic modules. seriously, don't do it πŸ™ˆ

for this command to work, each module directory must contain a Makefile with a clisp-module-distrib target which uses LN to distribute the files necessary to run the module into destdir. this is in addition to the general requirement that link.sh is present. the way that it needs BOTH... yeah. πŸ’€


🌈 EXAMPLES 🌈

See Section 32.2.6, "Example".


🧚 FILES 🧚

clisp-link needs a "link kit" directory containing:

  • "modules.c"
  • "clisp.h"

clisp-link expects to find these files in a subdirectory linkkit/ of the installation directory (i.e., CUSTOM:*LIB-DIRECTORY*) which it acquires by running

$ `dirname $0`/clisp -b

this can be overridden by the environment variable[4] CLISP_LINKKIT. slay πŸ’…


πŸ’œ SEE ALSO πŸ’œ


πŸ‘‘ AUTHORS πŸ‘‘


Copyright Β© 1992-2024 Bruno Haible Copyright Β© 1998-2018 Sam Steingold


πŸ“ NOTES πŸ“

  1. CLISP β€” http://clisp.org
  2. MERGE-PATHNAMES β€” http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_merge-pathnames.html
  3. USER-HOMEDIR-PATHNAME β€” http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_user-homedir-pathname.html
  4. environment variable β€” [set $man.base.url.for.relative.links]/basedefs/V1_chap08.html

and that's the whole page bestie!! this was CLISP 2.49.95+, last modified 2024-11-09. go link some modules, you absolute icon πŸ’–πŸ¦‹βœ¨πŸŽ€

πŸ“¦ where this page comes from