[OpenWrt-Devel] [PATCH] [packages] opkg: Make opkg understand old md5
John Crispin
blogic at openwrt.org
Fri Feb 26 02:40:59 EST 2016
Hi,
few comments inline
On 25/02/2016 13:39, Michal Hrusecky wrote:
> Opkg now uses sha256 by default and expects them. Making it optionally
> 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 | 33 +++++++++++++-
> .../system/opkg/patches/230-drop_md5_support.patch | 52 +++++++++++++++-------
> 2 files changed, 68 insertions(+), 17 deletions(-)
>
> diff --git a/package/system/opkg/Makefile b/package/system/opkg/Makefile
> index e46c6b3..9b2aca1 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
why add a new build variant ?
> +
> Package/opkg-smime/conffiles = $(Package/opkg/conffiles)
>
> TARGET_CFLAGS += -ffunction-sections -fdata-sections
> @@ -98,10 +119,20 @@ CONFIGURE_ARGS += \
>
> ifeq ($(BUILD_VARIANT),smime)
> CONFIGURE_ARGS += --enable-openssl --disable-usign
> + ifeq ($(CONFIG_OPKG_SMIME_SUPPORT_MD5),y)
> + CONFIGURE_ARGS += --enable-md5
> + else
> + CONFIGURE_ARGS += --disable-md5
> + endif
might want to put this into its own block, set a variable and then reuse
that var here and below ...
> 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
to avoid duplication here
> 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 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) {
is there no better way than checking for the length ?
> ++ 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
why is this change needed ? and does PREFER_MD5 actually exit ?
John
> 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,
>
_______________________________________________
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