[cl-debian] Providing FASL version in SBCL and Clisp package control file
René van Bevern
rvb at progn.org
Sun Sep 4 09:38:38 UTC 2005
Hello CL-Debian, hello Will (attached is a patch for you).
for the next version of dh-lisp, the Lisp debhelper, I plan it to find
precompiled FASL files in the package and automatically add a
dependency to the CL implementation that is required to load
them. But the following is not just a requirement for dh-lisp but is
needed if packages want to contain precompiled FASLs.
To prevent such a package with precompiled lisp to end up in a stable
release without the appropriate implementation, the package has to
depend on a specific version of the implementation that is able to
read the FASL format.
CMUCL: This is easy and needs no modification, as the FASL format is
available in the package version. CMUCL 19B has the FASL
versions 19B also
SBCL: Changes FASL file versions very often still. I sent a patch to
the darcs repository of Peter that adds a
"Provides: sbcl-fasl-loader-XX" to debian/control, XX being the
fasl file version which is determined at build time
Clisp: It is the same practice as with SBCL. As Clisp unfortunately
has no repository on cl-debian.alioth.debian.org ;-), I attach
a patch to this message.
GCL: No idea, really, I never touched it and do not know if it breaks
binary compatibility now and then. ;-)
Depending on foo-fasl-loader-XX will prevent a fasl-providing package
from entering testing/stable before the implementation version that
provides foo-fasl-loader-XX. It will however not prevent
foo-fasl-loader-XX+1 from entering testing, even though packages in
testing depend on foo-fasl-loader-XX.
But it enables the maintainer to see, that his package is uninstallable
in testing, easily, and that the package needs a rebuild to work with a
new version of CMUCL/SBCL/Clisp.
After all, this shall prevent binary-incompatible packages silently
being around in a stable release.
Regards,
René
-------------- next part --------------
diff -u clisp-2.34/debian/rules clisp-2.34/debian/rules
--- clisp-2.34/debian/rules
+++ clisp-2.34/debian/rules
@@ -119,6 +119,10 @@
dh_installdeb
dh_shlibdeps
echo $(XLIBS_PRE_DEPENDS) >>debian/clisp.substvars
+
+# add FAS file format version to substvars
+ debian/clisp/usr/bin/clisp -M debian/clisp/usr/lib/clisp/full/lispinit.mem debian/fasl-version.lisp
+
dh_gencontrol
dh_md5sums -Xlispinit.mem
dh_builddeb
diff -u clisp-2.34/debian/control clisp-2.34/debian/control
--- clisp-2.34/debian/control
+++ clisp-2.34/debian/control
@@ -9,7 +9,7 @@
Architecture: any
Pre-Depends: ${xlibs:PreDepends}
Depends: ${shlibs:Depends}, common-lisp-controller (>= 4.2)
-Provides: lisp-compiler
+Provides: lisp-compiler, ${clisp:fasl-version}
Suggests: gdb
Conflicts: clisp-doc (<< 1:2.31-1)
Description: GNU CLISP, a Common Lisp implementation
only in patch2:
unchanged:
--- clisp-2.34.orig/debian/fasl-version.lisp
+++ clisp-2.34/debian/fasl-version.lisp
@@ -0,0 +1,18 @@
+;;;; Find out the FASL version of this Clisp release and dump it to the
+;;;; debian/clisp.substvars variable, so it can be used in
+;;;; debian/control
+;;;;
+;;;; Packages that want to provide binary Clisp FASLs can then depend
+;;;; on clisp-fasl-loader-XX
+;;;;
+;;;; -- René van Bevern <rvb at pro-linux.de>, Sat Sep 3 19:23:20 2005
+
+(with-open-file (substvars "debian/clisp.substvars"
+ :direction :output
+ :if-exists :append
+ :if-does-not-exist :create)
+ (format substvars "~&clisp:fasl-version=clisp-fasl-loader-~A~%"
+ (car (system::version))))
+
+(ext:quit)
+
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 307 bytes
Desc: not available
URL: <https://mailman.common-lisp.net/pipermail/cl-debian/attachments/20050904/9f883031/attachment.sig>
More information about the Cl-debian
mailing list