From 86ac8bc7ea0e5f72de0491a6cc03c38e4d3424a0 Mon Sep 17 00:00:00 2001
From: Hamish Guthrie <hcg@openwrt.org>
Date: Fri, 10 Oct 2008 10:07:45 +0000
Subject: [PATCH] Adds support for using a local clone of a git tree

SVN-Revision: 12941
---
 Config.in                  | 20 ++++++++++++++++++++
 include/kernel-defaults.mk | 20 ++++++++++++++++----
 2 files changed, 36 insertions(+), 4 deletions(-)

diff --git a/Config.in b/Config.in
index 95b9a4bc82..2e86d02cf5 100644
--- a/Config.in
+++ b/Config.in
@@ -159,6 +159,26 @@ config EXTERNAL_KERNEL_TREE
 	prompt "Use external kernel tree" if BUILDOPTS
 	default ""
 
+config KERNEL_GIT_CLONE_URI
+	string
+	prompt "Enter git repository to clone" if BUILDOPTS
+	default ""
+	help 
+		Enter the full git repository path i.e.:
+		git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
+		This will create a git clone of the kernel in your build
+		directory.
+		
+
+config KERNEL_GIT_LOCAL_REPOSITORY
+	string
+	prompt "Enter path to local reference repository" if BUILDOPTS
+	default ""
+	help
+		Enter a full pathname to a local reference git repository.
+		In this instance, the --refererence option of git clone will
+		be used thus creating a quick local clone of your repo.
+
 source "toolchain/Config.in"
 
 source "target/imagebuilder/Config.in"
diff --git a/include/kernel-defaults.mk b/include/kernel-defaults.mk
index 90761bf014..46f7e00046 100644
--- a/include/kernel-defaults.mk
+++ b/include/kernel-defaults.mk
@@ -34,19 +34,31 @@ endif
 # defined in quilt.mk
 Kernel/Patch:=$(Kernel/Patch/Default)
 ifeq ($(strip $(CONFIG_EXTERNAL_KERNEL_TREE)),"")
-define Kernel/Prepare/Default
+  ifeq ($(strip $(CONFIG_KERNEL_GIT_CLONE_URI)),"")
+    define Kernel/Prepare/Default
 	bzcat $(DL_DIR)/$(LINUX_SOURCE) | $(TAR) -C $(KERNEL_BUILD_DIR) $(TAR_OPTIONS)
 	$(Kernel/Patch)
 	touch $(LINUX_DIR)/.quilt_used
-endef
-else
+    endef
+  else
+    ifeq ($(strip $(CONFIG_KERNEL_GIT_LOCAL_REPOSITORY)),"")
 define Kernel/Prepare/Default
+	git clone $(CONFIG_KERNEL_GIT_CLONE_URI) $(LINUX_DIR)
+    endef
+  else
+    define Kernel/Prepare/Default
+	git clone --reference $(CONFIG_KERNEL_GIT_LOCAL_REPOSITORY) $(CONFIG_KERNEL_GIT_CLONE_URI) $(LINUX_DIR) 
+    endef
+  endif
+endif
+else
+  define Kernel/Prepare/Default
 	mkdir -p $(KERNEL_BUILD_DIR)
 	if [ -d $(LINUX_DIR) ]; then \
 		rmdir $(LINUX_DIR); \
 	fi
 	ln -s $(CONFIG_EXTERNAL_KERNEL_TREE) $(LINUX_DIR)
-endef
+  endef
 endif
 
 ifeq ($(KERNEL),2.6)
-- 
GitLab