summaryrefslogtreecommitdiffstats
path: root/meta/classes/rootfs_deb.bbclass
diff options
context:
space:
mode:
authorLaurentiu Palcu <laurentiu.palcu@intel.com>2013-12-18 18:02:18 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-02-11 11:53:38 +0000
commit7fc9bdaeed5aa3f2dd8b83a660eb97797bd2fcf4 (patch)
treefe2f2286820d9b484e721a323e8c8eacc1af39b9 /meta/classes/rootfs_deb.bbclass
parent85cc53a5a09e4076a0940c938374e6be8795db80 (diff)
downloadpoky-7fc9bdaeed5aa3f2dd8b83a660eb97797bd2fcf4.tar.gz
Activate the new python rootfs/image creation routines
This commit will: * remove old bash code common to all backends; * create a new do_rootfs() python function that will use the new rootfs/image creation routines; * allow creation of dpkg based images; * fail for rpm/opkg (not implemented yet); (From OE-Core rev: a83144bac8d67704ff66f5dc0fc56f5b63979694) Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes/rootfs_deb.bbclass')
-rw-r--r--meta/classes/rootfs_deb.bbclass115
1 files changed, 0 insertions, 115 deletions
diff --git a/meta/classes/rootfs_deb.bbclass b/meta/classes/rootfs_deb.bbclass
index bcfa95003c..728ea0e2d1 100644
--- a/meta/classes/rootfs_deb.bbclass
+++ b/meta/classes/rootfs_deb.bbclass
@@ -21,118 +21,3 @@ DEB_POSTPROCESS_COMMANDS = ""
21 21
22opkglibdir = "${localstatedir}/lib/opkg" 22opkglibdir = "${localstatedir}/lib/opkg"
23 23
24deb_package_setflag() {
25 sed -i -e "/^Package: $2\$/{n; s/Status: install ok .*/Status: install ok $1/;}" ${IMAGE_ROOTFS}/var/lib/dpkg/status
26}
27
28deb_package_getflag() {
29 cat ${IMAGE_ROOTFS}/var/lib/dpkg/status | sed -n -e "/^Package: $2\$/{n; s/Status: install ok .*/$1/; p}"
30}
31
32fakeroot rootfs_deb_do_rootfs () {
33 set +e
34
35 mkdir -p ${IMAGE_ROOTFS}/var/lib/dpkg/alternatives
36
37 # update index
38 package_update_index_deb
39
40 #install packages
41 export INSTALL_ROOTFS_DEB="${IMAGE_ROOTFS}"
42 export INSTALL_BASEARCH_DEB="${DPKG_ARCH}"
43 export INSTALL_ARCHS_DEB="${PACKAGE_ARCHS}"
44 export INSTALL_PACKAGES_NORMAL_DEB="${PACKAGE_INSTALL}"
45 export INSTALL_PACKAGES_ATTEMPTONLY_DEB="${PACKAGE_INSTALL_ATTEMPTONLY}"
46 export INSTALL_PACKAGES_LINGUAS_DEB="${LINGUAS_INSTALL}"
47 export INSTALL_TASK_DEB="rootfs"
48
49 package_install_internal_deb
50 ${DEB_POSTPROCESS_COMMANDS}
51
52 rootfs_install_complementary
53
54 export D=${IMAGE_ROOTFS}
55 export OFFLINE_ROOT=${IMAGE_ROOTFS}
56 export IPKG_OFFLINE_ROOT=${IMAGE_ROOTFS}
57 export OPKG_OFFLINE_ROOT=${IMAGE_ROOTFS}
58 export INTERCEPT_DIR=${WORKDIR}/intercept_scripts
59 export NATIVE_ROOT=${STAGING_DIR_NATIVE}
60
61 # Attempt to run preinsts
62 # Mark packages with preinst failures as unpacked
63 for i in ${IMAGE_ROOTFS}/var/lib/dpkg/info/*.preinst; do
64 if [ -f $i ] && ! sh $i; then
65 deb_package_setflag unpacked `basename $i .preinst`
66 fi
67 done
68
69 # Attempt to run postinsts
70 # Mark packages with postinst failures as unpacked
71 for i in ${IMAGE_ROOTFS}/var/lib/dpkg/info/*.postinst; do
72 if [ -f $i ] && ! sh $i configure; then
73 deb_package_setflag unpacked `basename $i .postinst`
74 fi
75 done
76
77 set -e
78
79 install -d ${IMAGE_ROOTFS}/${sysconfdir}
80 echo ${BUILDNAME} > ${IMAGE_ROOTFS}/${sysconfdir}/version
81
82 # Hacks to allow opkg's update-alternatives and opkg to coexist for now
83 mkdir -p ${IMAGE_ROOTFS}${opkglibdir}
84 if [ -e ${IMAGE_ROOTFS}/var/lib/dpkg/alternatives ]; then
85 rmdir ${IMAGE_ROOTFS}/var/lib/dpkg/alternatives
86 fi
87 ln -s ${opkglibdir}/alternatives ${IMAGE_ROOTFS}/var/lib/dpkg/alternatives
88 ln -s /var/lib/dpkg/info ${IMAGE_ROOTFS}${opkglibdir}/info
89 ln -s /var/lib/dpkg/status ${IMAGE_ROOTFS}${opkglibdir}/status
90
91 ${ROOTFS_POSTPROCESS_COMMAND}
92
93 if ${@base_contains("IMAGE_FEATURES", "read-only-rootfs", "true", "false" ,d)}; then
94 delayed_postinsts="$(delayed_postinsts)"
95 if [ -n "$delayed_postinsts" ]; then
96 bberror "The following packages could not be configured offline and rootfs is read-only: $delayed_postinsts"
97 exit 1
98 fi
99 fi
100
101 log_check rootfs
102}
103
104rootfs_deb_do_rootfs[vardeps] += "delayed_postinsts"
105
106delayed_postinsts () {
107 cat ${IMAGE_ROOTFS}/var/lib/dpkg/status|grep -e "^Package:" -e "^Status:"|sed -ne 'N;s/Package: \(.*\)\nStatus:.*unpacked/\1/p'
108}
109
110save_postinsts () {
111 # Scripts need to be ordered when executed, this ensures numeric order
112 # If we ever run into needing more the 899 scripts, we'll have to
113 # change num to start with 1000.
114 num=100
115 for p in $(delayed_postinsts); do
116 install -d ${IMAGE_ROOTFS}${sysconfdir}/deb-postinsts
117 cp ${IMAGE_ROOTFS}/var/lib/dpkg/info/$p.postinst ${IMAGE_ROOTFS}${sysconfdir}/deb-postinsts/$num-$p
118 num=`echo \$((num+1))`
119 done
120}
121
122remove_packaging_data_files() {
123 rm -rf ${IMAGE_ROOTFS}${opkglibdir}
124 rm -rf ${IMAGE_ROOTFS}/var/lib/dpkg/
125}
126
127rootfs_install_packages() {
128 ${STAGING_BINDIR_NATIVE}/apt-get ${APT_ARGS} install `cat $1` --force-yes --allow-unauthenticated
129
130 # Mark all packages installed
131 sed -i -e "s/Status: install ok unpacked/Status: install ok installed/;" $INSTALL_ROOTFS_DEB/var/lib/dpkg/status
132}
133
134rootfs_uninstall_packages() {
135 # for some reason, --root doesn't really work here... We use --admindir&--instdir instead.
136 ${STAGING_BINDIR_NATIVE}/dpkg --admindir=${IMAGE_ROOTFS}/var/lib/dpkg --instdir=${IMAGE_ROOTFS} -r --force-depends $@
137}
138