mirror of
https://dev.iopsys.eu/feed/iopsys.git
synced 2026-03-10 11:17:16 +01:00
setup_host: only install things that is not already installed.
This commit is contained in:
parent
3c674b984c
commit
1967f8895e
1 changed files with 136 additions and 99 deletions
|
|
@ -1,138 +1,164 @@
|
|||
#!/bin/bash
|
||||
|
||||
function setup_host {
|
||||
function install_pkgs()
|
||||
{
|
||||
local packages_misc="
|
||||
bison
|
||||
build-essential
|
||||
execstack
|
||||
flex
|
||||
g++
|
||||
g++-multilib
|
||||
gawk
|
||||
gettext
|
||||
git automake
|
||||
gtk-doc-tools
|
||||
liblzo2-dev
|
||||
libncurses5-dev
|
||||
ncurses-term
|
||||
svn-buildpackage
|
||||
uuid-dev
|
||||
zlib1g-dev
|
||||
"
|
||||
local packages_perl="libconvert-binary-c-perl libdigest-crc-perl"
|
||||
local packages_npm="npm nodejs yui-compressor"
|
||||
|
||||
if [ "$(whoami)" != "root" ]; then
|
||||
echo "Please run this script as root!"
|
||||
exit 1
|
||||
# do we need 32 bit compatibility libs ?
|
||||
if [ "$(uname -m | awk '{print$1}')" == "x86_64" ]; then
|
||||
local packages_x64="libc6-dev-i386 lib32z1"
|
||||
fi
|
||||
|
||||
# filter out already installed packages
|
||||
local packages_all="$packages_misc $packages_perl $packages_x64 $packages_npm"
|
||||
local needed=""
|
||||
|
||||
for pkg in $packages_all
|
||||
do
|
||||
if ! dpkg -s $pkg >/dev/null 2>/dev/null
|
||||
then
|
||||
needed="$needed $pkg"
|
||||
fi
|
||||
done
|
||||
|
||||
packages_all="bison flex g++ g++-multilib zlib1g-dev gettext gawk svn-buildpackage libncurses5-dev ncurses-term git automake gtk-doc-tools liblzo2-dev uuid-dev execstack"
|
||||
packages_perl="libconvert-binary-c-perl libdigest-crc-perl"
|
||||
packages_x64="libc6-dev-i386 lib32z1"
|
||||
packages_npm="npm nodejs yui-compressor"
|
||||
# install needed packages
|
||||
if [ -n "$needed" ]
|
||||
then
|
||||
echo "Need to install dpkg packages [$needed]"
|
||||
read -p "Do you approve installation of these packages (y/n): " ans
|
||||
if [ "$ans" == "y" ]; then
|
||||
sudo apt-get install $needed
|
||||
else
|
||||
echo "can't continue. aborting!"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
curdir=$(pwd)
|
||||
|
||||
#===============#
|
||||
# Prerequisites #
|
||||
#===============#
|
||||
|
||||
mysh=$(ls -hl /bin/sh | awk -F'[ ,/]' '{print$NF}')
|
||||
check_bash()
|
||||
{
|
||||
local mysh=$(ls -hl /bin/sh | awk -F'[ ,/]' '{print$NF}')
|
||||
if [ "$mysh" != "bash" ]; then
|
||||
echo "On Debian based systems, e.g. Ubuntu, /bin/sh must point to bash instead of $mysh"
|
||||
read -p "Do you approve this change (y/n): " ans
|
||||
if [ "$ans" == "y" ]; then
|
||||
rm -f /bin/sh
|
||||
ln -s bash /bin/sh
|
||||
sudo rm -f /bin/sh
|
||||
sudo ln -s bash /bin/sh
|
||||
else
|
||||
echo "Warning! You haven't pointed /bin/sh to bash."
|
||||
cd $curdir
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
echo "The packages below must be installed"
|
||||
echo $packages_all $packages_perl
|
||||
read -p "Do you approve insallation of these packages (y/n): " ans
|
||||
if [ "$ans" == "y" ]; then
|
||||
apt-get install $packages_all
|
||||
apt-get install $packages_perl
|
||||
else
|
||||
cd $curdir
|
||||
exit 1
|
||||
fi
|
||||
install_npm(){
|
||||
|
||||
if [ "$(uname -m | awk '{print$1}')" == "x86_64" ]; then
|
||||
echo "You are running a Linux Distribution based on 64-bit kernel"
|
||||
echo "The packages below must be installed"
|
||||
echo $packages_x64
|
||||
read -p "Do you approve insallation of these packages (y/n): " ans
|
||||
if [ "$ans" == "y" ]; then
|
||||
apt-get install $packages_x64
|
||||
else
|
||||
cd $curdir
|
||||
exit 1
|
||||
local npm_package="
|
||||
bower
|
||||
grunt-cli
|
||||
less
|
||||
mocha
|
||||
npm
|
||||
uglify-js
|
||||
"
|
||||
local needed=""
|
||||
|
||||
# Filter out already installed packages
|
||||
for pkg in $npm_package
|
||||
do
|
||||
if ! npm list -g $pkg >/dev/null 2>/dev/null
|
||||
then
|
||||
needed="$needed $pkg"
|
||||
fi
|
||||
done
|
||||
|
||||
# install needed packages
|
||||
if [ -n "$needed" ]
|
||||
then
|
||||
echo "Need to install npm package $needed"
|
||||
for pkg in $needed
|
||||
do
|
||||
sudo npm install -g $pkg
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
echo "The packages below must be installed in order to be able to compile JUCI"
|
||||
echo $packages_npm
|
||||
read -p "Do you approve insallation of these packages (y/n): " ans
|
||||
if [ "$ans" == "y" ]; then
|
||||
apt-get install npm nodejs yui-compressor
|
||||
npm install -g npm
|
||||
npm install -g grunt-cli
|
||||
npm install -g mocha
|
||||
npm install -g bower
|
||||
npm install -g uglify-js
|
||||
npm install -g less
|
||||
check_brcm_tools(){
|
||||
|
||||
if [ "$(which node)" == "" ]; then
|
||||
NODEJS=$(which nodejs)
|
||||
if [ "$NODEJS" != "" ]; then
|
||||
read -p "Found nodejs executable at $(which nodejs), but no path to 'node'. Do you want to create a symlink? (y/n): " ans
|
||||
if [ "$ans" == "y" ]; then
|
||||
ln -s "$NODEJS" "/usr/bin/node"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
user=$(who | head -1 | awk '{print$1}')
|
||||
[ -n $user ] && chown -R $user:$user /home/$user/.npm/
|
||||
else
|
||||
cd $curdir
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Get the Broadcom toolchain from here and unpack the mips/arm package to /opt:
|
||||
echo -n "Checking for Broadcom MIPS toolchain: "
|
||||
if [ -d /opt/toolchains/crosstools-mips-gcc-4.6-linux-3.4-uclibc-0.9.32-binutils-2.21 ]; then
|
||||
install_mips=0
|
||||
echo "YES"
|
||||
else
|
||||
local install_mips=0
|
||||
local install_arm=0
|
||||
|
||||
if [ ! -d /opt/toolchains/crosstools-mips-gcc-4.6-linux-3.4-uclibc-0.9.32-binutils-2.21 ]; then
|
||||
install_mips=1
|
||||
echo "NO"
|
||||
echo "Need to install broadcom MIPS toolchain"
|
||||
fi
|
||||
|
||||
echo -n "Checking for Broadcom ARM toolchain: "
|
||||
if [ -d /opt/toolchains/crosstools-arm-gcc-4.6-linux-3.4-uclibc-0.9.32-binutils-2.21-NPTL ]; then
|
||||
install_arm=0
|
||||
echo "YES"
|
||||
else
|
||||
|
||||
if [ ! -d /opt/toolchains/crosstools-arm-gcc-4.6-linux-3.4-uclibc-0.9.32-binutils-2.21-NPTL ]; then
|
||||
install_arm=1
|
||||
echo "NO"
|
||||
echo "Need to install broadcom ARM toolchain"
|
||||
fi
|
||||
|
||||
if [ $install_mips -eq 1 -o $install_arm -eq 1 ]; then
|
||||
read -p "Do you approve insallation of missing toolchains (y/n): " ans
|
||||
read -p "Do you approve installation of missing toolchains (y/n): " ans
|
||||
if [ "$ans" == "y" ]; then
|
||||
echo "Downloading toolchain"
|
||||
else
|
||||
cd $curdir
|
||||
echo "can't continue. aborting"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd ~
|
||||
wget http://iopsys.inteno.se/iopsys/toolchain/crosstools-gcc-4.6-linux-3.4-uclibc-0.9.32-binutils-2.21.Rel1.2-full.tar.bz2
|
||||
tar jxf crosstools-gcc-4.6-linux-3.4-uclibc-0.9.32-binutils-2.21.Rel1.2-full.tar.bz2
|
||||
cd /
|
||||
# create install dir
|
||||
sudo mkdir -p /opt/toolchains/
|
||||
sudo chown $USER:$USER /opt/toolchains/
|
||||
|
||||
if [ $install_mips -eq 1 ]; then
|
||||
echo "Installing MIPS toolchain"
|
||||
tar jxf ~/crosstools-mips-gcc-4.6-linux-3.4-uclibc-0.9.32-binutils-2.21.Rel1.2.tar.bz2
|
||||
fi
|
||||
(
|
||||
mkdir tmp
|
||||
cd tmp
|
||||
|
||||
if [ $install_arm -eq 1 ]; then
|
||||
echo "Installing ARM toolchain"
|
||||
tar jxf ~/crosstools-arm-gcc-4.6-linux-3.4-uclibc-0.9.32-binutils-2.21-NPTL.Rel1.2.tar.bz2
|
||||
fi
|
||||
wget http://iopsys.inteno.se/iopsys/toolchain/crosstools-gcc-4.6-linux-3.4-uclibc-0.9.32-binutils-2.21.Rel1.2-full.tar.bz2
|
||||
tar jxf crosstools-gcc-4.6-linux-3.4-uclibc-0.9.32-binutils-2.21.Rel1.2-full.tar.bz2
|
||||
|
||||
rm -f ~/crosstools-gcc-4.6-linux-3.4-uclibc-0.9.32-binutils-2.21-sources.tar.bz2
|
||||
rm -f ~/crosstools-gcc-4.6-linux-3.4-uclibc-0.9.32-binutils-2.21.Rel1.2-full.tar.bz2
|
||||
rm -f ~/crosstools-mip*-gcc-4.6-linux-3.4-uclibc-0.9.32-binutils-2.21.Rel1.2.tar.bz2
|
||||
rm -f ~/crosstools-arm-gcc-4.6-linux-3.4-uclibc-0.9.32-binutils-2.21-NPTL.Rel1.2.tar.bz2
|
||||
if [ $install_mips -eq 1 ]; then
|
||||
echo "Installing MIPS toolchain"
|
||||
|
||||
tar jxf crosstools-mips-gcc-4.6-linux-3.4-uclibc-0.9.32-binutils-2.21.Rel1.2.tar.bz2
|
||||
fi
|
||||
|
||||
if [ $install_arm -eq 1 ]; then
|
||||
echo "Installing ARM toolchain"
|
||||
tar jxf crosstools-arm-gcc-4.6-linux-3.4-uclibc-0.9.32-binutils-2.21-NPTL.Rel1.2.tar.bz2
|
||||
fi
|
||||
|
||||
rm -f crosstools-gcc-4.6-linux-3.4-uclibc-0.9.32-binutils-2.21-sources.tar.bz2
|
||||
rm -f crosstools-gcc-4.6-linux-3.4-uclibc-0.9.32-binutils-2.21.Rel1.2-full.tar.bz2
|
||||
rm -f crosstools-mip*-gcc-4.6-linux-3.4-uclibc-0.9.32-binutils-2.21.Rel1.2.tar.bz2
|
||||
rm -f crosstools-arm-gcc-4.6-linux-3.4-uclibc-0.9.32-binutils-2.21-NPTL.Rel1.2.tar.bz2
|
||||
)
|
||||
fi
|
||||
}
|
||||
|
||||
check_gcc_version(){
|
||||
|
||||
gcc_ver=$(ls -l /usr/bin/gcc-[0-9]* | head -1 | awk '{print$NF}' | cut -d'-' -f2)
|
||||
if [ "$gcc_ver" != "4.8" ]; then
|
||||
|
|
@ -163,6 +189,19 @@ function setup_host {
|
|||
exit 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function setup_host {
|
||||
|
||||
#===============#
|
||||
# Prerequisites #
|
||||
#===============#
|
||||
|
||||
install_pkgs
|
||||
check_bash
|
||||
install_npm
|
||||
check_brcm_tools
|
||||
check_gcc_version
|
||||
|
||||
echo ""
|
||||
echo ""
|
||||
|
|
@ -170,8 +209,6 @@ function setup_host {
|
|||
echo ""
|
||||
echo ""
|
||||
|
||||
cd $curdir
|
||||
|
||||
}
|
||||
|
||||
register_command "setup_host" "Install needed packets to host machine"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue