summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/library/hashlib.rst4
-rw-r--r--Lib/distutils/sysconfig.py7
-rw-r--r--Lib/hashlib.py3
-rwxr-xr-xLib/test/regrtest.py8
-rw-r--r--Lib/test/test_import.py14
-rw-r--r--Lib/test/test_int_literal.py4
-rw-r--r--Lib/test/test_nis.py10
-rw-r--r--Lib/test/test_posix.py28
-rw-r--r--Lib/test/test_print.py14
-rw-r--r--Lib/test/test_winsound.py36
-rw-r--r--Lib/test/test_zlib.py7
-rw-r--r--Lib/zipfile.py68
-rw-r--r--Misc/ACKS1
-rw-r--r--Misc/developers.txt2
-rw-r--r--Modules/binascii.c2
-rw-r--r--Modules/posixmodule.c4
-rw-r--r--Objects/abstract.c5
-rw-r--r--Objects/cellobject.c14
-rw-r--r--PCbuild/_bsddb.vcproj43
-rw-r--r--PCbuild/_sqlite3.vcproj26
-rw-r--r--PCbuild/_tkinter.vcproj12
-rw-r--r--PCbuild/pcbuild.sln38
-rw-r--r--PCbuild/pyproject.vsprops38
-rw-r--r--Python/ast.c4
-rw-r--r--Tools/buildbot/external-amd64.bat51
-rw-r--r--Tools/buildbot/external.bat49
26 files changed, 277 insertions, 215 deletions
diff --git a/Doc/library/hashlib.rst b/Doc/library/hashlib.rst
index a725e07..f1f5237 100644
--- a/Doc/library/hashlib.rst
+++ b/Doc/library/hashlib.rst
@@ -19,6 +19,10 @@ algorithm (defined in Internet :rfc:`1321`). The terms "secure hash" and
"message digest" are interchangeable. Older algorithms were called message
digests. The modern term is secure hash.
+.. note::
+ If you want the adler32 or crc32 hash functions they are available in
+ the :mod:`zlib` module.
+
.. warning::
Some algorithms have known hash collision weaknesses, see the FAQ at the end.
diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
index 39216a5..d2b2c9a 100644
--- a/Lib/distutils/sysconfig.py
+++ b/Lib/distutils/sysconfig.py
@@ -23,7 +23,8 @@ PREFIX = os.path.normpath(sys.prefix)
EXEC_PREFIX = os.path.normpath(sys.exec_prefix)
# Path to the base directory of the project. On Windows the binary may
-# live in project/PCBuild9
+# live in project/PCBuild9. If we're dealing with an x64 Windows build,
+# it'll live in project/PCbuild/amd64.
project_base = os.path.dirname(os.path.abspath(sys.executable))
if os.name == "nt" and "pcbuild" in project_base[-8:].lower():
project_base = os.path.abspath(os.path.join(project_base, os.path.pardir))
@@ -31,6 +32,10 @@ if os.name == "nt" and "pcbuild" in project_base[-8:].lower():
if os.name == "nt" and "\\pc\\v" in project_base[-10:].lower():
project_base = os.path.abspath(os.path.join(project_base, os.path.pardir,
os.path.pardir))
+# PC/AMD64
+if os.name == "nt" and "\\pcbuild\\amd64" in project_base[-14:].lower():
+ project_base = os.path.abspath(os.path.join(project_base, os.path.pardir,
+ os.path.pardir))
# python_build: (Boolean) if true, we're either building Python or
# building an extension with an un-installed Python, so we use
diff --git a/Lib/hashlib.py b/Lib/hashlib.py
index a39cb57..efe66ec 100644
--- a/Lib/hashlib.py
+++ b/Lib/hashlib.py
@@ -18,6 +18,9 @@ md5(), sha1(), sha224(), sha256(), sha384(), and sha512()
More algorithms may be available on your platform but the above are
guaranteed to exist.
+NOTE: If you want the adler32 or crc32 hash functions they are available in
+the zlib module.
+
Choose your hash function wisely. Some have known collision weaknesses.
sha384 and sha512 will be slow on 32 bit platforms.
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index 2212af5..100b26f 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -1157,6 +1157,14 @@ class _ExpectedSkips:
if sys.platform != 'sunos5':
self.expected.add('test_nis')
+ # TODO: This is a hack to raise TestSkipped if -3 is not enabled.
+ # Instead of relying on callable to have a warning, we should expose
+ # the -3 flag to Python code somehow
+ with test_support.catch_warning() as w:
+ callable(int)
+ if w.message is None:
+ self.expected.add('test_py3kwarn')
+
self.valid = True
def isvalid(self):
diff --git a/Lib/test/test_import.py b/Lib/test/test_import.py
index 6eac67e..fe1da52 100644
--- a/Lib/test/test_import.py
+++ b/Lib/test/test_import.py
@@ -255,8 +255,20 @@ class PathsTests(unittest.TestCase):
self.assertEqual(mod.testdata, 'test_trailing_slash')
unload("test_trailing_slash")
+class RelativeImport(unittest.TestCase):
+ def tearDown(self):
+ try:
+ del sys.modules["test.relimport"]
+ except:
+ pass
+
+ def test_relimport_star(self):
+ # This will import * from .test_import.
+ from . import relimport
+ self.assertTrue(hasattr(relimport, "RelativeImport"))
+
def test_main(verbose=None):
- run_unittest(ImportTest, PathsTests)
+ run_unittest(ImportTest, PathsTests, RelativeImport)
if __name__ == '__main__':
test_main()
diff --git a/Lib/test/test_int_literal.py b/Lib/test/test_int_literal.py
index c9ad2a3..9bd0c41 100644
--- a/Lib/test/test_int_literal.py
+++ b/Lib/test/test_int_literal.py
@@ -6,7 +6,7 @@ This is complex because of changes due to PEP 237.
import unittest
from test import test_support
-class TextHexOctBin(unittest.TestCase):
+class TestHexOctBin(unittest.TestCase):
def test_hex_baseline(self):
# A few upper/lowercase tests
@@ -141,7 +141,7 @@ class TextHexOctBin(unittest.TestCase):
self.assertEqual(-0b1111111111111111111111111111111111111111111111111111111111111111, -18446744073709551615)
def test_main():
- test_support.run_unittest(TextHexOctBin)
+ test_support.run_unittest(TestHexOctBin)
if __name__ == "__main__":
test_main()
diff --git a/Lib/test/test_nis.py b/Lib/test/test_nis.py
index 55dd32c..757edd6 100644
--- a/Lib/test/test_nis.py
+++ b/Lib/test/test_nis.py
@@ -1,4 +1,4 @@
-from test.test_support import verbose, run_unittest
+from test import test_support
import unittest
import nis
@@ -8,8 +8,10 @@ class NisTests(unittest.TestCase):
maps = nis.maps()
except nis.error as msg:
# NIS is probably not active, so this test isn't useful
- if verbose:
- self.fail("(failing because of verbose mode) %s" % msg)
+ if test_support.verbose:
+ print("Test Skipped:", msg)
+ # Can't raise TestSkipped as regrtest only recognizes the exception
+ # import time.
return
try:
# On some systems, this map is only accessible to the
@@ -35,7 +37,7 @@ class NisTests(unittest.TestCase):
break
def test_main():
- run_unittest(NisTests)
+ test_support.run_unittest(NisTests)
if __name__ == '__main__':
test_main()
diff --git a/Lib/test/test_posix.py b/Lib/test/test_posix.py
index 13f8f9e..57e9d15 100644
--- a/Lib/test/test_posix.py
+++ b/Lib/test/test_posix.py
@@ -9,6 +9,7 @@ except ImportError:
import time
import os
+import pwd
import unittest
import warnings
warnings.filterwarnings('ignore', '.* potential security risk .*',
@@ -141,6 +142,33 @@ class PosixTester(unittest.TestCase):
if hasattr(posix, 'stat'):
self.assert_(posix.stat(test_support.TESTFN))
+ if hasattr(posix, 'chown'):
+ def test_chown(self):
+ # raise an OSError if the file does not exist
+ os.unlink(test_support.TESTFN)
+ self.assertRaises(OSError, posix.chown, test_support.TESTFN, -1, -1)
+
+ # re-create the file
+ open(test_support.TESTFN, 'w').close()
+ if os.getuid() == 0:
+ try:
+ # Many linux distros have a nfsnobody user as MAX_UID-2
+ # that makes a good test case for signedness issues.
+ # http://bugs.python.org/issue1747858
+ # This part of the test only runs when run as root.
+ # Only scary people run their tests as root.
+ ent = pwd.getpwnam('nfsnobody')
+ posix.chown(test_support.TESTFN, ent.pw_uid, ent.pw_gid)
+ except KeyError:
+ pass
+ else:
+ # non-root cannot chown to root, raises OSError
+ self.assertRaises(OSError, posix.chown,
+ test_support.TESTFN, 0, 0)
+
+ # test a successful chown call
+ posix.chown(test_support.TESTFN, os.getuid(), os.getgid())
+
def test_chdir(self):
if hasattr(posix, 'chdir'):
posix.chdir(os.curdir)
diff --git a/Lib/test/test_print.py b/Lib/test/test_print.py
index baeab3d..10ef60a 100644
--- a/Lib/test/test_print.py
+++ b/Lib/test/test_print.py
@@ -12,8 +12,6 @@ except ImportError:
# 2.x
from StringIO import StringIO
-from contextlib import contextmanager
-
NotDefined = object()
# A dispatch table all 8 combinations of providing
@@ -40,15 +38,6 @@ dispatch = {
lambda args, sep, end, file: print(sep=sep, end=end, file=file, *args),
}
-@contextmanager
-def stdout_redirected(new_stdout):
- save_stdout = sys.stdout
- sys.stdout = new_stdout
- try:
- yield None
- finally:
- sys.stdout = save_stdout
-
# Class used to test __str__ and print
class ClassWith__str__:
def __init__(self, x):
@@ -69,8 +58,7 @@ class TestPrint(unittest.TestCase):
end is not NotDefined,
file is not NotDefined)]
- t = StringIO()
- with stdout_redirected(t):
+ with test_support.captured_stdout() as t:
fn(args, sep, end, file)
self.assertEqual(t.getvalue(), expected)
diff --git a/Lib/test/test_winsound.py b/Lib/test/test_winsound.py
index 7cdc275..dac569c 100644
--- a/Lib/test/test_winsound.py
+++ b/Lib/test/test_winsound.py
@@ -23,25 +23,27 @@ class BeepTest(unittest.TestCase):
self.assertRaises(ValueError, winsound.Beep, 32768, 75)
def test_extremes(self):
- if _have_soundcard():
- winsound.Beep(37, 75)
- winsound.Beep(32767, 75)
- else:
- # The behaviour of winsound.Beep() seems to differ between
- # different versions of Windows when there's either a) no
- # sound card entirely, b) legacy beep driver has been disabled,
- # or c) the legacy beep driver has been uninstalled. Sometimes
- # RuntimeErrors are raised, sometimes they're not. Meh.
- try:
- winsound.Beep(37, 75)
- winsound.Beep(32767, 75)
- except RuntimeError:
- pass
+ self._beep(37, 75)
+ self._beep(32767, 75)
def test_increasingfrequency(self):
- if _have_soundcard():
- for i in range(100, 2000, 100):
- winsound.Beep(i, 75)
+ for i in xrange(100, 2000, 100):
+ self._beep(i, 75)
+
+ def _beep(self, *args):
+ # these tests used to use _have_soundcard(), but it's quite
+ # possible to have a soundcard, and yet have the beep driver
+ # disabled. So basically, we have no way of knowing whether
+ # a beep should be produced or not, so currently if these
+ # tests fail we're ignoring them
+ #
+ # XXX the right fix for this is to define something like
+ # _have_enabled_beep_driver() and use that instead of the
+ # try/except below
+ try:
+ winsound.Beep(*args)
+ except RuntimeError:
+ pass
class MessageBeepTest(unittest.TestCase):
diff --git a/Lib/test/test_zlib.py b/Lib/test/test_zlib.py
index 0adf507..d2fd504 100644
--- a/Lib/test/test_zlib.py
+++ b/Lib/test/test_zlib.py
@@ -1,6 +1,7 @@
import unittest
from test import test_support
import zlib
+import binascii
import random
@@ -46,6 +47,12 @@ class ChecksumTestCase(unittest.TestCase):
self.assertEqual(zlib.adler32(foo+foo), 3573550353)
self.assertEqual(zlib.adler32('spam'), 72286642)
+ def test_same_as_binascii_crc32(self):
+ foo = 'abcdefghijklmnop'
+ crc = -1808088941
+ self.assertEqual(binascii.crc32(foo), crc)
+ self.assertEqual(zlib.crc32(foo), crc)
+ self.assertEqual(binascii.crc32('spam'), zlib.crc32('spam'))
diff --git a/Lib/zipfile.py b/Lib/zipfile.py
index 2865c0a..719ed44 100644
--- a/Lib/zipfile.py
+++ b/Lib/zipfile.py
@@ -8,8 +8,10 @@ import binascii, io
try:
import zlib # We may need its compression method
+ crc32 = zlib.crc32
except ImportError:
zlib = None
+ crc32 = binascii.crc32
__all__ = ["BadZipfile", "error", "ZIP_STORED", "ZIP_DEFLATED", "is_zipfile",
"ZipInfo", "ZipFile", "PyZipFile", "LargeZipFile" ]
@@ -36,13 +38,13 @@ ZIP_DEFLATED = 8
# Here are some struct module formats for reading headers
structEndArchive = "<4s4H2LH" # 9 items, end of archive, 22 bytes
stringEndArchive = b"PK\005\006" # magic number for end of archive record
-structCentralDir = "<4s4B4HlLL5HLL"# 19 items, central directory, 46 bytes
+structCentralDir = "<4s4B4HLLL5HLL"# 19 items, central directory, 46 bytes
stringCentralDir = b"PK\001\002" # magic number for central directory
-structFileHeader = "<4s2B4HlLL2H" # 12 items, file header record, 30 bytes
+structFileHeader = "<4s2B4HLLL2H" # 12 items, file header record, 30 bytes
stringFileHeader = b"PK\003\004" # magic number for file header
-structEndArchive64Locator = "<4slql" # 4 items, locate Zip64 header, 20 bytes
+structEndArchive64Locator = "<4sLQL" # 4 items, locate Zip64 header, 20 bytes
stringEndArchive64Locator = b"PK\x06\x07" # magic token for locator header
-structEndArchive64 = "<4sqhhllqqqq" # 10 items, end of archive (Zip64), 56 bytes
+structEndArchive64 = "<4sQHHLLQQQQ" # 10 items, end of archive (Zip64), 56 bytes
stringEndArchive64 = b"PK\x06\x06" # magic token for Zip64 header
@@ -140,7 +142,7 @@ def _EndRecData(fpin):
endrec = list(endrec)
endrec.append("") # Append the archive comment
endrec.append(filesize - 22) # Append the record start offset
- if endrec[-4] == -1 or endrec[-4] == 0xffffffff:
+ if endrec[-4] == 0xffffffff:
return _EndRecData64(fpin, -22, endrec)
return endrec
# Search the last END_BLOCK bytes of the file for the record signature.
@@ -160,7 +162,7 @@ def _EndRecData(fpin):
# Append the archive comment and start offset
endrec.append(comment)
endrec.append(filesize - END_BLOCK + start)
- if endrec[-4] == -1 or endrec[-4] == 0xffffffff:
+ if endrec[-4] == 0xffffffff:
return _EndRecData64(fpin, - END_BLOCK + start, endrec)
return endrec
return # Error, return None
@@ -247,7 +249,7 @@ class ZipInfo (object):
if file_size > ZIP64_LIMIT or compress_size > ZIP64_LIMIT:
# File is larger than what fits into a 4 byte integer,
# fall back to the ZIP64 extension
- fmt = '<hhqq'
+ fmt = '<HHQQ'
extra = extra + struct.pack(fmt,
1, struct.calcsize(fmt)-4, file_size, compress_size)
file_size = 0xffffffff # -1
@@ -267,14 +269,14 @@ class ZipInfo (object):
extra = self.extra
unpack = struct.unpack
while extra:
- tp, ln = unpack('<hh', extra[:4])
+ tp, ln = unpack('<HH', extra[:4])
if tp == 1:
if ln >= 24:
- counts = unpack('<qqq', extra[4:28])
+ counts = unpack('<QQQ', extra[4:28])
elif ln == 16:
- counts = unpack('<qq', extra[4:20])
+ counts = unpack('<QQ', extra[4:20])
elif ln == 8:
- counts = unpack('<q', extra[4:12])
+ counts = unpack('<Q', extra[4:12])
elif ln == 0:
counts = ()
else:
@@ -283,7 +285,8 @@ class ZipInfo (object):
idx = 0
# ZIP64 extension (large files and/or large archives)
- if self.file_size == -1 or self.file_size == 0xFFFFFFFF:
+ # XXX Is this correct? won't this exclude 2**32-1 byte files?
+ if self.file_size in (0xffffffffffffffff, 0xffffffff):
self.file_size = counts[idx]
idx += 1
@@ -950,7 +953,7 @@ class ZipFile:
if not buf:
break
file_size = file_size + len(buf)
- CRC = binascii.crc32(buf, CRC)
+ CRC = crc32(buf, CRC) & 0xffffffff
if cmpr:
buf = cmpr.compress(buf)
compress_size = compress_size + len(buf)
@@ -968,7 +971,7 @@ class ZipFile:
# Seek backwards and write CRC and file sizes
position = self.fp.tell() # Preserve current position in file
self.fp.seek(zinfo.header_offset + 14, 0)
- self.fp.write(struct.pack("<lLL", zinfo.CRC, zinfo.compress_size,
+ self.fp.write(struct.pack("<LLL", zinfo.CRC, zinfo.compress_size,
zinfo.file_size))
self.fp.seek(position, 0)
self.filelist.append(zinfo)
@@ -997,7 +1000,7 @@ class ZipFile:
zinfo.header_offset = self.fp.tell() # Start of header data
self._writecheck(zinfo)
self._didModify = True
- zinfo.CRC = binascii.crc32(data) # CRC-32 checksum
+ zinfo.CRC = crc32(data) & 0xffffffff # CRC-32 checksum
if zinfo.compress_type == ZIP_DEFLATED:
co = zlib.compressobj(zlib.Z_DEFAULT_COMPRESSION,
zlib.DEFLATED, -15)
@@ -1047,7 +1050,7 @@ class ZipFile:
if zinfo.header_offset > ZIP64_LIMIT:
extra.append(zinfo.header_offset)
- header_offset = -1 # struct "l" format: 32 one bits
+ header_offset = 0xffffffff # -1 32 bit
else:
header_offset = zinfo.header_offset
@@ -1055,7 +1058,7 @@ class ZipFile:
if extra:
# Append a ZIP64 field to the extra's
extra_data = struct.pack(
- '<hh' + 'q'*len(extra),
+ '<HH' + 'Q'*len(extra),
1, 8*len(extra), *extra) + extra_data
extract_version = max(45, zinfo.extract_version)
@@ -1064,14 +1067,25 @@ class ZipFile:
extract_version = zinfo.extract_version
create_version = zinfo.create_version
- centdir = struct.pack(structCentralDir,
- stringCentralDir, create_version,
- zinfo.create_system, extract_version, zinfo.reserved,
- zinfo.flag_bits, zinfo.compress_type, dostime, dosdate,
- zinfo.CRC, compress_size, file_size,
- len(zinfo.filename), len(extra_data), len(zinfo.comment),
- 0, zinfo.internal_attr, zinfo.external_attr,
- header_offset)
+ try:
+ centdir = struct.pack(structCentralDir,
+ stringCentralDir, create_version,
+ zinfo.create_system, extract_version, zinfo.reserved,
+ zinfo.flag_bits, zinfo.compress_type, dostime, dosdate,
+ zinfo.CRC, compress_size, file_size,
+ len(zinfo.filename), len(extra_data), len(zinfo.comment),
+ 0, zinfo.internal_attr, zinfo.external_attr,
+ header_offset)
+ except DeprecationWarning:
+ print >>sys.stderr, (structCentralDir,
+ stringCentralDir, create_version,
+ zinfo.create_system, extract_version, zinfo.reserved,
+ zinfo.flag_bits, zinfo.compress_type, dostime, dosdate,
+ zinfo.CRC, compress_size, file_size,
+ len(zinfo.filename), len(extra_data), len(zinfo.comment),
+ 0, zinfo.internal_attr, zinfo.external_attr,
+ header_offset)
+ raise
self.fp.write(centdir)
self.fp.write(zinfo.filename.encode("utf-8"))
self.fp.write(extra_data)
@@ -1091,10 +1105,8 @@ class ZipFile:
stringEndArchive64Locator, 0, pos2, 1)
self.fp.write(zip64locrec)
- # XXX Why is `pos3` computed next? It's never referenced.
- pos3 = self.fp.tell()
endrec = struct.pack(structEndArchive, stringEndArchive,
- 0, 0, count, count, pos2 - pos1, -1, 0)
+ 0, 0, count, count, pos2 - pos1, 0xffffffff, 0)
self.fp.write(endrec)
else:
diff --git a/Misc/ACKS b/Misc/ACKS
index 8d31113..dbc86df 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -736,6 +736,7 @@ Lars Wirzenius
Stefan Witzel
Klaus-Juergen Wolf
Dan Wolfe
+David Wolever
Richard Wolff
Gordon Worley
Thomas Wouters
diff --git a/Misc/developers.txt b/Misc/developers.txt
index 7c9df33..d161e76 100644
--- a/Misc/developers.txt
+++ b/Misc/developers.txt
@@ -17,6 +17,8 @@ the format to accommodate documentation needs as they arise.
Permissions History
-------------------
+- Jeff Rush was given SVN access on 18 March 2008 by AMK, for Distutils work.
+
- David Wolever was given SVN access on 17 March 2008 by MvL,
for 2to3 work.
diff --git a/Modules/binascii.c b/Modules/binascii.c
index 5f8705d..2b4b352 100644
--- a/Modules/binascii.c
+++ b/Modules/binascii.c
@@ -902,7 +902,7 @@ binascii_crc32(PyObject *self, PyObject *args)
Py_ssize_t len;
long result;
- if ( !PyArg_ParseTuple(args, "s#|l:crc32", &bin_data, &len, &crc) )
+ if ( !PyArg_ParseTuple(args, "s#|k:crc32", &bin_data, &len, &crc) )
return NULL;
crc = ~ crc;
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 3e91f00..716bf7d 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -1906,9 +1906,9 @@ static PyObject *
posix_chown(PyObject *self, PyObject *args)
{
char *path = NULL;
- int uid, gid;
+ long uid, gid;
int res;
- if (!PyArg_ParseTuple(args, "etii:chown",
+ if (!PyArg_ParseTuple(args, "etll:chown",
Py_FileSystemDefaultEncoding, &path,
&uid, &gid))
return NULL;
diff --git a/Objects/abstract.c b/Objects/abstract.c
index c0298a8..dd05fe1 100644
--- a/Objects/abstract.c
+++ b/Objects/abstract.c
@@ -2600,6 +2600,11 @@ PyObject_IsInstance(PyObject *inst, PyObject *cls)
static PyObject *name = NULL;
PyObject *t, *v, *tb;
PyObject *checker;
+
+ /* Quick test for an exact match */
+ if (Py_TYPE(inst) == (PyTypeObject *)cls)
+ return 1;
+
PyErr_Fetch(&t, &v, &tb);
if (name == NULL) {
diff --git a/Objects/cellobject.c b/Objects/cellobject.c
index 490afe0..50a3897 100644
--- a/Objects/cellobject.c
+++ b/Objects/cellobject.c
@@ -51,6 +51,18 @@ cell_dealloc(PyCellObject *op)
PyObject_GC_Del(op);
}
+static int
+cell_compare(PyCellObject *a, PyCellObject *b)
+{
+ if (a->ob_ref == NULL) {
+ if (b->ob_ref == NULL)
+ return 0;
+ return -1;
+ } else if (b->ob_ref == NULL)
+ return 1;
+ return PyObject_Compare(a->ob_ref, b->ob_ref);
+}
+
static PyObject *
cell_repr(PyCellObject *op)
{
@@ -102,7 +114,7 @@ PyTypeObject PyCell_Type = {
0, /* tp_print */
0, /* tp_getattr */
0, /* tp_setattr */
- 0, /* tp_compare */
+ (cmpfunc)cell_compare, /* tp_compare */
(reprfunc)cell_repr, /* tp_repr */
0, /* tp_as_number */
0, /* tp_as_sequence */
diff --git a/PCbuild/_bsddb.vcproj b/PCbuild/_bsddb.vcproj
index 3efdcce..f9d77e8 100644
--- a/PCbuild/_bsddb.vcproj
+++ b/PCbuild/_bsddb.vcproj
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
- Version="9,00"
+ Version="9.00"
Name="_bsddb"
ProjectGUID="{B4D38F3F-68FB-42EC-A45D-E00657BB3627}"
RootNamespace="_bsddb"
@@ -42,7 +42,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="$(bsddbDir)"
+ AdditionalIncludeDirectories="$(bsddbDir),$(bsddbDir)\.."
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -52,11 +52,9 @@
/>
<Tool
Name="VCPreLinkEventTool"
- CommandLine="cd $(bsddbDir)&#x0D;&#x0A;if exist Debug\libdb44sd.lib exit 0&#x0D;&#x0A;vcbuild /useenv db_static.vcproj &quot;Debug|Win32&quot;&#x0D;&#x0A;"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="$(bsddbDir)\Debug\libdb44sd.lib"
BaseAddress="0x1e180000"
/>
<Tool
@@ -105,7 +103,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="$(bsddbDir)"
+ AdditionalIncludeDirectories="$(bsddbDir),$(bsddbDir)\.."
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -115,11 +113,11 @@
/>
<Tool
Name="VCPreLinkEventTool"
- CommandLine="cd $(bsddbDir)&#x0D;&#x0A;if exist &quot;x64\Debug AMD64\db_static.lib&quot; exit 0&#x0D;&#x0A;vcbuild /useenv db_static.vcproj &quot;Debug AMD64|x64&quot;&#x0D;&#x0A;"
+ CommandLine=""
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="&quot;$(bsddbDir)x64\Debug AMD64\db_static.lib&quot;"
+ AdditionalDependencies="$(bsddbDepLibs)"
BaseAddress="0x1e180000"
/>
<Tool
@@ -168,7 +166,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="$(bsddbDir)"
+ AdditionalIncludeDirectories="$(bsddbDir),$(bsddbDir)\.."
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -178,11 +176,10 @@
/>
<Tool
Name="VCPreLinkEventTool"
- CommandLine="cd $(bsddbDir)&#x0D;&#x0A;if exist Release\libdb44s.lib exit 0&#x0D;&#x0A;vcbuild /useenv db_static.vcproj &quot;Release|Win32&quot;&#x0D;&#x0A;"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="$(bsddbDir)\Release\libdb44s.lib"
+ AdditionalDependencies="$(bsddbDepLibs)"
BaseAddress="0x1e180000"
/>
<Tool
@@ -232,7 +229,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="$(bsddbDir)"
+ AdditionalIncludeDirectories="$(bsddbDir),$(bsddbDir)\.."
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -242,11 +239,11 @@
/>
<Tool
Name="VCPreLinkEventTool"
- CommandLine="cd $(bsddbDir)&#x0D;&#x0A;if exist x64\Release AMD64\db_static.lib exit 0&#x0D;&#x0A;vcbuild /useenv db_static.vcproj &quot;Release AMD64|Win32&quot;&#x0D;&#x0A;"
+ CommandLine=""
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="$(bsddbDir)x64\Release AMD64\db_static.lib"
+ AdditionalDependencies="$(bsddbDepLibs)"
BaseAddress="0x1e180000"
/>
<Tool
@@ -295,7 +292,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="$(bsddbDir)"
+ AdditionalIncludeDirectories="$(bsddbDir),$(bsddbDir)\.."
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -305,11 +302,10 @@
/>
<Tool
Name="VCPreLinkEventTool"
- CommandLine="cd $(bsddbDir)&#x0D;&#x0A;if exist Release\libdb44s.lib exit 0&#x0D;&#x0A;vcbuild /useenv db_static.vcproj &quot;Release|Win32&quot;&#x0D;&#x0A;"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="$(bsddbDir)\Release\libdb44s.lib"
+ AdditionalDependencies="$(bsddbDepLibs)"
BaseAddress="0x1e180000"
/>
<Tool
@@ -359,7 +355,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="$(bsddbDir)"
+ AdditionalIncludeDirectories="$(bsddbDir),$(bsddbDir)\.."
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -369,11 +365,10 @@
/>
<Tool
Name="VCPreLinkEventTool"
- CommandLine="cd $(bsddbDir)&#x0D;&#x0A;if exist &quot;x64\Release AMD64\db_static.lib&quot; exit 0&#x0D;&#x0A;vcbuild /useenv db_static.vcproj &quot;Release AMD64|Win32&quot;&#x0D;&#x0A;"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="$(bsddbDir)x64\Release AMD64\db_static.lib"
+ AdditionalDependencies="$(bsddbDepLibs)"
BaseAddress="0x1e180000"
TargetMachine="17"
/>
@@ -423,7 +418,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="$(bsddbDir)"
+ AdditionalIncludeDirectories="$(bsddbDir),$(bsddbDir)\.."
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -433,11 +428,10 @@
/>
<Tool
Name="VCPreLinkEventTool"
- CommandLine="cd $(bsddbDir)&#x0D;&#x0A;if exist Release\libdb44s.lib exit 0&#x0D;&#x0A;vcbuild /useenv db_static.vcproj &quot;Release|Win32&quot;&#x0D;&#x0A;"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="$(bsddbDir)\Release\libdb44s.lib"
+ AdditionalDependencies="$(bsddbDepLibs)"
BaseAddress="0x1e180000"
/>
<Tool
@@ -487,7 +481,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="$(bsddbDir)"
+ AdditionalIncludeDirectories="$(bsddbDir),$(bsddbDir)\.."
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -497,11 +491,10 @@
/>
<Tool
Name="VCPreLinkEventTool"
- CommandLine="cd $(bsddbDir)&#x0D;&#x0A;if exist x64\Release AMD64\db_static.lib exit 0&#x0D;&#x0A;vcbuild /useenv db_static.vcproj &quot;Release AMD64|Win32&quot;&#x0D;&#x0A;"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="$(bsddbDir)x64\Release AMD64\db_static.lib"
+ AdditionalDependencies="$(bsddbDepLibs)"
BaseAddress="0x1e180000"
TargetMachine="17"
/>
diff --git a/PCbuild/_sqlite3.vcproj b/PCbuild/_sqlite3.vcproj
index 646c545..19d5497 100644
--- a/PCbuild/_sqlite3.vcproj
+++ b/PCbuild/_sqlite3.vcproj
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
- Version="9,00"
+ Version="9.00"
Name="_sqlite3"
ProjectGUID="{13CECB97-4119-4316-9D42-8534019A5A44}"
RootNamespace="_sqlite3"
@@ -53,12 +53,9 @@
/>
<Tool
Name="VCPreLinkEventTool"
- Description="Build sqlite3 libs and dll"
- CommandLine="cd &quot;$(sqlite3Dir)&quot;&#x0D;&#x0A;if not exist &quot;$(OutDir)\sqlite3.dll&quot; if exist $(PlatformName)\sqlite3.dll copy $(PlatformName)\sqlite3.dll &quot;$(OutDir)&quot;&#x0D;&#x0A;if exist $(PlatformName)\sqlite3.lib exit 0&#x0D;&#x0A;if not exist $(PlatformName) mkdir $(PlatformName)&#x0D;&#x0A;cd $(PlatformName)&#x0D;&#x0A;cl /DNO_TCL /Ox /Ob1 /Oi /GL /GF /FD /MD /Gy ..\*.c&#x0D;&#x0A;link /INCREMENTAL:NO /NOLOGO /DLL /OPT:REF /OPT:ICF /def:..\sqlite3.def /dll /out:sqlite3.dll *.obj&#x0D;&#x0A;if not exist &quot;$(OutDir)\sqlite3.dll&quot; copy sqlite3.dll &quot;$(OutDir)&quot;&#x0D;&#x0A;"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="$(sqlite3Dir)\$(PlatformName)\sqlite3.lib"
BaseAddress="0x1e180000"
/>
<Tool
@@ -118,12 +115,9 @@
/>
<Tool
Name="VCPreLinkEventTool"
- Description="Build sqlite3 libs and dll"
- CommandLine="cd &quot;$(sqlite3Dir)&quot;&#x0D;&#x0A;if not exist &quot;$(OutDir)\sqlite3.dll&quot; if exist $(PlatformName)\sqlite3.dll copy $(PlatformName)\sqlite3.dll &quot;$(OutDir)&quot;&#x0D;&#x0A;if exist $(PlatformName)\sqlite3.lib exit 0&#x0D;&#x0A;if not exist $(PlatformName) mkdir $(PlatformName)&#x0D;&#x0A;cd $(PlatformName)&#x0D;&#x0A;cl /DNO_TCL /Ox /Ob1 /Oi /GL /GF /FD /MD /Gy ..\*.c&#x0D;&#x0A;link /INCREMENTAL:NO /NOLOGO /DLL /OPT:REF /OPT:ICF /def:..\sqlite3.def /dll /out:sqlite3.dll *.obj&#x0D;&#x0A;if not exist &quot;$(OutDir)\sqlite3.dll&quot; copy sqlite3.dll &quot;$(OutDir)&quot;&#x0D;&#x0A;"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="$(sqlite3Dir)\$(PlatformName)\sqlite3.lib"
BaseAddress="0x1e180000"
/>
<Tool
@@ -183,12 +177,9 @@
/>
<Tool
Name="VCPreLinkEventTool"
- Description="Build sqlite3 libs and dll"
- CommandLine="cd &quot;$(sqlite3Dir)&quot;&#x0D;&#x0A;if not exist &quot;$(OutDir)\sqlite3.dll&quot; if exist $(PlatformName)\sqlite3.dll copy $(PlatformName)\sqlite3.dll &quot;$(OutDir)&quot;&#x0D;&#x0A;if exist $(PlatformName)\sqlite3.lib exit 0&#x0D;&#x0A;if not exist $(PlatformName) mkdir $(PlatformName)&#x0D;&#x0A;cd $(PlatformName)&#x0D;&#x0A;cl /DNO_TCL /Ox /Ob1 /Oi /GL /GF /FD /MD /Gy ..\*.c&#x0D;&#x0A;link /INCREMENTAL:NO /NOLOGO /DLL /OPT:REF /OPT:ICF /def:..\sqlite3.def /dll /out:sqlite3.dll *.obj&#x0D;&#x0A;if not exist &quot;$(OutDir)\sqlite3.dll&quot; copy sqlite3.dll &quot;$(OutDir)&quot;&#x0D;&#x0A;"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="$(sqlite3Dir)\$(PlatformName)\sqlite3.lib"
BaseAddress="0x1e180000"
/>
<Tool
@@ -249,12 +240,9 @@
/>
<Tool
Name="VCPreLinkEventTool"
- Description="Build sqlite3 libs and dll"
- CommandLine="cd &quot;$(sqlite3Dir)&quot;&#x0D;&#x0A;if not exist &quot;$(OutDir)\sqlite3.dll&quot; if exist $(PlatformName)\sqlite3.dll copy $(PlatformName)\sqlite3.dll &quot;$(OutDir)&quot;&#x0D;&#x0A;if exist $(PlatformName)\sqlite3.lib exit 0&#x0D;&#x0A;if not exist $(PlatformName) mkdir $(PlatformName)&#x0D;&#x0A;cd $(PlatformName)&#x0D;&#x0A;cl /DNO_TCL /Ox /Ob1 /Oi /GL /GF /FD /MD /Gy ..\*.c&#x0D;&#x0A;link /INCREMENTAL:NO /NOLOGO /DLL /OPT:REF /OPT:ICF /def:..\sqlite3.def /dll /out:sqlite3.dll *.obj&#x0D;&#x0A;if not exist &quot;$(OutDir)\sqlite3.dll&quot; copy sqlite3.dll &quot;$(OutDir)&quot;&#x0D;&#x0A;"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="$(sqlite3Dir)\$(PlatformName)\sqlite3.lib"
BaseAddress="0x1e180000"
/>
<Tool
@@ -314,12 +302,9 @@
/>
<Tool
Name="VCPreLinkEventTool"
- Description="Build sqlite3 libs and dll"
- CommandLine="cd &quot;$(sqlite3Dir)&quot;&#x0D;&#x0A;if not exist &quot;$(OutDir)\sqlite3.dll&quot; if exist $(PlatformName)\sqlite3.dll copy $(PlatformName)\sqlite3.dll &quot;$(OutDir)&quot;&#x0D;&#x0A;if exist $(PlatformName)\sqlite3.lib exit 0&#x0D;&#x0A;if not exist $(PlatformName) mkdir $(PlatformName)&#x0D;&#x0A;cd $(PlatformName)&#x0D;&#x0A;cl /DNO_TCL /Ox /Ob1 /Oi /GL /GF /FD /MD /Gy ..\*.c&#x0D;&#x0A;link /INCREMENTAL:NO /NOLOGO /DLL /OPT:REF /OPT:ICF /def:..\sqlite3.def /dll /out:sqlite3.dll *.obj&#x0D;&#x0A;if not exist &quot;$(OutDir)\sqlite3.dll&quot; copy sqlite3.dll &quot;$(OutDir)&quot;&#x0D;&#x0A;"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="$(sqlite3Dir)\$(PlatformName)\sqlite3.lib"
BaseAddress="0x1e180000"
/>
<Tool
@@ -380,12 +365,9 @@
/>
<Tool
Name="VCPreLinkEventTool"
- Description="Build sqlite3 libs and dll"
- CommandLine="cd &quot;$(sqlite3Dir)&quot;&#x0D;&#x0A;if not exist &quot;$(OutDir)\sqlite3.dll&quot; if exist $(PlatformName)\sqlite3.dll copy $(PlatformName)\sqlite3.dll &quot;$(OutDir)&quot;&#x0D;&#x0A;if exist $(PlatformName)\sqlite3.lib exit 0&#x0D;&#x0A;if not exist $(PlatformName) mkdir $(PlatformName)&#x0D;&#x0A;cd $(PlatformName)&#x0D;&#x0A;cl /DNO_TCL /Ox /Ob1 /Oi /GL /GF /FD /MD /Gy ..\*.c&#x0D;&#x0A;link /INCREMENTAL:NO /NOLOGO /DLL /OPT:REF /OPT:ICF /def:..\sqlite3.def /dll /out:sqlite3.dll *.obj&#x0D;&#x0A;if not exist &quot;$(OutDir)\sqlite3.dll&quot; copy sqlite3.dll &quot;$(OutDir)&quot;&#x0D;&#x0A;"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="$(sqlite3Dir)\$(PlatformName)\sqlite3.lib"
BaseAddress="0x1e180000"
TargetMachine="17"
/>
@@ -446,12 +428,9 @@
/>
<Tool
Name="VCPreLinkEventTool"
- Description="Build sqlite3 libs and dll"
- CommandLine="cd &quot;$(sqlite3Dir)&quot;&#x0D;&#x0A;if not exist &quot;$(OutDir)\sqlite3.dll&quot; if exist $(PlatformName)\sqlite3.dll copy $(PlatformName)\sqlite3.dll &quot;$(OutDir)&quot;&#x0D;&#x0A;if exist $(PlatformName)\sqlite3.lib exit 0&#x0D;&#x0A;if not exist $(PlatformName) mkdir $(PlatformName)&#x0D;&#x0A;cd $(PlatformName)&#x0D;&#x0A;cl /DNO_TCL /Ox /Ob1 /Oi /GL /GF /FD /MD /Gy ..\*.c&#x0D;&#x0A;link /INCREMENTAL:NO /NOLOGO /DLL /OPT:REF /OPT:ICF /def:..\sqlite3.def /dll /out:sqlite3.dll *.obj&#x0D;&#x0A;if not exist &quot;$(OutDir)\sqlite3.dll&quot; copy sqlite3.dll &quot;$(OutDir)&quot;&#x0D;&#x0A;"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="$(sqlite3Dir)\$(PlatformName)\sqlite3.lib"
BaseAddress="0x1e180000"
/>
<Tool
@@ -512,12 +491,9 @@
/>
<Tool
Name="VCPreLinkEventTool"
- Description="Build sqlite3 libs and dll"
- CommandLine="cd &quot;$(sqlite3Dir)&quot;&#x0D;&#x0A;if not exist &quot;$(OutDir)\sqlite3.dll&quot; if exist $(PlatformName)\sqlite3.dll copy $(PlatformName)\sqlite3.dll &quot;$(OutDir)&quot;&#x0D;&#x0A;if exist $(PlatformName)\sqlite3.lib exit 0&#x0D;&#x0A;if not exist $(PlatformName) mkdir $(PlatformName)&#x0D;&#x0A;cd $(PlatformName)&#x0D;&#x0A;cl /DNO_TCL /Ox /Ob1 /Oi /GL /GF /FD /MD /Gy ..\*.c&#x0D;&#x0A;link /INCREMENTAL:NO /NOLOGO /DLL /OPT:REF /OPT:ICF /def:..\sqlite3.def /dll /out:sqlite3.dll *.obj&#x0D;&#x0A;if not exist &quot;$(OutDir)\sqlite3.dll&quot; copy sqlite3.dll &quot;$(OutDir)&quot;&#x0D;&#x0A;"
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="$(sqlite3Dir)\$(PlatformName)\sqlite3.lib"
BaseAddress="0x1e180000"
TargetMachine="17"
/>
diff --git a/PCbuild/_tkinter.vcproj b/PCbuild/_tkinter.vcproj
index e3baa5c..e8f8aa5 100644
--- a/PCbuild/_tkinter.vcproj
+++ b/PCbuild/_tkinter.vcproj
@@ -56,7 +56,7 @@
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="$(tcltkLib)"
+ AdditionalDependencies="$(tcltkLibDebug)"
/>
<Tool
Name="VCALinkTool"
@@ -104,7 +104,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="&quot;$(tcltk64Dir)\include&quot;"
+ AdditionalIncludeDirectories="$(tcltk64Dir)\include"
PreprocessorDefinitions="WITH_APPINIT"
/>
<Tool
@@ -118,7 +118,7 @@
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="$(tcltk64Lib)"
+ AdditionalDependencies="$(tcltk64LibDebug)"
/>
<Tool
Name="VCALinkTool"
@@ -229,7 +229,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="&quot;$(tcltk64Dir)\include&quot;"
+ AdditionalIncludeDirectories="$(tcltk64Dir)\include"
PreprocessorDefinitions="WITH_APPINIT"
/>
<Tool
@@ -354,7 +354,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="&quot;$(tcltk64Dir)\include&quot;"
+ AdditionalIncludeDirectories="$(tcltk64Dir)\include"
PreprocessorDefinitions="WITH_APPINIT"
/>
<Tool
@@ -480,7 +480,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="&quot;$(tcltk64Dir)\include&quot;"
+ AdditionalIncludeDirectories="$(tcltk64Dir)\include"
PreprocessorDefinitions="WITH_APPINIT"
/>
<Tool
diff --git a/PCbuild/pcbuild.sln b/PCbuild/pcbuild.sln
index 69c4a83..6838d62 100644
--- a/PCbuild/pcbuild.sln
+++ b/PCbuild/pcbuild.sln
@@ -36,6 +36,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winsound", "winsound.vcproj
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_bsddb", "_bsddb.vcproj", "{B4D38F3F-68FB-42EC-A45D-E00657BB3627}"
ProjectSection(ProjectDependencies) = postProject
+ {62172C7D-B39E-409A-B352-370FF5098C19} = {62172C7D-B39E-409A-B352-370FF5098C19}
{CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
EndProjectSection
EndProject
@@ -67,6 +68,7 @@ EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_sqlite3", "_sqlite3.vcproj", "{13CECB97-4119-4316-9D42-8534019A5A44}"
ProjectSection(ProjectDependencies) = postProject
{CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
+ {A1A295E5-463C-437F-81CA-1F32367685DA} = {A1A295E5-463C-437F-81CA-1F32367685DA}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ssl", "_ssl.vcproj", "{C6E20F84-3247-4AD6-B051-B073268F73BA}"
@@ -114,6 +116,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_hashlib", "_hashlib.vcproj
{CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}
EndProjectSection
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_bsddb44", "_bsddb44.vcproj", "{62172C7D-B39E-409A-B352-370FF5098C19}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sqlite3", "sqlite3.vcproj", "{A1A295E5-463C-437F-81CA-1F32367685DA}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
@@ -486,6 +492,38 @@ Global
{447F05A8-F581-4CAC-A466-5AC7936E207E}.Release|Win32.Build.0 = Release|Win32
{447F05A8-F581-4CAC-A466-5AC7936E207E}.Release|x64.ActiveCfg = Release|x64
{447F05A8-F581-4CAC-A466-5AC7936E207E}.Release|x64.Build.0 = Release|x64
+ {62172C7D-B39E-409A-B352-370FF5098C19}.Debug|Win32.ActiveCfg = Debug|Win32
+ {62172C7D-B39E-409A-B352-370FF5098C19}.Debug|Win32.Build.0 = Debug|Win32
+ {62172C7D-B39E-409A-B352-370FF5098C19}.Debug|x64.ActiveCfg = Debug|x64
+ {62172C7D-B39E-409A-B352-370FF5098C19}.Debug|x64.Build.0 = Debug|x64
+ {62172C7D-B39E-409A-B352-370FF5098C19}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {62172C7D-B39E-409A-B352-370FF5098C19}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {62172C7D-B39E-409A-B352-370FF5098C19}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {62172C7D-B39E-409A-B352-370FF5098C19}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {62172C7D-B39E-409A-B352-370FF5098C19}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {62172C7D-B39E-409A-B352-370FF5098C19}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {62172C7D-B39E-409A-B352-370FF5098C19}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {62172C7D-B39E-409A-B352-370FF5098C19}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {62172C7D-B39E-409A-B352-370FF5098C19}.Release|Win32.ActiveCfg = Release|Win32
+ {62172C7D-B39E-409A-B352-370FF5098C19}.Release|Win32.Build.0 = Release|Win32
+ {62172C7D-B39E-409A-B352-370FF5098C19}.Release|x64.ActiveCfg = Release|x64
+ {62172C7D-B39E-409A-B352-370FF5098C19}.Release|x64.Build.0 = Release|x64
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.Debug|Win32.Build.0 = Debug|Win32
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.Debug|x64.ActiveCfg = Debug|x64
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.Debug|x64.Build.0 = Debug|x64
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.PGInstrument|Win32.Build.0 = PGInstrument|Win32
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.PGInstrument|x64.ActiveCfg = PGInstrument|x64
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.PGInstrument|x64.Build.0 = PGInstrument|x64
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.PGUpdate|Win32.Build.0 = PGUpdate|Win32
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.PGUpdate|x64.ActiveCfg = PGUpdate|x64
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.PGUpdate|x64.Build.0 = PGUpdate|x64
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.Release|Win32.ActiveCfg = Release|Win32
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.Release|Win32.Build.0 = Release|Win32
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.Release|x64.ActiveCfg = Release|x64
+ {A1A295E5-463C-437F-81CA-1F32367685DA}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/PCbuild/pyproject.vsprops b/PCbuild/pyproject.vsprops
index 54819e88..ccf579d 100644
--- a/PCbuild/pyproject.vsprops
+++ b/PCbuild/pyproject.vsprops
@@ -46,23 +46,43 @@
/>
<UserMacro
Name="bsddbDir"
- Value="..\..\db-4.4.20\build_win32\"
+ Value="$(bsddb44Dir)"
+ />
+ <UserMacro
+ Name="bsddbDepLibs"
+ Value="$(bsddb44DepLibs)"
+ />
+ <UserMacro
+ Name="bsddb44Dir"
+ Value="..\..\db-4.4.20\build_win32"
+ />
+ <UserMacro
+ Name="bsddb44DepLibs"
+ Value=""
+ />
+ <UserMacro
+ Name="bsddb45Dir"
+ Value="..\..\db-4.5.20.x\build_windows"
+ />
+ <UserMacro
+ Name="bsddb45DepLibs"
+ Value="ws2_32.lib"
/>
<UserMacro
Name="sqlite3Dir"
- Value="..\..\sqlite-source-3.3.4\"
+ Value="..\..\sqlite-source-3.3.4"
/>
<UserMacro
Name="bz2Dir"
- Value="..\..\bzip2-1.0.3\"
+ Value="..\..\bzip2-1.0.3"
/>
<UserMacro
Name="opensslDir"
- Value="..\..\openssl-0.9.8g\"
+ Value="..\..\openssl-0.9.8g"
/>
<UserMacro
Name="tcltkDir"
- Value="..\..\tcltk\"
+ Value="..\..\tcltk"
/>
<UserMacro
Name="tcltk64Dir"
@@ -73,7 +93,15 @@
Value="$(tcltkDir)\lib\tcl84.lib $(tcltkDir)\lib\tk84.lib"
/>
<UserMacro
+ Name="tcltkLibDebug"
+ Value="$(tcltkDir)\lib\tcl84g.lib $(tcltkDir)\lib\tk84g.lib"
+ />
+ <UserMacro
Name="tcltk64Lib"
Value="$(tcltk64Dir)\lib\tcl84.lib $(tcltk64Dir)\lib\tk84.lib"
/>
+ <UserMacro
+ Name="tcltk64LibDebug"
+ Value="$(tcltk64Dir)\lib\tcl84g.lib $(tcltk64Dir)\lib\tk84g.lib"
+ />
</VisualStudioPropertySheet>
diff --git a/Python/ast.c b/Python/ast.c
index d5d84f7..be25ac3 100644
--- a/Python/ast.c
+++ b/Python/ast.c
@@ -2386,10 +2386,6 @@ ast_for_import_stmt(struct compiling *c, const node *n)
/* from ... import * */
n = CHILD(n, idx);
n_children = 1;
- if (ndots) {
- ast_error(n, "'import *' not allowed with 'from .'");
- return NULL;
- }
break;
case LPAR:
/* from ... import (x, y, z) */
diff --git a/Tools/buildbot/external-amd64.bat b/Tools/buildbot/external-amd64.bat
index 0ea4d64..8fd452a 100644
--- a/Tools/buildbot/external-amd64.bat
+++ b/Tools/buildbot/external-amd64.bat
@@ -1,48 +1,17 @@
@rem Fetches (and builds if necessary) external dependencies
-@REM XXX FIXME - building for x64 disabled for now.
-
@rem Assume we start inside the Python source directory
-cd ..
-call "%VS90COMNTOOLS%vsvars32.bat"
-
-@rem bzip
-if not exist bzip2-1.0.3 svn export http://svn.python.org/projects/external/bzip2-1.0.3
-
-@rem Sleepycat db
-@rem Remove VS 2003 builds
-if exist db-4.4.20 if not exist db-4.4.20\build_win32\this_is_for_vs9 (
- echo Removing old build
- rd /s/q db-4.4.20
-)
-if not exist db-4.4.20 svn export http://svn.python.org/projects/external/db-4.4.20-vs9 db-4.4.20
-if not exist db-4.4.20\build_win32\debug\libdb44sd.lib (
- vcbuild db-4.4.20\build_win32\db_static.vcproj "Debug AMD64|x64"
-)
+call "Tools\buildbot\external-common.bat"
+call "%VS90COMNTOOLS%\vsvars32.bat"
-@rem OpenSSL
-if not exist openssl-0.9.8g (
- if exist openssl-0.9.8a rd /s/q openssl-0.9.8a
- svn export http://svn.python.org/projects/external/openssl-0.9.8g
+if not exist tcltk64\bin\tcl84g.dll (
+ cd tcl-8.4.18.2\win
+ nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 DEBUG=1 INSTALLDIR=..\..\tcltk64 clean all install
+ cd ..\..
)
-@rem tcltk
-if not exist tcl8.4.16 (
- if exist tcltk rd /s/q tcltk
- if exist tcl8.4.12 rd /s/q tcl8.4.12
- if exist tk8.4.12 rd /s/q tk8.4.12
- svn export http://svn.python.org/projects/external/tcl8.4.16
- svn export http://svn.python.org/projects/external/tk8.4.16
-@REM cd tcl8.4.16\win
-@REM nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500
-@REM nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 INSTALLDIR=..\..\tcltk install
-@REM cd ..\..
-@REM cd tk8.4.16\win
-@REM nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 TCLDIR=..\..\tcl8.4.16
-@REM nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 TCLDIR=..\..\tcl8.4.16 INSTALLDIR=..\..\tcltk install
-@REM cd ..\..
+if not exist tcltk64\bin\tk84g.dll (
+ cd tk-8.4.18.1\win
+ nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 DEBUG=1 INSTALLDIR=..\..\tcltk64 TCLDIR=..\..\tcl-8.4.18.2 clean all install
+ cd ..\..
)
-
-@rem sqlite
-if not exist sqlite-source-3.3.4 svn export http://svn.python.org/projects/external/sqlite-source-3.3.4
-@REM if not exist build\PCbuild\sqlite3.dll copy sqlite-source-3.3.4\sqlite3.dll build\PCbuild
diff --git a/Tools/buildbot/external.bat b/Tools/buildbot/external.bat
index ae18ead..4113605 100644
--- a/Tools/buildbot/external.bat
+++ b/Tools/buildbot/external.bat
@@ -1,46 +1,17 @@
@rem Fetches (and builds if necessary) external dependencies
@rem Assume we start inside the Python source directory
-cd ..
-call "%VS90COMNTOOLS%vsvars32.bat"
+call "Tools\buildbot\external-common.bat"
+call "%VS90COMNTOOLS%\vsvars32.bat"
-@rem bzip
-if not exist bzip2-1.0.3 svn export http://svn.python.org/projects/external/bzip2-1.0.3
-
-@rem Sleepycat db
-@rem Remove VS 2003 builds
-if exist db-4.4.20 if not exist db-4.4.20\build_win32\this_is_for_vs9 (
- echo Removing old build
- rd /s/q db-4.4.20
-)
-if not exist db-4.4.20 svn export http://svn.python.org/projects/external/db-4.4.20-vs9 db-4.4.20
-if not exist db-4.4.20\build_win32\debug\libdb44sd.lib (
- vcbuild db-4.4.20\build_win32\db_static.vcproj "Debug|Win32"
+if not exist tcltk\bin\tcl84g.dll (
+ cd tcl-8.4.18.2\win
+ nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 DEBUG=1 INSTALLDIR=..\..\tcltk clean all install
+ cd ..\..
)
-@rem OpenSSL
-if not exist openssl-0.9.8g (
- if exist openssl-0.9.8a rd /s/q openssl-0.9.8a
- svn export http://svn.python.org/projects/external/openssl-0.9.8g
+if not exist tcltk\bin\tk84g.dll (
+ cd tk-8.4.18.1\win
+ nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 DEBUG=1 INSTALLDIR=..\..\tcltk TCLDIR=..\..\tcl-8.4.18.2 clean all install
+ cd ..\..
)
-
-@rem tcltk
-if not exist tcl8.4.16 (
- if exist tcltk rd /s/q tcltk
- if exist tcl8.4.12 rd /s/q tcl8.4.12
- if exist tk8.4.12 rd /s/q tk8.4.12
- svn export http://svn.python.org/projects/external/tcl8.4.16
- svn export http://svn.python.org/projects/external/tk8.4.16
- cd tcl8.4.16\win
- nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500
- nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 INSTALLDIR=..\..\tcltk install
- cd ..\..
- cd tk8.4.16\win
- nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 TCLDIR=..\..\tcl8.4.16
- nmake -f makefile.vc COMPILERFLAGS=-DWINVER=0x0500 TCLDIR=..\..\tcl8.4.16 INSTALLDIR=..\..\tcltk install
- cd ..\..
-)
-
-@rem sqlite
-if not exist sqlite-source-3.3.4 svn export http://svn.python.org/projects/external/sqlite-source-3.3.4
-if not exist build\PCbuild\sqlite3.dll copy sqlite-source-3.3.4\sqlite3.dll build\PCbuild