реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Наложение патча
3.14
сообщение Mar 11 2008, 18:30
Сообщение #1


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 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 ...


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
Damon
сообщение Mar 12 2008, 04:48
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
amw
сообщение Mar 12 2008, 08:54
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post
vshemm
сообщение Mar 12 2008, 09:04
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 167
Регистрация: 15-08-07
Пользователь №: 29 803



Ключ -p1 как раз заставляет игнорировать первый каталог из пути в патче. Однако, патчить нужно из соответствующей директории (т.е. из linux-2.6.21-uc0-orig а не на уровне linux-2.6.21-uc0 директории).
Go to the top of the page
 
+Quote Post
amw
сообщение Mar 12 2008, 09:10
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post
3.14
сообщение Mar 12 2008, 09:12
Сообщение #6


Их либе дих ...
******

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



Ребята, спасибо за участие, разобрался.
Инструкция "патчивания" создана невнимательно, автор забыл сказать о создании копии директории linux-2.6.21-uc0-orig (из linux-2.6.21-uc0) и сам патч накладывать с ключем p0.
Хотя смысл создания копии для меня загадка smile.gif


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
vshemm
сообщение Mar 12 2008, 09:13
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 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 ...

Директории разные.. Или это опечатка?
Go to the top of the page
 
+Quote Post
amw
сообщение Mar 12 2008, 10:09
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 4th August 2025 - 23:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.01471 секунд с 7
ELECTRONIX ©2004-2016