2017-09-10 22:44:28 +08:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
#
|
|
|
|
# Install dependencies required to build and test Git on Linux and macOS
|
|
|
|
#
|
|
|
|
|
2019-01-28 07:26:50 +08:00
|
|
|
. ${0%/*}/lib.sh
|
2017-09-10 22:44:28 +08:00
|
|
|
|
2022-11-25 17:59:53 +08:00
|
|
|
P4WHENCE=https://cdist2.perforce.com/perforce/r21.2
|
2017-09-11 09:18:29 +08:00
|
|
|
LFSWHENCE=https://github.com/github/git-lfs/releases/download/v$LINUX_GIT_LFS_VERSION
|
2020-04-11 01:18:07 +08:00
|
|
|
UBUNTU_COMMON_PKGS="make libssl-dev libcurl4-openssl-dev libexpat-dev
|
|
|
|
tcl tk gettext zlib1g-dev perl-modules liberror-perl libauthen-sasl-perl
|
|
|
|
libemail-valid-perl libio-socket-ssl-perl libnet-smtp-ssl-perl"
|
2017-09-11 09:18:29 +08:00
|
|
|
|
2021-11-24 00:29:11 +08:00
|
|
|
case "$runs_on_pool" in
|
2022-11-25 17:59:51 +08:00
|
|
|
ubuntu-*)
|
2018-11-01 19:47:14 +08:00
|
|
|
sudo apt-get -q update
|
2020-04-11 01:18:07 +08:00
|
|
|
sudo apt-get -q -y install language-pack-is libsvn-perl apache2 \
|
2022-11-25 17:59:54 +08:00
|
|
|
$UBUNTU_COMMON_PKGS $CC_PACKAGE $PYTHON_PACKAGE
|
travis-ci: fix running P4 and Git LFS tests in Linux build jobs
Linux build jobs on Travis CI skip the P4 and Git LFS tests since
commit 657343a60 (travis-ci: move Travis CI code into dedicated
scripts, 2017-09-10), claiming there are no P4 or Git LFS installed.
The reason is that P4 and Git LFS binaries are not installed to a
directory in the default $PATH, but their directories are prepended to
$PATH. This worked just fine before said commit, because $PATH was
set in a scriptlet embedded in our '.travis.yml', thus its new value
was visible during the rest of the build job. However, after these
embedded scriptlets were moved into dedicated scripts executed in
separate shell processes, any variable set in one of those scripts is
only visible in that single script but not in any of the others. In
this case, 'ci/install-dependencies.sh' downloads P4 and Git LFS and
modifies $PATH, but to no effect, because 'ci/run-tests.sh' only sees
Travis CI's default $PATH.
Move adjusting $PATH to 'ci/lib-travisci.sh', which is sourced in all
other 'ci/' scripts, so all those scripts will see the updated $PATH
value.
Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2017-11-01 19:55:35 +08:00
|
|
|
mkdir --parents "$P4_PATH"
|
|
|
|
pushd "$P4_PATH"
|
2017-09-11 09:18:29 +08:00
|
|
|
wget --quiet "$P4WHENCE/bin.linux26x86_64/p4d"
|
|
|
|
wget --quiet "$P4WHENCE/bin.linux26x86_64/p4"
|
|
|
|
chmod u+x p4d
|
|
|
|
chmod u+x p4
|
|
|
|
popd
|
travis-ci: fix running P4 and Git LFS tests in Linux build jobs
Linux build jobs on Travis CI skip the P4 and Git LFS tests since
commit 657343a60 (travis-ci: move Travis CI code into dedicated
scripts, 2017-09-10), claiming there are no P4 or Git LFS installed.
The reason is that P4 and Git LFS binaries are not installed to a
directory in the default $PATH, but their directories are prepended to
$PATH. This worked just fine before said commit, because $PATH was
set in a scriptlet embedded in our '.travis.yml', thus its new value
was visible during the rest of the build job. However, after these
embedded scriptlets were moved into dedicated scripts executed in
separate shell processes, any variable set in one of those scripts is
only visible in that single script but not in any of the others. In
this case, 'ci/install-dependencies.sh' downloads P4 and Git LFS and
modifies $PATH, but to no effect, because 'ci/run-tests.sh' only sees
Travis CI's default $PATH.
Move adjusting $PATH to 'ci/lib-travisci.sh', which is sourced in all
other 'ci/' scripts, so all those scripts will see the updated $PATH
value.
Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2017-11-01 19:55:35 +08:00
|
|
|
mkdir --parents "$GIT_LFS_PATH"
|
|
|
|
pushd "$GIT_LFS_PATH"
|
2017-09-11 09:18:29 +08:00
|
|
|
wget --quiet "$LFSWHENCE/git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz"
|
|
|
|
tar --extract --gunzip --file "git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz"
|
|
|
|
cp git-lfs-$LINUX_GIT_LFS_VERSION/git-lfs .
|
|
|
|
popd
|
2017-09-10 22:44:28 +08:00
|
|
|
;;
|
2022-12-07 03:57:56 +08:00
|
|
|
macos-*)
|
2019-07-03 18:47:48 +08:00
|
|
|
export HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1
|
2017-09-11 09:18:29 +08:00
|
|
|
# Uncomment this if you want to run perf tests:
|
|
|
|
# brew install gnu-time
|
ci/lib.sh: encapsulate Travis-specific things
The upcoming patches will allow building git.git via Azure Pipelines
(i.e. Azure DevOps' Continuous Integration), where variable names and
URLs look a bit different than in Travis CI.
Also, the configurations of the available agents are different. For
example, Travis' and Azure Pipelines' macOS agents are set up
differently, so that on Travis, we have to install the git-lfs and
gettext Homebrew packages, and on Azure Pipelines we do not need to.
Likewise, Azure Pipelines' Ubuntu agents already have asciidoctor
installed.
Finally, on Azure Pipelines the natural way is not to base64-encode tar
files of the trash directories of failed tests, but to publish build
artifacts instead. Therefore, that code to log those base64-encoded tar
files is guarded to be Travis-specific.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-01-28 07:26:51 +08:00
|
|
|
test -z "$BREW_INSTALL_PACKAGES" ||
|
|
|
|
brew install $BREW_INSTALL_PACKAGES
|
2017-09-11 09:18:29 +08:00
|
|
|
brew link --force gettext
|
2022-05-13 06:39:38 +08:00
|
|
|
mkdir -p $HOME/bin
|
|
|
|
(
|
|
|
|
cd $HOME/bin
|
2022-11-25 17:59:53 +08:00
|
|
|
wget -q "$P4WHENCE/bin.macosx1015x86_64/helix-core-server.tgz" &&
|
2022-05-13 06:39:39 +08:00
|
|
|
tar -xf helix-core-server.tgz &&
|
|
|
|
sudo xattr -d com.apple.quarantine p4 p4d 2>/dev/null || true
|
2022-05-13 06:39:38 +08:00
|
|
|
)
|
|
|
|
PATH="$PATH:${HOME}/bin"
|
|
|
|
export PATH
|
2021-11-24 00:29:11 +08:00
|
|
|
|
|
|
|
if test -n "$CC_PACKAGE"
|
|
|
|
then
|
|
|
|
BREW_PACKAGE=${CC_PACKAGE/-/@}
|
|
|
|
brew install "$BREW_PACKAGE"
|
|
|
|
brew link "$BREW_PACKAGE"
|
|
|
|
fi
|
2017-09-10 22:44:28 +08:00
|
|
|
;;
|
2021-11-24 00:29:11 +08:00
|
|
|
esac
|
|
|
|
|
|
|
|
case "$jobname" in
|
2018-11-01 19:47:14 +08:00
|
|
|
StaticAnalysis)
|
|
|
|
sudo apt-get -q update
|
2019-10-01 19:16:26 +08:00
|
|
|
sudo apt-get -q -y install coccinelle libcurl4-openssl-dev libssl-dev \
|
2020-04-11 01:18:07 +08:00
|
|
|
libexpat-dev gettext make
|
2018-11-01 19:47:14 +08:00
|
|
|
;;
|
2021-07-27 02:22:27 +08:00
|
|
|
sparse)
|
|
|
|
sudo apt-get -q update -q
|
|
|
|
sudo apt-get -q -y install libssl-dev libcurl4-openssl-dev \
|
|
|
|
libexpat-dev gettext zlib1g-dev
|
|
|
|
;;
|
2018-11-01 19:47:14 +08:00
|
|
|
Documentation)
|
|
|
|
sudo apt-get -q update
|
2020-04-11 01:18:07 +08:00
|
|
|
sudo apt-get -q -y install asciidoc xmlto docbook-xsl-ns make
|
2019-03-29 20:35:18 +08:00
|
|
|
|
|
|
|
test -n "$ALREADY_HAVE_ASCIIDOCTOR" ||
|
2020-04-11 01:18:08 +08:00
|
|
|
sudo gem install --version 1.5.8 asciidoctor
|
2018-11-01 19:47:14 +08:00
|
|
|
;;
|
2021-11-24 00:29:08 +08:00
|
|
|
linux-gcc-default)
|
2020-04-11 01:18:07 +08:00
|
|
|
sudo apt-get -q update
|
|
|
|
sudo apt-get -q -y install $UBUNTU_COMMON_PKGS
|
|
|
|
;;
|
2017-09-10 22:44:28 +08:00
|
|
|
esac
|
|
|
|
|
2022-05-13 06:39:37 +08:00
|
|
|
if type p4d >/dev/null 2>&1 && type p4 >/dev/null 2>&1
|
2018-11-01 19:47:14 +08:00
|
|
|
then
|
|
|
|
echo "$(tput setaf 6)Perforce Server Version$(tput sgr0)"
|
2022-11-25 17:59:52 +08:00
|
|
|
p4d -V
|
2018-11-01 19:47:14 +08:00
|
|
|
echo "$(tput setaf 6)Perforce Client Version$(tput sgr0)"
|
2022-11-25 17:59:52 +08:00
|
|
|
p4 -V
|
2022-05-13 06:39:37 +08:00
|
|
|
else
|
|
|
|
echo >&2 "WARNING: perforce wasn't installed, see above for clues why"
|
2018-11-01 19:47:14 +08:00
|
|
|
fi
|
2022-05-13 06:39:37 +08:00
|
|
|
if type git-lfs >/dev/null 2>&1
|
2018-11-01 19:47:14 +08:00
|
|
|
then
|
|
|
|
echo "$(tput setaf 6)Git-LFS Version$(tput sgr0)"
|
|
|
|
git-lfs version
|
2022-05-13 06:39:37 +08:00
|
|
|
else
|
|
|
|
echo >&2 "WARNING: git-lfs wasn't installed, see above for clues why"
|
2018-11-01 19:47:14 +08:00
|
|
|
fi
|