View previous topic :: View next topic |
Author |
Message |
spork n00b
Joined: 26 Nov 2012 Posts: 4
|
Posted: Mon Nov 26, 2012 12:43 pm Post subject: eigener xf86-video-intel Treiber vs. Emerge [solved] |
|
|
Moin moin,
ich wollte mal fragen, ob es eine Moeglichkeit gibt Pakete als 'emerged' anzunehmen bzw. beim 'emergen' irgendwie zu auszulassen.
Hintergrund: Ich habe einen Laptop mit 2 Grafikkarten (nvidia und intel) und verwende daher Optimus/Bublebee. Nun habe ich einen xf86-video-intel Treiber im Einsatz den ich selber patche und kompiliere - soweit ich das gesehen habe gibt es kein Overlay das mir den Treiber so bietet. Diesen benoetige ich allerdings, da es mir sonst nicht moeglich ist auf einen zweiten Monitor zu erweitern, welcher ueber den VGA-Port (hardwired zur Nvidia-Karte) angeschlossen ist. Das funktioniert mittlerweile auch alles wie gewuenscht aber:
Da ich in meiner make.conf unter 'VIDEO_CARDS' immer noch 'intel' mit eingetragen habe und so wie ich das sehe auch nicht einfach entfernen sollte, wird bei einem Update (xorg-drivers sei Dank) der Treiber aus Portage nachinstalliert. Das moechte ich aber natuerlich vermeiden. Ein einfaches Maskieren des intel Treibers hilft hier leider nicht weiter, da es natuerlich zur Blockierung fuehrt. Es waere schoen, wenn fuer einzelne Pakete VIDEO_CARDS wie USE-flags verwendet werden koennte, mir ist jedoch nicht bekannt, dass es soetwas funktioniert. Die einzige Idee die ich jetzt noch habe, ist ein eigenes ebuild zu schreiben. Bevor ich dieses jedoch tue, wollte ich einmal kurz in die Runde fragen, ob jemand eine andere Idee hat.
M.f.G. spork
Last edited by spork on Mon Nov 26, 2012 1:48 pm; edited 1 time in total |
|
Back to top |
|
|
Christian99 Veteran
Joined: 28 May 2009 Posts: 1721
|
Posted: Mon Nov 26, 2012 1:12 pm Post subject: |
|
|
Hi, ja das geht, indem du in eine datei /etc/portage/package.provided den paketnamen "x11-drivers/xf86-video-intel" einträgst. dann wird emerge annehmen, das paket sei installiert.
Nach deinen Ausführungen gibt es mMn eine bessere Methode:
ich weiß nicht, wie genau du dich mit portage auskennst, aber ein emerge prozess besteht aus mehreren phasen. so grob die wichtigsten:
src_unpack src_prepare src_configure src_compile src_install (genau: siehe hier: http://devmanual.gentoo.org/ebuild-writing/functions/index.html)
die phasen sind als bash funktionen ausgeführt. und portage untestützt sogenannte phase hooks. du kannst vor und nach jeder phase (post_{phasename} und pre_{phasename}) eigene funktionen einschieben.
das geht indem du eine entsprechende funktion schreibst. die liegt in einer datei in /etc/portage/env. dort erstellst du ein verzeichnis mit dem category-name ( x11-drivers in deinen fall) und in diesem verzeichis eine datei mit dem paketnamen (xf86-video-intel hier). da schreibst du dann, wenn du einen zusätlichen patch anbringen willst z.b. eine post_src_prepare funktion ungefähr so:
Code: |
post_src_prepare(){
epatch /path/to/patch/file
}
|
epatch ist eine portagefunktiion die patch mit der angegebenen datei auf das src verzeichnis anwendet und dabei bei fehlschlag mehrere strip level ausprobiert. ausführlichere übersicht zu den helperfunctions hier: http://devmanual.gentoo.org/eclass-reference/ebuild/index.html
dasganze ist zwar erstmal mehr arbeit, aber erfahrungsgemäß gibt es langfristig mehr probleme wenn man an portage vorbei installiert.
Falls du noch fragen hast, ich bin zwar kein experte, aber ab und zu hab ich sowas schon mal verwendet und kenn mich ein bisschen damit aus.
viel erfolg
Christian |
|
Back to top |
|
|
spork n00b
Joined: 26 Nov 2012 Posts: 4
|
Posted: Mon Nov 26, 2012 1:43 pm Post subject: |
|
|
Hallo Christian99,
vielen Dank fuer deine kompetente Hilfe . Hat alles wie am Schnuerchen funktioniert. Die Hooking Variante gefaellt mir sehr gut, ging schnell und fuehrte zum gewuenschten Ergebnis!
M.f.G. Spork |
|
Back to top |
|
|
toralf Developer
Joined: 01 Feb 2004 Posts: 3942 Location: Hamburg
|
Posted: Mon Nov 26, 2012 7:12 pm Post subject: |
|
|
Patchen geht seit EAPI 4 noch viel einfacher, einfach ein entsprechendes Verzeichnis (je nach Lage auch mit konkreter Paketversion) erzeugen und den eigenen Patch eintragen : Code: | tfoerste@n22 ~ $ cat /etc/portage/patches/sys-kernel/genkernel/init.patch
--- /usr/share/genkernel/defaults/linuxrc 2012-11-23 10:33:08.790280626 +0100
+++ /usr/share/genkernel/defaults/linuxrc.orig 2012-11-23 10:32:28.792922392 +0100
@@ -936,7 +936,7 @@
echo -e "${BOLD}.${NORMAL}"
-exec /sbin/switch_root -c "/dev/console" "${CHROOT}" "${REAL_INIT:-/sbin/init}" "${INIT_OPTS}"
+exec /sbin/switch_root -c "/dev/console" "${CHROOT}" "${REAL_INIT:-/sbin/init}" "${INIT_OPTS}" "$@"
# If we get here, something bad has happened
splash 'verbose'
| Wenn das konkrete Paket noch nicht auf EAPI 4 ist, einfach einen bug report aufmachen.
Anemrkeung: Das konkrete Beispiel funktioniert noch nicht, da das genkernel ebuild noch die veraltete EAPI hat. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|