image-mklibs.bbclass 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. do_rootfs[depends] += "mklibs-native:do_populate_sysroot"
  2. IMAGE_PREPROCESS_COMMAND += "mklibs_optimize_image; "
  3. inherit linuxloader
  4. mklibs_optimize_image_doit() {
  5. rm -rf ${WORKDIR}/mklibs
  6. mkdir -p ${WORKDIR}/mklibs/dest
  7. cd ${IMAGE_ROOTFS}
  8. du -bs > ${WORKDIR}/mklibs/du.before.mklibs.txt
  9. # Build a list of dynamically linked executable ELF files.
  10. # Omit libc/libpthread as a special case because it has an interpreter
  11. # but is primarily what we intend to strip down.
  12. for i in `find . -type f -executable ! -name 'libc-*' ! -name 'libpthread-*'`; do
  13. file $i | grep -q ELF || continue
  14. ${HOST_PREFIX}readelf -l $i | grep -q INTERP || continue
  15. echo $i
  16. done > ${WORKDIR}/mklibs/executables.list
  17. dynamic_loader=${@get_linuxloader(d)}
  18. mklibs -v \
  19. --ldlib ${dynamic_loader} \
  20. --libdir ${baselib} \
  21. --sysroot ${PKG_CONFIG_SYSROOT_DIR} \
  22. --gcc-options "--sysroot=${PKG_CONFIG_SYSROOT_DIR}" \
  23. --root ${IMAGE_ROOTFS} \
  24. --target `echo ${TARGET_PREFIX} | sed 's/-$//' ` \
  25. -d ${WORKDIR}/mklibs/dest \
  26. `cat ${WORKDIR}/mklibs/executables.list`
  27. cd ${WORKDIR}/mklibs/dest
  28. for i in *
  29. do
  30. cp $i `find ${IMAGE_ROOTFS} -name $i`
  31. done
  32. cd ${IMAGE_ROOTFS}
  33. du -bs > ${WORKDIR}/mklibs/du.after.mklibs.txt
  34. echo rootfs size before mklibs optimization: `cat ${WORKDIR}/mklibs/du.before.mklibs.txt`
  35. echo rootfs size after mklibs optimization: `cat ${WORKDIR}/mklibs/du.after.mklibs.txt`
  36. }
  37. mklibs_optimize_image() {
  38. for img in ${MKLIBS_OPTIMIZED_IMAGES}
  39. do
  40. if [ "${img}" = "${PN}" ] || [ "${img}" = "all" ]
  41. then
  42. mklibs_optimize_image_doit
  43. break
  44. fi
  45. done
  46. }