Re: Appliquer un patch mode d'emploi ?

Le
Philippe Merlin
--Boundary-00=_dyUCK4T8adQ53fV
Content-Type: text/plain;
charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

e mardi 12 mai 2009, Pascal Hambourg a écrit :
> Salut,
>
> Philippe Merlin a écrit :
> > J'essaie d'appliquer ce patch au noyau standard debian, je sèche
> > lamentablement, j'ai essayé patch -p1< fichier
> > sans succès .
>
> Mais encore (message d'erreur détaillé) ?
>
> > https://www.linuxhq.com/kernel/v2.6/26-git17/sound/core/init.c
>
> Si tu as copié/collé le patch depuis cette page, le problè=
me pourrait
> être que la conversion en HTML a transformé les tabulations en =
espaces,
> et donc patch ne s'y retrouve pas. Il faudrait trouver le patch sous
> forme de fichier brut.
(Tète de linotte j'ai oublié de joindre le fichier je renvoie le =
message)
merci pour ta réponse, effectivement j'ai fait un copier coller, si c'=
est le
problème alors ou trouver ce patch
Les erreurs 5 Hunks rejected.
Je joins le fichier du patch que je veux appliquer, si vous pouviez donner=

votre avis.
J'ai essayé avec Kompare il semble bien faire les modifs mais je n'ar=
rive pas
à sauvegarder ces modifs.
Merci.
Philipppe

--Boundary-00=_dyUCK4T8adQ53fV
Content-Type: text/x-diff;
charset="iso 8859-15";
name="diff-sound-core-init.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="diff-sound-core-init.diff"

diff --git a/sound/core/init.c b/sound/core/init.c
index ac05734..df46bbc 100644
a/sound/core/init.c
+++ b/sound/core/init.c
@@ -46,17 +46,24 @@ static char *slots[SNDRV_CARDS];
module_param_array(slots, charp, NULL, 0444);
MODULE_PARM_DESC(slots, "Module names assigned to the slots.");

-/* return non-zero if the given index is already reserved for another
+/* return non-zero if the given index is reserved for the given
* module via slots option
*/
-static int module_slot_mismatch(struct module *module, int idx)
+static int module_slot_match(struct module *module, int idx)
{
+ int match = 1;
#ifdef MODULE
- char *s1, *s2;
+ const char *s1, *s2;
+
if (!module || !module->name || !slots[idx])
return 0;
- s1 = slots[idx];
- s2 = module->name;
+
+ s1 = module->name;
+ s2 = slots[idx];
+ if (*s2 == '!') {
+ match = 0; /* negative match */
+ s2++;
+ }
/* compare module name strings
* hyphens are handled as equivalent with underscore
*/
@@ -68,12 +75,12 @@ static int module_slot_mismatch(struct module *module, int idx)
if (c2 == '-')
c2 = '_';
if (c1 != c2)
- return 1;
+ return !match;
if (!c1)
break;
}
-#endif
- return 0;
+#endif /* MODULE */
+ return match;
}

