我想为三星galaxy s2构建cyanogenmod 9.0.0。 我已阅读http://wiki.cyanogenmod.org/w/Build_for_i9100并成功编译了这些内容。 但是建成的是cm-11,而我需要9.0.0。 (我正在寻找另一个人编写的代码中的错误,我需要这个版本来了解发生了什么。)
命令
$ repo init -u git://github.com/CyanogenMod/android.git -b cm-9.0.0
打破
error: in `init -u git://github.com/CyanogenMod/android.git --repo-url=https://gerrit.googlesource.com/git-repo --repo-branch=stable`: revision refs/heads/master in manifests not found
但是帮助说-b
指定了 清单 分支或修订版,所以除非描述有误导性,否则它应该是可以使用最新的清单,然后检查必要的版本。
所以我使用了命令
$ repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
但现在我明白了:
$ repo branch
(no branches)
$ repo branches
(no branches)
为了比较,在构建cm-11的目录中,我也得到了(no branches)
。
在https://stackoverflow.com/a/10820464/755804 我读到我应该使用特定于构建的清单文件,但是我在哪里/如何获得它? (该文件列出了repo树中每个git存储库的修订版;手动获取此列表将是一个可恶的任务,应该有一个脚本能够执行此操作。或者重复每个构建的文件存储在某处,而且我只是不知道在哪里?)
所以: 如何查看Cyanogenmod源的特定版本? (特别是cm-9.0.0-galaxys2?)
更新
实测值
repo help forall
- 在每个项目中运行一个shell命令。 但 repo forall -c 'git branch'
显示(no branch)
每个项目。 UPD:因为它应该是repo forall -c git branch -a
,但显示的分支集将取决于使用-b
密钥传递给repo init
的参数。
更新2
以下答案显示了如何结帐来源。下一步是运行breakfast i9100
(这是一个愚蠢的非描述性名称!)不幸的是,它不起作用,因为在过去的某个时刻github api开始需要应用程序身份验证(并且no-auth引用不是足够breakfast
)。因此, github访问策略的更改破坏了版本控制脚本,实际上已将提交历史记录变为无用的旧垃圾:无法重建旧版本。我会说,这是版本控制系统的一个史诗般的失败:事实证明,版本控制系统无法用源代码树的压缩副本替换目录。 (并且子项目的数量和使用第三方脚本来管理它们是失败的关键组成部分。)
答案 0 :(得分:1)
我不确定是否可以构建它,但这是至少可以检索9.0.0源的方式。
首先,你做
repo init -u git://github.com/CyanogenMod/android.git -b cm-9.0.0
repo sync
,您收到错误消息,如
Syncing work tree: 58% (144/248) error: in `sync`: revision refs/heads/cm-9.0.0 in CyanogenMod/android_frameworks_base not found
我必须注意,如果它是cm-9.1.0
,这将成功。
现在,让我们修补出现的错误:
每个错误,如
error: in `sync`: revision refs/heads/cm-9.0.0 in CyanogenMod/android_packages_apps_Settings not found
<强>做强>
.repo/manifest.xml
指向.repo/manifests/default.xml
; <project path="packages/apps/Settings" name="CyanogenMod/android_packages_apps_Settings"/>
revision="cm-9.1.0"
,然后它会显示为<project path="packages/apps/Settings" name="CyanogenMod/android_packages_apps_Settings" revision="cm-9.1.0"/>
packages/apps/Settings
repo sync
您将获得9.0.0和9.1.0源的组合;在大多数情况下,它将是9.0.0。
现在,cd vendor/cm; ./get-prebuilts
会失败,但因为它说
# Get Android Terminal Emulator (we use a prebuilt so it can update from the Market)
可以使用cm-11中的./get-prebuilts
,这将成功。