stage0.sh: Install some needed dependencies
[selfix.git] / stage0.sh
1 #!/usr/bin/env bash
2 set -euo pipefail
3
4 # Copyright (C) 2017 Jason Self <j@jxself.org>
5 #
6 # You can redistribute and/or modify this file under the terms of the
7 # GNU Affero General Public License as published by the Free Software
8 # Foundation, either version 3 of the License, or (at your option)
9 # any later version.
10 #
11 # This file is distributed in the hope that it will be useful, but
12 # WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 # Affero General Public License for more details.
15 #
16 # You should have received a copy of the GNU Affero General Public
17 # License along with this file. If not, see
18 # <http://www.gnu.org/licenses/>.
19
20 check_if_root () {
21     if [[ $EUID -ne 0 ]]; then
22         echo "This script must be run as root." 1>&2
23         exit 1
24     fi
25 }
26
27 install_dependencies () {
28     # TODO: Implement support for other package managers
29     packages=( binutils bison g++ gawk gcc lzip m4 make patch texinfo xz-utils )
30     for i in "${packages[@]}"
31     do
32         if ! dpkg -s "$i" &> /dev/null ; then
33             apt -y install $i
34         fi
35     done
36 }
37
38 make_bin_sh_point_to_bash () {
39     # This checks if /bin/sh is a symlink so as to avoid replacing
40     # it in cases where it's not a symlink (i.e., an executable.)
41     if [ -h /bin/sh ]; then
42         ln -sf bash /bin/sh
43     else
44         echo "/bin/sh is not a symlink"
45         exit 1
46     fi
47 }
48
49 check_if_root
50 install_dependencies
51 make_bin_sh_point_to_bash