Usando o Visual Fox Pro na plataforma GNU/Linux




Última atualização: 19/09/2005

Observações Importantes:

1- A versão mais recente de Wine dispensa o uso do patch que menciono neste documento;

2- Para usuários Kurumin, o procedimento para instalação do Wine recomendável não é o descrito neste documento, mas sim aquele obtido através do uso do ícone mágico - constante das distribuições Kurumin;

3- A "instalação" do VFP no GNU/Linux é feita através da simples cópia dos arquivos instalados na máquina Windows para o diretório "fake_windows" que a instalação do Wine cria automaticamente.

4- Há pelo menos 2 DLL importantes do Windows que devem ser copiadas juntamente com os arquivos do VFP7 que são: OLEAUT32.DLL e a MSVCR70.DLL. Veja como fazer adiante.

5- Meu email pessoal para esclarecimento de dúvidas quanto ao documento é este:
carlos.lorenzARROBAgmail.com (substitua a palavra ARROBA pelo caractere apropriado)


Em primeiro, lugar devo dizer que não fui eu quem descobriu a possibilidade de utilizar o VFP,
ainda que limitadamente, no ambiente operacional GNU/Linux (como explico adiante).

Vou contar exatamente como tudo aconteceu comigo.

Uma simples busca no GOOGLE por qualquer coisa que relacionasse o VFP com o Linux,
me levou à seguinte página: http://www.openfox.org/wc.dll/sections/divulge/8.

Aprofundando-me na pesquisa, fiquei sabendo que tudo havia começado com Whil Hentzen, de Milwaukee, Wisconsin, USA,
o qual havia conseguido um feito extraordinário quando, num seminário de Desenvolvedores para Bancos de Dados,
tentou mostrar à audiência como rodar o VFP no Linux.

Soube ainda que mesmo antes da demostração Hentzen recebera um telefonema de um gerente de marketing da Microsoft
alertando-o de que ele estaria prestes a violar o acordo de licença EULA (End User Licensing Agreement) caso rodasse
o VFP em outra plataforma operacional que não o Windows.

Vejam só como esta história é curiosa, pois ao que tudo indica a Microsoft já sabia
ser possível o feito e mais, concluo eu, estaria muito preocupada com que outras pessoas ficassem sabendo disso também.

Isto me faz lembrar de que em 1994, quando comprei o FoxPro 2.5 havia promessas de que em breve eu poderia estar portando
minhas apps para o Mac (coisa que só consegui uma vez) e para o UNIX (coisa que nunca consegui testar).
Bem, muita coisa aconteceu depois do telefonema do tal gerente para Whil Hentzen e a história toda pode ser lida,
pelos interessados, neste link: http://www.theregister.co.uk/content/4/30325.html.

Muito bem, então o VFP roda no Linux. Isso não é ótimo? Mas como é que se faz? É legal? A performance é a mesma? E a IDE, como fica?
E os "famosos executáveis", rodam ou não no Windows, depois de compilados no Linux?

Bem, para algumas, destas e outras perguntas eu creio que nem o próprio Hentzel ainda teve tempo de pesquisar a resposta.

