Sie sind nicht angemeldet.

1

20.01.2013, 20:25

[gelöst] Ebuild für stuntrally

Hallo Forum,

ich bastle gerade an einem Ebuild für Stuntrally
https://code.google.com/p/vdrift-ogre/

Das Projekt verwendet zwei git zweige, Hauptprogramm und Datenfiles. Im Ebuild mache ich ein git auf die Datenfiles, was auch funktioniert.
Mein Distfiles ist per Standard (/usr/portage/distfiles) und im code hart kodiert. Gibt es dafür eine Variable?

Ein unschönes Problem bleibt noch, im Ebuild nutze ich cmake-utils, wenn ich alles mit cmake-utils mache, liegt sogar die bin Datei in /usr/share/games/bin/ und nicht /usr/games/bin
Hab zwar ein Symlink erstellt nach /usr/games/bin/stuntrally, aber richtig gut gefallen tut mir das nicht.
Problem ist halt, würde man die bin nach /usr/games/bin Installieren, findet das Programm seine Texturen und Soundfiles nicht.

Hat jemand eine Idee, wie man dies sauber als Ebuild schreibt? Oder kann mir ein Tipp geben, wie ich es mit den Distfiles hinbekommen könnte?

Ich häng mal mein Ebuild bei, aber bitte nicht Installieren, außer ihr wisst was ihr tut ;-)
Alle Bugs die mir aufgefallen sind, habe ich im Ebuild notiert.

Hab es am laufen, wenn auch etwas unschön über dieses Ebuild installiert, das Game Rockt!

Sandy

// EDIT: Sorry, hab mich in Namen der Datei vertippt. Es muss natürlich stuntrally-9999.ebuild.txt heißen.

// EDIT2:
Das Game wird jetzt nach /usr/bin/ und shares nach /usr/shares installiert. Menü Eintrag unter KDE ist vorhanden. PREFIX auf /usr/ geändert.
Distfiles noch wage mit $PORTDIR/distfiles gesetzt um extra Tracks per Git zu laden ... Es gibt zwar die Variable DISTFILE, Ordner ist aber leer, da benötige ich noch Hilfe.
Ungetestet ob ogre wirklich USE-Flag "cg" benötigt, ohne diesen Funktioniert es (beim erstmal nicht), hab es danach nicht mehr getestet.
// EDIT2 ENDE
»knasan« hat folgende Dateien angehängt:
knasan

- Bug oder Feature, das darf man sich hier aussuchen. -

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »knasan« (23.01.2013, 02:41)


2

21.01.2013, 21:19

Hi,

Hab das ebuild komplett überarbeitet und geprüft was alles benötigt wird damit das Game funktioniert.
Jetzt ist es so, wie es sein soll.
Das Game hat eine Abhängigkeit von dev-games/ogre mit cg, bei mir wird dann nvidia-cg-toolkit installiert.
Was passiert wenn jemand keine Nvidia hat ist mir jedoch unklar, wäre schön wenn das jemand prüfen könnte.

Einzig das Problem mit /usr/portage/distfiles bleibt, hat denn da wirklich niemand eine Idee?

Neue Version meines ebuilds lege ich bei und darf getestet werden sofern eben das mit dem distfiles kein Problem darstellen sollte.

Danke.

// EDIT:
Ich habe eben beim Zocken bemerkt dass das Game ohne dev-libs/sdl-gfx und dev-libs/libsdl das Bild leicht Ruckelt. Deswegen habe ich diese Abhängigkeiten wieder rein. Leider wird nur schwammig gesagt dass sdl benötigt wird.
Was genau davon, weiß ich leider nicht.

Sandy
»knasan« hat folgende Dateien angehängt:
knasan

- Bug oder Feature, das darf man sich hier aussuchen. -

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »knasan« (21.01.2013, 22:20)


3

21.01.2013, 23:24

Ich wollte eigentlich schon früher antworten, da ich denke dass ich das ebuild gefunden habe ( habs nicht selbst geschrieben ), und dachte ich könnte dir etwas Arbeit sparen, aber ich bin im Moment total im Prüfungsstress, und hab es dann wieder vergessen. :D

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/games-sports/vdrift/vdrift-20111022.ebuild,v 1.5 2012/07/24 16:52:50 mr_bones_ Exp $

EAPI=2
inherit eutils scons-utils games

MY_P=${PN}-${PV:0:4}-${PV:4:2}-${PV:6:2}-release
MY_PV=${PV:0:4}-${PV:4:2}-${PV:6:2}
DESCRIPTION="A driving simulation made with drift racing in mind"
HOMEPAGE="http://vdrift.net/"
SRC_URI="https://github.com/VDrift/${PN}/archive/${MY_PV}-release.tar.gz"

