-
Notifications
You must be signed in to change notification settings - Fork 16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Conda package #65
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
jbouwman
approved these changes
Dec 13, 2024
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approved, review comments mainly pertain to nonsubstantive documentation of platform quirks
eliaslfox
approved these changes
Dec 14, 2024
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🚀
macrologist
approved these changes
Dec 15, 2024
Merged
kartik-s
force-pushed
the
conda-recipe-fasl
branch
2 times, most recently
from
December 16, 2024 17:50
1f276e3
to
12f3040
Compare
kartik-s
force-pushed
the
conda-recipe-fasl
branch
from
December 16, 2024 18:02
12f3040
to
d9fb83b
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #66.
Summary
This PR adds a Conda recipe for building a package called
sbcl-librarian
containing the following artifacts:lib/libsbcl_librarian.so
lib/sbcl_librarian.core
include/sbcl_librarian.h
include/sbcl_librarian_err.h
sbcl_librarian
Python package with wrappers forlibsbcl_librarian.so
The CI workflows on all platforms are updated so that they:
sbcl-librarian
Conda package and install it into an environmentcalc.dll
as a FASL-packed DLL againstlibsbcl_librarian.dll
in that environmentcalc.dll
Artifacts
libsbcl_librarian.so
Built via the CMakeLists.txt file in
lib/
, which lists its sources and dependent libraries:sbcl_librarian.c
andsbcl_librarian.h
are auto-generated bindings for this library as defined ingenerate-bindings.lisp
:These bindings contain the functions that FASL-packed DLLs call to load themselves into the running Lisp image.
Additionally, we link in
entry_point.c
which defines thedo_initialize_lisp
function that gets called automatically by the system whenlibsbcl_librarian.so
is loaded into a process. This function does the following:sbcl_librarian.core
, which is installed in the same directory as the currently executing DLL.initialize_lisp
function with the the above core file to initialize the Lisp runtime.sbcl_librarian.core
Built via
generate-bindings.lisp
. Loads SWANK, thesbcl-librarian
library, sets up some signal-handling hacks, generates C and Python bindings, then saves the core.include/sbcl_librarian.h
Generated via
generate-bindings.lisp
. Declares functions and values contained inlibsbcl_librarian.so
sbcl_librarian_err.h
Declares fatal error handling
jmp_buf
s and flags, as well as the global error enum that gets returned by all wrapper functions.Python package
Contains several modules that wrap the raw Python bindings:
debug.py
wraps functions for enabling/disabling the debugger + backtraces, memory + handle reporting, doing GC, and profilingerrors.py
matches the error enum defined insbcl_librarian.h
so that errors returned by C functions can be translated into Python exceptionsfixtures.py
has a test fixture that checks for handle leaksversion.py
reads the package version from VERSION.txtwrapper.py
defines theLispObject
class for wrapping handles with release logic, exception types corresponding to the errors enums defined insbcl_librarian_err.h
, and functions for wrapping raw binding functions with logic to deal with handles and exceptions