upload android base code part9
This commit is contained in:
parent
5425409085
commit
071cdf34cd
2679 changed files with 329442 additions and 0 deletions
189
android/sdk/docs/howto_SDK_git_cygwin.txt
Normal file
189
android/sdk/docs/howto_SDK_git_cygwin.txt
Normal file
|
@ -0,0 +1,189 @@
|
|||
Copyright (C) 2009 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
|
||||
Subject: How to get the android source code using Cygwin and Git
|
||||
Date: 2009/04/27
|
||||
Updated: 2009/05/21
|
||||
Updated: 2010/03/30
|
||||
|
||||
|
||||
Table of content:
|
||||
1- Goals and Requirements
|
||||
2- Getting the code, the simple way
|
||||
3- SSH issues
|
||||
4- Advanced Tricks
|
||||
|
||||
|
||||
-------------------------
|
||||
1- Goals and Requirements
|
||||
-------------------------
|
||||
|
||||
This document explains how to checkout the Android source from the git
|
||||
repositories under Windows.
|
||||
|
||||
As stated in development/docs/howto_build_SDK.txt, one can't build the whole
|
||||
Android source code under Windows. You can only build the SDK tools for
|
||||
Windows.
|
||||
|
||||
There are a number of caveats in checking out the code from Git under Windows.
|
||||
This document tries to explain them.
|
||||
|
||||
First you will need to meet the following requirements:
|
||||
- You must have Cygwin installed. But wait! You CANNOT use the latest Cygwin 1.7.
|
||||
Instead you MUST use the "legacy Cygwin 1.5" that you can find at this page:
|
||||
|
||||
http://cygwin.org/win-9x.html
|
||||
|
||||
Don't mind the page title, just grab setup-legacy.exe and it will works just fine
|
||||
under XP or Vista.
|
||||
|
||||
- You must install Cyginw using the "Unix / Binary" mode.
|
||||
If you don't do that, git will fail to properly compute some SHA1 keys.
|
||||
|
||||
- You need the "git" and "curl" packages to checkout the code.
|
||||
If you plan to contribute, you might want to get "gitk" also.
|
||||
|
||||
Note: if you want to build the SDK, check the howto_build_SDK.txt file
|
||||
for a list of extra required packages.
|
||||
The short summary is that you need at least these:
|
||||
autoconf, bison, curl, flex, gcc, g++, git, gnupg, make, mingw-zlib, python, unzip, zip
|
||||
and you must avoid the "readline" package.
|
||||
|
||||
|
||||
-----------------------------------
|
||||
2- Getting the code, the simple way
|
||||
-----------------------------------
|
||||
|
||||
Out of the box, "repo" and "git" will work just fine under Cygwin:
|
||||
|
||||
$ repo init -u git://android.git.kernel.org/platform/manifest.git
|
||||
$ repo sync
|
||||
|
||||
And you're done. You can build as explained in howto_build_SDK.txt and ignore
|
||||
the rest of this document.
|
||||
|
||||
|
||||
-------------
|
||||
3- SSH issues
|
||||
-------------
|
||||
|
||||
If you maintain your own private repository using an SSH server, you might get
|
||||
some "mux/ssh" errors. In this case try this:
|
||||
|
||||
$ repo init -u ssh://my.private.ssh.repo/platform/manifest.git
|
||||
$ export GIT_SSH=ssh
|
||||
$ repo sync
|
||||
|
||||
|
||||
------------------
|
||||
4- Advanced Tricks
|
||||
------------------
|
||||
|
||||
There is one remaining issue with the default repo/git options:
|
||||
|
||||
If you plan on contributing, you will notice that even after a fresh "repo
|
||||
sync" some projects are marked as having modified files. This happens on the
|
||||
"bionic" and the "external/iptables" project. The issue is that they have files
|
||||
which have the same name yet differ only by their case-sensitivity. Since the
|
||||
Windows filesystem is not case-sensitive, this confuses Git.
|
||||
|
||||
Solution: we can simply ignore these projects as they are not needed to build
|
||||
the Windows SDK.
|
||||
|
||||
To do this you just need to create a file .repo/local_manifest.xml that
|
||||
provides a list of projects to ignore:
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<manifest>
|
||||
<remove-project name="platform/external/iptables" />
|
||||
</manifest>
|
||||
|
||||
The other thing we can do is tell git not to track the files that cause
|
||||
problems:
|
||||
|
||||
cd bionic
|
||||
git update-index --assume-unchanged \
|
||||
libc/kernel/common/linux/netfilter/xt_CONNMARK.h \
|
||||
libc/kernel/common/linux/netfilter/xt_MARK.h \
|
||||
libc/kernel/common/linux/netfilter_ipv6/ip6t_HL.h
|
||||
|
||||
cd external/tcpdump;
|
||||
git update-index --assume-unchanged \
|
||||
tests/print-X.new \
|
||||
tests/print-XX.new
|
||||
|
||||
|
||||
Here's a script that takes care of all these details. It performs the repo
|
||||
init, creates the appropriate local_manifest.xml, does a repo sync as
|
||||
needed and tell git to ignore the offending files:
|
||||
|
||||
------------
|
||||
#!/bin/bash
|
||||
|
||||
set -e # fail on errors
|
||||
|
||||
URL=ssh://android-git.corp.google.com:29418/platform/manifest.git
|
||||
BRANCH=donut
|
||||
if [ "$1" == "-b" ]; then shift; BRANCH=$1; shift; fi
|
||||
|
||||
# repo init if there's no .repo directory
|
||||
if [[ ! -d .repo ]]; then
|
||||
repo init -u $URL -b $BRANCH
|
||||
fi
|
||||
|
||||
# create a local_manifest to exclude projects that cause problems under Windows
|
||||
# due to the case-insenstivines of the file system.
|
||||
L=.repo/local_manifest.xml
|
||||
if [[ ! -f $L ]]; then
|
||||
|
||||
cat > $L <<EOF
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<manifest>
|
||||
<remove-project name="platform/external/iptables" />
|
||||
</manifest>
|
||||
EOF
|
||||
fi
|
||||
|
||||
# sync using the native ssh client if necessary
|
||||
[[ $URL != ${URL/ssh/} ]] && export GIT_SSH=ssh
|
||||
repo sync $@
|
||||
|
||||
|
||||
# These files cause trouble too, we need to ignore them
|
||||
(cd bionic;
|
||||
git update-index --assume-unchanged \
|
||||
libc/kernel/common/linux/netfilter/xt_CONNMARK.h \
|
||||
libc/kernel/common/linux/netfilter/xt_MARK.h \
|
||||
libc/kernel/common/linux/netfilter_ipv6/ip6t_HL.h
|
||||
)
|
||||
(cd external/tcpdump;
|
||||
git update-index --assume-unchanged \
|
||||
tests/print-X.new \
|
||||
tests/print-XX.new
|
||||
)
|
||||
------------
|
||||
|
||||
Simply extract this to a "my_sync.sh" file and try the following:
|
||||
$ mkdir android_src
|
||||
$ cd android_src
|
||||
$ chmod +x mysync.sh
|
||||
$ ./mysync.sh
|
||||
|
||||
|
||||
-end-
|
||||
|
||||
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue