Merge branch 'gs/commit-graph-path-filter'
[git] / ci / install-dependencies.sh
1 #!/usr/bin/env bash
2 #
3 # Install dependencies required to build and test Git on Linux and macOS
4 #
5
6 . ${0%/*}/lib.sh
7
8 P4WHENCE=http://filehost.perforce.com/perforce/r$LINUX_P4_VERSION
9 LFSWHENCE=https://github.com/github/git-lfs/releases/download/v$LINUX_GIT_LFS_VERSION
10 UBUNTU_COMMON_PKGS="make libssl-dev libcurl4-openssl-dev libexpat-dev
11  tcl tk gettext zlib1g-dev perl-modules liberror-perl libauthen-sasl-perl
12  libemail-valid-perl libio-socket-ssl-perl libnet-smtp-ssl-perl"
13
14 case "$jobname" in
15 linux-clang|linux-gcc)
16         sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
17         sudo apt-get -q update
18         sudo apt-get -q -y install language-pack-is libsvn-perl apache2 \
19                 $UBUNTU_COMMON_PKGS
20         case "$jobname" in
21         linux-gcc)
22                 sudo apt-get -q -y install gcc-8
23                 ;;
24         esac
25
26         mkdir --parents "$P4_PATH"
27         pushd "$P4_PATH"
28                 wget --quiet "$P4WHENCE/bin.linux26x86_64/p4d"
29                 wget --quiet "$P4WHENCE/bin.linux26x86_64/p4"
30                 chmod u+x p4d
31                 chmod u+x p4
32         popd
33         mkdir --parents "$GIT_LFS_PATH"
34         pushd "$GIT_LFS_PATH"
35                 wget --quiet "$LFSWHENCE/git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz"
36                 tar --extract --gunzip --file "git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz"
37                 cp git-lfs-$LINUX_GIT_LFS_VERSION/git-lfs .
38         popd
39         ;;
40 osx-clang|osx-gcc)
41         export HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1
42         # Uncomment this if you want to run perf tests:
43         # brew install gnu-time
44         test -z "$BREW_INSTALL_PACKAGES" ||
45         brew install $BREW_INSTALL_PACKAGES
46         brew link --force gettext
47         brew cask install --no-quarantine perforce || {
48                 # Update the definitions and try again
49                 cask_repo="$(brew --repository)"/Library/Taps/homebrew/homebrew-cask &&
50                 git -C "$cask_repo" pull --no-stat &&
51                 brew cask install --no-quarantine perforce
52         } ||
53         brew install caskroom/cask/perforce
54         case "$jobname" in
55         osx-gcc)
56                 brew install gcc@9
57                 # Just in case the image is updated to contain gcc@9
58                 # pre-installed but not linked.
59                 brew link gcc@9
60                 ;;
61         esac
62         ;;
63 StaticAnalysis)
64         sudo apt-get -q update
65         sudo apt-get -q -y install coccinelle libcurl4-openssl-dev libssl-dev \
66                 libexpat-dev gettext make
67         ;;
68 Documentation)
69         sudo apt-get -q update
70         sudo apt-get -q -y install asciidoc xmlto docbook-xsl-ns make
71
72         test -n "$ALREADY_HAVE_ASCIIDOCTOR" ||
73         sudo gem install --version 1.5.8 asciidoctor
74         ;;
75 linux-gcc-4.8|GETTEXT_POISON)
76         sudo apt-get -q update
77         sudo apt-get -q -y install $UBUNTU_COMMON_PKGS
78         ;;
79 esac
80
81 if type p4d >/dev/null && type p4 >/dev/null
82 then
83         echo "$(tput setaf 6)Perforce Server Version$(tput sgr0)"
84         p4d -V | grep Rev.
85         echo "$(tput setaf 6)Perforce Client Version$(tput sgr0)"
86         p4 -V | grep Rev.
87 fi
88 if type git-lfs >/dev/null
89 then
90         echo "$(tput setaf 6)Git-LFS Version$(tput sgr0)"
91         git-lfs version
92 fi