Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package reprepro for openSUSE:Factory checked in at 2024-12-30 14:26:41 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/reprepro (Old) and /work/SRC/openSUSE:Factory/.reprepro.new.1881 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "reprepro" Mon Dec 30 14:26:41 2024 rev:7 rq:1233626 version:5.4.6 Changes: -------- --- /work/SRC/openSUSE:Factory/reprepro/reprepro.changes 2024-01-29 22:32:41.657433830 +0100 +++ /work/SRC/openSUSE:Factory/.reprepro.new.1881/reprepro.changes 2024-12-30 14:26:42.594392982 +0100 @@ -1,0 +2,15 @@ +Fri Dec 27 16:09:52 UTC 2024 - Michael Calmer <m...@suse.com> + +- Update to version 5.4.6 + * Print complaints about lockfile on stderr + * The translatelegacyreferences command creates a new + references.db file with the DUP flag in place of DUPSORT. It + then copies the content of the old references.db file into the + new one. + * When an attempt is made to open the references.db file, + reprepro checks if the DUPSORT flag is set. If this is so, the + database needs to be upgraded, so reprepro exits with an error + asking the user to call the new 'translatelegacyreferences' + command. + +------------------------------------------------------------------- Old: ---- reprepro_5.4.3.orig.tar.xz New: ---- reprepro_5.4.6.orig.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ reprepro.spec ++++++ --- /var/tmp/diff_new_pack.JuW1W8/_old 2024-12-30 14:26:43.390425742 +0100 +++ /var/tmp/diff_new_pack.JuW1W8/_new 2024-12-30 14:26:43.394425906 +0100 @@ -17,12 +17,12 @@ Name: reprepro -Version: 5.4.3 +Version: 5.4.6 Release: 0 Summary: Debian repository metadata generator License: GPL-2.0-only AND GPL-2.0-or-later AND MIT URL: https://salsa.debian.org/debian/reprepro -Source: http://deb.debian.org/debian/pool/main/r/reprepro/reprepro_%version.orig.tar.xz +Source: http://deb.debian.org/debian/pool/main/r/reprepro/reprepro_%{version}.orig.tar.xz BuildRequires: automake BuildRequires: gpgme-devel BuildRequires: libarchive-devel @@ -51,7 +51,7 @@ generated Package indexes is supported. %prep -%autosetup -p1 +%autosetup -p1 -n %name-%version find docs -type f -exec chmod -x {} + %build ++++++ reprepro_5.4.3.orig.tar.xz -> reprepro_5.4.6.orig.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/reprepro-5.4.3/ChangeLog new/reprepro-5.4.6/ChangeLog --- old/reprepro-5.4.3/ChangeLog 2024-01-07 22:14:06.000000000 +0100 +++ new/reprepro-5.4.6/ChangeLog 2024-12-18 15:54:20.000000000 +0100 @@ -1,3 +1,45 @@ +2024-12-13 Felix Yan <felixonm...@archlinux.org> + + * docs/reprepro.1: reprepro.1: Correct a typo + +2024-09-19 Bastian Germann <b...@debian.org> + + * INSTALL: Dependency version requirements + +2023-09-11 Giorgio Comitini <giorgiocomit...@chromodynamical.com> + + * database.*, main.c, tests/multiversion.sh: + Implement command translatelegacyreferences + +2024-08-03 Bastian Germann <b...@debian.org> + + * configure.ac, NEWS: Release version 5.4.5 + +2024-07-16 Serge Schneider <se...@raspberrypi.com> + + * database.c: Use DB_ENV->dbrename() and DB_ENV->dbremove() + in database_translate_legacy_packages + +2024-05-16 Simon Richter <s...@debian.org> + + * database.c: Print complains about lockfile on stderr + When waiting for a lock, the message is printed to stdout, which messes + up the output for tools processing it. Print to stderr instead. + +2024-02-17 Bastian Germann <b...@debian.org> + + * configure.ac, NEWS: Release version 5.4.4 + +2024-02-05 Sylvestre Ledru <sylves...@debian.org> + + * docs: Fix some typos + * reprepro.1: add missing single quotes + +2024-01-08 Bastian Germann <b...@debian.org> + + * uncompression.c: Wait for poll event. + Revert "uncompress: prevent reprepro from hanging on unzstd" + 2024-01-07 Bastian Germann <b...@debian.org> * configure.ac, NEWS: Release version 5.4.3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/reprepro-5.4.3/INSTALL new/reprepro-5.4.6/INSTALL --- old/reprepro-5.4.3/INSTALL 2024-01-07 22:14:06.000000000 +0100 +++ new/reprepro-5.4.6/INSTALL 2024-12-18 15:54:20.000000000 +0100 @@ -2,11 +2,11 @@ libdb3, libdb4.x or libdb5.x libz Optional Dependencies: - libgpgme >= 0.4.1 (In Debian libgpgme11-dev, NOT libgpgme-dev) + libgpgme >= 0.4.1 libbz2 libarchive When Building from git: - autoconf2.50 (autoconf 2.13 will not work) + autoconf >= 2.50 Basic Installation ================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/reprepro-5.4.3/NEWS new/reprepro-5.4.6/NEWS --- old/reprepro-5.4.3/NEWS 2024-01-07 22:14:06.000000000 +0100 +++ new/reprepro-5.4.6/NEWS 2024-12-18 15:54:20.000000000 +0100 @@ -1,3 +1,25 @@ +Updates between 5.4.5 and 5.4.6: +- Implement command translatelegacyreferences (https://bugs.debian.org/1051537): + reprepro did not automatically migrate the database if needed after version + upgrades. Instead, it raised an error and asked the user to call one of the + translate* commands. Add one more such commands. It works as follows: + * When an attempt is made to open the references.db file, reprepro + checks if the DUPSORT flag is set. If this is so, the database + needs to be upgraded, so reprepro exits with an error asking the + user to call the new 'translatelegacyreferences' command. + * The translatelegacyreferences command creates a new references.db + file with the DUP flag in place of DUPSORT. It then copies the + content of the old references.db file into the new one. + +Updates between 5.4.4 and 5.4.5: +- Use DB_ENV->dbrename() and DB_ENV->dbremove() in + database_translate_legacy_packages (https://bugs.debian.org/1017983) +- Print complains about lockfile on stderr (https://bugs.debian.org/1071195) + +Updates between 5.4.3 and 5.4.4: +- Revert "uncompress: prevent reprepro from hanging on unzstd" +- Wait for poll event + Updates between 5.4.2 and 5.4.3: - uncompress: prevent block on unzstd (https://bugs.debian.org/1056380) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/reprepro-5.4.3/README new/reprepro-5.4.6/README --- old/reprepro-5.4.3/README 2024-01-07 22:14:06.000000000 +0100 +++ new/reprepro-5.4.6/README 2024-12-18 15:54:20.000000000 +0100 @@ -21,7 +21,7 @@ architecture: The term like "sparc","i386","mips",... component: Things like "main" "non-free" "contrib" ... - (somtimes also called sections) + (sometimes also called sections) section: Things like "base" "interpreters" "oldlibs" (sometimes also called subsections) type: The kind of packages, currently supported: @@ -47,14 +47,14 @@ This makes no real mirror of the distribution, but only of it contents. Thus the Index-files will be different. (And thus no longer can be verified - by the offical signatures). This means people using + by the official signatures). This means people using this mirror have to trust you to not include anything ugly, as they can only check your signature directly. (Or in other words: not useful for mirroring things to be used by strangers). - location: The directory layout under pool/ is only divided - by the component and the sourcename. Ecspecially + by the component and the sourcename. Especially woody and updates/woody will share the same space, thus avoiding multiple instances of the same file. (Can also cause trouble in the rare cases, when both @@ -71,7 +71,7 @@ Note that other than apt-ftparchive case is most likely to be significant. (Having the wrong case in might also cause havoc in apt-ftparchive, as that changes the case of - the fieldname, which might confuse other programms...) + the fieldname, which might confuse other programs...) * Things that might be interesting to know: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/reprepro-5.4.3/configure.ac new/reprepro-5.4.6/configure.ac --- old/reprepro-5.4.3/configure.ac 2024-01-07 22:14:06.000000000 +0100 +++ new/reprepro-5.4.6/configure.ac 2024-12-18 15:54:20.000000000 +0100 @@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script dnl -AC_INIT(reprepro, 5.4.3) +AC_INIT(reprepro, 5.4.6) AC_CONFIG_SRCDIR(main.c) AC_CONFIG_AUX_DIR(ac) AM_INIT_AUTOMAKE([-Wall -Werror -Wno-portability]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/reprepro-5.4.3/database.c new/reprepro-5.4.6/database.c --- old/reprepro-5.4.3/database.c 2024-01-07 22:14:06.000000000 +0100 +++ new/reprepro-5.4.6/database.c 2024-12-18 15:54:20.000000000 +0100 @@ -145,7 +145,7 @@ if (tries < waitforlock && ! interrupted()) { unsigned int timetosleep = 10; if (verbose >= 0) - printf( + fprintf(stderr, "Could not acquire lock: %s already exists!\nWaiting 10 seconds before trying again.\n", lockfile); while (timetosleep > 0) @@ -1949,6 +1949,8 @@ retvalue database_openreferences(void) { retvalue r; + uint32_t flags; + int dbret; assert (rdb_references == NULL); r = database_table("references.db", "references", @@ -1959,6 +1961,17 @@ return r; } else rdb_references->verbose = false; + dbret = rdb_references->berkeleydb->get_flags(rdb_references->berkeleydb, &flags); + if (dbret != 0) { + table_printerror(rdb_references, dbret, "get_flags"); + return RET_DBERR(dbret); + } + if (ISSET(flags, DB_DUPSORT)) { + fprintf(stderr, +"Error: database uses deprecated format.\n" +"Please run translatelegacyreferences to update to the new format first.\n"); + return RET_ERROR; + } return RET_OK; } @@ -2061,7 +2074,6 @@ const char *chunk, *packagename; char *identifier, *key, *legacy_filename, *packages_filename, *packageversion; retvalue r, result; - int ret, e; size_t chunk_len; DBT Key, Data; @@ -2072,19 +2084,15 @@ fprintf(stderr, "Cannot find directory '%s'!\n", global.dbdir); return RET_ERROR; } - packages_filename = dbfilename("packages.db"); legacy_filename = dbfilename("packages.legacy.db"); - ret = rename(packages_filename, legacy_filename); - if (ret != 0) { - e = errno; - fprintf(stderr, "error %d renaming %s to %s: %s\n", - e, packages_filename, legacy_filename, strerror(e)); - return (e != 0)?e:EINVAL; + r = rdb_env->dbrename(rdb_env, NULL, "packages.db", NULL, "packages.legacy.db", 0); + if (r != 0) { + fprintf(stderr, "Error: DB_ENV->dbrename: %s\n", db_strerror(r)); + return r; } if (verbose >= 15) fprintf(stderr, "trace: Moved '%s' to '%s'.\n", packages_filename, legacy_filename); - r = database_table("packages.legacy.db", NULL, dbt_BTREE, DB_RDONLY, &legacy_databases); assert (r != RET_NOTHING); if (RET_WAS_ERROR(r)) @@ -2167,12 +2175,12 @@ RET_ENDUPDATE(result, r); if (RET_IS_OK(result)) { - e = deletefile(legacy_filename); - if (e != 0) { + r = rdb_env->dbremove(rdb_env, NULL, "packages.legacy.db", NULL, 0); + if (r != 0) { fprintf(stderr, "Could not delete '%s'!\n" "It can now safely be deleted and it all that is left to be done!\n", legacy_filename); - return RET_ERRNO(e); + return r; } } @@ -2707,3 +2715,91 @@ database_free(); return r; } + +static retvalue table_copy_with_dup(struct table *oldtable, struct table *newtable) { + retvalue r; + struct cursor *cursor; + const char *filekey, *data; + size_t data_len; + + r = table_newglobalcursor(oldtable, true, &cursor); + if (!RET_IS_OK(r)) + return r; + while (cursor_nexttempdata(oldtable, cursor, &filekey, + &data, &data_len)) { + r = table_addrecord(newtable, filekey, + data, data_len, false); + if (RET_WAS_ERROR(r)) + return r; + } + return RET_OK; +} + +retvalue database_translate_legacy_references(void) { + char *dbname, *tmpdbname; + struct table *oldtable, *newtable; + int ret; + retvalue r, r2; + + dbname = dbfilename("references.db"); + if (FAILEDTOALLOC(dbname)) + return RET_ERROR_OOM; + tmpdbname = dbfilename("old.references.db"); + if (FAILEDTOALLOC(tmpdbname)) { + free(dbname); + return RET_ERROR_OOM; + } + ret = rename(dbname, tmpdbname); + if (ret != 0) { + int e = errno; + fprintf(stderr, "Could not rename '%s' into '%s': %s(%d)\n", + dbname, tmpdbname, strerror(e), e); + free(dbname); + free(tmpdbname); + return RET_ERRNO(e); + } + newtable = NULL; + r = database_table("references.db", "references", + dbt_BTREEDUP, DB_CREATE, &newtable); + assert (r != RET_NOTHING); + oldtable = NULL; + if (RET_IS_OK(r)) { + r = database_table("old.references.db", "references", + dbt_BTREEDUP, DB_RDONLY, &oldtable); + if (r == RET_NOTHING) { + fprintf(stderr, "Could not find old-style database!\n"); + r = RET_ERROR; + } + } + if (RET_IS_OK(r)) { + r = table_copy_with_dup(oldtable, newtable); + r2 = table_close(oldtable); + RET_ENDUPDATE(r, r2); + if (r == RET_NOTHING) { + r = RET_OK; + } + } + r2 = table_close(newtable); + RET_ENDUPDATE(r, r2); + if (RET_IS_OK(r)) + (void)unlink(tmpdbname); + + if (RET_WAS_ERROR(r)) { + ret = rename(tmpdbname, dbname); + if (ret != 0) { + int e = errno; + fprintf(stderr, +"Could not rename '%s' back into '%s': %s(%d)\n", + dbname, tmpdbname, strerror(e), e); + free(tmpdbname); + free(dbname); + return RET_ERRNO(e); + } + free(tmpdbname); + free(dbname); + return r; + } + free(tmpdbname); + free(dbname); + return RET_OK; +} \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/reprepro-5.4.3/database.h new/reprepro-5.4.6/database.h --- old/reprepro-5.4.3/database.h 2024-01-07 22:14:06.000000000 +0100 +++ new/reprepro-5.4.6/database.h 2024-12-18 15:54:20.000000000 +0100 @@ -27,6 +27,7 @@ retvalue database_opentracking(const char *, bool /*readonly*/, /*@out@*/struct table **); retvalue database_translate_filelists(void); retvalue database_translate_legacy_checksums(bool /*verbosedb*/); +retvalue database_translate_legacy_references(void); retvalue table_close(/*@only@*/struct table *); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/reprepro-5.4.3/docs/manual.html new/reprepro-5.4.6/docs/manual.html --- old/reprepro-5.4.3/docs/manual.html 2024-01-07 22:14:06.000000000 +0100 +++ new/reprepro-5.4.6/docs/manual.html 2024-12-18 15:54:20.000000000 +0100 @@ -888,7 +888,7 @@ <tt class="field">Update:</tt> field listing the update rules applied to it. Those update rules are listed in <tt class="file">conf/updates</tt>. There is also the magic <tt>-</tt> update rule, which tells reprepro to delete -all packages not readded by later rules. +all packages not re-added by later rules. <br> To make reprepro to update all distributions call <tt>reprepro update</tt> without further arguments, or give the distributions to update as additional @@ -1147,7 +1147,7 @@ <h5>Calling conventions for <tt class="suffix">.changes</tt> scripts</h5> This type of script is called with 5 or 6 arguments. The first is always "<tt>accepted</tt>", to make it easier to -check it is configued the right way. +check it is configured the right way. The second argument is the codename of the distribution the <tt class="suffix">.changes</tt>-file was added to. The third argument is the source name, the forth the version. @@ -1246,15 +1246,15 @@ All <tt class="constant">POOLNEW</tt> come before any distribution changes referencing them and all <tt class="constant">POOLDELETE</tt> will be afterwards. -Each line beloging to a distribution is guaranteed to be between the corresponding +Each line belonging to a distribution is guaranteed to be between the corresponding <tt class="constant">START-DISTRIBUTION</tt> and <tt class="constant">END-DISTRIBUTION</tt> or between a <tt class="constant">START-SNAPSHOT</tt> and <tt class="constant">END-SNAPSHOT</tt> or between a with the same directory -(i.e. there is some redundancy so you can choose to parse the information where it is more conventient for you). +(i.e. there is some redundancy so you can choose to parse the information where it is more convenient for you). -The lines starting with <tt class="constant">DIST</tt> describe new or modified files in the distribution description exported by reprepro. No hint is given if that file was previously non-existant, a proper file or a symlink (i.e. if you copy stuff, do not make any assumptions about that). +The lines starting with <tt class="constant">DIST</tt> describe new or modified files in the distribution description exported by reprepro. No hint is given if that file was previously non-existent, a proper file or a symlink (i.e. if you copy stuff, do not make any assumptions about that). Future versions of reprepro might create <tt class="constant">DISTKEEP</tt> lines to denote files that have not changed (i.e. just ignore those lines to be future-proof). The directories for the distribution entries are what apt expects them (i.e. always starting with <tt class="constant">dists/</tt>, while the third argument to <tt class="constant">DISTFILE</tt> is the name reprepro generated (i.e. starts with the distdir value, which can be configured to not end with <tt class="constant">dists/</tt>). @@ -1427,7 +1427,7 @@ files (even when there is no key to look for specified, as that is the best way to get the data from the signed block). Avoiding this by just accepting stuff without looking for signatures on -untrusted data is not really an option, so I know nothing to prefent this +untrusted data is not really an option, so I know nothing to prevent this type of problems. </dd> <dt>libarchive</dt><dd> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/reprepro-5.4.3/docs/reprepro.1 new/reprepro-5.4.6/docs/reprepro.1 --- old/reprepro-5.4.3/docs/reprepro.1 2024-01-07 22:14:06.000000000 +0100 +++ new/reprepro-5.4.6/docs/reprepro.1 2024-12-18 15:54:20.000000000 +0100 @@ -652,10 +652,10 @@ (That means all package generated by a source package \fIblub\fP, except those also specifying a version number with its Source). -.B reprepro \-b . \-T deb listfilter test2 '$Source (==\fIblub\fP) +.B reprepro \-b . \-T deb listfilter test2 '$Source (==\fIblub\fP)' is the better way to do this (but only available since 3.11.1). -.B reprepro \-b . listfilter test2 '$PackageType (==deb), $Source (==\fIblub\fP) +.B reprepro \-b . listfilter test2 '$PackageType (==deb), $Source (==\fIblub\fP)' is another (less efficient) way. .B reprepro \-b . listfilter test2 'Package (% linux\-*\-2.6*)' @@ -714,7 +714,7 @@ .BR dumpupdate " [ " \fIcodenames\fP " ]" Same like .BR checkupdate , -but less suiteable for humans and more suitable for computers. +but less suitable for humans and more suitable for computers. .TP .BR predelete " [ " \fIcodenames\fP " ]" This will determine which packages a \fBupdate\fP would delete or @@ -754,7 +754,7 @@ .BR dumppull " [ " \fIcodenames\fP " ]" Same like .BR checkpull , -but less suiteable for humans and more suitable for computers. +but less suitable for humans and more suitable for computers. .TP .B includedeb \fIcodename\fP \fI.deb-filename\fP Include the given binary Debian package (.deb) in the specified @@ -848,11 +848,11 @@ not cause any warning. .TP .BR redochecksums " [ " \fIcodenames\fP " ]" -Readd the information about file checksums to the package indices. +Re-add the information about file checksums to the package indices. Usually the package's control information is created at inclusion time or imported from some remote source and not changed later. -This command modifies it to readd missing checksum types. +This command modifies it to re-add missing checksum types. Only checksums already known are used. To update known checksums about files run \fBcollectnewchecksums\fP first. @@ -1002,7 +1002,7 @@ Remove all references generated by an \fBgenshapshot\fP with the same arguments. This allows the next \fBdeleteunferenced\fP call to delete those files. -(The indicies in \fBdists/\fP for the snapshot are not removed.) +(The indices in \fBdists/\fP for the snapshot are not removed.) .TP .BR rerunnotifiers " [ " \fIcodenames\fP " ]" Run all external scripts specified in the \fBLog:\fP options of the @@ -1041,6 +1041,15 @@ .IB db /contents.cache.db file size available in that partition. .TP +.B translatelegacyreferences +Translate the references within +.IB db /references.db +into the new format used since reprepro 5.4.0. + +Make sure you have at least the same space of the current +.IB db /references.db +file size available in that partition. +.TP .B flood \fIdistribution\fP \fR[\fP\fIarchitecture\fP\fR]\fP For each architecture of \fIdistribution\fP (or for the one specified) add architecture \fBall\fP packages from other architectures @@ -1202,7 +1211,7 @@ was run since the config was last changed. .SH "CONFIG FILES" -.B reprepo +.B reprepro uses three config files, which are searched in the directory specified with .B \-\-confdir @@ -1408,7 +1417,7 @@ .B SignWith When this field is present, a Release.gpg file will be generated. If the value is "yes" or "default", the default key of gpg is used. -If the field starts with an exlamation mark ("!"), the given script +If the field starts with an exclamation mark ("!"), the given script is executed to do the signing. Otherwise the value will be given to libgpgme to determine to key to use. @@ -1417,7 +1426,7 @@ .br .B gpg \-\-list\-secret\-keys \fIvalue\fP .br -to see how gpg could interprete the value. +to see how gpg could interpret the value. If that command does not list any keys or multiple ones, try to find some other value (like the keyid), that gpg can more easily associate with a unique key. @@ -1677,7 +1686,7 @@ Each line consists out of 4 arguments: A glob pattern for the section -(clasically \fBbyhand\fP, though Ubuntu uses \fBraw\-\fP*), +(classically \fBbyhand\fP, though Ubuntu uses \fBraw\-\fP*), a glob pattern for the priority (not usually used), and a glob pattern for the filename. @@ -1935,7 +1944,7 @@ set are ignore when getting source packages. Without this option or if it is true, those source packages are ignored, while if set to no or false, those source packages -are also condidates if no other filter excludes them. +are also candidates if no other filter excludes them. (The default of true will likely change once reprepro supports multiple versions of a package or has other means to keep the source packages around). @@ -2107,7 +2116,7 @@ \fB$Delete\fP: the value is treated a fieldname and fields of that name are removed. (This way one can remove fields previously added without removing and -readding the package. +re-adding the package. And fields already included in the package can be removed, too). .SS conf/incoming @@ -2129,7 +2138,7 @@ A directory where the files listed in the processed .changes files are copied into before they are read. You can avoid some copy operations by placing this directory -within the same moint point the pool hierarchy +within the same mount point the pool hierarchy is (at least partially) in. .TP .B LogDir @@ -2233,7 +2242,7 @@ If a \fB.changes\fP file causes errors while processing, delete it and the files it references. -Note that allowing cleanup in publically accessible incoming queues allows a denial +Note that allowing cleanup in publicly accessible incoming queues allows a denial of service by sending in .changes files deleting other peoples files before they are completed. Especially when .changes files are handled directly (e.g. by inoticoming). @@ -2514,7 +2523,7 @@ Do not warn about wrong "Architecture:" lines in downloaded Packages files. (Note that wrong Architectures are always ignored when getting -stuff from flat repostories or importing stuff from one architecture +stuff from flat repositories or importing stuff from one architecture to another). .TP .B wrongdistribution \fR(safe to ignore) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/reprepro-5.4.3/docs/reprepro.bash_completion new/reprepro-5.4.6/docs/reprepro.bash_completion --- old/reprepro-5.4.3/docs/reprepro.bash_completion 2024-01-07 22:14:06.000000000 +0100 +++ new/reprepro-5.4.6/docs/reprepro.bash_completion 2024-12-18 15:54:20.000000000 +0100 @@ -338,6 +338,7 @@ tidytracks\ translatefilelists\ translatelegacychecksums\ + translatelegacyreferences\ unusedsources\ update' hiddencommands='__d\ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/reprepro-5.4.3/docs/reprepro.zsh_completion new/reprepro-5.4.6/docs/reprepro.zsh_completion --- old/reprepro-5.4.3/docs/reprepro.zsh_completion 2024-01-07 22:14:06.000000000 +0100 +++ new/reprepro-5.4.6/docs/reprepro.zsh_completion 2024-12-18 15:54:20.000000000 +0100 @@ -254,6 +254,7 @@ tidytracks:"look for files referened by tracks but no longer needed" translatefilelists:"translate pre-3.0.0 contents.cache.db into new format" translatelegacychecksums:"get rid of obsolete files.db" + translatelegacyreferences:"translate pre-5.4.0 references.db into new format" unreferencesnapshot:"no longer mark files used by an snapshot" unusedsources:"list source packages with no binary packages" update:"update from external source" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/reprepro-5.4.3/main.c new/reprepro-5.4.6/main.c --- old/reprepro-5.4.3/main.c 2024-01-07 22:14:06.000000000 +0100 +++ new/reprepro-5.4.6/main.c 2024-12-18 15:54:20.000000000 +0100 @@ -538,6 +538,9 @@ verbosedatabase || verbose > 10); } +ACTION_T(n, n, translatelegacyreferences) { + return database_translate_legacy_references(); +} ACTION_F(n, n, n, n, addmd5sums) { char buffer[2000], *c, *m; @@ -4135,6 +4138,8 @@ 0, 0, "translatefilelists"}, {"translatelegacychecksums", A_N(translatelegacychecksums), 0, 0, "translatelegacychecksums"}, + {"translatelegacyreferences", A__T(translatelegacyreferences), + 0, 0, "translatelegacyreferences"}, {"_listconfidentifiers", A_C(listconfidentifiers), 0, -1, "_listconfidentifiers"}, {"_listdbidentifiers", A_ROB(listdbidentifiers)|MAY_UNUSED, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/reprepro-5.4.3/tests/multiversion.sh new/reprepro-5.4.6/tests/multiversion.sh --- old/reprepro-5.4.3/tests/multiversion.sh 2024-01-07 22:14:06.000000000 +0100 +++ new/reprepro-5.4.6/tests/multiversion.sh 2024-12-18 15:54:20.000000000 +0100 @@ -303,6 +303,7 @@ # Test case for https://github.com/profitbricks/reprepro/issues/8 rm -rf "$REPO" cp -r "${0%/*}/old-database" "$REPO" + call $REPREPRO $VERBOSE_ARGS -b $REPO translatelegacyreferences call $REPREPRO $VERBOSE_ARGS -b $REPO export assertEquals "\ bullseye|main|amd64 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/reprepro-5.4.3/uncompression.c new/reprepro-5.4.6/uncompression.c --- old/reprepro-5.4.3/uncompression.c 2024-01-07 22:14:06.000000000 +0100 +++ new/reprepro-5.4.6/uncompression.c 2024-12-18 15:54:20.000000000 +0100 @@ -1430,10 +1430,7 @@ 0 }; unsigned char buffer[4096] = {}; - while ((e = poll(&pollfd, 1, 0)) >= 0) { - if (pollfd.revents & POLLERR || pollfd.revents & POLLHUP) - return RET_ERRNO(file->error); - + while ((e = poll(&pollfd, 1, -1)) > 0) { e = read(file->fd, buffer, 4096); if (e <= 0) break; @@ -1463,13 +1460,11 @@ free(file->intermediate.buffer); if (file->pipeinfd != -1) (void)close(file->pipeinfd); - output_fd = file->fd; // Drain the child's stdout in the unlikely case it's blocking on it e = drain_pipe_fd(file, errno_p, msg_p); - if (e != RET_OK) { - (void)close(output_fd); + if (e != RET_OK) return e; - } + output_fd = file->fd; file->fd = file->infd; result = RET_OK; if (file->pid <= 0) {