Browse Source

Strip 0: epochs from the version hash

This should fix some issues with dpkg normalizing such
values. Suprisingly enough apt treats the Version: field
the same, even with epoch vs without, but not when searching,
and does not strip the 0: from the output.
tags/debian/1.5_alpha1
Julian Andres Klode 4 years ago
parent
commit
6edfda8b45
2 changed files with 49 additions and 0 deletions
  1. +5
    -0
      apt-pkg/deb/deblistparser.cc
  2. +44
    -0
      test/integration/test-dpkg-normalization

+ 5
- 0
apt-pkg/deb/deblistparser.cc View File

@@ -372,6 +372,11 @@ unsigned short debListParser::VersionHash()
string to make that not matter. */
for (; Start != End; ++Start)
{
// Strip away 0: epochs from input
if (*Start == '0' && Start[1] == ':') {
Start++; // Skip the :
continue; // Skip the 0
}
if (isspace_ascii(*Start) != 0 || *Start == '=')
continue;
Result = AddCRC16Byte(Result, tolower_ascii_unsafe(*Start));


+ 44
- 0
test/integration/test-dpkg-normalization View File

@@ -0,0 +1,44 @@
#!/bin/sh
set -e

TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
configarchitecture "i386"

insertpackage 'unstable' 'spaces' 'i386' '1.0' 'Depends: spaces (= 1.0)'
insertpackage 'unstable' 'spaces' 'i386' '1.0' 'Depends: spaces (= 1.0)'
insertpackage 'unstable' 'lessequal' 'i386' '1.0' 'Depends: spaces (>= 1.0)'
insertpackage 'unstable' 'lessequal' 'i386' '1.0' 'Depends: spaces (> 1.0)'
insertpackage 'unstable' 'zero-epoch' 'i386' '1.0' 'Depends: spaces (< 0:1.0.0)'
insertpackage 'unstable' 'zero-epoch' 'i386' '1.0' 'Depends: spaces (< 1.0.0)'
insertpackage 'unstable' 'zero-epoch' 'i386' '0:1.0' 'Depends: spaces (< 0:1.0.0)'

setupaptarchive

testsuccessequal "spaces:
Installed: (none)
Candidate: 1.0
Version table:
1.0 500
500 file:$TMPWORKINGDIRECTORY/aptarchive unstable/main i386 Packages
500 file:$TMPWORKINGDIRECTORY/aptarchive unstable/main i386 Packages" aptcache policy spaces

testsuccessequal "lessequal:
Installed: (none)
Candidate: 1.0
Version table:
1.0 500
500 file:$TMPWORKINGDIRECTORY/aptarchive unstable/main i386 Packages
500 file:$TMPWORKINGDIRECTORY/aptarchive unstable/main i386 Packages" aptcache policy lessequal



testsuccessequal "zero-epoch:
Installed: (none)
Candidate: 1.0
Version table:
1.0 500
500 file:$TMPWORKINGDIRECTORY/aptarchive unstable/main i386 Packages
500 file:$TMPWORKINGDIRECTORY/aptarchive unstable/main i386 Packages
500 file:$TMPWORKINGDIRECTORY/aptarchive unstable/main i386 Packages" aptcache policy zero-epoch

Loading…
Cancel
Save