diff options
Diffstat (limited to 'install-nghdl.sh')
-rwxr-xr-x | install-nghdl.sh | 258 |
1 files changed, 161 insertions, 97 deletions
diff --git a/install-nghdl.sh b/install-nghdl.sh index eade469..f14116e 100755 --- a/install-nghdl.sh +++ b/install-nghdl.sh @@ -3,7 +3,9 @@ # # FILE: install-nghdl.sh # -# USAGE: ./install-nghdl.sh +# USAGE: ./install-nghdl.sh --install +# or +# ./install-nghdl.sh --uninstall # # DESCRIPTION: It is installation script for ngspice and ghdl work (nghdl). # @@ -11,13 +13,14 @@ # REQUIREMENTS: --- # BUGS: --- # NOTES: --- -# AUTHOR: Fahim Khan , fahim.elex@gmail.com +# AUTHOR: Fahim Khan, Rahul Paknikar # ORGANIZATION: eSim, FOSSEE group at IIT Bombay -# CREATED: Tuesday 02 December 2014 17:01 +# CREATED: Wednesday 23 October 2019 14:30 # REVISION: --- #=============================================================================== ngspice="ngspice-nghdl" +ghdl="ghdl-0.36" config_dir="$HOME/.nghdl" config_file="config.ini" src_dir=`pwd` @@ -28,29 +31,63 @@ timestamp=`echo $sysdate|awk '{print $3"_"$2"_"$6"_"$4 }'` #All functions goes here -function addghdlPPA +function installDependency { - ghdlppa="pgavin/ghdl" - #Checking if ghdl ppa is already exist - grep -h "^deb.*$ghdlppa*" /etc/apt/sources.list.d/* > /dev/null 2>&1 - if [ $? -ne 0 ] - then - echo "Adding ghdl PPA to install latest ghdl version" - sudo add-apt-repository -y ppa:pgavin/ghdl - sudo apt-get update + + echo "Updating indexes to install latest versions......" + sudo apt-get update + + echo "Installing dependencies for ghdl-0.36 LLVM......." + echo "Installing make.................................." + sudo apt-get install -y make + echo "Installing gnat-5.................................." + sudo apt-get install -y gnat-5 + echo "Installing llvm.................................." + sudo apt-get install -y llvm + echo "Installing clang.................................." + sudo apt-get install -y clang + echo "Installing zlib1g-dev.................................." + sudo apt-get install -y zlib1g-dev + echo "Installing xterm.................................." + sudo apt-get install -y xterm + + grep -h "ghdl" /usr/local/bin/ghdl > /dev/null + if [ $? -ne 0 ]; then + tar -xzvf ghdl-0.36.tar.gz -C $HOME + if [ "$?" == 0 ]; then + echo "ghdl-0.36 LLVM successfully extracted to $HOME......" + echo "Changing directory to ghdl-0.36 LLVM installation..." + cd $HOME/ghdl-0.36 + echo "Configuring ghdl-0.36 build as per requirements....." + #Other configure flags can be found at - https://github.com/ghdl/ghdl/blob/master/configure + sudo ./configure --with-llvm-config + echo "Building the install file for ghdl-0.36 LLVM....." + sudo make + echo "Installing ghdl-0.36 LLVM....." + sudo make install + echo "Removing unused part of ghdl-0.36 LLVM....." + sudo rm -rf ../ghdl-0.36 else - echo "ghdl is available in synaptic" + echo "Unable to extract ghdl-0.36 LLVM" + echo "Exiting installation" + exit 1 fi -} - -function installDependency -{ - echo "Installing ghdl.................................." - sudo apt-get install -y ghdl - echo "Installing flex.................................." - sudo apt-get install -y flex - echo "Installing bison................................." - sudo apt-get install -y bison + else + echo "ghdl already exists....." + echo "Leaving ghdl-0.36 LLVM installation" + fi + + echo "Installing flex.................................." + sudo apt-get install -y flex + echo "Installing bison................................." + sudo apt-get install -y bison + + # Specific dependency for nvidia graphic cards + echo "Installing graphics dependency for ngspice souce build" + echo "Installing libxaw7................................" + sudo apt-get install libxaw7 + echo "Installing libxaw7-dev............................" + sudo apt-get install libxaw7-dev } @@ -59,15 +96,12 @@ function installNgspice echo "Installing ngspice..................................." #Checking if ngspice-nghdl directory is already present in Home directory if [ -d $HOME/$ngspice ];then - echo "$ngspice directory already exist" + echo "$ngspice directory already exists at $HOME" echo "Leaving ngspice installation" - - else - #Extracting Ngspice to Home Directory + cd $src_dir tar -xzvf $ngspice.tar.gz -C $HOME - if [ "$?" == 0 ];then echo "Ngspice extracted sucessfuly to $HOME " #change to ngspice-nghdl directory @@ -81,19 +115,34 @@ function installNgspice echo "Installing Ngspice....." echo "------------------------------------" sleep 5 - ../configure --enable-xspice --disable-debug --prefix=$HOME/$ngspice/install_dir/ --exec-prefix=$HOME/$ngspice/install_dir/ - - #dirty fix for adding patch to ngspice base code - cp $src_dir/src/outitf.c $HOME/$ngspice/src/frontend + ../configure --enable-xspice --disable-debug --prefix=$HOME/$ngspice/install_dir/ --exec-prefix=$HOME/$ngspice/install_dir/ + + #dirty fix for adding patch to ngspice base code + cp $src_dir/src/outitf.c $HOME/$ngspice/src/frontend make make install if [ "$?" == 0 ];then - echo "Ngspice Installed sucessfully" + echo "Removing previously Installed Ngspice (if any)......" + sudo apt-get remove -y ngspice + + echo "Ngspice Installed sucessfully......" + echo "Adding softlink for the installed ngspice......" + + sudo ln -s $HOME/$ngspice/install_dir/bin/ngspice /usr/bin/ngspice + if [ "$?" == 0 ];then + echo "failed to add softlink" + echo "ngspice already installed at /usr/bin/ngspice..." + echo "Remove earlier installations and try again..." + else + echo "Added softlink for ngspice" + fi + else echo "There was some error in installing ngspice" fi + else echo "Unable to extract ngspice tar file" exit 1; @@ -125,7 +174,6 @@ function createConfigFile function createSoftLink { - ## Creating softlink cd /usr/local/bin if [[ -L nghdl ]];then @@ -138,76 +186,92 @@ function createSoftLink sudo ln -sf $src_dir/src/ngspice_ghdl.py nghdl fi cd $pwd - } ##################################################################### # Script start from here # ##################################################################### -echo "Enter proxy details if you are connected to internet thorugh proxy" - -echo -n "Is your internet connection behind proxy? (y/n): " -read getProxy -if [ $getProxy == "y" -o $getProxy == "Y" ];then - echo -n 'Proxy hostname :' - read proxyHostname - - echo -n 'Proxy Port :' - read proxyPort - - echo -n username@$proxyHostname:$proxyPort : - read username - - echo -n 'Password :' - read -s passwd - - unset http_proxy - unset https_proxy - unset HTTP_PROXY - unset HTTPS_PROXY - unset ftp_proxy - unset FTP_PROXY - - export http_proxy=http://$username:$passwd@$proxyHostname:$proxyPort - export https_proxy=http://$username:$passwd@$proxyHostname:$proxyPort - export HTTP_PROXY=http://$username:$passwd@$proxyHostname:$proxyPort - export HTTPS_PROXY=http://$username:$passwd@$proxyHostname:$proxyPort - export ftp_proxy=http://$username:$passwd@$proxyHostname:$proxyPort - export FTP_PROXY=http://$username:$passwd@$proxyHostname:$proxyPort - - echo "Install with proxy" - #Calling functions - addghdlPPA - installDependency - if [ $? -ne 0 ];then - echo -e "\n\n\nERROR: Unable to install required packages. Please check your internet connection.\n\n" - exit 0 - fi - installNgspice - createConfigFile - createSoftLink - -elif [ $getProxy == "n" -o $getProxy == "N" ];then - echo "Install without proxy" - - #Calling functions - addghdlPPA - installDependency - if [ $? -ne 0 ];then - echo -e "\n\n\nERROR: Unable to install required packages. Please check your internet connection.\n\n" - exit 0 - fi - installNgspice - createConfigFile - createSoftLink +###Checking if file is passsed as argument to script +if [ "$#" -eq 1 ];then + option=$1 else - echo "Please select the right option" - exit 0 - + echo "USAGE : " + echo "./install.sh --install" + exit 1; fi - - - +##Checking flags + +if [ $option == "--install" ];then + echo "Enter proxy details if you are connected to internet thorugh proxy" + + echo -n "Is your internet connection behind proxy? (y/n): " + read getProxy + if [ $getProxy == "y" -o $getProxy == "Y" ];then + echo -n 'Proxy hostname :' + read proxyHostname + + echo -n 'Proxy Port :' + read proxyPort + + echo -n username@$proxyHostname:$proxyPort : + read username + + echo -n 'Password :' + read -s passwd + + unset http_proxy + unset https_proxy + unset HTTP_PROXY + unset HTTPS_PROXY + unset ftp_proxy + unset FTP_PROXY + + export http_proxy=http://$username:$passwd@$proxyHostname:$proxyPort + export https_proxy=http://$username:$passwd@$proxyHostname:$proxyPort + export HTTP_PROXY=http://$username:$passwd@$proxyHostname:$proxyPort + export HTTPS_PROXY=http://$username:$passwd@$proxyHostname:$proxyPort + export ftp_proxy=http://$username:$passwd@$proxyHostname:$proxyPort + export FTP_PROXY=http://$username:$passwd@$proxyHostname:$proxyPort + + echo "Install with proxy" + #Calling functions + installDependency + if [ $? -ne 0 ];then + echo -e "\n\n\nERROR: Unable to install required packages. Please check your internet connection.\n\n" + exit 0 + fi + installNgspice + createConfigFile + createSoftLink + + elif [ $getProxy == "n" -o $getProxy == "N" ];then + echo "Install without proxy" + + #Calling functions + installDependency + if [ $? -ne 0 ];then + echo -e "\n\n\nERROR: Unable to install required packages. Please check your internet connection.\n\n" + exit 0 + fi + installNgspice + createConfigFile + createSoftLink + +elif [ $option == "--uninstall" ];then + echo "Deleting Files............" + sudo rm -rf $HOME/ngspice-nghdl $HOME/.nghdl /usr/share/kicad/library/eSim_Nghdl.lib /usr/local/bin/nghdl /usr/bin/ngspice + echo "Removing gnat-5............" + sudo apt-get remove -y gnat-5 + echo "Removing llvm............" + sudo apt-get remove -y llvm + echo "Removing ghdl............" + sudo rm -rf /usr/local/bin/ghdl /usr/local/lib/ghdl /usr/local/bin/ghdl1-llvm /usr/local/lib/libghdlvpi.so + +else + echo "Please select the proper operation." + echo "--install" + echo "--uninstall" +fi
\ No newline at end of file |