LICENSE="GPL-3 ZLIB"
SLOT="0"
KEYWORDS="amd64 x86"
IUSE=""

RDEPEND="app-arch/libarchive
	~games-sports/vdrift-data-${PV}
	media-libs/glew
	media-libs/libsdl[opengl,video]
	media-libs/sdl-gfx
	media-libs/sdl-image[png]
	media-libs/libvorbis
	net-misc/curl
	sci-physics/bullet[-double-precision]
	virtual/opengl
	virtual/glu"
DEPEND="${RDEPEND}
	dev-cpp/asio
	dev-libs/boost
	virtual/pkgconfig"

S=${WORKDIR}/${MY_P}

src_prepare() {
	epatch "${FILESDIR}"/${PN}-20111022-build.patch
	epatch "${FILESDIR}"/${PN}-20120722-SDL_keysym.patch
}

src_compile() {
	escons \
		force_feedback=1 \
		destdir="${D}" \
		bindir="${GAMES_BINDIR}" \
		datadir="${GAMES_DATADIR}"/${PN} \
		prefix= \
		use_binreloc=0 \
		release=1 \
		os_cc=1 \
		os_cxx=1 \
		os_cxxflags=1 \
		|| die
}

src_install() {
	dogamesbin build/vdrift || die
	#insinto "${GAMES_DATADIR}/${PN}"
	#doins -r data/* || die
	newicon "${FILESDIR}"/vdrift-64x64.png ${PN}.png
	make_desktop_entry ${PN} VDrift
	#cd "${D}"
	#keepdir $(find "${GAMES_DATADIR/\//}/${PN}" -type d -empty)
	prepgamesdirs
}

Viel Spaß damit
Meine Mottos:
1. Jegliche Beiträge sind so zu halten dass sie von Vorstandsmitgliedern und Kleinkindern verstanden werden.
2. Wer sich hinter Fachbegriffen deren Bedeutung er nicht kennt versteckt, macht dass nur um seine Ahnungslosigkeit zu überdecken.
3. Die Namen von Betriebssytemen enden immer mit einem "X". LinuX, UniX und Mac OS X.
4. Jeder der mich in irgend einer Form mit dem Wort Rechtschreibung auf irgend eine Weise in Verbindung bringt, landet auf der Ignore Liste

4

22.01.2013, 00:43

Hallo Toadie,

danke für deine Antwort. Ich kenne dieses Ebuild, ich wollte ursprünglich für die neue Version von vdrift ein ebuild schreiben, es gibt seit fast einem Jahr eine neue Stable Version von vdrift.
Bis ich auf stuntrally gestoßen bin, mit bessere Grafik und auf Basis von vdrift.

Hab auch schon gedacht dass ich die Data auslagere, aber da es ja Live-Ebuilds sind, kann man nicht sagen, immer wenn ich stuntrally installiere aktualisiere auch stuntrally-data. Ist ja schon Installiert!
Wenn ich alles richtig verstanden habe, dann verwendet stuntrally nicht sdl-gfx sondern ogre als Grafikrenderer und man benötigt lediglich dev-libs/libsdl.

Es lässt sich zumindest Installieren und auch ausführen ;-)

Wenn ich eine Lösung für mein distfiles Problem gefunden habe, möchte ich es gerne veröffentlichen, damit jeder etwas davon hat. Bin leider noch nicht ganz in das Thema Ebuild drin, aber mit etwas experimentier Freude und einfach testen komm ich mein Ziel immer näher.

Gruß,
Sandy

EDIT:
Das Ebuild ist nun soweit fertig, Bild wackelt auch nicht mehr nachdem ich dev-cpp/asio hinzugefügt habe. Problem mit den Distfiles besteht noch immer, falls also hierzu jemand etwas sagen kann, bitte hier Posten.
»knasan« hat folgende Datei angehängt:
knasan

- Bug oder Feature, das darf man sich hier aussuchen. -

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »knasan« (22.01.2013, 18:51)


5

22.01.2013, 21:45

Zitat

aber mit etwas experimentier Freude und einfach testen komm ich mein Ziel immer näher.
Yep, dass ist der Richtige Weg, wenn du im Februar wenn ich mit meinen Klausuren endlich fertig bin und meine eigene todo Liste abgearbeitet hab, immer noch dran rum basteln solltest, bastell ich je nach Lust und Laune vielleicht mit. Hab noch nie ein Ebuild geschrieben aber wenn ich mir dass Ebuild ansehe dass ich gepostet habe sieht es zumindest mal nicht sonderlich schwer aus. Ich kann mich da aber vielleicht auch täuschen. :D


