Bom, após trabalhar na geração de uma mini-distribuição Linux adequada para sistemas embarcados rodando o RTAI, com tudo bonitinho, ambiente de desenvolvimento documentado e scripts for-dummies para realizar diversas tarefas, parti para portar uma aplicação embarcada para rodar no novo Kernel (2.6.x).
Se fosse só isso eu estaria muito feliz, mas se fosse legal não seria um bolsista fazendo… A aplicação foi desenvolvida há alguns anos para um Kernel da geração 2.2.x, hackeada da pior maneira possível há alguns outros anos para rodar na geração 2.4.x e, o pior, foi escrita em C++!
Não me entendam mal, C++ é uma das minhas linguagens favoritas e acho que facilitaria muito o desenvolvimento de drivers se ela fosse suportada no Kernel do Linux, mas ela não é. Qualquer tentativa de utilizar C++ em módulos resulta em uma tremenda sujeira: Compilação complicada, linkagem estranha, modificação de headers e wrappers das chamadas de sistema em C.
Em uma reunião mais ou menos informal consegui ao menos explicitar o fato de que reescrever o programa em C seria a melhor alternativa - não há absolutamente nada de Orientação a Objetos no código e utilizar o próprio sistema de build do Kernel tornaria a aplicação muito mais “resistente” a futuros saltos de versão. Mas, talvez por motivos de tempo, decidiu-se que eu farei mais um hack no programa para que ele funcione em C++ mesmo.
Enfim, gambiarra é a coisa mais natural num programa, mas ter que arrumar a dos outros fazendo mais gambiarra é muito triste.
Bolsista sofre!