stable update of reprepro

February 22nd, 2011 - 03:40 pm ET by Bernhard R. Link | Report spam

I've prepared an upload of reprepro targeted for
stable-proposed-updates to work around testing and unstable
soon no longer having MD5Sum fields in the Release files.

Attached the .changes and a diff of the .debian.tar.gz files
and of the _amd64.deb files unpacked.

Any chance for this to be accepted? Any modifications still
needed to get in?

Bernhard R. Link


Format: 1.8
Date: Tue, 22 Feb 2011 21:16:03 CET
Source: reprepro
Binary: reprepro
Architecture: source amd64
Version: 4.2.0-2squeeze1
Distribution: stable-proposed-updates
Urgency: low
Maintainer: Bernhard R. Link <brlink@debian.org>
Changed-By: Bernhard R. Link <brlink@debian.org>
Description:
reprepro - Debian package repository producer
Closes: 614361
Changes:
reprepro (4.2.0-2squeeze1) stable-proposed-updates; urgency=low
.
* handle Release files without MD5Sum (Closes: 614361)
Checksums-Sha256:
7bbf1e4118ed3e4d3729d06a72b54e63e95bbb5cad5b9208ba8711d4c0993fce 1032 reprepro_4.2.0-2squeeze1.dsc
ac6a41448cf935b726104be110f8656f1d10f65cd7fcffe57fb05428344c6012 16730 reprepro_4.2.0-2squeeze1.debian.tar.gz
4458aaed733018f818c891cda9ad00fcd99b8d53ccabb4734a83ee0c3a03e425 482416 reprepro_4.2.0-2squeeze1_amd64.deb
Checksums-Sha1:
6643d1032948287379bcaacc0863760e4b6feaac 1032 reprepro_4.2.0-2squeeze1.dsc
432b5eea4a4d076f59a6dc7a447e494d509b709f 16730 reprepro_4.2.0-2squeeze1.debian.tar.gz
12654e3746e85987d4994b5b0da3cb1a85a6efd1 482416 reprepro_4.2.0-2squeeze1_amd64.deb
Files:
5eb4970ee7e8fddc8ba995ecdb4adabe 1032 utils extra reprepro_4.2.0-2squeeze1.dsc
1079f4040c8c55c49da98f01da7608fa 16730 utils extra reprepro_4.2.0-2squeeze1.debian.tar.gz
2ca12e3e9c63ad13879e7cc1e5296982 482416 utils extra reprepro_4.2.0-2squeeze1_amd64.deb


diff -r -u -N old/debian/changelog new/debian/changelog
old/debian/changelog 2010-10-24 11:14:27.000000000 +0200
+++ new/debian/changelog 2011-02-22 20:53:45.000000000 +0100
@@ -1,3 +1,9 @@
+reprepro (4.2.0-2squeeze1) stable-proposed-updates; urgency=low
+
+ * handle Release files without MD5Sum (Closes: 614361)
+
+ -- Bernhard R. Link <brlink@debian.org> Tue, 22 Feb 2011 20:39:37 +0100
+
reprepro (4.2.0-2) unstable; urgency=low

