Subject: Re: [PATCH] ci: install 'libsvn-perl' instead of 'git-svn'

From: SZEDER Gábor <[email-masked]>
Date: Thu, 2 May 2019 01:18:54 +0200

On Tue, Apr 30, 2019 at 06:16:48PM -0400, Johannes Schindelin wrote:
> Hi,
> 
> On Tue, 30 Apr 2019, SZEDER Gábor wrote:
> 
> > Since e7e9f5e7a1 (travis-ci: enable Git SVN tests t91xx on Linux,
> > 2016-05-19) some of our Travis CI build jobs install the 'git-svn'
> > package, because it was a convenient way to install its dependencies,
> > which are necessary to run our 'git-svn' tests (we don't actually need
> > the 'git-svn' package itself).  However, from those dependencies,
> > namely the 'libsvn-perl', 'libyaml-perl', and 'libterm-readkey-perl'
> > packages, only 'libsvn-perl' is necessary to run those tests, the
> > others arent, not even to fulfill some prereqs.
> >
> > So update 'ci/install-dependencies.sh' to install only 'libsvn-perl'
> > instead of 'git-svn' and its additional dependencies.
> >
> > Note that this change has more important implications than merely not
> > installing three unnecessary packages, as it keeps our builds working
> > with Travis CI's Xenial images.  In our '.travis.yml' we never
> > explicitly specified which Linux image we want to use to run our Linux
> > build jobs, and so far they have been run on the default Ubuntu 14.04
> > Trusty image.  However, 14.04 just reached its EOL, and Travis CI has
> > already began the transition to use 16.04 Xenial as the default Linux
> > build environment [1].  Alas, our Linux Clang and GCC build jobs can't
> > simply 'apt-get install git-svn' in the current Xenial images [2],
> > like they did in the Trusty images, and, consequently, fail.
> > Installing only 'libsvn-perl' avoids this issue, while the 'git svn'
> > tests are still run as they should.
> >
> > [1] https://blog.travis-ci.com/2019-04-15-xenial-default-build-environment
> >
> > [2] 'apt-get install git-svn' in the Xenial image fails with:
> >
> >       The following packages have unmet dependencies:
> >        git-svn : Depends: git (< 1:2.7.4-.)
> >       E: Unable to correct problems, you have held broken packages.
> >
> >     The reason is that both the Trusty and Xenial images contain the
> >     'git' package installed from 'ppa:git-core/ppa', so it's
> >     considerably newer than the 'git' package in the corresponding
> >     standard Ubuntu package repositories.  The difference is that the
> >     Trusty image still contains these third-party apt repositories, so
> >     the 'git-svn' package was installed from the same PPA, and its
> >     version matched the version of the already installed 'git'
> >     package.  In the Xenial image, however, these third-party
> >     apt-repositories are removed (to reduce the risk of unrelated
> >     interference and faster 'apt-get update') [3], and the version of
> >     the 'git-svn' package coming from the standard Ubuntu package
> >     repositories doesn't match the much more recent version of the
> >     'git' package installed from the PPA, resulting in this dependecy
> >     error.
> >
> >     Adding back the 'ppa:git-core/ppa' package repository would solve
> >     this dependency issue as well, but since the troublesome package
> >     happens to be unnecessary, not installing it in the first place is
> >     better.
> >
> > [3] https://docs.travis-ci.com/user/reference/xenial/#third-party-apt-repositories-removed
> >
> > Signed-off-by: SZEDER Gábor <[email-masked]>
> > ---
> >  ci/install-dependencies.sh | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
> > index 52a44c690a..7f6acdd803 100755
> > --- a/ci/install-dependencies.sh
> > +++ b/ci/install-dependencies.sh
> > @@ -12,7 +12,7 @@ case "$jobname" in
> >  linux-clang|linux-gcc)
> >  	sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
> >  	sudo apt-get -q update
> > -	sudo apt-get -q -y install language-pack-is git-svn apache2
> > +	sudo apt-get -q -y install language-pack-is libsvn-perl apache2
> 
> Makes sense.
> 
> I assume you verified that this works also with our Azure Pipeline?

No, I didn't; only on Travis CI's 14.04 and 16.04 images and on a
local 16.04 install.