Mas uma coisa posso afirmar: o VFP funciona sim no Linux (veja a foto de meu desktop em http://www.revistaeletronica.com.br/vfp-linux/vfp7-linux.jpg)
e se a Microsoft um dia tiver a boa vontade de liberar uma porta de seu produto para o Linux, ajustando alguns detalhes que obviamente o
Wine não pode resolver neste estágio de seu desenvolvimento, a comunidade Linux terá, por certo, a maior ferramenta de desenvolvimento rápido
para banco de dados já vista, até hoje.

Bem, mas vamos lá. Em primeiro lugar quero dizer que há um pequeno e insignificante executável, escrito do zero, no Linux, com uma tabela
e um form, para ser baixado e testado no Windows, por quem estiver muito ansioso, aqui.

Passo agora a relatar os passos que foram dados para a compilação do Wine e cópia dos arquivos necessários para dentro do Linux para que o VFP possa rodar.

É preciso dizer que tudo isto é 100% EXPERIMENTAL assim como o é o próprio WINE (www.winehq.com), o grande
responsável pela mágica da coisa toda.

Se você já tem o Wine instalado em sua máquina Linux, saiba que será preciso baixar a última versão do site e recompilar
os fontes (coisa que demora o suficiente para um almoço, com certeza)

Desinstale qualquer instalação presente do Wine e inclusive depois da desintalação com o "rpm -e", apague os diretórios
/usr/local/bin/wine e usr/local/lib/wine, caso eles existam.

Remova também qualquer biblioteca do wine como libwine*.

Crie um diretório /home/usuario/wine.

Muito bem, então baixe os fontes do Wine, que neste momento em que escrevo estão no pacote Wine-20030508.tar.gz.

Descompacte no seu diretório /home/usuario/wine o pacote e lembre-se de que este processo não deve ser feito
como usuário root.

Depois disso entre no diretório que acabou de criar com a descompactação, que será o /home/usuario/wine/wine-20030508.

Neste instante, baixe um patch do wine em http://cvs.winehq.com/patch.py?id=7029 e salve-o como /home/usuario/wine/vfpwinepatch7029.

Agora vá para /home/usuario/wine/wine-20030508 e de lá execute o seguinte comando: cat ../vfpwinepatch7029 | patch -p1

Mesmo que a resposta obtida ao comando seja a de que o patch já existe, ignore e force a execução do comando pacth.
Agora vá até /home/usuario/wine/wine20030508 e de lá execute o comando ./tools/wineinstall.

Espere muito, mas muito mesmo, até que o processo pergunte se você quer instalar o Wine como "root". Responda com "yes", óbvio.

Agora vem a parte realmente demorada: a compilação. Neste momento é preciso muita paciência e algo mais para fazer enquanto espera.
Depois que o build terminar, o processo vai pedir a senha do root. Não erre neste momento, senão vai ter que reiniciar todo o processo,
e isso é realmente chato.

Responda "yes" para a criação do arquivo "config" no direório ~/.wine (que o processo também criará).

Não se preocupe com o fato do processo não encontrar uma instalação Windows (aliás até é melhor que seja assim, dizem os especialistas em Wine)
e responda, quando perguntado se o processo deve fazer uma instalação "Wine-only", com "yes".

Aceite o diretório padrão que o processo irá criar para instalar o diretório "falso" Windows. Este diretório será um /c
embaixo de /home/usuario/.

Se tudo correu bem até aqui, e eu espero que sim, o Wine está instalado e é hora de testá-lo.

Vamos até /home/usuario/c/windows e de lá digite wine notepad.exe.

O Wine vai demorar um tempão a primeira vez até que o Font Metrics esteja todo resolvido. Tenha paciência.

Depois disso o notepad do Wine é carregado. Experimente sair e entrar novamente, você verá que agora a coisa é rápida.

Muito bem, vamos ao VFP e ao processo de sua "instalação" no Linux.

Crie o diretório /home/usuario/c/vfp e para lá copie todo o conteúdo da pasta onde o VFP está instalado no seu
PC Windows. A melhor maneira que encontrei pra fazer isto foi queimando um CD.

Crie um diretorio /home/usuario/c/windows/system e para lá copie as bibliotecas MSVCR70.DLL e OLEAUT32.DLL
que estão em c:\windows\system ou \windows\system32, dependendo do caso.

Copie também para o mesmo diretório /home/usuario/c/windows/system todas as DLL do VFP (vfp*) que estiverem
em Program Files\Common Files\Microsoft Shared\VFP, dependendo de seu sistema Windows.

Um último passo é editar o arquivo /home/usuario/.wine/config e incluir antes da última linha (#) o seguinte:

;;VFP5:
[AppDefaults\\vfp5.exe\\Version]
"Windows" = "nt351"

;;VFP6:
[AppDefaults\\vfp6.exe\\Version]
"Windows" = "nt351"

;;VFP7:
[AppDefaults\\vfp7.exe\\Version]
"Windows" = "nt40"

[AppDefaults\\vfp7.exe\\DllOverrides]
"oleaut32" = "native"

;;VFP8:
[AppDefaults\\vfp8.exe\\Version]
"Windows" = "win2k"

[AppDefaults\\vfp8.exe\\DllOverrides]
"oleaut32" = "native"

Por fim, cada aplicação sua, também deverá ter uma entrada no mesmo arquivo, do mesmo modo:

;;minhaapp:
[AppDefaults\\minhaapp.exe\\Version]
"Windows" = "nt40"

Não é preciso colocar a linha "DllOverrides" para a aplicação, isto é só para a IDE do VFP.

Agora é só rodar o VFP assim:
cd /home/usuario/c/vfp
wine vfp7.exe

Não espere ver o mesmo VFP comportado que roda no Windows.

Se depois de tudo isto você ainda estiver ansioso por mais e, principalmente por respostas a muitas de
suas perguntas, escreva-me e vamos juntos desvendar o que ainda falta (e que não é pouco) :)))

Eu acredito que estamos no começo de uma caminhada que ainda vai ficar muito interessante e que talvez nos
dê a chance de alguns momentos bem excitantes.

Carlos Lorenz