<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bit a Bit &#187; compilação</title>
	<atom:link href="http://www.bitabit.eng.br/tags/compilacao/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bitabit.eng.br</link>
	<description>O Blog da Engenharia de Computação da POLI-USP</description>
	<lastBuildDate>Wed, 11 Jan 2012 16:12:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Compilando o OpenOffice</title>
		<link>http://www.bitabit.eng.br/2010/02/06/compilando-o-openoffice/</link>
		<comments>http://www.bitabit.eng.br/2010/02/06/compilando-o-openoffice/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 21:10:26 +0000</pubDate>
		<dc:creator>Rodrigo Rodrigues da Silva, Coop08</dc:creator>
				<category><![CDATA[Coop8]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[compilação]]></category>
		<category><![CDATA[open office]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.bitabit.eng.br/?p=945</guid>
		<description><![CDATA[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.]]></description>
			<content:encoded><![CDATA[<p>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.</p>
<p>Hoje à noite, em um momento iluminado (depois de ler um e-mail do <a href="http://jucablues.blogspot.com/">Juca</a> entitulado “<a href="http://groups.google.com/group/polignu/browse_thread/thread/d139bf2d4835e903">algumas coisas demandam coragem</a>”, 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?!</p>
<p>Há cerca de dois anos eu tentei completar esse rito de passagem: na época ainda usavam <em>CVS</em>. Um grande problema de <em>CVS</em> em tutoriais é que sempre colocam umas linhas de comando do tipo:</p>
<p><code>cvs -d :pserver:anoncvs@anoncvs.services.openoffice.org:/cvs checkout <em>"modulename"</em></code></p>
<p><a href="http://www.bitabit.eng.br/wp-content/uploads/2010/02/comp_ooffice1.png"><img class="alignright size-full wp-image-953" src="http://www.bitabit.eng.br/wp-content/uploads/2010/02/comp_ooffice1.png" alt="comp_ooffice" width="402" height="477" /></a>e nunca nos dizem o que colocar em <em>&#8220;modulename&#8221;</em>, 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<em> build system</em> do open office.</p>
<p>A boa notícia é que a cada <em>major version</em> o OpenOffice.org tem refeito o seu <em>build system</em>, para melhor. Além disso, descobri que nesses dois anos eles passaram o repositório de código pelo <em>svn</em> e  finalmente adotaram o <em>mercurial</em> em outubro de 2009.</p>
<p>Fazer um <em>checkout</em> de todo o repositório <em>mercurial</em> seria muito demorado, e por isso eles disponibilizam um <em>bundle</em> diário do repositório, isto é, um arquivo com todo o repositório empacotado.</p>
<p>Hora de se sujar: baixe o <em>bundle</em> , “<em>unbundle</em>” e “<em>update</em>”:</p>
<p><code>sudo apt-get install mercurial</code> (caso não tenha o <em>mercurial</em> instalado)<br />
<code>mkdir devel &amp;&amp; cd devel</code> (ou como vc quiser chamar o seu parque de diversões hacker, caso ainda não o tenha)<br />
<code>wget http://hg.services.openoffice.org/bundle/DEV300.hg<br />
mkdir openoffice<br />
cd openoffice<br />
hg init<br />
hg unbundle ../DEV300.hg<br />
hg pull http://hg.services.openoffice.org/DEV300<br />
hg update</code></p>
<p>Além do tempo de baixar o<em> bundle</em>, que tem quase 1GB, o resto do processo demora cerca de 30 minutos.</p>
<p>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 <em>full build</em> 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 <em>apt</em>), use o gerenciador de pacotes padrão da sua distribuição. Os pacotes devem ter nomes iguais ou parecidos.</p>
<p><strong>Dependências</strong></p>
<p>No tutorial disponível no wiki eles sugerem algumas dependências:</p>
<ul>
<li>glibc:<br />
for OOo&lt;=3.1: 2.2.x or higher  for OOo&gt;3.1: 2.3.2 or higher</li>
<li>C/C++ Compiler:<br />
gcc &gt;= 3.3<br />
gcc 4.2.3 is the current reference compiler</li>
<li>The X11 development libraries and header files</li>
<li>PAM including the development headers</li>
<li>bash</li>
<li>gtk2 and libtiff including the development headers</li>
</ul>
<p>Se você não estiver usando um Debian Sarge da vida, ignore e prossiga. Ah, caso você não tenha o <em>gcc</em> instalado, 1. você não devia estar aqui (<a href="http://instantbazinga.com">bazzinga!</a>) 2. já que está aqui, rode um <code>sudo apt-get install build-essential</code> e seus problemas acabaram.</p>
<p>Isso é uma mão na roda para instalar a maioria das (infinitas) dependências:</p>
<p><code>sudo apt-get build-dep openoffice.org</code></p>
<p>Como de praxe, há coisas novas em relação à versão estável que obviamente o <em>build-dep</em> não pegou:</p>
<p><code>sudo apt-get install mingw32 libgraphite3 libgraphite-dev</code></p>
<p>De volta ao seu diretório <code>openoffice</code>:</p>
<p><code>./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++</code></p>
<p>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 <code>/usr/bin/i586-mingw32msvc-g++</code> é para o <em>cross</em>-compilador mingw32, necessário para <em>cross</em>-compilar algo que não sei o que é. Ao final, veja se não ocorreram muitos <em>warnings</em> e se aparece a seguinte mensagem:</p>
<p><code>Configure completed<br />
You may now run ./bootstrap in <em>[pasta onde estão os sources]</em></code></p>
<p>Agora, com as variáveis de sistema configuradas, precisamos gerar os scripts de compilação (<em>Makefiles</em>):</p>
<p><code>./bootstrap<br />
source LinuxX86-64Env.Set.sh</code><br />
(ou <code>source LinuxX86Env.Set.sh</code> se seu processador for 32 bits)</p>
<p><strong>Agora, aos finalmentes</strong></p>
<p>Tendo configurado as variáveis de ambiente e gerado os <em>build scripts</em>, vamos à compilação:<br />
<code>time make</code></p>
<p># vá tomar um chá que vai demorar (eu fui!). O <em>time</em> antes do <em>make</em> vai marcar o tempo gasto na compilação.</p>
<p><strong>Depois do chá</strong></p>
<p>Se tudo correr bem, depois do seu chá e mais algumas horas você chegará em algo assim:</p>
<p><code>***********************************************************<br />
Successful packaging process!<br />
***********************************************************<br />
... creating log file log_DEV300_en-US.log<br />
Fri Feb  5 12:30:15 2010 (00:07 min.)<br />
real    357m1.283s<br />
user    274m55.902s<br />
sys    42m31.595s<br />
rodrigo@snowball2:~/devel/openoffice$</code></p>
<p><strong>Sim, foram 6 horas mesmo.</strong> 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.</p>
<p>Caso você tenha um processador com dois ou mais núcleos, é possível fazer um <em>build</em> paralelo, que teoricamente iria mais rápido. Eu estava fazendo outras coisas no computador, então me contentei com um único <em>core</em> compilando o bichinho. No link ao final da página há instruções sobre como fazer isso, entre outros hacks.</p>
<p>Como executamos um full build, o processo gerou pacotes prontos para instalação. Os pacotes para GNU/Linux 64bit ficam em <code>~/devel/openoffice/instsetoo_native/unxlngx6.pro/OpenOffice/deb/install/</code> (para 32bits é unxlngi6.pro ou algo que o valha). Na pasta <code>en-US_download</code> há um <code>tar.gz</code> que pode ser distribuído. A pasta <code>en-US</code> possui o mesmo conteúdo, porém não compactado.</p>
<p><strong>Instalação</strong></p>
<p>Como executamos um <em>build</em> padrão, o <code>configure</code> gerou os pacotes nativos da distribuição: <em>.deb</em>. 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).</p>
<p><code><strong>sudo apt-get remove openoffice.org-common</strong></code><br />
(Caso você não remova o open office atual, pode haver conflito de pacotes. <strong>Remova!</strong>)</p>
<p><code>cd ~/devel/openoffice/instsetoo_native/unxlngx6.pro/OpenOffice/deb/install/en-US/DEBS</code><br />
<code>sudo dpkg -i *.deb</code> <em>(pacotes do OO.org)</em><br />
<code>cd destop-integration</code><br />
<code>sudo dpkg -i *.deb</code><em> (ícones no menu do KDE/GNOME)</em></p>
<p>Lembre-se de autalizar o código (<code>hg pull &amp;&amp; hg update</code>) e recompilar (<code>make</code>) de tempos em tempos. A linha de desenvolvimento está em constante&#8230; 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 <em>rebuilds</em> devem demorar muito menos, pois apenas os arquivos modificados (e os dependentes deles) são recompilados. Veja o link abaixo para maiores informações.</p>
<p>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 <a href="http://www.openoffice.org/servlets/SummarizeList?listName=dev">dev@openoffice.org</a>, dê uma olhada no <a href="http://qa.openoffice.org/issues/">bugtracker</a> e na página de <a href="http://wiki.services.openoffice.org/wiki/To-Dos">TODO&#8217;s</a>. O <a href="http://wiki.services.openoffice.org/wiki/Development">wiki</a> também é um ótimo ponto de partida.</p>
<p><em><strong>happy hacking!</strong></em></p>
<p>Referência:<br />
<a href="http://wiki.services.openoffice.org/wiki/Documentation/Building_Guide/Building_on_Linux">http://wiki.services.openoffice.org/wiki/Documentation/Building_Guide/Building_on_Linux</a></p>
<p><code>© 2010 Rodrigo Rodrigues da Silva. Este texto pode ser compartilhado sob os termos da licença <a href="//creativecommons.org/licenses/by-sa/2.5/”">Creative Commons By-Sa </a></code></p>
<img src="http://www.bitabit.eng.br/?ak_action=api_record_view&id=945&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.bitabit.eng.br/2010/02/06/compilando-o-openoffice/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tutorial definitivo para recompilar o Minix 3</title>
		<link>http://www.bitabit.eng.br/2009/10/24/tutorial-definitivo-para-recompilar-o-minix-3/</link>
		<comments>http://www.bitabit.eng.br/2009/10/24/tutorial-definitivo-para-recompilar-o-minix-3/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 09:53:48 +0000</pubDate>
		<dc:creator>Eduardo Russo, Coop10</dc:creator>
				<category><![CDATA[Acadêmico]]></category>
		<category><![CDATA[Computação]]></category>
		<category><![CDATA[Coop10]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[compilação]]></category>
		<category><![CDATA[Minix]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.bitabit.eng.br/?p=198</guid>
		<description><![CDATA[Estudando sistemas operacionais, provavelmente você terá que recompilar seu código fonte várias vezes. Esse tutorial explica como fazer isso e garantir que tudo que você fez funcione. O primeiro passo, é editar o código. Para isso, você pode transferir os &#8220;.c&#8221; via FTP, alterar em outro SO ou, a maneira mais simples, que explicarei aqui, [...]]]></description>
			<content:encoded><![CDATA[<p>Estudando sistemas operacionais, provavelmente você terá que recompilar seu código fonte várias vezes. Esse tutorial explica como fazer isso e garantir que tudo que você fez funcione.</p>
<p>O primeiro passo, é editar o código. Para isso, você pode transferir os &#8220;.c&#8221; via FTP, alterar em outro SO ou, a maneira mais simples, que explicarei aqui, editar no próprio Minix.</p>
<p>No exemplo, vamos alterar a mensagem de boas vindas do Minix.</p>
<pre class="brush: plain; light: true; title: ; notranslate">cd /usr/src/kernel
cp main.c main.c.back
elle main.c</pre>
<p>Isso criará um backup do main.c, caso você faça alguma besteira e abrirá o programa Elle (um editor básico, mas que dá pro gasto) com o main.c.</p>
<p>Agora vá na parte que tem a mensagem de boas vindas (Copyright&#8230;..) e altere o código. Eu alterei para &#8220;By Russo &#8211; Sao Paulo &#8211; Brasil &#8211; 2009&#8243;.</p>
<p>Aperte <strong>CONTROL+W</strong> para salvar o arquivo e depois <strong>CONTROL+S</strong> para sair do Elle.</p>
<p>Agora digite</p>
<pre class="brush: plain; light: true; title: ; notranslate">cd /usr/src
make clean
make install</pre>
<p><strong>edit</strong>: ou digite:</p>
<pre class="brush: plain; light: true; title: ; notranslate">cd /usr/src/tools/
make hdboot</pre>
<p>Depois que terminar a recompilação, basta reiniciar o Minix com</p>
<pre class="brush: plain; light: true; title: ; notranslate">reboot</pre>
<p>Pode acontecer disso simplesmente não funcionar, aí entra a segunda parte desse tutorial.</p>
<h1>Alternando entre as recompilações</h1>
<p>Depois de MUITO apanhar com recompilações e mais recompilações do <a href="http://www.minix3.org/" target="_blank">Minix</a>, com resultados alternados de funcionamento, testes e mais testes com <a href="http://www.virtualbox.org/" target="_blank">VirtualBox</a>, <a href="http://www.vmware.com/products/fusion/" target="_blank">VMware Fusion</a> (que insiste em dar um <em>kernel</em> <em>panic</em> no Mac OSX cada vez que dou um <em>boot</em> no Minix), <a href="http://www.parallels.com/" target="_blank">Parallels Desktop</a> e <a href="http://www.kju-app.org/" target="_blank">Q</a> (versão do <a href="http://www.qemu.org/" target="_blank">QEMU</a> pro OSX), consegui entender o que acontece e como fazer uma compilação do <em>kernel</em> funcionar corretamente!</p>
<div id="attachment_268" class="wp-caption aligncenter" style="width: 624px"><img class="size-full wp-image-268" title="VMware causando kernel panic" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/VMware-causando-kernel-panic.jpg" alt="VMware tirando um sarro da minha cara" width="614" height="460" /><p class="wp-caption-text">VMware tirando um sarro da minha cara</p></div>
<p>Acabei decidindo por utilizar o VirtualBox 3.0. Pesquisei que nem um condenado pelo mundo virtual e descobri que cada vez que o código é recompilado é gerado uma nova versão do <em>kernel</em>. O grande mistério que fica sem resposta é: por que às vezes ele reinicia com o <em>kernel</em> recém compilado e às vezes não?</p>
<p>Enfim, digite</p>
<pre class="brush: plain; light: true; title: ; notranslate">ls /boot/image</pre>
<p>Isso mostrará todas aquelas 300 vezes que você compilou o <em>kernel</em> para tentar alterar a &#8220;<a href="http://www.youtube.com/watch?v=n96GWy67C9E" target="_blank">disgrama</a>&#8221; da tela de <em>login</em>!</p>
<div id="attachment_269" class="wp-caption aligncenter" style="width: 490px"><img class="size-full wp-image-269" title="versões das compilações" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/versões-das-compilações.png" alt="Versões das recompilações" width="480" height="314" /><p class="wp-caption-text">Versões das recompilações</p></div>
<p>Pode-se observar que recompilei o <em>kernel</em> três vezes (com a mesma alteração estúpida de teste), já que a primeira versão é a original.</p>
<p>Para utilizar uma dessas versões (no exemplo, vou usar a 3.1.3ar4), você deve digitar</p>
<pre class="brush: plain; light: true; title: ; notranslate">#shutdown
image=/boot/image/3.1.3ar4
boot</pre>
<p>Isso irá reiniciar o Minix com as alterações feitas em cada uma das versões. Além de resolver o problema de recompilações que aparentemente não funcionam, permite que você volte a versões pré-cagada!</p>
<div id="attachment_270" class="wp-caption aligncenter" style="width: 786px"><img class="size-full wp-image-270" title="kernel do Minix alterado" src="http://www.bitabit.eng.br/wp-content/uploads/2009/10/kernel-do-Minix-alterado.png" alt="Antes e depois de trocar o kernel em uso" width="776" height="254" /><p class="wp-caption-text">Antes e depois de trocar o kernel em uso</p></div>
<p>No caso de dar caca, basta, na hora que o Minix te dá 3 opções (antes do <em>boot</em>) pressionar esc. Dessa forma, você tem a opção de escolher qual versão bootar.</p>
<p>Mas&#8230; se der caca numa alteração de driver&#8230; se danou! Faça backups com a maquina virtual para esses casos, já que <a href="http://pt.wikipedia.org/wiki/Micro-kernel" target="_blank">mudanças nos drivers não tem nada a ver com o kernel do Minix</a> e não adianta voltar atrás.</p>
<img src="http://www.bitabit.eng.br/?ak_action=api_record_view&id=198&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.bitabit.eng.br/2009/10/24/tutorial-definitivo-para-recompilar-o-minix-3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

