ACTİONSAPI

Bu belgede Actions API tanıtılmış ve içerisindeki fonksiyonların işlevleri açıklanmış ve örneklendirilmiştir. PİSİ mimarisi ya da PİSİ paketi hazırlama ile ilgili bilgilere yer verilmemiştir. 

Actions


Bir uygulamanın ikili bir PİSİ paketi haline getirilmesi sürecinde PİSİ'nin inşa (build) sistemi tarafından kullanılan minimum bileşenler, paketlenecek uygulamanın kaynak kodu, pspec.xml dosyası ve actions.py dosyasıdır. Ayrıca varsa yamalar ve ek dosyalar da uygulamanın kaynak kodunun parçası olarak düşünülebilir.

pspec.xml dosyası uygulamanın kaynak kodunu taşıyan arşiv dosyasının nereden çekileceği, bu arşiv dosyası açılırken hangi yamaların uygulanacağı, bu uygulamayı kimin paketlemiş olduğu, uygulamanın adı, sürüm numarası gibi meta sayılabilecek bilgilerin saklandığı dosya iken, bu uygulamanın derlenmesi ve inşa edilmesi aşamasında yapılması gereken işlerin tarifi de, bu belgede bahsedilecek olan Actions API'dan faydalanan actions.py dosyası içerisinde yer alır. Örnek bir actions.py dosyası aşağıdaki gibidir:

#!/usr/bin/python 
# -*- coding: utf-8 -*-
# 
# Copyright 2005 TUBITAK/UEKAE 
# Licensed under the GNU General Public License, version 2. 
# See the file http://www.gnu.org/copyleft/gpl.txt. 
# 
# Gökçen Eraslan   
     
from pisi.actionsapi import autotools
from pisi.actionsapi import pisitools
from pisi.actionsapi import get 
     
def setup():
    autotools.configure("--enable-nls --bindir=/bin --with-rmt=/usr/sbin/rmt") 

def build():
    autotools.make() 

def install():
    autotools.rawInstall("DESTDIR=%s" % get.installDIR())
    pisitools.dodoc("ChangeLog", "NEWS", "README", "INSTALL")
    pisitools.remove("/usr/share/man/man1/mt.1")
    pisitools.removeDir("/usr/libexec")

Bu belgede actions.py dosyası içerisinde uygulamanın yapılandırılması, inşa edilmesi ve paketlenmek üzere kurulumu işlevlerinin gerçekleştirilebilmesi için Actions API tarafından sağlananlar üzerinde durulacaktır.

Belge içerisinde sık sık bahsedilen kurulum (install) işlemi, uygulamanın gerçek sisteme kurulumu ile karıştırılmamalıdır. Bu belgede bahsedilen kurulum işlemi aksi belirtilmediği sürece, uygulamanın paketlenmesinden bir önceki aşama olan ve bu paket gerçek sistemde kurulurken hangi dosyanın nereye gitmesi gerektiğinin anlaşılması için yapılan sanal bir kurulum işlemidir.

Actions API


Actions API, PİSİ paketlerinin oluşturulması esnasında paketi oluşturacak kaynağın hangi işlemlere tabi tutulacağına dair bilgilerin Python programlama dili ile yazıldığı actions.py isimli dosya içerisinden, paket yapıcıların kullanabileceği fonksiyonları barındıran kütüphanedir. Paket yapılırken bu kütüphane dışında herhangi bir Python modülü kullanılmaması şiddetle tavsiye edilir, fakat paketleyici bu konuda özgürdür.

actions.py isimli dosya, kaynak koddan bir ikili ve kurulmaya hazır PİSİ paketi oluşturma sürecini tarif eden bir dosyadır. Bu dosya içerisinde beklenen tarifin doğru şekilde yapılabilmesi için paket yapıcının, yapmakta olduğu paketi yeterince tanıması gereklidir. Öte yandan paket yapıcı için bu kaynağın daha önce paketlendiği dağıtımların paket sistemlerinin spec dosyalarına göz atarak hızlı bir şekilde paketin nasıl oluşturulması gerektiğine dair fikir sahibi olması da mümkündür, fakat bunun PİSİ'nin diğer paket yöneticileri ile arasında organik bir bağ olduğu şeklinde yorumlanması yanlış olur; çünkü PİSİ diğer paket yöneticilerinin hiç birisi ile arasında bir ilişki olmayan yeni bir paket yöneticisidir.

