RkBlog

Hardware, programming and astronomy tutorials and reviews.

Budowanie pakietów w Pardusie

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.

actions.py

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

pspec.xml

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/.
RkBlog

Pardus, 14 July 2008, Piotr Maliński

Comment article