* include sys/stat.h in filecntl.h (Closes: 600982)
diff -r -u -N old/debian/patches/0006-support-Release-files-without-MD5Sum.patch new/debian/patches/0006-support-Release-files-without-MD5Sum.patch
old/debian/patches/0006-support-Release-files-without-MD5Sum.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/debian/patches/0006-support-Release-files-without-MD5Sum.patch 2011-02-22 20:54:09.000000000 +0100
@@ -0,0 +1,223 @@
+From b13d42711ce90193af66d6dc9e208c849d59b787 Mon Sep 17 00:00:00 2001
+From: Bernhard R. Link <brlink@debian.org>
+Date: Tue, 22 Feb 2011 20:21:17 +0100
+Subject: support Release files without MD5Sum
+
+If a Release file has no MD5Sum field, fall back to only
+use the other Checksums.
+
+This patch is similar to the one in 4.5.0 but more specific
+to avoid any changes in cases where there is a MD5Sum field.
+
+Bug-Debian: 614361
+
+ checksums.c | 59 ++++++++++++++++++++++++++++++++++++--
+ checksums.h | 2 +-
+ readrelease.c | 23 +++++++++++++--
+ sources.c | 6 ++--
+ tool.c | 2 +-
+ 5 files changed, 57 insertions(+), 35 deletions(-)
+
+diff --git a/checksums.c b/checksums.c
+index af38753..fa66b5c 100644
+ a/checksums.c
++++ b/checksums.c
+@@ -674,15 +674,23 @@ retvalue hashline_parse(const char *filenametoshow, const char *line, enum check
+ return RET_OK;
+ }
+
+-retvalue checksumsarray_parse(struct checksumsarray *out, const struct strlist l[cs_hashCOUNT], const char *filenametoshow) {
++retvalue checksumsarray_parse(struct checksumsarray *out, const struct strlist l[cs_hashCOUNT], const char *filenametoshow, bool havemd5) {
+ retvalue r;
+ int i;
+ struct checksumsarray a;
+ struct strlist filenames;
+- size_t count = l[cs_md5sum].count;
++ size_t count;
+ struct hashes *parsed;
+ enum checksumtype cs;
+
++ if( havemd5 ) {
++ count = l[cs_md5sum].count;
++ } else {
++ count = 0;
++ for( cs = cs_md5sum ; cs < cs_hashCOUNT ; cs++ )
++ count += l[cs].count;
++ }
++
+ parsed = calloc(count, sizeof(struct hashes));
+ if( FAILEDTOALLOC(parsed) ) {
+ return RET_ERROR_OOM;
+@@ -741,35 +749,44 @@ retvalue checksumsarray_parse(struct checksumsarray *out, const struct strlist l
+ } else {
+ struct hash_data *hashes;
+
+- // TODO: suboptimal, as we know where
+- // it likely is...
+ fileofs = strlist_ofs(&filenames, filename);
+ if( fileofs == -1 ) {
+- // TODO: future versions might add files
+- // her to the previous know ones instead,
+- // once md5sum hash may be empty...
+- fprintf(stderr,
++ if( havemd5 ) {
++ fprintf(stderr,
+ "WARNING: %s checksum line ' %s' in '%s' has no corresponding Files line!",
+- hash_name[cs], line,
+- filenametoshow);
+- }
+- hashes = parsed[fileofs].hashes;
+- if( unlikely( hashes[cs_length].len
+- != size_len
+- || memcmp(hashes[cs_length].start,
+- size_start, size_len) != 0) ) {
+- fprintf(stderr,
++ hash_name[cs], line,
++ filenametoshow);
++ continue;
++ }
++ fileofs = filenames.count;
++ r = strlist_add_dup(&filenames, filename);
++ if( RET_WAS_ERROR(r) ) {
++ strlist_done(&filenames);
++ free(parsed);
++ return r;
++ }
++ hashes = parsed[fileofs].hashes;
++ hashes[cs_length].start = size_start;
++ hashes[cs_length].len = size_len;
++ } else {
++ hashes = parsed[fileofs].hashes;
++ if( unlikely( hashes[cs_length].len
++ != size_len
++ || memcmp(hashes[cs_length].start,
++ size_start, size_len) != 0) ) {
++ fprintf(stderr,
+ "WARNING: %s checksum line ' %s' in '%s' contradicts 'Files' filesize!",
+- hash_name[cs], line,
+- filenametoshow);
+- continue;
++ hash_name[cs], line,
++ filenametoshow);
++ continue;
++ }
+ }
+ hashes[cs].start = hash_start;
+ hashes[cs].len = hash_len;
+ }
+ }
+ }
+- assert( count == (size_t)filenames.count );
++ assert( count >= (size_t)filenames.count );
+
+ if( filenames.count == 0 ) {
+ strlist_done(&filenames);
+diff --git a/checksums.h b/checksums.h
+index 2f8b3ff..9fbf890 100644
+ a/checksums.h
++++ b/checksums.h
+@@ -107,7 +107,7 @@ struct checksumsarray {
+ };
+ void checksumsarray_move(/*@out@*/struct checksumsarray *, /*@special@*/struct checksumsarray *array)/*@requires maxSet(array->names.values) >= array->names.count /\ maxSet(array->checksums) >= array->names.count @*/ /*@releases array->checksums, array->names.values @*/;
+ void checksumsarray_done(/*@special@*/struct checksumsarray *array) /*@requires maxSet(array->names.values) >= array->names.count /\ maxSet(array->checksums) >= array->names.count @*/ /*@releases array->checksums, array->names.values @*/;
+-retvalue checksumsarray_parse(/*@out@*/struct checksumsarray *, const struct strlist [cs_hashCOUNT], const char *filenametoshow);
++retvalue checksumsarray_parse(/*@out@*/struct checksumsarray *, const struct strlist [cs_hashCOUNT], const char *filenametoshow, bool havemd5);
+ retvalue checksumsarray_genfilelist(const struct checksumsarray *, /*@out@*/char **, /*@out@*/char **, /*@out@*/char **);
+ retvalue checksumsarray_include(struct checksumsarray *, /*@only@*/char *, const struct checksums *);
+ void checksumsarray_resetunsupported(const struct checksumsarray *, bool[cs_hashCOUNT]);
+diff --git a/readrelease.c b/readrelease.c
+index 3def5d9..f5cd758 100644
+ a/readrelease.c
++++ b/readrelease.c
+@@ -32,6 +32,8 @@ retvalue release_getchecksums(const char *releasefile, const bool ignore[cs_hash
+ char *chunk;
+ struct strlist files[cs_hashCOUNT];
+ enum checksumtype cs;
++ bool foundchecksums = false;
++ bool havemd5 = true;
+
+ r = readtextfile(releasefile, releasefile, &chunk, NULL);
+ assert( r != RET_NOTHING );
+@@ -47,23 +49,26 @@ retvalue release_getchecksums(const char *releasefile, const bool ignore[cs_hash
+ &files[cs]);
+ if( r == RET_NOTHING ) {
+ if( cs == cs_md5sum ) {
+- fprintf(stderr,
+-"Missing 'MD5Sum' field in Release file '%s'!", releasefile);
+- r = RET_ERROR;
+- } else
+- strlist_init(&files[cs]);
+- }
+- if( RET_WAS_ERROR(r) ) {
++ havemd5 = false;
++ }
++ strlist_init(&files[cs]);
++ } else if( RET_WAS_ERROR(r) ) {
+ while( cs-- > cs_md5sum ) {
+ strlist_done(&files[cs]);
+ }
+ free(chunk);
+ return r;
+- }
++ } else
++ foundchecksums = true;
+ }
+ free(chunk);
++ if( !foundchecksums ) {
++ fprintf(stderr,
++"Missing 'MD5Sum' field in Release file '%s'!", releasefile);
++ return RET_ERROR;
++ }
+
+- r = checksumsarray_parse(out, files, releasefile);
++ r = checksumsarray_parse(out, files, releasefile, havemd5);
+ for( cs = cs_md5sum ; cs < cs_hashCOUNT ; cs++ ) {
+ strlist_done(&files[cs]);
+ }
+diff --git a/sources.c b/sources.c
+index c3944b1..77155f6 100644
+ a/sources.c
++++ b/sources.c
+@@ -165,7 +165,7 @@ retvalue sources_getinstalldata(const struct target *t, const char *packagename,
+ return r;
+ }
+ }
+- r = checksumsarray_parse(&files, filelines, packagename);
++ r = checksumsarray_parse(&files, filelines, packagename, true);
+ for( cs = cs_md5sum ; cs < cs_hashCOUNT ; cs++ ) {
+ strlist_done(&filelines[cs]);
+ }
+@@ -303,7 +303,7 @@ retvalue sources_getchecksums(const char *chunk, struct checksumsarray *out) {
+ return r;
+ }
+ }
+- r = checksumsarray_parse(&a, filelines, "source chunk");
++ r = checksumsarray_parse(&a, filelines, "source chunk", true);
+ for( cs = cs_md5sum ; cs < cs_hashCOUNT ; cs++ ) {
+ strlist_done(&filelines[cs]);
+ }
+@@ -529,7 +529,7 @@ retvalue sources_readdsc(struct dsc_headers *dsc, const char *filename, const ch
+ return r;
+ }
+ }
+- r = checksumsarray_parse(&dsc->files, filelines, filenametoshow);
++ r = checksumsarray_parse(&dsc->files, filelines, filenametoshow, true);
+ for( cs = cs_md5sum ; cs < cs_hashCOUNT ; cs++ ) {
+ strlist_done(&filelines[cs]);
+ }
+diff --git a/tool.c b/tool.c
+index b6ab2f2..ba9fa64 100644
+ a/tool.c
++++ b/tool.c
+@@ -686,7 +686,7 @@ static retvalue read_dscfile(const char *fullfilename, struct dscfile **dsc) {
+ return r;
+ }
+ }
+- r = checksumsarray_parse(&n->expected, filelines, fullfilename);
++ r = checksumsarray_parse(&n->expected, filelines, fullfilename, true);
+ for( cs = cs_md5sum ; cs < cs_hashCOUNT ; cs++ ) {
+ strlist_done(&filelines[cs]);
+ }
+--
+1.5.6.5
+
diff -r -u -N old/debian/patches/series new/debian/patches/series
old/debian/patches/series 2010-10-24 11:14:27.000000000 +0200
+++ new/debian/patches/series 2011-02-22 20:54:09.000000000 +0100
@@ -3,3 +3,4 @@
0003-replace-sn-with-no-copy-in-changelogs.example.patch
0004-add-support-for-ButAutomaticUpgrades-thanks-to-Mode.patch
0005-fix-typos-in-manpage.patch
+0006-support-Release-files-without-MD5Sum.patch


