Login
Newsletter
Werbung

Fr, 22. Juli 2005, 00:00

Common Lisp in Debian und Ubuntu

»Common Lisp in Debian und Ubuntu« zeigt, wie Debian und Ubuntu - und auch Gentoo - Common-Lisp-Implementierungen und -Bibliotheken ins System integrieren und wie die Koordination des CL-Teams von Debian und Ubuntu erfolgt.

Vorwort

Anwendungen und Bibliotheken in der Programmiersprache Common Lisp auszuliefern, kann sich als schwierig erweisen, denn als ANSI-standardisierte Sprache existieren eine Vielzahl von Implementierungen, die jenseits des Standards recht unterschiedliche Erweiterungen mitliefern und zudem unterschiedliche Formate für den kompilierten Code benutzen.

Einige Implementierungen übersetzen den Quelltext zu Bytecode, andere zu echtem Maschinencode, manchmal ist eine Übersetzung auch gar nicht notwendig, denn der Common-Lisp-Programmierer kann einzelne Funktionen kompilieren, andere jedoch interpretiert lassen oder nur einzeln neukompilieren, um Testzyklen zu verkürzen.

Zudem verfolgen unterschiedliche Implementierungen unterschiedliche Ziele: einige ermöglichen näheren Zugriff auf Systemfunktionen, andere sollen einfach in andere Sprachen eingebettet werden. Das macht es unmöglich, eine Implementierung innerhalb von Debian zum Standard zu deklarieren und Bibliotheken und Applikationen nur für diese anzubieten.

Neben ein paar Informationen über Debians und Ubuntus Common-Lisp-Team zeigt der folgende Artikel, wie diese die Lisp-Bibliotheken und -Implementierungen bereitstellen und in das System integrieren. Debians Verfahren hat sich im Laufe der Zeit zur Distributionsunabhängigkeit entwickelt und kommt neben dem Debian-Derivat Ubuntu auch in der Gentoo-Distribution zum Einsatz.

Organisation

Die Arbeit an Debians Common-Lisp-Paketen erfolgt in einer Gruppe von Debian-Maintainern. Obwohl jeder im Prinzip für seine eigenen Pakete verantwortlich ist, sind alle gleichermaßen über die Fehlerberichte aller Pakete informiert. Dies sind im offiziellen Debian-Archiv derzeit ungefähr 140 Stück - meist erkennbar an ihrem »cl-«-Präfix.

Derzeit befindet sich eine Infrastruktur zur gemeinsamen Arbeit und Wartung der Pakete im Aufbau. Diese Infrastruktur wird durch Debians Alioth zur Verfügung gestellt, wobei die gemeinsame Arbeit voraussichtlich über das Darcs-Versionskontrollsystem erfolgen wird, da es die einfache Mitarbeit außenstehender Programmierer erlaubt, indem es Änderungen per E-Mail an das Repository senden kann. Die Alioth-Infrastruktur soll in Zukunft außerdem die weiter aufgeführten Ressourcen vereinen.

Mit zunehmender Nachfrage nach aktuellen Lisp-Paketen für Ubuntu hat Peter Van Eynde MOTUCommonLisp gegründet - ein Team, welches zum jetzigen Zeitpunkt ziemlich am Anfang steht und Debians Pakete auf Ubuntus Universe-Zweig zu portieren versucht. MOTU bedeutet hier - wie in der Welt von He-Man und Skeletor - »Masters of the Universe«. Obwohl Debianpakete normalerweise automatisch nach Ubuntu gelangen, klappt dies nicht immer, wenn die Unterschiede der Distributionen zu groß sind.

Kommunikation

Die Koordination der Arbeit in Debian und Ubuntu erfolgt an gleicher Stelle, der CL-Debian-Mailingliste. Die bevorzugte Stelle für Fehlerberichte ist das Bugtrackingsystem von Debian, denn alle dort eingereichten Berichte landen automatisch auf der Mailingliste, so dass es einfach möglich ist, Patches für die Pakete anderer Maintainer zu liefern.

Für rein Ubuntu-spezifische Sachen steht die MOTUCommonLisp-Wikiseite zur Verfügung, die Quellen für Ubuntu-Pakete zeigt und die Aufgaben, die nötig sind, um Ubuntu auf Debians Stand zu halten, nochmals festhält, denn derzeit ist die Unterstützung in Debian ausgereifter und aktueller.

Ressourcen

Neben den offiziellen Debian- und Ubuntu-Archiven stehen noch weitere Apt-Depots zur Verfügung, die aktuelle Versionen von Lisp-Paketen auch für schon fertige Debian- und Ubuntu-Versionen anbieten. Weitere Gründe für externe Archive können in Lizenzproblemen oder noch experimenteller Software liegen.

Peter Van Eynde betreibt ein solches Depot für Debian Unstable, Stable und die jeweils zuletzt herausgegebene Ubuntu-Version mit Paketen von mehreren CL-Maintainern. Von dort gibt es auch die CL-Entwicklungsumgebung Slime. Ein weiteres stellt René van Bevern zur Verfügung.

Common-Lisp-Controller

Debian stellt eine vielzahl von Lisp-Paketen zur Verfügung: Anbindungen an SQL, SDL, OpenGL, GTK, Bibliotheken für reguläre Ausdrücke, HTML-Templates und -Generatoren, XML-Verarbeitung und Module für Webserver. Daher wäre es ziemlicher Wahnsinn, ein Extrapaket für jede einzelne von Debian unterstützte Implementierung zu liefern, denn die freien sind derzeit GNU Clisp, CMU Common Lisp, GNU Common Lisp und Steel Bank Common Lisp. Jede der bereitgestellten Bibliotheken lässt sich in allen unterstützten Implementierungen mit (clc:clc-require :bibliothek) laden.

Common-Lisp-Pakete werden in Debian daher im Quelltext ausgeliefert und der Common-Lisp-Controller hat die Aufgabe, diese auf dem System des Entwicklers mit seiner bevorzugten Implementierung zu kompilieren. Neben Ubuntu hat Gentoo dieses System ebenfalls übernommen. Die Kompilierung geschieht meist erst dann, wenn der Entwickler die Bibliothek mittels des vom CLC zur Verfügung gestellten Kommandos (clc:clc-require :bibliothek) lädt. Findet dieser bereits kompilierte Objekte, verwendet er diese.

Der Common-Lisp-Controller setzt dabei sehr stark auf ASDF - Another System Definition Utility - das make der Lisp-Welt. ASDF hilft dabei, Komponenten eines Lisp-Systems (einer Anwendung oder Bibliothek) und ihre Abhängigkeiten zueinander festzuhalten. Diese Komponenten sind in der Regel Lisp-Quelldateien, können aber auch fremde Bibliotheken und C-Dateien sein. ASDF benutzt das Common-Lisp-Objektsystem ausgiebig und erlaubt dem Programmierer die Definition neuer Arten von Komponenten, und wie diese zu laden oder kompilieren sind.

Es folgen ein paar Paketierungshinweise für prospektive CL-Debian-Helfer.

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung