diff options
Diffstat (limited to 'meta/classes/package_rpm.bbclass')
-rw-r--r-- | meta/classes/package_rpm.bbclass | 109 |
1 files changed, 45 insertions, 64 deletions
diff --git a/meta/classes/package_rpm.bbclass b/meta/classes/package_rpm.bbclass index 983be4cfd0..29018e9cca 100644 --- a/meta/classes/package_rpm.bbclass +++ b/meta/classes/package_rpm.bbclass | |||
@@ -197,6 +197,45 @@ rpm_update_pkg () { | |||
197 | fi | 197 | fi |
198 | } | 198 | } |
199 | 199 | ||
200 | process_pkg_list_rpm() { | ||
201 | local insttype=$1 | ||
202 | shift | ||
203 | local pkgs="$@" | ||
204 | local confbase=${INSTALL_CONFBASE_RPM} | ||
205 | |||
206 | echo -n > ${target_rootfs}/install/base_archs.pkglist | ||
207 | echo -n > ${target_rootfs}/install/ml_archs.pkglist | ||
208 | |||
209 | for pkg in $pkgs; do | ||
210 | echo "Processing $pkg..." | ||
211 | |||
212 | archvar=base_archs | ||
213 | ml_pkg=$pkg | ||
214 | for i in ${MULTILIB_PREFIX_LIST} ; do | ||
215 | subst=${pkg#${i}-} | ||
216 | if [ $subst != $pkg ] ; then | ||
217 | ml_pkg=$subst | ||
218 | archvar=ml_archs | ||
219 | break | ||
220 | fi | ||
221 | done | ||
222 | |||
223 | echo $ml_pkg >> ${target_rootfs}/install/$archvar.pkglist | ||
224 | done | ||
225 | |||
226 | local manifestpfx="install" | ||
227 | local extraopt="" | ||
228 | if [ "$insttype" = "attemptonly" ] ; then | ||
229 | manifestpfx="install_attemptonly" | ||
230 | extraopt="-i" | ||
231 | fi | ||
232 | |||
233 | rpmresolve $extraopt ${confbase}-base_archs.conf ${target_rootfs}/install/base_archs.pkglist >> ${target_rootfs}/install/${manifestpfx}.manifest | ||
234 | if [ -s ${target_rootfs}/install/ml_archs.pkglist ] ; then | ||
235 | rpmresolve $extraopt ${confbase}-ml_archs.conf ${target_rootfs}/install/ml_archs.pkglist >> ${target_rootfs}/install/${manifestpfx}_multilib.manifest | ||
236 | fi | ||
237 | } | ||
238 | |||
200 | # | 239 | # |
201 | # install a bunch of packages using rpm | 240 | # install a bunch of packages using rpm |
202 | # the following shell variables needs to be set before calling this func: | 241 | # the following shell variables needs to be set before calling this func: |
@@ -256,55 +295,12 @@ package_install_internal_rpm () { | |||
256 | # Uclibc builds don't provide this stuff... | 295 | # Uclibc builds don't provide this stuff... |
257 | if [ x${TARGET_OS} = "xlinux" ] || [ x${TARGET_OS} = "xlinux-gnueabi" ] ; then | 296 | if [ x${TARGET_OS} = "xlinux" ] || [ x${TARGET_OS} = "xlinux-gnueabi" ] ; then |
258 | if [ ! -z "${package_linguas}" ]; then | 297 | if [ ! -z "${package_linguas}" ]; then |
259 | for pkg in ${package_linguas}; do | 298 | process_pkg_list_rpm linguas ${package_linguas} |
260 | echo "Processing $pkg..." | ||
261 | |||
262 | archvar=base_archs | ||
263 | manifest=install.manifest | ||
264 | ml_prefix=`echo ${pkg} | cut -d'-' -f1` | ||
265 | ml_pkg=$pkg | ||
266 | for i in ${MULTILIB_PREFIX_LIST} ; do | ||
267 | if [ ${ml_prefix} = ${i} ]; then | ||
268 | ml_pkg=$(echo ${pkg} | sed "s,^${ml_prefix}-\(.*\),\1,") | ||
269 | archvar=ml_archs | ||
270 | manifest=install_multilib.manifest | ||
271 | break | ||
272 | fi | ||
273 | done | ||
274 | |||
275 | pkg_name=$(resolve_package_rpm ${confbase}-${archvar}.conf ${ml_pkg}) | ||
276 | if [ -z "$pkg_name" ]; then | ||
277 | echo "Unable to find package $pkg ($ml_pkg)!" | ||
278 | exit 1 | ||
279 | fi | ||
280 | echo $pkg_name >> ${target_rootfs}/install/${manifest} | ||
281 | done | ||
282 | fi | 299 | fi |
283 | fi | 300 | fi |
284 | if [ ! -z "${package_to_install}" ]; then | ||
285 | for pkg in ${package_to_install} ; do | ||
286 | echo "Processing $pkg..." | ||
287 | 301 | ||
288 | archvar=base_archs | 302 | if [ ! -z "${package_to_install}" ]; then |
289 | manifest=install.manifest | 303 | process_pkg_list_rpm default ${package_to_install} |
290 | ml_prefix=`echo ${pkg} | cut -d'-' -f1` | ||
291 | ml_pkg=$pkg | ||
292 | for i in ${MULTILIB_PREFIX_LIST} ; do | ||
293 | if [ ${ml_prefix} = ${i} ]; then | ||
294 | ml_pkg=$(echo ${pkg} | sed "s,^${ml_prefix}-\(.*\),\1,") | ||
295 | archvar=ml_archs | ||
296 | manifest=install_multilib.manifest | ||
297 | break | ||
298 | fi | ||
299 | done | ||
300 | |||
301 | pkg_name=$(resolve_package_rpm ${confbase}-${archvar}.conf ${ml_pkg}) | ||
302 | if [ -z "$pkg_name" ]; then | ||
303 | echo "Unable to find package $pkg ($ml_pkg)!" | ||
304 | exit 1 | ||
305 | fi | ||
306 | echo $pkg_name >> ${target_rootfs}/install/${manifest} | ||
307 | done | ||
308 | fi | 304 | fi |
309 | 305 | ||
310 | # Normal package installation | 306 | # Normal package installation |
@@ -324,24 +320,9 @@ package_install_internal_rpm () { | |||
324 | 320 | ||
325 | if [ ! -z "${package_attemptonly}" ]; then | 321 | if [ ! -z "${package_attemptonly}" ]; then |
326 | echo "Adding attempt only packages..." | 322 | echo "Adding attempt only packages..." |
327 | for pkg in ${package_attemptonly} ; do | 323 | process_pkg_list_rpm attemptonly ${package_attemptonly} |
328 | echo "Processing $pkg..." | 324 | cat ${target_rootfs}/install/install_attemptonly.manifest | while read pkg_name |
329 | archvar=base_archs | 325 | do |
330 | ml_prefix=`echo ${pkg} | cut -d'-' -f1` | ||
331 | ml_pkg=$pkg | ||
332 | for i in ${MULTILIB_PREFIX_LIST} ; do | ||
333 | if [ ${ml_prefix} = ${i} ]; then | ||
334 | ml_pkg=$(echo ${pkg} | sed "s,^${ml_prefix}-\(.*\),\1,") | ||
335 | archvar=ml_archs | ||
336 | break | ||
337 | fi | ||
338 | done | ||
339 | |||
340 | pkg_name=$(resolve_package_rpm ${confbase}-${archvar}.conf ${ml_pkg}) | ||
341 | if [ -z "$pkg_name" ]; then | ||
342 | echo "Note: Unable to find package $pkg ($ml_pkg) -- PACKAGE_INSTALL_ATTEMPTONLY" | ||
343 | continue | ||
344 | fi | ||
345 | echo "Attempting $pkg_name..." >> "`dirname ${BB_LOGFILE}`/log.do_${task}_attemptonly.${PID}" | 326 | echo "Attempting $pkg_name..." >> "`dirname ${BB_LOGFILE}`/log.do_${task}_attemptonly.${PID}" |
346 | ${RPM} --predefine "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \ | 327 | ${RPM} --predefine "_rpmds_sysinfo_path ${target_rootfs}/etc/rpm/sysinfo" \ |
347 | --predefine "_rpmrc_platform_path ${target_rootfs}/etc/rpm/platform" \ | 328 | --predefine "_rpmrc_platform_path ${target_rootfs}/etc/rpm/platform" \ |