#if defined(CONFIG_SND_MIXER_OSS) || defined(CONFIG_SND_MIXER_OSS_MODULE)
@@ -129,7 +136,7 @@ struct snd_card *snd_card_new(int idx, const char *xid,
struct module *module, int extra_size)
{
struct snd_card *card;
- int err;
+ int err, idx2;

if (extra_size < 0)
extra_size = 0;
@@ -144,35 +151,41 @@ struct snd_card *snd_card_new(int idx, const char *xid,
err = 0;
mutex_lock(&snd_card_mutex);
if (idx < 0) {
- int idx2;
for (idx2 = 0; idx2 < SNDRV_CARDS; idx2++)
/* idx == -1 == 0xffff means: take any free slot */
if (~snd_cards_lock & idx & 1<<idx2) {
- if (module_slot_mismatch(module, idx2))
- continue;
- idx = idx2;
- if (idx >= snd_ecards_limit)
- snd_ecards_limit = idx + 1;
- break;
+ if (module_slot_match(module, idx2)) {
+ idx = idx2;
+ break;
+ }
+ }
+ }
+ if (idx < 0) {
+ for (idx2 = 0; idx2 < SNDRV_CARDS; idx2++)
+ /* idx == -1 == 0xffff means: take any free slot */
+ if (~snd_cards_lock & idx & 1<<idx2) {
+ if (!slots[idx2] || !*slots[idx2]) {
+ idx = idx2;
+ break;
+ }
}
- } else {
- if (idx < snd_ecards_limit) {
- if (snd_cards_lock & (1 << idx))
- err = -EBUSY; /* invalid */
- } else {
- if (idx < SNDRV_CARDS)
- snd_ecards_limit = idx + 1; /* increase the limit */
- else
- err = -ENODEV;
- }
}
- if (idx < 0 || err < 0) {
+ if (idx < 0)
+ err = -ENODEV;
+ else if (idx < snd_ecards_limit) {
+ if (snd_cards_lock & (1 << idx))
+ err = -EBUSY; /* invalid */
+ } else if (idx >= SNDRV_CARDS)
+ err = -ENODEV;
+ if (err < 0) {
mutex_unlock(&snd_card_mutex);
snd_printk(KERN_ERR "cannot find the slot for index %d (range 0-%i), error: %d",
idx, snd_ecards_limit - 1, err);
goto __error;
}
snd_cards_lock |= 1 << idx; /* lock it */
+ if (idx >= snd_ecards_limit)
+ snd_ecards_limit = idx + 1; /* increase the limit */
mutex_unlock(&snd_card_mutex);
card->number = idx;
card->module = module;
@@ -535,8 +548,9 @@ int snd_card_register(struct snd_card *card)
snd_assert(card != NULL, return -EINVAL);
#ifndef CONFIG_SYSFS_DEPRECATED
if (!card->card_dev) {
- card->card_dev = device_create(sound_class, card->dev, 0,
- "card%i", card->number);
+ card->card_dev = device_create_drvdata(sound_class, card->dev,
+ MKDEV(0, 0), NULL,
+ "card%i", card->number);
if (IS_ERR(card->card_dev))
card->card_dev = NULL;
}




--Boundary-00=_dyUCK4T8adQ53fV--

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Yves Rutschle
Le #19316711
On Tue, May 12, 2009 at 12:17:01PM +0200, Philippe Merlin wrote:
merci pour ta réponse, effectivement j'ai fait un copier coller, si c'est le
problème alors ou trouver ce patch



Le patch est OK. Tu dois sans doute être dans le mauvais
répertoire et/ou utiliser un mauvais paramètre -p. Cf
courrier de Steve.

Les erreurs 5 Hunks rejected.



Le mieux est toujours de faire un copier/coller de la
commande que l'on tape, et de sa sortie. Sinon, ceux qui
lisent ne sont pas sûr de ce que tu as fait, ni de l'erreur.

Y.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Philippe Merlin
Le #19316891
Le mardi 12 mai 2009, Yves Rutschle a écrit :
On Tue, May 12, 2009 at 12:17:01PM +0200, Philippe Merlin wrote:
> merci pour ta réponse, effectivement j'ai fait un copier coller, si c 'est
> le problème alors ou trouver ce patch

Le patch est OK. Tu dois sans doute être dans le mauvais
répertoire et/ou utiliser un mauvais paramètre -p. Cf
courrier de Steve.

> Les erreurs 5 Hunks rejected.

Le mieux est toujours de faire un copier/coller de la
commande que l'on tape, et de sa sortie. Sinon, ceux qui
lisent ne sont pas sûr de ce que tu as fait, ni de l'erreur.

Y.



Merci pour ta réponse, voilà le copier coller de la commande et des mes sages :
francois:/usr/src/linux-source-2.6.26#
patch -p1<"/usr/src/modif 26/diff-sound-core-init.diff"
patching file sound/core/init.c
Hunk #1 FAILED at 46.
Hunk #2 FAILED at 75.
Hunk #3 FAILED at 136.
Hunk #4 FAILED at 151.
Hunk #5 FAILED at 548.
5 out of 5 hunks FAILED -- saving rejects to file sound/core/init.c.rej

Votre aide sera précieuse.
Philippe

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Pascal Hambourg
Le #19317051
Yves Rutschle a écrit :
On Tue, May 12, 2009 at 12:17:01PM +0200, Philippe Merlin wrote:
merci pour ta réponse, effectivement j'ai fait un copier coller, si c'est le
problème alors ou trouver ce patch





Après recherche dans git.kernel.org, il semble que ce patch 2.6.26-git17
corresponde en fait à deux commits distincts lors du développement de la
version 2.6.27 du noyau :

[ALSA] Improve the slots option handling
et
device create: sound: convert device_create to device_create_drvdata

Mais il est important de bien comprendre que :

1) Un commit et son patch peuvent modifier plusieurs fichiers sources,
c'est le cas ici. Si tu ne modifies qu'un fichier, tu peux te retrouver
avec un noyau qui ne compile pas ou pire ne marche pas. Pour le premier
commit, a93bbaa77ea61c6bad684263a65f812b31bf9791, l'autre fichier
modifié est juste un fichier de documentation, donc pas de souci. En
revanche l'autre commit, 89409211ff97bf82295d1fb98ab18302a03e9199,
modifie deux autres fichiers sources, et fait partie d'un ensemble plus
large de patches qui modifient d'autres sous-systèmes que le son.

2) Un commit peut s'appuyer sur des patches précédents, et ne pas
s'appliquer ou ne pas fonctionner seul sur une version trop ancienne
sans avoir appliqué ces patches précédents.

Je suppose que c'est surtout le premier commit qui t'intéresse.
A partir de l'URL que j'ai indiqué, tu pourras avoir accès au patch
intégral (diff), aux patches individuels pour chaque fichier modifié
(diff), ou à la nouvelle version de chaque fichier modifié (blob), en
format brut (par les liens 'raw', il faut effacer le début du fichier
avant le premier 'diff ...' avant de l'appliquer).

Le patch est OK.



Non, il n'est pas ok : les tabulations originelles sont remplacées par
des espaces alors que le fichier source contient des tabulations. patch
a peut-être des options pour ignorer les différences entre espaces et
tabulations, on ne sait jamais.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Pascal Hambourg
Le #19317061
Pascal Hambourg a écrit :

Mais il est important de bien comprendre que :


[...]
Et pour finir, un patch prévu pour les sources du noyau standard peut ne
pas s'appliquer aux sources du noyau Debian (paquet linux-source-*) à
cause des modifications apportées par les patches Debian.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et "Reply-To:"

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Publicité
Poster une réponse
Anonyme