Hop,
Voilà un
PKGBUILD de base (nom provisoire):
Code : Tout sélectionner
pkgname=it9135-fw
pkgver=9.12.18.1
pkgrel=1
pkgdesc="Driver and firmware for Terratec T1"
arch=('i686' 'x86_64')
url="http://linux.terratec.de/tv_en.html"
license=('GPL')
depends=('kernel26')
makedepends=('kernel26-headers')
source=("http://linux.terratec.de/files/TERRATEC_T1/TERRATEC_T1_Linux.zip"
"it9135.patch"
"makefile.patch"
)
md5sums=('a9c7a88a5c267992dcc83a25c5047bba'
'16c14283436138e54519a38c6538527d'
'c90ebd0edc25cfbb5050d81fb3bbf840'
)
install=it9135-fw.install
build() {
cd "$srcdir"
# is it necessary ? ... I didn't verify the differences... XD
if [ "$CARCH" == x86_64 ] ; then
cd 64bit
tar xzvf IT9135_SRC.tar.gz
else
cd 32bit
fi
cd IT9135_SRC
#no configure... only Makefile
#and of course, it doesn't work for kernel > 2.6.31
#So: patch the sources (tested for kernel 2.6.39 under x86_64 and 2.6.38 under i686)...
patch -Np0 -i ${srcdir}/it9135.patch
#... and the Makefile for our needs...
patch -Np0 -i ${srcdir}/makefile.patch
#make the module and add the firmware
make
make DESTDIR="$pkgdir" install
}
(parce que j'ai vu les répertoires 32 et 64 bits, j'en ai tenu compte... mais un diff n'avait pas l'air de montrer des différences remarquables, donc à vérifier si la modification en cd "$srcdir"/32bit/IT9135_SRC est suffisante -- le 32bit étant déjà décompressé... )
it9135-fw.install
Code : Tout sélectionner
post_install() {
echo "Running depmod -a..."
depmod -a
echo "Now, You should load the module dvb_usb_it9135 with modprobe dvb_usb_it9135 if any"
}
post_upgrade() {
post_install
}
post_remove() {
depmod -a
}
Les deux patchs (j'suis ni un expert en Makefile, ni en kernel alors ça vaut ce que ça vaut... compte tenu que j'arrive à compiler un machin de poids non nul

, c'est qu'à priori ça se passe pas trop mal... ):
it9135.patch:
http://pastebin.archlinux.fr/432877
makefile.patch:
http://pastebin.archlinux.fr/432878
(à inclure dans le même répertoire que le PKGBUILD avec le .install, ne pas oublier de vérifier les sommes de contrôle)
J'ai pu compiler sur x86_64 (kernel 2.6.39) et sur i686 (2.6.38) et charger le module comme indiqué... bon, après, est-ce-que ça marche vraiment, moi pas savoir ?
EDIT: bon, j'ai vérifié... il faut bien utiliser le bon répertoire selon l'architecture comme indiqué dans le build.
EDIT: au fait, une autre façon de faire (la "bonne", en tous cas celle qu'on voit le plus souvent) serait d'avoir un paquet pour le firmware (le .bin) et un autre pour le module du noyau (mais bon pour deux fichiers, j'ai jamais trop compris cette séparation... ...).
EDIT: Egalement ne pas oublier qu'à chaque mise à jour du kernel il faut recompiler le module (sinon modprobe va raler... donc une condition supplémentaire dans les dépendances, comme "kernel26<version du kernel à laquelle le module a été compilé" pourrait te servir de rappel pour mettre à jour le build et ton module).