MLD-5.x > Development

Erforderliche Schritte für einzelnes Paket in neuer Entwicklungsumgebung

(1/2) > >>

maf:
Hallo,

ich möchte einen Patch für das Plugin svdrpservice aus MLD 5.3 für den Raspberry Pi ausprobieren. Dazu habe ich nach der Anleitung ein Docker Image erstellt.

Im Container existiert nach dem Start das Verzeichnis vdr-plugin-svdrpservice noch nicht, also geht auch

--- Code: ---cd vdr-plugin-svdrpservice
make
--- End code ---
noch nicht.

Bei meinem Versuch, das Verzeichnis für das Plugin bereitzustellen, tritt allerdings ein Fehler auf:

--- Code: ---root@1d8928adab15:/MLD# make checkout vdr-plugin-svdrpservice
Cloning into 'git-5'...
fatal: repository 'http://minidvblinux.de/git-5/.git/' not found
Makefile.git:111: recipe for target 'checkout' failed
make: *** [checkout] Error 128
--- End code ---
Wenn ich Makefile.git richtig lese, dann kommt der Name des Pakets (Variable name) dort nicht an. Ich vermute, vor dem checkout muss ich noch etwas anderes tun.

Was ist die minimale Befehlsfolge nach dem Start des Containers, um ein einzelnes Paket zu bauen?

Gruß, maf

maf:
Ok, wer lesen kann, ist klar im Vorteil...

Mittlerweile weiß ich, dass ich beim checkout den Namen des Pakets als Parameter angeben muss:

--- Code: ---root@1d8928adab15:/MLD# make checkout name=vdr-plugin-svdrpservice
Cloning into 'vdr-plugin-svdrpservice'...
--- End code ---

Leider läuft beim nächsten Schritt noch etwas schief:

--- Code: ---root@1d8928adab15:/MLD# cd vdr-plugin-svdrpservice/
root@1d8928adab15:/MLD/vdr-plugin-svdrpservice# make
Makefile:1: ../vdr/Makefile.plugin: No such file or directory
make: *** No rule to make target '../vdr/Makefile.plugin'.  Stop.
--- End code ---

Also zunächst

--- Code: ---root@1d8928adab15:/MLD# make checkout name=vdr
Cloning into 'vdr'...
--- End code ---

Beim erneuten make im Verzeichnes des Plugins fehlen zunächst wget

--- Code: ---root@1d8928adab15:/MLD/vdr-plugin-svdrpservice# make
/bin/sh: 1: wget: not found
/bin/sh: 1: wget: not found
/bin/sh: 1: wget: not found
/bin/sh: 4: wget: not found
../Makefile.getfile:18: recipe for target 'src/vdr.bz2' failed
make[2]: *** [src/vdr.bz2] Error 1
Makefile:47: recipe for target 'src/vdr.bz2' failed
make[1]: *** [src/vdr.bz2] Error 2
../vdr/Makefile.plugin:59: recipe for target '../vdr/src/vdr/config.h' failed
make: *** [../vdr/src/vdr/config.h] Error 2
--- End code ---
und dann g++

--- Code: ---root@1d8928adab15:/MLD/vdr-plugin-svdrpservice# make
--2019-06-11 12:22:02--  ftp://ftp.tvdr.de/vdr/vdr-2.4.0.tar.bz2
           => '/root/.cache/mld//vdr-2.4.0.bz2'
Resolving ftp.tvdr.de (ftp.tvdr.de)... 88.198.76.220
Connecting to ftp.tvdr.de (ftp.tvdr.de)|88.198.76.220|:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD (1) /vdr ... done.
==> SIZE vdr-2.4.0.tar.bz2 ... 939441
==> PASV ... done.    ==> RETR vdr-2.4.0.tar.bz2 ... done.
Length: 939441 (917K) (unauthoritative)

vdr-2.4.0.tar.bz2   100%[===================>] 917.42K  4.59MB/s    in 0.2s

2019-06-11 12:22:03 (4.59 MB/s) - '/root/.cache/mld//vdr-2.4.0.bz2' saved [939441]
...
  vdr-plugin-svdrpservice:
Failed to open '../../../vdr.pc': No such file or directory
No package '../../../vdr.pc' found
Failed to open '../../../vdr.pc': No such file or directory
No package '../../../vdr.pc' found
Failed to open '../../../vdr.pc': No such file or directory
No package '../../../vdr.pc' found
Failed to open '../../../vdr.pc': No such file or directory
No package '../../../vdr.pc' found
Failed to open '../../../vdr.pc': No such file or directory
No package '../../../vdr.pc' found
Failed to open '../../../vdr.pc': No such file or directory
No package '../../../vdr.pc' found
Failed to open '../../../vdr.pc': No such file or directory
No package '../../../vdr.pc' found
/bin/sh: 1: g++: not found
Failed to open '../../../vdr.pc': No such file or directory
No package '../../../vdr.pc' found
Failed to open '../../../vdr.pc': No such file or directory
No package '../../../vdr.pc' found
Package freetype2 was not found in the pkg-config search path.
Perhaps you should add the directory containing `freetype2.pc'
to the PKG_CONFIG_PATH environment variable
No package 'freetype2' found
Package fontconfig was not found in the pkg-config search path.
Perhaps you should add the directory containing `fontconfig.pc'
to the PKG_CONFIG_PATH environment variable
No package 'fontconfig' found
/bin/sh: 1: g++: not found
make[3]: *** Deleting file '.dependencies'

