View previous topic :: View next topic |
Author |
Message |
Henning Apprentice
Joined: 08 Sep 2002 Posts: 196 Location: Braunschweig
|
Posted: Fri Nov 08, 2002 4:42 pm Post subject: ebuild mit eigenem diff file |
|
|
Hallo,
will mich mal an ein eigenes ebuild wagen.
Hab dazu mal ne Frage.
Wo wird denn definiert, von welchem Ort die Sourcen downgeloaded werden sollen? Oder muß daß immer ein Standard Server sein.
Wie ist denn das handling von patches? Wird der original Source gepatcht und dann als gentoo version bereitgestellt, oder werden sowohl patch als auch Original auf einem Gentoo Server abgelegt?
Henning |
|
Back to top |
|
|
Pietschy Apprentice
Joined: 25 Jul 2002 Posts: 237
|
Posted: Fri Nov 08, 2002 9:46 pm Post subject: |
|
|
Dann will ich mal versuchen deine Frgaen zu beantworten.
zur ersten frage,
Standardmässig werden die dateien von gentoo-server gezogen, man kann aber mittels der Varialble SRC_URI="<link>" eine Alternative festlegen.
2. Frage:
Soweit ich weis liegt nichts gepatchtes auf dem Servern, wird also alles als original gezogen und erst dann gepatcht. Patches können auf den Servern liegen und warscheinlich je nach größe sind sie auch im portagetree vorhanden(jeweils in den unterordnern files (neben den digestfiles)).
_______________________
Ebuilds schreiben ist gar nicht so schwer, eigentlich nur abschreiben
als besonders schönes chaotisches aber viel zu lerendes beispiel bennen ich jetzt mal das ebuild von mplayer.
Ronny |
|
Back to top |
|
|
citizen428 Retired Dev
Joined: 10 Jun 2002 Posts: 317 Location: Vienna, Austria
|
Posted: Sat Nov 09, 2002 10:25 am Post subject: |
|
|
Schau dir auch das Gentoo Entwickler HOWTO an:
http://www.gentoo.de/htmlfromxsl/gentoo-howto.html
Nach der Lektüre und dem Ansehen einiger Ebuilds wirst du drauf kommen daß das keine großer Hexerei ist. |
|
Back to top |
|
|
Henning Apprentice
Joined: 08 Sep 2002 Posts: 196 Location: Braunschweig
|
Posted: Sat Nov 09, 2002 9:05 pm Post subject: |
|
|
Hallo,
habe die how-to's gelesen, komme aber trotzdem nicht weiter.
Also es sind 2 Sourcen für mein Projekt notwendig.
Eine liegt in der Form .tgz vor, die andere ist ein unkomprimiertes diff.
Beide Sourcen werden downgeloaded. Aber bei dem diff File erhalte ich
eine Fehlermeldung. Wie muß ich vorgehen?
Hier noch die Ausgaben.
Danke, Henning
bash-2.05a# emerge ./kvdr-0.51.ebuild
Calculating dependencies ...done!
>>> emerge (1 of 1) media-video/kvdr-0.51 to /
>>> md5 kvdr-0.51.tgz
>>> No message digest entry found for archive"kvdr_kde3.diff."
!!! Type "ebuild foo.ebuild digest" to generate a new digest.
bash-2.05a# ebuild /usr/portage/distfiles/kvdr_kde3.diff digest
!!! doebuild: /usr/portage/distfiles/kvdr_kde3.diff does not appear to be an ebuild file. |
|
Back to top |
|
|
citizen428 Retired Dev
Joined: 10 Jun 2002 Posts: 317 Location: Vienna, Austria
|
Posted: Sun Nov 10, 2002 4:59 am Post subject: |
|
|
Henning wrote: |
!!! Type "ebuild foo.ebuild digest" to generate a new digest.
bash-2.05a# ebuild /usr/portage/distfiles/kvdr_kde3.diff digest
!!! doebuild: /usr/portage/distfiles/kvdr_kde3.diff does not appear to be an ebuild file. |
Vergleich die erste Zeile mit der die du geschrieben hast. Du sollst ein Digest vom Ebuildfile machen, nicht von dem diff.
#ebuild $PFAD_ZU_EBUILD_FILE/kvdr_kde3.ebuild digest
Lies dir auch mal "man ebuild" durch wenn du das noch nicht getan hast.
HTH,
citizen428 |
|
Back to top |
|
|
Henning Apprentice
Joined: 08 Sep 2002 Posts: 196 Location: Braunschweig
|
Posted: Sun Nov 10, 2002 11:50 am Post subject: |
|
|
Hi,
wer schreiben und lesen kann ist klar im Vorteil .
Leider muß ich nur feststellen, daß ich entweder nicht das richtige lese, oder die Info's einfach so kurz sind, daß ich damit nicht zurechtkomme.
Immerhin, den ersten Teil habe ich inzwischen gemeistert. Bis einschließlich make läuft es jetzt. Wie ist das denn mit Variablen? Sind die immer nur lokal, oder muß ich Anfangswerte retten und wieder zurücksetzen, wie in meinem Script (autoconf).
Ja und dann müßte ich laut Original noch ein 'make install' machen.
Wenn ich das einbaue, bekomme ich 'access denied'.
Zu Fuß, also ohne ebuild geht das ohne Probleme.
Die ganze src_install section ist mir noch etwas schleierhaft, muß ich zugeben.
/bin/sh ../../../admin/mkinstalldirs /usr/kde/3/share/doc/HTML/default/kvdr/
mkdir /usr/kde/3/share/doc/HTML/default/kvdr
ACCESS DENIED mkdir: /usr/kde/3/share/doc/HTML/default/kvdr
mkdir: kann Verzeichnis »/usr/kde/3/share/doc/HTML/default/kvdr« nicht anlegen: Keine Berechtigung
Hier noch das Script:
# Copyright 2002
# Distributed under the terms of the GNU General Public License, v2 or later
S=${WORKDIR}/kvdr/
DESCRIPTION="Kvdr the GUI viewer for VDR (VideoDiskRecorder)"
SRC_URI="http://www.s.netic.de/gfiala/kvdr-${PV}.tgz
http://people.freenet.de/renegart/kvdr_kde3.diff"
HOMEPAGE="http://www.s.netic.de/gfiala/"
LICENSE="GPL"
DEPEND=">=media-video/xawtv-3.73-r1"
src_unpack() {
unpack kvdr-${PV}.tgz
cp ${DISTDIR}/kvdr_kde3.diff ${S}
cd ${S}
patch -p1 < kvdr_kde3.diff || die "patch failed"
}
src_compile() {
#we have to save the actual setting, really?
AUTOCONF=${WANT_AUTOCONF_2_5}
export WANT_AUTOCONF_2_5="0"
./configure || die "configure failed"
emake || die "emake failed"
make install || die
#restore settings
${WANT_AUTOCONF_2_5}=${AUTOCONF}
}
src_install() {
echo 'src_install'
}
pkg_postinst() {
echo 'Kvdr works as a GUI for VDR. Start VDR before'
} |
|
Back to top |
|
|
Henning Apprentice
Joined: 08 Sep 2002 Posts: 196 Location: Braunschweig
|
Posted: Sun Nov 10, 2002 1:00 pm Post subject: |
|
|
Ok,
hab mal folgendes probiert:
src_install() {
make DESTDIR=${D} install
}
Das hat funktioniert, wüßte nur gern wieso.
Bei jedem neuen ebuild wieder Rätselraten ist ja wohl nicht Sinn der Sache.
Bis dahin, vielmals danke.
Henning |
|
Back to top |
|
|
citizen428 Retired Dev
Joined: 10 Jun 2002 Posts: 317 Location: Vienna, Austria
|
Posted: Sun Nov 10, 2002 1:52 pm Post subject: |
|
|
Henning wrote: | src_install() {
make DESTDIR=${D} install
}
Das hat funktioniert, wüßte nur gern wieso.
|
Aus "man ebuild":
install: Installs the package to the temporary install directory by running the src_install() function. When completed, the install directory (${BUILD_PREFIX}/[package]-[rev-number]/image) will contain all the files that should either be merged to the local file system or included in a binary package.
Aus dem Developer HOWTO:
D: the root directory that is installed to, treat it as the virtual /
src_install: Use this function install the package to an image in ${D}. If your package uses automake, you can do this simply with make DESTDIR=${D} install. Make sure your package installs all its files using ${D} as the root!
Genaueres kann ich dir leider nicht sagen, hab bisher noch keinen Ebuild gemacht bei dem ich automake gebraucht habe.
Auch würde ich dir raten dir die Englische Version des Developer HOWTOS zu Gemüte zu führen, die ist aktueller und ausführlicher als die Deutsche!
HTH,
citizen428 |
|
Back to top |
|
|
|