diff --git a/package/system/opkg/Makefile b/package/system/opkg/Makefile index e46c6b3a34..c09d1683fe 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) @@ -43,6 +43,7 @@ define Package/opkg/Default TITLE:=opkg package manager DEPENDS:=+uclient-fetch URL:=http://wiki.openmoko.org/wiki/Opkg + MENU:=1 endef define Package/opkg/Default/description @@ -55,6 +56,16 @@ define Package/opkg/Default/description opkg knows how to install both .ipk and .deb packages. endef +define Package/opkg/config +config OPKG_SUPPORT_MD5 + bool + default n + depends on PACKAGE_opkg + prompt "Support reading old md5 hashes." + help + Old opkg used md5s, new uses sha. This options enables understanding both while prefering sha. +endef + define Package/opkg $(call Package/opkg/Default) VARIANT:=unsigned @@ -84,6 +95,16 @@ define Package/opkg-smime/description This package allows the Package index to be verified with S/MIME. endef +define Package/opkg-smime/config +config OPKG_SMIME_SUPPORT_MD5 + bool + default n + depends on PACKAGE_opkg-smime + prompt "Support reading old md5 hashes." + help + Old opkg used md5s, new uses sha. This options enables understanding both while prefering sha. +endef + Package/opkg-smime/conffiles = $(Package/opkg/conffiles) TARGET_CFLAGS += -ffunction-sections -fdata-sections @@ -97,11 +118,21 @@ CONFIGURE_ARGS += \ --with-opkglockfile=/var/lock/opkg.lock ifeq ($(BUILD_VARIANT),smime) - CONFIGURE_ARGS += --enable-openssl --disable-usign + CONFIGURE_ARGS += --enable-openssl --disable-usign + ifeq ($(CONFIG_OPKG_SMIME_SUPPORT_MD5),y) + CONFIGURE_ARGS += --enable-md5 + else + CONFIGURE_ARGS += --disable-md5 + endif else ifndef CONFIG_SIGNED_PACKAGES CONFIGURE_ARGS += --disable-usign endif + ifeq ($(CONFIG_OPKG_SUPPORT_MD5),y) + CONFIGURE_ARGS += --enable-md5 + else + CONFIGURE_ARGS += --disable-md5 + endif endif MAKE_FLAGS = \ diff --git a/package/system/opkg/patches/230-drop_md5_support.patch b/package/system/opkg/patches/230-drop_md5_support.patch index 63671e5abf..3b281040b0 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,26 +79,27 @@ if (conf->noaction) return 0; -@@ -1093,7 +1093,11 @@ +@@ -1093,7 +1093,7 @@ resolve_conffiles(pkg_t *pkg) /* Might need to initialize the md5sum for each conffile */ if (cf->value == NULL) { -+#ifdef HAVE_MD5 - cf->value = file_md5sum_alloc(root_filename); -+#else +- cf->value = file_md5sum_alloc(root_filename); + cf->value = file_sha256sum_alloc(root_filename); -+#endif } if (!file_exists(root_filename)) { -@@ -1105,8 +1109,12 @@ +@@ -1105,8 +1105,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 +107,7 @@ if (conf->force_maintainer) { opkg_msg(NOTICE, "Conffile %s using maintainer's setting.\n", cf_backup); -@@ -1123,8 +1131,8 @@ +@@ -1123,8 +1131,8 @@ resolve_conffiles(pkg_t *pkg) } } unlink(cf_backup); @@ -113,7 +118,7 @@ } free(cf_backup); -@@ -1323,6 +1331,7 @@ +@@ -1323,6 +1331,7 @@ opkg_install_pkg(pkg_t *pkg, int from_up } #endif @@ -121,7 +126,7 @@ /* Check for md5 values */ if (pkg->md5sum) { -@@ -1346,6 +1355,7 @@ +@@ -1346,6 +1355,7 @@ opkg_install_pkg(pkg_t *pkg, int from_up if (file_md5) free(file_md5); } @@ -131,7 +136,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 +156,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,