[Terratec T1] PKGBUILD (En cours)

Mise à jour / Création /debug de paquetages
Pafrapé
Chu Ko Nu
Messages : 401
Inscription : mar. 29 juin 2010, 09:24

[Terratec T1] PKGBUILD (En cours)

Message par Pafrapé »

Bonjour à tous.

On vient de m'offrir une clé TNT USB Terratec T1 afin de me permettre de capter la TNT sur mon ordinateur portable.
Seul problème, ce matériel est trop récent et n'est pas encore intégré au noyau linux.

Par contre, Terratec à mis en ligne sur son site un hardware afin de pourvoir faire fonctionner cette clé sur linux.

J'ai donc commencé à écrire le PKGBUILD afin de pouvoir faire publier cet hardware sur AUR et que le maximum d'utilisateur puisse en bénéficier.

Mais n'étant pas un expert dans ce domaine, je n'ai pu écrire que le début du PKGBUILD.

Merci d'avance de m'aider à le compléter et à le publier sur AUR.

Code : Tout sélectionner

pkgname=AfaTech-9135
pkgver=9.12.18.1
pkgrel=1
pkgdesc="Hardware for Terratec T1"
arch=('i686' 'x86_64')
url="http://linux.terratec.de/tv_en.html"
license=('GPL')
depends=('make' 'cmake')
source=(http://linux.terratec.de/files/TERRATEC_T1/TERRATEC_T1_Linux.zip)
md5sums=('a9c7a88a5c267992dcc83a25c5047bba')
Pafrapé, car il faudrait être frappé pour... :paf:
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [Terratec T1] PKGBUILD (En cours)

Message par FoolEcho »

Au passage, pour un bon PKGBUILD:
- ne pas mettre 'make' dans les dépendances (comme tout membre du groupe base-devel, qui est un prérequis à l'utilisation d'Aur et devrait donc être déjà installé)
- si cela requiert 'cmake', le placer plutôt dans "makedepends" (c'est-à-dire les dépendances utiles pour compiler)

... pour le reste, faut regarder le zip et la doc... (et donc avoir un peu de temps :mrgreen: )
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [Terratec T1] PKGBUILD (En cours)

Message par FoolEcho »

J'ai regardé vite fait: il faut modifier le Makefile (y a pas de configure :( ) et patcher les sources (pas prévu pour kernel > 2.6.31)... Après test rapide, j'arrive à compiler le module (bon après, te dire si ça marche... je ne sais pas :mrgreen: ), je nettoie ça et je prépare un PKGBUILD (ce soir si je peux...).
«The following statement is not true. The previous statement is true.» :nage:
Pafrapé
Chu Ko Nu
Messages : 401
Inscription : mar. 29 juin 2010, 09:24

Re: [Terratec T1] PKGBUILD (En cours)

Message par Pafrapé »

Je te remercie de ton aide et de tous les renseignements qui me sont communiqués.
J'ai lu dans la notice comment faire mais je ne suis pas assez formé pour réussir à faire un PKGBUILD correct.
J'espère que grâce au tient je vais pouvoir approfondir mes connaissances dans ce domaine.
Merci encore une fois de ton aide. :merci:
Pafrapé, car il faudrait être frappé pour... :paf:
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [Terratec T1] PKGBUILD (En cours)

Message par FoolEcho »

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 :mrgreen: , 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 ? :mrgreen: :pastaper: :merci:


EDIT: bon, j'ai vérifié... il faut bien utiliser le bon répertoire selon l'architecture comme indiqué dans le build. :chinois:

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).
«The following statement is not true. The previous statement is true.» :nage:
Pafrapé
Chu Ko Nu
Messages : 401
Inscription : mar. 29 juin 2010, 09:24

Re: [Terratec T1] PKGBUILD (En cours)

Message par Pafrapé »

Excuse moi du retard avec lequel je donne suite à ton message.
Merci beaucoup pour le travail effectué.
Par contre, n'étant pas un expert et loin de là, j'ai constaté dans ton message qu'il y avait :
- un PKGBUILD (pkgname=it9135-fw...) ;
- it9135-fw.install ;
- it9135.patch ;
- makefile.patch.

Une petite question : qu'est-ce que je fais avec tout cela ? Moi pas savoir :surrender:
Pafrapé, car il faudrait être frappé pour... :paf:
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [Terratec T1] PKGBUILD (En cours)

Message par FoolEcho »

Tu installes makepkg + base-devel (si tu as déjà yaourt, tu as ce qu'il faut).
Dans un répertoire, tu places le PKGBUILD, le .install et les deux patches.

Il faut vérifier les sommes de contrôles avec celles du PKGBUILD et les modifier au besoin (en tant qu'utilisateur):

Code : Tout sélectionner

makepkg -g
Puis lancer la compilation:

Code : Tout sélectionner

makepkg -s
(s'il y a un problème, indiques-nous ce qui se passe)

Ensuite tu n'as plus qu'à installer le paquet avec:

Code : Tout sélectionner

yaourt -U it9135-fw-9.12.18.1-1-*.pkg.tar.xz
(attention, c'est bien le nom complet du fichier, pas juste le nom du paquet)

(voilà, rien qui ne soit dans le wiki :copain: )

Et tu suis les instructions de post installation (le modprobe du module, mais il peut ne pas être nécessaire: branche ta clef et vois si le module est bien chargé) et tu verras si tu peux faire des choses avec ta clef ou non (et là, je ne sais pas, à part vérifier le bon chargement du pilote/matériel avec hwinfo --usb ... :mrgreen: ).

Si ça fonctionne, n'oublie pas qu'il faudra recompiler le module à chaque mise à jour du noyau... sinon le kernel va râler sur ce module.
«The following statement is not true. The previous statement is true.» :nage:
Pafrapé
Chu Ko Nu
Messages : 401
Inscription : mar. 29 juin 2010, 09:24

Re: [Terratec T1] PKGBUILD (En cours)

Message par Pafrapé »

Merci pour les informations.

J'ai donc fait comme tu m'as dit mais j'ai le message suivant:

Code : Tout sélectionner

Cibles (1): it9135-fw-9.12.18.1-1

Taille totale des paquets (téléchargement):   0,00 Mo
Taille totale des paquets (installation):   0,65 Mo

Procéder à l'installation ? [O/n] o
(1/1) vérification de l'intégrité des paquets                                                          [#############################################################] 100%
(1/1) analyse des conflits entre fichiers                                                              [#############################################################] 100%
Erreur: la validation de la transaction a échoué (conflit de fichiers)
it9135-fw: /lib/firmware/af35irtbl.bin est déjà présent dans le système de fichiers
.

Comment faire pour résoudre le problème ?
Pafrapé, car il faudrait être frappé pour... :paf:
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [Terratec T1] PKGBUILD (En cours)

Message par FoolEcho »

Le paquet fourni aussi le binaire (c'est ce que je disais précédemment: on peut faire un paquet pour le module du noyau et un autre pour le firmware).

Je suppose que c'est toi qui a précédemment collé le af35irtbl.bin, là ? (si tu ne sais plus: yaourt -Qo /lib/firmware/af35irtbl.bin pour voir s'il ne vient pas d'un paquet) Dans ce cas, tu peux le supprimer, tout est compris dans le paquet (enfin, normalement :mrgreen: ). :chinois:
«The following statement is not true. The previous statement is true.» :nage:
Répondre