aboutsummaryrefslogtreecommitdiff
path: root/docs/howto_SDK_git_cygwin.txt
diff options
context:
space:
mode:
Diffstat (limited to 'docs/howto_SDK_git_cygwin.txt')
-rw-r--r--docs/howto_SDK_git_cygwin.txt189
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-
+
+
+
+