Building an old specific commit in one AOSP project

257 views
Skip to first unread message

Alex

unread,
Jun 28, 2019, 10:56:25 AM6/28/19
to Android Building
Hi folks,

I did not find any related post to my question so I decided to create one. However, feel free to link any relevant post I may have missed.

Problem: I would like to build one project in AOSP at a very specific commit.

The procedure:
  • Find the commit ID
  • Find the appropriate manifest branch (git tag --contains $COMMIT_ID ) in the appropriate project in the mirror
  • Init the manifest branch from the mirror
  • Checkout the project at $COMMIT_ID
  • Source build/envsetup.sh and do a mma

However, if this procedure mostly works, sometimes you have a problem because the dependencies of your project as not synced and the build fail.

Since Google on its CI ( https://ci.android.com/builds/branches/aosp-master/grid ) always build the tree with the last commit on each repo, the idea was to checkout every project in AOSP at the date of the commit I want to build (e.g. $COMMIT_ID is 15.06.2019, let's checkout every project at this date). However, this fails because some project are not synced (during the sync from the mirror) with their history (e.g prebuilts tools).

I also tried to checkout the master branch from the AOSP mirror but the problem remains (e.g. clone-depth of some project is still 1).

My question is rather easy: how do one build a specific commit in one of AOSP project.


Ps : If you want to reproduce the problem, you may try to build commit 830cb39cb2a0f1bf6704d264e2a5c5029c175dd7 from platform/system/bt on branch android-9.0.0_r17 .

Colin Cross

unread,
Jun 28, 2019, 12:33:28 PM6/28/19
to android-...@googlegroups.com
You can download the manifest_*.xml file from any build from the date that you want, then use repo sync -m /tmp/manifest_*.xml to sync the revisions from that manifest.

--
--
You received this message because you are subscribed to the "Android Building" mailing list.
To post to this group, send email to android-...@googlegroups.com
To unsubscribe from this group, send email to
android-buildi...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-building?hl=en

---
You received this message because you are subscribed to the Google Groups "Android Building" group.
To unsubscribe from this group and stop receiving emails from it, send an email to android-buildi...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/android-building/a5befb35-0739-434b-8964-b5ecdfa00eb0%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Alex

unread,
Jul 1, 2019, 11:05:40 AM7/1/19
to Android Building
This idea is great but it works only if the project has been built by the CI with head the targeted commit.
However, in most cases the CI did not build every changes (I'm looking at a commit from 2015)

For example:
Project: frameworks/av
CommitId: aa4da6fa7ca2454f0713de0a5a583b5b8160166

The commit is merged in the master branch with the commit bacd813565c77010485b7f487630a079ef2a6899.
Still, frameworks/av was not built with this head, the two closest (built by the CI) are ~700 files changed

$ git log -1 --pretty="%H %aD" b70b09c9f96e78a45332c93a0eadd99cf6fe9645
b70b09c9f96e78a45332c93a0eadd99cf6fe9645
Fri, 21 Aug 2015 00:58:17 +0000
$ git log
-1 --pretty="%H %aD" bacd813565c77010485b7f487630a079ef2a6899
bacd813565c77010485b7f487630a079ef2a6899
Fri, 21 Aug 2015 17:30:09 +0000
$ git log
-1 --pretty="%H %aD" 84c1e5a90348afca09be0745ab731880d740e10d
84c1e5a90348afca09be0745ab731880d740e10d Fri, 21 Aug 2015 21:13:58 +0000

$ git
--no-pager diff --shortstat b70b09c9f96e78a45332c93a0eadd99cf6fe9645 bacd813565c77010485b7f487630a079ef2a6899
 
721 files changed, 74085 insertions(+), 21394 deletions(-)

$ git
--no-pager diff --shortstat bacd813565c77010485b7f487630a079ef2a6899 84c1e5a90348afca09be0745ab731880d740e10d
 
721 files changed, 21414 insertions(+), 74059 deletions(-)

So from either manifest file, it is not possible to build the specific commit because the changes are not synchronised with the rest of AOSP.
Any idea that could solve this problem ?


Le vendredi 28 juin 2019 18:33:28 UTC+2, Colin Cross a écrit :
You can download the manifest_*.xml file from any build from the date that you want, then use repo sync -m /tmp/manifest_*.xml to sync the revisions from that manifest.

On Fri, Jun 28, 2019 at 7:56 AM Alex <honjo...@gmail.com> wrote:
Hi folks,

I did not find any related post to my question so I decided to create one. However, feel free to link any relevant post I may have missed.

Problem: I would like to build one project in AOSP at a very specific commit.

The procedure:
  • Find the commit ID
  • Find the appropriate manifest branch (git tag --contains $COMMIT_ID ) in the appropriate project in the mirror
  • Init the manifest branch from the mirror
  • Checkout the project at $COMMIT_ID
  • Source build/envsetup.sh and do a mma

However, if this procedure mostly works, sometimes you have a problem because the dependencies of your project as not synced and the build fail.

Since Google on its CI ( https://ci.android.com/builds/branches/aosp-master/grid ) always build the tree with the last commit on each repo, the idea was to checkout every project in AOSP at the date of the commit I want to build (e.g. $COMMIT_ID is 15.06.2019, let's checkout every project at this date). However, this fails because some project are not synced (during the sync from the mirror) with their history (e.g prebuilts tools).

I also tried to checkout the master branch from the AOSP mirror but the problem remains (e.g. clone-depth of some project is still 1).

My question is rather easy: how do one build a specific commit in one of AOSP project.


Ps : If you want to reproduce the problem, you may try to build commit 830cb39cb2a0f1bf6704d264e2a5c5029c175dd7 from platform/system/bt on branch android-9.0.0_r17 .

--
--
You received this message because you are subscribed to the "Android Building" mailing list.
To post to this group, send email to android-...@googlegroups.com
To unsubscribe from this group, send email to

For more options, visit this group at
http://groups.google.com/group/android-building?hl=en

---
You received this message because you are subscribed to the Google Groups "Android Building" group.
To unsubscribe from this group and stop receiving emails from it, send an email to android-...@googlegroups.com.

Colin Cross

unread,
Jul 1, 2019, 1:49:19 PM7/1/19
to android-...@googlegroups.com
That change likely arrived in AOSP as part of the lollipop release drop, so there are no more fine-grained builds available.


For more options, visit this group at
http://groups.google.com/group/android-building?hl=en

---
You received this message because you are subscribed to the Google Groups "Android Building" group.
To unsubscribe from this group and stop receiving emails from it, send an email to android-buildi...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/android-building/e4d5671c-1aa9-40e6-9c4d-307d6925ab1e%40googlegroups.com.

Matt Rogers

unread,
Jul 1, 2019, 4:12:22 PM7/1/19
to android-...@googlegroups.com
Sounds like you need to fork the whole branch then do a revert to that commit , then build the project. 
Or 
Since is just the BT, goto that folder before you build and do a revert for that file , compile just that portion of the project, and import that intonyour device to see if that works. 
Just musing...

Reply all
Reply to author
Forward
0 new messages