It’s finally here: a single-file download for all the tools in MySQL Toolkit. During this process I also upgraded every package in the toolkit to a new release, combining new versioning and some simple non-functional changes with (mostly minor) changes I’d committed but not yet released. Details are at the end of this post.
I ended up not using a Makefile for the build process, because I wanted to it to be more auto-magical than I know how to do with a Makefile. Instead I wrote a very simple Perl build script. Anyone who can teach me a better way to do it, please do! The final package follows the familiar Perl installation process, of course: perl Makefile.PL; make install.
The most important thing this will do is make it easier to distribute. It’s a real hassle to maintain a bunch of packages for, say, Debian — but it’s easy to maintain a single package. I hope soon the toolkit will be distributed with some GNU/Linux distributions and maybe with FreeBSD, as innotop is.
It’s gotten to the point that packaging and releasing these tools takes a good bit of time, which I never foresaw. There’s just a lot of stuff I have to do very carefully, like making change logs, tagging the source, building the packages, uploading them to sourceforge, going to sourceforge and making a new release, entering all the right information, and so forth. It all adds up. “Release early, release often” has its advantages, but it is a burden too.
If you want to support my work, I have now made an Amazon wishlist.
Here’s a unified changelog:
- mysql-show-grants
2007-06-10: version 1.0.1
- Added –defaults-file option.
- Added standard –version command-line option.
- Added –defaults-file option.
- mysql-find
2007-06-10: version 0.9.2
- –pid had a race condition.
- Unrecognized –sprintf directives could cause crashes.
- Added –defaults-file option.
- Added standard –version command-line option.
- mysql-table-sync
2007-06-10: version 0.9.4
- Added –defaults-file option.
- Added standard –version command-line option.
- mysql-duplicate-key-checker
2007-06-10: version 1.0.3
- Added –defaults-file option.
- Added standard –version command-line option.
- mysql-deadlock-logger
2007-06-10: version 1.0.1
- MySQL 5.1 shows tables in db.tbl format, not db/tbl
- Added –defaults-file option.
- Added standard –version command-line option.
- mysql-query-profiler
2007-06-10: version 1.1.1
- Added –defaults-file option.
- Added standard –version command-line option.
- Added –defaults-file option.
- mysql-table-checksum
2007-06-10: version 1.1.7
- Added –defaults-file option.
- Added standard –version command-line option.
You might also like:

You know, there is an O’Rielly book on make. I have been reading it for work, and it’s got a lot of good info in it (of course). Might see if you can get it on Safari.
Yeah, I think the problem is not that I don’t know make, after reading it more (the GNU make manual for example). I still have a lot to learn about it. But I have learned enough now to have the opinion that it’s not the right tool for building a package like this, where I’m choosing the latest tagged version of each individual package and wrapping them all up.
I also think there’s a lot to be said for the folks who are trying to get away from MakeMaker for Perl packaging and distribution. To do more complex things you need to resort to shell scripting. What could be less portable, and how silly does that seem, when you obviously have an incredibly powerful and portable language available on the system? Perl, that is.
The MakeMaker approach will never work on Windows and all the other esoteric systems Perl is ported to. I’ll leave it this way for right now, but maybe I’ll figure something better out later.
Is there a page somewhere where someone who hasn’t followed your blog from day 1 can figure out what all these programs do? The docs page on sourceforge was empty….
The sourceforge.net documentation system is really clunky in my opinion. I have started to flesh out documentation on the project website, but I’m short on time and long on TODO lists…
I added a brief document on the sourceforge docs page that just says “look at the project homepage” but I found it even hard to find and view the doc I just created!
I’ve been looking at RPM-ing Elgg recently, and I thought I’d have a go at packaging this. After cribbing the spec file from another perl app that installs stuff in /usr/bin, perl-libwww-perl, it turned out to be quite easy (assuming I’ve not done something stupid). Results are here: http://www.alia.org.uk/~sven/rpm/
The packages have my/Curverider’s name on them, so you’ll probably want to rebuild them if you have an RPM-based system available. :)
Sven: thank you. I will include the spec file in the tarball and upload your RPMs. (I don’t mind your name being in them).