LINUX.ORG.RU

Организация разработки OpenWRT / выпрямление рук

 , , , ,


0

2

Привет, ЛОР!

Меня перестала устраивать разработка в топорном, студенческом стиле.

Работаю я с OpenWRT как с основой для системы. В процессе меняются конфиги(основной и ядра), ищутся баги, допиливаются драйвера, новые пакеты, скрипты и прочее.

И все это происходит очень тупо (собрал - не то - полез в код - на месте исправил - залез в menuconfig/kernel_menuconfig - пересобрал - работает - забыл).

Директория с собранным проектом весит 11Гб и менять что-то в нем, как это делаю сейчас, глупо и непродуктивно. Чистый же проект OpenWRT весит 46Мб, но естественно, в нем нет большинства исходников - всё скачивается в процессе сборки. Я пытаюсь настроить процесс сборки так, чтобы можно было изменять только этот маленький проект, бэкапить его, переносить и т.д, и чтобы каждый раз при сборке он давал одни и те же образы на выходе по одной команде.

Господа специалисты, поделитесь опытом разработки и инфой:

Как поменять конфиги по умолчанию(основной и ядра), чтобы не лазить в ГУЙ?

Как изменять/патчить драйвера, скрипты, конфиги, которые скачиваются при сборке и т.д?

Спасибо!

Как поменять конфиги по умолчанию(основной и ядра), чтобы не лазить в ГУЙ?

Меняй сами config файлы для своего target'a и generic'a, мы делали именно так.
А главный конфиг, естественно, лежит в гите в отдельной директории boards, и перед сборкой просто его копируем, это все.

Как изменять/патчить драйвера, скрипты, конфиги, которые скачиваются при сборке и т.д?

В каждом пакете есть директория patches, собственно, туда кидай свои патчи/фиксы для исходного кода определенного пакета.

Процесс добавления нового патча достаточно тривиален:


* Идешь в dl и выбераешь нужный тебе архив с исходниками.
* Распаковываешь его
* Делаешь там git init && git add --force . && git commit -am init, если там нет git'a.
* Подкладываешь каждый патч из пакета по очереди и делаешь коммит с ним (тоже можно скриптом все автоматизировать)
* Делаешь свои фиксы
* Делаешь git format-patch и кидаешь его в директорию patches в своем дереве для выбранного пакета
* Вот и все, и теперь каждый раз при сборке пакета он будет автоматически применен.

Если же не хочешь с этим возиться, то можешь просто распаковать архив в src в директорию своего пакета, ну и поправить Makefile соответственно.
BTW: make kernel_menuconfig как раз таки модифицирует конфиг в самом репозитарии, и его потом можно закоммитить.

joy4eg ★★★★★
()
Ответ на: комментарий от vgovseychuk

«Так принято» :)

Посмотри по самим пакетам, почти в каждом есть свои патчи, и их нужно как-то поддерживать/фиксить. Это самый простой и удобный метод.

joy4eg ★★★★★
()

дык, эта... OpenWRT содержит систему патчей на все случаи жизни. залил сорцы в какую-нить систему контроля версий, пропатчил, сделал патч, сохранил в нужном месте. собсна, никаких особых проблем это не вызывает. единственное, что документации маловато, но там в большинстве случаев и так всё понятно.

Iron_Bug ★★★★★
()
Ответ на: комментарий от Deleted

а что с ним не так? с нетлинком мне мало приходилось работать. его поддержка растёт из кернела, причём существует уже давно. там в самой библиотеке и демоне вряд ли косяки могут быть. собсна, это лишь интерфейс для нетлинка.

OpenWRT я много ковыряла. и по работе, и так, на досуге, от нечего делать. имхо, самый говнокод там в вебе, в LuCI. остальное (без мелких придирок) более-менее работает. хотя документация скудная, да. приходится лезть в сорцы, в сприпты, чтобы понять, что там куда. если лезть совсем глубоко, то есть ещё некоторые проблемы с зависимостями пакетов. но это уже совсем тонкости девелопмента.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

а что с ним не так?

Работает совершенно неочевидным образом, при этом содержит массу ошибок. Косяков в нем хватает. Регулярно фиксим.

Deleted
()
Ответ на: комментарий от joy4eg

Где же патчи ? ;)

Там, где им и положено быть. Не переживайте.

Deleted
()
Ответ на: комментарий от Deleted

хм... надо мне будет поглядеть в эту сторону. тем более, что я сейчас ковыряюсь в ядре и хочу нетлинк заюзать для своих целей, это бы мне упростило жизнь, особенно в области ipv6. пока я тупо врукопашную с ipv4 пакетами работаю, но с ipv6 врукопашную работать довольно мерзко. так что нетлинк мне понадобится. начну с ним ковыряться, а дальше видно будет. так как я всё это дело скорее всего буду пилить под OpenWRT, как наиболее выгодную целевую платформу для роутеров, то я параллельно буду тестировать и прилегающий к нетлинку код в юзерспейсе и тоже буду фиксить, если что-то обнаружу.

Iron_Bug ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.