diff options
Diffstat (limited to 'meta/classes/populate_sdk_deb.bbclass')
-rw-r--r-- | meta/classes/populate_sdk_deb.bbclass | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/meta/classes/populate_sdk_deb.bbclass b/meta/classes/populate_sdk_deb.bbclass new file mode 100644 index 0000000000..ebb842ba86 --- /dev/null +++ b/meta/classes/populate_sdk_deb.bbclass | |||
@@ -0,0 +1,95 @@ | |||
1 | do_populate_sdk[depends] += "dpkg-native:do_populate_sysroot apt-native:do_populate_sysroot bzip2-native:do_populate_sysroot" | ||
2 | do_populate_sdk[recrdeptask] += "do_package_write_deb" | ||
3 | |||
4 | |||
5 | DEB_SDK_ARCH = "${@[d.getVar('SDK_ARCH', True), "i386"]\ | ||
6 | [d.getVar('SDK_ARCH', True) in \ | ||
7 | ["x86", "i486", "i586", "i686", "pentium"]]}" | ||
8 | |||
9 | do_populate_sdk[lockfiles] += "${DEPLOY_DIR_DEB}/deb.lock" | ||
10 | |||
11 | populate_sdk_post_deb () { | ||
12 | |||
13 | local target_rootfs=$1 | ||
14 | |||
15 | mkdir -p ${target_rootfs}/etc | ||
16 | tar -cf - -C ${STAGING_ETCDIR_NATIVE} -p apt | tar -xf - -C ${target_rootfs}/etc | ||
17 | } | ||
18 | |||
19 | populate_sdk_deb () { | ||
20 | |||
21 | # update index | ||
22 | package_update_index_deb | ||
23 | |||
24 | ## install target ## | ||
25 | # This needs to work in the same way as rootfs_deb.bbclass | ||
26 | echo "Installing TARGET packages" | ||
27 | |||
28 | mkdir -p ${IMAGE_ROOTFS}/var/dpkg/alternatives | ||
29 | |||
30 | export INSTALL_ROOTFS_DEB="${SDK_OUTPUT}/${SDKTARGETSYSROOT}" | ||
31 | export INSTALL_BASEARCH_DEB="${DPKG_ARCH}" | ||
32 | export INSTALL_ARCHS_DEB="${PACKAGE_ARCHS}" | ||
33 | export INSTALL_PACKAGES_NORMAL_DEB="${TOOLCHAIN_TARGET_TASK}" | ||
34 | export INSTALL_PACKAGES_ATTEMPTONLY_DEB="${TOOLCHAIN_TARGET_TASK_ATTEMPTONLY}" | ||
35 | export PACKAGES_LINGUAS_DEB="" | ||
36 | export INSTALL_TASK_DEB="populate_sdk-target" | ||
37 | export INTERCEPT_DIR=${WORKDIR}/intercept_scripts | ||
38 | export NATIVE_ROOT=${STAGING_DIR_NATIVE} | ||
39 | |||
40 | package_install_internal_deb | ||
41 | |||
42 | ${POPULATE_SDK_POST_TARGET_COMMAND} | ||
43 | |||
44 | populate_sdk_post_deb ${INSTALL_ROOTFS_DEB} | ||
45 | |||
46 | populate_sdk_log_check populate_sdk | ||
47 | |||
48 | ## install nativesdk ## | ||
49 | echo "Installing NATIVESDK packages" | ||
50 | export INSTALL_ROOTFS_DEB="${SDK_OUTPUT}" | ||
51 | export INSTALL_BASEARCH_DEB="${DEB_SDK_ARCH}" | ||
52 | export INSTALL_ARCHS_DEB="${SDK_PACKAGE_ARCHS}" | ||
53 | export INSTALL_PACKAGES_NORMAL_DEB="${TOOLCHAIN_HOST_TASK}" | ||
54 | export INSTALL_PACKAGES_ATTEMPTONLY_DEB="${TOOLCHAIN_HOST_TASK_ATTEMPTONLY}" | ||
55 | export PACKAGES_LINGUAS_DEB="" | ||
56 | export INSTALL_TASK_DEB="populate_sdk-nativesdk" | ||
57 | |||
58 | package_install_internal_deb | ||
59 | ${POPULATE_SDK_POST_HOST_COMMAND} | ||
60 | populate_sdk_post_deb ${SDK_OUTPUT}/${SDKPATHNATIVE} | ||
61 | |||
62 | #move remainings | ||
63 | install -d ${SDK_OUTPUT}/${SDKPATHNATIVE}/var/lib/dpkg | ||
64 | mv ${SDK_OUTPUT}/var/lib/dpkg/* ${SDK_OUTPUT}/${SDKPATHNATIVE}/var/lib/dpkg | ||
65 | rm -rf ${SDK_OUTPUT}/var | ||
66 | |||
67 | populate_sdk_log_check populate_sdk | ||
68 | } | ||
69 | |||
70 | # This will of course only work after rootfs_deb_do_rootfs or populate_sdk_deb has been called | ||
71 | DPKG_QUERY_COMMAND = "${STAGING_BINDIR_NATIVE}/dpkg-query --admindir=$INSTALL_ROOTFS_DEB/var/lib/dpkg" | ||
72 | |||
73 | list_installed_packages() { | ||
74 | if [ "$1" = "arch" ] ; then | ||
75 | # Here we want the PACKAGE_ARCH not the deb architecture | ||
76 | ${DPKG_QUERY_COMMAND} -W -f='${Package} ${PackageArch}\n' | ||
77 | elif [ "$1" = "file" ] ; then | ||
78 | ${DPKG_QUERY_COMMAND} -W -f='${Package} ${Package}_${Version}_${Architecture}.deb ${PackageArch}\n' | while read pkg pkgfile pkgarch | ||
79 | do | ||
80 | fullpath=`find ${DEPLOY_DIR_DEB} -name "$pkgfile" || true` | ||
81 | if [ "$fullpath" = "" ] ; then | ||
82 | echo "$pkg $pkgfile $pkgarch" | ||
83 | else | ||
84 | echo "$pkg $fullpath $pkgarch" | ||
85 | fi | ||
86 | done | ||
87 | else | ||
88 | ${DPKG_QUERY_COMMAND} -W -f='${Package}\n' | ||
89 | fi | ||
90 | } | ||
91 | |||
92 | rootfs_list_installed_depends() { | ||
93 | # Cheat here a little bit by using the opkg query helper util | ||
94 | ${DPKG_QUERY_COMMAND} -W -f='Package: ${Package}\nDepends: ${Depends}\nRecommends: ${Recommends}\n\n' | opkg-query-helper.py | ||
95 | } | ||