*** Plugin svdrpservice:
/bin/sh: 1: g++: not found
make[4]: g++: Command not found
Makefile:74: recipe for target 'svdrpservice.o' failed
make[4]: *** [svdrpservice.o] Error 127

*** failed plugins: svdrpservice

Makefile:229: recipe for target 'plugins' failed
make[3]: *** [plugins] Error 1
../vdr/Makefile.plugin:49: recipe for target 'src/svdrpservice/libvdr-svdrpservice.so' failed
make[2]: *** [src/svdrpservice/libvdr-svdrpservice.so] Error 2
grep: ../broken_packages.lst: No such file or directory
--- End code ---

Mit wget und g++:

--- Code: ---root@1d8928adab15:/MLD/vdr-plugin-svdrpservice# make
  vdr-plugin-svdrpservice:
Package freetype2 was not found in the pkg-config search path.
Perhaps you should add the directory containing `freetype2.pc'
to the PKG_CONFIG_PATH environment variable
No package 'freetype2' found
Package fontconfig was not found in the pkg-config search path.
Perhaps you should add the directory containing `fontconfig.pc'
to the PKG_CONFIG_PATH environment variable
No package 'fontconfig' found
font.c:19:10: error: #include expects "FILENAME" or <FILENAME>
 #include FT_FREETYPE_H
          ^~~~~~~~~~~~~
make[3]: *** Deleting file '.dependencies'

*** Plugin svdrpservice:
po/it_IT.po:8: warning: header field 'Language' still has the initial default value
po/sk_SK.po:7: warning: header field 'Language' still has the initial default value
po/de_DE.po:8: warning: header field 'Language' still has the initial default value
find: '../vdr/src/vdr/locale': No such file or directory
    Build package: vdr-plugin-svdrpservice
Das für vdr benötigtes Debian Paket libjpeg-dev fehlt.
Das für vdr benötigtes Debian Paket libcap-dev fehlt.
Das für vdr benötigtes Debian Paket libfontconfig1-dev fehlt.
Das für vdr benötigtes Debian Paket libtinyxml-dev fehlt.
Das für vdr benötigtes Debian Paket libglibmm-2.4-dev fehlt.
Sie können es durch folgende Eingabe installieren:
sudo apt-get install libjpeg-dev libcap-dev libfontconfig1-dev libtinyxml-dev libglibmm-2.4-dev

../Makefile.tools:688: recipe for target 'dep' failed
make[5]: *** [dep] Error 1
        Build vdr-plugin-svdrpservice...
          Füge Abhängigkeit hinzu: libstdc++6
            Benötigt von: /data/usr/lib/vdr/libvdr-svdrpservice.so.2.4.0
          Create lib package libstdc++6
          Add lib /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 to package libstdc++6
          Füge Abhängigkeit hinzu: libc6
            Benötigt von: /data/usr/lib/vdr/libvdr-svdrpservice.so.2.4.0
          Create lib package libc6
          Add lib /lib/arm-linux-gnueabihf/libm.so.6 to package libc6
          Füge Abhängigkeit hinzu: libgcc1
            Benötigt von: /data/usr/lib/vdr/libvdr-svdrpservice.so.2.4.0
          Create lib package libgcc1
          Add lib /lib/arm-linux-gnueabihf/libgcc_s.so.1 to package libgcc1
          Add lib /lib/arm-linux-gnueabihf/libc.so.6 to package libc6
        libstdc++6:
          Build package: libstdc++6
          Füge Abhängigkeit hinzu: libc6
            Benötigt von: /data/usr/lib/arm-linux-gnueabihf/libstdc++.so.6.0.22
          Füge Abhängigkeit hinzu: libgcc1
            Benötigt von: /data/usr/lib/arm-linux-gnueabihf/libstdc++.so.6.0.22
        libc6:
          Build package: libc6
        libgcc1:
          Build package: libgcc1
          Füge Abhängigkeit hinzu: libc6
            Benötigt von: /data/lib/arm-linux-gnueabihf/libgcc_s.so.1
--- End code ---

Ergebnis:

--- Code: ---root@1d8928adab15:/MLD/vdr-plugin-svdrpservice# ls -l
total 32
-rw-r--r-- 1 root root  109 Jun 11 12:08 Makefile
-rw-r--r-- 1 root root   74 Jun 11 12:20 Makefile.version
drwxr-xr-x 2 root root 4096 Jun 11 12:08 control
-rw-r--r-- 1 root root   29 Jun 11 12:26 depends
drwxr-xr-x 4 root root 4096 Jun 11 12:26 package
lrwxrwxrwx 1 root root   69 Jun 11 12:26 package.deb -> ../.packages/vdr-plugin-svdrpservice_1.0.0-7+2.4.0.218+root_armhf.deb
drwxr-xr-x 3 root root 4096 Jun 11 12:08 src
drwxr-xr-x 4 root root 4096 Jun 11 12:08 template
--- End code ---

