terça-feira, 30 de outubro de 2012

Compilando Ginga no Fedora 16 (passo a passo)

Olá pessoal. Recentemente precisei compilar o pacote do Ginga no Fedora 16 e um dos principais problemas que encontrei foi no pacote do Directfb que é instalado direto pelo yum. Por conta disso, vou adicionar neste post a compilação do Directfb na mão. E como o Directfb é uma dependência do Ginga, irei iniciar com ele. Vamos aos passos:

1. Vamos primeiro instalar as dependências do Directfb que são as fontes freetype, o x e a libXext:

 $ sudo yum install freetype freetype-devel libX11-devel libXext-devel  

2. A versão do Directfb que estou utilizando é a 1.2.7. Para compilar, basta extrair o arquivo, entrar no diretório e executar os seguintes comandos:

 $ ./configure  
 $ make  
 $ sudo make install  

Os artefatos da compilação do Directfb estarão no /usr/local/. E para continuar com os passos será necessário configurar a variável de ambiente PKG_CONFIG_PATH para pegar esses artefatos do Directfb. Segue o comando para configurar essa variável de ambiente:

 $ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/  

Outro item que deve ser configurado é o arquivo de configuração do Directfb que se encontra em ~/.directfbrc. Você deve criar esse arquivo e inserir os seguintes valores nele:

 system=x11  
 force-windowed  
 mode=1280x720  
 bg-color=b2773c  

3. Depois de se preocupar com o Directfb, vamos agora para as dependências do pacote do Ginga, que são muitas. Algumas delas são informadas na configuração do Automake e outras só aparecem na compilação. Segue o comando para instalar todas elas:

 $ sudo yum install libpng-devel libtiff-devel libtiff libtiff-tools libjpeg-devel openssl-devel gpm-devel lua-devel libcurl-devel xerces-c-devel  

4. E finalmente vamos para a compilação do Ginga. Dentro do diretório do Ginga, inicie o processo com o seguinte comando:

 $ autoreconf -ifs  

Esse comando irá configurar todo o ambiente de compilação que é baseado no Automake.

Depois disso vamos configurar o ambiente com o seguinte comando:

 $ ./configure --prefix=/usr --config-cache --disable-static --enable-graphics --with-directfb CPPFLAGS="-I$(SRC)/gingacc-cpp/gingacc-contextmanager/include -I$(SRC)/gingacc-cpp/gingacc-dataprocessing/include -I$(SRC)/gingacc-cpp/gingacc-ic/include -I$(SRC)/gingacc-cpp/gingacc-multidevice/include -I$(SRC)/gingacc-cpp/gingacc-player/include -I$(SRC)/gingacc-cpp/gingacc-system/include -I$(SRC)/gingacc-cpp/gingacc-tsparser/include -I$(SRC)/gingacc-cpp/gingacc-tuner/include -I$(SRC)/gingalssm-cpp/include -I$(SRC)/gingancl-cpp/include -I$(SRC)/ncl30-cpp/ncl30-converter/include -I$(SRC)/ncl30-cpp/ncl30/include -I$(SRC)/telemidia-links-cpp -I$(SRC)/telemidia-util-cpp/include" LDFLAGS="-L$(SRC)/ncl30-cpp/ncl30-converter/src/framework -L$(SRC)/ncl30-cpp/ncl30-converter/src/framework/ncl -L$(SRC)/ncl30-cpp/ncl30-converter/src/smil -L$(SRC)/ncl30-cpp/ncl30-converter/src/ncl -L$(SRC)/ncl30-cpp/ncl30/src -L$(SRC)/gingancl-cpp/src -L$(SRC)/gingancl-cpp/src/adaptation -L$(SRC)/gingancl-cpp/src/focus -L$(SRC)/gingancl-cpp/src/emconverter -L$(SRC)/gingancl-cpp/src/adapters -L$(SRC)/gingancl-cpp/src/adapters/text -L$(SRC)/gingancl-cpp/src/adapters/image -L$(SRC)/gingancl-cpp/src/adapters/application -L$(SRC)/gingancl-cpp/src/adapters/application/imperative/lua -L$(SRC)/gingancl-cpp/src/adapters/application/declarative/xhtml -L$(SRC)/gingancl-cpp/src/adapters/application/declarative/ncl -L$(SRC)/gingancl-cpp/src/prefetch -L$(SRC)/gingancl-cpp/src/multidevice -L$(SRC)/gingancl-cpp/src/model -L$(SRC)/telemidia-util-cpp/src -L$(SRC)/telemidia-links-cpp -L$(SRC)/gingacc-cpp/gingacc-system/src/io -L$(SRC)/gingacc-cpp/gingacc-system/src/io/interface/content/text -L$(SRC)/gingacc-cpp/gingacc-system/src/io/interface/content/image -L$(SRC)/gingacc-cpp/gingacc-system/src/io/interface/content/video -L$(SRC)/gingacc-cpp/gingacc-system/src/thread -L$(SRC)/gingacc-cpp/gingacc-player/src -L$(SRC)/gingacc-cpp/gingacc-player/src/text/plain -L$(SRC)/gingacc-cpp/gingacc-player/src/text -L$(SRC)/gingacc-cpp/gingacc-player/src/text/srt -L$(SRC)/gingacc-cpp/gingacc-player/src/image -L$(SRC)/gingacc-cpp/gingacc-player/src/application/imperative/lua -L$(SRC)/gingacc-cpp/gingacc-player/src/application/declarative/xhtml -L$(SRC)/gingacc-cpp/gingacc-tuner/src -L$(SRC)/gingacc-cpp/gingacc-contextmanager/src -L$(SRC)/gingacc-cpp/gingacc-tsparser/src -L$(SRC)/gingacc-cpp/gingacc-ic/src -L$(SRC)/gingacc-cpp/gingacc-ic/src/curlic -L$(SRC)/gingacc-cpp/gingacc-multidevice/src -L$(SRC)/gingacc-cpp/gingacc-dataprocessing/src -L$(SRC)/gingacc-cpp/gingacc-dataprocessing/src/ncl -L$(SRC)/gingacc-cpp/gingacc-dataprocessing/src/ncl/edit -L$(SRC)/gingalssm-cpp/src"  

Onde $(SRC) deve ser substituído pelo caminho absoluto de onde está localizado o Ginga. Feito isso, agora é só compilar e instalar o Ginga na máquina com os comandos:

 $ make  
 $ sudo make install  

E pronto, temos agora o binário do Ginga para testes em sua máquina.

Nenhum comentário:

Postar um comentário