Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Pymake: A Mostly GNU-compatible `make`, Written in Python (smedbergs.us)
2 points by newsit on Feb 16, 2009 | hide | past | favorite | 5 comments


What an excellent piece of documentation on why you should not roll your own build system.

"because I can" is right next to the reasons the author gives:

"Why don’t you just hack GNU make itself?

There are some improvements we’re interested in doing which just aren’t possible within a C codebase:

    * implementing rules directly in Python
    * Condensing multiple invocations of make into a single process
. Python is also about a zillion times easier to hack quickly."

What a totally pointless exercise, if anything he should have spent the time to make the build process less dependent on other packages, not more.

Same with javas 'ant', why on earth does everybody and their brother feel the need to reinvent the wheel.

If you're going to roll out some package try to keep your dependencies to the absolute minimum.


They had tons of makefiles, so moving to something make-like was desirable.

I personally think that GNU make has a ton of bells and whistles, so it may be very difficult to emulate it with any accuracy; then again, they also know which features of GNU make are important to their project.

I might have bitten the bullet and chosen something like SCons to reach a Python base, and I have spent time rewriting (one or two) makefiles as SConstructs without a problem. But I have also seen huge projects with makefile madness, and I can certainly understand anyone's decision to want to keep makefiles untouched. Emulating make, while leaving room for improvements, isn't such a bad decision.


According to the comments on that post, building mozilla already required python, so it's not a new dependency.


I read those comments before making my post here, I realize it was not a new dependency, hence my 'less'. By adding more cruft that makes the mozilla build more dependent on python there is not 'another dependency' created, but it is harder to get rid of that dependency.





Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: