[ 已解决 ] 编译 rust-nightly 遇到问题

大家好,

我拷贝了别人编译 rust-0.10 的 spec 文件来编译 rust-nightly,但是遇到了问题,能成功编译但是似乎不能通过 post-check。

obs 报出的错误在这里:

build.opensuse.org/package/live_build_log/home:nuklly/rust/openSUSE_12.3/x86_64

似乎是这样的错误:

问一下所谓的 64bit-portability-issue 是什么?

================

Update:

在应用了这两个 patch 之后解决。

build.opensuse.org/package/view_file/home:ZaWertun:rust/rust/pointer_from_integer_without_a_cast-0.10.diff?expand=1

build.opensuse.org/package/view_file/home:ZaWertun:rust/rust/prevent_repeated_moves_out_of_proc_upvars-0.10.diff?expand=1

但是没有搞懂 OBS 在这里检查了什么,为什么应用了 patch 就能解决。

整数类型和指针混合计算或者传值会有移植问题,obs 有这方面检查。第一个补丁做了强制转换,所以编译器不再有 warning,打包就通过了。

关于 64-Bit Portability Issues 这里有些例子 http://www.viva64.com/en/viva64-tool/

如果是要学习 rust,我通常不推荐自己去编译 rust,因为 OBS 上就有
software.opensuse.org/package/rust

没有最新的 nightly 版本,从 0.10 到 nightly,语法很多都发生了变化

官方网站也有现成的二进制包呀。
rust-lang.org/install.html

话说下面这个链接是你的个人 OBS 的吗?
software.opensuse.org/ymp/home:nuklly/openSUSE_13.1/rust.ymp?base=openSUSE%3A13.1&query=rust

二进制包还要安装比较麻烦……
对的那个是我的个人车库

其实官方的二进制包已经很方便了, * 下载、解压、sudo install.sh* 。
你这个 rust-nightly 是会自动获取最新的 rust nightly 代码进行编译吗? 还是需要你手动的?

需要我手动更新。
如果想要自动更新应该如何做?我不知道怎么让 OBS 去下载 internet 上面的源代码包。

更加麻烦的是,rust 在编译的时候除了需要源代码包以外,还需要下载一 stage0 的预编译二进制版本,这个二进制版本的 URL 中包含 hash,需要我手动添加进去。这个我觉得肯定是没法自动搞定了。

我对 OBS 不熟,按我的理解应该可以去下载外部资源吧。可以问问 @marguerite

hash 每次都变?需要修改二进制文件的内容? 如果是修改该文件的下载链接,应该是可以解决的吧。
不过,我对 OBS 不熟,仅供参考。

@nuklly , 你是在使用 rust 做项目开发吗?

我记得苏姐姐说过,因为 OBS 是跑在一个 Xen 的虚拟机里面,网卡是虚拟的所以没法下载外部资源。

对的,二进制 pre-compile 版本只是下载链接地址不同,不过这个下载地址时不时会更新,这个地址本身包含一个哈希值,我不知道从哪里能自动获取最新的下载地址……

不需要修改二进制文件,只需要下载就可以了。

我没有,我只是学一下玩玩。
rust 在 1.0 发布之前还很不稳定,没法作为生产环境的编程语言使用。