Para quem não saiba, o Darling é uma espécie de Wine do qual permite teoricamente executar programas e aplicações do sistema operativo Mac OS X em sistemas Linux.
http://www.darlinghq.orgNa prática é um software ainda em estado alfa que ainda está relativamente verde, com reduzida compatibilidade com os programas do sistema operativo da Apple e companhia.
Comparado com o Wine que já é um software apto para correr muito software do Windows, e que teve que implementar do zero todas as interfaces de programação, o Darling mal nasceu, mas têm uma vantagem esmagadora em relação ao Wine, é que as principais API presentes no Mac OS X foram implementadas pelo projecto GNU-Step.
No entanto o autor do projecto Darling ainda teve que enviar patches para corrigir bugs e funções não-implementadas
no GNU-Step, desviando o ênfase da sua parte que era implementar o userland do kernel Darwin sobre o Linux, o que é um módulo do kernel Linux que implementa o Mach API do qual o Cocoa e o Carbon API correm sobre ele. O módulo BSD já existe no mundo Linux, portanto felizmente é menos um factor de carga de trabalhos.
Portanto o Cocoa API está presente no GNU-Step, mas o Carbon API ficou a cargo do projecto Darling. (É uma herança do Mac OS 9 que migrou para as primeiras edições do Mac OS X quando suportava a arquitectura PowerPC. Apesar disso, o Carbon API está presente nas versões Intel do Mac OS X, sendo usado em softwares que ainda utilizam as antigas API, mas não serão elegíveis a longo prazo esta API para programas futuros.)
Para quem quiser experimentar o Darling, deverá ter o Ubuntu 13.04 a funcionar (recomenda-se a versão de 64-bits).
(Pode usar o Gentoo ou o Arch visto serem mais adequados para instalar softwares experimentais).
Em máquinas Ubuntu, o suporte multiarch pode provocar quebras nas dependências, portanto deve ignorar os passos relativos a esta fase até que sejam corrigidos.
1.1 Instalação das dependências primárias.
sudo apt-get install git cmake clang nasm g++
1.2 Instalação das bibliotecas primárias.
sudo apt-get install libxml2-dev libgnutls-dev libicu-dev libcairo-dev \
libjpeg-dev libpng-dev libtiff-dev libbsd-dev libudev-dev \
liblcms-dev libkqueue-dev libssl-dev libbz2-dev uuid-dev \
libncurses-dev libxrandr-dev
1.3 Suporte multiarch (Sujeito a falhas!)
sudo apt-get install g++-multilib
sudo dpkg --add-architecture i386
echo "/usr/lib/i386-linux-gnu" | sudo tee /etc/ld.so.conf.d/zz_i386.conf
sudo ldconfig
Quando ultrapassar esta fase, vamos instalar a partir do código-fonte o GNU-Step.
2.1 GNU-Step Make
git clone
https://github.com/gnustep/gnustep-make.gitcd gnustep-make
CC=clang CXX=clang++ ./configure
sudo make install
2.2 GNU-Step Libojec2 (Runtime Objective-C, sendo a principal linguagem de programação do Mac OS X)
git clone
https://github.com/gnustep/gnustep-libobjc2.gitcd gnustep-libobjc2
OBJCFLAGS=-fblocks CC=clang CXX=clang++ cmake .
rm GNUmakefile
make
sudo make install
2.2.1 Suporte multiarch Libojec2 (Sujeito a falhas!)
git clean -fdx
OBJCFLAGS="-fblocks" CFLAGS=-m32 ASMFLAGS=-m32 CC=clang CXX=clang++ cmake . -DGNUSTEP_INSTALL_TYPE=NONE -DLIB_INSTALL_PATH=/usr/lib/i386-linux-gnu
make
sudo make install
2.3 GNU-Step Base (Contêm as frameworks do Cocoa API)
git clone
https://github.com/gnustep/gnustep-base.gitcd gnustep-base
OBJCFLAGS=-fblocks CC=clang CXX=clang++ ./configure
make
sudo make install
2.3.1 Suporte multiarch Base (Incompleto)
sudo apt-get install libffi6:i386 libxml2:i386 libgnutls26:i386
sudo ln -s libffi.so.6 /usr/lib/i386-linux-gnu/libffi.so
sudo ln -s libxml2.so.2 /usr/lib/i386-linux-gnu/libxml2.so
sudo ln -s libgcrypt.so.11 /lib/i386-linux-gnu/libgcrypt.so
2.4 GNU-Step GUI (Framework gráfica)
git clone
https://github.com/gnustep/gnustep-gui.gitcd gnustep-gui
OBJCFLAGS=-fblocks CC=clang CXX=clang++ ./configure
make
sudo make install
2.5 GNU-Step Opal (Implementação do Quartz2D sobre o Cairo)
git clone
https://github.com/gnustep/gnustep-opal.gitcd gnustep-opal
OBJCFLAGS=-fblocks CC=clang CXX=clang++ make
sudo make install
2.6 GNU-Step Corebase (Implementação do CoreFoundation, incluindo os patches do Darling)
git clone
https://github.com/LubosD/gnustep-corebase.gitcd gnustep-corebase
OBJCFLAGS=-fblocks CC=clang CXX=clang++ ./configure
make
sudo make install
Se sobreviveu a esta maratona de compilar e instalar pacotes de software, então os meus parabéns!
Só resta instalar o Darling!
3. Instalação do Darling (Finalmente!)
git clone --recursive git://github.com/LubosD/darling.git
cd darling
CC=clang CXX=clang++ cmake .
make
sudo make install
Por fim, deve correr o programa ldconfig para completar a configuração do sistema.
Para usar o Darling, basta copiar o ficheiro app para a pasta Applications e abrir uma linha de comando no Terminal:
dyld <os-x app> <argumentos>
O log aparecerá nessa janela, e caso funcione terá a sua primeira aplicação do Mac OS X a correr no Ubuntu
Em sistemas multiarch deverá usar os comandos dyld32 ou dyld64 respectivamente.