Actions API içerisinde paket yapıcılara sunulan fonksiyonlar amaçlarına göre birbirinden ayrılmış ve ayrı modüller içerisinde toplanmışlardır. Her bir modülün actions.py içerisinden dahil edildiğinde hangi fonksiyonları sunduğu ve bu fonksiyonların özellikleri sonraki başlıklarda incelenmiştir. Bununla beraber modüllerin basitçe amaçları şu şekilde tanımlanabilir:

  • Autotools: Uygulama derlemek ve kurmak için gerekli olan standart işlevleri sunar.
  • Cmaketools: cmake ile yapılandırılan uygulamaları derlemek ve kurmak için gerekli olan standart işlevleri sunar.
  • Pisitools: Pisitools, içerisinde paket yapıcıların en sık kullanacağı fonksiyonları sunan modüldür. Özel durumlar dışında tüm işlemler bu modüldeki fonksiyonlar yardımı ile gerçekleştirilmelidir. Bu modül ile beraber gelen fonksiyonların tümü relative path'ler ile çalışır ve çok büyük bir kısmı da work dizininden install dizinine dosya taşıma işlerinde kullanılırlar. Bununla beraber symlink oluşturma, dosyalar üzerinde değişiklik yapma (sed ile), dosya ya da dizin silme gibi ihtiyaçlara da yanıt verir.
  • Shelltools: Bu modül ile beraber özel durumlarda kullanılabilecek fonksiyonlar sunulur. Kimi işlevler pisitools içindeki işlevlerle benzerlik gösterir, fakat shelltools içerisindekilere absolut path verebilir, böylece sıkça karşılaşılmayacak work dizininden work dizinine, install dizininden install dizinine doysa taşıma işlemleri, dosya izinlerini değiştirme, kabuk'ta komut çalıştırma, çalışma dizini değiştirme gibi ihtiyaçlar karşılanabilir. Fakat mümkün olan her durumda Pisitools içerisindeki fonksiyonların tercih edilmesi şarttır. Shelltools içerisindeki fonksiyonlar paketleyiciyi tamamen özgür bıraktığı için dikkatli bir şekilde kullanılmalılardır.
  • Libtools: Kütüphanelerin doğru şekilde yapılandırılması, uygulamanın doğru şekilde derlenebilmesi için ihtiyaç duyulan derleme öncesi ve sonrası işlevlerini sunar.
  • Get: Derleme öncesi yapılandırma, derleme ve kurulum esnasında ihtiyaç duyulabilecek çeşitli ortam değişkenlerinin ve paket ile ilgili bilgilerin elde edilmesi için işlevler sunar.
  • Kde: KDE uygulamaları için derleme öncesi yapılandırma, derleme ve kurulum işlevlerini sunar.
  • Perlmodules: Perl modüllerinin kurulumu için gerekli işlevleri sunar.
  • Pythonmodules: Python modüllerinin derlenmesi, kurulması, çalıştırılması gibi işlevleri sunar.
  • Scons: Scons yeni nesil bir yazılım inşa aracıdır, geliştiricilere geleneksel autoconf/automake araçlarının yerini alabilecek bir yapı sunar. Autotools modülünün autoconf/automake için sunduklarını, Scons modülü de scons ile inşa edilmek üzere hazırlanmış uygulamalar için sunar.

Takip eden bölümlerde modüllerle ilgili açıklamalar yer almaktadır. Fonksiyonlar modüllerin altbaşlıkları olarak gösterilmiştir, fonksiyon ismini takip eden satırda fonksiyonun aldığı parametreler belirtilmiş (bir fonksiyon hiç parametre almadığı None belirtimi ile ifade edilmiştir), takip eden paragrafta nasıl bir işlev sunduğu açıklanmış, bu açıklamanın ardından da örnek bir kullanımı verilmiştir.


Pisitools

Pisitools modülü bir paket geliştiricisinin en çok ihtiyaç duyabileceği işlevleri barındıran modüldür. Ayrıca, paket yapıcının çağırdığı fonksiyonlardaki parametrelerin başına otomatik olarak çalışma dizinlerini ekleyerek onun sistemin gerçek dosyalarına erişmeden sanal bir dizin içerisinde çalışabilmesine olanak sağlar. Pisitools modülünün sunduğu bu rahatlık kimi durumlarda engelleyici olabilmektedir, bu gibi durumda da tüm kontrolü paket yapıcıya bırakan Shelltools modülü içerisindeki işlevlerden yararlanılabilir.

pisitools alt yordanları.
dobin dodir dodoc doexe dohtml doinfo dolib dolib_a dolib_so doman domo domove dosed dosbin dosym insinto newdoc newman remove rename removeDir


dobin

 pisitools.dobin(sourceFile, destinationDirectory = '/usr/bin') 

work dizini içerisindeki yolu sourceFile ile verilen bir çalıştırılabilir destinationDirectory parametresi ile tam yolu verilmiş dizin içerisine koyar. Bu parametrenin öntanımlı değeri ``/usr/bin dizinidir.

pisitools.dobin("sed/sed", "/bin")
pisitools.dobin("zipsplit") 

dodir

pisitools.dodir(destinationDirectory) 

Install dizini içerisine destinationDirectory ile belirtilmiş isimde bir dizini oluşturur.

pisitools.dodir("/usr/include/awk")
pisitools.dodir("/usr/" + get.HOST() + "/include")
pisitools.dodir("/usr/share/doc/%s/examples" % get.srcTAG())

dodoc

pisitools.dodoc(*sourceFiles) 

work dizini içerisinden yolu verilen dosya ya da dosya listesini install dizni altındaki /usr/share/doc/PACKAGE altına kopyalar. Metakarakter kullanılabilir.

pisitools.dodoc("README")
pisitools.dodoc("*.html")
pisitools.dodoc("FAQ", "README", "ChangeLog.*", "algorithm.txt")

doexe

pisitools.doexe(sourceFile, destinationDirectory) 

work dizinindeki yolu verilen bir dosyayı destinationDirectory ile belirlenen install dizini içerisindeki hedefe çalıştırılabilir dosya olarak kopyalar. sourceFile için Metakarakter kullanılabilir.

