metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-04-19 05:57 pm

И еще про эти ваши линуксы

Я ж забыл написать, зачем мне была копипаста в линуксовых редакторах: http://metaclass.livejournal.com/679287.html

В общем, я тут пытаюсь сделать софтину для программирования через RS232 одной железяки, причем я хочу в целях сушения мозга сделать ее под линукс. Но линукса в приемлемом виде у меня нигде нет - в основном виртуалки, удаленные сервера, почти нигде нет иксов, итд. И соответственно, я пытаюсь в виртуалке с ubuntu 10.04 lts для начала подключится к железяке терминалом. А rs232 там реализован в виде CP210x usb-rs232 адаптера и само-собой, от входа оно нихрена не заработало.
Чтобы заработало - пришлось качать исходники ядра, исправлять модуль драйвера этого чипсета, пересобирать и грузить новый модуль: http://pharos.ece.utexas.edu/wiki/index.php/Fixing_the_cp210x_open_-_Unable_to_enable_UART_Error_-_04/17/2011

Внутри драйвера какие-то ненатуралы поставили таймаут 300 мс на usb операции, причем захардкодили его в каждом вызове. Я сделал константу на нормальный таймаут и стал заменять все хардкодед значения на имя этой константы, а автозаменой там не сделаешь, потому что 300 встречается и само по себе, безотносительно таймаута. Ну и вспомнил типичное линукс вуду с клипбоардом, который в каждой проге сам по себе.

PS: И да, ядро пришлось обновить, иначе с тем linux-source что были в репе, собирался модуль, не подходящий для используемого ядра.

[identity profile] mudasobwa.livejournal.com 2012-04-19 03:08 pm (UTC)(link)
Наверное, vi на виртуалке все-таки был? Тогда открываете и пишете:

:%s/300/3000/gc

Спросит подтверждение для каждой замены.

[identity profile] bydl0coder.livejournal.com 2012-04-19 04:17 pm (UTC)(link)
Find and replace in files в виме через жопу, вроде
Можно так

