|
|
  |
Наложение патча |
|
|
|
Mar 11 2008, 18:30
|

Их либе дих ...
     
Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609

|
Следую по внешним инструкциям наложения патча: Код patch -p1 <linux-2.6.21-uc0.diff Выполняю (на уровне linux-2.6.21-uc0 директории) patch -p1 <linux-2.6.21-uc0.diff, в ответ, получаю ошибку на отсутствие изменяемого файла уже на четвертой строке патча, вот часть linux-2.6.21-uc0.diff (первые строки): Код diff -urN linux-2.6.21-uc0-orig/arch/arm/boot/compressed/head.S linux-2.6.21-uc0/arch/arm/boot/compressed/head.S --- linux-2.6.21-uc0-orig/arch/arm/boot/compressed/head.S 2007-06-17 06:31:25.000000000 +0100 +++ linux-2.6.21-uc0/arch/arm/boot/compressed/head.S 2007-06-05 10:05:41.000000000 +0100 @@ -296,6 +296,21 @@ LC1: .word reloc_end - reloc_start .size LC0, . - LC0 Файл linux-2.6.21-uc0-orig/arch/arm/boot/compressed/head.S присутствует. Мне не совсем понятна логика с путями linux-2.6.21-uc0-orig ...
--------------------
Усы, борода и кеды - вот мои документы :)
|
|
|
|
|
Mar 12 2008, 04:48
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 12-12-05
Пользователь №: 12 125

|
Я не силен в патчиньи, но попробуйте под strace'ом прогнать или ltrace'ом. Я понимаю, что сие -- "из пушки по воробьям" (С), но по логу хоть понять можно, где patch пытается найти файл, почему обламывается и, возможно, писчу для размышлений, как поправить. Цитата(3.14 @ Mar 11 2008, 21:30)  Выполняю (на уровне linux-2.6.21-uc0 директории) patch -p1 <linux-2.6.21-uc0.diff... ... Код diff -urN linux-2.6.21-uc0-orig/arch/arm/boot/compressed/head.S linux-2.6.21-uc0/arch/arm/boot/compressed/head.S ... может, как вариант, директория, в которой лежат файлы подлежащие патчинью, должна называться linux-2.6.21-uc0 -orig и запускать patch не в ней, а на уровень выше? Раз уж она (директория) прописана в путях-то...
Сообщение отредактировал Damon - Mar 12 2008, 04:49
|
|
|
|
|
Mar 12 2008, 08:54
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(3.14 @ Mar 11 2008, 20:30)  Следую по внешним инструкциям наложения патча: Код patch -p1 <linux-2.6.21-uc0.diff Выполняю (на уровне linux-2.6.21-uc0 директории) patch -p1 <linux-2.6.21-uc0.diff, в ответ, получаю ошибку на отсутствие изменяемого файла уже на четвертой строке патча, вот часть linux-2.6.21-uc0.diff (первые строки): Код diff -urN linux-2.6.21-uc0-orig/arch/arm/boot/compressed/head.S linux-2.6.21-uc0/arch/arm/boot/compressed/head.S --- linux-2.6.21-uc0-orig/arch/arm/boot/compressed/head.S 2007-06-17 06:31:25.000000000 +0100 +++ linux-2.6.21-uc0/arch/arm/boot/compressed/head.S 2007-06-05 10:05:41.000000000 +0100 @@ -296,6 +296,21 @@ LC1: .word reloc_end - reloc_start .size LC0, . - LC0 Файл linux-2.6.21-uc0-orig/arch/arm/boot/compressed/head.S присутствует. Мне не совсем понятна логика с путями linux-2.6.21-uc0-orig ... Код # cd linux-2.6.21-uc0 # patch -v -p1 -i/path/to/dir/linux-2.6.21-uc0.diff Вывод в студию плз? Второй вариант: Код # ls linux-2.6.21-uc0 # patch -v -p0 -i/path/to/dir/linux-2.6.21-uc0.diff pN это сколько директорий исключить из поиска целевых файлов относительно текущей. Если текущая директория linux-2.6.21-uc0 то нужно p1, если текущая директория linux-2.6.21-uc0/arch то нужно p2, и т.д. Существовать должны все директории в конечном результирующем дереве. Если в конечном результирующем дереве изначально нет нужного файла (включая подкаталоги), и патчем файл создается целиком (то есть до патчя такого файла нет вообще), то будут созданы и все подкаталоги.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Mar 12 2008, 09:10
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(vshemm @ Mar 12 2008, 11:04)  (т.е. из linux-2.6.21-uc0-orig а не на уровне linux-2.6.21-uc0 директории). ??????????????????????????
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Mar 12 2008, 09:13
|
Частый гость
 
Группа: Участник
Сообщений: 167
Регистрация: 15-08-07
Пользователь №: 29 803

|
Цитата(3.14 @ Mar 11 2008, 21:30)  Следую по внешним инструкциям наложения патча: Код patch -p1 <linux-2.6.21-uc0.diff Выполняю (на уровне linux-2.6.21-uc0 директории) patch -p1 <linux-2.6.21-uc0.diff, в ответ, получаю ошибку на отсутствие изменяемого файла уже на четвертой строке патча, вот часть linux-2.6.21-uc0.diff (первые строки): Код diff -urN linux-2.6.21-uc0-orig/arch/arm/boot/compressed/head.S linux-2.6.21-uc0/arch/arm/boot/compressed/head.S --- linux-2.6.21-uc0-orig/arch/arm/boot/compressed/head.S 2007-06-17 06:31:25.000000000 +0100 +++ linux-2.6.21-uc0/arch/arm/boot/compressed/head.S 2007-06-05 10:05:41.000000000 +0100 @@ -296,6 +296,21 @@ LC1: .word reloc_end - reloc_start .size LC0, . - LC0 Файл linux-2.6.21-uc0-orig/arch/arm/boot/compressed/head.S присутствует. Мне не совсем понятна логика с путями linux-2.6.21-uc0-orig ... Директории разные.. Или это опечатка?
|
|
|
|
|
Mar 12 2008, 10:09
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(vshemm @ Mar 12 2008, 11:13)  Директории разные.. Или это опечатка? Точно. *-orig - это до патча. После патча должно быть без -orig. Соответственно, ее вообще не должно быть (*-orig). Вообще-то патч накладывается на старое дерево что-бы сделать его новым. Наличие *-orig директории вообще не имеет смысла (кроме резервной копии). Должно быть то дерево каталогов, что получается после наложения патча. Например есть такие файлы: a/arch/arm.c a/test.c и есть патч Код diff -Naur a b --- a/arch/arm.c +++ b/arch/arm.c Тут текст патча, изменяющий несколько строк в файле a/arch/arm.c Для наложения из самой верхней папки нужен файл b/arch/arm.c тогда Код patch -p0 -i/path/to/file.diff Или вообще есть файл zzz/arch/arm.c тогда Код cd zzz patch -p1 -i/path/to/file.diff
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|