The distro variable should be available to subprocesses
[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 export distro=selfix
21
22 check_if_root () {
23     if [[ $EUID -ne 0 ]]; then
24         echo "This script must be run as root." 1>&2
25         exit 1
26     fi
27 }
28
29 install_dependencies () {
30     # TODO: Implement support for other package managers
31     packages=( binutils bison g++ gawk gcc lzip m4 make patch texinfo xz-utils )
32     for i in "${packages[@]}"
33     do
34         if ! dpkg -s "$i" &> /dev/null ; then
35             apt -y install $i
36         fi
37     done
38 }
39
40 make_bin_sh_point_to_bash () {
41     # This checks if /bin/sh is a symlink so as to avoid replacing
42     # it in cases where it's not a symlink (i.e., an executable.)
43     if [ -h /bin/sh ]; then
44         ln -sf bash /bin/sh
45     else
46         echo "/bin/sh is not a symlink"
47         exit 1
48     fi
49 }
50
51 check_if_root
52 install_dependencies
53 make_bin_sh_point_to_bash