Compilando o OpenOffice

VN:RO [1.9.11_1134]
sábado, 6 d fevereiro d 2010
Por Rodrigo Rodrigues da Silva, Coop08. Siga no Twitter

Compilar o OpenOffice a partir do código fonte da linha de desenvolvimento poderia tornar-se um pesadelo há algum tempo. Com o novo build system da linha 3.0 e a migração para o repositório mercurial durante o desenvolvimento da próxima versão (3.2), o processo ficou muito mais fácil. Passado o martírio, é só começar a se divertir com os quase 70 mil arquivos-fonte.

Hoje à noite, em um momento iluminado (depois de ler um e-mail do Juca entitulado “algumas coisas demandam coragem”, sugerindo o que se segue), pensei: bom, se eu já uso as versões de desenvolvimento do Firefox e do Thunderbird cotidianamente, por que não o OpenOffice? Afinal, qual a graça de usar um OpenOffice 3.1 estável?!

Há cerca de dois anos eu tentei completar esse rito de passagem: na época ainda usavam CVS. Um grande problema de CVS em tutoriais é que sempre colocam umas linhas de comando do tipo:

cvs -d :pserver:anoncvs@anoncvs.services.openoffice.org:/cvs checkout "modulename"

comp_oofficee nunca nos dizem o que colocar em “modulename”, o que acaba por custar ao benevolente hacker mais duas horas varrendo o repositório em busca do módulo correto. Além disso, era necessário baixar e compilar separadamente todo o build system do open office.

A boa notícia é que a cada major version o OpenOffice.org tem refeito o seu build system, para melhor. Além disso, descobri que nesses dois anos eles passaram o repositório de código pelo svn e finalmente adotaram o mercurial em outubro de 2009.

Fazer um checkout de todo o repositório mercurial seria muito demorado, e por isso eles disponibilizam um bundle diário do repositório, isto é, um arquivo com todo o repositório empacotado.

Hora de se sujar: baixe o bundle , “unbundle” e “update”:

sudo apt-get install mercurial (caso não tenha o mercurial instalado)
mkdir devel && cd devel (ou como vc quiser chamar o seu parque de diversões hacker, caso ainda não o tenha)
wget http://hg.services.openoffice.org/bundle/DEV300.hg
mkdir openoffice
cd openoffice
hg init
hg unbundle ../DEV300.hg
hg pull http://hg.services.openoffice.org/DEV300
hg update

Além do tempo de baixar o bundle, que tem quase 1GB, o resto do processo demora cerca de 30 minutos.

De agora em diante, você é livre para compilar como quiser, com os itens opcionais que quiser (ou não). Vou apenas reproduzir o que eu fiz para executar um full build padrão, já que os tutoriais oficiais nunca são suficientes. Tudo isso foi executado em um Ubuntu GNU/Linux 9.04 (jaunty) 64bits, e pode mudar ligeiramente de distribuição para distribuição. Caso você use uma distribuição que não seja derivada do Debian (isto é, sem apt), use o gerenciador de pacotes padrão da sua distribuição. Os pacotes devem ter nomes iguais ou parecidos.

Dependências

No tutorial disponível no wiki eles sugerem algumas dependências:

  • glibc:
    for OOo<=3.1: 2.2.x or higher for OOo>3.1: 2.3.2 or higher
  • C/C++ Compiler:
    gcc >= 3.3
    gcc 4.2.3 is the current reference compiler
  • The X11 development libraries and header files
  • PAM including the development headers
  • bash
  • gtk2 and libtiff including the development headers

Se você não estiver usando um Debian Sarge da vida, ignore e prossiga. Ah, caso você não tenha o gcc instalado, 1. você não devia estar aqui (bazzinga!) 2. já que está aqui, rode um sudo apt-get install build-essential e seus problemas acabaram.

Isso é uma mão na roda para instalar a maioria das (infinitas) dependências:

sudo apt-get build-dep openoffice.org

Como de praxe, há coisas novas em relação à versão estável que obviamente o build-dep não pegou:

sudo apt-get install mingw32 libgraphite3 libgraphite-dev

De volta ao seu diretório openoffice:

./configure --with-use-shell=bash --with-system-libs --without-system-jars --without-system-icu --without-system-agg --without-system-lpsolve --without-system-mspack --disable-mozilla --with-mingwin=/usr/bin/i586-mingw32msvc-g++

Isso diz aos scripts de compilação para utilizarem o maior número possível de libs do sistema e evitar incompatibilidades. O palavrão /usr/bin/i586-mingw32msvc-g++ é para o cross-compilador mingw32, necessário para cross-compilar algo que não sei o que é. Ao final, veja se não ocorreram muitos warnings e se aparece a seguinte mensagem:

Configure completed
You may now run ./bootstrap in [pasta onde estão os sources]

Agora, com as variáveis de sistema configuradas, precisamos gerar os scripts de compilação (Makefiles):

./bootstrap
source LinuxX86-64Env.Set.sh

(ou source LinuxX86Env.Set.sh se seu processador for 32 bits)

Agora, aos finalmentes

Tendo configurado as variáveis de ambiente e gerado os build scripts, vamos à compilação:
time make

# vá tomar um chá que vai demorar (eu fui!). O time antes do make vai marcar o tempo gasto na compilação.

Depois do chá