Viel Spaß noch
Meine Mottos:
1. Jegliche Beiträge sind so zu halten dass sie von Vorstandsmitgliedern und Kleinkindern verstanden werden.
2. Wer sich hinter Fachbegriffen deren Bedeutung er nicht kennt versteckt, macht dass nur um seine Ahnungslosigkeit zu überdecken.
3. Die Namen von Betriebssytemen enden immer mit einem "X". LinuX, UniX und Mac OS X.
4. Jeder der mich in irgend einer Form mit dem Wort Rechtschreibung auf irgend eine Weise in Verbindung bringt, landet auf der Ignore Liste

6

22.01.2013, 22:04

Hab noch nie ein Ebuild geschrieben aber wenn ich mir dass Ebuild ansehe dass ich gepostet habe sieht es zumindest mal nicht sonderlich schwer aus. Ich kann mich da aber vielleicht auch täuschen
Naja, im Grunde ist es nur Bash, aber man muss die Variablen kennen die man in Ebuild verwenden kann. Mann muss halt Wissen das "P" das ebuildname mit Versionsnummer ist, "PN" ohne Versionsnummer und zum Beispiel "WORKDIR" das Verzeichnis unter /var/tmp/portage/categorie/ebuildname/work/ebuildname/ wo das Ebuild in der Sandbox gebaut wird ist. Dann gibt es noch klassen die man als module verwenden kann, möchte man git nutzen muss zum Beispiel git-2 genutzt werden. Aber ganz hab ich den dreh noch nicht raus. Mir Fehlt jetzt einfach nur die Variable (evtl. gibt es keine) für die Distfiles.
Ansonsten funktioniert mein Ebuild wie gewünscht. Würde mich aber freuen, mal ein Projekt gemeinsam zu machen 8o
knasan

- Bug oder Feature, das darf man sich hier aussuchen. -

7

22.01.2013, 22:12

Ohne Groß von Ahnung zu haben für welchen Zweck du die distfiles brauchst, hab mal folgende 2 Variablen gefunden.

Quellcode

1
2
DISTDIR defines the path to the location of all distfiles (downloaded source code/artifacts), and defaults to /usr/portage/distfiles
PKGDIR defines the path to where Portage will store all built binary packages, and defaults to /usr/portage/packages


Viel Spaß noch
Meine Mottos:
1. Jegliche Beiträge sind so zu halten dass sie von Vorstandsmitgliedern und Kleinkindern verstanden werden.
2. Wer sich hinter Fachbegriffen deren Bedeutung er nicht kennt versteckt, macht dass nur um seine Ahnungslosigkeit zu überdecken.
3. Die Namen von Betriebssytemen enden immer mit einem "X". LinuX, UniX und Mac OS X.
4. Jeder der mich in irgend einer Form mit dem Wort Rechtschreibung auf irgend eine Weise in Verbindung bringt, landet auf der Ignore Liste

8

23.01.2013, 01:31

Distfiles noch wage mit $PORTDIR/distfiles gesetzt um extra Tracks per Git zu laden ... Es gibt zwar die Variable DISTFILE, Ordner ist aber leer, da benötige ich noch Hilfe.
Ich meinte hier DISTDIR und nicht DISTFILE diese Variable gibt es gar nicht, hab mich verschrieben, aber der Ordner ist Leer. Dachte ich auch das dies die Variable ist was ich benötige oder ich nutze es falsch.
Werde es mir Morgen nochmal genauer ansehen.
knasan

- Bug oder Feature, das darf man sich hier aussuchen. -

9

23.01.2013, 03:00

Hallo Forum,

ich hab eine Lösung für mein Problem gefunden. Und so klappt es:

Quellcode

1
2
3
4
5
6
7
8
9
src_unpack() {
  git-2_src_unpack
  EGIT_REPO_URI="git://github.com/stuntrally/tracks.git"
  EGIT_SOURCEDIR="${S}/data/tracks"
  git-2_src_unpack

  mkdir ${MYBUILD_DIR}
  [ -d ${S}/data/tracks/.git ] && rm -r ${S}/data/tracks/.git
}


Erklärung:
In der Kopfzeile vom Ebuild wurde EGIT_REPO_URI gesetzt ....
in function src_unpack wird zu erst EGIT_REPO_URI entpackt mit git-2_src_unpack, danch wird die Variable neu gesetzt für die Tracks, SOURCEPATH wird nun so angepasst, wohin es später entpackt werden soll. Nun kann man es wieder mit git-2_src_unpack entpacken und die Files liegen nun da wo diese hingehören.

Das Ebuild habe ich nun Freigegeben und kann sich von https://github.com/knasan/ebuildsbesorgt werden.

Danke @Toadie für deine Unterstützung.

Viel Spaß beim Zocken.


Sandy
»knasan« hat folgende Datei angehängt:
knasan

- Bug oder Feature, das darf man sich hier aussuchen. -