Hi List,

How you already know, I use OpenWRT as building environment for my daily 
activities.

Usually I work on a single package for a lot of days and I need to create 
quickly a bootable build.

My wish is to have a shortcut that avoid all time-consuming targets into the 
makefiles in order to produce my build for the rapid tests.

My typical day:

cd build_dir/my_arch/my_package
vi file1
vi file2
vi file3
...
cd ../../..
make V=99
cp bin/image.img /tftpboot

I would like to have a mechanism (using a global variable, ie QUICK=1) in 
order to avoid all compilation targets and just entrusting the 
my_package-{compile,install} to the developer.

My hypothetical future day:

cd build_dir/my_arch/my_package
vi file1
vi file2
vi file3
...
cd ../../..
make package/my_package-compile
make package/my_package-install
make V=99 QUICK=1             #   fast!
cp bin/image.img /tftpboot

The idea is that when you develop on just a package, the others are unmodified 
and all build/install activities can be safety skipped. QUICK=1 should just 
enable the final filesystem image generation.

At this time I spend ~10min for each build... and this is not good. I'm 
working on a patch for reduce the time, but I don't perfectly know the 
complete targets dependencies and the actual patch version gain just 2 
minutes.

Suggestion are welcome and I'm interested to have your opinions.


Best regards,

luigi


--

Luigi 'Comio' Mantellini

R&D - Software
Industrie Dial Face S.p.A.
Via Canzo, 4
20068 Peschiera Borromeo (MI), Italy
Tel.:  +39 02 5167 2813
Fax:   +39 02 5167 2459
Email: luigi.mantell...@idf-hit.com

diff --git a/include/image.mk b/include/image.mk
index e70143d..eaacd3b 100644
--- a/include/image.mk
+++ b/include/image.mk
@@ -136,11 +136,15 @@ define BuildImage
 download:
 prepare:
 ifneq ($(IB),1)
+ifeq ($(QUICK),)
   compile: compile-targets FORCE
 	$(call Build/Compile)
 else
   compile:
 endif
+else
+  compile:
+endif
 
 ifneq ($(IB),1)
   install: compile install-targets FORCE
diff --git a/include/kernel-build.mk b/include/kernel-build.mk
index 4774a69..ead797e 100644
--- a/include/kernel-build.mk
+++ b/include/kernel-build.mk
@@ -26,9 +26,11 @@ define Kernel/Configure
 	$(call Kernel/Configure/Default)
 endef
 
+ifeq ($(QUICK),)
 define Kernel/CompileModules
 	$(call Kernel/CompileModules/Default)
 endef
+endif
 
 define Kernel/CompileImage
 	$(call Kernel/CompileImage/Default)
@@ -54,19 +56,34 @@ define BuildKernel
   $(if $(QUILT),$(Build/Quilt))
   $(if $(LINUX_SITE),$(call Download,kernel))
 
+ifeq ($(QUICK),)
   $(STAMP_PREPARED): $(DL_DIR)/$(LINUX_SOURCE)
 	-rm -rf $(KERNEL_BUILD_DIR)
 	-mkdir -p $(KERNEL_BUILD_DIR)
 	$(Kernel/Prepare)
 	touch $$@
+else
+  $(STAMP_PREPARED): $(DL_DIR)/$(LINUX_SOURCE)
+	touch $$@
+endif
 
+ifeq ($(QUICK),)
   $(STAMP_CONFIGURED): $(STAMP_PREPARED) $(LINUX_CONFIG) $(GENERIC_LINUX_CONFIG) $(TOPDIR)/.config
 	$(Kernel/Configure)
 	touch $$@
+else
+  $(STAMP_CONFIGURED): $(STAMP_PREPARED) $(LINUX_CONFIG) $(GENERIC_LINUX_CONFIG) $(TOPDIR)/.config
+	touch $$@
+endif
 
+ifeq ($(QUICK),)
   $(LINUX_DIR)/.modules: $(STAMP_CONFIGURED) $(LINUX_DIR)/.config FORCE
 	$(Kernel/CompileModules)
 	touch $$@
