summaryrefslogtreecommitdiffstats
path: root/meta/classes/populate_sdk_deb.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes/populate_sdk_deb.bbclass')
-rw-r--r--meta/classes/populate_sdk_deb.bbclass95
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 @@
1do_populate_sdk[depends] += "dpkg-native:do_populate_sysroot apt-native:do_populate_sysroot bzip2-native:do_populate_sysroot"
2do_populate_sdk[recrdeptask] += "do_package_write_deb"
3
4
5DEB_SDK_ARCH = "${@[d.getVar('SDK_ARCH', True), "i386"]\
6 [d.getVar('SDK_ARCH', True) in \
7 ["x86", "i486", "i586", "i686", "pentium"]]}"
8
9do_populate_sdk[lockfiles] += "${DEPLOY_DIR_DEB}/deb.lock"
10
11populate_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
19populate_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
71DPKG_QUERY_COMMAND = "${STAGING_BINDIR_NATIVE}/dpkg-query --admindir=$INSTALL_ROOTFS_DEB/var/lib/dpkg"
72
73list_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
92rootfs_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}