[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