overlay и заголовок патча
Anarchist 1 сентября, 2008 - 11:40
Пробую обновить x11-wm/afterstep
.
Ебилд и патч взял здесь (с патчем помимо отмечаемой есть ещё некоторые непонятки, но сие несущественно).
Так как ебилд самодельный, пихать его в основную ветку portage считаю неправильным.
Прописываю в локальную.
Туда же - файлик патча:
--- Makefile.in.orig 2008-08-08 18:59:39.000000000 +0200 +++ Makefile.in 2008-08-08 19:00:51.000000000 +0200 @@ -71,7 +71,8 @@ module.clean: -install: install.alternative install.desktop install.wmprops mkdir +#install: install.alternative install.desktop install.wmprops mkdir +install: install.desktop install.wmprops mkdir @for I in ${subdirs} ; do if [ -d $$I ]; then (cd $$I; ${MAKE} install || exit 1); fi; done install.bin: mkdir.bin @@ -86,11 +87,11 @@ install.script: mkdir.bin @for I in ${subdirs}; do if [ -d $$I ]; then (cd $$I; ${MAKE} install.script || exit 1); fi; done -install.alternative: - @if update-alternatives --version > /dev/null 2>&1 ; then \ - update-alternatives --install /etc/alternatives/x-window-manager x-window-manager $(AFTER_BIN_DIR)/afterstep 100; \ - echo "added AfterStep as an x-window-manager alternative"; \ - fi +#install.alternative: +# @if update-alternatives --version > /dev/null 2>&1 ; then \ +# update-alternatives --install /etc/alternatives/x-window-manager x-window-manager $(AFTER_BIN_DIR)/afterstep 100; \ +# echo "added AfterStep as an x-window-manager alternative"; \ +# fi install.desktop: AfterStep.desktop.final mkdir.share
При попытке установки - ошибка:
***** no-alternatives-20080808.patch ***** ========================================== PATCH COMMAND: patch -p0 -g0 -E --no-backup-if-mismatch < /usr/local/portage-ftn/x11-wm/afterstep/files/no-alternatives-20080808.patch ========================================== patching file Makefile.in Hunk #1 FAILED at 71. Hunk #2 FAILED at 87. 2 out of 2 hunks FAILED -- saving rejects to file Makefile.in.rej ========================================== PATCH COMMAND: patch -p1 -g0 -E --no-backup-if-mismatch < /usr/local/portage-ftn/x11-wm/afterstep/files/no-alternatives-20080808.patch ========================================== missing header for unified diff at line 3 of patch can't find file to patch at input line 3 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- |--- Makefile.in.orig 2008-08-08 18:59:39.000000000 +0200 |+++ Makefile.in 2008-08-08 19:00:51.000000000 +0200 -------------------------- No file to patch. Skipping patch. 2 out of 2 hunks ignored ========================================== PATCH COMMAND: patch -p2 -g0 -E --no-backup-if-mismatch < /usr/local/portage-ftn/x11-wm/afterstep/files/no-alternatives-20080808.patch ========================================== missing header for unified diff at line 3 of patch can't find file to patch at input line 3 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- |--- Makefile.in.orig 2008-08-08 18:59:39.000000000 +0200 |+++ Makefile.in 2008-08-08 19:00:51.000000000 +0200 -------------------------- No file to patch. Skipping patch. 2 out of 2 hunks ignored ========================================== PATCH COMMAND: patch -p3 -g0 -E --no-backup-if-mismatch < /usr/local/portage-ftn/x11-wm/afterstep/files/no-alternatives-20080808.patch ========================================== missing header for unified diff at line 3 of patch can't find file to patch at input line 3 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- |--- Makefile.in.orig 2008-08-08 18:59:39.000000000 +0200 |+++ Makefile.in 2008-08-08 19:00:51.000000000 +0200 -------------------------- No file to patch. Skipping patch. 2 out of 2 hunks ignored ========================================== PATCH COMMAND: patch -p4 -g0 -E --no-backup-if-mismatch < /usr/local/portage-ftn/x11-wm/afterstep/files/no-alternatives-20080808.patch ========================================== missing header for unified diff at line 3 of patch can't find file to patch at input line 3 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- |--- Makefile.in.orig 2008-08-08 18:59:39.000000000 +0200 |+++ Makefile.in 2008-08-08 19:00:51.000000000 +0200 -------------------------- No file to patch. Skipping patch. 2 out of 2 hunks ignored
Заголовок патча совпадает с аналогичным патчем, прописанным в основной ветке portage.
В локальных что, действуют иные договорённости?
В другом, успешно установленном из того же локального оверлея пакете заголовок патча выглядит иначе:
$ head liblinebreak-0.9.6_fPIC.patch diff -urN liblinebreak-old/liblinebreak/Makefile liblinebreak/liblinebreak/Makefile --- liblinebreak-old/liblinebreak/Makefile 2008-03-22 23:25:44.000000000 +0100 +++ liblinebreak/liblinebreak/Makefile 2008-04-05 03:12:41.000000000 +0200 @@ -39,16 +39,16 @@ ...
»
- Для комментирования войдите или зарегистрируйтесь
Anarchist
патч не применился, а дальше идут команды -p1 -p2 -p3 и для них заголовок сгенерированный для -p0 естественно неправильный.
и откуда строка
***** no-alternatives-20080808.patch *****
?
файл с таким именем точно есть?
.
Об этом я уже догадался :)
Осталось понять почему.
Оригинальный патч (для 2.2.4) выглядит следующим образом:
no-alternatives.patch:
Строка с именем файла патча, наложить который не удалось. ИМХО логично.
Точно.
--
Live free or die
посмотри на
посмотри на строки которые я выделил, это говорит о том что всё что нужно лежит там где нужно, всё находится и патчится но - патч не подходит ошибка во время наложения патча. нужно смотреть и павить руками, а на даты в заголовках всем чихать - важны только имена файлов.
?
???
Дык в этой части ебилд не отличается от рабочего 2.2.4, вот что интересно.
Ошибка явно где-то в патче.
С циклами?..
Бррр... Грустно.
Товарищи из багзиллы прислали исправленную версию. Поставил.
Ебилд немного, насколько хватало моих знаний, поправил (не все могут представить себе X-сервер без xterm'а, поэтому в зависимостях явно упоминаемый в опциях сборки терминал отсутствует). Файлы залью в багзиллу.
На досуге поанализирую ошибку и отпишу здесь.
--
Live free or die
А если руками
А если руками патч на исходник попробовать наложить?
Зы в портаже как ты написал 2.2.4 а у тебя в оверлее что?
___________________________________________
Gentoo GNU/Linux 2.6.26 GCC 4.3.1
Working on Gentoo for iPAQ hx4700 :-)
Если у вас компьютер с Windows, есть два выхода: выбросить компьютер в форточку или выбросить форточки с компьютера
.
Пробовал (в смысле сначала править функцию распаковки исходников, а потом - накладывать патч.
Ошибку навскидку не приведу, но не получилось.
2.2.8
Каюсь, посыпаю голову пеплом и ухожу на багзиллу заливать файлы.
--
Live free or die
ура товариши!
именно!
хоть и не прямой дорогой, но мысль что сам патч кривой таки достигла адресата. и portage тут непричём.
Что "ура"?
Дык это было понятно сразу.
Вопросы был: в чём кривизна патча. Впрочем, сейчас этот вопрос перешёл в общетеоретическую область.
--
Live free or die
а кто тогда
а кто тогда обсуждал заголовки и то как портаж патчит? там сразу было видно что всё находтся и патчится - просто сам патч кривой, несовпадает нифига.
Туда же - это куда???
> Прописываю в локальную.
> Туда же - файлик патча:
Патч должен лежать в поддиректории files/ вашего локального репа.
Судя по листингу, портеж его там не находит.
?
Репозитория или в подкаталоге files/ рядом с устанавлиаемым ебилдом?
Если первое, то почему его (подкаталога files/ нет в основном репозитории?
Если рядом с ебилдом, то он там есть:
--
Live free or die
Кажется, понял.
http://bugs.gentoo.org/show_bug.cgi?id=180765#c8
No file to patch. Skipping patch.
Патч пытается найти Makefile.in.orig, а его нету в исходной директории.
?
ИМХО скорее во времени создания этого самого файла.
Потому как для 2.2.4 практически такой же патч срабатывает на ура.
Но в обновлённом патче прописано:
А
Вопрос: в каком формате там идёт дата: YYYY-MM-DD или YYYY-DD-MM?
UPDATE: Не слишком-то коррелирует с нормально отрабатываемым ебилдом 2.2.4.
Грабли где-то в другом :(
--
Live free or die