@@ -139,19 +139,31 @@ RUN Get-RemoteFile `
139139 'C:\p erl\p erl\b in\p erl.exe Configure && `
140140 nmake && `
141141 nmake install_sw'
142+ # flex and bison are required for building PostgreSQL from source
143+ ENV WINFLEXBISON_VERSION="2.5.25"
144+ RUN Get-RemoteFile `
145+ -Uri https://github.com/lexxmark/winflexbison/releases/download/v$Env:WINFLEXBISON_VERSION/win_flex_bison-$Env:WINFLEXBISON_VERSION.zip `
146+ -Path win_flex_bison-$Env:WINFLEXBISON_VERSION.zip `
147+ -Hash '8d324b62be33604b2c45ad1dd34ab93d722534448f55a16ca7292de32b6ac135' ; `
148+ 7z x win_flex_bison-$Env:WINFLEXBISON_VERSION.zip -oC:\w inflexbison && `
149+ Remove-Item win_flex_bison-$Env:WINFLEXBISON_VERSION.zip && `
150+ Add-ToPath -Append 'C:\w inflexbison'
151+ # Meson + Ninja for building PostgreSQL 18+ on Windows
152+ RUN python -m pip install --no-warn-script-location meson ninja && `
153+ Add-ToPath -Append 'C:\P rogram Files\P ython313\S cripts'
142154# libpq and pg_config as needed by psycopg
143- ENV PG_VERSION="16.9"
144- COPY pg_config.pl C:\p g_config.pl
155+ ENV PG_VERSION="18.3"
145156RUN Get-RemoteFile `
146157 -Uri https://ftp.postgresql.org/pub/source/v$Env:PG_VERSION/postgresql-$Env:PG_VERSION.tar.bz2 `
147158 -Path postgresql-$Env:PG_VERSION.tar.bz2 `
148- -Hash '07c00fb824df0a0c295f249f44691b86e3266753b380c96f633c3311e10bd005 ' ; `
159+ -Hash 'd95663fbbf3a80f81a9d98d895266bdcb74ba274bcc04ef6d76630a72dee016f ' ; `
149160 7z x postgresql-$Env:PG_VERSION.tar.bz2 -r -y && `
150- 7z x postgresql-$Env:PG_VERSION.tar -oC:\p ostgresql_src && `
151- cd C:\p ostgresql_src\p ostgresql-$Env:PG_VERSION\s rc\t ools\m svc && `
152- Copy-Item C:\p g_config.pl -Destination .\c onfig.pl && `
153- RunOnVSConsole -Command 'C:\p erl\p erl\b in\p erl.exe build.pl' && `
154- RunOnVSConsole -Command 'C:\p erl\p erl\b in\p erl.exe install.pl C:\p ostgresql' && `
161+ 7z x postgresql-$Env:PG_VERSION.tar -oC:\p ostgresql_src
162+ RUN New-Item -ItemType Junction -Path C:\O penSSL -Target 'C:\P rogram Files\O penSSL' ; `
163+ $mesonCmd = 'meson setup C:\p gbuild C:\p ostgresql_src\p ostgresql-' + $Env:PG_VERSION + ' --prefix=C:\p ostgresql -Dssl=openssl -Dextra_include_dirs=C:\O penSSL\i nclude -Dextra_lib_dirs=C:\O penSSL\l ib -Dgssapi=disabled -Dreadline=disabled -Dicu=disabled -Dnls=disabled -Dlz4=disabled -Dzstd=disabled -Dlibxml=disabled -Dlibxslt=disabled -Dllvm=disabled' ; `
164+ RunOnVSConsole -Command $mesonCmd && `
165+ RunOnVSConsole -Command 'ninja -C C:\p gbuild' && `
166+ RunOnVSConsole -Command 'ninja -C C:\p gbuild install' && `
155167 Add-ToPath -Append "C:\p ostgresql\b in"
156168
157169ENV CURL_VERSION="8.19.0"
0 commit comments