diff options
author | Denis Ollier <larchunix@users.noreply.github.com> | 2017-11-11 00:38:20 +0300 |
---|---|---|
committer | Denis Ollier <larchunix@users.noreply.github.com> | 2017-11-11 00:38:20 +0300 |
commit | 64c091dd7e0ea7ad1fef910c0fa1759c205485d0 (patch) | |
tree | 60a08017698bebc85014f6e4849dbeb0054d0fc0 /flatpak | |
parent | d337eaefecff8a8aef3da3462241b4e3e7c38f0c (diff) |
flatpak: add manifest for flatpak-builder
Diffstat (limited to 'flatpak')
-rw-r--r-- | flatpak/README.md | 65 | ||||
-rw-r--r-- | flatpak/org.remmina.Remmina.json | 470 |
2 files changed, 535 insertions, 0 deletions
diff --git a/flatpak/README.md b/flatpak/README.md new file mode 100644 index 000000000..c80be3ae3 --- /dev/null +++ b/flatpak/README.md @@ -0,0 +1,65 @@ +Build instructions +------------------ + +1. Install `flatpak` and `flatpak-builder` ([instructions]). Remmina + Flatpak manifest requires `flatpak-builder` >= 0.9.1. + +[instructions]: http://flatpak.org/getting.html + +2. Enable GNOME Flatpak repository: + + flatpak --user remote-add --if-not-exists --from gnome https://sdk.gnome.org/gnome.flatpakrepo + +3. Install GNOME runtime (have a look to the file `org.remmina.Remmina.json` + to get the required version, e.g, `"runtime-version": "3.26"`): + + flatpak --user install gnome org.gnome.Platform//3.26 + flatpak --user install gnome org.gnome.Sdk//3.26 + +4. Build Remmina: + + flatpak-builder --repo=repo/ appdir/ org.remmina.Remmina.json + + Remmina will be built in `appdir/` folder and the result will be exported + to a local Flatpak repository in `repo/` folder. + +5. Enable the local repository: + + flatpak --user remote-add --no-gpg-verify --if-not-exists my-repo repo/ + +6. Install Remmina from your repository: + + flatpak --user install my-repo org.remmina.Remmina + +7. Launch Remmina + + flatpak run org.remmina.Remmina + +Limitations +----------- + +Several Remmina features are not enabled in Flatpak build: + +* SPICE USB redirection uses a small suid wrapper + (`spice-client-glib-usb-acl-helper`) which is inhibited by Flatpak + `bubblewrap` sandboxing. Therefore, this feature is not enabled. + +* Telepathy DBus activation would require some more files exported outside of + Flatpak. Hence, Telepathy plugin is not compiled. + +* File transfers of some plugins (SFTP, SPICE drag and drop...) are limited to + the files located in the user home directory (see below). + +Security considerations +----------------------- + +* Remmina's Flatpak sandbox is configured to give access to the user home + directory. You can share more folders or remove them by using the command + `flatpak override --[no]filesystem=<folder>`. + +* Because Xephyr version `1.17.0` and later don't work fine with `GtkSocket` + (see downstream and upstream bugs), Remmina's Flatpak bundles an out of date + version of Xephyr (`1.16.4`) for the XDMCP plugin. + + - https://github.com/FreeRDP/Remmina/issues/366 + - https://bugs.freedesktop.org/show_bug.cgi?id=91700 diff --git a/flatpak/org.remmina.Remmina.json b/flatpak/org.remmina.Remmina.json new file mode 100644 index 000000000..c284a8e30 --- /dev/null +++ b/flatpak/org.remmina.Remmina.json @@ -0,0 +1,470 @@ +{ + "app-id": "org.remmina.Remmina", + "runtime": "org.gnome.Platform", + "runtime-version": "3.26", + "sdk": "org.gnome.Sdk", + "build-options" : { + "cflags": "-O2 -g", + "cxxflags": "-O2 -g" + }, + "command": "remmina", + "rename-icon": "remmina", + "desktop-file-name-prefix": "(Flatpak) ", + "cleanup": [ + "*.a", + "*.la", + "/build-aux", + "/include", + "/lib/cmake", + "/lib/pkgconfig", + "/share/gtk-doc", + "/share/man", + "/share/pkgconfig" + ], + "finish-args": [ + "--own-name=org.remmina.Remmina", + /* X11 + XShm access */ + "--share=ipc", "--socket=x11", + /* Needs to talk to the network */ + "--share=network", + /* Play sounds redirected from guests */ + "--socket=pulseaudio", + /* Wayland access */ + "--socket=wayland", + /* File transfer (although limited to user directory) */ + "--filesystem=home", + /* Desktop notifications */ + "--talk-name=org.freedesktop.Notifications", + /* Needed to save login credentials */ + "--talk-name=org.freedesktop.secrets", + /* Appindicator */ + "--talk-name=org.kde.StatusNotifierWatcher", + /* Query GNOME Shell version (to display systray icon if supported) */ + "--talk-name=org.gnome.Shell", + /* Local network host discovery */ + "--system-talk-name=org.freedesktop.Avahi", + /* Needed for dconf to work */ + "--filesystem=xdg-run/dconf", "--filesystem=~/.config/dconf:ro", + "--talk-name=ca.desrt.dconf", "--env=DCONF_USER_CONFIG_DIR=.config/dconf" + ], + "modules": [ + { + "name": "libappindicator", + "build-options" : { + "cflags": "-O2 -g -Wno-error=deprecated-declarations" + }, + "config-opts": [ + "--disable-gtk-doc", + "--disable-introspection", + "--disable-tests", + "--disable-mono-tests", + "--with-gtk=3" + ], + "rm-configure": true, + "sources": [ + { + "type": "archive", + "url": "https://launchpad.net/libappindicator/12.10/12.10.0/+download/libappindicator-12.10.0.tar.gz", + "sha256": "d5907c1f98084acf28fd19593cb70672caa0ca1cf82d747ba6f4830d4cc3b49f" + }, + { + "type": "shell", + "commands": [ + "# Disable python bindings", + "sed -e '/APPINDICATOR_PYTHON/,/\\$PYGTK_CODEGEN/ d' -i configure.ac", + "sed -e '/bindings/ d' -e '/example/ d' -i Makefile.am" + ] + } + ], + "modules": [ + { + "name": "libdbusmenu", + "build-options" : { + "env": { + "HAVE_VALGRIND_FALSE": "#", + "HAVE_VALGRIND_TRUE": "" + } + }, + "cleanup": [ + "/libexec", + "/share/doc", + "/share/libdbusmenu" + ], + "config-opts": [ + "--disable-gtk-doc", + "--disable-introspection", + "--disable-vala", + "--disable-dumper", + "--disable-tests", + "--with-gtk=3" + ], + "sources": [ + { + "type": "archive", + "url": "https://launchpad.net/libdbusmenu/16.04/16.04.0/+download/libdbusmenu-16.04.0.tar.gz", + "sha256": "b9cc4a2acd74509435892823607d966d424bd9ad5d0b00938f27240a1bfa878a" + } + ] + }, + { + "name": "libindicator", + "build-options" : { + "cflags": "-O2 -g -Wno-error=deprecated-declarations" + }, + "cleanup": [ + "/libexec", + "/share/libindicator" + ], + "config-opts": [ + "--disable-tests", + "--with-gtk=3" + ], + "sources": [ + { + "type": "archive", + "url": "https://launchpad.net/libindicator/12.10/12.10.1/+download/libindicator-12.10.1.tar.gz", + "sha256": "b2d2e44c10313d5c9cd60db455d520f80b36dc39562df079a3f29495e8f9447f" + }, + { + "type": "shell", + "commands": [ + "# FTBFS fix", + "sed -e '/LIBINDICATOR_LIBS/ s/\\$LIBM/ $LIBM/' -i configure.ac" + ] + } + ] + } + ] + }, + { + "name": "avahi", + "cleanup": [ + "/bin", + "/lib/avahi", + "/share/applications/*.desktop", + "/share/avahi" + ], + "config-opts": [ + "--with-distro=none", + "--disable-gobject", + "--disable-introspection", + "--disable-qt3", + "--disable-qt4", + "--disable-gtk", + "--disable-libdaemon", + "--disable-python", + "--disable-pygobject", + "--disable-mono", + "--disable-monodoc", + "--disable-autoipd", + "--disable-doxygen-doc", + "--disable-doxygen-dot", + "--disable-doxygen-xml", + "--disable-doxygen-html", + "--disable-manpages", + "--disable-xmltoman" + ], + "sources": [ + { + "type": "archive", + "url": "https://www.avahi.org/download/avahi-0.7.tar.gz", + "sha256": "57a99b5dfe7fdae794e3d1ee7a62973a368e91e414bd0dfa5d84434de5b14804" + } + ] + }, + { + "name": "libxkbfile", + "sources": [ + { + "type": "archive", + "url": "https://xorg.freedesktop.org/releases/individual/lib/libxkbfile-1.0.9.tar.bz2", + "sha256": "51817e0530961975d9513b773960b4edd275f7d5c72293d5a151ed4f42aeb16a" + } + ] + }, + { + "name": "nxproxy", + "buildsystem": "simple", + "build-commands": [ + "make CONFIGURE='./configure --prefix=/app'", + "# Install target does a `gzip /app/share/man/man1/*.1`", + "rm -rf /app/share/man", + "make PREFIX=/app install", + "sed -e 's|/usr/lib/nx|/app/lib/nx|g' -i /app/bin/nxproxy" + ], + "sources": [ + { + "type": "archive", + "url": "https://code.x2go.org/releases/source/nx-libs/nx-libs-3.5.0.32-lite.tar.gz", + "sha256": "b5ab9f0ae35cdf6c3e26484d2a2ca55cd0225b6d8693f5544a096b19585bc50a" + } + ] + }, + { + "name": "freerdp", + "buildsystem": "cmake", + "cleanup": [ + "/bin", + "/lib/libwinpr-tools2.so*", + "/lib/libuwac0.so*" + ], + "config-opts": [ + "-DCMAKE_INSTALL_LIBDIR:PATH=/app/lib", + "-DWITH_CLIENT:BOOL=OFF", + "-DWITH_CUPS:BOOL=ON", + "-DWITH_JPEG:BOOL=ON", + "-DWITH_MANPAGES:BOOL=OFF", + "-DWITH_OSS:BOOL=OFF", + "-DWITH_PULSE:BOOL=ON", + "-DWITH_SERVER:BOOL=OFF" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/FreeRDP/FreeRDP.git", + "tag": "2.0.0-rc0" + } + ], + "modules": [ + { + /** + * libfreerdp use xprop to try to detect keyboard layout + */ + "name": "xprop", + "sources": [ + { + "type": "archive", + "url": "https://xorg.freedesktop.org/releases/individual/app/xprop-1.2.2.tar.bz2", + "sha256": "9bee88b1025865ad121f72d32576dd3027af1446774aa8300cce3c261d869bc6" + } + ] + } + ] + }, + { + "name": "spice-gtk", + "build-options": { + "env": { + "PYTHONPATH": "/app/build-aux" + } + }, + "cleanup": [ + "/bin", + "/share/vala" + ], + "config-opts": [ + "PYTHON=python3", + "--disable-controller", + "--disable-introspection", + "--disable-vala" + ], + "sources": [ + { + "type": "archive", + "url": "http://www.spice-space.org/download/gtk/spice-gtk-0.34.tar.bz2", + "sha256": "e9720e01165f8451c9f3f58ad50e3afb990993b81cc2db86b3661b7ac5b976ee" + } + ], + "modules": [ + { + "name": "python-pyparsing", + "buildsystem": "simple", + "build-commands": [ + "pip3 install --target=/app/build-aux ./pyparsing-2.2.0-py2.py3-none-any.whl" + ], + "sources": [ + { + "type": "file", + "url": "https://pypi.python.org/packages/6a/8a/718fd7d3458f9fab8e67186b00abdd345b639976bc7fb3ae722e1b026a50/pyparsing-2.2.0-py2.py3-none-any.whl", + "sha256": "fee43f17a9c4087e7ed1605bd6df994c6173c1e977d7ade7b651292fab2bd010" + } + ] + }, + { + "name": "python-six", + "buildsystem": "simple", + "build-commands": [ + "pip3 install --target=/app/build-aux ./six-1.11.0-py2.py3-none-any.whl" + ], + "sources": [ + { + "type": "file", + "url": "https://pypi.python.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl", + "sha256": "832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb" + } + ] + }, + { + "name": "lz4", + "buildsystem": "simple", + "build-commands": [ + "make -C lib lib", + "make -C lib PREFIX=/app install" + ], + "sources": [ + { + "type": "archive", + "url": "https://github.com/lz4/lz4/archive/v1.8.0/lz4-1.8.0.tar.gz", + "sha256": "2ca482ea7a9bb103603108b5a7510b7592b90158c151ff50a28f1ca8389fccf6" + } + ] + }, + { + "name": "spice-protocol", + "sources": [ + { + "type": "archive", + "url": "https://www.spice-space.org/download/releases/spice-protocol-0.12.13.tar.bz2", + "sha256": "89ee11b202d2268e061788e6ace114e1ff18c7620ae64d1ca3aba252ee7c9933" + } + ] + } + ] + }, + { + "name": "libssh", + "buildsystem": "cmake", + "builddir": true, + "config-opts": [ + "-DWITH_EXAMPLES:BOOL=OFF" + ], + "sources": [ + { + "type": "archive", + "url": "https://red.libssh.org/attachments/download/218/libssh-0.7.5.tar.xz", + "sha256": "54e86dd5dc20e5367e58f3caab337ce37675f863f80df85b6b1614966a337095" + } + ] + }, + { + /** + * Telepathy plugin would require the following files to be exported + * outside of flatpak: + * - ${XDG_DATA_DIR}//telepathy//clients//Remmina.client + * - ${XDG_DATA_DIR}//dbus-1//services//org.freedesktop.Telepathy.Client.Remmina.service + */ + "name": "telepathy-glib", + "disabled": true, + "config-opts": [ + "--disable-introspection" + ], + "sources": [ + { + "type": "archive", + "url": "https://telepathy.freedesktop.org/releases/telepathy-glib/telepathy-glib-0.24.1.tar.gz", + "sha256": "9e0df1d8f857e0270cf0b32e2d1ca5a24aa7282873361785d573f72ad7f7d5eb" + } + ] + }, + { + "name": "libvncserver", + "cleanup": [ + "/bin", + "/lib/libvncserver.so*" + ], + "sources": [ + { + "type": "archive", + "url": "https://github.com/LibVNC/libvncserver/archive/LibVNCServer-0.9.11.tar.gz", + "sha256": "193d630372722a532136fd25c5326b2ca1a636cbb8bf9bb115ef869c804d2894" + }, + { + "type": "shell", + "commands": [ + "sed -e '/AM_PATH_LIBGCRYPT/ s/.*/PKG_CHECK_MODULES([LIBGCRYPT], [libgcrypt >= 1.4.0])/' -i configure.ac" + ] + } + ] + }, + { + /** + * Xephyr version 1.17.0 and later don't work fine with GtkSocket, + * therefore we remain at version 1.16.4: + * - https://github.com//FreeRDP//Remmina//issues//366 + * - https://bugs.freedesktop.org//show_bug.cgi?id=91700 + */ + "name": "xephyr", + "config-opts": [ + "--enable-kdrive", + "--enable-kdrive-evdev", + "--disable-kdrive-kbd", + "--disable-kdrive-mouse", + "--enable-xephyr", + "--disable-xorg", + "--disable-xvfb", + "--disable-xnest", + "--disable-xquartz", + "--disable-xwayland", + "--disable-standalone-xpbproxy", + "--disable-xwin", + "--disable-xfake", + "--disable-xfbdev", + "--disable-dmx", + "--with-fontrootdir=/usr/share/fonts", + "--with-xkb-path=/usr/share/X11/xkb", + "--with-xkb-output=/var/lib/xkb" + ], + "sources": [ + { + "type": "archive", + "url": "https://xorg.freedesktop.org/releases/individual/xserver/xorg-server-1.16.4.tar.bz2", + "sha256": "abb6e1cc9213a9915a121f48576ff6739a0b8cdb3d32796f9a7743c9a6efc871" + } + ], + "modules": [ + { + "name": "libfontenc", + "config-opts": [ + "--with-fontrootdir=/usr/share/fonts" + ], + "sources": [ + { + "type": "archive", + "url": "https://xorg.freedesktop.org/releases/individual/lib/libfontenc-1.1.3.tar.bz2", + "sha256": "70588930e6fc9542ff38e0884778fbc6e6febf21adbab92fd8f524fe60aefd21" + } + ] + }, + { + "name": "libXfont", + "sources": [ + { + "type": "archive", + "url": "https://xorg.freedesktop.org/releases/individual/lib/libXfont-1.5.3.tar.bz2", + "sha256": "ab85c10fd2683481dfef672a77fe60e6a2039558cbc0e9bf56b5e1df471c93d0" + } + ] + }, + { + "name": "xkbcomp", + "config-opts": [ + "--with-xkb-config-root=/usr/share/X11/xkb" + ], + "sources": [ + { + "type": "archive", + "url": "https://xorg.freedesktop.org/releases/individual/app/xkbcomp-1.4.0.tar.bz2", + "sha256": "bc69c8748c03c5ad9afdc8dff9db11994dd871b614c65f8940516da6bf61ce6b" + } + ] + } + ] + }, + { + "name": "remmina", + "buildsystem": "cmake", + "config-opts": [ + "-DCMAKE_INSTALL_LIBDIR:PATH=/app/lib", + "-DWITH_MANPAGES:BOOL=OFF", + "-DWITH_TELEPATHY:BOOL=OFF" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/FreeRDP/Remmina.git", + "branch": "next" + } + ] + } + ] +} |