- Common Lisp 87.7%
- Makefile 8.1%
- Shell 4.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Implementation (sources/alpm.lsp, 51 tests green): - alpm-scan-exports / alpm-check-exports: tokenizer (strings, ; line and ;|...|; block comments) finding defun/defun-q at top level and vl-doc-export at any depth (guarded forms included); scan [update] merges into the declaration; check warns and returns (common only-in-code only-in-declaration). - Encodings: codecs for ascii/utf-8/utf-8-bom/cp1252/macroman (cp1250/cp1251/cp932 declared-only); alpm-check-encodings (byte-level consistency vs declaration, BOM handling); alpm--convert-file gated on a write-char byte-transparency self-probe (V-10); load strategy per spec: match / parameterize (*AUTOLISP-FILE-ENCODING*) / convert-to-scratch / clean error; concatenation transcodes per file and supports utf-8-bom output; copies are byte-exact where the engine allows. - alpm-import-project: reads .prj (VLISP-PROJECT-LIST plist, case-insensitive keys, extension-optional OWN-LIST entries) and .prv (PRV-DEF alist, follows the (:prj ...) entry, empty (:separate-namespace) = off), preserving settings in properties; alpm-export-project writes a .prj (+ companion .prv when a target is given); alpm-save-system serializes properties. - alpm-generate-distribution: mirrored pre-converted source tree (+ .alpm definitions) with the self-locating loader at its base. Makefile restructured per build-install-release rules (B1..B10): phases libraries + documentation x build/stage/install/release; install copies staged $PREFIX-shaped trees and never compiles (stage-as-user under sudo, tar copy with --no-same-owner, DESTDIR); share/info/dir excluded and alpm.info registered via install-info; provenance manifests staged per phase (vendored scripts/make-manifest.sh); release artefacts packaged from the stages (verified: diff -r artefact vs stage clean); make help. Layout: share/autolisp/alpm.lsp, share/doc/alpm/ (org+pdf), share/info/alpm.info (org -> texinfo -> makeinfo). The built alpm.lsp site initialization is now PREFIX-INDEPENDENT: self-locating at load time (*AUTOLISP-LOAD-PATHNAME* / findfile), verified end-to-end: installed into a scratch DESTDIR, loading it registered its own directory and alpm-load-system found a system installed beside it. Docs 0.6.0; CI documentation job builds Info too (texinfo added). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
||
| documentation | ||
| scripts | ||
| sources | ||
| tests | ||
| .gitattributes | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| LICENSE | ||
| Makefile | ||
| README.org | ||
ALPM — AutoLISP Package Management
A system definition and loading facility for AutoLISP, in the spirit
of ASDF (https://asdf.common-lisp.dev): define systems of AutoLISP
source files with dependencies (system->system and file->file), load
them in dependency order on AutoCAD, BricsCAD, or clautolisp,
generate standalone loader files, and import existing .prj
projects.
Status: specification stage — nothing implemented yet.
- documentation/alpm-specification.org — the ALPM specification (draft under review; see the checklist section for open decisions D-1…D-5 and verification items V-1…V-6).
- documentation/alpm-user-manual.org — preliminary user manual.
- documentation/vlisp-project-files.org — observed reference of the
VLISP
.prj=/.prv= formats (reverse-engineered from real samples; no official specification exists). sources/— implementation (to come; entry filealpm.lsp).tests/— test suite (to come).
Installation
make install (default PREFIX=/opt/local) generates a single
self-contained alpm.lsp (make dist) and installs it as
$PREFIX/share/autolisp/alpm.lsp; then
(load "/opt/local/share/autolisp/alpm.lsp") defines ALPM and
registers the site directory (recursively), the engine support path,
and TRUSTEDPATHS. Systems install as
$PREFIX/share/autolisp/<name>/<name>.alpm + sources.
make test runs the suite headless under clautolisp.
Building the documentation
make pdf renders every org-mode document to PDF under build/
(e.g. build/documentation/specification.pdf). PDFs are generated
artifacts and are not committed. make clean removes build/.
License
GPL-3.0 — see LICENSE.
Continuous integration
.gitlab-ci.yml: the documentation:pdf job renders the org
documents on the always-on Linux runner; the verify:* jobs run
tests/verification/verification.lsp on the CAD-equipped
runners (clautolisp/BricsCAD on macOS, BricsCAD/AutoCAD on Windows —
manual, non-blocking: those runners are intermittent).
Conventions
- Documents: org-mode, UTF-8, LF line terminators.
- AutoLISP sources: pure ASCII, LF line terminators.
- Line terminators are stored as LF in the repository (checkouts on
Windows may convert to CR-LF; see
.gitattributes).