Darf ich denn trotz all der Warnungen und Fehlermeldungen, der fehlenden Bibliotheken und Verzeichnisse dem Paket vertrauen?

Aber vor allem: Da habe ich ja offensichtlich ein Plugin für VDR 2.4.0 gebaut. Und in MLD 5.3 läuft doch VDR 2.2.0, oder?

Die Entwicklungsumgebung ist auf Stand 5.3:

--- Code: ---root@1d8928adab15:/MLD# git status
HEAD detached at 5.3
nothing to commit, working tree clean

--- End code ---

Trotzdem wurde für vdr beim make das Archiv für Version 2.4.0 heruntergeladen. Wie kann ich erreichen, dass das Archiv für Version 2.2.0 heruntergeladen wird?

clausmuus:
Die meisten Deiner Probleme rühren daher, dass wir die MLD Entwicklungsumgebung bisher nicht genutzt haben um einzelne Pakete zu bauen. Von daher sind die benötigten Abhängigkeiten bei unseren Builds bereits durch andere Pakete bereitgestellt. Aus selbigen Grund sind auch nicht alle Abhängigkeiten im Makefile des Plugins eingetragen.

Aufgrund der vielen Meldungen das Libs fehlen, gehe ich davon aus, dass das Plugin nicht vollständig funktionieren wird, auch wenn der Build komplett durchgelaufen ist. Unabhängig davon wirst Du in einer MLD-5.4 Entwicklungsumgebung keine MLD-5.3 Pakete bauen können, da die für den Build verwendeten Libs nicht zu denen passen, die bei der 5.3 verwendet wurden. ALso selbst der Wechsel zu VDR 2.2 in der Build Umgebung wird Dir nicht weiter helfen.

Der 5.3 Tag im Status des MLD Ordners, ist der letzte 5.3 Checkin im MLD Repositorie. Alles danach ist MLD 5-4 spezifisch. Du müsstest also bei allen Paketen einen Stand auschecken, der vor dem datum des 5.3 Tags liegt. Aber auch das zugrunde liegende Debian müsste halt die selbe Version haben, die wir damals eingesetzt hatten.

maf:
Danke für die Erklärung.

Wenn ich Dich richtig verstehe, habe ich keine realistische Chance, ein einzelnes Paket zu erstellen. Wäre dann folgende Vorgehensweise erfolgversprechend, um einen Patch für eine Paket für MLD 5.3 zu testen:

* RPi mit Raspbian Jessie aufsetzen,
* Entwicklungsumgebung aufsetzen und initialisieren wie in Einführung in den Bau der MLD 5.4 beschrieben, allerdings wo angebracht 5.4 durch 5.3 ersetzen,
* make checkout_all
* in allen Git-Repositorys die letzte Version auschecken, die vor dem Commit für MLD 5.3 eingecheckt wurde,
* meinen Patch im fraglichen Paket ablegen,
* nochmal apt-get install -y $(make deps)?
* make all
* (sehr geduldig sein)
Sollte ich es noch einmal mit Docker versuchen wollen, dann statt der beiden ersten Schritte oben

* unter Raspbian ein Docker Image von arm32v7/debian:jessie ableiten,
* Entwicklungsumgebung aufsetzen und initialisieren wie in Einführung in den Bau der MLD 5.4 beschrieben, allerdings wo angebracht 5.4 durch 5.3 ersetzen,
* Raspbian-spezifische Paketquellen wie im Forum beschrieben und zugehörige Schlüssel für APT ergänzen,
* zusätzliche Pakete installieren, zumindest soweit bislang bekannt (wget, g++, gnupg, ...),
Wie lange dürfte es auf einem RPi 3 dauern, alle Pakete zu erstellen?

Oder ist doch eine Vereinfachung möglich, z.B.:

* (Entwicklungsumgebung einrichten wie oben),
* make all (nach dem checkout_base, d.h. nur für bereits vorhandenen Pakete)
* checkout für vdr und das eine Plugin
* meinen Patch im Plugin-Paket ablegen,
* nochmal apt-get install -y $(make deps)?
* make all
* (etwas weniger geduldig sein)

clausmuus:
Der letzte Vorschlag dürfte der vielversprechendste sein. Allerdings glaube ich nicht, dass Du für Debian Jessie aalle Pakete in den passenden Versionen bekommst. Da gab esja inzwischen auch diverse Updates die Möglichwerweise nicht mehr MLD-5.3 kompatibel sind.

Warum willst Du überhaupt die 5.3 nehmen und nicht die 5.4?

Navigation

[0] Message Index

[#] Next page

Go to full version