2016-05-21 27 views
0

Ich werde versuchen, es so einfach wie möglich zu erklären. Ich habe versucht, das Paket "A" in mein Yocto-Bild aufzunehmen und zu bauen, aber das Paket A hängt von libftdi und ftdi-eeprom ab. Nun hängt "ftdi-eeprom" von der "libftdi" ab. In den neueren Versionen der "libftdi" enthält der Tarball auch die FTDI-EEPROM-Quellen und beim Erstellen der libftdi baut er beide Pakete auf. Obwohl wegen der Art und Weise, dass das Paket "A" konfiguriert ist, brauche ich zwei verschiedene Rezepte für jede der Abhängigkeiten.Wie verwendet man SSTATE_DUPWHITELIST Variable in yocto

Lange Rede, kurzer Sinn, ich habe die zwei Bitbake-Rezepte so gut wie möglich gemacht und erfolgreich "libftdi" gebaut. Jetzt, wenn ich das "ftdi-eeprom" Rezept benutze, möchte ich einige Dateien in den Sysroot eintragen, die dort bereits von libftdi installiert sind. Hier kommt der Fehler vor ... Duplikate!

Offensichtlich muss ich eine SSTATE_DUPWHITELIST Variable setzen und erklären, dass diese doppelten Dateien sicher sind, die alten im Bild zu ersetzen (dieses Überschreiben muss geschehen). Kann mir bitte jemand helfen bei der Konfiguration von SSTATE_DUPWHITELIST? Ich bin nicht der Profi, der mit Yocto arbeitet.

Fehler, die ich auf dem Bildschirm zu bekommen sind in Dropbox

Vielen Dank im Voraus hochgeladen!

Antwort

0

schaffte ich es, indem Sie die SSTATE_DUPWHITELIST zum bitbake Rezept des Pakets, dieses Problem zu lösen, wie folgt:

SSTATE_DUPWHITELIST = "$ {TMPDIR}/path/to/DIE/FILES"

I hinzugefügt der absolute Pfad aller 6,7 Dateien, die den Konflikt zur Liste hatten. Ich tat das, weil sie im Grunde aus derselben Quelle kamen und es war alles sicher, das zu tun. korrigiere mich, wenn es einen besseren Weg gibt.

Hoffe das hilft jemandem!

2

Die Antwort ist, SSTATE_DUPWHITELIST für dieses überhaupt nicht zu verwenden. Stattdessen sollten Sie im do_install des libbtdi-Rezepts (oder do_install_append, wenn das Rezept selbst kein eigenes do_install definiert) die doppelten Dateien aus $ {D} löschen und dann werden sie nicht inszeniert und der Fehler tritt nicht auf .

+2

Ja, entweder löschen Sie die kollidierenden Dateien, oder haben Sie ein Rezept, alles zu bauen, und die Eeprom-Dateien nur in einem eigenen Paket. (Ich habe mir das betreffende Rezept nicht angesehen, aber das könnte ein noch besserer Ansatz sein). – Anders

+0

Vielen Dank für die Antwort Jungs, ich fange gerade an, Yocto zu benutzen, und ich lerne immer noch. Kann ich Sie um eine Beispielssyntax für das bitten, was Sie vorgeschlagen haben? Es würde wirklich helfen. Prost. – bsoren