]> code.ossystems Code Review - openembedded-core.git/commitdiff
prelink: Enable image wide prelinking
authorMark Hatle <mhatle@windriver.com>
Fri, 6 Aug 2010 18:40:55 +0000 (11:40 -0700)
committerRichard Purdie <rpurdie@linux.intel.com>
Thu, 12 Aug 2010 14:54:39 +0000 (15:54 +0100)
Add the ability to specify user level classes via the local.conf.

Use this new capability to add an image-prelink class that does an
image wide cross-prelink activity.

Signed-off-by: Mark Hatle <mhatle@windriver.com>
build/conf/local.conf.sample
meta/classes/image-prelink.bbclass [new file with mode: 0644]
meta/conf/distro/poky.conf

index 37c34d8f5e96aeddf071972725ea1bbb6d37b7b1..66acaa49a78de25de4f182f908dc19b494a77941 100644 (file)
@@ -75,6 +75,10 @@ EXTRA_IMAGE_FEATURES_mx31ads = "tools-testapps debug-tweaks"
 #PACKAGE_CLASSES ?= "package_deb package_ipk"
 PACKAGE_CLASSES ?= "package_ipk"
 
+# A list of additional classes to use when building the system
+# include 'image-prelink' in order to prelink the filesystem image
+USER_CLASSES ?= "image-prelink"
+
 # POKYMODE controls the characteristics of the generated packages/images by
 # telling poky which type of toolchain to use.
 #
diff --git a/meta/classes/image-prelink.bbclass b/meta/classes/image-prelink.bbclass
new file mode 100644 (file)
index 0000000..faf1814
--- /dev/null
@@ -0,0 +1,38 @@
+do_rootfs[depends] += "prelink-native:do_populate_sysroot"
+
+IMAGE_PREPROCESS_COMMAND += "prelink_image; "
+
+prelink_image () {
+#      export PSEUDO_DEBUG=4
+#      /bin/env | /bin/grep PSEUDO
+#      echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
+#      echo "LD_PRELOAD=$LD_PRELOAD"
+
+       pre_prelink_size=`du -ks ${IMAGE_ROOTFS} | awk '{size = $1 ; print size }'`
+       echo "Size before prelinking $pre_prelink_size."
+
+       # We need a prelink conf on the filesystem, add one if it's missing
+       if [ ! -e ${IMAGE_ROOTFS}/etc/prelink.conf ]; then
+               cp ${STAGING_DIR_NATIVE}/etc/prelink.conf \
+                       ${IMAGE_ROOTFS}/etc/prelink.conf
+               dummy_prelink_conf=true;
+       else
+               dummy_prelink_conf=false;
+       fi
+
+       # prelink!
+       ${STAGING_DIR_NATIVE}/usr/sbin/prelink --root ${IMAGE_ROOTFS} -amR
+
+       # Remove the prelink.conf if we had to add it.
+       if [ $dummy_prelink_conf ]; then
+               rm -f ${IMAGE_ROOTFS}/etc/prelink.conf
+       fi
+
+       # Cleanup temporary file, it's not needed...
+       rm -f ${IMAGE_ROOTFS}/etc/prelink.cache
+
+       pre_prelink_size=`du -ks ${IMAGE_ROOTFS} | awk '{size = $1 ; print size }'`
+       echo "Size after prelinking $pre_prelink_size."
+}
+
+EXPORT_FUNCTIONS prelink_image
index 1ee7ccf5118d476fa3f27def7b3103db2434317e..df07d04a90135ba0da44122f425e96aeb29bd102 100644 (file)
@@ -7,9 +7,11 @@ DISTRO_VERSION = "3.3+snapshot-${DATE}"
 
 MAINTAINER = "Poky <poky@openedhand.com>"
 
+USER_CLASSES ?= ""
+
 PACKAGE_CLASSES ?= "package_ipk"
 INHERIT_INSANE ?= "insane"
-INHERIT += "${PACKAGE_CLASSES} debian poky devshell ${INHERIT_INSANE} packaged-staging"
+INHERIT += "${PACKAGE_CLASSES} ${USER_CLASSES} debian poky devshell ${INHERIT_INSANE} packaged-staging"
 # For some reason, this doesn't work
 # TARGET_OS ?= "linux"
 # TARGET_VENDOR ?= "-poky"