Staging
v0.8.1
Revision 07fc01f9efa00e04d38d19bb722f65be0a1f39ad authored by R. David Murray on 19 July 2009, 01:59:05 UTC, committed by R. David Murray on 19 July 2009, 01:59:05 UTC
svn+ssh://pythondev@svn.python.org/python/branches/py3k

................
  r74058 | alexandre.vassalotti | 2009-07-17 06:55:50 -0400 (Fri, 17 Jul 2009) | 36 lines

  Merged revisions 73870,73879,73899-73900,73905-73906 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk

  ........
    r73870 | r.david.murray | 2009-07-06 21:06:13 -0400 (Mon, 06 Jul 2009) | 5 lines

    Issue 6070: when creating a compiled file, after copying the mode bits, on
    posix zap the execute bit in case it was set on the .py file, since the
    compiled files are not directly executable on posix.  Patch by Marco N.
  ........
    r73879 | r.david.murray | 2009-07-07 05:54:16 -0400 (Tue, 07 Jul 2009) | 3 lines

    Update issue 6070 patch to match the patch that was actually tested
    on Windows.
  ........
    r73899 | r.david.murray | 2009-07-08 21:43:41 -0400 (Wed, 08 Jul 2009) | 3 lines

    Conditionalize test cleanup code to eliminate traceback, which will
    hopefully reveal the real problem.
  ........
    r73900 | r.david.murray | 2009-07-08 22:06:17 -0400 (Wed, 08 Jul 2009) | 2 lines

    Make test work with -O.
  ........
    r73905 | r.david.murray | 2009-07-09 09:55:44 -0400 (Thu, 09 Jul 2009) | 3 lines

    Specify umask in execute bit test to get consistent results
    and make sure we test resetting all three execute bits.
  ........
    r73906 | r.david.murray | 2009-07-09 11:35:33 -0400 (Thu, 09 Jul 2009) | 5 lines

    Curdir needs to be in the path for the test to work on all buildbots.
    (I copied this from another import test, but currently this will fail if
    TESTFN ends up in /tmp...see issue 2609).
  ........
................
1 parent 8d15643
Raw File
make_buildinfo.c
#include <windows.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>

#define CMD_SIZE 500

/* This file creates the getbuildinfo.o object, by first
   invoking subwcrev.exe (if found), and then invoking cl.exe.
   As a side effect, it might generate PCBuild\getbuildinfo2.c
   also. If this isn't a subversion checkout, or subwcrev isn't
   found, it compiles ..\\Modules\\getbuildinfo.c instead.

   Currently, subwcrev.exe is found from the registry entries
   of TortoiseSVN.

   No attempt is made to place getbuildinfo.o into the proper
   binary directory. This isn't necessary, as this tool is
   invoked as a pre-link step for pythoncore, so that overwrites
   any previous getbuildinfo.o.

*/

int make_buildinfo2()
{
	struct _stat st;
	HKEY hTortoise;
	char command[CMD_SIZE+1];
	DWORD type, size;
	if (_stat(".svn", &st) < 0)
		return 0;
	/* Allow suppression of subwcrev.exe invocation if a no_subwcrev file is present. */
	if (_stat("no_subwcrev", &st) == 0)
		return 0;
	if (RegOpenKey(HKEY_LOCAL_MACHINE, "Software\\TortoiseSVN", &hTortoise) != ERROR_SUCCESS &&
	    RegOpenKey(HKEY_CURRENT_USER, "Software\\TortoiseSVN", &hTortoise) != ERROR_SUCCESS)
		/* Tortoise not installed */
		return 0;
	command[0] = '"';  /* quote the path to the executable */
	size = sizeof(command) - 1;
	if (RegQueryValueEx(hTortoise, "Directory", 0, &type, command+1, &size) != ERROR_SUCCESS ||
	    type != REG_SZ)
		/* Registry corrupted */
		return 0;
	strcat_s(command, CMD_SIZE, "bin\\subwcrev.exe");
	if (_stat(command+1, &st) < 0)
		/* subwcrev.exe not part of the release */
		return 0;
	strcat_s(command, CMD_SIZE, "\" .. ..\\Modules\\getbuildinfo.c getbuildinfo2.c");
	puts(command); fflush(stdout);
	if (system(command) < 0)
		return 0;
	return 1;
}

int main(int argc, char*argv[])
{
	char command[500] = "cl.exe -c -D_WIN32 -DUSE_DL_EXPORT -D_WINDOWS -DWIN32 -D_WINDLL ";
	int do_unlink, result;
	if (argc != 2) {
		fprintf(stderr, "make_buildinfo $(ConfigurationName)\n");
		return EXIT_FAILURE;
	}
	if (strcmp(argv[1], "Release") == 0) {
		strcat_s(command, CMD_SIZE, "-MD ");
	}
	else if (strcmp(argv[1], "Debug") == 0) {
		strcat_s(command, CMD_SIZE, "-D_DEBUG -MDd ");
	}
	else if (strcmp(argv[1], "ReleaseItanium") == 0) {
		strcat_s(command, CMD_SIZE, "-MD /USECL:MS_ITANIUM ");
	}
	else if (strcmp(argv[1], "ReleaseAMD64") == 0) {
		strcat_s(command, CMD_SIZE, "-MD ");
		strcat_s(command, CMD_SIZE, "-MD /USECL:MS_OPTERON ");
	}
	else {
		fprintf(stderr, "unsupported configuration %s\n", argv[1]);
		return EXIT_FAILURE;
	}

	if ((do_unlink = make_buildinfo2()))
		strcat_s(command, CMD_SIZE, "getbuildinfo2.c -DSUBWCREV ");
	else
		strcat_s(command, CMD_SIZE, "..\\Modules\\getbuildinfo.c");
	strcat_s(command, CMD_SIZE, " -Fogetbuildinfo.o -I..\\Include -I..\\PC");
	puts(command); fflush(stdout);
	result = system(command);
	if (do_unlink)
		_unlink("getbuildinfo2.c");
	if (result < 0)
		return EXIT_FAILURE;
	return 0;
}
back to top