:arg **/*.c
:argdo s/300/CONSTANT/c

("с" значит подтверждать каждую замену)

[identity profile] kiryl.livejournal.com 2012-04-19 04:46 pm (UTC)(link)
Замени на USB_CTRL_SET_TIMEOUT и зашли патч в апстрим. Это займёт меньше времени, чем написание этого поста.

[identity profile] berezovsky.livejournal.com 2012-04-19 04:50 pm (UTC)(link)
седом же

[identity profile] metaclass.livejournal.com 2012-04-19 04:59 pm (UTC)(link)
and now you have two problems...

(Anonymous) 2012-04-19 05:01 pm (UTC)(link)
Не пойму почему не сделать патч? Я вам скажу у вас есть шанс сразу получить работу на ЗП в 10 раз выше чем сейчас.

Про копипасту. Я просто делаю Ctrl+C и Ctrl+V Не использую vim и emacs. Надо понимать, что как бы они круты небыли (я всё еще надеюсь начать использовать vim), они использовались в другое время и в других условиях. VI всё еще актуален на тупых линках. Но он постепенно вымирает.

[identity profile] metaclass.livejournal.com 2012-04-19 05:08 pm (UTC)(link)
Не знаю, как принято патчи делать.
Впрочем, раз уж я занимаюсь всем этим безумием, можно заодно и в этом разобраться.

[identity profile] kiryl.livejournal.com 2012-04-19 05:21 pm (UTC)(link)
Могу помочь, если чё.

1. Правишь. В данном случае всё тривиально: заменить 300 в вызовах usb_control_msg() на USB_CTRL_SET_TIMEOUT.
2. Билдишь, проверяешь что всё ok.
3. Коммитишь с -s (что б получить Signed-off-by: ...) и пишешь вразумительный commit message.
4. git format-patch -1
5. ./scripts/checkpatch.pl
6. ./scripts/get_maintainer.pl
7. засылаешь людям/спискам из вывода предыдущей команды с помощью git send-file или любимого mail клиента (предварительно убедившись, что он не делает с патчами чего-то странного). Можешь сделать на меня CC - kirill (at) shutemov.name.
8. Реагируешь на feedback.
9. ???
10. PROFIT!

См. Documentation/SubmittingPatches Documentation/SubmitChecklist

[identity profile] metaclass.livejournal.com 2012-04-19 06:29 pm (UTC)(link)
Это ж для начала надо git clone сделать, я так понимаю?

[identity profile] kiryl.livejournal.com 2012-04-19 07:12 pm (UTC)(link)
Да, конечно.

[identity profile] metaclass.livejournal.com 2012-04-19 06:36 pm (UTC)(link)
Да, в текущем ядре нужно править, там все еще 300.

[identity profile] metaclass.livejournal.com 2012-04-19 08:29 pm (UTC)(link)
А можно ли патч рассылать в аттаче к письму?
Потому как thunderbird превращает табы в патче в пробелы и прочую тыкву.

[identity profile] kiryl.livejournal.com 2012-04-19 08:36 pm (UTC)(link)
Не принято так. Могут просто проигнорировать.

В Documentation/email-clients.txt написано как заставить тот или иной клиент вести себя по человечески.

Мне лично git send-email удобней.

[identity profile] metaclass.livejournal.com 2012-04-19 08:54 pm (UTC)(link)
Трасца, виндовский thunderbird еще и переносы портит :)

[identity profile] kiryl.livejournal.com 2012-04-19 09:01 pm (UTC)(link)
Продолжаешь есть кактус?

[identity profile] metaclass.livejournal.com 2012-04-19 09:14 pm (UTC)(link)
Ну нету у меня линукса с настроенной почтой, нету! :)

[identity profile] kiryl.livejournal.com 2012-04-19 09:18 pm (UTC)(link)
А в винде git send-email не работает? там из cmdline есть --smtp-server= и всё остальное.

[identity profile] metaclass.livejournal.com 2012-04-20 04:34 am (UTC)(link)
У меня git send-email на линуксе не работает :)
userver:~$ git send-email
git: 'send-email' is not a git command. See 'git --help'.

[identity profile] permea-kra.livejournal.com 2012-04-20 05:00 am (UTC)(link)
man mutt. Я его с нуля под свои нужды (рассылка почты по таймеру) минут за 15 настроил, нихрена не зная.

[identity profile] kiryl.livejournal.com 2012-04-20 05:12 am (UTC)(link)
Какой mutt? Ребе ж vim не осилил ;)

[identity profile] metaclass.livejournal.com 2012-04-20 05:17 am (UTC)(link)
Ну, для редкого редактирования хватает, а вот для сложной работы пока не осилил, да.

[identity profile] permea-kra.livejournal.com 2012-04-20 05:37 am (UTC)(link)
Тьфу на вас. Я им как клиентом пользовать не предлагаю, это консольная команда для отправки текста со стандартного ввода на прописанный в конфиг-файле адрес.

[identity profile] permea-kra.livejournal.com 2012-04-20 05:38 am (UTC)(link)
*черезе прописанный в конфиг-файле почтовый сервер

[identity profile] kiryl.livejournal.com 2012-04-20 05:11 am (UTC)(link)
Полагаю debian? apt-get install git-email.

[identity profile] bydl0coder.livejournal.com 2012-04-19 06:31 pm (UTC)(link)
Наоборот. Макоебы-рубисты массово переходят. Раньше дрочили на текстмейт.

[identity profile] victor bolshakov (from livejournal.com) 2012-04-19 06:33 pm (UTC)(link)
Линуксы, линуксами... Но зачем себя насиловать уродским GUI? Кто запрещает редактировать на винде в чем хочеш? Мне на удаленно системе для всех мелочей vi хватает, хотя уже лет 5 думаю чтонить посовременее поставить. Все остьальное или через самбу или через NFS редактирую.

[identity profile] metaclass.livejournal.com 2012-04-19 06:37 pm (UTC)(link)
Ну как зачем. Все ебутся с этими неадекватными редакторами, один я как не родной - фаром через самбу правлю :)
Edited 2012-04-19 18:37 (UTC)

[identity profile] victor bolshakov (from livejournal.com) 2012-04-19 07:48 pm (UTC)(link)
Нашел показатель! Это как все ломают инет в стране, а я чем хуже?

[identity profile] vp.livejournal.com 2012-04-19 08:01 pm (UTC)(link)
Потому что все кричат наперебой, что у них нет никаких ни с чем проблем.
Потом начинаешь копать - ба, так они же серьезного просто ничего не делали.

[identity profile] kiryl.livejournal.com 2012-04-19 08:52 pm (UTC)(link)
См. первый коммент в этом посте. Чем плох подход?

Конечно проще делать пространные заявления - ба, один Кахес специалист. Остальные ничего никогда не делали.

[identity profile] bigfrogg.livejournal.com 2012-04-19 06:53 pm (UTC)(link)
У меня CP210x работает из коробки. Пробовал на ядрах начиная с 37 где-то, сейчас 3.2 и тоже работает. Debian.

[identity profile] kiryl.livejournal.com 2012-04-19 07:13 pm (UTC)(link)
возможно, латентность из-за виртуалки выше.

[identity profile] tzirechnoy.livejournal.com 2012-04-19 07:34 pm (UTC)(link)
vim `find . -type f -exec grep 300 {} \; -print`
Записать макрос qr
Проиграть макрос @r

Макрос dwiМАЯ_КАНСТАНТА

Потом ищешь по 300 до конца файла, следующий файл -- :wn

[identity profile] xl0.livejournal.com 2012-04-19 11:07 pm (UTC)(link)
Поправить конечно хорошо, но ещё лучше, чтобы CP занималось хостовое ядро, а в виртуалку прокидывать уже просто последовательный порт. Оно и заметно быстрее должно быть.