Files
poky/meta/recipes-devtools/python/python-smartpm_git.bb
Klauer, Daniel be0cabf816 python-smartpm: Don't ignore error if RPM transaction fails without problems
SmartPM could misinterpret RPM transaction error as success,
if ts.run() (RPM Python API) returns an empty problems list.

This could happen for example if the RPM database is partially corrupted
such that the transaction does not have any problems like conflicts or
missing dependencies, but still can't be committed.

The added patch fixes the problem in the upstream sources;
one of the existing patches has to be adjusted to still apply.

(From OE-Core rev: 1dc5f5d5c844585eec114be9480e0e4d8e60d09c)

Signed-off-by: Daniel Klauer <daniel.klauer@gin.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2016-05-19 09:05:18 +01:00

140 lines
5.2 KiB
BlitzBasic

SUMMARY = "The Smart Package Manager"
DESCRIPTION = "The Smart Package Manager project has the ambitious objective of creating \
smart and portable algorithms for solving adequately the problem of managing software \
upgrades and installation."
HOMEPAGE = "http://labix.org/smart/"
SECTION = "devel/python"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://LICENSE;md5=393a5ca445f6965873eca0259a17f833"
DEPENDS = "python rpm gettext-native python-rpm"
SRCNAME = "smart"
SRC_URI = "\
git://github.com/smartpm/smart.git \
file://smartpm-rpm5-nodig.patch \
file://smart-recommends.patch \
file://smart-improve-error-reporting.patch \
file://smart-channelsdir.patch \
file://smart-rpm-transaction-failure-check.patch \
file://smart-attempt.patch \
file://smart-attempt-fix.patch \
file://smart-add-for-rpm-ignoresize-check.patch \
file://smart-already-installed-message.patch \
file://smart-set-noprogress-for-pycurl.patch \
file://smart-cache.py-getPackages-matches-name-version.patch \
file://smart-channel-remove-all.patch \
"
SRCREV = "407a7eca766431257dcd1da15175cc36a1bb22d0"
PV = "1.5+git${SRCPV}"
S = "${WORKDIR}/git"
# Options - rpm, qt4, gtk
PACKAGECONFIG ??= "rpm"
RPM_RDEP = "${PN}-backend-rpm"
QT_RDEP = "${PN}-interface-qt4"
GTK_RDEP = "${PN}-interface-gtk"
RPM_RDEP_class-native = ""
QT_RDEP_class-native = ""
GTK_RDEP_class-native = ""
RPM_RDEP_class-nativesdk = ""
QT_RDEP_class-nativesdk = ""
GTK_RDEP_class-nativesdk = ""
PACKAGECONFIG[rpm] = ",,rpm,${RPM_RDEP}"
PACKAGECONFIG[qt4] = ",,qt4-x11,${QT_RDEP}"
PACKAGECONFIG[gtk] = ",,gtk+,${GTK_RDEP}"
inherit distutils
do_install_append() {
# We don't support the following items
rm -rf ${D}${libdir}/python*/site-packages/smart/backends/slack
rm -rf ${D}${libdir}/python*/site-packages/smart/backends/arch
rm -rf ${D}${libdir}/python*/site-packages/smart/interfaces/qt
# Temporary, debian support in OE is missing the python module
rm -f ${D}${libdir}/python*/site-packages/smart/plugins/aptchannelsync.py*
rm -f ${D}${libdir}/python*/site-packages/smart/plugins/debdir.py*
rm -rf ${D}${libdir}/python*/site-packages/smart/backends/deb
# Disable automatic channel detection
rm -f ${D}${libdir}/python*/site-packages/smart/plugins/detectsys.py*
# Disable landscape support
rm -f ${D}${libdir}/python*/site-packages/smart/plugins/landscape.py*
# Disable urpmi channel support
rm -f ${D}${libdir}/python*/site-packages/smart/plugins/urpmichannelsync.py*
# Disable yum channel support
rm -f ${D}${libdir}/python*/site-packages/smart/plugins/yumchannelsync.py*
# Disable zypper channel support
rm -f ${D}${libdir}/python*/site-packages/smart/plugins/zyppchannelsync.py*
if [ -z "${@bb.utils.contains('PACKAGECONFIG', 'rpm', 'rpm', '', d)}" ]; then
rm -f ${D}${libdir}/python*/site-packages/smart/plugins/rpmdir.py*
rm -rf ${D}${libdir}/python*/site-packages/smart/backends/rpm
fi
if [ -z "${@bb.utils.contains('PACKAGECONFIG', 'qt4', 'qt4', '', d)}" ]; then
rm -rf ${D}${libdir}/python*/site-packages/smart/interfaces/qt4
fi
if [ -z "${@bb.utils.contains('PACKAGECONFIG', 'gtk+', 'gtk', '', d)}" ]; then
rm -rf ${D}${libdir}/python*/site-packages/smart/interfaces/gtk
fi
}
add_native_wrapper() {
create_wrapper ${D}/${bindir}/smart \
RPM_USRLIBRPM='`dirname $''realpath`'/${@os.path.relpath(d.getVar('libdir', True), d.getVar('bindir', True))}/rpm \
RPM_ETCRPM='$'{RPM_ETCRPM-'`dirname $''realpath`'/${@os.path.relpath(d.getVar('sysconfdir', True), d.getVar('bindir', True))}/rpm} \
RPM_LOCALEDIRRPM='`dirname $''realpath`'/${@os.path.relpath(d.getVar('datadir', True), d.getVar('bindir', True))}/locale
}
do_install_append_class-native() {
sed -i -e 's|^#!.*/usr/bin/env python|#! /usr/bin/env nativepython|' ${D}${bindir}/smart
add_native_wrapper
}
do_install_append_class-nativesdk() {
add_native_wrapper
}
PACKAGES = "${PN}-dev ${PN}-dbg ${PN}-doc smartpm \
${@bb.utils.contains('PACKAGECONFIG', 'rpm', '${PN}-backend-rpm', '', d)} \
${@bb.utils.contains('PACKAGECONFIG', 'qt4', '${PN}-interface-qt4', '', d)} \
${@bb.utils.contains('PACKAGECONFIG', 'gtk', '${PN}-interface-gtk', '', d)} \
${PN}-interface-images ${PN}"
RDEPENDS_smartpm = "${PN}"
RDEPENDS_${PN} += "${PN}-backend-rpm python-codecs python-textutils python-xml python-fcntl \
python-pickle python-crypt python-compression python-shell \
python-resource python-netclient python-threading python-unixadmin python-pprint"
RDEPENDS_${PN}_class-native = ""
RDEPENDS_${PN}-backend-rpm = "python-rpm"
RDEPENDS_${PN}-interface-qt4 = "qt4-x11 ${PN}-interface-images"
RDEPENDS_${PN}-interface-gtk = "gtk+ ${PN}-interface-images"
FILES_smartpm = "${bindir}/smart"
FILES_${PN}-backend-rpm = "${libdir}/python*/site-packages/smart/backends/rpm"
FILES_${PN}-interface-qt4 = "${libdir}/python*/site-packages/smart/interfaces/qt4"
FILES_${PN}-interface-gtk = "${libdir}/python*/site-packages/smart/interfaces/gtk"
FILES_${PN}-interface-images = "${datadir}/${baselib}/python*/site-packages/smart/interfaces/images"
BBCLASSEXTEND = "native nativesdk"