Hi,
In the building system there is the class "DependencyNode" in the file
build/generator/gen_base.py. This class defines the methods __hash__ and
__cmp__,which uses the member "filename" for hashing and comparision.
The derived class "TargetJava" set "filename" to '' so all objects
of the derived classes "TargetJavaClasses" and "TargetJavaHeaders"
are for hashing and comparision the same objects. This is wrong. The
patch uses the member "name" if the member "filename" contains an empty
string for hashing and comparision.
Patrick
[[[
* build/generator/gen_base.py
DependencyNode.__hash__
use member name of member filename contains an empty string
DependencyNode.__cmp__
use member name of member filename contains an empty string
]]]
Index: build/generator/gen_base.py
===================================================================
--- build/generator/gen_base.py (revision 9908)
+++ build/generator/gen_base.py (working copy)
@@ -255,10 +255,19 @@
return self.filename
def __cmp__(self, ob):
- return cmp(self.filename, ob.filename)
+ myname = self.filename
+ if myname == '':
+ myname = self.name
+ othername = ob.filename
+ if othername == '':
+ othername = ob.name
+ return cmp(myname, othername)
def __hash__(self):
- return hash(self.filename)
+ myname = self.filename
+ if myname == '':
+ myname = self.name
+ return hash(myname)
class ObjectFile(DependencyNode):
def __init__(self, filename, compile_cmd = None):
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sun May 30 17:14:47 2004