• Common Lisp 87.7%
  • Makefile 8.1%
  • Shell 4.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Pascal J. Bourguignon fb4bf71a23 Implementation complete (ALPM 0.2.0); build/stage/install/release Makefile.
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>
2026-08-09 13:49:00 +02:00
documentation Implementation complete (ALPM 0.2.0); build/stage/install/release Makefile. 2026-08-09 13:49:00 +02:00
scripts Implementation complete (ALPM 0.2.0); build/stage/install/release Makefile. 2026-08-09 13:49:00 +02:00
sources Implementation complete (ALPM 0.2.0); build/stage/install/release Makefile. 2026-08-09 13:49:00 +02:00
tests Implementation complete (ALPM 0.2.0); build/stage/install/release Makefile. 2026-08-09 13:49:00 +02:00
.gitattributes CI verification jobs, probe suite, GPL-3 LICENSE, logos. 2026-08-08 22:20:40 +02:00
.gitignore Initial commit: ALPM specification, user manual, build infrastructure. 2026-08-08 22:19:52 +02:00
.gitlab-ci.yml Implementation complete (ALPM 0.2.0); build/stage/install/release Makefile. 2026-08-09 13:49:00 +02:00
LICENSE CI verification jobs, probe suite, GPL-3 LICENSE, logos. 2026-08-08 22:20:40 +02:00
Makefile Implementation complete (ALPM 0.2.0); build/stage/install/release Makefile. 2026-08-09 13:49:00 +02:00
README.org Document the VLISP .prj/.prv formats from real samples (V-3/V-4 done). 2026-08-09 12:36:44 +02:00

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.

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).