pisitools.doexe("extras/scsi-devfs.sh", "/etc/udev/scripts/")
pisitools.doexe("etc/hotplug/*.rc", "/etc/hotplug/")

dohtml

pisitools.dohtml(*sourceFiles) 

work dizini içerisinden yolu verilen dosya ya da dosya listesini install dizni altındaki /usr/share/doc/PACKAGE/html altına kopyalar. Metakarakter kullanılabilir.

pisitools.dohtml("index.html")
pisitools.dohtml("doc/*")

doinfo

pisitools.doinfo(*sourceFiles) 

work dizini içerisinden yolu verilen dosya ya da dosya listesini install dizni altındaki /usr/share/info altına kopyalar. Metakarakter kullanılabilir.

pisitools.doinfo("*.info")

dolib

pisitools.dolib(sourceFile, destinationDirectory = '/usr/lib') 

work dizini içerisindeki bir kütüphaneyi öntanımlı olarak install dizini altında /usr/lib içerisine kopyalar.

pisitools.dolib("libz.a")
pisitools.dolib("lib/libpci.a")
pisitools.dolib("libbz2.so.1.0.2", "/lib")

dolib_a

pisitools.dolib_a(sourceFile, destinationDirectory = '/usr/lib')

work dizini içerisindeki bir statik kütüphaneyi öntanımlı olarak install dizini altında /usr/lib içerisine gerekli dosya izinleri ile kopyalar.

pisitools.dolib_a("lib/libpci.a")
pisitools.dolib_a("libdb1.a")

dolib

pisitools.dolib_so(sourceFile, destinationDirectory = '/usr/lib') 

work dizini içerisindeki bir paylaşımlı kütüphaneyi öntanımlı olarak install dizini altında /usr/lib içerisine gerekli dosya izinleri ile kopyalar.

pisitools.dolib_so("libdb1.so.2")

doman

pisitools.doman(*sourceFiles) 

work dizini içerisinden yolu verilen dosya ya da dosya listesini install dizni altındaki /usr/share/man/ altına kopyalar. Metakarakter kullanılabilir.

pisitools.doman("logrotate.8")
pisitools.doman("doc/bash.1", "doc/bashbug.1", "doc/builtins.1", "doc/rbash.1")
pisitools.doman("*.[1-8]")

domo

pisitools.domo(sourceFile, locale, destinationFile ) 

work dizini içerisindeki yolu sourceFile ile verilen bir po dosyasını, locale ile belirlenen dil için derleyerek bir mo dosyası oluşturur ve bu dosyayı install altındaki /usr/share/locale/LOCALE/LC_MESSAGES dizini içerisine destinationFile ile verilen isimle kopyalar.

pisitools.domo("po/tr.po", "tr", "pam_login.mo")

domove

pisitools.domove(sourceFile, destination, destinationFile = )

install dizini içerisindeki yolu sourceFile ile verilen dosyayı, yine install dizini içerisindeki yolu destination ile verilen dizin içerisine eğer belirtilmişse destinationFile ismi ile taşır.

pisitools.domove("/usr/bin/passwd", "/bin/")
pisitools.domove("/usr/bin/yacc", "/usr/bin", "yacc.bison")
pisitools.domove("/usr/docs/", "/usr/share/doc/%s/html/" % get.srcTAG())

dosed

pisitools.dosed(sourceFile, findPattern, replacePattern = )

work dizini içerisindeki yolu verilen sourceFile içerisinde istenen değişiklikleri yapar (FIXME: dosed dökümantasyonunun biraz daha genişletilmesi gerekli).

pisitools.dosed("gcc/version.c", "" , "")
pisitools.dosed("sshd_config", "(?m)(#UsePAM ).*", r"UsePAM yes")
pisitools.dosed("unix/Makefile", "-O3", get.CFLAGS())
pisitools.dosed("Make.Rules", "HAVE_NDBM_H=yes", "HAVE_NDBM_H=no")
pisitools.dosed("Makefile.def", "CC=cc", "CC=%s" % get.CC())
pisitools.dosed("automake.texi", "(?m)(@setfilename.*)automake", r"1automake1.7")

dosbin

pisitools.dosbin(sourceFile, destinationDirectory = '/usr/sbin') 

work dizininde içerisindeki yolu sourceFile ile verilen bir çalıştırılabilir dosyayı öntanımlı olarak /sbin verilmiş ise destinationDirectory ile tam yolu verilmiş dizin içerisine kopyalar.

pisitools.dosbin("traceroute6")
pisitools.dosbin("extras/scsi_id/scsi_id", "/sbin")

dosym

pisitools.dosym(sourceFile, destinationFile) 

install dizini içerisinde göstereceği yol sourceFile ile verilmiş olan ve install dizin içerisindeki yolu destinationFile ile verilmiş bir symlink oluşturur.

pisitools.dosym("gzip", "/bin/gunzip")
pisitools.dosym("libdb1.so.2", "/usr/lib/libdb.so.2")
pisitools.dosym("../bin/lsmod", "/sbin/lsmod")
pisitools.dosym("/usr/X11R6/include/X11", "/usr/include/X11")

insinto

pisitools.insinto(destinationDirectory, sourceFile,  destinationFile = , sym = True) 

