WikiPrint - from Polar Technologies Índice Visual C++ 2005 1. Requisitos: 2. Pasos para generar PostgreSQL y PgInstaller Pasos para compilar PostgreSQL usando VC 1. Pasos para generar PgInstaller 4. Solución de problemas con VC: MingW 1. Compilar el Servidor con Mingw 2. Compilar extenciones con Mingw Compilando PostgreSQL en Windows Visual C++ 2005 Esto es una guía para compilar PostgreSQL y generar el instalador en español (bajo windows). Ver documentación oficial para más información. Requisitos: • Instalar VC++ 2005 Express Edition • Instalar Active Perl • Instalar Microsoft Platform SDK • Instalar Wix • Instalar el resto de las dependencias que correspondan: • • OpenSSL (para conexiones SSL) • Kerberos (para autenticación) • Gettext y iconv (para NLS) • Python 2.5 (para pl/python) • TCL (para pl/tcl) • XML2, XSLT, etc. (para xml) • ZLib (para compresión de dumps) • etc. Bajar y compilar los añadidos en el instalador de windows: • PgAdmin3 • StackBuilder • PlJava • pldebugger Nota: Para probar sólo el instalador, y no tener que compilar PostgreSQL y todas sus dependencias y añadidos, se puede descomprimir el archivo de instalación MSI y recrear el directorio de staging Pasos para generar PostgreSQL y PgInstaller • Crear un directorio c:\pgBuild • Crear un directorio c:\pgBuild\BuildTrees • Bajar las fuentes de postgresql (del tar.bz2) y descomprimirlas en c:\pgBuild\BuildTrees\pgsql • Bajar las fuentes del instalador (desde cvs) en c:\pgBuild\BuildTrees\pginst-8.3 • Buscar el archivo vcredist_x86.exe del ZIP del Instalador y copiarlo a la carpeta c:\pgBuild\vcredist_x86 Pasos para compilar PostgreSQL usando VC 1 WikiPrint - from Polar Technologies • Editar el archivo c:\pgBuild\BuildTrees\pgsql\src\tools\msvc\config.pl y habilitar/deshabilitar las características a compilar (para el instlador, deberían compilarse todas las características). • Iniciar el 'Símbolo del Sistema Visual Studio 2005': cd c:\pgBuild\BuildTrees\pgsql\src\tools\msvc\ build install c:\pgBuild\pginst-8.3\pgsql • Compilar la ayuda (en un unix), procesarlo con Html Help Workshop (en windows) y copiarlo a pgsql\doc\htmlhelp.chm Pasos para generar PgInstaller Copiar paths.projinc.in a paths.projinc dentro de pginst-8.3 y cambiar las siguientes líneas: <WixDir>C:\Archivos de Programa\Windows Installer XML v3\bin</WixDir> <PKGDIR>$(PGBUILD)\pginst-8.3</PKGDIR> <MSVCMSMS>C:\Archivos de Programa\Archivos Comunes\Merge Modules</MSVCMSMS> <MSVCREDIST>C:\pgbuild\vcredist_x86</MSVCREDIST> Agregar el lenguaje español ({{es.xml}}} y es_welcome.rtf, y editar el archivo C:\pgbuild\BuildTrees\pginst-8.3\lang\languages.projinc: <Language Include="Item"><code>es</code><map>0407</map></Language> • Compilar e instalar PostgreSQL o crear los directorios de staging (si no se ha compilado PostgreSQL) • Actualizar los paquetes añadidos (pgAdmin, plDebugger, plJava, StackBuilder) • Iniciar el 'Símbolo del Sistema Visual Studio 2005': cd c:\pgBuild\BuildTrees\pginst-8.3 msbuild /t:clean msbuild Solución de problemas con VC: • No puede cargar VCProjEngine.DLL: Copiar las dll localizadas (copy vcpackages\3082\*.dll vcpackages para español, en la carpeta de visual studio) ( ver más) • No se puede encontrar vjslib.dll: Instalar Visual J# Redistributable ( ver más) 'windows.h': no such file or directory: Instalar el Microsoft Platform SDK y actualizar los paths en vsvars32.bat (en la carpeta common\bin del visual studio): @set PATH=...;%PATH%;C:\Archivos de programa\Microsoft SDKs\Windows\v6.1\Bin @set INCLUDE=...;%INCLUDE%;C:\Archivos de programa\Microsoft SDKs\Windows\v6.1\Include @set LIB=...;%LIB%;C:\Archivos de programa\Microsoft SDKs\Windows\v6.1\Lib MingW Compilar el Servidor con Mingw Si por algún motivo no se desea usar el paquete de instalación precompilado para windows (construido con Visual C++ 2005, ver arriba), se puede compilar más facilmente con MINGW: 1. Instalar Mingw, MSYS y MSYS-DTK (y opcionalmente, zlib) 2. Descomprimir las fuentes, por ej. en C:\postgresql-9.0beta4 y situarse en este directorio 3. Establecer las rutas PATH=%path%;C:\MinGW\bin;C:\MSYS\1.0\bin 4. Ejecutar bash configure 5. Ejecutar make 2 WikiPrint - from Polar Technologies Más información en la documentación oficial: http://www.postgresql.org/docs/9.0/static/installation-platform-notes.html Una guía más detallada (en inglés) puede encontrarse en el proyecto PostGIS: http://trac.osgeo.org/postgis/wiki/UsersWikiWinCompile Para compilar todas las características, seguramente necesite instalar OpenSSL, ZLib, GetText?, etc. (ver abajo). Compilar extenciones con Mingw Estas son las órdenes que se ejecutan para generar una biblioteca compartida usando Mingw: 1. Crear un directorio en contrib, por ej. foo 2. Crear el archivo de la extención, contrib/foo.c (ver adjunto) 3. Compilar la extención foo.c con C:\mingw\bin\gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing -fwrapv -I. -I. -I../../src/include -I./src/include/port/win32 -DEXEC_BACKEND "-I../../src/include/port/win32" -c -o foo.o foo.c 4. Compilar generar la biblioteca foo.dll con C:\mingw\bin\gcc -shared -o foo.dll foo.o 5. Copiar foo.dll al directorio lib (usualmente "C:\Archivos de Programa\PostgreSQL\9.0alpha4\lib") 6. Crear la función con CREATE FUNCTON add_one (INTEGER) RETURNS INTEGER AS '$libdir/foo.dll' LANGUAGE C STRICT IMMUTABLE; 7. Ejecutar la función SELECT add_one(1); (debería devolver 2) Nota: Cambiar el path ../../src a "C:\Archivos de Programa\PostgreSQL\9.0alpha4\include\server" si no se han compilado las fuentes (instalador precompilado para windows). En la compilación, la mayoría de los parámetros son opcionales (fueron extraidos de una compilación estándar), los más necesarios son los include (-I) y en especial el del port win32, sino falla bastante misteriosamente... Ejemplo: C:\mingw\bin\gcc.exe -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement C:\mingw\bin\gcc.exe -shared -o foo.dll foo.o -Wendif-labels -fno-str Si se está usando un instalador precompilado, además se deberá instalar los siguientes paquetes de GNUWin32 (en el directorio C:\MinGW para no tener que agregar otro include): • zlib: http://kent.dl.sourceforge.net/sourceforge/gnuwin32/zlib-1.2.3.exe • GetText: http://kent.dl.sourceforge.net/sourceforge/gnuwin32/gettext-0.14.4.exe • dependencias de GetText?: http://kent.dl.sourceforge.net/sourceforge/gnuwin32/gettext-0.14.4-dep.zip Más información en la documentación oficial: http://www.postgresql.org/docs/9.0/static/xfunc-c.html 3