2010-04-26

I like AUR!

AUR(Arch User Repository) 是个社区驱动的仓库。Arch用户可以提交 PKGBUILD 文件供其他用户分享,而 PKGBUILD 文件就像菜谱一样,告诉 makepkg 怎样生成一个可以用 pacman 安装的程序包。类似Debian中的apt-src。

yaourt 是个前端脚本,除了查找标准的仓库如 core, community 以及 testing (默认不搜索)之外,还会搜索 AUR,这样用户可选的安装包种类可以算是五花八门,包罗万象了。安装了一个llvm-py,不过发现导入llvm.core的时候会失败,在Debian中安装 python-llvm 也是如此。最后发现是生成 so 文件的时候没有链接到 libffi,用 yaourt 安装 llvm-py, 过程中可以修改一下 PKGBUILD 文件,如下:

[sourcecode language="diff"]
--- a/PKGBUILD  Mon Apr 26 10:25:34 2010 -0700
+++ b/PKGBUILD  Mon Apr 26 10:25:56 2010 -0700
@@ -18,6 +18,7 @@
build() {
cd $startdir/src
svn co http://llvm-py.googlecode.com/svn/trunk/ llvm-py-${pkgver}
+  export LDFLAGS=`pkg-config libffi --libs`
cd llvm-py-${pkgver}
python setup.py install \
--prefix=/usr \
[/sourcecode]

这回果然OK了。

标签:

2 Comments:

At 08:49, Anonymous qhe said...

看起来是 llvm-py 里面的setup.py写的有问题
llvm的llvm-config的参数不够标准……

--- setup.py.orig 2009-09-20 17:08:34.000000000 +0800
+++ setup.py 2010-05-12 15:44:52.000000000 +0800
@@ -40,7 +40,8 @@


def get_libs_and_objs(llvm_config, components):
- parts = _run(llvm_config + ' --libs ' + ' '.join(components)).split()
+ parts = _run(llvm_config + ' --libs --ldflags ' +
+ ' '.join(components)).split()
libs = []
objs = []
for part in parts:

 
At 08:52, Anonymous little.W said...

This fix is better. :-)

 

发表评论

<< Home