[OpenWrt-Devel] [PATCH] [packages] opkg: Make opkg understand old md5
Michal Hrusecky
michal.hrusecky at nic.cz
Thu Feb 25 04:05:36 EST 2016
Opkg now uses sha256 by default and expects them. Making it understand md5s also
and detect md5 sum so we can migrate from configuration that used md5.
Signed-off-by: Michal Hrusecky <Michal.Hrusecky at nic.cz>
---
package/system/opkg/Makefile | 3 +-
.../system/opkg/patches/230-drop_md5_support.patch | 52 +++++++++++++++-------
2 files changed, 38 insertions(+), 17 deletions(-)
diff --git a/package/system/opkg/Makefile b/package/system/opkg/Makefile
index 3080901..c263a90 100644
--- a/package/system/opkg/Makefile
+++ b/package/system/opkg/Makefile
@@ -12,7 +12,7 @@ include $(INCLUDE_DIR)/feeds.mk
PKG_NAME:=opkg
PKG_REV:=9c97d5ecd795709c8584e972bfdf3aee3a5b846d
PKG_VERSION:=$(PKG_REV)
-PKG_RELEASE:=10
+PKG_RELEASE:=11
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=$(PKG_REV)
@@ -94,6 +94,7 @@ CONFIGURE_ARGS += \
--disable-curl \
--disable-gpg \
--enable-sha256 \
+ --enable-md5 \
--with-opkgetcdir=/etc \
--with-opkglockfile=/var/lock/opkg.lock
diff --git a/package/system/opkg/patches/230-drop_md5_support.patch b/package/system/opkg/patches/230-drop_md5_support.patch
index 63671e5..07673db 100644
--- a/package/system/opkg/patches/230-drop_md5_support.patch
+++ b/package/system/opkg/patches/230-drop_md5_support.patch
@@ -1,6 +1,6 @@
--- a/libopkg/conffile.c
+++ b/libopkg/conffile.c
-@@ -36,7 +36,7 @@
+@@ -36,7 +36,7 @@ void conffile_deinit(conffile_t *conffil
int conffile_has_been_modified(conffile_t *conffile)
{
@@ -9,7 +9,7 @@
char *filename = conffile->name;
char *root_filename;
int ret = 1;
-@@ -48,16 +48,19 @@
+@@ -48,16 +48,23 @@ int conffile_has_been_modified(conffile_
root_filename = root_filename_alloc(filename);
@@ -19,7 +19,11 @@
- opkg_msg(INFO, "Conffile %s:\n\told md5=%s\n\tnew md5=%s\n",
- conffile->name, md5sum, conffile->value);
+#ifdef HAVE_MD5
-+ chksum = file_md5sum_alloc(root_filename);
++ if(conffile->value && strlen(conffile->value) > 33) {
++ chksum = file_sha256sum_alloc(root_filename);
++ } else {
++ chksum = file_md5sum_alloc(root_filename);
++ }
+#else
+ chksum = file_sha256sum_alloc(root_filename);
+#endif
@@ -48,7 +52,7 @@
#include "libbb/libbb.h"
#if defined HAVE_SHA256
-@@ -135,6 +137,7 @@
+@@ -135,6 +137,7 @@ file_mkdir_hier(const char *path, long m
return make_directory(path, mode, FILEUTILS_RECUR);
}
@@ -56,7 +60,7 @@
char *file_md5sum_alloc(const char *file_name)
{
static const int md5sum_bin_len = 16;
-@@ -180,6 +183,7 @@
+@@ -180,6 +183,7 @@ char *file_md5sum_alloc(const char *file
return md5sum_hex;
}
@@ -66,7 +70,7 @@
char *file_sha256sum_alloc(const char *file_name)
--- a/libopkg/opkg_install.c
+++ b/libopkg/opkg_install.c
-@@ -1082,7 +1082,7 @@
+@@ -1082,7 +1082,7 @@ resolve_conffiles(pkg_t *pkg)
conffile_list_elt_t *iter;
conffile_t *cf;
char *cf_backup;
@@ -75,11 +79,11 @@
if (conf->noaction) return 0;
-@@ -1093,7 +1093,11 @@
+@@ -1093,7 +1093,11 @@ resolve_conffiles(pkg_t *pkg)
/* Might need to initialize the md5sum for each conffile */
if (cf->value == NULL) {
-+#ifdef HAVE_MD5
++#ifdef PREFER_MD5
cf->value = file_md5sum_alloc(root_filename);
+#else
+ cf->value = file_sha256sum_alloc(root_filename);
@@ -87,14 +91,18 @@
}
if (!file_exists(root_filename)) {
-@@ -1105,8 +1109,12 @@
+@@ -1105,8 +1109,16 @@ resolve_conffiles(pkg_t *pkg)
if (file_exists(cf_backup)) {
/* Let's compute md5 to test if files are changed */
- md5sum = file_md5sum_alloc(cf_backup);
- if (md5sum && cf->value && strcmp(cf->value,md5sum) != 0 ) {
+#ifdef HAVE_MD5
-+ chksum = file_md5sum_alloc(cf_backup);
++ if(cf->value && strlen(cf->value) > 33) {
++ chksum = file_sha256sum_alloc(cf_backup);
++ } else {
++ chksum = file_md5sum_alloc(cf_backup);
++ }
+#else
+ chksum = file_sha256sum_alloc(cf_backup);
+#endif
@@ -102,7 +110,7 @@
if (conf->force_maintainer) {
opkg_msg(NOTICE, "Conffile %s using maintainer's setting.\n",
cf_backup);
-@@ -1123,8 +1131,8 @@
+@@ -1123,8 +1135,8 @@ resolve_conffiles(pkg_t *pkg)
}
}
unlink(cf_backup);
@@ -113,7 +121,7 @@
}
free(cf_backup);
-@@ -1323,6 +1331,7 @@
+@@ -1323,6 +1335,7 @@ opkg_install_pkg(pkg_t *pkg, int from_up
}
#endif
@@ -121,7 +129,7 @@
/* Check for md5 values */
if (pkg->md5sum)
{
-@@ -1346,6 +1355,7 @@
+@@ -1346,6 +1359,7 @@ opkg_install_pkg(pkg_t *pkg, int from_up
if (file_md5)
free(file_md5);
}
@@ -131,7 +139,7 @@
/* Check for sha256 value */
--- a/libopkg/Makefile.am
+++ b/libopkg/Makefile.am
-@@ -25,13 +25,16 @@
+@@ -25,13 +25,16 @@ opkg_list_sources = conffile.c conffile.
pkg_src.c pkg_src.h pkg_src_list.c pkg_src_list.h \
str_list.c str_list.h void_list.c void_list.h \
active_list.c active_list.h list.h
@@ -151,11 +159,23 @@
endif
--- a/configure.ac
+++ b/configure.ac
-@@ -72,6 +72,7 @@
+@@ -68,10 +68,19 @@ AC_ARG_ENABLE(sha256,
+ (sha256.{c,h} are GPLv3 licensed) [[default=no]] ]),
+ [want_sha256="$enableval"], [want_sha256="no"])
+
++AC_ARG_ENABLE(md5,
++ AC_HELP_STRING([--enable-md5], [Enable md5sum check
++ (md5.{c,h} are GPLv3 licensed) [[default=no]] ]),
++ [want_md5="$enableval"], [want_md5="yes"])
++
+ if test "x$want_sha256" = "xyes"; then
AC_DEFINE(HAVE_SHA256, 1, [Define if you want sha256 support])
fi
++if test "x$want_md5" = "xyes"; then
++ AC_DEFINE(HAVE_MD5, 1, [Define if you want md5 support])
++fi
AM_CONDITIONAL(HAVE_SHA256, test "x$want_sha256" = "xyes")
-+AM_CONDITIONAL(HAVE_MD5, test "x$want_sha256" = "xno")
++AM_CONDITIONAL(HAVE_MD5, test "x$want_md5" = "xyes")
# check for openssl
AC_ARG_ENABLE(openssl,
--
2.7.1
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 213 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20160225/c584ed88/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list