RkBlog

Hardware, programming and astronomy tutorials and reviews.

Wprowadzenie do ebuildów Gentoo

Ebuildy to pliki tekstowe opisujące sposób kompilacji i instalacji danego pakietów w Gentoo. Określają one także zależności, dostępne flagi USE i ich znaczenie dla aplikacji

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
}
Ebuildy są skryptami basha wykonywanymi w specjalnym środowisku. Ebuildy zawierają szereg zmiennych, oto podstawowe z nich:

Funkcje kompilacji i instalacji



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
}


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
}


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"
}
Oto bardziej złożony przykład, mail-client/sylpheed/sylpheed-1.0.4.ebuild:
# 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*
}
nls? ( >=sys-devel/gettext-0.12.1 )
$(use_enable gnome gdk-pixbuf)
Da nam --enable-gdk-pixbuf a nie --enable-gnome.
RkBlog

Ebuildy Gentoo, 14 July 2008,

Comment article