linux/types.h vs asm/types.h

*sigh* Nachdem ich mit dem vdrdevel-Zweig aus dem e-tobi-Repository nicht wirklich klar gekommen bin, bin ich nun dem Rat von Tobias Grimm gefolgt und baue mir »normale« vdr-Pakete für mein Ubuntu 8.10 auf Basis der Vorarbeit von Grimm und anderen: Ich habe das vdr-1.6.0-Quellpaket geholt, wie von Tobias Grimm per Mail vorgeschlagen mittels des Debian-Maintainer-Tools »uupdate« auf die Upstream-Version 1.7 aktualisiert (vorher den 1.7.0-tarball von cadsoft geholt) und wollte dann die notwendigen Patches für Multiproto- bzw. S2API gemäß Schema F einpflegen. Soweit, so theoretisch einfach ;-)
Während die Umwandlung der Patches für vdr 1.7.0 (vgl. bei free-x) mittels dpatch einfach war und sie sich auch wunderprächtig applizieren liessen, machte das Hinzufügen der Optionen für die Kernel-externen Treiber (ich nutze diesmal s2-liplianin) schon mehr Kopfzerbrechen. Meine Lösung ist dieser zusätzliche dpatch:

root@hdtvdr:/usr/local/src/hd-vdr# cat vdr-1.7.0/debian/patches/81_Make_config-S2API.dpatch
#! /bin/sh /usr/share/dpatch/dpatch-run
## 81_Make_config-S2API.dpatch by <root@hdtvdr.ltsp>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: S2API patch (DVB-S2) for Make.config
@DPATCH@
*** vdr-1.7.0/Make.config 2009-03-03 20:36:55.000000000 +0100
— /tmp/Make.config 2009-03-03 20:35:06.000000000 +0100
***************
*** 26,28 ****
— 26,37 ----
# memory leaks in the plugin libs
DEFINES += -DVDRDEBUG
endif
+
+ DVBDIR = /root/s2-liplianin/linux
+
+ ### You don't need to touch the following:
+
+ ifdef DVBDIR
+ INCLUDES += -I$(DVBDIR)/include
+ endif
+ 

Damit wurde dann auch angefangen, zu kompilieren – kein Abbruch mehr, weil die DVB_API_VERSION 3 (Ubuntu-Kernel (3.0) als auch Multiproto (3.3)) und nicht 5 ist –, leider brach der Compiler dann später ins Essen: »__u8 does not name a type« mit Hinweis auf frontend.h und dmx.h. ¡Mierda!
Hier brachte dann ein »diff -c /usr/include/linux/dvb/frontend.h /root/s2-liplianin/linux/include/linux/dvb/frontend.h«, also ein Vergleich der Kernel-Sourcen mit denen aus dem s2-liplianin-Zweig, die Aufklärung: Augenscheinlich ist 2009 bei Kernel 2.6.27 nicht mehr linux/types.h für derlei Treiber zu inkludieren sondern asm/tyes.h. Mit einer marginalen Änderung im s2-liplianin-Zweig lief dann auch der Buildprozess durch:

*** /root/s2-liplianin/linux/include/linux/dvb/frontend.h 2009-03-03 21:25:10.000000000 +0100
— /tmp/frontend.h 2009-03-03 21:24:49.000000000 +0100
***************
*** 26,32 ****
#ifndef _DVBFRONTEND_H_
#define _DVBFRONTEND_H_
! #include <linux/types.h>
typedef enum fe_type {
FE_QPSK,
— 26,32 ----
#ifndef _DVBFRONTEND_H_
#define _DVBFRONTEND_H_
! #include <asm/types.h>
typedef enum fe_type {
FE_QPSK,

So, nun werde ich die Früchte dieses Abends probieren, also meine Pakete installieren und schauen, ob jener VDR überhaupt anstartet ;)

root@hdtvdr:/usr/local/src/hd-vdr# ls -la *.deb
-rw-r–r– 1 root root 872738 2009-03-03 21:24 vdr_1.7.0-1hdtv1_i386.deb
-rw-r–r– 1 root root 1281536 2009-03-03 21:24 vdr-dbg_1.7.0-1hdtv1_i386.deb
-rw-r–r– 1 root root 306658 2009-03-03 21:23 vdr-dev_1.7.0-1hdtv1_all.deb
-rw-r–r– 1 root root 75674 2009-03-03 21:24 vdr-plugin-examples_1.7.0-1hdtv1_i386.deb
-rw-r–r– 1 root root 35470 2009-03-03 21:24 vdr-plugin-sky_1.7.0-1hdtv1_i386.deb

 
Dann ginge es an die gewünschten Plugins, diese sind natürlich ebenfalls einmal durchzubauen, da es ja keine »normale« vdr-Version 1.7.0 von e-tobi.net gibt.
Ich glaube, daran breche ich mir morgen die Wurstfinger ;) An dieser Stelle nochmals der auch schon per Mail kommunizierte Dank an Tobias Grimm für das Schubsen auf den rechten Pfad.
Nachtrag: Gegen »error: linux/compiler.h: No such file or directory« gibt es ebenfalls Abhilfe, in meinem Fall:

cp /usr/src/linux-headers-$(uname -r)/include/linux/compiler.h
/root/s2-liplianin/linux/include/linux/