Project

General

Profile

Feature #2244

Create an official portable Linux distribution

Added by Calinou about 5 years ago. Updated over 2 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
Enhancement
Target version:
Start date:
2017-04-08
% Done:

100%


Description

It would be nice to have an official portable Linux distribution, so that one can use Doomsday even if it's not in their distribution repositories. The goal is to be able to run Doomsday on any Linux distribution that's not very old (like, released after 2014 or so), without having to install any libraries or compile anything.

AppImage (http://appimage.org/) or Flatpak (http://flatpak.org/) are two potential solutions that can be used for this. I tend to have a preference for AppImage, mostly because it can be made to work on old distributions easier (from what I've heard; I don't have actual experience with Flatpak, but Flatpak seems to require a runtime, unlike AppImage which just needs FUSE support enabled). Other benefits of AppImage include:

  • optional desktop integration (desktop menu entries),
  • optional signing using GPG 2,
  • optional delta updates,
  • compression support,
  • an application is a single file (like macOS's .app files), so it's easy to copy/move around,

I can assist in doing this, I've already created AppImages for Godot Engine (https://godotengine.org/) and Minetest (http://www.minetest.net/). Many projects also officially use and support AppImages for their Linux distributions, such as Krita (https://krita.org/).

Associated revisions

Revision b4705500 (diff)
Added by skyjake about 5 years ago

Unix|libcore: DENG_BASE_DIR and DENG_LIBRARY_DIR may be relative paths

This allows compiling the application for relocatable use, since
built-in directories are looked up relative to the application binary.

IssueID #2244

Revision bbfa693e (diff)
Added by skyjake about 5 years ago

Unix|CMake: Added CMake variables for base and plugin directories

IssueID #2244

History

#1 Updated by skyjake about 5 years ago

  • Target version set to Build system and tools

AppImage sounds good to me. Doomsday is packaged using CMake + CPack. Do you have any insights into how an AppImage would be created out of that?

#2 Updated by skyjake about 5 years ago

  • Tags changed from linux to linux, Installer

#3 Updated by Calinou about 5 years ago

I don't know the details (I've never used CPack), however, do note that for AppImages to be truly portable, they need to be built on an old distribution (because packages built on recent distributions won't work on older ones).

But Doomsday requires CMake 3.1, which is not available in Debian 8 (https://packages.debian.org/search?keywords=cmake) nor Ubuntu 14.04 (http://packages.ubuntu.com/search?keywords=cmake). Either we have to perform some trickery to get CMake 3.1 (or later) to work on such old distributions, or we have to move our minimum version requirement to Ubuntu 16.04 (likely making it impossible for Ubuntu 14.04 and Debian 8 users to run the AppImages).

It's also possible to build AppImages from existing binaries as well. Lots of examples are available here: https://github.com/probonopd/AppImages

#4 Updated by skyjake about 5 years ago

  • Subject changed from Create an official portable Linux distribution to Create an official portable Linux distribution (AppImage)

Thanks for the links, they were informative. It looks like it should be pretty easy to make a YAML recipe that builds Doomsday from source and includes the appropriate dependencies.

I'll make a note to set up a Debian 8 VM and see how that would work. I can always compile the required version of CMake from source.

Is Debian 8 the Linux distribution you would recommend for the widest compatibility?

#5 Updated by skyjake about 5 years ago

  • Status changed from New to In Progress
  • % Done changed from 0 to 30
I've made some progress. I managed to create a functioning AppImage using the following steps:
  • Do a normal build with CMake and install it somewhere (using relative base/library dirs; b4705500).
  • Fix the .desktop file and icon file manually.
  • Run linuxdeployqt on it.

#6 Updated by skyjake over 2 years ago

  • Subject changed from Create an official portable Linux distribution (AppImage) to Create an official portable Linux distribution
  • Assignee set to skyjake
  • Target version changed from Build system and tools to 2.2 (2019)
  • % Done changed from 30 to 70

I've decided to go with Flatpak for now.

Flatpak manifest: https://git.skyjake.fi/doomsday/distrib/src/branch/master/flatpak/net.dengine.Doomsday.json

Some tweaks are still needed, though:
  • ☑️ Enable FluidSynth plugin (build from source)
  • Build with FMOD as well

#7 Updated by skyjake over 2 years ago

  • Status changed from In Progress to Resolved
  • % Done changed from 70 to 100

Added fluidsynth (2.0.9 built from source). Will leave out FMOD from this since it's closed source.

#8 Updated by skyjake over 2 years ago

  • Status changed from Resolved to In Progress
  • % Done changed from 100 to 90
There are actually a couple of further things:
  • ☑️ Prepare appdata XML for Flathub submission
  • Possible Autobuilder integration: make an unstable Flatpak module in addition to (or replacing) the other builds?

#9 Updated by skyjake over 2 years ago

  • Status changed from In Progress to Resolved
  • % Done changed from 90 to 100

#10 Updated by skyjake over 2 years ago

  • Status changed from Resolved to Closed

Also available in: Atom PDF