File: appimage.md

package info (click to toggle)
crawl 2%3A0.34.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 100,188 kB
  • sloc: cpp: 363,709; ansic: 27,765; javascript: 9,516; python: 8,463; perl: 3,293; java: 3,132; xml: 2,380; makefile: 1,835; sh: 611; objc: 250; cs: 15; sed: 9; lisp: 3
file content (83 lines) | stat: -rw-r--r-- 2,382 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# AppImage

## Contents

* [Introduction](#introduction)
* [Creating an AppImage](#creating-an-appimage)
* [How does it work?](#how-does-it-work)

## Introduction

AppImage is a format for distributing portable software on Linux without needing
superuser permissions to install the application. It tries also to allow Linux
distribution-agnostic binary software deployment for application developers,
also called upstream packaging.

AppImages are very simple to use, just two steps required:

1. Make it executable
2. Run

This can be done either with the command line or a GUI. It features some other
uses like mounting or desktop integration. You can browse the [AppImage
documentation](https://docs.appimage.org/) for more details.

## Creating an AppImage

When building Crawl for Linux targets, you can easily create an AppImage with
the help of the `linuxdeploy` tool.

1. [Download the linuxdeploy AppImage](
   https://github.com/linuxdeploy/linuxdeploy/releases)

2. Make it executable.

    ```sh
    chmod +x /path/to/linuxdeploy.AppImage
    ```

3. Follow the usual Linux compilation procedure and, when running `make`,
   include the `appimage` target and the path to `linuxdeploy` in the
   `LINUXDEPLOY` parameter.

    ```sh
    # console build
    make LINUXDEPLOY=/path/to/linuxdeploy.AppImage appimage
    # tiles build
    make TILES=y LINUXDEPLOY=/path/to/linuxdeploy.AppImage appimage
    ```

## How does it work?

Running

    ```sh
    make LINUXDEPLOY=/path/to/linuxdeploy.AppImage appimage
    ```

is roughly equivalent to

    ```sh
    make DESTDIR=appimage/ prefix=usr install install-xdg-data
    /path/to/linuxdeploy.AppImage --appdir appimage --output appimage
    ```

1. First, a normal Linux build is performed.

2. Crawl is installed under the `appimage/usr` directory, including the desktop
   files and AppStream metadata.

3. Then `linuxdeploy` reads the contents of the `appimage` directory and
   completes the basic AppDir structure.

4. The dependencies for the executable file are copied  to
   `appimage/usr/bin/lib`.

5. The AppDir root directory is completed with some resource files copied or
   symlinked.

6. The AppStream metadata is validated.

7. Finally, the `appimage` directory is packaged into a Squashfs filesystem.
   The resulting file will be named as:
   `stone_soup-<version>-linux-<tiles/console>.<arch>.AppImage`