Wprowadzenie do ebuildów Gentoo
14 July 2008
Comments
Niniejszy artykuł stanowi szybkie wprowadzenie do ebuildów gentoo. Artykuł zawiera kilka przykładowych ebuildów i pobieżny ich opis. Szczegóły opisane są w kolejnych artykułach z tej serii.Pierwszy Ebuild
Oto uproszczony ebuild dla dev-util/ctags/ctags-5.5.4.ebuild.# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
DESCRIPTION="Exuberant ctags generates tags files for quick source navigation"
HOMEPAGE="http://ctags.sourceforge.net"
SRC_URI="mirror://sourceforge/ctags/${P}.tar.gz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~mips ~sparc ~x86"
IUSE=""
src_compile() {
econf --with-posix-regex || die "econf failed"
emake || die "emake failed"
}
src_install() {
emake DESTDIR="${D}" install || die "install failed"
dodoc FAQ NEWS README
dohtml EXTENDING.html ctags.html
}
- DESCRIPTION - Krótki opis aplikacji
- HOMEPAGE - Adres www strony aplikacji
- LICENSE - Licencja aplikacji
- SRC_URI - Określa adresy URL, spod których można pobrać źródła aplikacji. mirror://sourceforge/ jest specjalną notacją oznaczającą dowolny serwer sourceforge. ${P} jest zmienną ustawianą przez portage i przyjmującą wartość "NAZWA_APLIKACJI-WERSJA", w tym przypadku: ctags-5.5.4
- SLOT - Określa slot, pod którym aplikacja ma być zainstalowana. Zazwyczaj stosuje "0" i nie slotuje się kolejny wersji.
- KEYWORDS - Określa architektury, pod którymi ebuild był testowany.
Funkcje kompilacji i instalacji
- src_compile - Portage wywoła tą funkcję, gdy będzie chciało skompilować aplikację. econf to nakładka na ./configure a emake na make.
- src_install - Funkcja wywoływana w celu zainstalowania pakietu. Instalacja nie odbywa się od razu w systemie lecz do specjalnego katalogu określonego przez zmienną ${D}
- dodoc i dohtml są pomocniczymi funkcjami do instalacji plików do odpowiednich miejsc w /usr/share/doc
Zależności
Oto uproszczony ebuild dla app-misc/detox/detox-1.1.1.ebuild:# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
DESCRIPTION="detox safely removes spaces and strange characters from filenames"
HOMEPAGE="http://detox.sourceforge.net/"
SRC_URI="mirror://sourceforge/${PN}/${P}.tar.bz2"
LICENSE="BSD"
SLOT="0"
KEYWORDS="~hppa mips sparc x86"
IUSE=""
DEPEND="dev-libs/popt
sys-devel/flex
sys-devel/bison"
RDEPEND="dev-libs/popt"
src_compile() {
econf --with-popt || die "econf failed"
emake || die "emake failed"
}
src_install() {
emake DESTDIR="${D}" install || die "install failed"
dodoc README CHANGES
}
- ${PN} jest zmienną przechowującą nazwę pakietu bez numeru wersji
- DEPEND określa zależności do kompilacji, a RDEPEND zależności wymagane do działania
Ebuildy z łatami
Często trzeba nałożyć jakieś łaty na źródła. Operację tą wykonuje się w funkcji src_unpack za pomocą epatch. By mieć dostęp do epatch należy dodać obsługę eutils poprzez inherit eutils. Przykład na bazie app-misc/detox/detox-1.1.0.ebuild:# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
inherit eutils
DESCRIPTION="detox safely removes spaces and strange characters from filenames"
HOMEPAGE="http://detox.sourceforge.net/"
SRC_URI="mirror://sourceforge/${PN}/${P}.tar.bz2"
LICENSE="BSD"
SLOT="0"
KEYWORDS="~hppa ~mips ~sparc ~x86"
IUSE=""
DEPEND="dev-libs/popt
sys-devel/flex
sys-devel/bison"
RDEPEND="dev-libs/popt"
src_unpack() {
unpack ${A}
cd "${S}"
epatch "${FILESDIR}"/${P}-destdir.patch
epatch "${FILESDIR}"/${P}-parallel_build.patch
}
src_compile() {
econf --with-popt || die "econf failed"
emake || die "emake failed"
}
src_install() {
emake DESTDIR="${D}" install || die "install failed"
dodoc README CHANGES
}
- ${FILESDIR}/${P}-destdir.patch odnosi się do "detox-1.1.0-destdir.patch" znajdujący się w katalogu files/. Duże łaty powinny być umieszczane na mirrorach, niż jako pliki w files w drzewie portage.
Ebuildy i flagi USE
Oto ebuild dla libiconv:# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
DESCRIPTION="GNU charset conversion library for libc which doesn't implement it"
SRC_URI="ftp://ftp.gnu.org/pub/gnu/libiconv/${P}.tar.gz"
HOMEPAGE="http://www.gnu.org/software/libiconv/"
SLOT="0"
LICENSE="LGPL-2.1"
KEYWORDS="~amd64 ~ppc ~sparc ~x86"
IUSE="nls"
DEPEND="virtual/libc
!sys-libs/glibc"
src_compile() {
econf $(use_enable nls) || die "econf failed"
emake || die
}
src_install() {
emake DESTDIR="${D}" install || die "install failed"
}
- IUSE - zmienna ta listuje flagi use używane przez ten ebuild
- W powyższym przykładzie libiconv w ./configure przyjmuje --enable-nls lub --disable-nls. Funkcja pomocnicza use_enable generuje odpowiedni wynik na bazie włączonej/wyłączonej flagi USE.
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
inherit eutils
DESCRIPTION="A lightweight email client and newsreader"
HOMEPAGE="http://sylpheed.good-day.net/"
SRC_URI="mirror://sourceforge/${PN}/${P}.tar.bz2"
LICENSE="GPL-2"
KEYWORDS="alpha amd64 hppa ia64 ppc ppc64 sparc x86"
SLOT="0"
IUSE="crypt gnome imlib ipv6 ldap nls pda ssl xface"
DEPEND="=x11-libs/gtk+-1.2*
nls? ( >=sys-devel/gettext-0.12.1 )
crypt? ( >=app-crypt/gpgme-0.4.5 )
gnome? ( media-libs/gdk-pixbuf )
imlib? ( media-libs/imlib )
ldap? ( >=net-nds/openldap-2.0.11 )
pda? ( app-pda/jpilot )
ssl? ( dev-libs/openssl )
xface? ( >=media-libs/compface-1.4 )"
RDEPEND="${DEPEND}
app-misc/mime-types
x11-misc/shared-mime-info"
src_unpack() {
unpack ${A}
cd "${S}"
epatch "${FILESDIR}"/${PN}-namespace.diff
epatch "${FILESDIR}"/${PN}-procmime.diff
}
src_compile() {
econf $(use_enable nls) $(use_enable ssl) $(use_enable crypt gpgme) $(use_enable pda jpilot) $(use_enable ldap) $(use_enable ipv6) $(use_enable imlib) $(use_enable gnome gdk-pixbuf) $(use_enable xface compface) || die
emake || die
}
src_install() {
einstall || die "einstall failed"
dodir /usr/share/pixmaps
insinto /usr/share/pixmaps
doins *.png
if use gnome ; then
dodir /usr/share/gnome/apps/Internet
insinto /usr/share/gnome/apps/Internet
doins sylpheed.desktop
fi
dodoc [A-Z][A-Z]* ChangeLog*
}
- Zwróć uwagę na opcjonalne zależności uwzględniane w przypadku aktywności danej flagi USE:
nls? ( >=sys-devel/gettext-0.12.1 )
- W econf niektóre use_enable używaj dwóch argumentów - pierwszy określa nazwę flagi USE, a drugi nazwę elementu jaki należy dodać do ./configure:
$(use_enable gnome gdk-pixbuf)
Da nam --enable-gdk-pixbuf a nie --enable-gnome.
RkBlog
Comment article