What's a flatpak runtime? - flatpak

What exactly is a flatpak runtime? Is it a virtual machine like JVM (Java) and CPython? Or is it more like something like virtualenv? I already read the flatpak documentation but it was not clear to me.

It is more like virtualenv than JVM or the like. It creates an isolated set of files so that one application's dependencies are well-defined.
However, rather than copying all dependencies into this environment, some are shared in a safe way -- this is the "runtime".

There is an entire list of runtimes available with different characteristics.
One of the tutorials shows how to install flatpak runtime:
https://docs.flatpak.org/en/latest/first-build.html#install-a-runtime-and-the-matching-sdk
$ flatpak install flathub org.freedesktop.Platform//21.08 org.freedesktop.Sdk//21.08
What this means is that it is using the org.freedesktop.Sdk ID and version 21.08
I recently ran into an error:
error: runtime/org.kde.Sdk/x86_64/5.15-21.08 not installed
So I tried:
01:09:37 jm#pop-os pycharm_projects → flatpak install flathub runtime/org.kde.Sdk/x86_64/5.15-21.08
Looking for matches…
ID Branch Op Remote Download
1. [✓] org.kde.Sdk.Locale 5.15-21.08 i flathub 17.9 kB / 350.1 MB
2. [✓] org.kde.Sdk 5.15-21.08 i flathub 251.8 MB / 674.4 MB
Installing 2/2… ████████████████████ 100% 6.8 MB/s 00:00
See:
https://docs.flatpak.org/en/latest/available-runtimes.html
Freedesktop
The Freedesktop runtime is the standard runtime that can be used for any application and contains a set of essential libraries and services, including D-Bus, GLib, Gtk3, PulseAudio, X11 and Wayland.
The Freedesktop runtime is maintained here and has a website here.
Available Freedesktop runtimes:
ID
Description
org.freedesktop.Platform
Runtime
org.freedesktop.Platform.Locale
Runtime translations (extension)
org.freedesktop.Platform.VAAPI.Intel{,.i386}
Intel vaapi drivers (extension)
org.freedesktop.Platform.ffmpeg-full
All ffmpeg codecs (extension)
org.freedesktop.Platform.Compat.{architecture}
32 bits compatible extension
org.freedesktop.Platform.Compat.{architecture}.debug
32 bits compatible extension (debug)
org.freedesktop.Platform.GL{,32}.default
Mesa drivers (extension)
org.freedesktop.Platform.GL{,32}.mesa-git
Mesa drivers, latest (extension)
org.freedesktop.Sdk
SDK
org.freedesktop.Sdk.Debug
SDK debug information (extension)
org.freedesktop.Sdk.Locale
SDK translations (extension)
org.freedesktop.Sdk.Docs
SDK documentation (extension)
org.freedesktop.Sdk.Extension.toolchain-{architecture}
SDK cross compilers (extension)
GNOME
The GNOME runtime is appropriate for any application that uses the GNOME platform. It is based on the Freedesktop runtime and adds the GNOME platform, including:
Clutter
Gjs
GObject Introspection
GStreamer
GVFS
Libnotify
Libsecret
LibSoup
PyGObject
Vala
WebKitGTK
The GNOME runtime is maintained here.
Available GNOME runtimes:
|ID | Description|
|---------------|--------|
|org.gnome.Platform| Runtime|
|org.gnome.Platform.Locale| Runtime translations (extension)|
|org.gnome.Sdk| SDK|
|org.gnome.Sdk.Debug| SDK debug information (extension)|
|org.gnome.Sdk.Locale| SDK translations (extension)|
|org.gnome.Sdk.Docs| SDK documentation (extension)|
KDE
The KDE runtime is also based on the Freedesktop runtime and adds Qt and KDE Frameworks. It is appropriate for any application that makes use of the KDE platform and most Qt-based applications.
The KDE runtime is maintained here.
Available KDE runtimes:
ID
Description
org.kde.Platform
Runtime
org.kde.Platform.Locale
Runtime translations (extension)
org.kde.Sdk
SDK
org.kde.Sdk.Debug
SDK debug information (extension)
org.kde.Sdk.Locale
SDK translations (extension)
org.kde.Sdk.Docs
SDK documentation (extension)

Related

Using Nvidia OpenCL-drivers with an ICD-loader on Windows

