Skip to content

mahakgupta0123/eSim_Universal_packagemanager_linux

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

eSim Universal AppImage Builder

Build Status Platform License Distros

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.


🚀 Key Features

  • 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)
  • 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 .deb packages for libraries not available on non-Ubuntu systems (OpenSceneGraph, Qt5WebKit, ICU, omniORB)


📋 Prerequisites

Before running the builder, ensure you have:

  1. A Linux machine (x86_64 architecture)
  2. Sudo privileges (for installing build tools like gcc, wget, python3, etc.)
  3. Internet connection — The script downloads several hundred MB of sources and tools
  4. Disk space — At least 5 GB of free space for the build process
  5. Basic build tools — The script will install anything missing, but having git, gcc, and wget pre-installed speeds things up

🛠️ Build Instructions

Creating your universal AppImage is as simple as running one command:

1. Clone the Repository

git clone https://github.com/mahakgupta0123/eSim_Universal_packagemanager_linux.git
cd eSim_Universal_packagemanager_linux

2. Make the Script Executable

chmod +x build-appimage.sh

3. Run the Builder

./build-appimage.sh

The 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

🖥️ Usage

Once the build is complete, you will find eSim-2.5.AppImage (~625 MB) in the build-eSim-AppImage/ directory.

Running the AppImage

./build-eSim-AppImage/eSim-2.5.AppImage

Tip

You can copy this single file to any other Linux distribution and it will run without needing to install eSim's complex dependency tree!

What's Included

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

🐧 Supported Distributions

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.


🔧 Troubleshooting

FUSE Error (Ubuntu 22.04+)

If the AppImage fails to run with a message about FUSE:

sudo apt update && sudo apt install libfuse2

OMEdit Not Opening

If OMEdit fails to launch, it's usually a missing Qt5 library. The builder automatically handles this by:

  • Bundling Ubuntu .deb libraries 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.

Python Import Errors

If you see ModuleNotFoundError for PyQt5 or other Python packages:

  • On Arch: Ensure python-pyqt5 is installed (sudo pacman -S python-pyqt5)
  • On Fedora: Ensure python3-PyQt5 is installed (sudo dnf install python3-PyQt5)

Build Failures

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)

📁 Project Structure

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

🏗️ Architecture & Design

The build system uses a layered approach to handle cross-distribution compatibility:

  1. Detection Layer — Identifies the host distro and package manager
  2. Dependency Layer — Installs build-time and runtime dependencies using the native package manager
  3. Compilation Layer — Builds NgSpice from source with custom patches; compiles Verilator object files
  4. Bundling Layer — Copies all binaries, libraries, Python packages, GTK resources, and KiCad into the AppDir
  5. Fallback Layer — For libraries not available on the host system (e.g., OMEdit's Ubuntu-specific dependencies), downloads .deb packages from Ubuntu archives and extracts the needed .so files
  6. Packaging Layer — Creates the final AppImage using appimagetool

📜 License

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.

About

This is the universal AppImage bundling for the free and open source EDA tool - eSim, specifically designed for all the linux distros

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages