Repo question

809 views
Skip to first unread message

pro

unread,
Sep 9, 2009, 12:07:15 PM9/9/09
to Repo and Gerrit Discussion
I'm trying to get the source from 3 repositories ( or 3 different
manifests): base android, openmoko, beagleboard...

My basic understanding is the any such repositories can have (1)
added files (2) deleted files (3) modified files from the base source
tree...

So I was trying to get them in different directories : ~/mydroid; ~/
openmoko, ~/beagle...

There are a few problems I'm facing, even though I got three
different repo files with different name in ~/bin directory. I know
this is not necessary, only one repo script file is all I need under ~/
bin.

repo -help --all // silent now , no response, just returns

repobeagle sync // tries hard then finally bail out with error
prokash@prokash-laptop:~/beagledroid$ repobeagle sync
Fetching projects: 100% (102/102), done.
Syncing work tree: 65% (65/100) fatal: reference is not a tree:
b09cf8ef31b71ef84d210e028d4300473633b469
Syncing work tree: 100% (100/100), done.

kernel/: leaving goldfish; does not track upstream
error: kernel/: kernel/openmoko checkout
b09cf8ef31b71ef84d210e028d4300473633b469

---- What I understand from this is that my original directory ~/
mydroid is somewhat tied to all the checkouts...

I really don't know how all the customized ( yet open to all )
repositories are built/configured, so I was trying to get them ( even
though it is a stupid idea to pollute the HDD) in separate
directories...

If the configurations are just based on some config file, and if that
picks up the right set of source then I will be fine to get the
customized source in the same directory, but this part of the
semantics of repo/git is what I don't know...

So would I be fine, if I bring down the openmoko and beagle specific
source to my ~/mydroid, and build for specific configurations ???

Finally what I found though is that I can not create .repo/ directory
under ~/foo using 'git init <url to manifest>'.

thanks for any input.
-pro

Shawn Pearce

unread,
Sep 9, 2009, 9:43:27 PM9/9/09
to repo-d...@googlegroups.com
Yes, you only need one "repo" script in ~/bin. If you read through
that script, it basically searches for ".repo/repo/main.py" and then
runs that, which is where the main logic for repo really is. Each
checkout you have (mydroid, openmoko, beagle) has a unique copy of the
repo code under .repo/repo and that is what will run when you type
"repo sync" (or whatever).

Regarding the error in openmoko, it looks like the manifest is
pointing at a non-tree-ish object in the kernel project. Error in
their manifest? What type of object is that b09c? E.g. try:

cd ~/openmoko/kernel/
git cat-file -t b09cf8ef31b71ef84d210e028d4300473633b469


Each of the ports you downloaded are based on an XML configuration
file stored in the "default.xml" file of the git repository whose URL
you passed to "repo init -u" when you made the directory. You could
make a new custom file by cloning each of these repositories with
standard "git clone", picking one and editing it to mix in from the
others, commit that, and then use that repository's path as the
argument to "repo init -u". This is (mostly) what we recommend to a
vendor when they customize android, and why openmoko and beagleboard
both have their own configuration file.


Finally, "git init" does not understand how to make a .repo directory.
git != repo. repo depends upon git, and falls back to it for most of
its work, but repo is a layer built on top of git and is not something
that git knows how to work with.

pro

unread,
Sep 10, 2009, 8:56:36 AM9/10/09
to Repo and Gerrit Discussion
Thanks Shawn. Much appreciated for enlighting me :)

Bit of a context::
I tried to get a the openmoko in a separate directory, after I had my
android (including the kernel ) from android.com checked out, built,
and some simple tests. I know there is a whole bunch of config files
( including goldfish - that I synced right after the base source - if
you will ). Then I tried to get the openmoko ( basically kollu ) in a
separate directory. But I was not able to do that, I was facing
similar problem. With intuition running ahead of rigor, I thought what
the heck and did the checkout kollu using same repo commands . I was
able to build as per their instructions.

Next I tried again to create a directory (~/beagle) for beagle board,
followed the same steps, but without success. ___The reason I'm doing
this is because I need bascially two builds: one for freerunner and
another for beagleboard.

Here is the final question -- Is it okay to checkout vendor specific
codes to same directory?. Would it cause any conflict?. I'm not clear
on this. I think it is better to have separate tree on my disk.

Here is the output
git cat-file -t b09cf8ef31b71ef84d210e028d4300473633b469
commit


Note when I was trying to checkout moko in a separate directory, I was
getting same complain from goldfish....

Another question:: can I use repo commands from different directory
( after initing to different manifest) to get ported(intergrated)
source, if so then would please give me some steps to take. Otherwise
I can use the git clone , etc. repo suppose to do the clone when i
sync.

-pro
Reply all
Reply to author
Forward
0 new messages