I have configured Installable Client Drivers (ICDs) on an Ubuntu-distribution with Intel OpenCL runtime drivers, which was fairly straightforward. These drivers come as *.so-files which can be loaded by specifying their path in an *.icd-file under /etc/OpenCL/vendors/.
How would I proceed to specify Nvidia OpenCL-drivers on Windows, and where are these drivers located?
I use MINGW64 with and OpenCL-ICD-Loader installed via MSYS2
Where is the corresponding directory to add the *.icd-files?
On Windows with MinGW-w64 I use a combination of:
https://github.com/KhronosGroup/OpenCL-Headers
https://github.com/KhronosGroup/OpenCL-ICD-Loader
OpenCL-ICD-Loader figures out where to load the Nvidia stuff from.
To build from source I had to tweak some stuff, see my build recipes:
https://github.com/brechtsanders/winlibs_recipes/blob/main/recipes/khronos-opencl-headers.winlib
https://github.com/brechtsanders/winlibs_recipes/blob/main/recipes/khronos-opencl-icd-loader.winlib

Can nvcc generate an older PTX ISA version [duplicate]

I've recently downloaded and successfully compiled a small CUDA dll using NVCC (10.2). Unfortunately because I have the most recent toolkit version the distribution requires the most recent driver version too. So I was wondering if there was an NVCC flag that enabled me to effectively target an earlier driver version and then distribute with an older runtime.
Currently, I have to check the run time and driver versions in order to check for compatibility.
The CUDA toolchain, runtime API and its support libraries are versioned and if you build runtime API code with a given toolkit version, you must ship the resulting code with all the libraries from that version or have users install that toolkit version (aka the tensorflow problem).
If you use the driver API, then you can potentially target a lower compute capability with PTX which might be backward compatible with a different driver. I say might because there are still PTX version support limits which can stop it from working correctly.
If you want to support older CUDA versions, just install the older toolchain and build using that toolkit.

How do you install the Protobuf Compiler (Protocol Buffers / protoc) on Mac M1 ARM?

Here is the link to the Protocol Buffers / Protobuf Github
https://github.com/protocolbuffers/protobuf
Should I follow the C++ installation instructions?
There is no pre-built binary for Mac M1 ARM architecture.
"Protocol Compiler InstallationThe protocol compiler is written in C++. If you are using C++, please follow the C++ Installation Instructions to install protoc along with the C++ runtime. For non-C++ users, the simplest way to install the protocol compiler is to download a pre-built binary from our release page:
https://github.com/protocolbuffers/protobuf/releases
In the downloads section of each release, you can find pre-built binaries in zip packages: protoc-$VERSION-$PLATFORM.zip. It contains the protoc binary as well as a set of standard .proto files distributed along with protobuf."
As of July 2nd, the estimate delivery time for the Mac M1 ARM binary is 4 months.
For protobuf to work on Mac with the M1 chip first you will need to enable Rosseta with the following command on the terminal
softwareupdate --install-rosetta
This will allow you to run your Mac on Intel compatibility mode and then from there you can install the latest protobuf for your respective programming language.

Is it possible to use the libicu used by qt?

My Qt project use libicu for codec detection. But when building it using CMake & make, it show the following warning:
/usr/bin/ld: warning: libicui18n.so.56, needed by /opt/qt5/5.15.0/gcc_64/lib/libQt5Core.so.5.15.0, may conflict with libicui18n.so.60
The ICU used by my program is installed via apt on ubuntu 18, and the version is 60.2.
But the Qt used by my program is installed manually by the online installer, and the version of ICU is 58.x.
The reason why I don't installed qt via apt is that the project uses the features introduced in Qt5.15, and currently the highest version of Qt from apt is 5.12(on ubuntu 20.04).
When I scanning libraries, I find libicui18n in the qt root.
So I wonder if I can directly use it.
Or is there any way to solve this conflict?
Of course, rebuilding qt or building it on Arch Linux are possible solutions.
But this is quite complex, especially my program will be built on three platforms.

Which Glew version should I download?

I am following this OpenGL tutorial at Open.gl, it begins to speak about installing Glew.
I have found another post on Stack overflow that explains how to install it.
But which one shall I download? (Source: ZIP/TGZ | Binaries: Windows 32-bit and 64-bit)
My operating system is Windows 8.1 64bit
Glew site - http://glew.sourceforge.net/
I'd suggest grabbing the binaries. Grab the bitness you need to suit your compile.