• 23
  • Oct

自从两年前首次开始coding以来,我就接触了著名的“autotools”(国外开发者戏称为“autofools”,中文简称“自动变傻”系列工具,由autoconf,automake等组成)。

这是一段神奇的经历:

当时我只会C,编写Ubuntu Tweak时,所以也只能用autotools。当时不知照搬了哪个工具的configure.ac和Makefile.am等文件,居然在什么都不懂的情况下,也能让Ubuntu Tweak ./configure make sudo make install过。真是神奇,反而是它傻眼了。

后来转向Python后,我意识到不能用autotools了,于是想学Python的distutils模块来分发,结果还是不爽,不如Coding自由,因为我要顺着它的规则来写setup.py。当时印象比较深,把wine-doors的setup.py hack了一下就用上了,事后我发现wine-doors根本就是在手写安装规则。

又过了段时间,我突然开窍了,觉得作为一个半桶水的Linux Developer,被区区的变傻工具所折服,实在不像话,于是花了点时间,狠狠恶补了一点相关知识。不久后终于有了成果,即使我用的是纯Python,我也顺利地用autotools完成了“变傻化”,不仅i18n处理的很好,而且在前几个版本,我混合了C代码进去,autotools也能顺利处理。更令我高兴的是,我弄的configure.ac, Makefile.am,能顺利地“make distcheck”过,可谓质量过硬啊~

把Ubuntu Tweak变傻以后,好处是很多的。我用Gentoo时,写ebuild,非常方便,用Ubuntu时,写debian规则也非常方便,因为都能自动处理变傻后的软件包。

然而,虽然我算是有点掌握了autotools,这并不代表它是方便使用的。不然整个KDE项目怎么会转向CMake呢?不然Compiz项目和其他一大堆项目,也转向了CMake呢?

罪恶的事情还是来了。

Ubuntu Tweak 0.5,面临着大规模的重购,Python软件包的结构,有较大变化,另外,它还需要安装成模块,而不像之前是作为普通py文件安装至/usr/share/ubuntu-tweak下的。我难以忍受改变一个目录,就要Makefile.am一下,我也懒得再去学习如何用变傻工具分发Python模块。我再一次无法忍受变傻的过程了,于是,我转向了setuptools(据说是包装过后的distutils,更好用)。

这次的经历是愉快的,我创建了Ubuntu Tweak的一个新分支,叫做“kill-autofools”,然后通过最短时间的学习和参照,花了不到两个晚上的时间,完全不受变傻工具的束缚,把软件包的结构弄了个翻天覆地的变化,套上setup.py,非常简洁和方便,连i18n,处理.in,处理.desktop.in,都是方便地不得了。

更棒的是,结合debian的pysupport,我没测试几次,就顺得地把Ubuntu Tweak分发成了一个标准的Pyton模块——“import ubuntutweak”得以工作,我的全新计划将得以实施。

具体的教程啊就不写了,还是看:http://github.com/tualatrix/ubuntu-tweak/tree/kill-autofools 吧~

杀死变傻工具的过程还没有结束,但是我已经喜欢上了setuptools。但愿以后再也不用费心思在这种分发工具上了,不然真的变傻了,我就再也不能编程了!

珍惜生命,远离变傻!

» You can leave a comment.

5 Comments

  1. membogg

    那个,还有pip,http://www.b-list.org/weblog/2008/dec/15/pip/,你还会再转换么

  2. 大智若愚,呵呵。
    第三段第一行照搬的“搬”写成“般”了。

  3. zcxing

    为什么我用uc看的是1个星期前的文章..

Leave a Comment