Budowanie pakietów w Pardusie nie jest zbyt skomplikowane, lecz wymaga pewnej znajomości kodu jaki chcemy przeistoczyć w pakiet. Do dyspozycji mamy
repozytorium źródłowe, które zawiera pliki potrzebne do budowy poszczególnych pakietów. By zbudować pakiet musimy mieć następujące pliki w określonej strukturze:
component.xml
katalog/
/pspec.xml
/actions.py
/files/
/comar/
Gdzie
component.xml to plik opisujący kategorię (nazwa i opis kategorii), wystarczy pobrać taki plik z repozytorium.
pspec.xml opisuje pakiet, a
actions.py sposób budowy pakietu z kodu źródłowego. Katalog
/files/ jest opcjonalny i może zawierać dodatkowe pliki jakie mają być dołączone do pakietu. Również opcjonalnym jest katalog
/comar/ zawierający skrypty dla comara, jeżeli są wymagane. Oba katalogi jak i dwa pliki umieszczamy w katalogu, któremu powinniśmy nadać taką samą nazwę jak nazwa pakietu (lecz nie jest to wymagane). Gdy mamy wszystko gotowe wystarczy przejść do katalogu z
pspec.xml i wydać polecenie:
pisi build pspec.xml
Jeżeli nie będzie błędów w pspec.xml i actions.py pakiet zostanie zbudowany i umieszczony w bierzącym katalogu.
Oto actions.py dla gry wesnoth:
from pisi.actionsapi import autotools
from pisi.actionsapi import pisitools
def setup():
autotools.configure("--disable-gnome1 --disable-gnome2 --with-kde --disable-dependency-tracking --enable-editor")
def build():
autotools.make()
def install():
autotools.install()
pisitools.dodoc("ChangeLog", "NEWS", "TODO", "doc/README")
To typowy skrypt dla kompilacji/instalacji ./configure, make, make install. Oprócz tego mamy
pisitools.dodoc, które dodaje do katalogu dokumentacji podane pliki ze źródłowej paczki. Pełne api dla actions.py opisane jest
na wiki Pardusa. Jeżeli chcemy zainstalować coś w inny sposób to najlepiej poszukać w repozytorium źródłowym aplikacji, która budowana jest w identyczny sposób (np. moduły kernela).
Plik pspec.xml podaje dane o pakiecie takie jak odnośnik do pliku ze źródłami, sumę kontrolną sha1, opisy, numer wersji i wydania. Oto przykładowy plik pspec.xml:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pardus.org.tr/projeler/pisi/pisi-spec.dtd">
<PISI>
<Source>
<Name>nazwa pakietu</Name>
<Homepage>http://www.strona pakietu.org/</Homepage>
<Packager>
<Name>Jan</Name>
<Email>1@1.pl</Email>
</Packager>
<License>GPL-2</License>
<IsA>app:gui</IsA>
<Summary>krótki opis</Summary>
<Archive sha1sum="suma_kontrolna" type="tarbz2">odnośnik do źródeł</Archive>
<BuildDependencies>
<Dependency>zależność budowy</Dependency>
<Dependency>libsdl</Dependency>
<Dependency>sdl-image</Dependency>
<Dependency>sdl-net</Dependency>
<Dependency>sdl-mixer</Dependency>
</BuildDependencies>
</Source>
<Package>
<Name>nazwa</Name>
<RuntimeDependencies>
<Dependency>zależność do działania</Dependency>
<Dependency>libsdl</Dependency>
<Dependency>sdl-image</Dependency>
</RuntimeDependencies>
<Files>
<Path fileType="executable">/usr/bin</Path>
<Path fileType="data">/usr/share/wesnoth</Path>
<Path fileType="data">/usr/share/applications</Path>
<Path fileType="doc">/usr/share/doc/</Path>
<Path fileType="man">/usr/share/man/</Path>
<Path fileType="data">/usr/share/icons</Path>
<Path fileType="data">/usr/share/applnk</Path>
</Files>
<AdditionalFiles>
<AdditionalFile target="/usr/share/applications/wesnoth.desktop">wesnoth.desktop</AdditionalFile>
</AdditionalFiles>
</Package>
<History>
<Update release="1">
<Date>2006-01-31</Date>
<Version>1.0.2</Version>
<Comment>First build</Comment>
<Name>Jan Kowalski</Name>
<Email>1@1.pl</Email>
</Update>
</History>
</PISI>
"Najtrudniejsza" część to:
<Files>
<Path fileType="executable">/usr/bin</Path>
<Path fileType="data">/usr/share/wesnoth</Path>
<Path fileType="data">/usr/share/applications</Path>
<Path fileType="doc">/usr/share/doc/</Path>
<Path fileType="man">/usr/share/man/</Path>
<Path fileType="data">/usr/share/icons</Path>
<Path fileType="data">/usr/share/applnk</Path>
</Files>
Określamy ścieżki, do który mają trafić pliki pakietu. Musimy je znać. Do tego określamy jakiego typu będą to pliki (wykonywalne, dane, dokumentacja itp.) Powyższe tyczą się gry wesnoth. Fragment:
<AdditionalFiles>
<AdditionalFile target="/usr/share/applications/wesnoth.desktop">wesnoth.desktop</AdditionalFile>
</AdditionalFiles>
To przykład dodania pliku z katalogu /files/.
- Dodane: 14.07.2008 przez riklaunim