1 (edytowany przez aksnet 2018-05-16 13:43:06)

Temat: problem z nałożeniem patcha na mtd

Witam

openwrt 14.07

Zrobiłem pewną modyfikację w programie mtd.
(kod źródłowy mtd znajduje się w: /package/system/mtd/src)

Podczas kompilacji ten kod jest kopiowany do odpowiedniego folderu w build_dir/...
i kompilowany. Zmiany kodu wykonywałem w build_dir/... i kompilowałem i wszystko działało OK.

Po modyfikacji wykonałem patch i umieściłem go w: /package/system/mtd/patches (folder 'patches' musiałem utworzyć)
Usunąłem folder mtd z build_dir
Niestety po kompilacji mtd - patch nie zostaje nałożony (kod mtd w build_dir/...  pojawił się bez nałożonego patcha)
Podczas kompilacji brak jakichkolwiek komunikatów o nakładaniu patcha  (także o błędach)

Co jest odpowiedzialne za nałożenie patcha na mtd?  (jakiś skrypt?)


Pozdrawiam

2

Odp: problem z nałożeniem patcha na mtd

Automat systemowy. Zrób make V=s -j1 i zobacz, może nie ma dostępu albo coś takiego.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3 (edytowany przez aksnet 2018-05-16 14:42:51)

Odp: problem z nałożeniem patcha na mtd

Tak teraz skompilowałem.

W logu brak nawet słowa  'patch' i patching', brak także także komunikatów 'warning' czy 'error' związanych z patchowaniem. Nazwa patcha także nigdzie się nie pojawia.

Wygląda na to jakby nie było nawet próby nałożenia patcha.

Rozumiem, że za patchowanie nie odpowiada żaden wpis Makefile?

4

Odp: problem z nałożeniem patcha na mtd

Nie, łatanie odbywa się automatycznie o ile jest katalog patches właśnie. Zobacz czy literówki nie zrobiłeś w nazwie katalogu.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: problem z nałożeniem patcha na mtd

PS. - akurat w mtd masz src w którym możesz bezpośrednio zmodyfikować źródła.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

6 (edytowany przez aksnet 2018-05-16 15:01:34)

Odp: problem z nałożeniem patcha na mtd

wiem, że w src mogę zmodyfikować źródła, ale wolałbym zrobić to profesjonalnie i nałożyć patcha (a źródła zostawić oryginalne)

7

Odp: problem z nałożeniem patcha na mtd

Skorzystaj jak człowiek z quilt:
https://wiki.openwrt.org/doc/devel/patc … _new_patch

8 (edytowany przez aksnet 2018-05-16 15:56:26)

Odp: problem z nałożeniem patcha na mtd

w nazwie folderu 'patches' nie ma literówki, właściciel, prawa folderu i patcha są takie same jak
jak w przypadku innych programów gdzie patche nakładają się prawidłowo.


PS.
Quilt tu mi chyba nic nie pomoże, bo poprawnie zrobiony patch powinien się i bez tego nakładać
(a patchów zrobiłem już sporo i wszystkie ładnie się nakładają).

Co prawda wszystkie patche, które do tej pory robiłem dotyczyły kodu  spakowanego w tar
(np. busybox) a nie kodu będącego luzem w src (może dla automatu systemowego to jakaś różnica?)

9 (edytowany przez aksnet 2018-05-17 09:49:22)

Odp: problem z nałożeniem patcha na mtd

PS.
Użyłem quilta i wszystko do utworzenia patcha poszło ok.
po: 'quilt refresh' w 'build_dir/.../mtd/patches' pojawił się patch
ale update już się nie powiodło:

aksnet@debian64sdk:~/openwrt14.07$ make package/mtd/update V=s
make[1]: Entering directory '/home/aksnet/openwrt14.07'
make[2]: Entering directory '/home/aksnet/openwrt14.07/package/system/mtd'
make[2]: *** No rule to make target 'update'.  Stop.
make[2]: Leaving directory '/home/aksnet/openwrt14.07/package/system/mtd'
package/Makefile:188: recipe for target 'package/system/mtd/update' failed
make[1]: *** [package/system/mtd/update] Error 2
make[1]: Leaving directory '/home/aksnet/openwrt14.07'
/home/aksnet/openwrt14.07/include/toplevel.mk:171: recipe for target 'package/mtd/update' failed
make: *** [package/mtd/update] Error 2

10

Odp: problem z nałożeniem patcha na mtd

make package/system/mtd/update V=s?

11

Odp: problem z nałożeniem patcha na mtd

to samo

12

Odp: problem z nałożeniem patcha na mtd

aksnet napisał/a:

to samo

A jak przygotowałeś źródła do pracy z quiltem?

13 (edytowany przez aksnet 2018-05-17 10:23:20)

Odp: problem z nałożeniem patcha na mtd

cat > ~/.quiltrc <<EOF
QUILT_DIFF_ARGS="--no-timestamps --no-index -p ab --color=auto"
QUILT_REFRESH_ARGS="--no-timestamps --no-index -p ab"
QUILT_SERIES_ARGS="--color=auto"
QUILT_PATCH_OPTS="--unified"
QUILT_DIFF_OPTS="-p"
EDITOR="mcedit"
EOF

(pojawia się plik: /home/aksnet/.quiltrc)

następnie:

make package/mtd/{clean,prepare} V=s QUILT=1
cd build_dir/.../mtd
quilt push -a  # nie było patchów  do nałożenia, więc pominięte
quilt new 010-main_code_fix.patch
quilt edit mtd.c  # i tu jakieś drobne zmiany w kodzie, żeby sprawdzić działanie
quilt diff
quilt refresh # tu pojawia się patch w patches

a dalej z głównego folderu:
make package/mtd/update V=s

coś pominąłem?

14

Odp: problem z nałożeniem patcha na mtd

To zrób jeszcze raz ale z prawidłową ścieżką:
make package/system/mtd/{clean,prepare} V=s QUILT=1

15 (edytowany przez aksnet 2018-05-17 10:46:00)

Odp: problem z nałożeniem patcha na mtd

to samo (te same błędy)

make package/mtd/  to alias do: make package/system/mtd/  (więc chyba nie powinno być różnicy)

16

Odp: problem z nałożeniem patcha na mtd

Nałóż tę łatkę i będzie działać:
https://pastebin.com/MZawUigc

17

Odp: problem z nałożeniem patcha na mtd

To pomogło. Dzięki za pomoc cool