Today at 6pm I have finished the necessary changes to my Source Server patch so that it is ready to be checked in. This will be my first check in to the Mozilla code and I’m pretty psyched that after about 6 months of working on this, this particular chapter is about to close.
The last few changes today were quite interesting and good learning for me. Basically, I had to take my | if self.srcsrv | stuff and put it into a separate method. Ted pointed out that this was because it’s win32 specific code, so there’s no need for it to be in the general Dumper class.
Hello object-oriented programming? This is exactly what I need to learn this in an applied manner and I will remember this lesson better than having just read it in a book.
So now there’s a declared SourceServerIndexing method in the Dumper, and then a detailed method of the same name in the Win32 Dumper – which is where all the action is. I wonder if there’s a chapter somewhere down the line where I will try to take this SourceIndexing into the Linux and Darwin dumpers.
When I first pulled everything out into the method, I had to wrap my head around the way that Python calls methods. Basically, if I called it from within Dumper, I need to do self.MethodName so that it looks for the method inside the Dumper class. Without the self. in front, I got an error message saying that a global name “MethodName” was not recognized. Also, when I was running | make buildsymbols | I wasn’t source indexing the pdbs. So I put in some print statements to see if all the right steps were happening. They were. Confusing.
Eventually I noticed that there’s a |shutil.copyfile(file, full_path)| which is what puts the pdb files in the place that I want them to be for indexing and I was calling my method before that. Quick switch and the lights turned on, the music played and my pdb files were indexed.
This has been a great project for teaching me how to set up a work flow as efficiently as possible. Now I’m at the point where I can get right into working on the code and testing frequently with minimal effort. The closer I got towards getting it all working, the easier the work flow got. Right now I can test this patch with just MingW32, a command shell and my Crimson Editor. I can tell within the first few seconds of |make buildsymbols| running if it has worked and then a ctrl + C to interrupt it and get back to the tweaking of code.
It feels great to have put this up for approval. Can’t wait to see what happens next.