From 05a2a53f9cc7e75b4a3838ab9368cadf0f15ba1b Mon Sep 17 00:00:00 2001 From: Anuj Mittal Date: Thu, 16 Aug 2018 14:26:33 +0800 Subject: python3: enable profile optimized builds Enable profile guided optimization (pgo) for python3. Enabling pgo in python is generally as simple as invoking the target profile-opt which: - builds python binaries with profile instrumentation enabled, - runs a specific profile task using that python to get the profile data and, - feeds the compiler with this profile data and rebuilds python. This change invokes qemu-user for the second step of running a profile task using target python. Depending on how long profile task takes to run, this might add a significant time to compilation (which would be true for native builds too). The default profile task can be changed by the users depending on what makes sense for their use case (or can be left empty). In case qemu-user isn't supported, profile task won't be run. Signed-off-by: Anuj Mittal Signed-off-by: Richard Purdie --- ...le-add-target-to-split-profile-generation.patch | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 meta/recipes-devtools/python/python3/0002-Makefile-add-target-to-split-profile-generation.patch (limited to 'meta/recipes-devtools/python/python3/0002-Makefile-add-target-to-split-profile-generation.patch') diff --git a/meta/recipes-devtools/python/python3/0002-Makefile-add-target-to-split-profile-generation.patch b/meta/recipes-devtools/python/python3/0002-Makefile-add-target-to-split-profile-generation.patch new file mode 100644 index 0000000000..bb01c5bcb4 --- /dev/null +++ b/meta/recipes-devtools/python/python3/0002-Makefile-add-target-to-split-profile-generation.patch @@ -0,0 +1,40 @@ +From 98586d6dc598e40b8b821b0dde57599e188a7ca4 Mon Sep 17 00:00:00 2001 +From: Anuj Mittal +Date: Tue, 7 Aug 2018 16:43:17 +0800 +Subject: [PATCH 2/2] Makefile: add target to split profile generation + +We don't want to have profile task invoked from here and want to use +qemu-user instead. Split the profile-opt task so qemu can be invoked +once binaries have been built with instrumentation and then we can go +ahead and build again using the profile data generated. + +Upstream-Status: Inappropriate [OE-specific] + +Signed-off-by: Anuj Mittal +--- + Makefile.pre.in | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 84bc3ff..017a2c4 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -469,13 +469,11 @@ profile-opt: + $(MAKE) profile-removal + $(MAKE) build_all_generate_profile + $(MAKE) profile-removal +- @echo "Running code to generate profile data (this can take a while):" +- $(MAKE) run_profile_task +- $(MAKE) build_all_merge_profile ++ ++clean_and_use_profile: + @echo "Rebuilding with profile guided optimizations:" + $(MAKE) clean + $(MAKE) build_all_use_profile +- $(MAKE) profile-removal + + build_all_generate_profile: + $(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS) $(EXTRA_CFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LDFLAGS="$(LDFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LIBS="$(LIBS)" +-- +2.17.1 + -- cgit v1.2.3