[Buildroot] [PATCH 9/9] Add support for cloning Linux git trees

Grant Likely grant.likely at secretlab.ca
Thu Oct 16 20:33:01 UTC 2008


From: Grant Likely <grant.likely at secretlab.ca>

Add an option in Linux advanced configuration to clone a git repository
directly (without a snapshot tarball).

---

This patch depends on the earlier patch to add the variable
$(LINUX26_VERSION_MOD) because the value of $(LINUX26_VERSION) is set
to 'git' here, but the kernel could report just about any version string.
---

 target/linux/Config.in.advanced   |   30 ++++++++++++++++++++++++++++++
 target/linux/Makefile.in.advanced |   12 ++++++++++++
 2 files changed, 42 insertions(+), 0 deletions(-)


diff --git a/target/linux/Config.in.advanced b/target/linux/Config.in.advanced
index 798a662..350129b 100644
--- a/target/linux/Config.in.advanced
+++ b/target/linux/Config.in.advanced
@@ -15,6 +15,10 @@ if BR2_KERNEL_LINUX_ADVANCED
 # BR2_CUSTOM_LINUX26_PATCH_SITE
 # BR2_CUSTOM_LINUX26_PATCH
 #
+# BR2_LINUX26_GIT
+# BR2_LINUX26_GIT_URL
+# BR2_LINUX26_GIT_BRANCH
+#
 # BR2_LINUX_BSP_PATCH
 #
 # BR2_PACKAGE_LINUX_USE_KCONFIG
@@ -140,6 +144,11 @@ config BR2_LINUX_2_6_STABLE
 	help
 	  Linux 2.6.26.3
 
+config BR2_LINUX26_GIT
+	bool "Use a Linux git repository"
+	help
+	  Clone from a git tree.
+
 config BR2_LINUX_2_6_26
 	bool "Linux 2.6.26"
 	select BR2_KERNEL_BASE
@@ -253,6 +262,26 @@ config BR2_CUSTOM_LINUX26_PATCH_SITE
 
 endif
 
+if BR2_LINUX26_GIT
+config BR2_LINUX26_GIT_URL
+	string "git URL"
+	default "file:///path/to/git/tree/linux-2.6/"
+	help
+	  URL to git repository
+
+	  Any git URL works here, but you may find it more efficient to
+	  clone from a tree on the same local filesystem using the file:///
+	  protocol.  The file:/// protocol allows git to hardlink to the
+	  respository database which is faster and is requires less disk
+	  space.
+
+config BR2_LINUX26_GIT_BRANCH
+	string "git branch"
+	default "master"
+	help
+	  Name of branch to use in get repository
+endif
+
 # -----------------------------------------------
 
 menu "Patches"
@@ -418,6 +447,7 @@ config BR2_LINUX26_VERSION
 	default "2.6.22.10" if BR2_LINUX_2_6_22_10
 	default "$(BR2_KERNEL_CURRENT_VERSION)"if BR2_LINUX_2_6_STABLE
 	default $(BR2_CUSTOM_LINUX26_VERSION) if BR2_LINUX26_CUSTOM
+	default "git" if BR2_LINUX26_GIT
 
 menu "Linux Kernel Configuration"
 
diff --git a/target/linux/Makefile.in.advanced b/target/linux/Makefile.in.advanced
index 9c6df1f..b0cb03e 100644
--- a/target/linux/Makefile.in.advanced
+++ b/target/linux/Makefile.in.advanced
@@ -209,6 +209,7 @@ $(DL_DIR)/$(LINUX26_PATCH_SOURCE):
 	 $(WGET) -P $(DL_DIR) $(LINUX26_PATCH_SITE)/$(LINUX26_PATCH_SOURCE)
 endif
 
+ifneq ($(BR2_LINUX26_GIT),y)
 $(LINUX26_DIR)/.unpacked: $(DL_DIR)/$(LINUX26_SOURCE)
 	rm -rf $(LINUX26_DIR)
 	@echo "*** Unpacking kernel source"
@@ -218,6 +219,14 @@ ifneq ($(DOWNLOAD_LINUX26_VERSION),$(LINUX26_VERSION))
 	mv -f $(PROJECT_BUILD_DIR)/linux-$(DOWNLOAD_LINUX26_VERSION) $(LINUX26_DIR)
 endif
 	touch $@
+else
+$(LINUX26_DIR)/.unpacked:
+	@echo "*** Cloning kernel git tree"
+	git clone --depth 1 $(BR2_LINUX26_GIT_URL) $(LINUX26_DIR)
+	cd $(LINUX26_DIR) && \
+		git reset --hard origin/$(BR2_LINUX26_GIT_BRANCH)
+	touch $@
+endif # BR2_LINUX26_GIT
 
 
 # -----------------------------------------------------------------------------
@@ -499,6 +508,9 @@ linux-status:
 	@echo BR2_LINUX26_CUSTOM=$(BR2_LINUX26_CUSTOM)
 	@echo BR2_CUSTOM_LINUX26_PATCH_SITE=$(BR2_CUSTOM_LINUX26_PATCH_SITE)
 	@echo BR2_CUSTOM_LINUX26_PATCH=$(BR2_CUSTOM_LINUX26_PATCH)
+	@echo BR2_LINUX26_GIT=$(BR2_LINUX26_GIT)
+	@echo BR2_LINUX26_GIT_URL=$(BR2_LINUX26_GIT_URL)
+	@echo BR2_LINUX26_GIT_BRANCH=$(BR2_LINUX26_GIT_BRANCH)
 	@echo BR2_LINUX_BSP_PATCH=$(BR2_LINUX_BSP_PATCH)
 	@echo BR2_PACKAGE_LINUX_USE_KCONFIG=$(BR2_PACKAGE_LINUX_USE_KCONFIG)
 	@echo BR2_PACKAGE_LINUX_USE_DEFCONFIG=$(BR2_PACKAGE_LINUX_USE_DEFCONFIG)




More information about the buildroot mailing list