Re: Compatibility of libpg

From: Magnus Hagander <magnus(at)hagander(dot)net>
To: Igor Korot <ikorot01(at)gmail(dot)com>
Cc: John R Pierce <pierce(at)hogranch(dot)com>, "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: Re: Compatibility of libpg
Date: 2017-05-04 09:22:08
Message-ID: CABUevEw-rD9RtUecn-SLRs=U2XXFK-hOaJrJLvzyurYL0uRgvw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Thu, May 4, 2017 at 12:06 AM, Igor Korot <ikorot01(at)gmail(dot)com> wrote:

>
> On Wed, May 3, 2017 at 5:20 PM, Magnus Hagander <magnus(at)hagander(dot)net>
> wrote:
> > On Tue, May 2, 2017 at 4:49 AM, Igor Korot <ikorot01(at)gmail(dot)com> wrote:
> >>
> >> John,
> >>
> >> On Mon, May 1, 2017 at 9:38 PM, John R Pierce <pierce(at)hogranch(dot)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.

--
Magnus Hagander
Me: https://www.hagander.net/ <http://www.hagander.net/>
Work: https://www.redpill-linpro.com/ <http://www.redpill-linpro.com/>

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Igor Korot 2017-05-04 10:51:43 Re: Column information
Previous Message Magnus Hagander 2017-05-04 09:19:48 Re: Compatibility of libpg