Re: [HACKERS] back branches vs. VS 2008

2011-01-04 Thread Magnus Hagander
On Tue, Jan 4, 2011 at 04:49, Andrew Dunstan and...@dunslane.net wrote:

 On 01/03/2011 12:15 PM, I wrote:

 The following patch allows me to build the 8.3 and 8.4 branches using
 Visual Studio 2008, once the build system is patched. But I don't really
 know why. HEAD and 9.0 build fine without it. But those branches branches
 fail with a complaint about IPPROTO_IPV6 being undefined.

 The patch seems harmless enough. But I'd like to know why it's happening.
 Does anyone have a clue?


 -#ifdef IPV6_V6ONLY
 +#if defined(IPV6_V6ONLY)  defined(IPPROTO_IPV6)
        if (addr-ai_family == AF_INET6)
        {
            if (setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY,


 OK, what's going here is that, in the newer SDK, IPV6_V6ONLY is defined
 unconditionally, but IPPROTO_IPV6 is only defined if _WIN32_WINNT is set to
 0x0501 or higher. We defined _WIN32_WINNT as 0x0500 until 9.0, when we
 changed it specifically to allow use of the right IPV6 settings.

I wonder if anything else changed with that #define, though.


 This seems to me like a clear error in the MS headers. I don't think it
 makes any sense to define the settings constant but not the context
 constant. The fix I have suggested above doesn't seem unreasonable or
 terribly unsafe in these circumstances. The code clearly contemplates the
 setsockopt() call in question not having been run, as shown in this comment:

Yeah, it seems reasonable - I assume you tested it and it doesn't fail
in some *different* way than the one we expect in the code?

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

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] back branches vs. VS 2008

2011-01-04 Thread Andrew Dunstan



On 01/04/2011 04:43 AM, Magnus Hagander wrote:



OK, what's going here is that, in the newer SDK, IPV6_V6ONLY is defined
unconditionally, but IPPROTO_IPV6 is only defined if _WIN32_WINNT is set to
0x0501 or higher. We defined _WIN32_WINNT as 0x0500 until 9.0, when we
changed it specifically to allow use of the right IPV6 settings.

I wonder if anything else changed with that #define, though.



Probably. I'm not going to suggest turning it on at this stage. There 
are lots of references to this specific OS level in the headers.






This seems to me like a clear error in the MS headers. I don't think it
makes any sense to define the settings constant but not the context
constant. The fix I have suggested above doesn't seem unreasonable or
terribly unsafe in these circumstances. The code clearly contemplates the
setsockopt() call in question not having been run, as shown in this comment:

Yeah, it seems reasonable - I assume you tested it and it doesn't fail
in some *different* way than the one we expect in the code?



Yes, I enabled IPV6 and set listen_addresses to * an no untoward events 
appeared.


cheers

andrew

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


[HACKERS] back branches vs. VS 2008

2011-01-03 Thread Andrew Dunstan


The following patch allows me to build the 8.3 and 8.4 branches using 
Visual Studio 2008, once the build system is patched. But I don't really 
know why. HEAD and 9.0 build fine without it. But those branches 
branches fail with a complaint about IPPROTO_IPV6 being undefined.


The patch seems harmless enough. But I'd like to know why it's 
happening. Does anyone have a clue?


cheers

andrew

diff --git a/src/backend/libpq/pqcomm.c b/src/backend/libpq/pqcomm.c
index 06aece3..c1775ea 100644
--- a/src/backend/libpq/pqcomm.c
+++ b/src/backend/libpq/pqcomm.c
@@ -383,7 +383,7 @@ StreamServerPort(int family, char *hostName, 
unsigned short portNumber,

}
 #endif

-#ifdef IPV6_V6ONLY
+#if defined(IPV6_V6ONLY)  defined(IPPROTO_IPV6)
if (addr-ai_family == AF_INET6)
{
if (setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY,


--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] back branches vs. VS 2008

2011-01-03 Thread Magnus Hagander
On Mon, Jan 3, 2011 at 18:15, Andrew Dunstan and...@dunslane.net wrote:

 The following patch allows me to build the 8.3 and 8.4 branches using Visual
 Studio 2008, once the build system is patched. But I don't really know why.
 HEAD and 9.0 build fine without it. But those branches branches fail with a
 complaint about IPPROTO_IPV6 being undefined.

 The patch seems harmless enough. But I'd like to know why it's happening.
 Does anyone have a clue?

Umm. Since when do we backpatch new features/platforms?

I don't know exactly why that is happening, but it's a good indicator
that backpatching it isn't necessarily safe - what else can be missed?

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

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] back branches vs. VS 2008

2011-01-03 Thread Andrew Dunstan



On 01/03/2011 12:43 PM, Magnus Hagander wrote:

On Mon, Jan 3, 2011 at 18:15, Andrew Dunstanand...@dunslane.net  wrote:

The following patch allows me to build the 8.3 and 8.4 branches using Visual
Studio 2008, once the build system is patched. But I don't really know why.
HEAD and 9.0 build fine without it. But those branches branches fail with a
complaint about IPPROTO_IPV6 being undefined.

The patch seems harmless enough. But I'd like to know why it's happening.
Does anyone have a clue?

Umm. Since when do we backpatch new features/platforms?

I don't know exactly why that is happening, but it's a good indicator
that backpatching it isn't necessarily safe - what else can be missed?



This isn't a new platform, any more than a new version of gcc is a new 
platform. And I certainly don't understand your reference to new 
features. I'm not suggesting backporting one.


I'm not going to maintain more than one buildfarm member doing MSVC, and 
and if we were to adopt your policy I would not be able to use a 
modern-ish version of the compiler/SDK and also build all the live 
branches. That seems quite unnecessary. If we'd backported the changes 
to support VS2008 when they were made a year or two ago, as we should 
have (the changes are pretty trivial), we'd probably have discovered 
this back then.


I'm putting in this effort because Tom complained about lack of 
buildfarm coverage that occurred when I recently lost the machine my 
buildfarm members were running on, and I'm trying to get back the 
coverage they had.


cheers

andrew

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] back branches vs. VS 2008

