Re: [GENERAL] Compatibility of libpg - Mailing list pgsql-general

From Magnus Hagander
Subject Re: [GENERAL] Compatibility of libpg
Date
Msg-id CABUevEw-rD9RtUecn-SLRs=U2XXFK-hOaJrJLvzyurYL0uRgvw@mail.gmail.com
Whole thread Raw
In response to Re: [GENERAL] Compatibility of libpg  (Igor Korot <ikorot01@gmail.com>)
List pgsql-general
On Thu, May 4, 2017 at 12:06 AM, Igor Korot <ikorot01@gmail.com> wrote:

On Wed, May 3, 2017 at 5:20 PM, Magnus Hagander <magnus@hagander.net> wrote:
> On Tue, May 2, 2017 at 4:49 AM, Igor Korot <ikorot01@gmail.com> wrote:
>>
>> John,
>>
>> On Mon, May 1, 2017 at 9:38 PM, John R Pierce <pierce@hogranch.com> wrote:
>> > On 5/1/2017 5:44 PM, Igor Korot wrote:
>> >>
>> >>
>> >> But I want to build from MSVC. I already have a solution for it. All I
>> >> need is to create a project inside that solution which will build the
>> >> dll
>> >> and lib files for me.
>> >>
>> >> Or I have to use nmake?
>> >
>> >
>> > pretty sure you need to run the top level config script to generate all
>> > the
>> > right stuff, then you probably can have MSVC run the makefile in the
>> > libpq
>> > directory.   I find it easier to just build the whole server, then just
>> > use
>> > the libpq.dll rather than trying to build pieces seperately, as it
>> > really
>> > doesn't take very long.   i believe there are notes on building with
>> > MSVC on
>> > Windows,
>> > https://www.postgresql.org/docs/current/static/install-windows-full.html
>> > ...
>> > I see there are instructions for building libpq only,
>> >
>> > https://www.postgresql.org/docs/current/static/install-windows-libpq.html
>> > but I believe you still need most of the prerequisites as outlined in
>> > 17.1.1
>> > ...   17.1.3 discusses a mkvcbuild.pl which makes a pgsql.sln project(?)
>> > for
>> > Visual Studio
>>
>> Ok, I tried to build with nmake as suggested by the official
>> documentation.
>>
>> Two issues:
>> 1. On the build window I got:
>>
>> [quote]
>>         link.exe -lib @C:\Users\Igor\AppData\Local\Temp\nm4696.tmp
>>         rc.exe /l 0x409 /fo".\Release\libpq.res" libpq-dist.rc
>> Microsoft (R) Windows (R) Resource Compiler Version 6.1.7600.16385
>> Copyright (C) Microsoft Corporation.  All rights reserved.
>>
>>         link.exe @C:\Users\Igor\AppData\Local\Temp\nm48F9.tmp
>>    Creating library .\Release\libpqdll.lib and object
>> .\Release\libpqdll.exp
>>         mt -manifest .\Release\libpq.dll.manifest
>> -outputresource:.\Release\libp
>> q.dll;2
>> Microsoft (R) Manifest Tool version 5.2.3790.2076
>> Copyright (c) Microsoft Corporation 2005.
>> All rights reserved.
>>
>> .\Release\libpq.dll.manifest : general error c1010070: Failed to load and
>> parse
>> the manifest. The system cannot find the file specified.
>> NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft
>> SDKs\Windows\v7.0A
>> \bin\mt.EXE"' : return code '0x1f'
>> Stop.
>> NMAKE : fatal error U1077: '"c:\Program Files (x86)\Microsoft Visual
>> Studio 10.0
>> \VC\BIN\nmake.EXE"' : return code '0x2'
>> Stop.
>> [/quote]
>>
>> 2. Nevertheless, I did get the libpg.{dll,lib} files.
>> However, it looks like they are Release mode.
>
>
> Yes, this is a known issue.

Does this mean it will be fixed in the next release?

No. It will be removed in the next major release (postgres 10).

It could be fixed in a minor release, but nobody has shown interest in providing a proper fix for years for it. But if you want to contribute a fix for it, we could certainly apply it to existing releases, but given that the method will be gone in version 10 it's doubtful if it's worth it.

 
> Please note that this method of building libpq has been removed from
> Postgres 10, so it's considered to be deprecated for quite some time.
>
>
>>
>> Is there a way to build a Debug version of the libraries?
>> I'm building my app in Debug mode right now and prefer not to mix the
>> libraries.
>> Especially since I know Debug and Release version with MSVC link to a
>> different run-time.
>
>
> Yes, using the MSVC build system in src/tools/msvc. See section 17.1.3 on
> https://www.postgresql.org/docs/current/static/install-windows-full.html
>
> (You should be able to build "libpq" as the project - I haven't tested it,
> but I'm pretty sure that should work)

I will need to install ActivePerl? ;-)

You will need some level of perl - I believe it works with the upstream perl as well.


Why not generate the solution and supply them with the source?

Because it has to be maintained by people who do not have Visual Studio, or even Windows. We need it to be auto-generated from the core build system if there is going to be any chance for it to stay up to date.

-- 

pgsql-general by date:

Previous
From: Magnus Hagander
Date:
Subject: Re: [GENERAL] Compatibility of libpg
Next
From: Igor Korot
Date:
Subject: Re: [GENERAL] Column information