+else
+  $(LINUX_DIR)/.modules: $(STAMP_CONFIGURED) $(LINUX_DIR)/.config FORCE
+	touch $$@
+endif
 
   $(LINUX_DIR)/.image: $(STAMP_CONFIGURED) FORCE
 	$(Kernel/CompileImage)
diff --git a/include/package-ipkg.mk b/include/package-ipkg.mk
index 8d2ff83..f9359ea 100644
--- a/include/package-ipkg.mk
+++ b/include/package-ipkg.mk
@@ -82,7 +82,7 @@ ifeq ($(DUMP),)
 		$($(1)_COMMANDS) \
 	)
 
-    $$(IPKG_$(1)): $(STAGING_DIR)/etc/ipkg.conf $(PKG_BUILD_DIR)/.built $$(IDIR_$(1))/CONTROL/control
+    $$(IPKG_$(1)): $(STAGING_DIR)/etc/ipkg.conf $(PKG_BUILD_DIR)/.built $(if $(QUICK),,$$(IDIR_$(1))/CONTROL/control)
 	$(call Package/$(1)/install,$$(IDIR_$(1)))
 	mkdir -p $(PACKAGE_DIR)
 	-find $$(IDIR_$(1)) -name 'CVS' -o -name '.svn' -o -name '.#*' | $(XARGS) rm -rf
diff --git a/include/package.mk b/include/package.mk
index dd81767..237e1ba 100644
--- a/include/package.mk
+++ b/include/package.mk
@@ -102,6 +102,7 @@ define Build/DefaultTargets
   $(call Build/Autoclean)
 
   $(STAMP_PREPARED) : export PATH=$$(TARGET_PATH_PKG)
+ifeq ($(QUICK),)
   $(STAMP_PREPARED):
 	$(if $(wildcard $(STAMP_KEEP)),
 	echo Preserve $(PKG_NAME) sources...
@@ -113,15 +114,25 @@ define Build/DefaultTargets
 	$(foreach hook,$(Hooks/Prepare/Post),$(call $(hook))$(sep))
 	)
 	touch $$@
+else
+  $(STAMP_PREPARED):
+	touch $$@
+endif
 
   $(call Build/Exports,$(STAMP_CONFIGURED))
+ifeq ($(QUICK),)
   $(STAMP_CONFIGURED): $(STAMP_PREPARED)
 	$(foreach hook,$(Hooks/Configure/Pre),$(call $(hook))$(sep))
 	$(Build/Configure)
 	$(foreach hook,$(Hooks/Configure/Post),$(call $(hook))$(sep))
 	touch $$@
+else
+  $(STAMP_CONFIGURED): $(STAMP_PREPARED)
+	touch $$@
+endif
 
   $(call Build/Exports,$(STAMP_BUILT))
+ifeq ($(QUICK),)
   $(STAMP_BUILT): $(STAMP_CONFIGURED)
 	$(foreach hook,$(Hooks/Compile/Pre),$(call $(hook))$(sep))
 	$(Build/Compile)
@@ -129,8 +140,15 @@ define Build/DefaultTargets
 	$(Build/Install)
 	$(foreach hook,$(Hooks/Install/Post),$(call $(hook))$(sep))
 	touch $$@
+else
+  $(STAMP_BUILT): $(STAMP_CONFIGURED)
+	$(Build/Install)
+	$(foreach hook,$(Hooks/Install/Post),$(call $(hook))$(sep))
+	touch $$@
+endif
 
   $(STAMP_INSTALLED) : export PATH=$$(TARGET_PATH_PKG)
+ifeq ($(QUICK),)
   $(STAMP_INSTALLED): $(STAMP_BUILT)
 	$(SUBMAKE) -j1 clean-staging
 	rm -rf $(TMP_DIR)/stage-$(PKG_NAME)
@@ -148,6 +166,10 @@ define Build/DefaultTargets
 	fi
 	rm -rf $(TMP_DIR)/stage-$(PKG_NAME)
 	touch $$@
+else
+  $(STAMP_INSTALLED): $(STAMP_BUILT)
+	touch $$@
+endif
 
   ifdef Build/InstallDev
     compile: $(STAMP_INSTALLED)
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to