<offtopic>Ага - уже это некоторые отмечали. Исправлено уже.</offtopic>
Printable View
Это идет еще со сборки mc для НАСа (optware) - https://www.midnight-commander.org/ticket/2282
При сборке с ncurses ЕМНИП такие патчи не работают. Для асусов они не нужны. Для NAS'ов от synology и кинетика нужны.
Почему? В чём разница? Условия-то одни и те же: локаль ru_RU.UTF-8, терминал xterm/linux и uclibc без намёков на интернационализацию.
Я хочу определить почему у меня так mc убого выглядит: без псевдографики и отображения кириллических имён. Может я что-то с iconv или gettext накосячил?
У моих НАСа и кинетика нет локалей и функция nl_langinfo(...) всегда возвращает "ерунду" - в этом и разница.
Переменные TERM и TERMINFO заданы?
Попробуйте взять за основу мой Makefile (сборка с slang). У меня еще в профиле alias прописан для запуска с параметром -с. Но это уже косметика.
Когда применяется файл .profile? Должен ли о нём что-нибудь знать init?:)
Я тоже с этим сталкивался.
Посмотрел - alias у меня на NAS'е есть, на кинетике нет. Но везде TERM и TERMINFO
Code:# cat .profile
....
....
export TERM=xterm
export TERMINFO=/......
В цепочке "мужик сказал - мужик сделал" чаще всего не хватает звена "мужик подумал".
Так и я: сделал пакеты libc, libgcc, libpthread, librt, libstdcpp для владельцев других прошивок путём запаковки соответствующих библиотек из энтузиасткого тулчейна. И не подумал о том, найдут ли они друг друга, находясь в /opt/lib.
Отцы, подскажите: завязаны ли перечисленные библиотеки друг на друга?
Если да, то мне придётся пересобирать перечисленные uclibc-библиотеки с -Wl,-rpath /opt/lib.
Текущий статус дел: после выяснения озвученного вопроса, манипуляции с базовым набором пакетов ./openwrt-buildroot/packages будут завершены. Дальше буду последовательно браться за пакеты из фида ./feeds/packages/libs ~200шт. Затем буду выборочно добавлять популярные пакеты из ./feeds/packages/admin, devel, ipv6, lang, libs, mail, multimedia, net, skels, sound, utils.
Если ты альтруист настолько, то проблем с владельцами других прошивок (с uClibc более старых, чем 0.9.29) гораздо больше:
- ld-uClibc.so.0 - тоже придётся брать из /opt/lib. Скорее всего, для этого придётся пересобирать тулчейн.
- на libc.so.0 завязано практически всё. Проверяется на сборочном хосте при помощи mipsel-uclibc-ldd
- отсутствующие syscall'ы в ядре - корректного враппера в uClibc может и не быть, придётся анализировать в каждом конкретном случае, т.к. прошерстить всю uClibc нереально.
А это практически все прошивки, кроме TomatoUSB...
P.S. На прошивках с ядром 2.4 можешь сразу ставить огромный крест - NPTL не взлетит.
Ну, хорошо. Оставим этот вопрос пока в покое: не буду включать в репозиторий библиотеки uClibc.
Скажи только, что из перечисленных библиотек не входит в текущий состав прошивки? librt вроде включили. Что осталось?
Только libstdc++
Ну и libssp, но я не верю что она нужна не разработчикам.
- Создан и проверен в работе custom feed для добавления пакетов, не входящий в состав OpenWRT. Теперь сторонние пакеты будут создаваться средствами OpenWRT Buildroot и каждый желающий может заглянуть в их сырцы.
- Репозиторий подрос и содержит под сотню пакетов, в т.ч. mysql, lighttpd, transmission и ряд других. Бинарники, какие только мог в работе проверил. Порядок.
- Единственный пакет, который пока не допилил - это mc. Никаких трудностей с его сборкой нет, как только выберу время - допилю.
Заглянул, пробежался. Случайно наткнулся на
http://code.google.com/p/wl500g-repo...httpd/Makefile
Почему в фиксах для lighttpd присутвуют файлы transmission?
Поправил.
ЗЫ Взял твой Makefile для xupnpd.
ЗЗЫ Потратил сегодняшний вечер на то, чтобы заставить mc нормально работать с ncurses, но с UTF8 подружить его так и не смог. В итоге просто взял твой Makefile с патчами для mc 4.8.0. Благодаря тебе mc теперь обрусел и обзавёлся семьёй^W псевдографикой:) Спасибо.
Без них никак корректно не определялась локаль UTF-8. Пришлось её навязать твоими патчами.
Возьмём, раз не против. У меня в планах переложить optware фиды http://wl500g.googlecode.com/svn/ipkg/optware и optware-d на рельсы OpenWRT. Для того, чтобы новообращённые не ностальгировали по старым репозиториям.
В репозитории OpenWRT нет отдельных пакетов grep и cron.
Стоит ли их создавать? Насколько убоги аналоги из нашего busybox?
Только сейчас выяснил, что мейнтейнеры OpenWRT Buildroot отключили поддержку Stack Smashing Protection три года назад, мотивируя это тем, что не во всех платформах он есть. У нас, как вижу, libssp в тулчейне есть. По идее, пакеты должны её подхватывать, т.к. интерфейс к ней находится в путях stdinc.
Чем чревата сборка без libssp? Насколько критична эта фича?
Сборка тулчейна с libssp у Openwrt присутвует.
Это не для асус. Makefile для openwrt тут
http://zyxel-keenetic-packages.googl...ilt/mediatomb/
Сегодня мне на недостающую зависимость от libiconv указали, еще не исправлено.
Приглашаю к активному тестированию нового репозитория OpenWRT.
Как его подключить и использовать описано в первом посте.
На данном этапе в нём находятся, например, все одноимённые пакеты из Optware, которые я когда-либо использовал. Актуальность пакетов соответствует последнему транку среды OpenWRT на 1.12.2011г. Репозиторий планируется обновлять с частотой ~ раз в месяц.
За изменением репозитория можно смотреть здесь.
Обязательно сообщайте о найденных ошибках или странностях при работе пакетов.
Поправочки:
1) gawk можно взять у меня. tar в репозитарии openwrt имеестся.
2) На всякий - посмотрите на изменения в сборке screen у меня. Мой не ругается при старте.
3) Подозреваю, что причина "проблем" с mc и bash одна.
4) Насчет флага hold после opkg upgrade - никогда не наблюдал у себя с предыдущей сборкой opkg. Сейчас проверил с новой (соответвует версии openwrt) - нет такого. Странно это.
1) Собирая mediatomb для нового репозитория наткнулся на то, что линковщик не может разрешить вложенные зависимости. Поясню: mediatomb зависит от ffmpeg, а тот, в свою очередь, от libbz2.
При линковке mediatomb линковщик находит зависимую ffmpeg, но не находит libbz2, если не указать ключом rpath-link то место где она лежит.
Отцы, можно ли добавить КО ВСЕЙ среде сборки ключ -Wl,-rpath-link=$(STAGING_DIR)/opt/lib? Путь rpath-link в бинарник вроде бы не попадает? Не будет ли каких-либо негативных последствий?
2) Заметил, что в GNU Build System есть ряд тестов, которые никогда корректно не выполняются при кросс-компиляции. Например, тесты AC_CHECK_DEBUGGING, AC_CHECK_VA_COPY, AC_FUNC_MALLOC, AC_FUNC_REALLOC. Проблема легко обходится, но разве это нормально?
Разобрался. Hold накладывается только на ключевые библиотеки:Так что отбой, глюк вычёркиваю. “That’s not a bug, it’s a feature”©Code:$ opkg upgrade
Not upgrading package libpthread which is marked hold (flags=0x2).
Not upgrading package libstdcpp which is marked hold (flags=0x2).
Not upgrading package librt which is marked hold (flags=0x2).
Последствий быть не должно. Еще раз повторю - я бы не модифицировал InstallDev. К слову - ffmpeg можно по разному собирать. Для keenetic'а этим занимался vovic67.
Это задается в base-files/Makefile - для некоторых библиотек заданы
Если не нужны эти флаги, можно удалить. Я ликвидирую в пакетах зависимости от libpthread, librt и т.п. - от библиотек, входящих в прошивку. Это привело к определенным сложностям при изменении в прошивке libpthread - http://forum.zyxmon.org/topic131-vni...a-kotorye.htmlCode:PKG_FLAGS:=hold essential
А никто не пытался делать "апгрейд" с нынешних репов на эти?
Чуть убил систему первой попыткой, нашёл способ откатить.
Есть мысль, как это сделать. Наверное, на выходных проверю.
Отвечаю сам себе - светит! Успешно собрал и использую последние стабильные версии libtorrent/rtorrent.
Пока полёт нормальный, epoll, в частности, используется.
Если за неделю тестов не будет выявлено каких-либо аномалий - включу в репозиторий.
Для сборки пришлось лишь выкинуть тест AM_PATH_CPPUNIT, который заканчивался ошибкой при кросс-компиляции.
Нельзя просто перенацелить ipkg на новый репозиторий и выполнить ipkg upgrade, ничего не выйдет. Способ перехода с Optware на OpenWRT ровно один:
1) сохранить содержимое /opt путём копирования или архивации, например:
2) отчистить содержимое /opt,Code:$ tar -cvzf /tmp/downloads/backup/optware_opt.$(date +%Y%m%d.%H%M%S).tgz /opt
3) выполнить пункты инструкции из первого поста темы,
4) восстановить из архива необходимые скрипты и файлы конфигурации, которые вы когда-то самостоятельно создавали.