diff options
Diffstat (limited to 'Ubuntu/executable.md')
-rw-r--r-- | Ubuntu/executable.md | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/Ubuntu/executable.md b/Ubuntu/executable.md new file mode 100644 index 00000000..435ed88a --- /dev/null +++ b/Ubuntu/executable.md @@ -0,0 +1,101 @@ +eSim Executable (Ubuntu OS) +==== + +> Note: It is not updated for the recently ported GUI to PyQt5 and Ubuntu 20.04 LTS. Currently, packaging for Ubuntu OS is done directly with the source code and not the executable. + +It contains the documentation for making eSim executable using PyInstaller on Ubuntu 16.04 and above. + + +## Freeze eSim source code: + +> Note: pip tool corresponds to Python-3.5.2 on Ubuntu 16.04 and Python-3.6.9 on Ubuntu 18.04 + +1. Download `virtualenv` package and create virtual environment as: + + $ pip install virtualenv + $ virtualenv -p /usr/bin/python3 eSim + + OR + + $ sudo apt install -y python3-venv + $ python3 -m venv eSim + +2. Activate the virtual environment as: + + $ source eSim/bin/activate + +3. Install all Python dependencies for eSim within the virtual environment as: + + $ pip install wheel + $ pip install pyinstaller + $ pip install --upgrade 'matplotlib==3.0.3' + $ pip install tornado + $ pip install --upgrade 'setuptools<45.0.0' + $ sudo apt install build-essential python3-dev libqt4-dev qt4-dev-tools + $ mkdir eSim/build + $ cd eSim/build/ + $ wget http://sourceforge.net/projects/pyqt/files/PyQt4/PyQt-4.12.3/PyQt4_gpl_x11-4.12.3.tar.gz + $ wget https://www.riverbankcomputing.com/static/Downloads/sip/4.19.21/sip-4.19.21.tar.gz + $ tar -xzvf sip-4.19.21.tar.gz + $ tar -xvzf PyQt4_gpl_x11-4.12.3.tar.gz + $ cd sip-4.19.21/ + $ python configure.py --sip-module PyQt4.sip + $ make + $ make install + $ cd ../PyQt4_gpl_x11-4.12.3/ + $ python configure.py + $ make + $ make install + +4. Test whether only eSim dependencies are available or not: + + $ pip freeze + +> Note : Following dependencies should be available - +> - PyQt4 +> - matplotlib +> - numpy +> - dateutil +> - pyparsing +> - six +> - cycler.py + +5. Create spec file as: + + $ pyi-makespec --onefile -n eSim <path_to_eSim>/src/frontEnd/Application.py + +6. Add `PyQt4.sip` as hiddenimports in the generated spec file. + +7. Create onefile executable using pyinstaller as: + + $ pyinstaller -F --clean eSim.spec + +8. Verify whether all eSim `src` files (`*.py`) have been included in `Analysis-00.toc` file under the build folder generated by PyInstaller. + + +## Fully-Static Bundling of eSim Executable: + +1. To create a [fully-static bundled version](https://github.com/pyinstaller/pyinstaller/wiki/FAQ#GNULinux) of eSim (through PyInstaller), use a tool like [StaticX](https://github.com/JonathonReinhart/staticx/). + +2. To create fully-static eSim : + + - Activate the virtual environment as: + + $ source eSim/bin/activate + + - Install StaticX as: + + $ pip install staticx + $ pip install patchelf-wrapper + + - Create static eSim as: + + $ staticx /path/to/executable/eSim /path/to/output/executable/eSim + +3. To verify if all dynamic libraries are removed : + + - Type following command in a terminal : + + $ ldd path/to/output/executable/eSim + + - Output of above command should be similar to ` not a dynamic executable` |