Bob Ippolito (@etrepum) on Haskell, Python, Erlang, JavaScript, etc.
«

bundlebuilder2 -- coming soon to a mac near you

»

For the past.. while.. I've been slowly hacking at a refactoring of bundlebuilder that uses my (unreleased) macholib package. Here's what the new bundlebuilder will do:

  • (complete) In addition to automatically finding modules when in --semi-standalone and --standalone mode, it will also find non-System dylibs and frameworks!
  • (complete) It properly rewrites mach-o headers on everything such that they have load commands referencing @executable_path/../Frameworks rather than their original paths.
  • (in progress) Configurable detection of packages that should be included whole, such as pygame, because it references data files via __file__ (breaking zip import).
  • (planned, to be released separately) a PyObjC GUI for bundlebuilder2, that makes all of this even more configurable and easy to use.

For the interested, macholib is basically a Python-rewrite of the /usr/include/mach-o headers, which a subset of the functionality from otool and install_name_tool. Originally I had released something called potool that attempted to do these things, but I had made a few wrong assumptions, so I rewrote it all as macholib.

Honestly, the only things I can think of that otool has that I don't are symbolic disassembly, symbol table dumps, and useless things like printing a nice description of the threadstate load commands. I actually do have a mostly-finished symbolic PPC disassembler written in Python, but it's an ugly port of some of GCC's guts and I doubt it'd be a good idea to unleash it on the world :)