From 3f3cded06b6d910e3686e088967a9ff633484ef8 Mon Sep 17 00:00:00 2001 From: Ben Nemec Date: Wed, 17 Jun 2015 12:25:26 -0500 Subject: [PATCH] Optimize Python install in deploy-targetcli Installing Python to a ramdisk takes quite a long time because of the way dracut checks for dependencies of every single file installed. We could avoid that, but then we might miss a required library file. This change alters the installation method to speed up the process. First, it creates a list of files that are needed and then installs them all at once using inst_multiple instead of calling inst on each file separately. This doesn't make a huge difference, but in my testing it is marginally faster. Second, and more significantly, we don't need the *.pyo and *.pyc files as those are simply an optimization to speed up module loading. Because the deploy ramdisk is a short-lived operation, we probably lose more time transferring those extra files to the target system than we save in improved load times. In my testing, these two changes netted about a 20% improvement in build times, and about 13% decrease in image size. Change-Id: Ibc2b778c28fc9fb7177380dffe8dbce5722d0733 --- .../deploy-targetcli/extra-data.d/module/module-setup.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/elements/deploy-targetcli/extra-data.d/module/module-setup.sh b/elements/deploy-targetcli/extra-data.d/module/module-setup.sh index 6c32668f..9c3fad1f 100755 --- a/elements/deploy-targetcli/extra-data.d/module/module-setup.sh +++ b/elements/deploy-targetcli/extra-data.d/module/module-setup.sh @@ -19,7 +19,9 @@ install() { # TODO(bnemec): At some point this will need to be extended to support # Python 3, but for the moment we aren't using that anyway. inst /usr/bin/python + local all_of_python=() while IFS='' read -r -d '' i; do - inst "$i" - done < <(find /usr/lib64/python2.7/ /usr/lib/python2.7/ -type f -print0) + all_of_python+=("$i") + done < <(find /usr/lib64/python2.7/ /usr/lib/python2.7/ -type f -not -name "*.pyc" -not -name "*.pyo" -print0) + inst_multiple "${all_of_python[@]}" }