aboutsummaryrefslogtreecommitdiffstats
path: root/package/system/opkg/patches/110-upgrade.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/system/opkg/patches/110-upgrade.patch')
-rw-r--r--package/system/opkg/patches/110-upgrade.patch49
1 files changed, 49 insertions, 0 deletions
diff --git a/package/system/opkg/patches/110-upgrade.patch b/package/system/opkg/patches/110-upgrade.patch
new file mode 100644
index 0000000..071df0e
--- /dev/null
+++ b/package/system/opkg/patches/110-upgrade.patch
@@ -0,0 +1,49 @@
+--- a/libopkg/opkg_install.c
++++ b/libopkg/opkg_install.c
+@@ -1405,9 +1405,10 @@
+ opkg_state_changed++;
+ pkg->state_flag |= SF_FILELIST_CHANGED;
+
+- if (old_pkg)
++ if (old_pkg) {
+ pkg_remove_orphan_dependent(pkg, old_pkg);
+-
++ pkg->is_upgrade = 1;
++ }
+ /* XXX: BUG: we really should treat replacement more like an upgrade
+ * Instead, we're going to remove the replacees
+ */
+@@ -1466,7 +1467,7 @@
+ }
+
+
+- opkg_msg(INFO, "Installing maintainer scripts.\n");
++ opkg_msg(INFO, "%s maintainer scripts.\n", (pkg->is_upgrade) ? ("Upgrading") : ("Installing"));
+ if (install_maintainer_scripts(pkg, old_pkg)) {
+ opkg_msg(ERROR, "Failed to extract maintainer scripts for %s."
+ " Package debris may remain!\n",
+--- a/libopkg/pkg.c
++++ b/libopkg/pkg.c
+@@ -1285,6 +1285,12 @@
+ setenv("PKG_ROOT",
+ pkg->dest ? pkg->dest->root_dir : conf->default_dest->root_dir, 1);
+
++ if (pkg->is_upgrade)
++ setenv("PKG_UPGRADE", "1", 1);
++ else
++ setenv("PKG_UPGRADE", "0", 1);
++
++
+ if (! file_exists(path)) {
+ free(path);
+ return 0;
+--- a/libopkg/pkg.h
++++ b/libopkg/pkg.h
+@@ -184,6 +184,7 @@
+ /* this flag specifies whether the package was installed to satisfy another
+ * package's dependancies */
+ int auto_installed;
++ int is_upgrade;
+ };
+
+ pkg_t *pkg_new(void);