Control: tag -1 moreinfo Hi, Julian Andres Klode <jak@debian.org> (2017-07-04): > This release fixes several smaller bugs in the network connection. > Apart from the changes in the changelog, there also are some changes > to our travis CI integration and the test suite to make CI more > reliable (by fixing coverage errors messing up our tests), more future > proof (by using docker instead of mixing travis' ubuntu trusty with > wily and xenial packages...), and the CI now runs on stretch, so > that's good too :) > > All fixes are straight cherry-picks from unstable, just the travis > stuff had some changes (one less variant to build and stretch isntead > of testing), but that does not affect us. apt will need to migrate to testing before we could tentatively accept anything from stretch-new; but we're not there yet. > Let me know if this is good to go. > > apt (1.4.7) stretch; urgency=medium I'll let Adam comment on whether it's OK for this specific case not to use +debXuY versioning, since you seem to be going for 1.4.x series in stretch. > * New microrelease fixing issues in http method (LP: #1702326) > => I'll also upload this to Ubuntu, that's just a tag for them, it > also helps summarizing the main part of the upload This isn't much informative: I have no idea what issues you're fixing, or how. Users won't know, either. > [ Robert Luberda ] > * fix a "critical" typo in old changelog entry (Closes: 866358) > > => Remove a letter, and works around a bug in apt-listchanges. Having a quick glance at the BTS, severity:minor isn't exactly what we're considering for proposed-updates. Having correct bug meta data would help (from reading the bug report, working around the issue might be an idea, but fixing apt-listchanges in stable as well might be better). > [ David Kalnischkies ] > * use port from SRV record instead of initial port > => Might have picked the wrong port > > [ Julian Andres Klode ] > * Reset failure reason when connection was successful > => Some failures were only treated as warnings, not errors No bug reports with details for those? > * debian/gbp.conf: Set debian-branch to 1.4.y > => Building ... > > * http: A response with Content-Length: 0 has no content > > => Downloading failed if server responded with Content-Length: 0, as > APT was waiting for content to read. No bug report with details? > diff -Nru apt-1.4.6/Dockerfile apt-1.4.7/Dockerfile > --- apt-1.4.6/Dockerfile 1970-01-01 01:00:00.000000000 +0100 > +++ apt-1.4.7/Dockerfile 2017-07-04 17:11:59.000000000 +0200 > @@ -0,0 +1,11 @@ > +FROM debian:stretch > +COPY . /tmp > +WORKDIR /tmp > +RUN sed -i s#://deb.debian.org#://cdn-fastly.deb.debian.org# /etc/apt/sources.list \ > + && apt-get update \ > + && adduser --home /home/travis travis --quiet --disabled-login --gecos "" --uid 1000 \ > + && env DEBIAN_FRONTEND=noninteractive apt-get install build-essential ccache ninja-build expect curl git -q -y \ > + && env DEBIAN_FRONTEND=noninteractive ./prepare-release travis-ci \ > + && dpkg-reconfigure ccache \ > + && rm -r /tmp/* \ > + && apt-get clean Not documented in changelog. Not sure this addition belongs to stable anyway. > diff -Nru apt-1.4.6/methods/basehttp.cc apt-1.4.7/methods/basehttp.cc > --- apt-1.4.6/methods/basehttp.cc 2017-06-01 10:50:26.000000000 +0200 > +++ apt-1.4.7/methods/basehttp.cc 2017-07-04 17:11:59.000000000 +0200 > @@ -146,6 +146,9 @@ > > if (stringcasecmp(Tag,"Content-Length:") == 0) > { > + auto ContentLength = strtoull(Val.c_str(), NULL, 10); > + if (ContentLength == 0) > + return true; > if (Encoding == Closes) > Encoding = Stream; > HaveContent = true; > @@ -154,7 +157,7 @@ > if (Result == 416 || (Result >= 300 && Result < 400)) > DownloadSizePtr = &JunkSize; > > - *DownloadSizePtr = strtoull(Val.c_str(), NULL, 10); > + *DownloadSizePtr = ContentLength; > if (*DownloadSizePtr >= std::numeric_limits<unsigned long long>::max()) > return _error->Errno("HeaderLine", _("The HTTP server sent an invalid Content-Length header")); > else if (*DownloadSizePtr == 0) > diff -Nru apt-1.4.6/methods/connect.cc apt-1.4.7/methods/connect.cc > --- apt-1.4.6/methods/connect.cc 2017-06-01 10:50:26.000000000 +0200 > +++ apt-1.4.7/methods/connect.cc 2017-07-04 17:11:59.000000000 +0200 > @@ -144,7 +144,9 @@ > return _error->Errno("connect",_("Could not connect to %s:%s (%s)."),Host.c_str(), > Service,Name); > } > - > + > + Owner->SetFailReason(""); > + > return true; > } > /*}}}*/ > @@ -312,12 +314,15 @@ > size_t stackSize = 0; > // try to connect in the priority order of the srv records > std::string initialHost{std::move(Host)}; > + auto const initialPort = Port; > while(SrvRecords.empty() == false) > { > _error->PushToStack(); > ++stackSize; > // PopFromSrvRecs will also remove the server > - Host = PopFromSrvRecs(SrvRecords).target; > + auto Srv = PopFromSrvRecs(SrvRecords); > + Host = Srv.target; > + Port = Srv.port; > auto const ret = ConnectToHostname(Host, Port, Service, DefPort, Fd, TimeOut, Owner); > if (ret) > { > @@ -327,6 +332,7 @@ > } > } > Host = std::move(initialHost); > + Port = initialPort; > > // we have no (good) SrvRecords for this host, connect right away > _error->PushToStack(); > diff -Nru apt-1.4.6/test/integration/framework apt-1.4.7/test/integration/framework > --- apt-1.4.6/test/integration/framework 2017-06-01 10:50:26.000000000 +0200 > +++ apt-1.4.7/test/integration/framework 2017-07-04 17:11:59.000000000 +0200 > @@ -1428,12 +1428,12 @@ > local TMPFILE2="${TMPWORKINGDIRECTORY}/rootdir/tmp/checkdiff.2.tmp" > touch "$TMPFILE1" "$TMPFILE2" > if [ "$1" != '-' ]; then > - sed -e '/^profiling:/ d' < "$1" >"$TMPFILE1" > + sed -e '/^profiling:/ d' -e '/\.\.\.profiling:/{N;s#\.\.\.profiling:.*\n#...#g}' < "$1" >"$TMPFILE1" > else > TMPFILE1='-' > fi > if [ "$2" != '-' ]; then > - sed -e '/^profiling:/ d' < "$2" >"$TMPFILE2" > + sed -e '/^profiling:/ d' -e '/\.\.\.profiling:/{N;s#\.\.\.profiling:.*\n#...#g}' < "$2" >"$TMPFILE2" > else > TMPFILE2='-' > fi Not documented. > diff -Nru apt-1.4.6/test/integration/test-bug-738785-switch-protocol apt-1.4.7/test/integration/test-bug-738785-switch-protocol > --- apt-1.4.6/test/integration/test-bug-738785-switch-protocol 2017-06-01 10:50:26.000000000 +0200 > +++ apt-1.4.7/test/integration/test-bug-738785-switch-protocol 2017-07-04 17:11:59.000000000 +0200 > @@ -47,4 +47,4 @@ > # check that downgrades from https to http are not allowed > webserverconfig 'aptwebserver::support::http' 'true' > sed -i -e "s#:${APTHTTPPORT}/redirectme#:${APTHTTPSPORT}/downgrademe#" -e 's# http:# https:#' rootdir/etc/apt/sources.list.d/* > -testfailure aptget update --allow-insecure-repositories -o Acquire::https::Timeout=1 > +testfailure aptget update --allow-insecure-repositories -o Acquire::https::Timeout=1 -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::https=1 > diff -Nru apt-1.4.6/.travis.yml apt-1.4.7/.travis.yml > --- apt-1.4.6/.travis.yml 2017-06-01 10:50:26.000000000 +0200 > +++ apt-1.4.7/.travis.yml 2017-07-04 17:11:59.000000000 +0200 > @@ -1,33 +1,20 @@ > language: cpp > cache: ccache > sudo: required > -dist: trusty > +services: > + - docker > env: > - - TEST_SUITE=user CMAKE_FLAGS= > - - TEST_SUITE=root CMAKE_FLAGS=-DWITH_DOC=OFF > -before_install: > - - sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ wily main universe' -y > - - sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu/ xenial main' -y > - - | > - sudo sh -c '/bin/echo -e "Package: *\nPin: release n=wily\nPin-Priority: 1" > /etc/apt/preferences.d/wily' > - sudo sh -c '/bin/echo -e "Package: *\nPin: release n=xenial\nPin-Priority: 1" > /etc/apt/preferences.d/xenial' > - - sudo apt-get update -qq > + - USER=travis CMAKE_FLAGS= > + - USER=root CMAKE_FLAGS=-DWITH_DOC=OFF > install: > - - sudo apt-get -qq -y -t wily install gettext liblz4-dev python3-apt > - - sudo apt-get -qq -y -t xenial install cmake ninja-build > - - sudo ./prepare-release travis-ci > + - sed -i -e "s#1000#$(id -u)#g" Dockerfile > + - docker build --tag=apt-ci . > before_script: > - - ( mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Coverage -G Ninja $CMAKE_FLAGS .. ) > - - ninja -C build > + - docker run --rm -w $PWD -v $HOME/.ccache:$HOME/.ccache -v $PWD:$PWD --user=travis apt-ci sh -e -c "mkdir build && cd build && env PATH=/usr/lib/ccache:\$PATH cmake -DCMAKE_BUILD_TYPE=Coverage -G Ninja $CMAKE_FLAGS .." > + - docker run --rm -w $PWD -v $HOME/.ccache:$HOME/.ccache -v $PWD:$PWD --user=travis apt-ci ninja -C build > script: > - - CTEST_OUTPUT_ON_FAILURE=1 ninja -C build test > - - DESTDIR=$PWD/rootdir chronic ninja -C build install > - - test "$TEST_SUITE" != "user" || ./test/integration/run-tests -qq > - - sudo adduser --force-badname --system --home /nonexistent --no-create-home --quiet _apt || true > - - sudo chmod go+x /home/travis > - - sudo chmod -R go+rwX /home/travis/build > - - test "$TEST_SUITE" != "root" || sudo ./test/integration/run-tests -qq > + - docker run --rm -w $PWD -v $PWD:$PWD --user=travis apt-ci env CTEST_OUTPUT_ON_FAILURE=1 ninja -C build test > + - docker run --rm -w $PWD -v $PWD:$PWD --user=travis apt-ci env DESTDIR=$PWD/rootdir chronic ninja -C build install > + - docker run --rm -w $PWD -v $PWD:$PWD --user=$USER --tmpfs /tmp:suid,exec apt-ci unbuffer ./test/integration/run-tests -qq -j 4 > after_script: > - - cd build > - - gcov -r $(find -name '*.gcno') > - - bash <(curl -s https://codecov.io/bash) > + - docker run --rm -w $PWD/build -v $PWD:$PWD --user=$USER `bash <(curl -s https://codecov.io/env)` apt-ci bash -c 'bash <(curl -s https://codecov.io/bash)' Same comments as for Dockerfile. KiBi.
Attachment:
signature.asc
Description: Digital signature