2011-01-03 Thread Magnus Hagander
On Mon, Jan 3, 2011 at 19:08, Andrew Dunstan and...@dunslane.net wrote:


 On 01/03/2011 12:43 PM, Magnus Hagander wrote:

 On Mon, Jan 3, 2011 at 18:15, Andrew Dunstanand...@dunslane.net  wrote:

 The following patch allows me to build the 8.3 and 8.4 branches using
 Visual
 Studio 2008, once the build system is patched. But I don't really know
 why.
 HEAD and 9.0 build fine without it. But those branches branches fail with
 a
 complaint about IPPROTO_IPV6 being undefined.

 The patch seems harmless enough. But I'd like to know why it's happening.
 Does anyone have a clue?

 Umm. Since when do we backpatch new features/platforms?

 I don't know exactly why that is happening, but it's a good indicator
 that backpatching it isn't necessarily safe - what else can be missed?


 This isn't a new platform, any more than a new version of gcc is a new
 platform. And I certainly don't understand your reference to new features.
 I'm not suggesting backporting one.

It most definitely is a new platform in a *lot* more ways than a new
version of gcc. It's the whole PlatformSDK. Why else did it require
patches to the code?

And it is a new feature *to the msvc build system*.


 I'm not going to maintain more than one buildfarm member doing MSVC, and and
 if we were to adopt your policy I would not be able to use a modern-ish
 version of the compiler/SDK and also build all the live branches. That seems
 quite unnecessary. If we'd backported the changes to support VS2008 when
 they were made a year or two ago, as we should have (the changes are pretty
 trivial), we'd probably have discovered this back then.

Well, it's perfectly possible to have more tha none version of MSVC on
the machine.

And we're not going to be changing the version that's actually used
for the official binary builds, so all you'll accomplish then is to
have the buildfarm test something different form what we're shipping.

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

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] back branches vs. VS 2008

2011-01-03 Thread Tom Lane
Magnus Hagander mag...@hagander.net writes:
 On Mon, Jan 3, 2011 at 19:08, Andrew Dunstan and...@dunslane.net wrote:
 I'm not going to maintain more than one buildfarm member doing MSVC, and and
 if we were to adopt your policy I would not be able to use a modern-ish
 version of the compiler/SDK and also build all the live branches.

 Well, it's perfectly possible to have more tha none version of MSVC on
 the machine.

 And we're not going to be changing the version that's actually used
 for the official binary builds, so all you'll accomplish then is to
 have the buildfarm test something different form what we're shipping.

Are you speaking for EDB on that?  Do you even know what they're using
to build the Windows installers?

We've made backpatches before to support building/running older branches
on newer platforms.  We do it all the time in fact.  (The latest
instance was hacking the Linux wal_sync_method defaults.  If you think
this isn't a necessary activity, try building a 7.1 or so branch with a
modern gcc.)  It might be reasonable to argue that this particular patch
is too invasive to be safe to back-patch, but I don't agree with the
premise that it isn't a reasonable topic for a back-patch.

I do have some concern about loss of buildfarm coverage for older VS
versions, but if Andrew isn't going to cover those, perhaps someone else
will step up for that.

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] back branches vs. VS 2008

