diff --git a/0001-Fix-cr_compress_file_with_stat-Memory-leak.patch b/0001-Fix-cr_compress_file_with_stat-Memory-leak.patch deleted file mode 100644 index 126a489ff9b08a8826862e0fd50a39331f4d0203..0000000000000000000000000000000000000000 --- a/0001-Fix-cr_compress_file_with_stat-Memory-leak.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 1ec1e767e4a48bc2c1d09b52da9e749352f8d925 Mon Sep 17 00:00:00 2001 -From: Jaroslav Rohel -Date: Thu, 6 May 2021 19:09:19 +0200 -Subject: [PATCH] Fix: cr_compress_file_with_stat: Memory leak - ---- - src/misc.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/misc.c b/src/misc.c -index e5350ac..59c04e6 100644 ---- a/src/misc.c -+++ b/src/misc.c -@@ -503,6 +503,8 @@ cr_compress_file_with_stat(const char *src, - if (!orig) { - ret = tmp_err->code; - g_propagate_prefixed_error(err, tmp_err, "Cannot open %s: ", src); -+ if (dst != in_dst) -+ g_free(dst); - return ret; - } - --- -libgit2 1.0.1 - diff --git a/0002-Preserve-changed-API-for-cr_compress_file_with_stat-RhBug1973588.patch b/0001-Preserve-changed-API-for-cr_compress_file_with_stat-RhBug1973588.patch similarity index 96% rename from 0002-Preserve-changed-API-for-cr_compress_file_with_stat-RhBug1973588.patch rename to 0001-Preserve-changed-API-for-cr_compress_file_with_stat-RhBug1973588.patch index d14a0ae488181284acf00e74b0996a21c11d9fa6..a1b74ea9f2aff8c4e6e73d95f78a89e0c869a93b 100644 --- a/0002-Preserve-changed-API-for-cr_compress_file_with_stat-RhBug1973588.patch +++ b/0001-Preserve-changed-API-for-cr_compress_file_with_stat-RhBug1973588.patch @@ -1,4 +1,4 @@ -From a611bb0c3729713af28031cdf1d056823d663db1 Mon Sep 17 00:00:00 2001 +From 6bcfaac228236ac3c609d014cbd23c3bd645bf18 Mon Sep 17 00:00:00 2001 From: Aleš Matěj Date: Thu, 9 Sep 2021 08:31:03 +0200 Subject: [PATCH] Preserve changed API for cr_compress_file_with_stat (RhBug:1973588) @@ -9,17 +9,20 @@ behavior. Keep the fixed version as cr_compress_file_with_stat_v2 only for rhel8 https://bugzilla.redhat.com/show_bug.cgi?id=1973588 + +With fixed memory leak of `tmp_err`, reported here: +https://bugzilla.redhat.com/show_bug.cgi?id=2005781 --- - src/misc.c | 138 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- + src/misc.c | 139 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- src/misc.h | 42 ++++++++++++++++++++++++++++++++++++++++-- src/modifyrepo_shared.c | 4 ++-- src/python/misc-py.c | 2 +- src/threads.c | 14 +++++++------- tests/test_misc.c | 34 +++++++++++++++++----------------- - 6 files changed, 204 insertions(+), 30 deletions(-) + 6 files changed, 205 insertions(+), 30 deletions(-) diff --git a/src/misc.c b/src/misc.c -index 59c04e6..b3a218c 100644 +index 4bd9f4c..c4b2cb3 100644 --- a/src/misc.c +++ b/src/misc.c @@ -446,7 +446,7 @@ cr_copy_file(const char *src, const char *in_dst, GError **err) @@ -31,7 +34,7 @@ index 59c04e6..b3a218c 100644 cr_CompressionType compression, cr_ContentStat *stat, const char *zck_dict_dir, -@@ -458,6 +458,142 @@ cr_compress_file_with_stat(const char *src, +@@ -458,6 +458,143 @@ cr_compress_file_with_stat(const char *src, char buf[BUFFER_SIZE]; CR_FILE *orig = NULL; CR_FILE *new = NULL; @@ -113,6 +116,7 @@ index 59c04e6..b3a218c 100644 + g_set_error(err, ERR_DOMAIN, CRE_IO, + "Error reading zchunk dict %s: %s", + dict_file, tmp_err->message); ++ g_clear_error(&tmp_err); + ret = CRE_IO; + goto compress_file_cleanup; + } @@ -271,10 +275,10 @@ index 6a7871e..cc28448 100644 nice_exception(&tmp_err, NULL); return NULL; diff --git a/src/threads.c b/src/threads.c -index 9ef839d..91b5430 100644 +index f0c3f93..b529d55 100644 --- a/src/threads.c +++ b/src/threads.c -@@ -100,13 +100,13 @@ cr_compressing_thread(gpointer data, G_GNUC_UNUSED gpointer user_data) +@@ -101,13 +101,13 @@ cr_compressing_thread(gpointer data, G_GNUC_UNUSED gpointer user_data) cr_compression_suffix(task->type), NULL); @@ -376,5 +380,5 @@ index 6614809..1acccb7 100644 g_assert_cmpint(ret, ==, CRE_OK); g_assert(g_file_test(dst_full_name, G_FILE_TEST_EXISTS)); -- -libgit2 1.0.1 +libgit2 1.1.0 diff --git a/0002-Default---keep-all-metadata-to-TRUE-and-add---discard-additional-metadata.patch b/0002-Default---keep-all-metadata-to-TRUE-and-add---discard-additional-metadata.patch new file mode 100644 index 0000000000000000000000000000000000000000..b45969cfd179ecc94e569ce30777a9cb6c42ed4a --- /dev/null +++ b/0002-Default---keep-all-metadata-to-TRUE-and-add---discard-additional-metadata.patch @@ -0,0 +1,94 @@ +From b5f425fec738c1de344f4f917d3614e9efb98e2b Mon Sep 17 00:00:00 2001 +From: Aleš Matěj +Date: Thu, 23 Sep 2021 08:30:47 +0200 +Subject: [PATCH] Default --keep-all-metadata to TRUE and add --discard-additional-metadata + += changelog = +msg: Switch default of --keep-all-metadata to TRUE and add --discard-additional-metadata +type: enhancement +resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1992209 +--- + doc/createrepo_c.8 | 7 +++++-- + src/cmd_parser.c | 15 ++++++++++++--- + src/cmd_parser.h | 1 + + 3 files changed, 18 insertions(+), 5 deletions(-) + +diff --git a/doc/createrepo_c.8 b/doc/createrepo_c.8 +index c9017c5..1a3e101 100644 +--- a/doc/createrepo_c.8 ++++ b/doc/createrepo_c.8 +@@ -1,6 +1,6 @@ + .\" Man page generated from reStructuredText. + . +-.TH CREATEREPO_C 8 "2020-07-02" "" "" ++.TH CREATEREPO_C 8 "2021-09-23" "" "" + .SH NAME + createrepo_c \- Create rpm-md format (xml-rpm-metadata) repository + . +@@ -173,7 +173,10 @@ Generate zchunk files as well as the standard repodata. + Directory containing compression dictionaries for use by zchunk + .SS \-\-keep\-all\-metadata + .sp +-Keep all additional metadata (not primary, filelists and other xml or sqlite files, nor their compressed variants) from source repository during update. ++Keep all additional metadata (not primary, filelists and other xml or sqlite files, nor their compressed variants) from source repository during update (default). ++.SS \-\-discard\-additional\-metadata ++.sp ++Discard all additional metadata (not primary, filelists and other xml or sqlite files, nor their compressed variants) from source repository during update. + .SS \-\-compatibility + .sp + Enforce maximal compatibility with classical createrepo (Affects only: \-\-retain\-old\-md). +diff --git a/src/cmd_parser.c b/src/cmd_parser.c +index bbefa08..639d7e9 100644 +--- a/src/cmd_parser.c ++++ b/src/cmd_parser.c +@@ -65,6 +65,8 @@ struct CmdOptions _cmd_options = { + .zck_compression = FALSE, + .zck_dict_dir = NULL, + .recycle_pkglist = FALSE, ++ ++ .keep_all_metadata = TRUE, + }; + + +@@ -168,6 +170,9 @@ static GOptionEntry cmd_entries[] = + #endif + { "keep-all-metadata", 0, 0, G_OPTION_ARG_NONE, &(_cmd_options.keep_all_metadata), + "Keep all additional metadata (not primary, filelists and other xml or sqlite files, " ++ "nor their compressed variants) from source repository during update (default).", NULL }, ++ { "discard-additional-metadata", 0, 0, G_OPTION_ARG_NONE, &(_cmd_options.discard_additional_metadata), ++ "Discard all additional metadata (not primary, filelists and other xml or sqlite files, " + "nor their compressed variants) from source repository during update.", NULL }, + { "compatibility", 0, 0, G_OPTION_ARG_NONE, &(_cmd_options.compatibility), + "Enforce maximal compatibility with classical createrepo (Affects only: --retain-old-md).", NULL }, +@@ -510,9 +515,13 @@ check_arguments(struct CmdOptions *options, + x++; + } + +- // Check keep-all-metadata +- if (options->keep_all_metadata && !options->update) { +- g_warning("--keep-all-metadata has no effect (--update is not used)"); ++ if (options->discard_additional_metadata) { ++ options->keep_all_metadata = FALSE; ++ } ++ ++ // Check discard-additional-metadata ++ if (options->discard_additional_metadata && !options->update) { ++ g_warning("--discard-additional-metadata has no effect (--update is not used)"); + } + + // Process --distro tags +diff --git a/src/cmd_parser.h b/src/cmd_parser.h +index 32bcf99..03cfcf0 100644 +--- a/src/cmd_parser.h ++++ b/src/cmd_parser.h +@@ -77,6 +77,7 @@ struct CmdOptions { + char *zck_dict_dir; /*!< directory with zchunk dictionaries */ + gboolean keep_all_metadata; /*!< keep groupfile and updateinfo from source + repo during update */ ++ gboolean discard_additional_metadata; /*!< Inverse option to keep_all_metadata */ + gboolean ignore_lock; /*!< Ignore existing .repodata/ - remove it, + create the new one (empty) to serve as + a lock and use a .repodata.date.pid for +-- +libgit2 1.1.0 + diff --git a/createrepo_c-0.17.2.tar.gz b/createrepo_c-0.17.2.tar.gz deleted file mode 100644 index c67bf499d52fa49d9e968d881c6996c5323ea8dd..0000000000000000000000000000000000000000 Binary files a/createrepo_c-0.17.2.tar.gz and /dev/null differ diff --git a/createrepo_c.spec b/createrepo_c.spec index cb35469b2b245f2a25e9377940c76a727cce9430..89f85597469ed734b2b411d92f983b91e234afb8 100644 --- a/createrepo_c.spec +++ b/createrepo_c.spec @@ -10,27 +10,33 @@ %bcond_without drpm %endif -%if 0%{?rhel} || (0%{?fedora} && 0%{?fedora} < 29) +%if 0%{?rhel} %bcond_with zchunk %else %bcond_without zchunk %endif -%if (0%{?rhel} && 0%{?rhel} < 8) || (0%{?fedora} && 0%{?fedora} < 29) +%if 0%{?rhel} && 0%{?rhel} < 8 %bcond_with libmodulemd %else %bcond_without libmodulemd %endif +%if 0%{?rhel} && 0%{?rhel} <= 8 +%bcond_without legacy_hashes +%else +%bcond_with legacy_hashes +%endif + Summary: Creates a common metadata repository Name: createrepo_c -Version: 0.17.2 -Release: 3%{?dist} +Version: 0.17.7 +Release: 4%{?dist} License: GPLv2+ URL: https://github.com/rpm-software-management/createrepo_c Source0: %{url}/archive/%{version}/%{name}-%{version}.tar.gz -Patch1: 0001-Fix-cr_compress_file_with_stat-Memory-leak.patch -Patch2: 0002-Preserve-changed-API-for-cr_compress_file_with_stat-RhBug1973588.patch +Patch1: 0001-Preserve-changed-API-for-cr_compress_file_with_stat-RhBug1973588.patch +Patch2: 0002-Default---keep-all-metadata-to-TRUE-and-add---discard-additional-metadata.patch BuildRequires: cmake BuildRequires: gcc @@ -109,6 +115,7 @@ pushd build-py3 %cmake .. \ -DWITH_ZCHUNK=%{?with_zchunk:ON}%{!?with_zchunk:OFF} \ -DWITH_LIBMODULEMD=%{?with_libmodulemd:ON}%{!?with_libmodulemd:OFF} \ + -DWITH_LEGACY_HASHES=%{?with_legacy_hashes:ON}%{!?with_legacy_hashes:OFF} \ -DENABLE_DRPM=%{?with_drpm:ON}%{!?with_drpm:OFF} make %{?_smp_mflags} RPM_OPT_FLAGS="%{optflags}" # Build C documentation @@ -177,6 +184,23 @@ ln -sr %{buildroot}%{_bindir}/modifyrepo_c %{buildroot}%{_bindir}/modifyrepo %{python3_sitearch}/%{name}-%{version}-py%{python3_version}.egg-info %changelog +* Wed Feb 16 2022 Pavla Kratochvilova - 0.17.7-4 +- Switch default of --keep-all-metadata to TRUE and add --discard-additional-metadata (RhBug:1992209) + +* Mon Nov 29 2021 Pavla Kratochvilova - 0.17.7-3 +- Fix memory leak of `tmp_err` (RhBug:2005781) + +* Mon Nov 15 2021 Pavla Kratochvilova - 0.17.7-2 +- Build with legacy hashes (RhBug:2022271) + +* Tue Nov 09 2021 Pavla Kratochvilova - 0.17.7-1 +- Update to 0.17.7 +- Remove insecure hashes SHA-1 and MD5 from the default build (RhBug:1935486) +- Fix error when updating repo with removed modules metadata +- Exit with status code 1 when loading of repo's metadata fails +- Fix memory leaks (RhBug:1998426) +- Fix valgrind warnings caused by subprocess calls + * Wed Sep 15 2021 Pavla Kratochvilova - 0.17.2-3 - Preserve changed API for cr_compress_file_with_stat (RhBug:1973588) diff --git a/download b/download new file mode 100644 index 0000000000000000000000000000000000000000..c97d1e138c2f5753044eebc24b75ff6666575cb1 --- /dev/null +++ b/download @@ -0,0 +1 @@ +97b7992fad192256d03847fa2a096a3e createrepo_c-0.17.7.tar.gz