work dizini içerisindeki yolu sourceFile ile verilmiş olan bir dosyayı install dizini içerisindeki yolu destinationDirectory ile verilmiş olan dizin içerisine, eğer verilmişse destinationFile ismi ile, eğer verilmemişse kendi adı ile kopyalar. Dosyanın work dizini içerisindeki uid/guid ve izinleri korunur. destinationFile parametresi kullanılmamışsa, sourceFile için metakarakter kullanılabilir.

pisitools.insinto("/opt/rar/bin", "rar")
pisitools.insinto("/etc/", "doc/nanorc.sample", "nanorc")
pisitools.insinto("/etc/hotplug", "etc/hotplug/*map")

newdoc

pisitools.newdoc(sourceFile, destinationFile) 

work dizini içerisindeki yolu sourceFile ile verilmiş olan dosyayı /usr/share/doc/PACKAGE/ dizini içerisine destinationFile adı ile kopyalar.

pisitools.newdoc("extras/volume_id/README", "README_volume_id")
pisitools.newdoc("gprof/ChangeLog.linux", "gprof/ChangeLog.linux")
pisitools.newdoc("bfd/PORTING", "bfd/PORTING")

newman

pisitools.newman(sourceFile, destinationFile) 

work dizini içerisindeki yolu sourceFile ile verilmiş olan dosyayı /usr/share/man/manPREFIX/ dizini içerisine destinationFile adı ile kopyalar.

pisitools.newman("less.nro", "less.1")

remove

 pisitools.remove(sourceFile) 

install dizini içerisindeki yolu sourceFile ile verilmiş olan dosyayı siler.

pisitools.remove("/usr/lib/libdb_cxx.so")

rename

pisitools.rename(sourceFile, destinationFile) 

install dizini içerisindeki yolu sourceFile ile verilen dosyayı, bulunduğu dizinde destinationFile olarak isimlendirir.

pisitools.rename("/usr/bin/bash", "bash.old")

removeDir

pisitools.removeDir(destinationDirectory) 

install dizini içerisindeki yolu destinationDirectory ile verilmiş olan dizini tüm içeriği ile beraber siler.

pisitools.removeDir("/usr/lib")

Autotools

autotools alt yordanları.
configure rawConfigure compile make install rawInstall aclocal autoconf autoreconf automake autoheader


configure

autotools.configure(parameters = "")

Kaynağı parameters ile verilen parametreler ve PİSİ'nin ön tanımlı yapılandırma parametreleri ile yapılandırır. Fonksiyonun parametreli ile ya da parametresiz çağırıldığı farketmeksizin, her durumda prefix, host, mandir, infodir, datadir, sysconfdir, localstatedir parametreleri öntanımlı değerleri configure betiğine gönderilir. Bu öntanımlı değerler ``PisiKaynakDizini/pisi/actionsapi/variables.py içerisinden görüntülenebilir.

autotools.configure()
autotools.configure("--with-libusb")

rawConfigure

autotools.rawConfigure(parameters = "", prefix="")

Kaynağı parameters ile verilen parametreler ile hiç bir öntanımlı yapılandırma parametresi olmaksızın yapılandırır.

