Nasıl : CVS & SVN için PKGBUILD Oluşturmak
From Lapis Wiki
Bu makale NASIL bölümü serisinin bir parçasıdır
|
| MasaÜstü • Donanım • Ağ • Dağıtımlar |
| Tarayıcılar• Programlama • Linux ve Oyunlar |
Konu başlıkları |
[değiştir]
Giriş
- CVS, SVN & GIT vb geliştiricilerin uygulamaları geliştirmekte kullandıkları versiyon kontrol sistemleridir.Aslında bu sistemler için pkgbuild oluşturmak çok da ekstra bir bilgi gerektirmez.Sadece birkaç detaya ve ipuçlarına dikkat etmeniz yeterli.
[değiştir]
Dikkat Edilmesi Gerekenler
- Öncelikle pkgname yani paketlerimizin adlarını belirlerken hangi sistemi( CVS, SVN & GIT ) kullandığımızı belirtmeliyiz.Bu sayede uygulamanın deneysel olup olmadığı ve,veya hangi version kontrol sisteminin kullanıldığı hakkında bilgimiz olucaktır.Bunun için sadece paket adının yanına -cvs veya -svn veya -git takılarını eklememiz yeterli.
- Örneğin : lm_sensors-svn
- Hazırladığımız PKGBUILD'de conflicts yani paketimize çakışan uygulamalara dikkat etmeliyiz.Mesela kararlı sürümü olan bir uygulamaya deneyleysel sürümü için PKGBUILD oluşturuyorsak kararlı sürümünü conflicts yani çakışan paketler arasına eklemeliyiz.
- Örneğin : cgwd-cvs isimli deneysel sürüm için oluşturduğumuz PKGBUILD'e [ conflicts=('cgwd') ] satırını eklememiz gereklidir.
- Deneysel sürüm olduğuğundan paketin adını -cvs , -svn ve -git takılarla belirdiğimizden dolayı provides yani başka paketi sağlayan bölümü eklemeliyiz.Mesela kararlı sürüm başka bir paketin bağımlıkları arasında deneysel sürümünde bu bağımlılığı karşılayacağı için provides bölümünü eklememiz gereklidir.
- Örneğin : cgwd-cvs isimli deneysel sürüm için oluşturduğumuz PKGBUILD'e [ provides=('cgwd') ] satırını eklememiz yeterlidir.
- İsteseniz replaces yer değiştir bölümünü ekleyebilirsiniz.Bunun için sadece [ provides=('paket') ] satırını eklememiz yeterli.Ancak bu bazen gereksiz hatalara yol açtığından bunu kullanmaktan çekinmelisiniz.
- Her nekadar gerekli olmasada source=() ve md5sums=() satırlarını eklemelisiniz.Bu sayede metalarınızı AUR'a ekleyebilirsiniz.Aksi takdirde arşiviniz kabul görmez.
- Yeni başlayanlar için makedepends yani paketin oluşturulması için gerekli bağımlılıklar bölümünü ekleyin.Bu sayede acamiler paketi derlerken sorun çekmeyeceklerdir.
- Örneğin : svn sürüm kontrol sistemi ile hazırladığımız PKGBUILD'e [ makedepends=('subversion') ] satırını eklememiz yeterlidir.
- Deneysel sürüm olduğu için bazen PKGBUILD de değişiklik(Yamaların eklenmesi vb) yapmanız gerekebilir.Bu yüzden her değişikliği pkgrel ile belirtebilirsiniz.
- Örneğin : [ pkgrel=2 ]
- Kaynaktan ayrı bir yerde paketi derleyebilirsiniz bunun için aşağıdaki satırları eklemeniz yeterlidir.
cp -r src/$_cvsmod src/$_cvsmod-build cd src/$_cvsmod-build
- pkgver yani sürümünü belirlemek.Cvs ve Git'te tarih=Yıl+ay+gün olarak belirlenir.Svn sisteminde ise revizyon numarası olarak belirlenir.
- Örneğin : Cvs ve git için oluşturduğumuzPKGBUILD de [ pkgver=20060822 ] paket sürümünü bu şekilde belirleyebiliriz.
- Svn için revizyon numarasını belirlemek için:
source PKGBUILD
svn log $_svntrunk --limit 1 | grep -m 1 -o "r.*" | cut -d \| -f 1 | sed s@r@@g
- Örneğin : [ pkgver=576056 ]
[değiştir]
Örnek PKGBUILDLER
[değiştir]
CVS
| Dosya: CVS için hazırlanmış örnek bir PKGBUILD |
# Maintainer: Suat <forum.linux-sevenler.org>
pkgname=gset-compiz-cvs
pkgver=20060822
pkgrel=1
pkgdesc="Compiz configurator"
url="http://www.compiz.net"
depends=('xgl-git' 'mesa-xgl-cvs' 'libxevie' 'startup-notification' 'libpng' 'libxdamage' 'libxrandr'
'gnome-desktop' 'control-center' 'libsvg-cairo' 'libxcomposite' 'glew' 'compiz-quinn-cvs')
provides=('gset-compiz')
replaces=('gset-compiz')
conflicts=('gset-compiz')
makedepends=('cvs')
source=()
md5sums=()
_cvsroot=":pserver:anonymous@metascape.afraid.org:/cvsroot"
_cvsmod="gset-compiz"
build() {
cd $startdir/src
msg "Connecting to metascape.afraid.org CVS server...."
cvs -z3 -d $_cvsroot co -D $pkgver -f $_cvsmod
cd $_cvsmod
./configure --prefix=/usr
msg "CVS checkout done or server timeout"
msg "Starting make..."
# ./configure --prefix=/opt/gnome --disable-mime-update
make || return 1
make DESTDIR=$startdir/pkg install
}
|
[değiştir]
SVN
| Dosya: SVN için hazırlanmış bir PKGBUILD |
# Maintainer: suat <forum.linux-sevenler.org>
pkgname=lm_sensors-svn
pkgver=4103
pkgrel=1
pkgdesc="Collection of user space tools for general SMBus access and hardware monitoring."
arch=(i686 x86_64)
depends=('perl')
makedepends=('subversion')
conflicts=('lm_sensors')
backup=(etc/sensors.conf)
provides=('lm_sensors')
replaces=('lm_sensors')
source=()
url="http://www.lm-sensors.org/"
md5sums=()
_svnmod="lm-sensors"
_svntrunk="http://lm-sensors.org/svn/lm-sensors/trunk/"
build() {
cd $startdir/src/
svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
cd $startdir/src/lm-sensors
msg "Starting make..."
make PREFIX=/usr user || return 1
make user_install PREFIX=/usr DESTDIR=$startdir/pkg
# FIXME: avoid conflicts with glibc headers
rm -rf $startdir/pkg/usr/include/linux
}
|
[değiştir]
GIT
| Dosya: GIT için hazırlanmış bir PKGBUILD örneği |
# Contributor: DaNiMoTh <jjdanimoth@gmail.com>
pkgname=cairo-git
pkgver=20060822
pkgrel=1
pkgdesc="Cairo vector graphics library"
url="http://cairographics.org/"
depends=('libpng' 'libxrender' 'fontconfig' 'glitz-cvs')
makedepends=('git')
provides=('cairo')
conflicts=('cairo')
replaces=('cairo-devel' 'cairo-cvs')
source=()
md5sums=()
_gitroot="git://git.cairographics.org/git/cairo"
_gitname="cairo"
build() {
cd $startdir/src
msg "Connecting to git.cairographics.org GIT server...."
if [ -d $startdir/src/$_gitname ] ; then
cd $_gitname && git-pull origin
msg "The local files are updated."
else
git clone $_gitroot
fi
msg "GIT checkout done or server timeout"
msg "Starting make..."
cp -r $startdir/src/$_gitname $startdir/src/$_gitname-build
cd $startdir/src/$_gitname-build
./autogen.sh --enable-glitz --enable-pdf --prefix=/usr
make || return 1
make DESTDIR=${startdir}/pkg install
rm -rf ${startdir}/pkg/usr/share/gtk-doc
find ${startdir}/pkg -name '*.la' -exec rm {} \;
}
|
[değiştir]
Versionpkg ( cvs/svn pkglerini derlemeyi kolaylaştıran betik )
- Makepkg yerine bundan sonra versionpkg'yi kullanacağız.Bu sayede her güncelleme yaptığımızda sürüm numarısını düzenlememiz gerekmeyecek.
- Daha detaylı bilgi için Lapis Forum İncelemesi
[değiştir]
Versionpkg için gerekli düzenlemeler
- pkgver'in PKGBUILD'imiz de ilk 10 satır arasında olmalı aksi takdirde versionpkg çalışmayacaktır.
[değiştir]
CVS
- _cvsroot= Bağlanacağımız CVS ağının kök dizinidir. :pserver:anonymous:@Ağ(hede.hödö.bla):/dizin
- _cvsmod= Ağdan indireceğimiz modulu belirlediğimiz bölümdür.
- Örneğin :
_cvsroot=":pserver:anonymous@metascape.afraid.org:/cvsroot" _cvsmod="gset-compiz"
- Son olarak checkout yani cvs'den kaynağı kontrol komutu.Bir kaç parametre ile birlikte kullanmalıyız
cvs -z9 -q -d $_cvsroot co -D $pkgver -f $_cvsmod
- -z şıkıştırma seviyesini kontrol eder.1 ile 9 arasında tercih yapabilirsiniz.1 (yüksek hız, düşük sıkıştırma) ... 9 (düşük hız, yüksek sıkıştırma) yada 0 sıkıştırmayı devre dışı bırakma anlamına gelir...
- -D belirlenmiş gün için kaynağı çekmemize yarar.-fparametresi ile birlikte kullanmalıyız aksi takdirde versionpkg sorun çıkaracaktır.Versionpkg $pkgver'i güncel tarih olarak değiştirecektir.
- -q bir dereceye(Hata vb gibi durumlar hariç) kadar uyarı mesajlarının görünmesini önler
[değiştir]
SVN
- _svntrunk= Uygulamanın çalışma dizini diyebiliriz.Geliştiriciler bütün düzenlemerini burda yaparlar.Bu yüzden buraya projenin SVN trunk adresini eklemeliyiz.
- _svnmod= Cvs'deki gibi ağdan indireceğimiz modulu belirlediğimiz bölümdür.
- Örneğin :
_svnmod="lm-sensors" _svntrunk="http://lm-sensors.org/svn/lm-sensors/trunk/"
- SVN için checkout komutu:
svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
- -r belirlediğimiz gün için geçerli olan kaynağı indirmemize yarar.Versionpkg $pkgver'i güncel revizyon numarası ile değiştirecektir.
Kaynak : Arch-wiki (Arch CVS & SVN PKGBUILD guidelines)
Konu ile ilgili fikirlerinizi paylaşmak için; Lapis Wiki Başlığı
