Hello. I'm not very good with make and I need to make many changes to my
kernel .config for debugging. I wrote a patch to add an option to tell
OpenWRT to leave it alone, but I don't understand this build system very
well and it seems to always prevent the kernel .config from being
modified as well as leading to modules & kernel always being rebuilt.
Would somebody be kind enough to fix it for me? :)

I'm new to this project and I'm working with a device that has a crappy
u-boot build installed on it. I need to run a debug kernel, but any time
I attempt to tftp it to the device (directly to RAM) it fails to boot.
If I send the whole damn sysupgrade via lcui then it works. Thus, if I
upload a bad sysupgrade, I can potentially get locked out of the device
until I manually flash the SPI (and I don't know how to do that yet, I
guess some type of jtag?). So rather than just manually building my
kernel and building a sysupgrade by hand, I would rather the build do it
out of caution for messing it up.

Oh yeah, and I'm using CC at this commit:
0625aaa6f37dcf6a2ffb611245fa9b6477642b78 -- of which I have no choice
about. But if anybody can get that to work for the 17.x head, I can
backport it.

Thanks in advance!
Daniel
>From 04d9b710782308106e6b37d40f3f08cba04e57fd Mon Sep 17 00:00:00 2001
From: Daniel Santos <daniel.san...@pobox.com>
Date: Thu, 8 Mar 2018 22:39:33 -0600
Subject: [PATCH] external kernel .config

---
 config/Config-devel.in     | 8 ++++++++
 include/kernel-build.mk    | 4 ++--
 include/kernel-defaults.mk | 8 ++++++++
 3 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/config/Config-devel.in b/config/Config-devel.in
index d096c18a72..8603010485 100644
--- a/config/Config-devel.in
+++ b/config/Config-devel.in
@@ -65,6 +65,14 @@ menuconfig DEVEL
 		string "Use external kernel tree" if DEVEL
 		default ""
 
+	config EXTERNAL_KERNEL_CONFIG
+		bool "Use .config in external kernel tree (and do not modify it)." if DEVEL
+		depends on (EXTERNAL_KERNEL_TREE != "")
+		default N
+		help
+		  If enabled, OpenWRT will not generate or modify the .config
+		  file in the external kernel tree.
+
 	config KERNEL_GIT_CLONE_URI
 		string "Enter git repository to clone" if DEVEL
 		default ""
diff --git a/include/kernel-build.mk b/include/kernel-build.mk
index 9abfd542e8..7f19a7260e 100644
--- a/include/kernel-build.mk
+++ b/include/kernel-build.mk
@@ -126,9 +126,9 @@ define BuildKernel
 
   oldconfig menuconfig nconfig: $(STAMP_PREPARED) $(STAMP_CHECKED) FORCE
 	rm -f $(STAMP_CONFIGURED)
-	$(LINUX_RECONF_CMD) > $(LINUX_DIR)/.config
+	$(ifdef EXTERNAL_KERNEL_CONFIG,,$(LINUX_RECONF_CMD) > $(LINUX_DIR)/.config)
 	$(_SINGLE)$(MAKE) -C $(LINUX_DIR) $(KERNEL_MAKEOPTS) $$@
-	$(LINUX_RECONF_DIFF) $(LINUX_DIR)/.config > $(LINUX_RECONFIG_TARGET)
+	$(ifdef EXTERNAL_KERNEL_CONFIG,,$(LINUX_RECONF_DIFF) $(LINUX_DIR)/.config > $(LINUX_RECONFIG_TARGET))
 
   install: $(LINUX_DIR)/.image
 	+$(MAKE) -C image compile install TARGET_BUILD=
diff --git a/include/kernel-defaults.mk b/include/kernel-defaults.mk
index 24d26308b1..454c9da53d 100644
--- a/include/kernel-defaults.mk
+++ b/include/kernel-defaults.mk
@@ -100,6 +100,7 @@ define Kernel/SetNoInitramfs
 	echo 'CONFIG_INITRAMFS_SOURCE=""' >> $(LINUX_DIR)/.config
 endef
 
+ifdef EXTERNAL_KERNEL_CONFIG
 define Kernel/Configure/Default
 	$(LINUX_CONF_CMD) > $(LINUX_DIR)/.config.target
 # copy CONFIG_KERNEL_* settings over to .config.target
@@ -114,6 +115,13 @@ define Kernel/Configure/Default
 	$(_SINGLE) [ -d $(LINUX_DIR)/user_headers ] || $(MAKE) $(KERNEL_MAKEOPTS) INSTALL_HDR_PATH=$(LINUX_DIR)/user_headers headers_install
 	$(SH_FUNC) grep '=[ym]' $(LINUX_DIR)/.config | LC_ALL=C sort | md5s > $(LINUX_DIR)/.vermagic
 endef
+else
+define Kernel/Configure/Default
+	rm -rf $(KERNEL_BUILD_DIR)/modules
+	$(_SINGLE) [ -d $(LINUX_DIR)/user_headers ] || $(MAKE) $(KERNEL_MAKEOPTS) INSTALL_HDR_PATH=$(LINUX_DIR)/user_headers headers_install
+	$(SH_FUNC) grep '=[ym]' $(LINUX_DIR)/.config | LC_ALL=C sort | md5s > $(LINUX_DIR)/.vermagic
+endef
+endif
 
 define Kernel/Configure/Initramfs
 	$(call Kernel/SetInitramfs)
-- 
2.15.0

_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to