autotools.rawConfigure()
autotools.rawConfigure("--prefix %s/usr --with-doxywizard" % get.installDIR())
autotools.rawConfigure("--enable-nls --enable-freetype --disable-xmltest)

compile

autotools.compile(parameters = "")

Compile the package with default GCC binutils, C flags and the parameters given by the user.

autotools.compile("-I/usr/include/dvdread -o dvdbackup src/dvdbackup.c -ldvdread")

make

autotools.make(parameters = "")

Kaynağı parameters ile verilen parametreler ile inşa eder.

autotools.make()
autotools.make("local-all")
autotools.make("LIBS=%s" % get.LDFLAGS())
autotools.make("-j1")

install

autotools.install(parameters = "")

Kaynağı parameters ile verilen parametreler ve PİSİ'nin ön tanımlı kurulum parametreleri ile kurulum dizini içerisine kurar.

autotools.install()
autotools.install("libdir=%s/usr/lib" % get.installDIR())

rawInstall

autotools.rawInstall(parameters = "")

Kaynağı verilen parametreler ile kurulum dizini içerisine kurar.

autotools.rawInstall("DESTDIR=%s" % get.installDIR())
autotools.rawInstall("DESTDIR="%s" docdir=/usr/share/doc/%s/html" % (get.installDIR(), get.srcTAG()))

aclocal

autotools.aclocal(parameters = "")

configure.in dosyasının içeriğine göre bir aclocal.m4 oluşturmak için çağırılır.

autotools.aclocal("-I cmulocal -I config")
autotools.aclocal("-I m4")
autotools.aclocal()

autoconf

autotools.autoconf(parameters = "")

configure betiğinin oluşturulması için çağırılır.

autotools.autoconf()

autoreconf

autotools.autoreconf(parameters = "")

configure betiğinin tekrar oluşturulması için çağırılır.

autotools.autoreconf()

automake

autotools.automake(parameters = "")

makefile dosyasının oluşturulması için çağırılır.

autotools.automake("-afc")
autotools.automake("--add-missing")
autotools.automake()

autoheader

autotools.autoheader(parameters = "")

configure için şablon dosyalarının oluşturulması için çağırılır.

autotools.autoheader()

Cmaketools

 

configure make install rawInstall


configure

cmaketools.configure( parameters, sourceDir, installPrefix = '%s' % get.defaultprefixDIR())

Kaynağı verilen parametreler ile yapılandırır.

cmaketools.configure()

cmaketools.configure(installPrefix="%s" % (get.kdeDIR()))

cmaketools.configure("-DCMAKE_BUILD_TYPE=None -DKDEDIR=%s" % get.kdeDIR(), sourceDir="..")

make

cmaketools.make(parameters)

Kaynağı parameters ile verilen parametreler ile inşa eder.

cmaketools.make()
cmaketools.make("LIBS=%s" % get.LDFLAGS())
cmaketools.make("-j1")

install

cmaketools.install(parameters, argument='install')

Kaynağı parameters ile verilen parametreler ve PİSİ'nin ön tanımlı kurulum parametreleri ile kurulum dizini içerisine kurar.

cmaketools.install()
cmaketools.install("libdir=%s /usr/lib" % get.installDIR())

rawInstall

rawInstall(parameters,argument='install')

Kaynağı install'dan farklı olarak sadece parameters ile verilen parametreler ile kurar.

cmaketools.rawInstall("PREFIX=%s" % get.installDIR())

Libtools


preplib

libtools.preplib(sourceDirectory = "/usr/lib") 

Belirtilen dizin için ldconfig komutunu çalıştırır.


gnuconfig_update

libtools.gnuconfig_update(None)

En yeni config.* dosyalarını kaynak üzerine kopyalar.


libtoolize

libtools.libtoolize(parameters = "") 

Bir kaynağı libtool kullanabilecek hale getirir. Bunun, için kaynak dizininde "/usr/bin/libtoolize" uygulamasını parameters ile verilmiş parametreler ile çağırır.


gen_usr_ldscript

libtools.gen_usr_ldscript(dynamicLib)

Pisi /lib dizini altında dinamik, /usr/lib altında da statik olarak kritik kütüphanelere sahip olduğundan, bağlama (linking) problemleri ile karşılaşmamak için /usr/lib dizini altında sahte bir dinamik kütüphane oluşturmamız gerekiyor. Bu amaçla /usr/lib dizini altında 'dynamicLib' parametresi ile verilen isimde bir dosyayı yazma modu ('w') ile açarak, boş bir dosya oluşturuyoruz. Daha sonra da içerisine açıklama niteliğinde karakter dizisi yerleştirerek, ardından dosya izinlerini değiştiriyoruz (öntanımlı 0755).


Shelltools

Pisitools ile yer yer benzer işlevler sunar (örneğin pisitools.domove() ile shelltools.move() teorik olarak aynı işlevi sunarlar). Fakat shelltools modülü, pisitools modülünün paket yapıcıya sunduğu rahatlığı sunmaz. Pisitools modülü ile çalışılırken, fonksiyon çağrılarına çalışma dizinleri otomatik olarak eklenirken, shelltools ile paket yapıcı daha özgürdür ve biraz daha dikkat etmek zorundadır, çünkü çalışma dizini dışında kalan, sistemin gerçek dosyalarına da erişme şansı vardır.

Paket yapıcıların gerekmediği sürece shelltools modülünü kullanmamaları, bunun yerine eğer mümkünse ihtiyaç duydukları işlevleri pisitools modülünden karşılamaları beklenir.


can_access_file

shelltools.can_access_file(sourceFile)

Tam yolu sourceFile ile verilmiş olan dosyanın erişilebilir olup olmadığını bilgisini döndürür.

shelltools.can_access_file("/usr/share/terminfo/%s" % termfile)

can_access_directory

shelltools.can_access_directory(destinationDirectory) 

Tam yolu destinationDirectory ile verilmiş olan dizinin erişilebilir olup olmadığını bilgisini döndürür.


makedirs

shelltools.makedirs(destinationDirectory) 

Tam yolu destinationDirectory ile verilmiş olan dizini oluşturur.

shelltools.makedirs("%s/build" % get.workDIR())
shelltools.makedirs("%s/build-default-i686-pc-linux-gnu-nptl" % get.workDIR())

chmod

shelltools.chmod(sourceFile, mode = 0755) 

Tam yolu sourceFile ile verilen dosyanın izinlerini değiştirir. Metakarakter kullanılabilir.

shelltools.chmod("config/config.sub")
shelltools.chmod(get.installDIR() + "/lib/libz.so.*")
shelltools.chmod("%s/usr/lib/misc/pt_chown" % get.installDIR(), 4711)
shelltools.chmod(get.installDIR() + "/etc/ssh/sshd_config", 0600)

unlink

shelltools.unlink(sourceFile)

Tam yolu sourceFile ile verilmiş olan dosyayı siler.

shelltools.unlink(get.workDIR() + '/' + get.srcDIR() + "/missing")

unlinkDir

shelltools.unlinkDir(sourceDirectory)

Tam yolu sourceDirectory ile verilmiş olan dizini ve altdizinlerini siler.

shelltools.unlinkDir(get.workDIR() + "/tmpbuild")

move

shelltools.move(sourceFile, destinationFile) 

Tam yolu sourceFile ile verilmiş dosya ya da dizini tam yolu destinationFile ile verilmiş dosya ya da dizine taşır. sourceFile içinde metakarakterler kulanılabilir.

shelltools.move("ac-wrapper.sh", "%s/usr/lib/misc/" % get.installDIR())
shelltools.move("proc/*.h", "%s/usr/include/proc/" % get.installDIR())

copy

shelltools.copy(sourceFile, destinationFile) 

Tam yolu sourceFile ile verilmiş olan bir dosyayı tam oylu destinationFile ile verilmiş bir dosya olarak kopyalar. sourceFile içinde metakarakterler kulanılabilir.

shelltools.copy("Makefile.pre.in", "%s/usr/lib/python2.3/config/" % get.installDIR())
shelltools.copy("scripts/*", "%s/usr/bin/" % get.installDIR())

copytree

shelltools.copytree(source, destination, sym=False) 

Tam yolu source ile verilmiş olan dizini, tam yolu destination ile verilmiş hedefe kopyalar.

shelltools.copytree("include/linux/", "%s/usr/include/linux/" % get.installDIR())
shelltools.copytree("include/asm-generic/", "%s/usr/include/asm-generic/" % get.installDIR())

touch

shelltools.touch(sourceFile)

Tam yolu sourceFile ile verilen dosyanın son erişim tarihini erişim anı yapar, eğer dosya yoksa onu yaratır.

shelltools.touch(get.workDIR() + "aclocal.m4")
shelltools.touch("gcc/c-gperf.h")

cd

shelltools.cd(directoryName = ) 

Çalışma dizinini tam yolu directoryName ile verilen dizin içerisine değiştirir.

shelltools.cd("build_unix")
shelltools.cd("%s/build-default-i686-pc-linux-gnu-nptl" % get.workDIR())

ls

shelltools.ls(source)

Tam yolu source ile verilen dizin ya da dosyaların bir listesini döndürür, bu liste içerisindeki her bir dosya üzerinde bir işlem yapmak gerektiği durumlarda kullanılabilir, metakarakterlerden yararlanılabilir.

shelltools.ls(get.installDIR() + "/usr/lib/*w.*")
    for file in shelltools.ls(get.installDIR() + "/usr/lib/*w.*"):

        #burada file ile bir şeyler yapın..
shelltools.ls(get.installDIR() + "/bin/")

export 

shelltools.export(key, value)

key ile tanımlanmış isimdeki bir ortam değişkenini value değeri ile set eder.

shelltools.export("WANT_AUTOCONF", "2.5")
shelltools.export("CXX", get.CXX())
shelltools.export("LDFLAGS", get.LDFLAGS() + "-Wl,-z,now")
shelltools.export("LC_ALL", "C")

system

shelltools.system(command) 

command ile verilen komutu kabuğa işletir, kabukten dönen sonuç geridönüş değeridir.

shelltools.system("./update-pciids.sh &> /dev/null")

isLink

shelltools.isLink(sourceFile)

Tam you sourceFile ile verilen dosyanın link olup olmadığı bilgisini döndürür.

shelltools.isLink(get.installDIR() + '/maybe/link')

realPath

shelltools.realPath(sourceFile) 

Tam you sourceFile ile verilen linkin işaret ettiği gerçek dizinin yolunu döndürür.

shelltools.realPath(get.installDIR() + link)

baseName

shelltools.baseName(sourceFile) 

sourceFile ile verilen dosya yolunun gösterdiği dosyanın adını döndürür (os.path.basename()). Aşağıdaki örnekteki gibi durumlarda kullanılabilir.

shelltools.baseName(shelltools.realPath(link))

dirName

shelltools.dirName(sourceFile) 

Tam yolu sourceFile ile verilen bir dosya yolunun son dizinlerden ibaret olan kısmını döndürür (bu kimi zaman verilen sourceFile'ın tamamıdır).


sym

sheeltools.sym(sourceFile, destinationFile)

Göstereceği yol sourceFile ile verilmiş olan ve tam yolu destinationFile ile verilmiş bir symlink oluşturur.


Get 

Get modülü, paket inşa ortamındaki sabit değerleri, dinamik değerleri ve ortam değişkenlerini okumak için kullanılır.


curDIR

get.curDIR()

Geçerli çalışma dizininin yolunu döndürür.


curKERNEL

get.curKERNEL()

Şu anda çalışan çekirdek sürümünü döndürür.


curPYTHON

get.curPYTHON()

Şu anda kullanılan python sürümünü döndürür.


curPERL

get.curPERL()

Şu anda kullanılan Perl sürümünü döndürür.


ENV

get.ENV(environ)

Verilen herhangi bir ortam değişkenini döndürür.

get.ENV("MAKE_DOC")

get.ENV("LD_LIBRARY_PATH")

pkgDIR

get.pkgDIR()

İkili paketlerin yolunu döndürür. Varsayılan "/var/cache/pisi/packages" şeklindedir.


workDIR

get.workDIR()

Paket çalışma dizininin yolunu döndürür. Örneğin, “/var/pisi/texlive-core-0.0_20091107-4/work” gibi bir yol döndürebilir.


installDIR

get.installDIR()

Paket yükleme dizinini döndürür. Örneğin, “/var/pisi/texlive-core-0.0_20091107-4/install” gibi bir yol döndürebilir.


lsbINFO

get.lsbINFO()

/etc/lsb-release dosyasının içeriğini döndürür.

get.lsbINFO("DISTRIB_ID") // çıktısı Pisi GNU/Linux

srcNAME

get.srcNAME()

Kaynak paketinin adını döndürür (automake-wrapper-1.7-3 için, automake-wrapper).


srcVERSION

get.srcVERSION()

Paketin kaynak versiyonunu döndürür (automake-wrapper-1.7-3 için, 1.7).


srcDIR

get.srcDIR()

Paket adı + '-' + mainstream sürüm numarası'ndan oluşan ismi döndürür (automake-wrapper-1.7-3 için, automake-wrapper-1.7).
Returns the directory name of the package source under “/var/pisi/”. (i.e. teeworlds-0.5.2)


ARCH

get.ARCH()

Returns the default arch value written at “https://github.com/PisiLinuxNew/pisi/blob/master/pisi/configfile.py” in class GeneralDefaults. (i.e i686)


HOST

get.HOST()

Returns the default host value written at “https://github.com/PisiLinuxNew/pisi/blob/master/pisi/configfile.py” in class BuildDefaults. (i.e i686-pc-linux-gnu)


CFLAGS

get.CFLAGS()

Return the default cflags used for PisiLinux. You can see them from “https://github.com/PisiLinuxNew/pisi/blob/master/pisi/configfile.py” in class BuildDefaults.


CXXFLAGS

get.CXXFLAGS()

Return the default cxxflags used for PisiLinux. You can see them from “https://github.com/PisiLinuxNew/pisi/blob/master/pisi/configfile.py” in class BuildDefaults.


LDFLAGS

get.LDFLAGS()

Return the default ldflags used for PisiLinux. You can see them from “https://github.com/PisiLinuxNew/pisi/blob/master/pisi/configfile.py” in class BuildDefaults.


makeJOBS

get.makeJOBS()

Return the default jobs value used for PisiLinux. You can see it from “https://github.com/PisiLinuxNew/pisi/blob/master/pisi/configfile.py” in class BuildDefaults.


buildTYPE

get.buildTYPE()

Return the current build type included in pspec.xml with tag.


docDIR

get.docDIR()

Returns the default doc files directory used for PisiLinux. You can see it from “https://github.com/PisiLinuxNew/pisi/blob/master/pisi/actionsapi/variables.py” in class Dirs.

sbinDIR

get.sbinDIR()

Returns the default sbin directory used for PisiLinux. You can see it from “https://github.com/PisiLinuxNew/pisi/blob/master/pisi/actionsapi/variables.py” in class Dirs.

infoDIR

get.infoDIR()

Returns the default info files directory used for PisiLinux. You can see it from “https://github.com/PisiLinuxNew/pisi/blob/master/pisi/actionsapi/variables.py” in class Dirs.

manDIR

get.manDIR()

Returns the default man files directory used for PisiLinux. You can see it from “https://github.com/PisiLinuxNew/pisi/blob/master/pisi/actionsapi/variables.py” in class Dirs.

dataDIR

get.dataDIR()

Returns the default data files directory used for PisiLinux. You can see it from “https://github.com/PisiLinuxNew/pisi/blob/master/pisi/actionsapi/variables.py” in class Dirs.


confDIR

get.confDIR()

Returns the default configure files directory used for PisiLinux. You can see it from “https://github.com/PisiLinuxNew/pisi/blob/master/pisi/actionsapi/variables.py” in class Dirs.


localstateDIR

get.localstateDIR()

Returns the default locale files directory used for PisiLinux. You can see it from “https://github.com/PisiLinuxNew/pisi/blob/master/pisi/actionsapi/variables.py” in class Dirs.


libexecDIR

get.libexecDIR()

Returns the default library executable directory used for PisiLinux. You can see it from “https://github.com/PisiLinuxNew/pisi/blob/master/pisi/actionsapi/variables.py” in


defaultprefixDIR

get.defaultprefixDIR()

Returns the default prefix directory used for PisiLinux. You can see it from “https://github.com/PisiLinuxNew/pisi/blob/master/pisi/actionsapi/variables.py” in class Dirs.


kdeDIR

get.kdeDIR()

Returns the default kde directory used for PisiLinux. You can see it from “https://github.com/PisiLinuxNew/pisi/blob/master/pisi/configfile.py” in class DirectoriesDefaults.


qtDIR

get.qtDIR()

PisiLinux için kullanılan varsayılan qt dizinini döndürür. Dizinler Defaults sınıfındaki “https://github.com/PisiLinuxNew/pisi/blob/master/pisi/configfile.py” adresinden görebilirsiniz.

Returns the default qt directory used for PisiLinux. You can see it from “https://github.com/PisiLinuxNew/pisi/blob/master/pisi/configfile.py” in class DirectoriesDefaults.


AR

get.AR()

Paketin derlendiği sistemin GNU ar binutil yürütülebilir değişkenini döndürür. (yani ar)
Return GNU ar binutil executable variable of the system where the package being compiled. (i.e. ar)


AS

get.AS()

Paketin derlenmekte olduğu sistemin GNU assembler binutil yürütülebilir değişkenini döndürün.
Return GNU assembler binutil executable variable of the system where the package being compiled. (i.e. as)


CC

get.CC()

Paketin derlendiği sistemin gcc binutil yürütülebilir değişkenini döndürün. (yani i686-pc-linux-gnu-gcc)
Return gcc binutil executable variable of the system where the package being compiled. (i.e. i686-pc-linux-gnu-gcc)


CXX

get.CXX()

Paketin derlendiği sistemin gcc C++ binutil yürütülebilir değişkenini döndürün. (yani i686-pc-linux-gnu-g++)
Return gcc C++ binutil executable variable of the system where the package being compiled. (i.e. i686-pc-linux-gnu-g++)


LD

get.LD()

Paketin derlenmekte olduğu sistemin GNU linker binutil yürütülebilir değişkenini döndürün. (yani ld)
Return GNU linker binutil executable variable of the system where the package being compiled. (i.e. ld)


NM

get.NM()

Paketin derlendiği sistemin GNU nm binutil yürütülebilir değişkenini döndürür. (yani nm)
Return GNU nm binutil executable variable of the system where the package being compiled. (i.e. nm)


RANLIB

get.RANLIB()

Paketin derlendiği sistemin ranlib binutil yürütülebilir değişkenini döndürür. (yani ranlib)
Return ranlib binutil executable variable of the system where the package being compiled. (i.e. ranlib)


F77

get.F77()

Paketin derlendiği sistemin GNU fortran derleyici binutil yürütülebilir değişkenini döndürün. (yani g77)
Return GNU fortran compiler binutil executable variable of the system where the package being compiled. (i.e. g77)


GCJ

get.GCJ()

Paketin derlendiği sistemin GNU java derleyici binutils yürütülebilir değişkenini döndürür. (yani gcj)
Return GNU java compiler binutil executable variable of the system where the package being compiled. (i.e. gcj)


KDE

configure

configure(parameters)

Configures the kde packages according to the parameters given by the user and PISI’s

default parameters.

The default parameters: (You can see the these defaults from https://github.com/PisiLinuxNew/pisi/blob/master/pisi/configfile.py and https://github.com/PisiLinuxNew/pisi/blob/master/pisi/actionsapi/variables.py)

--prefix
--build
--with-x
--enable-mitshm
--with-xinerama
--with-qt-dir
--enable-mt
--with-qt-libraries
--disable-dependency-tracking
--disable-debug

Example:

kde.configure("--without-included-sqlite")
kde.configure("--with-libsamplerate")
kde.configure()

make

make(parameters)

Builds the kde packages according to the parameters given by the user.

Example:

kde.make("-f admin/Makefile.common")
kde.make()

install

install(parameters='install')

Install the package according to the parameters given by the user and PISI’s default parameters.

Example:

kde.install()

Kerneltools

Configuration Part

getKernelVersion

getKernelVersion(flavour=None)

Returns the kernel version information to use with external module compilation This is something like 2.6.30_rc7-119 which will be appended to /lib/modules. If flavour==None, it will return the kernel version in the /etc/kernel/kernel file, else /etc/kernel/. If it fails, it will return the running kernel version.

Configure

configure()

It first cleans the system form .orig files, then starts kernel configuration.

updateKConfig()

updateKConfig()

Call this to set newly added symbols to their defaults after sedding some Kernel Configuration parameters.

Building and Installing Part

dumpVersion

dumpVersion()

Writes the specific kernel version into /etc/kernel.

build

build(debugSymbols=False)

Builds the kernel with given debug symbols, the default debugSymbols is False.

install

install(installFirmwares=True)

It first controls whether loadable module support is available, then it installs the kernel image.

If installFirmwares==False it removes firmwares.

installHeaders

installHeaders(extra=[])

Installs the additional kernel headers needed to build out-of-tree kernel modules.

Example:

kerneltools.installHeaders(extra=["drivers/media/dvb/dvb-core", "drivers/media/dvb/frontends","drivers/media/video"])

installLibcHeaders

installLibcHeaders(excludes=[]):

Installs the Linux-Libc-Headers exculuding the givens.

Example:

kerneltools.installLibcHeaders(excludes=["scsi"])

installSource

installSource()

Installs the kernel source files.

cleanModuleFiles

cleanModuleFiles()

Cleans module.* files generated by depmod.

mkinitramfs

mkinitramfs()

Create and install the initramfs image into the package.


Libtools

preplib

prelib(sourceDirectory)

Executes ldconfig command in the sourceDirectory.

Example:

libtools.preplib()

gnuconfig_update

gnuconfig_update()

Copies the newest config.sub and config.guess files to the source.

Example:

libtools.gnuconfig_update()

libtoolize

libtoolize(parameters)

Makes it possible to execute libtoolize with given parameters on the source.

Examples:

libtools.libtoolize()

libtools.libtoolize("--force --copy")

libtools.libtoolize("--force --install")

gen_usr_ldscript

gen_usr_ldscript(dynamicLib)

Since PisiLinux has critical dynamic libraries in /lib, and the static versions in /usr/lib, we need to have a dynamic lib in /usr/lib, otherwise we run into linking problems.

Examples:

libtools.gen_usr_ldscript("libhandle.so")

libtools.gen_usr_ldscript("libhandle.so")

libtools.gen_usr_ldscript("libdevmapper.so")