Se tudo correr bem, depois do seu chá e mais algumas horas você chegará em algo assim:

***********************************************************
Successful packaging process!
***********************************************************
... creating log file log_DEV300_en-US.log
Fri Feb 5 12:30:15 2010 (00:07 min.)
real 357m1.283s
user 274m55.902s
sys 42m31.595s
rodrigo@snowball2:~/devel/openoffice$

Sim, foram 6 horas mesmo. Isso num Intel Core2 Duo T7250 2.00GHz com 4M de cache, mas utilizando apenas um núcleo. Coloque aí nos comentários os seus resultados para compararmos.

Caso você tenha um processador com dois ou mais núcleos, é possível fazer um build paralelo, que teoricamente iria mais rápido. Eu estava fazendo outras coisas no computador, então me contentei com um único core compilando o bichinho. No link ao final da página há instruções sobre como fazer isso, entre outros hacks.

Como executamos um full build, o processo gerou pacotes prontos para instalação. Os pacotes para GNU/Linux 64bit ficam em ~/devel/openoffice/instsetoo_native/unxlngx6.pro/OpenOffice/deb/install/ (para 32bits é unxlngi6.pro ou algo que o valha). Na pasta en-US_download há um tar.gz que pode ser distribuído. A pasta en-US possui o mesmo conteúdo, porém não compactado.

Instalação

Como executamos um build padrão, o configure gerou os pacotes nativos da distribuição: .deb. Caso você queira instalar o OO que compilou (óbvio que quer!) será necessário remover o OpenOffice que vem com a distribuição (se souber como gerar o build desempacotado e evitar isso, por favor faça um comentário).

sudo apt-get remove openoffice.org-common
(Caso você não remova o open office atual, pode haver conflito de pacotes. Remova!)

cd ~/devel/openoffice/instsetoo_native/unxlngx6.pro/OpenOffice/deb/install/en-US/DEBS
sudo dpkg -i *.deb (pacotes do OO.org)
cd destop-integration
sudo dpkg -i *.deb (ícones no menu do KDE/GNOME)

Lembre-se de autalizar o código (hg pull && hg update) e recompilar (make) de tempos em tempos. A linha de desenvolvimento está em constante… desenvolvimento (!), e se sua intenção vai além de fazer uma graça é importante estar com o código em dia. Vale lembrar que, a princípio, os rebuilds devem demorar muito menos, pois apenas os arquivos modificados (e os dependentes deles) são recompilados. Veja o link abaixo para maiores informações.

Agora, se suas intenções são realmente corajosas e vão além de testar e reportar bugs, entre na lista de e-mails dev@openoffice.org, dê uma olhada no bugtracker e na página de TODO’s. O wiki também é um ótimo ponto de partida.

happy hacking!

Referência:
http://wiki.services.openoffice.org/wiki/Documentation/Building_Guide/Building_on_Linux

© 2010 Rodrigo Rodrigues da Silva. Este texto pode ser compartilhado sob os termos da licença Creative Commons By-Sa

VN:F [1.9.11_1134]
Rating: 5.0/5 (1 vote cast)
Compilando o OpenOffice, 5.0 out of 5 based on 1 rating
Related Posts with Thumbnails

Tags: , ,

3 Comentários para “Compilando o OpenOffice”

  1. E pra quem se interessar, o motivo de eu ter resolvido compilar o openoffice (e que resultou no pitanga escrever este artigo) foi um bug que a minha mãe achou :-D

    Ela recebeu por email um arquivo powerpoint read-only que o openoffice não conseguia nem ler.

    O bug está cadastrado no bugtracker do openoffice aqui:
    http://qa.openoffice.org/issues/show_bug.cgi?id=46307

    Pronto, agora vocês também têm algo pra fazer depois de compilar o openoffice!

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #134
  2. Alvin

    Como faz pra ser foda assim cara?

    VA:F [1.9.11_1134]
    Rating: 0 (from 0 votes)
    #9505
    • Putz… não tem jeito. Tem que já ter nascido fodão. Caso contrário, você ainda tem change nos primeiros 2 anos de vida, se a sua mão ou o seu pai forem ultra-fodões e acabarem te dando aquele empurrãozinho básico. A partir do vigésimo-quinto mês de vida, os neurônios não dão mais conta de acompanhar qualquer genialidade dos pais que tenham sido até então omissos.

      Obviamente eu tô zoando, né? Cara, software livre é um universo de conhecimento aguardando para ser absorvido. Basta ter a curiosidade e nunca parar de perguntar: o que? por que ? como?

      E além disso, não ter medo de arregaçar as mangas e se sujar na lama. Só se aprende fazendo. Baixa o código fonte de algum programa que você curte e tenta mudar alguma coisa. Mesmo que seja algo besta. Qualquer coisa. E recompila, roda o programa e veja sua alteração lá. A alegria que isso dá é sem tamanho. Daí pra frente é só alegria.

      Ah! E não esquece de visitar o meu canal no YouTube, o Happy Hacking Video Blog e se inscrever por lá pra saber o que andamos fazendo hoje em dia… :-D

      VA:F [1.9.11_1134]
      Rating: 0 (from 0 votes)
      #9506

Deixe um Comentário

Spam Protection by WP-SpamFree

Get Adobe Flash playerPlugin by wpburn.com wordpress themes