opkg_manager: use system-update script if available

opkg has several problems with complex system updates, especially when
having to update itself and with the package ordering during update
To avoid hard coding the workarounds into neutrino, just call a script
named "system-update" (if available) instead of "opkg upgrade".
This script can be tuned to the specific target and its problems.
This commit is contained in:
Stefan Seyfried
2017-01-29 21:27:45 +01:00
committed by svenhoefer
parent 5f93b57d84
commit fd9387a43c

View File

@@ -11,7 +11,7 @@
Adaptions: Adaptions:
Copyright (C) 2013 martii Copyright (C) 2013 martii
gitorious.org/neutrino-mp/martiis-neutrino-mp gitorious.org/neutrino-mp/martiis-neutrino-mp
Copyright (C) 2015-2016 Stefan Seyfried Copyright (C) 2015-2017 Stefan Seyfried
License: GPL License: GPL
@@ -71,6 +71,11 @@
#define OPKG_BAD_PATTERN_LIST_FILE CONFIGDIR "/bad_package_pattern.list" #define OPKG_BAD_PATTERN_LIST_FILE CONFIGDIR "/bad_package_pattern.list"
#define OPKG_CONFIG_FILE "/etc/opkg/opkg.conf" #define OPKG_CONFIG_FILE "/etc/opkg/opkg.conf"
/* script to call instead of "opkg upgrade"
* opkg fails to gracefully self-upgrade, and additionally has some ordering issues
*/
#define SYSTEM_UPDATE "system-update"
using namespace std; using namespace std;
enum enum
@@ -89,7 +94,7 @@ enum
OM_MAX OM_MAX
}; };
static const string pkg_types[OM_MAX] = static string pkg_types[OM_MAX] =
{ {
OPKG_CL " list ", OPKG_CL " list ",
OPKG_CL " list-installed ", OPKG_CL " list-installed ",
@@ -614,6 +619,11 @@ bool COPKGManager::hasOpkgSupport()
return false; return false;
} }
if (! find_executable(SYSTEM_UPDATE).empty()) {
dprintf(DEBUG_NORMAL, "[COPKGManager] [%s - %d] " SYSTEM_UPDATE " script found\n", __func__, __LINE__);
pkg_types[OM_UPGRADE] = SYSTEM_UPDATE;
}
#if 0 #if 0
/* If directory /var/lib/opkg resp. /opt/opkg /* If directory /var/lib/opkg resp. /opt/opkg
does not exist, it is created by opkg itself */ does not exist, it is created by opkg itself */