diff -r -u -N reprepro_4.2.0-2/DEBIAN/control reprepro_4.2.0-2squeeze1/DEBIAN/control
reprepro_4.2.0-2/DEBIAN/control 2010-10-24 12:35:49.000000000 +0200
+++ reprepro_4.2.0-2squeeze1/DEBIAN/control 2011-02-22 21:01:18.000000000 +0100
@@ -1,8 +1,8 @@
Package: reprepro
-Version: 4.2.0-2
+Version: 4.2.0-2squeeze1
Architecture: amd64
Maintainer: Bernhard R. Link <brlink@debian.org>
-Installed-Size: 992
+Installed-Size: 1056
Depends: libarchive1 (>= 2.0.25), libbz2-1.0, libc6 (>= 2.7), libdb4.8, libgpg-error0 (>= 1.6-1), libgpgme11 (>= 1.2.0), zlib1g (>= 1:1.2.0.2)
Recommends: apt
Suggests: gnupg-agent, inoticoming, lzma, xz-utils
diff -r -u -N reprepro_4.2.0-2/DEBIAN/md5sums reprepro_4.2.0-2squeeze1/DEBIAN/md5sums
reprepro_4.2.0-2/DEBIAN/md5sums 2010-10-24 12:35:49.000000000 +0200
+++ reprepro_4.2.0-2squeeze1/DEBIAN/md5sums 2011-02-22 21:01:18.000000000 +0100
@@ -1,13 +1,13 @@
-bddf387d4e112a831457249ce2f8336f usr/bin/changestool
-0096b559d8b7732f41dee1c3c28c8939 usr/bin/reprepro
-efa423f7e298d44dfe772440c0ca7a54 usr/bin/rredtool
+b15e23081cab11900b9c7db404cadaf6 usr/bin/changestool
+f0aa32f9cd1d26f73b20f9322596ecf3 usr/bin/reprepro
+1a9d8383a841db87a27235a2a6e525d6 usr/bin/rredtool
9eebcd5853c2c8b8e8076e2152c8b41e usr/share/doc-base/reprepro
76f3022cae185ec0699f639099af0332 usr/share/doc/reprepro/FAQ.gz
c07ed77f10acb332af8ffe9005d877d0 usr/share/doc/reprepro/NEWS.gz
798f3d5d64ff39786aa586e728574a19 usr/share/doc/reprepro/README
78da8594101caa835230f4a3159389b9 usr/share/doc/reprepro/README.Debian
b37c79554960feb3aeb2236a5e1695ee usr/share/doc/reprepro/TODO
-3300702ac95d85930567ea1b78e84f76 usr/share/doc/reprepro/changelog.Debian.gz
+0eb5c7ef86bd193e041bf390d7d0d6c8 usr/share/doc/reprepro/changelog.Debian.gz
97edbb53d4cdd12777a27574b9a3ee3d usr/share/doc/reprepro/changelog.gz
e4bb1498b6f1d1f09f8ac16d466f20b9 usr/share/doc/reprepro/copyright
1da86e7265847f906394650ca71c95a8 usr/share/doc/reprepro/examples/bzip.example
Binary files reprepro_4.2.0-2/usr/bin/changestool and reprepro_4.2.0-2squeeze1/usr/bin/changestool differ
Binary files reprepro_4.2.0-2/usr/bin/reprepro and reprepro_4.2.0-2squeeze1/usr/bin/reprepro differ
Binary files reprepro_4.2.0-2/usr/bin/rredtool and reprepro_4.2.0-2squeeze1/usr/bin/rredtool differ
diff -r -u -N reprepro_4.2.0-2/usr/share/doc/reprepro/changelog.Debian reprepro_4.2.0-2squeeze1/usr/share/doc/reprepro/changelog.Debian
reprepro_4.2.0-2/usr/share/doc/reprepro/changelog.Debian 2010-10-24 11:14:27.000000000 +0200
+++ reprepro_4.2.0-2squeeze1/usr/share/doc/reprepro/changelog.Debian 2011-02-22 20:40:56.000000000 +0100
@@ -1,3 +1,9 @@
+reprepro (4.2.0-2squeeze1) stable-proposed-updates; urgency=low
+
+ * handle Release files without MD5Sum (Closes: 614361)
+
+ -- Bernhard R. Link <brlink@debian.org> Tue, 22 Feb 2011 20:39:37 +0100
+
reprepro (4.2.0-2) unstable; urgency=low

* include sys/stat.h in filecntl.h (Closes: 600982)



To UNSUBSCRIBE, email to debian-release-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Archive: http://lists.debian.org/20110222203634.GA5439@pcpool00.mathematik.uni-freiburg.de
email Follow the discussionReplies 1 replyReplies Make a reply

Replies

#1 Philipp Kern
March 03rd, 2011 - 03:00 pm ET | Report spam

Hi Bernhard,

On Tue, Feb 22, 2011 at 09:36:34PM +0100, Bernhard R. Link wrote:
I've prepared an upload of reprepro targeted for
stable-proposed-updates to work around testing and unstable
soon no longer having MD5Sum fields in the Release files.

Attached the .changes and a diff of the .debian.tar.gz files
and of the _amd64.deb files unpacked.

Any chance for this to be accepted? Any modifications still
needed to get in?



we'd like to delay this for r2 to get all the checksum stuff in at once and
give it more testing in, well, testing and unstable.

Would you mind filing a bug against release.debian.org about this, so
that we don't forget it? Thanks.

Kind regards
Philipp Kern





To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Archive: http://lists.debian.org/

Similar topics