Message ID | 20180430195512.6634-1-champetier.etienne@gmail.com |
---|---|
State | Accepted |
Delegated to: | John Crispin |
Headers | show |
Series | [LEDE-DEV,v2] build: log time taken by each packages/steps | expand |
On 30/04/18 21:55, Etienne Champetier wrote: > The idea is to easily get the list of packages taking the most time to build, > and see if we can improve them > > v1: Use SetupHostCommand as recommended by John > v2: add space after 'time:', remove useless /usr/bin/time from SetupHostCommand > > Signed-off-by: Etienne Champetier <champetier.etienne@gmail.com> Hi, just tried this patch. the output of looks like such time: package/libs/openssl/compile#19.67#5.56#31.33 it looks a bit odd and is not very prominent in the log. John > --- > include/prereq-build.mk | 4 ++++ > include/subdir.mk | 1 + > 2 files changed, 5 insertions(+) > > diff --git a/include/prereq-build.mk b/include/prereq-build.mk > index 5b9a7e049d..bac5fdc84c 100644 > --- a/include/prereq-build.mk > +++ b/include/prereq-build.mk > @@ -138,6 +138,10 @@ $(eval $(call SetupHostCommand,bzip2,Please install 'bzip2', \ > $(eval $(call SetupHostCommand,wget,Please install GNU 'wget', \ > wget --version | grep GNU)) > > +$(eval $(call SetupHostCommand,gtime,Please install GNU 'time', \ > + gtime --version 2>&1 | grep GNU, \ > + time --version 2>&1 | grep GNU)) > + > $(eval $(call SetupHostCommand,perl,Please install Perl 5.x, \ > perl --version | grep "perl.*v5")) > > diff --git a/include/subdir.mk b/include/subdir.mk > index 79a80528ae..ed4f7537d5 100644 > --- a/include/subdir.mk > +++ b/include/subdir.mk > @@ -43,6 +43,7 @@ log_make = \ > $(if $(BUILD_LOG), \ > set -o pipefail; \ > mkdir -p $(BUILD_LOG_DIR)/$(1)$(if $(4),/$(4));) \ > + gtime -f "time: $(1)$(if $(4),/$(4))/$(if $(3),$(3)-)$(2)\#%U\#%S\#%e" -- \ > $$(SUBMAKE) $(subdir_make_opts) $(if $(3),$(3)-)$(2) \ > $(if $(BUILD_LOG),SILENT= 2>&1 | tee $(BUILD_LOG_DIR)/$(1)$(if $(4),/$(4))/$(if $(3),$(3)-)$(2).txt) >
Hi John, 2018-05-01 2:47 GMT-07:00 John Crispin <john@phrozen.org>: > > > On 30/04/18 21:55, Etienne Champetier wrote: >> >> The idea is to easily get the list of packages taking the most time to >> build, >> and see if we can improve them >> >> v1: Use SetupHostCommand as recommended by John >> v2: add space after 'time:', remove useless /usr/bin/time from >> SetupHostCommand >> >> Signed-off-by: Etienne Champetier <champetier.etienne@gmail.com> > > > Hi, > just tried this patch. the output of looks like such > > time: package/libs/openssl/compile#19.67#5.56#31.33 My only goal is to extract that with a script and make some stats but I don't mind making it more human friendly, what about: # time taken by package/libs/openssl/compile: user=19.67 sys=5.56 real=31.33 (we can also start the line with = or ...) Let me know what you prefer > > it looks a bit odd and is not very prominent in the log. > > John > > >> --- >> include/prereq-build.mk | 4 ++++ >> include/subdir.mk | 1 + >> 2 files changed, 5 insertions(+) >> >> diff --git a/include/prereq-build.mk b/include/prereq-build.mk >> index 5b9a7e049d..bac5fdc84c 100644 >> --- a/include/prereq-build.mk >> +++ b/include/prereq-build.mk >> @@ -138,6 +138,10 @@ $(eval $(call SetupHostCommand,bzip2,Please install >> 'bzip2', \ >> $(eval $(call SetupHostCommand,wget,Please install GNU 'wget', \ >> wget --version | grep GNU)) >> +$(eval $(call SetupHostCommand,gtime,Please install GNU 'time', \ >> + gtime --version 2>&1 | grep GNU, \ >> + time --version 2>&1 | grep GNU)) >> + >> $(eval $(call SetupHostCommand,perl,Please install Perl 5.x, \ >> perl --version | grep "perl.*v5")) >> diff --git a/include/subdir.mk b/include/subdir.mk >> index 79a80528ae..ed4f7537d5 100644 >> --- a/include/subdir.mk >> +++ b/include/subdir.mk >> @@ -43,6 +43,7 @@ log_make = \ >> $(if $(BUILD_LOG), \ >> set -o pipefail; \ >> mkdir -p $(BUILD_LOG_DIR)/$(1)$(if $(4),/$(4));) \ >> + gtime -f "time: $(1)$(if $(4),/$(4))/$(if >> $(3),$(3)-)$(2)\#%U\#%S\#%e" -- \ >> $$(SUBMAKE) $(subdir_make_opts) $(if $(3),$(3)-)$(2) \ >> $(if $(BUILD_LOG),SILENT= 2>&1 | tee >> $(BUILD_LOG_DIR)/$(1)$(if $(4),/$(4))/$(if $(3),$(3)-)$(2).txt) >> > >
diff --git a/include/prereq-build.mk b/include/prereq-build.mk index 5b9a7e049d..bac5fdc84c 100644 --- a/include/prereq-build.mk +++ b/include/prereq-build.mk @@ -138,6 +138,10 @@ $(eval $(call SetupHostCommand,bzip2,Please install 'bzip2', \ $(eval $(call SetupHostCommand,wget,Please install GNU 'wget', \ wget --version | grep GNU)) +$(eval $(call SetupHostCommand,gtime,Please install GNU 'time', \ + gtime --version 2>&1 | grep GNU, \ + time --version 2>&1 | grep GNU)) + $(eval $(call SetupHostCommand,perl,Please install Perl 5.x, \ perl --version | grep "perl.*v5")) diff --git a/include/subdir.mk b/include/subdir.mk index 79a80528ae..ed4f7537d5 100644 --- a/include/subdir.mk +++ b/include/subdir.mk @@ -43,6 +43,7 @@ log_make = \ $(if $(BUILD_LOG), \ set -o pipefail; \ mkdir -p $(BUILD_LOG_DIR)/$(1)$(if $(4),/$(4));) \ + gtime -f "time: $(1)$(if $(4),/$(4))/$(if $(3),$(3)-)$(2)\#%U\#%S\#%e" -- \ $$(SUBMAKE) $(subdir_make_opts) $(if $(3),$(3)-)$(2) \ $(if $(BUILD_LOG),SILENT= 2>&1 | tee $(BUILD_LOG_DIR)/$(1)$(if $(4),/$(4))/$(if $(3),$(3)-)$(2).txt)
The idea is to easily get the list of packages taking the most time to build, and see if we can improve them v1: Use SetupHostCommand as recommended by John v2: add space after 'time:', remove useless /usr/bin/time from SetupHostCommand Signed-off-by: Etienne Champetier <champetier.etienne@gmail.com> --- include/prereq-build.mk | 4 ++++ include/subdir.mk | 1 + 2 files changed, 5 insertions(+)