Nueva herramienta pg_msvc_generator
Saludos,
Me complace anunciar el lanzamiento de pg_msvc_generator, versión 1.0.0 beta.
pg_msvc_generator es una nueva herramienta creada para ayudar a los autores de extensiones a proporcionar versiones Windows de las mismas. Está escrito en Perl y es de código abierto con licencia PostgreSQL.
Para una descripción completa, pueden consultar el README del proyecto, o también el bug tracker, si encuentran algún problema.
Esta herramienta se compone de 2 scripts:
- pg_msvc_generator.pl
- release.pl
El script principal pg_msvc_generator.pl
generará un subdirectorio msvc en el directorio de la extensión dada, el cual contendrá los archivos .sln y .vcxproj requeridos para poder compilar la extensión mediante Visual Studio 2019, que cuenta con soporte para Debug/Release y compilaciones de 32/64 bits. Creará también una copia de release.pl
y generará un script build.bat
capaz de compilar y crear automáticamente archivos de versiones e instaladores para todas las versiones de PostgreSQL instaladas localmente.
Utilización
pg_msvc_generator.pl [ options ] Options: --default version pgver : default PostgreSQL version. This is only used if you compile the project without specifying a specific major version, or when the project is opened with Visual Studio IDE. If not provided, a default value based on the year will be chosen (13 for 2021, 14 for 2022 and so on). -d | --dir ext_directory : root directory of the extension source code. -e | --extension : extension name. If not provided, the extension name will be assumed using the last part of the given root directory. -h | --help : Show this message.
Por ejemplo:
pg_msvc_generator.pl -d C:\git\hypopg
Requisitos
Para generar el proyecto:
- Un host Windows que tenga instalado Perl para generar los archivos del proyecto
Para la compilación de la extensión:
- Perl
- Visual Studio 2019
- Todas las versiones principales de PostgreSQL para las cuales se desea compilar la extensión, instaladas desde los paquetes PGDG en la ubicación por defecto (
C:\Program Files\PostgreSQL\$MAJOR_VERSION
) - Como opción, NSIS instalado en la ubicación por defecto (`C:\gram Files (x86)\NSIS) para generar instaladores
Crear una versión a partir de la extensión
Todo lo que tienen que hacer es ejecutar el script msvc\release.bat
. Éste configurará el entorno de MSVC e invocará el script release.pl
, que preparará todo para la creación de la versión en el directorio msvc\${extension_name}-${extension_version}
.
Localizará también de forma automática la versión de PostgreSQL instalada leyendo el registro HKLM/SOFTWARE/PostgreSQL/Installations/
, compilará la extensión con todas las versiones existentes y para cada una de ellas generará un subdirectorio que contendrá la dll y los scripts SQL (si los hubiera), un archivo zip con el mismo contenido y opcionalmente un instalador.
Por ejemplo, suponiendo que tengan instalados PostgreSQL 12 y 13 así como HypoPG 1.3.2 y NSIS, su directorio msvc incluirá ahora este contenido adicional:
- msvc\hypopg-1.3.2\12-x64\lib\hypopg.dll
- msvc\hypopg-1.3.2\12-x64\share\extension\hypopg.control
- msvc\hypopg-1.3.2\12-x64\share\extension\*.sql
- msvc\hypopg-1.3.2\13-x64\lib\hypopg.dll
- msvc\hypopg-1.3.2\13-x64\share\extension\hypopg.control
- msvc\hypopg-1.3.2\13-x64\share\extension\*.sql
- msvc\hypopg-1.3.2\hypopg-1.3.2-pg12-x64.exe
- msvc\hypopg-1.3.2\hypopg-1.3.2-pg12-x64.zip
- msvc\hypopg-1.3.2\hypopg-1.3.2-pg13-x64.exe
- msvc\hypopg-1.3.2\hypopg-1.3.2-pg13-x64.zip
Instalador
Si tienen NSIS instalado en la ubicación por defecto (C:\Program Files (x86)\NSIS
), el script release.pl
generará un archivo .nsi y lo compilará usando makensis.exe para generar un instalador específico para cada una de las versiones principales de PostgreSQL que haya encontrado al ejecutar el script release.pl. En el momento de la ejecución, el instalador intentará localizar la ruta de instalación de PostgreSQL del servidor leyendo la clave de registro
HKEY_LOCAL_MACHINE\SOFTWARE\PostgreSQL\Installations\postgresql-$architecture-$majorversion\Base Directory.
Si ha encontrado la clave, el instalador informará al usuario y la utilizará como ubicación de instalación por defecto. En caso contrario, el instalador informará al usuario de que no se ha encontrado ninguna instalación de forma automática y lo obligará a elegir una ubicación antes de poder continuar con la instalación.