2011-01-03 Thread Magnus Hagander
On Mon, Jan 3, 2011 at 19:50, Tom Lane t...@sss.pgh.pa.us wrote:
 Magnus Hagander mag...@hagander.net writes:
 On Mon, Jan 3, 2011 at 19:08, Andrew Dunstan and...@dunslane.net wrote:
 I'm not going to maintain more than one buildfarm member doing MSVC, and and
 if we were to adopt your policy I would not be able to use a modern-ish
 version of the compiler/SDK and also build all the live branches.

 Well, it's perfectly possible to have more tha none version of MSVC on
 the machine.

 And we're not going to be changing the version that's actually used
 for the official binary builds, so all you'll accomplish then is to
 have the buildfarm test something different form what we're shipping.

 Are you speaking for EDB on that?  Do you even know what they're using
 to build the Windows installers?

Yes and yes.

Well, I'm not actually speaking for them, so I guess we'll need a +1
from Dave. But given that the principle has held for all the previous
releases made, I assume it still does.

The second yes is not pending a +1, I know exaclty what they use.


 We've made backpatches before to support building/running older branches
 on newer platforms.  We do it all the time in fact.  (The latest
 instance was hacking the Linux wal_sync_method defaults.  If you think
 this isn't a necessary activity, try building a 7.1 or so branch with a
 modern gcc.)  It might be reasonable to argue that this particular patch
 is too invasive to be safe to back-patch, but I don't agree with the
 premise that it isn't a reasonable topic for a back-patch.

Fair enough. I don't care enough to object more :-)


 I do have some concern about loss of buildfarm coverage for older VS
 versions, but if Andrew isn't going to cover those, perhaps someone else
 will step up for that.

I'd be worried if we don't have coverage for the versions that are
actually used to build the installers. But those may be what Dave has
covered on his animals already - Dave?

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

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] back branches vs. VS 2008

2011-01-03 Thread Andrew Dunstan



On 01/03/2011 01:50 PM, Tom Lane wrote:

It might be reasonable to argue that this particular patch
is too invasive to be safe to back-patch, but I don't agree with the
premise that it isn't a reasonable topic for a back-patch.



The patch for the non-buildsystem code is one line. The rest is about 20 
lines.



I do have some concern about loss of buildfarm coverage for older VS
versions, but if Andrew isn't going to cover those, perhaps someone else
will step up for that.



The machine involved already has three buildfarm critters. If I have to 
have three versions of VS installed (since we're now talking about 
installing a new one) that will grow to five, on one VM currently 
running on a small not very powerful Athlon X2 machine. It's already a 
pain in the neck to manage. Some time in the future I might have 
resources to run more, but right now I do not.


Incidentally, I just went looking for VS2005/Express on microsoft.com. I 
don't know if they still make it available, but if they do it's fairly 
well hidden. I could find VS2008/Express and VS2010/Express very easily. 
ISTM that having support on the live branches for the compilers/SDKs 
that Microsoft apparently actually supports and distributes is not a bad 
thing to have.


cheers

andrew

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] back branches vs. VS 2008

2011-01-03 Thread Robert Haas
On Mon, Jan 3, 2011 at 2:23 PM, Andrew Dunstan and...@dunslane.net wrote:
 Incidentally, I just went looking for VS2005/Express on microsoft.com. I
 don't know if they still make it available, but if they do it's fairly well
 hidden. I could find VS2008/Express and VS2010/Express very easily. ISTM
 that having support on the live branches for the compilers/SDKs that
 Microsoft apparently actually supports and distributes is not a bad thing to
 have.

I agree.

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] back branches vs. VS 2008

2011-01-03 Thread Dave Page
On Mon, Jan 3, 2011 at 6:50 PM, Tom Lane t...@sss.pgh.pa.us wrote:
 Magnus Hagander mag...@hagander.net writes:
 On Mon, Jan 3, 2011 at 19:08, Andrew Dunstan and...@dunslane.net wrote:
 I'm not going to maintain more than one buildfarm member doing MSVC, and and
 if we were to adopt your policy I would not be able to use a modern-ish
 version of the compiler/SDK and also build all the live branches.

 Well, it's perfectly possible to have more tha none version of MSVC on
 the machine.

 And we're not going to be changing the version that's actually used
 for the official binary builds, so all you'll accomplish then is to
 have the buildfarm test something different form what we're shipping.

 Are you speaking for EDB on that?

He's not speaking *for* us, but he's absolutely right.

-- 
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] back branches vs. VS 2008

2011-01-03 Thread Tom Lane
Dave Page dp...@pgadmin.org writes:
 On Mon, Jan 3, 2011 at 6:50 PM, Tom Lane t...@sss.pgh.pa.us wrote:
 Magnus Hagander mag...@hagander.net writes:
 And we're not going to be changing the version that's actually used
 for the official binary builds, so all you'll accomplish then is to
 have the buildfarm test something different form what we're shipping.

 Are you speaking for EDB on that?

 He's not speaking *for* us, but he's absolutely right.

OK, so what about the next question: is EDB running buildfarm members
that will test the VS version(s) you are using?  I don't think Andrew
is under any obligation to do that for you.

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] back branches vs. VS 2008

2011-01-03 Thread Andrew Dunstan



On 01/03/2011 03:04 PM, Tom Lane wrote:

Dave Pagedp...@pgadmin.org  writes:

On Mon, Jan 3, 2011 at 6:50 PM, Tom Lanet...@sss.pgh.pa.us  wrote:

Magnus Hagandermag...@hagander.net  writes:

And we're not going to be changing the version that's actually used
for the official binary builds, so all you'll accomplish then is to
have the buildfarm test something different form what we're shipping.

Are you speaking for EDB on that?

He's not speaking *for* us, but he's absolutely right.

OK, so what about the next question: is EDB running buildfarm members
that will test the VS version(s) you are using?  I don't think Andrew
is under any obligation to do that for you.




They have baiji (Vista/MSVC 2005 Pro) and mastodon (WS2K3R2/MSVC 2005 
Express).


EDB have been pretty good about buildfarm support.

But more importantly, the buildfarm is about more than just official 
build platform support. Suppose that you're running 8.4 in your 
enterprise, and you want to run a patched Postgres, or one with an extra 
module you wrote. You want to be able to build it with current tools, no 
matter what the official builds are made with, and you don't want to 
be forced to upgrade before you're ready.


cheers

andrew



--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] back branches vs. VS 2008

2011-01-03 Thread Tom Lane
Andrew Dunstan and...@dunslane.net writes:
 But more importantly, the buildfarm is about more than just official 
 build platform support.

Agreed, we should be testing as many build platforms as possible.  I was
just concerned about whether we were losing any coverage.

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] back branches vs. VS 2008

2011-01-03 Thread Dave Page
On Mon, Jan 3, 2011 at 8:04 PM, Tom Lane t...@sss.pgh.pa.us wrote:
 Dave Page dp...@pgadmin.org writes:
 On Mon, Jan 3, 2011 at 6:50 PM, Tom Lane t...@sss.pgh.pa.us wrote:
 Magnus Hagander mag...@hagander.net writes:
 And we're not going to be changing the version that's actually used
 for the official binary builds, so all you'll accomplish then is to
 have the buildfarm test something different form what we're shipping.

 Are you speaking for EDB on that?

 He's not speaking *for* us, but he's absolutely right.

 OK, so what about the next question: is EDB running buildfarm members
 that will test the VS version(s) you are using?  I don't think Andrew
 is under any obligation to do that for you.

Yes, except for VC++ 2008/Win7 which we use for 9.0. That one remains
on my todo list.

-- 
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] back branches vs. VS 2008

2011-01-03 Thread Andrew Dunstan



On 01/03/2011 12:15 PM, I wrote:


The following patch allows me to build the 8.3 and 8.4 branches using 
Visual Studio 2008, once the build system is patched. But I don't 
really know why. HEAD and 9.0 build fine without it. But those 
branches branches fail with a complaint about IPPROTO_IPV6 being 
undefined.


The patch seems harmless enough. But I'd like to know why it's 
happening. Does anyone have a clue?



-#ifdef IPV6_V6ONLY
+#if defined(IPV6_V6ONLY)  defined(IPPROTO_IPV6)
if (addr-ai_family == AF_INET6)
{
if (setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY,



OK, what's going here is that, in the newer SDK, IPV6_V6ONLY is defined 
unconditionally, but IPPROTO_IPV6 is only defined if _WIN32_WINNT is set 
to 0x0501 or higher. We defined _WIN32_WINNT as 0x0500 until 9.0, when 
we changed it specifically to allow use of the right IPV6 settings.


This seems to me like a clear error in the MS headers. I don't think it 
makes any sense to define the settings constant but not the context 
constant. The fix I have suggested above doesn't seem unreasonable or 
terribly unsafe in these circumstances. The code clearly contemplates 
the setsockopt() call in question not having been run, as shown in this 
comment:


/*
 * Note: This might fail on some OS's, like Linux older than
 * 2.4.21-pre3, that don't have the IPV6_V6ONLY socket option, 
and map

 * ipv4 addresses to ipv6.  It will show :::ipv4 for all ipv4
 * connections.
 */


cheers

andrew

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers