A comprehensive, automated build system for creating a Universal AppImage of eSim — an open-source EDA tool for circuit design, simulation, analysis, and PCB design developed by the FOSSEE initiative at IIT Bombay.
This project solves the "dependency hell" problem on Linux by bundling eSim and all its complex requirements into a single, portable executable that works across virtually all modern Linux distributions — no installation required.
-
True Multi-Distro Compatibility — Automatically detects and handles dependencies for:
- Ubuntu / Debian / Linux Mint (
apt) - Fedora / RHEL / CentOS (
dnf/yum) - Arch Linux / Manjaro (
pacman) - openSUSE (
zypper)
- Ubuntu / Debian / Linux Mint (
-
Bundled Tool Suite:
- eSim 2.5 — Latest stable EDA suite with schematic capture, simulation, and PCB design
- KiCad 6.0.11 — Bundled via AppImage for perfect compatibility and isolation
- NgSpice 35 — Custom-built from source with specialized patches for NGHDL/GHDL integration, clean termination, and Arch compatibility
- OpenModelica / OMEdit — Modelica-based modeling and simulation environment
- GHDL — Open-source VHDL simulator for NGHDL digital models
- Verilator — Fast Verilog HDL simulator for NgVeri integration
- Makerchip — Built-in support for Makerchip IDE integration
-
Zero Configuration — Automatically sets up Python virtual environments, GTK resources, library paths, and runtime dependencies inside the AppImage
-
Cross-Distribution Library Bundling — Intelligent fallback system that downloads Ubuntu
.debpackages for libraries not available on non-Ubuntu systems (OpenSceneGraph, Qt5WebKit, ICU, omniORB)
Before running the builder, ensure you have:
- A Linux machine (x86_64 architecture)
- Sudo privileges (for installing build tools like
gcc,wget,python3, etc.) - Internet connection — The script downloads several hundred MB of sources and tools
- Disk space — At least 5 GB of free space for the build process
- Basic build tools — The script will install anything missing, but having
git,gcc, andwgetpre-installed speeds things up
Creating your universal AppImage is as simple as running one command:
git clone https://github.com/mahakgupta0123/eSim_Universal_packagemanager_linux.git
cd eSim_Universal_packagemanager_linuxchmod +x build-appimage.sh./build-appimage.shThe script proceeds through 10 automated stages:
| Stage | Description |
|---|---|
| 1 | Distribution detection & system checks |
| 2 | Prerequisite & dependency installation |
| 3 | Tool downloading (KiCad AppImage, OpenModelica, etc.) |
| 4 | eSim source preparation & patching |
| 5 | NgSpice compilation from source (with GHDL patches) |
| 6 | Verilator setup & compilation |
| 7 | Python environment & package installation |
| 8 | GTK resource bundling (icons, themes, schemas) |
| 9 | KiCad & OMEdit library bundling |
| 10 | AppImage creation & packaging |
Once the build is complete, you will find eSim-2.5.AppImage (~625 MB) in the build-eSim-AppImage/ directory.
./build-eSim-AppImage/eSim-2.5.AppImageTip
You can copy this single file to any other Linux distribution and it will run without needing to install eSim's complex dependency tree!
When you launch the AppImage, you get access to:
- eSim — Main schematic/simulation GUI
- KiCad — Schematic & PCB editor (launched from within eSim)
- OMEdit — OpenModelica editor for Modelica models
- NgSpice — Circuit simulation engine (runs automatically from eSim)
- NGHDL — VHDL digital model integration
- NgVeri — Verilog digital model integration via Verilator
| Distribution | Package Manager | Status |
|---|---|---|
| Ubuntu 20.04+ | apt |
✅ Fully tested |
| Debian 11+ | apt |
✅ Fully tested |
| Linux Mint 21+ | apt |
✅ Fully tested |
| Fedora 38+ | dnf |
✅ Fully tested |
| Arch Linux | pacman |
✅ Fully tested |
| Manjaro | pacman |
✅ Fully tested |
| openSUSE Leap/Tumbleweed | zypper |
✅ Supported |
| RHEL / CentOS 8+ | dnf / yum |
✅ Supported |
Note
The build can be performed on any supported distribution. The resulting AppImage is portable and can run on any x86_64 Linux distribution with FUSE support.
If the AppImage fails to run with a message about FUSE:
sudo apt update && sudo apt install libfuse2If OMEdit fails to launch, it's usually a missing Qt5 library. The builder automatically handles this by:
- Bundling Ubuntu
.deblibraries for OpenSceneGraph, Qt5WebKit, ICU, and omniORB - Installing native Qt5 modules (
qt5-declarative,qt5-sensors,qt5-location) during the build
To manually check: run ldd eSim.AppDir/usr/bin/OMEdit.bin | grep "not found" inside the build directory.
If you see ModuleNotFoundError for PyQt5 or other Python packages:
- On Arch: Ensure
python-pyqt5is installed (sudo pacman -S python-pyqt5) - On Fedora: Ensure
python3-PyQt5is installed (sudo dnf install python3-PyQt5)
Common causes:
- Interrupted internet during large downloads (KiCad AppImage is ~600 MB)
- Missing disk space (at least 5 GB required)
- Unsupported architecture (only x86_64 is currently supported)
eSim_Universal_packagemanager_linux/
├── build-appimage.sh # Main build script (~7800 lines)
├── README.md # This file
└── build-eSim-AppImage/ # Created during build
├── downloads/ # Downloaded tools & dependencies
├── eSim.AppDir/ # AppImage filesystem
│ ├── AppRun # Entry point launcher
│ ├── usr/
│ │ ├── bin/ # eSim, KiCad, OMEdit, NgSpice binaries
│ │ ├── lib/ # Bundled shared libraries
│ │ └── share/ # eSim source, resources, models
│ └── ...
└── eSim-2.5.AppImage # Final portable AppImage
The build system uses a layered approach to handle cross-distribution compatibility:
- Detection Layer — Identifies the host distro and package manager
- Dependency Layer — Installs build-time and runtime dependencies using the native package manager
- Compilation Layer — Builds NgSpice from source with custom patches; compiles Verilator object files
- Bundling Layer — Copies all binaries, libraries, Python packages, GTK resources, and KiCad into the AppDir
- Fallback Layer — For libraries not available on the host system (e.g., OMEdit's Ubuntu-specific dependencies), downloads
.debpackages from Ubuntu archives and extracts the needed.sofiles - Packaging Layer — Creates the final AppImage using
appimagetool
This project is part of the FOSSEE initiative at IIT Bombay and follows the licensing of the bundled tools (primarily GPL v3). See the individual component headers for details.
Developed for the eSim Community to provide a seamless simulation experience on Linux.