Received: from makus.postgresql.org ([98.129.198.125]) by malur.postgresql.org with esmtp (Exim 4.72) (envelope-from ) id 1TIr1s-00043b-C7 for pgsql-hackers@postgresql.org; Tue, 02 Oct 2012 01:12:08 +0000 Received: from mail-qc0-f174.google.com ([209.85.216.174]) by makus.postgresql.org with esmtp (Exim 4.72) (envelope-from ) id 1TIr1p-0003kn-Iq for pgsql-hackers@postgresql.org; Tue, 02 Oct 2012 01:12:07 +0000 Received: by qchd3 with SMTP id d3so4214502qch.19 for ; Mon, 01 Oct 2012 18:12:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent :x-gm-message-state; bh=lZ2EOwbBEJAPH9oP3ZFwZieJCKVNDTOFWRbaE3hqM7Y=; b=QuK9+oJvaF3pFXhzXjClSXo93Gvr4n0neB+Ci5Ow2TBCx2BRkXsD02rC94BYanXKvi Y3EL+cykbXeFzOwzbzE9EJdWoQ+jir0iRcONHVbJZePWRFIZqpeJzo1T/k3EUwUgEp3L bBL/ace+OyhRXcpSte4pUFaNyeTMZ2AcoEg5TXmkOvWEeSYVOztN+nBQKawfrmSnQB/b R4W7mFslTxeqMnPJwPEjqZS0X4pAaqspv4io1BjWWeZjavtM6f4PZsz6/ESsN1AGqbOc IWW/faiwq1pkQTnFRAo3kcqVo1U57LQLoH/fAGWFcgVQ/H9D8MHdSF3/xqyZnNwAxyMG 9KDA== Received: by 10.224.9.193 with SMTP id m1mr112935qam.53.1349140324594; Mon, 01 Oct 2012 18:12:04 -0700 (PDT) Received: from tornado.leadboat.com (ip68-105-236-221.hr.hr.cox.net. [68.105.236.221]) by mx.google.com with ESMTPS id fy1sm32412qab.10.2012.10.01.18.12.02 (version=SSLv3 cipher=OTHER); Mon, 01 Oct 2012 18:12:03 -0700 (PDT) Date: Mon, 1 Oct 2012 21:12:01 -0400 From: Noah Misch To: Brar Piening Cc: Heikki Linnakangas , Magnus Hagander , pgsql-hackers Subject: Re: Visual Studio 2012 RC Message-ID: <20121002011201.GC30396@tornado.leadboat.com> References: <4FCA84F6.5090706@gmx.de> <4FD3F553.9060105@gmx.de> <4FEB0D39.6080108@enterprisedb.com> <50526BA6.3030103@gmx.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <50526BA6.3030103@gmx.de> User-Agent: Mutt/1.5.18 (2008-05-17) X-Gm-Message-State: ALoCoQnLFL5a1BwvtgPvP8XcoBPxZLUrYmB8rjN+usaQqfJR5p0KOXwXy7K7a8SSmbj9c+fVvCgU X-Pg-Spam-Score: -2.6 (--) X-Archive-Number: 201210/82 X-Sequence-Number: 214318 On Fri, Sep 14, 2012 at 01:26:30AM +0200, Brar Piening wrote: > Heikki Linnakangas wrote: >> I don't think we can realistically support VS2012 until Microsoft >> releases the gratis Visual Studio Express 2012 for Windows Desktop. > > As they've released now I've updated my Patch with docs and ask for review. I used this patch to build 64-bit PostgreSQL under Windows 7 Professional, using Visual Studio 2012 Express for Windows Desktop. I did not provide a config.pl, so this build used the defaults -- in particular, it did not exercise linking to optional external projects like perl and libxml2. A "vcregress check" passed. The build emitted no warnings beyond those seen on buildfarm member "chough" (VS 2008 Express). My build log filled 8.8 MiB, a large increase from the 432 KiB of the "chough" build log. This isn't strictly a problem, but do you happen to have ideas for curbing the noise? I find no functional problems with the patch, but some comment updates and other trivia need attention. The patch itself was reversed; it applied cleanly with "patch -R". I regenerated it in the usual direction for the portions I quote below. src/tools/msvc/MSBuildProject.pm:4:# Package that encapsulates a MSBuild (Visual C++ 2010) project file Say something like "Visual C++ 2010 or greater". src/tools/msvc/VSObjectFactory.pm:93:# we use nmake as it has existed for a long time and still exists in visual studio 2010 Likewise, modify this comnent to be open-ended. If nmake ever disappears, we'll be updating this code and can see to change the comment. > *** a/doc/src/sgml/install-windows.sgml > --- b/doc/src/sgml/install-windows.sgml > *************** > *** 22,28 **** > Microsoft tools is to install a supported version of the > Microsoft Windows SDK and use the included > compiler. It is also possible to build with the full > ! Microsoft Visual C++ 2005, 2008 or 2010. In some cases > that requires the installation of the Windows SDK > in addition to the compiler. > > --- 22,28 ---- > Microsoft tools is to install a supported version of the > Microsoft Windows SDK and use the included > compiler. It is also possible to build with the full > ! Microsoft Visual C++ 2005, 2008, 2010 or 2012. In some cases > that requires the installation of the Windows SDK > in addition to the compiler. > I think this paragraph should be more like the one in the next patch hunk: call out Visual Studio 2012 Express for Windows Desktop and Windows SDK 7.1 as the main recommendations. Perhaps even demote the SDK entirely and just recommend VS 2012. It'd odd to recommend only a past-version tool if a current-version tool works just as well. > *************** > *** 77,90 **** > Visual Studio Express or some versions of the > Microsoft Windows SDK. If you do not already have a > Visual Studio environment set up, the easiest > ! way is to use the compilers in the Windows SDK, > ! which is a free download from Microsoft. > > > > PostgreSQL is known to support compilation using the compilers shipped with > Visual Studio 2005 to > ! Visual Studio 2010 (including Express editions), > as well as standalone Windows SDK releases 6.0 to 7.1. > 64-bit PostgreSQL builds are only supported with > Microsoft Windows SDK version 6.0a and above or > --- 77,91 ---- > Visual Studio Express or some versions of the > Microsoft Windows SDK. If you do not already have a > Visual Studio environment set up, the easiest > ! ways are to use the compilers in the Windows SDK I would write "Windows SDK 7.1" here and remove the parenthesized bit. There's a later mention of support for older versions. > ! (<= 7.1) or those from Visual Studio Express 2012 for Windows > ! Desktop, which are both free downloads from Microsoft. > > > > PostgreSQL is known to support compilation using the compilers shipped with > Visual Studio 2005 to > ! Visual Studio 2012 (including Express editions), > as well as standalone Windows SDK releases 6.0 to 7.1. > 64-bit PostgreSQL builds are only supported with > Microsoft Windows SDK version 6.0a and above or > *************** > *** 157,162 **** $ENV{PATH}=$ENV{PATH} . ';c:\some\where\bison\bin'; > --- 158,165 ---- > If you install the Windows SDK > including the Visual C++ Compilers, > you don't need Visual Studio to build. > + Note that as of Version 8.0a the Windows SDK no longer ships with a > + complete command-line build environment. The part ending here looks like this: Microsoft Windows SDK It is recommended that you upgrade to the latest supported version of the Microsoft Windows SDK (currently version 7.1), available for download from . You must always include the Windows Headers and Libraries part of the SDK. If you install the Windows SDK including the Visual C++ Compilers, you don't need Visual Studio to build. Note that as of Version 8.0a the Windows SDK no longer ships with a complete command-line build environment. Since SDK version 7.1 is named as the "latest supported version", I understand from that text that installing SDK version 8.0a along with compilers from another source (VS 2012 full, VS 2012 Express for Desktop) is considered "unsupported" as a PostgreSQL build environment. Is that your intent? > *** a/src/tools/msvc/MSBuildProject.pm > --- b/src/tools/msvc/MSBuildProject.pm > *************** > *** 397,400 **** sub new > --- 397,440 ---- > return $self; > } > > + package VC2012Project; > + > + # > + # Package that encapsulates a Visual C++ 2012 project file > + # > + > + use strict; > + use warnings; > + use base qw(MSBuildProject); > + > + sub new > + { > + my $classname = shift; > + my $self = $classname->SUPER::_new(@_); > + bless($self, $classname); > + > + $self->{vcver} = '11.00'; > + > + return $self; > + } > + > + sub WriteConfigurationPropertyGroup Please add a comment explaining what this override does differently. (I think it just adds the "" element.) > + { > + my ($self, $f, $cfgname, $p) = @_; > + my $cfgtype = > + ($self->{type} eq "exe") > + ?'Application' > + :($self->{type} eq "dll"?'DynamicLibrary':'StaticLibrary'); > + > + print $f < + > + $cfgtype > + false > + MultiByte > + $p->{wholeopt} > + v110 > + > + EOF > + } > + > 1; I'm marking this patch Waiting on Author, but the changes needed to get it Ready for Committer are fairly trivial. Thanks, nm