FOSSEE / eSim

This repository contain source code for new flow of FreeEDA now know as eSim
GNU General Public License v3.0
84 stars 74 forks source link

Flatpak distribution #244

Open suchinton opened 1 year ago

suchinton commented 1 year ago

This PR seeks to provide the implementation of a flatpak-based demo installer for eSim (WIP ⚠️ )

where the following actions are possible :

Approach

The demo application executes the various operations with the following methods:

The installed package method, _install_Pippackage(self): Installs a selected package using pip. It uses a subprocess to check_call system commands and outputs results to a QPlainTextEdit.

The Verilator installation method, _intall_Verilator_fromArchive(self): Installs Verilator from a 7-zip archive file using a system pkexec command. The method extracts files from the archive and moves them to /usr/bin/. It uses a subprocess to check_call system commands and outputs results to a QPlainTextEdit.

The method _install_VerilatorSRC(self) installs Verilator from the source: It triggers a separate thread, InstallThread_SRC(QThread), which executes a shell script containing commands to download the source files and install Verilator. It uses subprocess run and print statements to track the progress of the installation. The thread sends progress updates to the main thread where it is used to update a QPlainTextEdit.

How does this address the problem?

The application is Packaged as a flatpak, which requires the runtime org.kde.Sdk version 5.15-22.08 and the SDK org.kde.Sdk. It is based on the com.riverbankcomputing.PyQt.BaseApp version 5.15-22.08.

The application uses org.kde.Sdk as its runtime to provide various build tools, however, it can be later replaced by org.kde.Platform, and separate modules for additional build tools like git, make, autoconf, etc... can be added to the manifest.

The application's default permissions are specified in its Flatpak Manifest "org.flatpak.FOSSEE_Inst_test.yml", including sharing Inter-Process Communication and network access, an X11 and Wayland socket, access to the host OS filesystem and home directory, DRI device access, and a "talk name" for communication over D-Bus.