issues/experience with building postgres on Windows - Mailing list pgsql-hackers
From | Martin Zaun |
---|---|
Subject | issues/experience with building postgres on Windows |
Date | |
Msg-id | 4887E3F8.6020405@sun.com Whole thread Raw |
Responses |
Re: issues/experience with building postgres on Windows
|
List | pgsql-hackers |
Hi, trying to build postgres on Windows, I ran into a number of problems not covered by the FAQs or the PostgreSQL 8.3.3 documentation: http://www.postgresql.org/docs/8.3/interactive/install-win32-full.html In short, it's not been an easy experience so far: - build errors with latest Visual Studio Express C++ 2008 - ok with VS Express 2005 but integration issues with Platform SDK - issues locating the 14 required software packages: - no luck getting Bison 1.875 or 2.2 Windows binaries - linkage errorswith the latest ActivePerl/TCL libraries - locating a OSSP-UUID binary package for Windows (.dll but no uuid.hwith Hiroshi Saito's binary package?) Below are more details / questions / suggestions with the goal to help for a better build experience on Windows. Any hints or comments welcome! Regards, Martin 1) Build errors with Visual Studio Express C++ 2008 For building with Visual Studio Express 2005, the Microsoft Platform SDK needs to be downloaded, installed, and integrated into the INCLUDE/LIB/PATHs. However, since Visual Studio Express 2008 already comes with the integrated SDK, I tried this one first. Ran into anumber of VCBuild errors: vcbuild.exe : error VCBLD0010: Project 'G:\olsen\pg\pgsql\postgres.vcproj' requ ires upgrade. Use 'vcbuild /upgrade' or 'devenv /upgrade' to upgrade the projec t. Couldn't get past these errors by executing "vcbuild /upgrade" on the generated .vcproj files. The VS Release Notesand other sites describe this issue a bit but to not much help. ==> Anyone knowing how to build postgres with VC++ 2008? 2) Back to Visual Studio Express C++ 2005 & MS Platform SDK The postgres documentation wasn't specific but I installed Microsoft Platform SDK for Windows Server 2003 R2 http://www.microsoft.com/downloads/details.aspx?FamilyID=0baf2b35-c656-4969-ace8-e4c0c0716adb&DisplayLang=en for I guessedthis the basis for the Postgres documentation. There's a newer version, though, now called Windows SDK: Windows SDK for Windows Server 2008 and .NET Framework 3.5 http://www.microsoft.com/downloads/details.aspx?FamilyID=e6e1c3df-a74f-4207-8586-711ebe331cdc&DisplayLang=en ==> Anyone tried building PG with latest Windows SDK (2008)? 3) Issues adding Platform SDK paths to VC++ 2005 The README in pgsql/src/tools/msvc/ informs about the steps needed to integrate the Platform SDK with VC++ 2005 by editing the Include, Library and Path tags in the files vcprojectengine.dll.express.config vcprojectengine.dll.config under the VC++ directory vc\vcpackages. The README's following assertion is not correct, I think: "This should work for both GUI and commandline builds, buta restart may be necessary." While the Include/Lib/Path changes appear to be in effect for the GUI they are NOT in the Visual Studio 2005 CommandPrompt! (even after restart) The following MS pages http://www.microsoft.com/express/2005/platformsdk/default.aspx http://www.microsoft.com/express/2005/platformsdk/default.aspx describe additional steps, notably to also delete the file vccomponents.dat located in %USERPROFILE%\Local Settings\Application Data\Microsoft\VCExpress\8.0 beforerestarting VC++ Express Edition. But this didn't change the paths in the VS 2005 Command Prompt either. So I had to change the user INCLUDE/LIB/PATH environment manually. Actually, I'm using the Command Prompt from the MS Platform SDK's Build Environment selection, not the VS 2005 startmenu, for other important environment settings (target OS, 32/64, debug/release etc). ==> Does the README's assertion need to be changed/corrected? 4) Issues with locating the 14 required software packages - ActiveState Perl, ActiveState TCL Had to click around to find out that I don't want the "ActivePerl Pro StudioFree Trial" software but the "ActivePerl". Same with ActiveTcl. Problem: found out later that PG doesn't build with the latest ActivePerl/TCL language packs! - Bison, Flex The PG documentation states: only Bison 1.875 or versions 2.2 and later will work. Problem: The GnuWin32 website only offers Bison 2.1! - Diff, Gettext No problems. - MIT Kerberos No problems but unsure how to answer some of the installation questions. - libxml2, libxslt, iconv No problems. - openssl No problems but unsure how to answer some of the installation questions. - ossp-uuid Downloaded source from http://www.ossp.org/pkg/lib/uuid/. Problem: from where to get a ossp-uuid Windows binary? - Python No problems. - zlib No problems. ==> Can't we provide a package for download with all/most of the libraries/tools needed for building PG on Windows? 5) Configuring pgsql/src/tools/msvc/config.pl, buildenv.pl A typo in my config.pl had the build aborting with only The system cannot find the path specified. and no furtherclues. ==> More information on misconfigured config.pl would help! 6) Getting a Bison 1.875 or 2.2 Windows binary Google couldn't find me a Windows binary and I didn't want to build one myself (using mingw). So, I copied cygwin's2.2 binary, together with the needed .dlls, into an empty directory at the end of the PATH. ==> Using cygwin's Bison 2.2 worked! 7) Linkage errors with the latest ActivePerl/TCL libraries Having installed the latest ActivePerl/TCL language packs (Perl: 5.10.0.1003, TCL: 8.5.2.0.284846) resulted in linkage errors against libraries 'tk84.lib' and 'perl85.lib'. I couldn't determine where those library were hardcoded, so, I downloaded and installed older versions (Perl: 5.8.8.822,TCL: 8.4.19.0.285137. Worked! ==> Fixing the linkage errors against the latest ActivePerl/TCL libs or documenting the version requirements wouldbe great! 8) Getting a Windows OSSP-UUID library Google found me a postgres hackers email thread with this link http://winpg.jp/~saito/pg_work/OSSP_win32/ to 1.6.2uuid-ossp.dll mingw-compiled by Hiroshi Saito. Thanks! Problem: from where to get the also needed uuid.h? I've seen that Hiroshi Saito has worked on a patch for building the uuid-ossp package on Windows. I didn't succeedin building ossp-uuid using wingw on Windows and took the shortcut of using cygwin to generate the uuid.h. But that hack didn't work, I'm getting linkage errors: uuid.lib(uuid_str.obj) : error LNK2019: unresolved external symbol _va_copy referenced in function _uuid_str_vasprintf .\Release\uuid-ossp\uuid-ossp.dll : fatal error LNK1120: 1 unresolved externals ==> Where can I find a complete ossp-uuid package for Windows? And this is where I am right now. Any hints/comments welcome!
pgsql-hackers by date: