Patrick Steinhardt | 40c60f4 | 2024-04-12 06:44:17 +0200 | [diff] [blame] | 1 | #!/bin/sh |
Lars Schneider | 657343a | 2017-09-10 16:44:28 +0200 | [diff] [blame] | 2 | # |
| 3 | # Install dependencies required to build and test Git on Linux and macOS |
| 4 | # |
| 5 | |
Johannes Schindelin | c2160f2 | 2019-01-27 15:26:50 -0800 | [diff] [blame] | 6 | . ${0%/*}/lib.sh |
Lars Schneider | 657343a | 2017-09-10 16:44:28 +0200 | [diff] [blame] | 7 | |
Patrick Steinhardt | 9cdeb34 | 2024-04-12 06:44:32 +0200 | [diff] [blame] | 8 | begin_group "Install dependencies" |
| 9 | |
Jiang Xin | 31a1952 | 2022-11-25 17:59:53 +0800 | [diff] [blame] | 10 | P4WHENCE=https://cdist2.perforce.com/perforce/r21.2 |
Junio C Hamano | f67242c | 2017-09-11 10:18:29 +0900 | [diff] [blame] | 11 | LFSWHENCE=https://github.com/github/git-lfs/releases/download/v$LINUX_GIT_LFS_VERSION |
Patrick Steinhardt | 04ba2c7 | 2024-04-12 06:44:43 +0200 | [diff] [blame] | 12 | JGITWHENCE=https://repo.eclipse.org/content/groups/releases//org/eclipse/jgit/org.eclipse.jgit.pgm/6.8.0.202311291450-r/org.eclipse.jgit.pgm-6.8.0.202311291450-r.sh |
Lars Schneider | 657343a | 2017-09-10 16:44:28 +0200 | [diff] [blame] | 13 | |
Patrick Steinhardt | 11d3f1a | 2024-04-12 06:44:07 +0200 | [diff] [blame] | 14 | # Make sudo a no-op and execute the command directly when running as root. |
| 15 | # While using sudo would be fine on most platforms when we are root already, |
| 16 | # some platforms like e.g. Alpine Linux do not have sudo available by default |
| 17 | # and would thus break. |
| 18 | if test "$(id -u)" -eq 0 |
| 19 | then |
| 20 | sudo () { |
| 21 | "$@" |
| 22 | } |
| 23 | fi |
| 24 | |
Patrick Steinhardt | 2d65e5b | 2024-04-12 06:43:57 +0200 | [diff] [blame] | 25 | case "$distro" in |
Patrick Steinhardt | 9cdeb34 | 2024-04-12 06:44:32 +0200 | [diff] [blame] | 26 | alpine-*) |
| 27 | apk add --update shadow sudo build-base curl-dev openssl-dev expat-dev gettext \ |
| 28 | pcre2-dev python3 musl-libintl perl-utils ncurses \ |
| 29 | apache2 apache2-http2 apache2-proxy apache2-ssl apache2-webdav apr-util-dbd_sqlite3 \ |
Patrick Steinhardt | 9fd3693 | 2024-05-27 13:45:47 +0200 | [diff] [blame] | 30 | bash cvs gnupg perl-cgi perl-dbd-sqlite perl-io-tty >/dev/null |
Patrick Steinhardt | 9cdeb34 | 2024-04-12 06:44:32 +0200 | [diff] [blame] | 31 | ;; |
| 32 | fedora-*) |
| 33 | dnf -yq update >/dev/null && |
| 34 | dnf -yq install make gcc findutils diffutils perl python3 gettext zlib-devel expat-devel openssl-devel curl-devel pcre2-devel >/dev/null |
| 35 | ;; |
Jiang Xin | 0178420 | 2022-11-25 17:59:51 +0800 | [diff] [blame] | 36 | ubuntu-*) |
Patrick Steinhardt | 9cdeb34 | 2024-04-12 06:44:32 +0200 | [diff] [blame] | 37 | # Required so that apt doesn't wait for user input on certain packages. |
| 38 | export DEBIAN_FRONTEND=noninteractive |
| 39 | |
SZEDER Gábor | 0f0c511 | 2018-11-01 12:47:14 +0100 | [diff] [blame] | 40 | sudo apt-get -q update |
Patrick Steinhardt | 21bcb4a | 2024-04-12 06:44:12 +0200 | [diff] [blame] | 41 | sudo apt-get -q -y install \ |
Patrick Steinhardt | 9cdeb34 | 2024-04-12 06:44:32 +0200 | [diff] [blame] | 42 | language-pack-is libsvn-perl apache2 cvs cvsps git gnupg subversion \ |
Patrick Steinhardt | 04ba2c7 | 2024-04-12 06:44:43 +0200 | [diff] [blame] | 43 | make libssl-dev libcurl4-openssl-dev libexpat-dev wget sudo default-jre \ |
Patrick Steinhardt | 21bcb4a | 2024-04-12 06:44:12 +0200 | [diff] [blame] | 44 | tcl tk gettext zlib1g-dev perl-modules liberror-perl libauthen-sasl-perl \ |
Patrick Steinhardt | 9fd3693 | 2024-05-27 13:45:47 +0200 | [diff] [blame] | 45 | libemail-valid-perl libio-pty-perl libio-socket-ssl-perl libnet-smtp-ssl-perl libdbd-sqlite3-perl libcgi-pm-perl \ |
Patrick Steinhardt | 9cdeb34 | 2024-04-12 06:44:32 +0200 | [diff] [blame] | 46 | ${CC_PACKAGE:-${CC:-gcc}} $PYTHON_PACKAGE |
Patrick Steinhardt | 21bcb4a | 2024-04-12 06:44:12 +0200 | [diff] [blame] | 47 | |
Patrick Steinhardt | d1ef3d3 | 2024-04-12 06:44:22 +0200 | [diff] [blame] | 48 | mkdir --parents "$CUSTOM_PATH" |
| 49 | wget --quiet --directory-prefix="$CUSTOM_PATH" \ |
Patrick Steinhardt | 40c60f4 | 2024-04-12 06:44:17 +0200 | [diff] [blame] | 50 | "$P4WHENCE/bin.linux26x86_64/p4d" "$P4WHENCE/bin.linux26x86_64/p4" |
Patrick Steinhardt | ca44ef3 | 2024-04-12 06:44:37 +0200 | [diff] [blame] | 51 | chmod a+x "$CUSTOM_PATH/p4d" "$CUSTOM_PATH/p4" |
Patrick Steinhardt | 21bcb4a | 2024-04-12 06:44:12 +0200 | [diff] [blame] | 52 | |
Patrick Steinhardt | 40c60f4 | 2024-04-12 06:44:17 +0200 | [diff] [blame] | 53 | wget --quiet "$LFSWHENCE/git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz" |
| 54 | tar -xzf "git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz" \ |
Patrick Steinhardt | d1ef3d3 | 2024-04-12 06:44:22 +0200 | [diff] [blame] | 55 | -C "$CUSTOM_PATH" --strip-components=1 "git-lfs-$LINUX_GIT_LFS_VERSION/git-lfs" |
Patrick Steinhardt | 40c60f4 | 2024-04-12 06:44:17 +0200 | [diff] [blame] | 56 | rm "git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz" |
Patrick Steinhardt | 04ba2c7 | 2024-04-12 06:44:43 +0200 | [diff] [blame] | 57 | |
| 58 | wget --quiet "$JGITWHENCE" --output-document="$CUSTOM_PATH/jgit" |
| 59 | chmod a+x "$CUSTOM_PATH/jgit" |
Lars Schneider | 657343a | 2017-09-10 16:44:28 +0200 | [diff] [blame] | 60 | ;; |
Patrick Steinhardt | 9cdeb34 | 2024-04-12 06:44:32 +0200 | [diff] [blame] | 61 | ubuntu32-*) |
| 62 | sudo linux32 --32bit i386 sh -c ' |
| 63 | apt update >/dev/null && |
| 64 | apt install -y build-essential libcurl4-openssl-dev \ |
| 65 | libssl-dev libexpat-dev gettext python >/dev/null |
| 66 | ' |
| 67 | ;; |
Ævar Arnfjörð Bjarmason | d111922 | 2022-12-06 20:57:56 +0100 | [diff] [blame] | 68 | macos-*) |
SZEDER Gábor | af8ed04 | 2019-07-03 12:47:48 +0200 | [diff] [blame] | 69 | export HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 |
Junio C Hamano | f67242c | 2017-09-11 10:18:29 +0900 | [diff] [blame] | 70 | # Uncomment this if you want to run perf tests: |
| 71 | # brew install gnu-time |
Junio C Hamano | f67242c | 2017-09-11 10:18:29 +0900 | [diff] [blame] | 72 | brew link --force gettext |
Patrick Steinhardt | c4b84b1 | 2024-01-18 11:22:58 +0100 | [diff] [blame] | 73 | |
Patrick Steinhardt | d1ef3d3 | 2024-04-12 06:44:22 +0200 | [diff] [blame] | 74 | mkdir -p "$CUSTOM_PATH" |
Patrick Steinhardt | 40c60f4 | 2024-04-12 06:44:17 +0200 | [diff] [blame] | 75 | wget -q "$P4WHENCE/bin.macosx1015x86_64/helix-core-server.tgz" && |
Patrick Steinhardt | d1ef3d3 | 2024-04-12 06:44:22 +0200 | [diff] [blame] | 76 | tar -xf helix-core-server.tgz -C "$CUSTOM_PATH" p4 p4d && |
| 77 | sudo xattr -d com.apple.quarantine "$CUSTOM_PATH/p4" "$CUSTOM_PATH/p4d" 2>/dev/null || true |
Patrick Steinhardt | 40c60f4 | 2024-04-12 06:44:17 +0200 | [diff] [blame] | 78 | rm helix-core-server.tgz |
Ævar Arnfjörð Bjarmason | 707d2f2 | 2021-11-23 17:29:11 +0100 | [diff] [blame] | 79 | |
| 80 | if test -n "$CC_PACKAGE" |
| 81 | then |
| 82 | BREW_PACKAGE=${CC_PACKAGE/-/@} |
| 83 | brew install "$BREW_PACKAGE" |
| 84 | brew link "$BREW_PACKAGE" |
| 85 | fi |
Lars Schneider | 657343a | 2017-09-10 16:44:28 +0200 | [diff] [blame] | 86 | ;; |
Ævar Arnfjörð Bjarmason | 707d2f2 | 2021-11-23 17:29:11 +0100 | [diff] [blame] | 87 | esac |
| 88 | |
| 89 | case "$jobname" in |
SZEDER Gábor | 0f0c511 | 2018-11-01 12:47:14 +0100 | [diff] [blame] | 90 | StaticAnalysis) |
| 91 | sudo apt-get -q update |
Johannes Schindelin | 411e4f4 | 2019-10-01 04:16:26 -0700 | [diff] [blame] | 92 | sudo apt-get -q -y install coccinelle libcurl4-openssl-dev libssl-dev \ |
Đoàn Trần Công Danh | 61432dd | 2020-04-11 00:18:07 +0700 | [diff] [blame] | 93 | libexpat-dev gettext make |
SZEDER Gábor | 0f0c511 | 2018-11-01 12:47:14 +0100 | [diff] [blame] | 94 | ;; |
Jeff King | 27f45cc | 2021-07-26 14:22:27 -0400 | [diff] [blame] | 95 | sparse) |
| 96 | sudo apt-get -q update -q |
| 97 | sudo apt-get -q -y install libssl-dev libcurl4-openssl-dev \ |
| 98 | libexpat-dev gettext zlib1g-dev |
| 99 | ;; |
SZEDER Gábor | 0f0c511 | 2018-11-01 12:47:14 +0100 | [diff] [blame] | 100 | Documentation) |
| 101 | sudo apt-get -q update |
Đoàn Trần Công Danh | 61432dd | 2020-04-11 00:18:07 +0700 | [diff] [blame] | 102 | sudo apt-get -q -y install asciidoc xmlto docbook-xsl-ns make |
SZEDER Gábor | f34a1bd | 2019-03-29 13:35:18 +0100 | [diff] [blame] | 103 | |
| 104 | test -n "$ALREADY_HAVE_ASCIIDOCTOR" || |
Johannes Schindelin | 4fef632 | 2020-04-11 00:18:08 +0700 | [diff] [blame] | 105 | sudo gem install --version 1.5.8 asciidoctor |
SZEDER Gábor | 0f0c511 | 2018-11-01 12:47:14 +0100 | [diff] [blame] | 106 | ;; |
Lars Schneider | 657343a | 2017-09-10 16:44:28 +0200 | [diff] [blame] | 107 | esac |
| 108 | |
Carlo Marcelo Arenas Belón | cde6b9b | 2022-05-12 15:39:37 -0700 | [diff] [blame] | 109 | if type p4d >/dev/null 2>&1 && type p4 >/dev/null 2>&1 |
SZEDER Gábor | 0f0c511 | 2018-11-01 12:47:14 +0100 | [diff] [blame] | 110 | then |
| 111 | echo "$(tput setaf 6)Perforce Server Version$(tput sgr0)" |
Jiang Xin | 4137c84 | 2022-11-25 17:59:52 +0800 | [diff] [blame] | 112 | p4d -V |
SZEDER Gábor | 0f0c511 | 2018-11-01 12:47:14 +0100 | [diff] [blame] | 113 | echo "$(tput setaf 6)Perforce Client Version$(tput sgr0)" |
Jiang Xin | 4137c84 | 2022-11-25 17:59:52 +0800 | [diff] [blame] | 114 | p4 -V |
Carlo Marcelo Arenas Belón | cde6b9b | 2022-05-12 15:39:37 -0700 | [diff] [blame] | 115 | else |
| 116 | echo >&2 "WARNING: perforce wasn't installed, see above for clues why" |
SZEDER Gábor | 0f0c511 | 2018-11-01 12:47:14 +0100 | [diff] [blame] | 117 | fi |
Patrick Steinhardt | 04ba2c7 | 2024-04-12 06:44:43 +0200 | [diff] [blame] | 118 | |
Carlo Marcelo Arenas Belón | cde6b9b | 2022-05-12 15:39:37 -0700 | [diff] [blame] | 119 | if type git-lfs >/dev/null 2>&1 |
SZEDER Gábor | 0f0c511 | 2018-11-01 12:47:14 +0100 | [diff] [blame] | 120 | then |
| 121 | echo "$(tput setaf 6)Git-LFS Version$(tput sgr0)" |
| 122 | git-lfs version |
Carlo Marcelo Arenas Belón | cde6b9b | 2022-05-12 15:39:37 -0700 | [diff] [blame] | 123 | else |
| 124 | echo >&2 "WARNING: git-lfs wasn't installed, see above for clues why" |
SZEDER Gábor | 0f0c511 | 2018-11-01 12:47:14 +0100 | [diff] [blame] | 125 | fi |
Patrick Steinhardt | 9cdeb34 | 2024-04-12 06:44:32 +0200 | [diff] [blame] | 126 | |
Patrick Steinhardt | 04ba2c7 | 2024-04-12 06:44:43 +0200 | [diff] [blame] | 127 | if type jgit >/dev/null 2>&1 |
| 128 | then |
| 129 | echo "$(tput setaf 6)JGit Version$(tput sgr0)" |
| 130 | jgit version |
| 131 | else |
| 132 | echo >&2 "WARNING: JGit wasn't installed, see above for clues why" |
| 133 | fi |
| 134 | |
Patrick Steinhardt | 9cdeb34 | 2024-04-12 06:44:32 +0200 | [diff] [blame] | 135 | end_group "Install dependencies" |