Rename stage0.sh to prep.sh; updates to documentation to reflect this and explain... master
authorJason Self <j@jxself.org>
Sat, 19 Aug 2017 23:34:22 +0000 (16:34 -0700)
committerJason Self <j@jxself.org>
Sat, 19 Aug 2017 23:34:22 +0000 (16:34 -0700)
bootstrap.md
prep.sh [new file with mode: 0755]
stage0.sh [deleted file]

index 2841c7e72dabc58f1b0b4570a538a345e80a9feb..56871181667a85b03afe8076f489f047dd65a040 100644 (file)
@@ -49,7 +49,15 @@ Clone the git repository:
 
     git clone https://jxself.org/git/selfix.git
 
-Then run the included stage0.sh script.
+Then run the included prep.sh script. This script will install some
+needed prerequisites on the host system (like a compiler), download
+and verify the source code needed to boostrap SELFIX, and create an
+unprivileged user to use for building. Once this is completed switch
+to the unprivileged user:
+
+    sudo su - selfix
+
+Then run stage0.sh.
 
 Copyright & Licensing
 =====================
diff --git a/prep.sh b/prep.sh
new file mode 100755 (executable)
index 0000000..e50426b
--- /dev/null
+++ b/prep.sh
@@ -0,0 +1,86 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+# Copyright (C) 2017 Jason Self <j@jxself.org>
+#
+# You can redistribute and/or modify this file under the terms of the
+# GNU Affero General Public License as published by the Free Software
+# Foundation, either version 3 of the License, or (at your option)
+# any later version.
+#
+# This file is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public
+# License along with this file. If not, see
+# <http://www.gnu.org/licenses/>.
+
+export distro=selfix
+
+check_if_root () {
+    if [[ $EUID -ne 0 ]]; then
+        echo "This script must be run as root." 1>&2
+        exit 1
+    fi
+}
+
+get_source_code () {
+    wget -P /$distro/usr/src/release -i urls
+}
+
+install_dependencies () {
+    # TODO: Implement support for other package managers
+    packages=( binutils bison g++ gawk gcc lzip m4 make patch texinfo wget xz-utils )
+    for i in "${packages[@]}"
+    do
+        if ! dpkg -s "$i" &> /dev/null ; then
+            apt -y install $i
+        fi
+    done
+}
+
+make_bin_sh_point_to_bash () {
+    # This checks if /bin/sh is a symlink so as to avoid replacing
+    # it in cases where it's not a symlink (i.e., an executable.)
+    if [ -h /bin/sh ]; then
+        ln -sf bash /bin/sh
+    else
+        echo "/bin/sh is not a symlink"
+        exit 1
+    fi
+}
+
+prep_host () {
+    if [ ! -d /$distro/toolchain ]; then
+        mkdir -p /$distro/toolchain
+    fi
+    ln -sf /$distro/toolchain /
+    groupadd $distro
+    useradd -s /bin/bash -g $distro -m -k /dev/null $distro
+    chown $distro /$distro/toolchain
+    if [ ! -d /$distro/usr/src/release ]; then
+        mkdir -p /$distro/usr/src/release;
+        chmod a+wt /$distro/usr/src/release
+    fi
+    chown $distro /$distro/usr/src/release
+cat > /home/$distro/.bash_profile << "EOF"
+exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
+EOF
+cat > /home/$distro/.bashrc << "EOF"
+set +h
+umask 022
+distro=selfix
+LC_ALL=POSIX
+SELFIX_TGT=$(uname -m)-selfix-linux-gnu
+PATH=/toolchain/bin:/bin:/usr/bin
+export distro LC_ALL SELFIX_TGT PATH
+EOF
+}
+
+check_if_root
+install_dependencies
+make_bin_sh_point_to_bash
+prep_host
+get_source_code
\ No newline at end of file
diff --git a/stage0.sh b/stage0.sh
deleted file mode 100755 (executable)
index e50426b..0000000
--- a/stage0.sh
+++ /dev/null
@@ -1,86 +0,0 @@
-#!/usr/bin/env bash
-set -euo pipefail
-
-# Copyright (C) 2017 Jason Self <j@jxself.org>
-#
-# You can redistribute and/or modify this file under the terms of the
-# GNU Affero General Public License as published by the Free Software
-# Foundation, either version 3 of the License, or (at your option)
-# any later version.
-#
-# This file is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public
-# License along with this file. If not, see
-# <http://www.gnu.org/licenses/>.
-
-export distro=selfix
-
-check_if_root () {
-    if [[ $EUID -ne 0 ]]; then
-        echo "This script must be run as root." 1>&2
-        exit 1
-    fi
-}
-
-get_source_code () {
-    wget -P /$distro/usr/src/release -i urls
-}
-
-install_dependencies () {
-    # TODO: Implement support for other package managers
-    packages=( binutils bison g++ gawk gcc lzip m4 make patch texinfo wget xz-utils )
-    for i in "${packages[@]}"
-    do
-        if ! dpkg -s "$i" &> /dev/null ; then
-            apt -y install $i
-        fi
-    done
-}
-
-make_bin_sh_point_to_bash () {
-    # This checks if /bin/sh is a symlink so as to avoid replacing
-    # it in cases where it's not a symlink (i.e., an executable.)
-    if [ -h /bin/sh ]; then
-        ln -sf bash /bin/sh
-    else
-        echo "/bin/sh is not a symlink"
-        exit 1
-    fi
-}
-
-prep_host () {
-    if [ ! -d /$distro/toolchain ]; then
-        mkdir -p /$distro/toolchain
-    fi
-    ln -sf /$distro/toolchain /
-    groupadd $distro
-    useradd -s /bin/bash -g $distro -m -k /dev/null $distro
-    chown $distro /$distro/toolchain
-    if [ ! -d /$distro/usr/src/release ]; then
-        mkdir -p /$distro/usr/src/release;
-        chmod a+wt /$distro/usr/src/release
-    fi
-    chown $distro /$distro/usr/src/release
-cat > /home/$distro/.bash_profile << "EOF"
-exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
-EOF
-cat > /home/$distro/.bashrc << "EOF"
-set +h
-umask 022
-distro=selfix
-LC_ALL=POSIX
-SELFIX_TGT=$(uname -m)-selfix-linux-gnu
-PATH=/toolchain/bin:/bin:/usr/bin
-export distro LC_ALL SELFIX_TGT PATH
-EOF
-}
-
-check_if_root
-install_dependencies
-make_bin_sh_point_to_bash
-prep_host
-get_source_code
\ No newline at end of file