diff options
Diffstat (limited to 'docs/howto_SDK_git_cygwin.txt')
-rw-r--r-- | docs/howto_SDK_git_cygwin.txt | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/docs/howto_SDK_git_cygwin.txt b/docs/howto_SDK_git_cygwin.txt new file mode 100644 index 000000000..622c5928b --- /dev/null +++ b/docs/howto_SDK_git_cygwin.txt @@ -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- + + + + |