summaryrefslogtreecommitdiff
path: root/install-eSim.sh
diff options
context:
space:
mode:
authorrahul2019-10-24 10:41:24 +0530
committerrahul2019-10-24 10:41:24 +0530
commitb5d5e5611730d5daf99e0cdb05b31136efb4083c (patch)
treeb1b862f678493f8bba594309824384c101b6ab16 /install-eSim.sh
parent9dcf40b085624030cf6d988a83eee17c8f789ba5 (diff)
downloadeSim-b5d5e5611730d5daf99e0cdb05b31136efb4083c.tar.gz
eSim-b5d5e5611730d5daf99e0cdb05b31136efb4083c.tar.bz2
eSim-b5d5e5611730d5daf99e0cdb05b31136efb4083c.zip
updated installer with nghdl installation
Diffstat (limited to 'install-eSim.sh')
-rwxr-xr-xinstall-eSim.sh316
1 files changed, 316 insertions, 0 deletions
diff --git a/install-eSim.sh b/install-eSim.sh
new file mode 100755
index 00000000..209d4966
--- /dev/null
+++ b/install-eSim.sh
@@ -0,0 +1,316 @@
+#!/bin/bash
+#===============================================================================
+#
+# FILE: install-eSim.sh
+#
+# USAGE: ./install-eSim.sh --install
+# or
+# ./install-eSim.sh --uninstall
+#
+# DESCRIPTION: This is installation/uninstallation script for eSim
+#
+# OPTIONS: ---
+# REQUIREMENTS: ---
+# BUGS: ---
+# NOTES: ---
+# AUTHOR: Fahim Khan, Rahul Paknikar, Saurabh Bansode
+# ORGANIZATION: FOSSEE at IIT Bombay.
+# CREATED: Wednesday 23 October 2019 16:14
+# REVISION: ---
+#===============================================================================
+
+#All variables goes here
+config_dir="$HOME/.esim"
+config_file="config.ini"
+eSim_Home=`pwd`
+ngspiceFlag=0
+
+##All Functions goes here
+
+
+function createConfigFile
+{
+ #Creating config.ini file and adding configuration information
+ #Check if config file is present
+ if [ -d $config_dir ];then
+ rm $config_dir/$config_file && touch $config_dir/$config_file
+ else
+ mkdir $config_dir && touch $config_dir/$config_file
+ fi
+
+ echo "[eSim]" >> $config_dir/$config_file
+ echo "eSim_HOME = $eSim_Home" >> $config_dir/$config_file
+ echo "LICENSE = %(eSim_HOME)s/LICENSE" >> $config_dir/$config_file
+ echo "KicadLib = %(eSim_HOME)s/kicadSchematicLibrary" >> $config_dir/$config_file
+ echo "IMAGES = %(eSim_HOME)s/images" >> $config_dir/$config_file
+ echo "VERSION = %(eSim_HOME)s/VERSION" >> $config_dir/$config_file
+ echo "MODELICA_MAP_JSON = %(eSim_HOME)s/src/ngspicetoModelica/Mapping.json" >> $config_dir/$config_file
+}
+
+function installNghdl
+{
+ echo -n "Do you want to install nghdl? (y/n): "
+ read getNghdl
+
+ if [ $getNghdl == "y" -o $getNghdl == "Y" ];then
+ echo "Downloading nghdl"
+ wget https://github.com/rahulp13/nghdl/archive/2019Fellows.zip
+ unzip nghdl-2019Fellows.zip
+ mv nghdl-2019Fellows nghdl
+ rm nghdl-2019Fellows.zip
+
+ echo "Installing nghdl"
+ cd nghdl/
+ ./install-nghdl.sh --install
+
+ if [ $? -ne 0 ];then
+ echo -e "\n\n\nNghdl ERROR: Error while installing nghdl\n\n"
+ exit 0
+ else
+ ngspiceFlag=1
+ cd ..
+ fi
+ #Creating empty eSim_Nghdl.lib in home directory
+ if [ -f /usr/share/kicad/library/eSim_Nghdl.lib ];then
+ echo "eSim_Nghdl.lib is already available"
+ else
+ touch /usr/share/kicad/library/eSim_Nghdl.lib
+ fi
+
+ elif [ $getNghdl == "n" -o $getNghdl == "N" ];then
+ echo "Proceeding without installing nghdl"
+ else
+ echo "Please select the right option"
+ exit 0
+ fi
+}
+
+function addKicadPPA
+{
+ #sudo add-apt-repository ppa:js-reynaud/ppa-kicad
+ kicadppa="reynaud/kicad-4"
+ #Checking if ghdl ppa is already exist
+ grep -h "^deb.*$kicadppa*" /etc/apt/sources.list.d/* > /dev/null 2>&1
+ if [ $? -ne 0 ]
+ then
+ echo "Adding kicad-4 PPA to install latest ghdl version"
+ sudo add-apt-repository --yes ppa:js-reynaud/kicad-4
+ sudo apt-get update
+ else
+ echo "Kicad-4 is available in synaptic"
+ fi
+}
+
+function installDependency
+{
+
+ echo "Installing Kicad............"
+ sudo apt-get install -y kicad
+ if [ $ngspiceFlag -ne 1 ];then
+ echo "Installing ngspice.........."
+ sudo apt-get install -y ngspice
+ else
+ echo "ngspice already installed......"
+ fi
+ echo "Installing PyQt4............"
+ sudo apt-get install -y python-qt4
+ echo "Installing Matplotlib......."
+ sudo apt-get install -y python-matplotlib
+
+}
+
+function copyKicadLibrary
+{
+ if [ -f ~/.config/kicad ];then
+ echo "kicad folder already exists"
+ else
+ echo ".config/kicad does not exist"
+ mkdir ~/.config/kicad
+ fi
+
+ sudo cp -r src/.OfflineFiles/fp-lib-table ~/.config/kicad/
+ sudo cp -r src/.OfflineFiles/fp-lib-table-online ~/.config/kicad/
+ echo "fp-lib-table copied in the directory"
+ sudo cp -r src/.OfflineFiles/TerminalBlock_Altech_AK300-2_P5.00mm.kicad_mod /usr/share/kicad/modules/Connectors_Terminal_Blocks.pretty/
+ sudo cp -r src/.OfflineFiles/TO-220-3_Vertical.kicad_mod /usr/share/kicad/modules/TO_SOT_Packages_THT.pretty/
+ #Copy Kicad library made for eSim
+ sudo cp -r kicadSchematicLibrary/*.lib /usr/share/kicad/library/
+ sudo cp -r kicadSchematicLibrary/*.dcm /usr/share/kicad/library/
+
+ #Change ownership from Root to the User
+ sudo chown -R $USER:$USER /usr/share/kicad/library/
+
+
+
+ # Full path of 'kicad.pro file'[Verified for Ubuntu 12.04]
+ KICAD_PRO="/usr/share/kicad/template/kicad.pro"
+ KICAD_ORIGINAL="/usr/share/kicad/template/kicad.pro.original"
+
+ if [ -f "$KICAD_ORIGINAL" ];then
+ echo "kicad.pro.original file found....."
+ sudo cp -rv kicadSchematicLibrary/kicad.pro ${KICAD_PRO}
+ else
+ echo "Making copy of original file"
+ sudo cp -rv ${KICAD_PRO}{,.original}
+ sudo cp -rv kicadSchematicLibrary/kicad.pro ${KICAD_PRO}
+ fi
+
+}
+
+function createDesktopStartScript
+{
+
+ #Generating new esim-start.sh
+ echo "#!/bin/bash" > esim-start.sh
+ echo "cd $eSim_Home/src/frontEnd" >> esim-start.sh
+ echo "python2 Application.py" >> esim-start.sh
+
+ #Make it executable
+ sudo chmod 755 esim-start.sh
+ #Copy esim start script
+ sudo cp -vp esim-start.sh /usr/bin/esim
+
+ #Generating esim.desktop file
+ echo "[Desktop Entry]" > esim.desktop
+ getVersion=`tail -1 VERSION`
+ echo "Version=$getVersion" >> esim.desktop
+ echo "Name=eSim" >> esim.desktop
+ echo "Comment=EDA Tools" >> esim.desktop
+ echo "GenericName=eSim" >> esim.desktop
+ echo "Keywords=eda-tools" >> esim.desktop
+ echo "Exec=esim %u" >> esim.desktop
+ echo "Terminal=false" >> esim.desktop
+ echo "X-MultipleArgs=false" >> esim.desktop
+ echo "Type=Application" >> esim.desktop
+ getIcon="$config_dir/logo.png"
+ echo "Icon=$getIcon" >> esim.desktop
+ echo "Categories=Development;" >> esim.desktop
+ echo "MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall;" >> esim.desktop
+ echo "StartupNotify=true" >> esim.desktop
+ echo "Actions=NewWindow;NewPrivateWindow;" >> esim.desktop
+
+
+ #Make esim.desktop file executable
+ sudo chmod 755 esim.desktop
+ #Copy desktop icon file to Desktop
+ cp -vp esim.desktop $HOME/Desktop/
+
+
+ #Copying logo.png to .esim directory to access as icon
+ cp -vp images/logo.png $config_dir
+}
+
+####################################################################
+# MAIN START FROM HERE #
+####################################################################
+
+###Checking if file is passsed as argument to script
+
+if [ "$#" -eq 1 ];then
+ option=$1
+else
+ 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 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
+ createConfigFile
+ addKicadPPA
+ installDependency
+ copyKicadLibrary
+ createDesktopStartScript
+ installNghdl
+
+ elif [ $getProxy == "n" -o $getProxy == "N" ];then
+ echo "Install without proxy"
+
+ #Calling functions
+ createConfigFile
+ addKicadPPA
+ installDependency
+ copyKicadLibrary
+ createDesktopStartScript
+ installNghdl
+
+ if [ $? -ne 0 ];then
+ echo -e "\n\n\nFreeEDA ERROR: Unable to install required packages. Please check your internet connection.\n\n"
+ exit 0
+ fi
+
+ else
+ echo "Please select the right option"
+ exit 0
+ fi
+
+
+elif [ $option == "--uninstall" ];then
+ echo -n "Are you sure ? As it will remove complete eSim including KiCad, Ngspice, NGHDL, your subcircuit and model library packages(y/n):"
+ read getConfirmation
+ if [ $getConfirmation == "y" -o $getConfirmation == "Y" ];then
+ echo "Deleting Files............"
+ sudo rm -rf $HOME/.esim $HOME/.config/kicad $HOME/Desktop/esim.desktop esim-start.sh esim.desktop /usr/bin/esim
+ echo "Removing Kicad............"
+ sudo apt-get remove -y kicad
+ echo "Removing Ngspice............"
+ sudo apt-get remove -y ngspice
+ echo "Removing NGHDL............"
+ cd nghdl/
+ ./install-nghdl.sh --uninstall
+
+
+ if [ $? -eq 0 ];then
+ echo "Uninstalled successfully"
+ else
+ echo "Error while removing some file/directory. Please remove it manually"
+ fi
+ elif [ $getConfirmation == "n" -o $getConfirmation == "N" ];then
+ exit 0
+ else
+ echo "Please select the right option"
+ exit 0
+ fi
+
+
+else
+ echo "Please select the proper operation."
+ echo "--install"
+ echo "--uninstall"
+
+fi \ No newline at end of file