[PATCH 0/0]: Add remmina.

  • Done
  • quality assurance status badge
Details
2 participants
  • Leo Prikler
  • Raghav Gururajan
Owner
unassigned
Submitted by
Raghav Gururajan
Severity
normal
R
R
Raghav Gururajan wrote on 10 May 2021 05:05
(address . guix-patches@gnu.org)
70f225a0-3e3d-062c-510d-83c98cad7521@raghavgururajan.name
Hello Guix,

I am opening this thread for packaging of Remmina. which is a remote
desktop client.

This package is a candidate for the module rdesktop.scm. But if I add
#:use-module (gnu packages vnc), it causes cyclic-dependency. So I have
create a new module remmina.scm.

Regards,
RG.
Attachment: OpenPGP_signature
R
R
Raghav Gururajan wrote on 10 May 2021 05:10
[PATCH v1] gnu: Add remmina.
(address . 48326@debbugs.gnu.org)(name . Raghav Gururajan)(address . rg@raghavgururajan.name)
20210510031037.24394-1-rg@raghavgururajan.name
* gnu/packages/remmina.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
* gnu/packages/remmina.scm (remmina): New variable.
---
gnu/local.mk | 1 +
gnu/packages/remmina.scm | 146 +++++++++++++++++++++++++++++++++++++++
2 files changed, 147 insertions(+)
create mode 100644 gnu/packages/remmina.scm

Toggle diff (166 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 37166bb2fc..0f3d33e1d5 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -485,6 +485,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/readline.scm \
%D%/packages/rednotebook.scm \
%D%/packages/regex.scm \
+ %D%/packages/remmina.scm \
%D%/packages/robotics.scm \
%D%/packages/rpc.scm \
%D%/packages/rrdtool.scm \
diff --git a/gnu/packages/remmina.scm b/gnu/packages/remmina.scm
new file mode 100644
index 0000000000..ccc954e27f
--- /dev/null
+++ b/gnu/packages/remmina.scm
@@ -0,0 +1,146 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages remmina)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages)
+ #:use-module (guix git-download)
+ #:use-module (guix build utils)
+ #:use-module (guix build-system cmake)
+ #:use-module (guix build-system glib-or-gtk)
+ #:use-module (gnu packages avahi)
+ #:use-module (gnu packages crypto)
+ #:use-module (gnu packages cups)
+ #:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages gettext)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages gnome)
+ #:use-module (gnu packages gnupg)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages pcre)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages python)
+ #:use-module (gnu packages rdesktop)
+ #:use-module (gnu packages spice)
+ #:use-module (gnu packages ssh)
+ #:use-module (gnu packages tls)
+ #:use-module (gnu packages video)
+ #:use-module (gnu packages vnc)
+ #:use-module (gnu packages webkit)
+ #:use-module (gnu packages xorg))
+
+(define-public remmina
+ (package
+ (name "remmina")
+ (version "1.4.13")
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://gitlab.com/Remmina/Remmina")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1hc2r42hr34ksbxrybglw5caw0zjhwlybvb5c9s99dr761rmzr27"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:tests? #f ; No target
+ #:configure-flags
+ (list
+ "-DWITH_NEWS=OFF" ; Disable online version checking
+ "-DWITH_FREERDP3=OFF" ; Not available in guix
+ "-DWITH_PYTHONLIBS=ON") ; Enable python-plugins support
+ #:imported-modules
+ (,@%cmake-build-system-modules
+ (guix build glib-or-gtk-build-system))
+ #:modules
+ ((guix build cmake-build-system)
+ ((guix build glib-or-gtk-build-system)
+ #:prefix glib-or-gtk:)
+ (guix build utils))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'wrap-progs
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (for-each
+ (lambda (name)
+ (let ((file (string-append out "/bin/" name))
+ (gi-typelib-path (getenv "GI_TYPELIB_PATH"))
+ (pythonpath (getenv "PYTHONPATH")))
+ (wrap-program file
+ `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
+ `("PYTHONPATH" ":" prefix (,pythonpath)))))
+ '("remmina" "remmina-file-wrapper")))
+ #t))
+ (add-after 'wrap-progs 'glib-or-gtk-compile-schemas
+ (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
+ (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
+ (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
+ (native-inputs
+ `(("gettext" ,gettext-minimal)
+ ("glib:bin" ,glib "bin")
+ ("gobject-introspection" ,gobject-introspection)
+ ("gtk+:bin" ,gtk+ "bin")
+ ("intl" ,intltool)
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("app-indicator" ,libappindicator)
+ ("atk" ,atk)
+ ("avahi" ,avahi)
+ ("cairo" ,cairo)
+ ("cups" ,cups)
+ ("dconf" ,dconf)
+ ("ffmpeg" ,ffmpeg)
+ ("freerdp2" ,freerdp)
+ ;; ("freerdp3" ,freerdp)
+ ("gcrypt" ,libgcrypt)
+ ("gdk-pixbuf" ,gdk-pixbuf+svg)
+ ("glib" ,glib)
+ ("gnome-keyring" ,gnome-keyring)
+ ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+ ("gtk+" ,gtk+)
+ ("harfbuzz" ,harfbuzz)
+ ("json-glib" ,json-glib)
+ ("libsecret" ,libsecret)
+ ("libsoup" ,libsoup)
+ ("libssh" ,libssh)
+ ("libvnc" ,libvnc)
+ ("openssl" ,openssl)
+ ("pango" ,pango)
+ ("pcre" ,pcre)
+ ("python" ,python)
+ ("shared-mime-info" ,shared-mime-info)
+ ("sodium" ,libsodium)
+ ("spice-client-gtk" ,spice-gtk)
+ ("telepathy" ,telepathy-glib)
+ ("vte" ,vte)
+ ("wayland" ,wayland)
+ ("webkitgtk" ,webkitgtk)
+ ("x11" ,libx11)
+ ("xext" ,libxext)
+ ("xdg-utils" ,xdg-utils)
+ ("xkbfile" ,libxkbfile)))
+ (propagated-inputs
+ `(("dconf" ,dconf)))
+ (home-page "https://remmina.org/")
+ (synopsis "Remote Desktop Client")
+ (description "Remmina is a client to use other desktops remotely.
+RDP, VNC, SPICE, NX, XDMCP, SSH and EXEC network protocols are supported.")
+ (license license:gpl2+)))
--
2.31.1
R
R
Raghav Gururajan wrote on 10 May 2021 17:06
[PATCH v2] gnu: Add remmina.
(address . 48326@debbugs.gnu.org)(name . Raghav Gururajan)(address . rg@raghavgururajan.name)
20210510150631.2510-1-rg@raghavgururajan.name
* gnu/packages/remmina.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
* gnu/packages/remmina.scm (remmina): New variable.
---
gnu/local.mk | 1 +
gnu/packages/remmina.scm | 139 +++++++++++++++++++++++++++++++++++++++
2 files changed, 140 insertions(+)
create mode 100644 gnu/packages/remmina.scm

Toggle diff (159 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 37166bb2fc..0f3d33e1d5 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -485,6 +485,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/readline.scm \
%D%/packages/rednotebook.scm \
%D%/packages/regex.scm \
+ %D%/packages/remmina.scm \
%D%/packages/robotics.scm \
%D%/packages/rpc.scm \
%D%/packages/rrdtool.scm \
diff --git a/gnu/packages/remmina.scm b/gnu/packages/remmina.scm
new file mode 100644
index 0000000000..5a438c8b30
--- /dev/null
+++ b/gnu/packages/remmina.scm
@@ -0,0 +1,139 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages remmina)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages)
+ #:use-module (guix git-download)
+ #:use-module (guix build utils)
+ #:use-module (guix build-system cmake)
+ #:use-module (guix build-system glib-or-gtk)
+ #:use-module (gnu packages avahi)
+ #:use-module (gnu packages crypto)
+ #:use-module (gnu packages cups)
+ #:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages gettext)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages gnome)
+ #:use-module (gnu packages gnupg)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages pcre)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages rdesktop)
+ #:use-module (gnu packages spice)
+ #:use-module (gnu packages ssh)
+ #:use-module (gnu packages tls)
+ #:use-module (gnu packages video)
+ #:use-module (gnu packages vnc)
+ #:use-module (gnu packages webkit)
+ #:use-module (gnu packages xorg))
+
+(define-public remmina
+ (package
+ (name "remmina")
+ (version "1.4.13")
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://gitlab.com/Remmina/Remmina")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1hc2r42hr34ksbxrybglw5caw0zjhwlybvb5c9s99dr761rmzr27"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:tests? #f ; No target
+ #:configure-flags
+ (list
+ "-DWITH_NEWS=OFF") ; Disable online version checking
+ #:imported-modules
+ (,@%cmake-build-system-modules
+ (guix build glib-or-gtk-build-system))
+ #:modules
+ ((guix build cmake-build-system)
+ ((guix build glib-or-gtk-build-system)
+ #:prefix glib-or-gtk:)
+ (guix build utils))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'wrap-progs
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (for-each
+ (lambda (name)
+ (let ((file (string-append out "/bin/" name))
+ (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
+ (wrap-program file
+ `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
+ '("remmina" "remmina-file-wrapper")))
+ #t))
+ (add-after 'wrap-progs 'glib-or-gtk-compile-schemas
+ (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
+ (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
+ (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
+ (native-inputs
+ `(("gettext" ,gettext-minimal)
+ ("glib:bin" ,glib "bin")
+ ("gobject-introspection" ,gobject-introspection)
+ ("gtk+:bin" ,gtk+ "bin")
+ ("intl" ,intltool)
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("app-indicator" ,libappindicator)
+ ("atk" ,atk)
+ ("avahi" ,avahi)
+ ("cairo" ,cairo)
+ ("cups" ,cups)
+ ("dconf" ,dconf)
+ ("ffmpeg" ,ffmpeg)
+ ("freerdp" ,freerdp)
+ ("gcrypt" ,libgcrypt)
+ ("gdk-pixbuf" ,gdk-pixbuf+svg)
+ ("glib" ,glib)
+ ("gnome-keyring" ,gnome-keyring)
+ ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+ ("gtk+" ,gtk+)
+ ("harfbuzz" ,harfbuzz)
+ ("json-glib" ,json-glib)
+ ("libsecret" ,libsecret)
+ ("libsoup" ,libsoup)
+ ("libssh" ,libssh)
+ ("libvnc" ,libvnc)
+ ("openssl" ,openssl)
+ ("pango" ,pango)
+ ("pcre" ,pcre)
+ ("shared-mime-info" ,shared-mime-info)
+ ("sodium" ,libsodium)
+ ("spice-client-gtk" ,spice-gtk)
+ ("telepathy" ,telepathy-glib)
+ ("vte" ,vte)
+ ("wayland" ,wayland)
+ ("webkitgtk" ,webkitgtk)
+ ("x11" ,libx11)
+ ("xext" ,libxext)
+ ("xdg-utils" ,xdg-utils)
+ ("xkbfile" ,libxkbfile)))
+ (propagated-inputs
+ `(("dconf" ,dconf)))
+ (home-page "https://remmina.org/")
+ (synopsis "Remote Desktop Client")
+ (description "Remmina is a client to use other desktops remotely.
+RDP, VNC, SPICE, NX, XDMCP, SSH and EXEC network protocols are supported.")
+ (license license:gpl2+)))
--
2.31.1
R
R
Raghav Gururajan wrote on 10 May 2021 19:01
[PATCH v3] gnu: Add remmina.
(address . 48326@debbugs.gnu.org)(name . Raghav Gururajan)(address . rg@raghavgururajan.name)
20210510170110.4693-1-rg@raghavgururajan.name
* gnu/packages/remmina.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
* gnu/packages/remmina.scm (remmina): New variable.
---
gnu/local.mk | 1 +
gnu/packages/remmina.scm | 159 +++++++++++++++++++++++++++++++++++++++
2 files changed, 160 insertions(+)
create mode 100644 gnu/packages/remmina.scm

Toggle diff (179 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 37166bb2fc..0f3d33e1d5 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -485,6 +485,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/readline.scm \
%D%/packages/rednotebook.scm \
%D%/packages/regex.scm \
+ %D%/packages/remmina.scm \
%D%/packages/robotics.scm \
%D%/packages/rpc.scm \
%D%/packages/rrdtool.scm \
diff --git a/gnu/packages/remmina.scm b/gnu/packages/remmina.scm
new file mode 100644
index 0000000000..8309cb88af
--- /dev/null
+++ b/gnu/packages/remmina.scm
@@ -0,0 +1,159 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages remmina)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages)
+ #:use-module (guix git-download)
+ #:use-module (guix build utils)
+ #:use-module (guix build-system cmake)
+ #:use-module (guix build-system glib-or-gtk)
+ #:use-module (gnu packages avahi)
+ #:use-module (gnu packages crypto)
+ #:use-module (gnu packages cups)
+ #:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages gettext)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages gnome)
+ #:use-module (gnu packages gnupg)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages pcre)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages rdesktop)
+ #:use-module (gnu packages spice)
+ #:use-module (gnu packages ssh)
+ #:use-module (gnu packages tls)
+ #:use-module (gnu packages video)
+ #:use-module (gnu packages vnc)
+ #:use-module (gnu packages webkit)
+ #:use-module (gnu packages xorg))
+
+(define-public remmina
+ (package
+ (name "remmina")
+ (version "1.4.13")
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://gitlab.com/Remmina/Remmina")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1hc2r42hr34ksbxrybglw5caw0zjhwlybvb5c9s99dr761rmzr27"))))
+ (build-system cmake-build-system)
+ (outputs '("out" "plugins"))
+ (arguments
+ `(#:tests? #f ; No target
+ #:configure-flags
+ (list
+ "-DWITH_NEWS=OFF") ; Disable online version checking
+ #:imported-modules
+ (,@%cmake-build-system-modules
+ (guix build glib-or-gtk-build-system))
+ #:modules
+ ((guix build cmake-build-system)
+ ((guix build glib-or-gtk-build-system)
+ #:prefix glib-or-gtk:)
+ (guix build utils))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "CMakeLists.txt"
+ ;; To install plugins in separate output.
+ (("\\$\\{CMAKE_INSTALL_FULL_LIBDIR\\}/remmina/plugins")
+ (string-append (assoc-ref outputs "plugins")
+ "/lib/remmina/plugins"))
+ ;; To prevent REMMINA_RUNTIME_PLUGINDIR set as RPATH.
+ ;; Else, it causes cycle between outputs.
+ (("[ \t]*set.*REMMINA_RUNTIME_PLUGINDIR.*$")
+ ""))))
+ (add-after 'install 'wrap-progs
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (for-each
+ (lambda (name)
+ (let ((file (string-append out "/bin/" name))
+ (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
+ (wrap-program file
+ `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
+ '("remmina" "remmina-file-wrapper")))
+ #t))
+ (add-after 'wrap-progs 'glib-or-gtk-compile-schemas
+ (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
+ (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
+ (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
+ (native-inputs
+ `(("gettext" ,gettext-minimal)
+ ("glib:bin" ,glib "bin")
+ ("gobject-introspection" ,gobject-introspection)
+ ("gtk+:bin" ,gtk+ "bin")
+ ("intl" ,intltool)
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("app-indicator" ,libappindicator)
+ ("atk" ,atk)
+ ("avahi" ,avahi)
+ ("cairo" ,cairo)
+ ("cups" ,cups)
+ ("ffmpeg" ,ffmpeg)
+ ("freerdp" ,freerdp) ; for rdp plugin
+ ("gcrypt" ,libgcrypt)
+ ("gdk-pixbuf" ,gdk-pixbuf+svg)
+ ("glib" ,glib)
+ ("gnome-keyring" ,gnome-keyring)
+ ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+ ("gtk+" ,gtk+)
+ ("harfbuzz" ,harfbuzz)
+ ("json-glib" ,json-glib)
+ ("libsecret" ,libsecret) ; for secret plugin
+ ("libsoup" ,libsoup)
+ ("libssh" ,libssh) ; for ssh plugin
+ ("libvnc" ,libvnc) ; for vnc plugin
+ ("openssl" ,openssl)
+ ("pango" ,pango)
+ ("pcre" ,pcre)
+ ("shared-mime-info" ,shared-mime-info)
+ ("sodium" ,libsodium)
+ ("spice-client-gtk" ,spice-gtk) ; for spice plugin
+ ("telepathy" ,telepathy-glib) ; for telepathy plugin
+ ("vte" ,vte)
+ ("wayland" ,wayland)
+ ("webkitgtk" ,webkitgtk) ; for www plugin
+ ("x11" ,libx11)
+ ("xext" ,libxext) ; for xdmcp plugin
+ ("xdg-utils" ,xdg-utils)
+ ("xkbfile" ,libxkbfile))) ; for nx plugin
+ (propagated-inputs
+ `(("dconf" ,dconf)))
+ (native-search-paths
+ (list
+ ;; To load plugins when installed via 'plugin' output.
+ (search-path-specification
+ (variable "REMMINA_RUNTIME_PLUGINDIR")
+ (files
+ (list
+ "lib/remmina/plugins")))))
+ (search-paths native-search-paths)
+ (home-page "https://remmina.org/")
+ (synopsis "Remote Desktop Client")
+ (description "Remmina is a client to use other desktops remotely.
+RDP, VNC, SPICE, NX, XDMCP, SSH and EXEC network protocols are supported.")
+ (license license:gpl2+)))
--
2.31.1
R
R
Raghav Gururajan wrote on 11 May 2021 01:33
[PATCH v4] gnu: Add remmina.
(address . 48326@debbugs.gnu.org)(name . Raghav Gururajan)(address . rg@raghavgururajan.name)
20210510233322.14607-1-rg@raghavgururajan.name
* gnu/packages/remmina.scm: New file.
* gnu/packages/patches/remmina-plugin-path.patch: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES,dist_path_DATA): Adjust.
* gnu/packages/remmina.scm (remmina): New variable.
---
gnu/local.mk | 2 +
.../patches/remmina-plugin-path.patch | 79 +++++++++
gnu/packages/remmina.scm | 158 ++++++++++++++++++
3 files changed, 239 insertions(+)
create mode 100644 gnu/packages/patches/remmina-plugin-path.patch
create mode 100644 gnu/packages/remmina.scm

Toggle diff (271 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 37166bb2fc..3608f6e798 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -485,6 +485,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/readline.scm \
%D%/packages/rednotebook.scm \
%D%/packages/regex.scm \
+ %D%/packages/remmina.scm \
%D%/packages/robotics.scm \
%D%/packages/rpc.scm \
%D%/packages/rrdtool.scm \
@@ -1643,6 +1644,7 @@ dist_patch_DATA = \
%D%/packages/patches/rct-add-missing-headers.patch \
%D%/packages/patches/readline-link-ncurses.patch \
%D%/packages/patches/readline-6.2-CVE-2014-2524.patch \
+ %D%/packages/patches/remmina-plugin-path.patch \
%D%/packages/patches/renpy-use-system-fribidi.patch \
%D%/packages/patches/reposurgeon-add-missing-docbook-files.patch \
%D%/packages/patches/r-httpuv-1.5.5-unvendor-libuv.patch \
diff --git a/gnu/packages/patches/remmina-plugin-path.patch b/gnu/packages/patches/remmina-plugin-path.patch
new file mode 100644
index 0000000000..ce382be57a
--- /dev/null
+++ b/gnu/packages/patches/remmina-plugin-path.patch
@@ -0,0 +1,79 @@
+From e6e3c454e380bc1e55a719907df43f73f491fca2 Mon Sep 17 00:00:00 2001
+From: Raghav Gururajan <rg@raghavgururajan.name>
+Date: Mon, 10 May 2021 18:21:02 -0400
+Subject: [PATCH] [PATCH]: Change path variable for loading plugins.
+
+Remmina is coded to load plugins from path (REMMINA_RUNTIME_PLUGINDIR)
+provided during compile-time. This causes cycle between outputs 'out'
+and 'plugins'. Therefore, code it to load plugins from path
+(REMMINA_PLUGIN_PATH) provided during run-time.
+---
+ CMakeLists.txt | 3 ---
+ config.h.in | 1 -
+ src/remmina_plugin_manager.c | 10 ++++++----
+ 3 files changed, 6 insertions(+), 8 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 17a58b04..acbbe440 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -313,9 +313,6 @@ if(NOT REMMINA_LOCALEDIR)
+ endif()
+ if(NOT REMMINA_PLUGINDIR)
+ set(REMMINA_PLUGINDIR "${CMAKE_INSTALL_FULL_LIBDIR}/remmina/plugins")
+- if(NOT REMMINA_RUNTIME_PLUGINDIR)
+- set(REMMINA_RUNTIME_PLUGINDIR "${REMMINA_PLUGINDIR}")
+- endif()
+ endif()
+ if(NOT REMMINA_UIDIR)
+ set(REMMINA_UIDIR "${REMMINA_DATADIR}/remmina/ui")
+diff --git a/config.h.in b/config.h.in
+index e59bf78a..8e8da940 100644
+--- a/config.h.in
++++ b/config.h.in
+@@ -22,7 +22,6 @@
+
+ #define REMMINA_RUNTIME_DATADIR "${REMMINA_RUNTIME_DATADIR}"
+ #define REMMINA_RUNTIME_LOCALEDIR "${REMMINA_RUNTIME_LOCALEDIR}"
+-#define REMMINA_RUNTIME_PLUGINDIR "${REMMINA_RUNTIME_PLUGINDIR}"
+ #define REMMINA_RUNTIME_UIDIR "${REMMINA_RUNTIME_UIDIR}"
+ #define REMMINA_RUNTIME_THEMEDIR "${REMMINA_RUNTIME_THEMEDIR}"
+ #define REMMINA_RUNTIME_EXTERNAL_TOOLS_DIR "${REMMINA_RUNTIME_EXTERNAL_TOOLS_DIR}"
+diff --git a/src/remmina_plugin_manager.c b/src/remmina_plugin_manager.c
+index a1b713a8..74e2c0f0 100644
+--- a/src/remmina_plugin_manager.c
++++ b/src/remmina_plugin_manager.c
+@@ -294,7 +294,7 @@ void remmina_plugin_manager_init()
+ {
+ TRACE_CALL(__func__);
+ GDir *dir;
+- const gchar *name, *ptr;
++ const gchar *remmina_plugin_path, *name, *ptr;
+ gchar *fullpath;
+ RemminaPlugin *plugin;
+ RemminaSecretPlugin *sp;
+@@ -312,8 +312,10 @@ void remmina_plugin_manager_init()
+ return;
+ }
+
+- g_print("Load modules from %s\n", REMMINA_RUNTIME_PLUGINDIR);
+- dir = g_dir_open(REMMINA_RUNTIME_PLUGINDIR, 0, NULL);
++ remmina_plugin_path = g_getenv("REMMINA_PLUGIN_PATH");
++
++ g_print("Load modules from %s\n", remmina_plugin_path);
++ dir = g_dir_open(remmina_plugin_path, 0, NULL);
+
+ if (dir == NULL)
+ return;
+@@ -323,7 +325,7 @@ void remmina_plugin_manager_init()
+ ptr++;
+ if (!remmina_plugin_manager_loader_supported(ptr))
+ continue;
+- fullpath = g_strdup_printf(REMMINA_RUNTIME_PLUGINDIR "/%s", name);
++ fullpath = g_strconcat(remmina_plugin_path, "/", name);
+ remmina_plugin_manager_load_plugin(fullpath);
+ g_free(fullpath);
+ }
+--
+2.31.1
+
diff --git a/gnu/packages/remmina.scm b/gnu/packages/remmina.scm
new file mode 100644
index 0000000000..9611ff2513
--- /dev/null
+++ b/gnu/packages/remmina.scm
@@ -0,0 +1,158 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages remmina)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages)
+ #:use-module (guix git-download)
+ #:use-module (guix build utils)
+ #:use-module (guix build-system cmake)
+ #:use-module (guix build-system glib-or-gtk)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages avahi)
+ #:use-module (gnu packages crypto)
+ #:use-module (gnu packages cups)
+ #:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages gettext)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages gnome)
+ #:use-module (gnu packages gnupg)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages pcre)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages rdesktop)
+ #:use-module (gnu packages spice)
+ #:use-module (gnu packages ssh)
+ #:use-module (gnu packages tls)
+ #:use-module (gnu packages video)
+ #:use-module (gnu packages vnc)
+ #:use-module (gnu packages webkit)
+ #:use-module (gnu packages xorg))
+
+(define-public remmina
+ (package
+ (name "remmina")
+ (version "1.4.13")
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://gitlab.com/Remmina/Remmina")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (patches
+ (search-patches
+ ;; To honor REMMINA_PLUGIN_PATH.
+ "remmina-plugin-path.patch"))
+ (sha256
+ (base32 "1hc2r42hr34ksbxrybglw5caw0zjhwlybvb5c9s99dr761rmzr27"))))
+ (build-system cmake-build-system)
+ (outputs '("out" "plugins"))
+ (arguments
+ `(#:tests? #f ; No target
+ #:configure-flags
+ (list
+ ;; Install plugins in separate output.
+ (string-append "-DREMMINA_PLUGINDIR="
+ (assoc-ref %outputs "plugins")
+ "/lib/remmina/plugins")
+ ;; Disable online version checking.
+ "-DWITH_NEWS=OFF")
+ #:imported-modules
+ (,@%cmake-build-system-modules
+ (guix build glib-or-gtk-build-system))
+ #:modules
+ ((guix build cmake-build-system)
+ ((guix build glib-or-gtk-build-system)
+ #:prefix glib-or-gtk:)
+ (guix build utils))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'wrap-progs
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (for-each
+ (lambda (name)
+ (let ((file (string-append out "/bin/" name))
+ (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
+ (wrap-program file
+ `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
+ '("remmina" "remmina-file-wrapper")))
+ #t))
+ (add-after 'wrap-progs 'glib-or-gtk-compile-schemas
+ (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
+ (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
+ (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
+ (native-inputs
+ `(("gettext" ,gettext-minimal)
+ ("glib:bin" ,glib "bin")
+ ("gobject-introspection" ,gobject-introspection)
+ ("gtk+:bin" ,gtk+ "bin")
+ ("intl" ,intltool)
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("app-indicator" ,libappindicator)
+ ("atk" ,atk)
+ ("avahi" ,avahi)
+ ("cairo" ,cairo)
+ ("cups" ,cups)
+ ("ffmpeg" ,ffmpeg)
+ ("freerdp" ,freerdp) ; for rdp plugin
+ ("gcrypt" ,libgcrypt)
+ ("gdk-pixbuf" ,gdk-pixbuf+svg)
+ ("glib" ,glib)
+ ("gnome-keyring" ,gnome-keyring)
+ ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+ ("gtk+" ,gtk+)
+ ("harfbuzz" ,harfbuzz)
+ ("json-glib" ,json-glib)
+ ("libsecret" ,libsecret) ; for secret plugin
+ ("libsoup" ,libsoup)
+ ("libssh" ,libssh) ; for ssh plugin
+ ("libvnc" ,libvnc) ; for vnc plugin
+ ("openssl" ,openssl)
+ ("pango" ,pango)
+ ("pcre" ,pcre)
+ ("shared-mime-info" ,shared-mime-info)
+ ("sodium" ,libsodium)
+ ("spice-client-gtk" ,spice-gtk) ; for spice plugin
+ ("telepathy" ,telepathy-glib) ; for telepathy plugin
+ ("vte" ,vte)
+ ("wayland" ,wayland)
+ ("webkitgtk" ,webkitgtk) ; for www plugin
+ ("x11" ,libx11)
+ ("xext" ,libxext) ; for xdmcp plugin
+ ("xdg-utils" ,xdg-utils)
+ ("xkbfile" ,libxkbfile))) ; for nx plugin
+ (propagated-inputs
+ `(("dconf" ,dconf)))
+ (native-search-paths
+ (list
+ ;; To load plugins when installed via 'plugins' output.
+ (search-path-specification
+ (variable "REMMINA_PLUGIN_PATH")
+ (files
+ (list
+ "lib/remmina/plugins")))))
+ (search-paths native-search-paths)
+ (home-page "https://remmina.org/")
+ (synopsis "Remote Desktop Client")
+ (description "Remmina is a client to use other desktops remotely.
+RDP, VNC, SPICE, NX, XDMCP, SSH and EXEC network protocols are supported.")
+ (license license:gpl2+)))
--
2.31.1
L
L
Leo Prikler wrote on 11 May 2021 08:02
25a72e63e9807e531756e80952360f67260b4e80.camel@student.tugraz.at
Am Montag, den 10.05.2021, 19:33 -0400 schrieb Raghav Gururajan:
Toggle quote (1 lines)
> * gnu/packages/remmina.scm: New file.
I don't think an extra file is needed here. Remmina can fit quite well
to the other VNC clients.
Toggle quote (2 lines)
> * gnu/packages/patches/remmina-plugin-path.patch: New file.
> * gnu/local.mk (GNU_SYSTEM_MODULES,dist_path_DATA): Adjust.
Adjust how?
Toggle quote (1 lines)
> * gnu/packages/remmina.scm (remmina): New variable.
You already have remmina.scm in your ChangeLog.
Toggle quote (116 lines)
> ---
> gnu/local.mk | 2 +
> .../patches/remmina-plugin-path.patch | 79 +++++++++
> gnu/packages/remmina.scm | 158
> ++++++++++++++++++
> 3 files changed, 239 insertions(+)
> create mode 100644 gnu/packages/patches/remmina-plugin-path.patch
> create mode 100644 gnu/packages/remmina.scm
>
> diff --git a/gnu/local.mk b/gnu/local.mk
> index 37166bb2fc..3608f6e798 100644
> --- a/gnu/local.mk
> +++ b/gnu/local.mk
> @@ -485,6 +485,7 @@ GNU_SYSTEM_MODULES =
> \
> %D%/packages/readline.scm \
> %D%/packages/rednotebook.scm \
> %D%/packages/regex.scm \
> + %D%/packages/remmina.scm \
> %D%/packages/robotics.scm \
> %D%/packages/rpc.scm \
> %D%/packages/rrdtool.scm \
> @@ -1643,6 +1644,7 @@ dist_patch_DATA =
> \
> %D%/packages/patches/rct-add-missing-headers.patch \
> %D%/packages/patches/readline-link-ncurses.patch \
> %D%/packages/patches/readline-6.2-CVE-2014-2524.patch
> \
> + %D%/packages/patches/remmina-plugin-path.patch \
> %D%/packages/patches/renpy-use-system-fribidi.patch
> \
> %D%/packages/patches/reposurgeon-add-missing-docbook-files.patch
> \
> %D%/packages/patches/r-httpuv-1.5.5-unvendor-libuv.patch \
> diff --git a/gnu/packages/patches/remmina-plugin-path.patch
> b/gnu/packages/patches/remmina-plugin-path.patch
> new file mode 100644
> index 0000000000..ce382be57a
> --- /dev/null
> +++ b/gnu/packages/patches/remmina-plugin-path.patch
> @@ -0,0 +1,79 @@
> +From e6e3c454e380bc1e55a719907df43f73f491fca2 Mon Sep 17 00:00:00
> 2001
> +From: Raghav Gururajan <rg@raghavgururajan.name>
> +Date: Mon, 10 May 2021 18:21:02 -0400
> +Subject: [PATCH] [PATCH]: Change path variable for loading plugins.
> +
> +Remmina is coded to load plugins from path
> (REMMINA_RUNTIME_PLUGINDIR)
> +provided during compile-time. This causes cycle between outputs
> 'out'
> +and 'plugins'. Therefore, code it to load plugins from path
> +(REMMINA_PLUGIN_PATH) provided during run-time.
> +---
> + CMakeLists.txt | 3 ---
> + config.h.in | 1 -
> + src/remmina_plugin_manager.c | 10 ++++++----
> + 3 files changed, 6 insertions(+), 8 deletions(-)
> +
> +diff --git a/CMakeLists.txt b/CMakeLists.txt
> +index 17a58b04..acbbe440 100644
> +--- a/CMakeLists.txt
> ++++ b/CMakeLists.txt
> +@@ -313,9 +313,6 @@ if(NOT REMMINA_LOCALEDIR)
> + endif()
> + if(NOT REMMINA_PLUGINDIR)
> + set(REMMINA_PLUGINDIR
> "${CMAKE_INSTALL_FULL_LIBDIR}/remmina/plugins")
> +- if(NOT REMMINA_RUNTIME_PLUGINDIR)
> +- set(REMMINA_RUNTIME_PLUGINDIR "${REMMINA_PLUGINDIR}")
> +- endif()
> + endif()
> + if(NOT REMMINA_UIDIR)
> + set(REMMINA_UIDIR "${REMMINA_DATADIR}/remmina/ui")
> +diff --git a/config.h.in b/config.h.in
> +index e59bf78a..8e8da940 100644
> +--- a/config.h.in
> ++++ b/config.h.in
> +@@ -22,7 +22,6 @@
> +
> + #define REMMINA_RUNTIME_DATADIR "${REMMINA_RUNT
> IME_DATADIR}"
> + #define REMMINA_RUNTIME_LOCALEDIR "${REMMINA_RUNTIME_LOCA
> LEDIR}"
> +-#define REMMINA_RUNTIME_PLUGINDIR "${REMMINA_RUNTIME_PLUG
> INDIR}"
> + #define REMMINA_RUNTIME_UIDIR "${REMMINA_RUNT
> IME_UIDIR}"
> + #define REMMINA_RUNTIME_THEMEDIR "${REMMINA_RUNTIME_THEM
> EDIR}"
> + #define REMMINA_RUNTIME_EXTERNAL_TOOLS_DIR "${REMMINA_RUNTIME_EXTE
> RNAL_TOOLS_DIR}"
> +diff --git a/src/remmina_plugin_manager.c
> b/src/remmina_plugin_manager.c
> +index a1b713a8..74e2c0f0 100644
> +--- a/src/remmina_plugin_manager.c
> ++++ b/src/remmina_plugin_manager.c
> +@@ -294,7 +294,7 @@ void remmina_plugin_manager_init()
> + {
> + TRACE_CALL(__func__);
> + GDir *dir;
> +- const gchar *name, *ptr;
> ++ const gchar *remmina_plugin_path, *name, *ptr;
> + gchar *fullpath;
> + RemminaPlugin *plugin;
> + RemminaSecretPlugin *sp;
> +@@ -312,8 +312,10 @@ void remmina_plugin_manager_init()
> + return;
> + }
> +
> +- g_print("Load modules from %s\n", REMMINA_RUNTIME_PLUGINDIR);
> +- dir = g_dir_open(REMMINA_RUNTIME_PLUGINDIR, 0, NULL);
> ++ remmina_plugin_path = g_getenv("REMMINA_PLUGIN_PATH");
> ++
> ++ g_print("Load modules from %s\n", remmina_plugin_path);
> ++ dir = g_dir_open(remmina_plugin_path, 0, NULL);
I don't think this does, what you think it does.
"REMMINA_PLUGIN_PATH" is here interpreted as a single directory; usage
as a PATH variable is therefore dangerous. (Consider a setting, where
REMINA_PLUGIN_PATH="guix-profile-a/...:guix-profile-b/...")

Also consider packages like Emacs, where the inclusion of their own
outputs in their path variables was dangerous. (Although in this case,
it's probably sane, since you're using an extra output, but do verify
Remmina to work as intended without it.)
Toggle quote (192 lines)
> +
> + if (dir == NULL)
> + return;
> +@@ -323,7 +325,7 @@ void remmina_plugin_manager_init()
> + ptr++;
> + if (!remmina_plugin_manager_loader_supported(ptr))
> + continue;
> +- fullpath = g_strdup_printf(REMMINA_RUNTIME_PLUGINDIR
> "/%s", name);
> ++ fullpath = g_strconcat(remmina_plugin_path, "/", name);
> + remmina_plugin_manager_load_plugin(fullpath);
> + g_free(fullpath);
> + }
> +--
> +2.31.1
> +
> diff --git a/gnu/packages/remmina.scm b/gnu/packages/remmina.scm
> new file mode 100644
> index 0000000000..9611ff2513
> --- /dev/null
> +++ b/gnu/packages/remmina.scm
> @@ -0,0 +1,158 @@
> +;;; GNU Guix --- Functional package management for GNU
> +;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
> +;;;
> +;;; This file is part of GNU Guix.
> +;;;
> +;;; GNU Guix is free software; you can redistribute it and/or modify
> it
> +;;; under the terms of the GNU General Public License as published
> by
> +;;; the Free Software Foundation; either version 3 of the License,
> or (at
> +;;; your option) any later version.
> +;;;
> +;;; GNU Guix is distributed in the hope that it will be useful, but
> +;;; WITHOUT ANY WARRANTY; without even the implied warranty of
> +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> +;;; GNU General Public License for more details.
> +;;;
> +;;; You should have received a copy of the GNU General Public
> License
> +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>
> ;.
> +
> +(define-module (gnu packages remmina)
> + #:use-module ((guix licenses) #:prefix license:)
> + #:use-module (guix packages)
> + #:use-module (guix git-download)
> + #:use-module (guix build utils)
> + #:use-module (guix build-system cmake)
> + #:use-module (guix build-system glib-or-gtk)
> + #:use-module (gnu packages)
> + #:use-module (gnu packages avahi)
> + #:use-module (gnu packages crypto)
> + #:use-module (gnu packages cups)
> + #:use-module (gnu packages freedesktop)
> + #:use-module (gnu packages gettext)
> + #:use-module (gnu packages glib)
> + #:use-module (gnu packages gnome)
> + #:use-module (gnu packages gnupg)
> + #:use-module (gnu packages gtk)
> + #:use-module (gnu packages pcre)
> + #:use-module (gnu packages pkg-config)
> + #:use-module (gnu packages rdesktop)
> + #:use-module (gnu packages spice)
> + #:use-module (gnu packages ssh)
> + #:use-module (gnu packages tls)
> + #:use-module (gnu packages video)
> + #:use-module (gnu packages vnc)
> + #:use-module (gnu packages webkit)
> + #:use-module (gnu packages xorg))
> +
> +(define-public remmina
> + (package
> + (name "remmina")
> + (version "1.4.13")
> + (source
> + (origin
> + (method git-fetch)
> + (uri
> + (git-reference
> + (url "https://gitlab.com/Remmina/Remmina")
> + (commit (string-append "v" version))))
> + (file-name (git-file-name name version))
> + (patches
> + (search-patches
> + ;; To honor REMMINA_PLUGIN_PATH.
> + "remmina-plugin-path.patch"))
> + (sha256
> + (base32
> "1hc2r42hr34ksbxrybglw5caw0zjhwlybvb5c9s99dr761rmzr27"))))
> + (build-system cmake-build-system)
> + (outputs '("out" "plugins"))
> + (arguments
> + `(#:tests? #f ; No target
> + #:configure-flags
> + (list
> + ;; Install plugins in separate output.
> + (string-append "-DREMMINA_PLUGINDIR="
> + (assoc-ref %outputs "plugins")
> + "/lib/remmina/plugins")
> + ;; Disable online version checking.
> + "-DWITH_NEWS=OFF")
> + #:imported-modules
> + (,@%cmake-build-system-modules
> + (guix build glib-or-gtk-build-system))
> + #:modules
> + ((guix build cmake-build-system)
> + ((guix build glib-or-gtk-build-system)
> + #:prefix glib-or-gtk:)
> + (guix build utils))
> + #:phases
> + (modify-phases %standard-phases
> + (add-after 'install 'wrap-progs
> + (lambda* (#:key outputs #:allow-other-keys)
> + (let ((out (assoc-ref outputs "out")))
> + (for-each
> + (lambda (name)
> + (let ((file (string-append out "/bin/" name))
> + (gi-typelib-path (getenv
> "GI_TYPELIB_PATH")))
> + (wrap-program file
> + `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-
> path)))))
> + '("remmina" "remmina-file-wrapper")))
> + #t))
> + (add-after 'wrap-progs 'glib-or-gtk-compile-schemas
> + (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-
> compile-schemas))
> + (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
> + (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-
> wrap)))))
> + (native-inputs
> + `(("gettext" ,gettext-minimal)
> + ("glib:bin" ,glib "bin")
> + ("gobject-introspection" ,gobject-introspection)
> + ("gtk+:bin" ,gtk+ "bin")
> + ("intl" ,intltool)
> + ("pkg-config" ,pkg-config)))
> + (inputs
> + `(("app-indicator" ,libappindicator)
> + ("atk" ,atk)
> + ("avahi" ,avahi)
> + ("cairo" ,cairo)
> + ("cups" ,cups)
> + ("ffmpeg" ,ffmpeg)
> + ("freerdp" ,freerdp) ; for rdp plugin
> + ("gcrypt" ,libgcrypt)
> + ("gdk-pixbuf" ,gdk-pixbuf+svg)
> + ("glib" ,glib)
> + ("gnome-keyring" ,gnome-keyring)
> + ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
> + ("gtk+" ,gtk+)
> + ("harfbuzz" ,harfbuzz)
> + ("json-glib" ,json-glib)
> + ("libsecret" ,libsecret) ; for secret plugin
> + ("libsoup" ,libsoup)
> + ("libssh" ,libssh) ; for ssh plugin
> + ("libvnc" ,libvnc) ; for vnc plugin
> + ("openssl" ,openssl)
> + ("pango" ,pango)
> + ("pcre" ,pcre)
> + ("shared-mime-info" ,shared-mime-info)
> + ("sodium" ,libsodium)
> + ("spice-client-gtk" ,spice-gtk) ; for spice plugin
> + ("telepathy" ,telepathy-glib) ; for telepathy plugin
> + ("vte" ,vte)
> + ("wayland" ,wayland)
> + ("webkitgtk" ,webkitgtk) ; for www plugin
> + ("x11" ,libx11)
> + ("xext" ,libxext) ; for xdmcp plugin
> + ("xdg-utils" ,xdg-utils)
> + ("xkbfile" ,libxkbfile))) ; for nx plugin
> + (propagated-inputs
> + `(("dconf" ,dconf)))
> + (native-search-paths
> + (list
> + ;; To load plugins when installed via 'plugins' output.
> + (search-path-specification
> + (variable "REMMINA_PLUGIN_PATH")
> + (files
> + (list
> + "lib/remmina/plugins")))))
> + (search-paths native-search-paths)
> + (home-page "https://remmina.org/")
> + (synopsis "Remote Desktop Client")
> + (description "Remmina is a client to use other desktops
> remotely.
> +RDP, VNC, SPICE, NX, XDMCP, SSH and EXEC network protocols are
> supported.")
> + (license license:gpl2+)))
R
R
Raghav Gururajan wrote on 11 May 2021 17:29
[PATCH v5] gnu: Add remmina.
(address . 48326@debbugs.gnu.org)(name . Raghav Gururajan)(address . rg@raghavgururajan.name)
20210511152937.19853-1-rg@raghavgururajan.name
* gnu/packages/remmina.scm: New file.
(remmina): New variable.
* gnu/packages/patches/remmina-plugin-path.patch: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES,dist_path_DATA): Add them.
---
gnu/local.mk | 2 +
.../patches/remmina-plugin-path.patch | 79 +++++++++
gnu/packages/remmina.scm | 158 ++++++++++++++++++
3 files changed, 239 insertions(+)
create mode 100644 gnu/packages/patches/remmina-plugin-path.patch
create mode 100644 gnu/packages/remmina.scm

Toggle diff (271 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index c4bd88714c..c30de41d54 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -485,6 +485,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/readline.scm \
%D%/packages/rednotebook.scm \
%D%/packages/regex.scm \
+ %D%/packages/remmina.scm \
%D%/packages/robotics.scm \
%D%/packages/rpc.scm \
%D%/packages/rrdtool.scm \
@@ -1644,6 +1645,7 @@ dist_patch_DATA = \
%D%/packages/patches/rct-add-missing-headers.patch \
%D%/packages/patches/readline-link-ncurses.patch \
%D%/packages/patches/readline-6.2-CVE-2014-2524.patch \
+ %D%/packages/patches/remmina-plugin-path.patch \
%D%/packages/patches/renpy-use-system-fribidi.patch \
%D%/packages/patches/reposurgeon-add-missing-docbook-files.patch \
%D%/packages/patches/r-httpuv-1.5.5-unvendor-libuv.patch \
diff --git a/gnu/packages/patches/remmina-plugin-path.patch b/gnu/packages/patches/remmina-plugin-path.patch
new file mode 100644
index 0000000000..ce382be57a
--- /dev/null
+++ b/gnu/packages/patches/remmina-plugin-path.patch
@@ -0,0 +1,79 @@
+From e6e3c454e380bc1e55a719907df43f73f491fca2 Mon Sep 17 00:00:00 2001
+From: Raghav Gururajan <rg@raghavgururajan.name>
+Date: Mon, 10 May 2021 18:21:02 -0400
+Subject: [PATCH] [PATCH]: Change path variable for loading plugins.
+
+Remmina is coded to load plugins from path (REMMINA_RUNTIME_PLUGINDIR)
+provided during compile-time. This causes cycle between outputs 'out'
+and 'plugins'. Therefore, code it to load plugins from path
+(REMMINA_PLUGIN_PATH) provided during run-time.
+---
+ CMakeLists.txt | 3 ---
+ config.h.in | 1 -
+ src/remmina_plugin_manager.c | 10 ++++++----
+ 3 files changed, 6 insertions(+), 8 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 17a58b04..acbbe440 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -313,9 +313,6 @@ if(NOT REMMINA_LOCALEDIR)
+ endif()
+ if(NOT REMMINA_PLUGINDIR)
+ set(REMMINA_PLUGINDIR "${CMAKE_INSTALL_FULL_LIBDIR}/remmina/plugins")
+- if(NOT REMMINA_RUNTIME_PLUGINDIR)
+- set(REMMINA_RUNTIME_PLUGINDIR "${REMMINA_PLUGINDIR}")
+- endif()
+ endif()
+ if(NOT REMMINA_UIDIR)
+ set(REMMINA_UIDIR "${REMMINA_DATADIR}/remmina/ui")
+diff --git a/config.h.in b/config.h.in
+index e59bf78a..8e8da940 100644
+--- a/config.h.in
++++ b/config.h.in
+@@ -22,7 +22,6 @@
+
+ #define REMMINA_RUNTIME_DATADIR "${REMMINA_RUNTIME_DATADIR}"
+ #define REMMINA_RUNTIME_LOCALEDIR "${REMMINA_RUNTIME_LOCALEDIR}"
+-#define REMMINA_RUNTIME_PLUGINDIR "${REMMINA_RUNTIME_PLUGINDIR}"
+ #define REMMINA_RUNTIME_UIDIR "${REMMINA_RUNTIME_UIDIR}"
+ #define REMMINA_RUNTIME_THEMEDIR "${REMMINA_RUNTIME_THEMEDIR}"
+ #define REMMINA_RUNTIME_EXTERNAL_TOOLS_DIR "${REMMINA_RUNTIME_EXTERNAL_TOOLS_DIR}"
+diff --git a/src/remmina_plugin_manager.c b/src/remmina_plugin_manager.c
+index a1b713a8..74e2c0f0 100644
+--- a/src/remmina_plugin_manager.c
++++ b/src/remmina_plugin_manager.c
+@@ -294,7 +294,7 @@ void remmina_plugin_manager_init()
+ {
+ TRACE_CALL(__func__);
+ GDir *dir;
+- const gchar *name, *ptr;
++ const gchar *remmina_plugin_path, *name, *ptr;
+ gchar *fullpath;
+ RemminaPlugin *plugin;
+ RemminaSecretPlugin *sp;
+@@ -312,8 +312,10 @@ void remmina_plugin_manager_init()
+ return;
+ }
+
+- g_print("Load modules from %s\n", REMMINA_RUNTIME_PLUGINDIR);
+- dir = g_dir_open(REMMINA_RUNTIME_PLUGINDIR, 0, NULL);
++ remmina_plugin_path = g_getenv("REMMINA_PLUGIN_PATH");
++
++ g_print("Load modules from %s\n", remmina_plugin_path);
++ dir = g_dir_open(remmina_plugin_path, 0, NULL);
+
+ if (dir == NULL)
+ return;
+@@ -323,7 +325,7 @@ void remmina_plugin_manager_init()
+ ptr++;
+ if (!remmina_plugin_manager_loader_supported(ptr))
+ continue;
+- fullpath = g_strdup_printf(REMMINA_RUNTIME_PLUGINDIR "/%s", name);
++ fullpath = g_strconcat(remmina_plugin_path, "/", name);
+ remmina_plugin_manager_load_plugin(fullpath);
+ g_free(fullpath);
+ }
+--
+2.31.1
+
diff --git a/gnu/packages/remmina.scm b/gnu/packages/remmina.scm
new file mode 100644
index 0000000000..6b8b80653e
--- /dev/null
+++ b/gnu/packages/remmina.scm
@@ -0,0 +1,158 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages remmina)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages)
+ #:use-module (guix git-download)
+ #:use-module (guix build utils)
+ #:use-module (guix build-system cmake)
+ #:use-module (guix build-system glib-or-gtk)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages avahi)
+ #:use-module (gnu packages crypto)
+ #:use-module (gnu packages cups)
+ #:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages gettext)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages gnome)
+ #:use-module (gnu packages gnupg)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages pcre)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages rdesktop)
+ #:use-module (gnu packages spice)
+ #:use-module (gnu packages ssh)
+ #:use-module (gnu packages tls)
+ #:use-module (gnu packages video)
+ #:use-module (gnu packages vnc)
+ #:use-module (gnu packages webkit)
+ #:use-module (gnu packages xorg))
+
+(define-public remmina
+ (package
+ (name "remmina")
+ (version "1.4.16")
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://gitlab.com/Remmina/Remmina")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (patches
+ (search-patches
+ ;; To honor REMMINA_PLUGIN_PATH.
+ "remmina-plugin-path.patch"))
+ (sha256
+ (base32 "09sjsgvh13jnhs6mhj9icyka0ad3qlnkbzvg7djj9rajzaf1y048"))))
+ (build-system cmake-build-system)
+ (outputs '("out" "plugins"))
+ (arguments
+ `(#:tests? #f ; No target
+ #:configure-flags
+ (list
+ ;; Install plugins in separate output.
+ (string-append "-DREMMINA_PLUGINDIR="
+ (assoc-ref %outputs "plugins")
+ "/lib/remmina/plugins")
+ ;; Disable online version checking.
+ "-DWITH_NEWS=OFF")
+ #:imported-modules
+ (,@%cmake-build-system-modules
+ (guix build glib-or-gtk-build-system))
+ #:modules
+ ((guix build cmake-build-system)
+ ((guix build glib-or-gtk-build-system)
+ #:prefix glib-or-gtk:)
+ (guix build utils))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'wrap-progs
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (for-each
+ (lambda (name)
+ (let ((file (string-append out "/bin/" name))
+ (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
+ (wrap-program file
+ `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
+ '("remmina" "remmina-file-wrapper")))
+ #t))
+ (add-after 'wrap-progs 'glib-or-gtk-compile-schemas
+ (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
+ (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
+ (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
+ (native-inputs
+ `(("gettext" ,gettext-minimal)
+ ("glib:bin" ,glib "bin")
+ ("gobject-introspection" ,gobject-introspection)
+ ("gtk+:bin" ,gtk+ "bin")
+ ("intl" ,intltool)
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("app-indicator" ,libappindicator)
+ ("atk" ,atk)
+ ("avahi" ,avahi)
+ ("cairo" ,cairo)
+ ("cups" ,cups)
+ ("ffmpeg" ,ffmpeg)
+ ("freerdp" ,freerdp) ; for rdp plugin
+ ("gcrypt" ,libgcrypt)
+ ("gdk-pixbuf" ,gdk-pixbuf+svg)
+ ("glib" ,glib)
+ ("gnome-keyring" ,gnome-keyring)
+ ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+ ("gtk+" ,gtk+)
+ ("harfbuzz" ,harfbuzz)
+ ("json-glib" ,json-glib)
+ ("libsecret" ,libsecret) ; for secret plugin
+ ("libsoup" ,libsoup)
+ ("libssh" ,libssh) ; for ssh plugin
+ ("libvnc" ,libvnc) ; for vnc plugin
+ ("openssl" ,openssl)
+ ("pango" ,pango)
+ ("pcre" ,pcre)
+ ("shared-mime-info" ,shared-mime-info)
+ ("sodium" ,libsodium)
+ ("spice-client-gtk" ,spice-gtk) ; for spice plugin
+ ("telepathy" ,telepathy-glib) ; for telepathy plugin
+ ("vte" ,vte)
+ ("wayland" ,wayland)
+ ("webkitgtk" ,webkitgtk) ; for www plugin
+ ("x11" ,libx11)
+ ("xext" ,libxext) ; for xdmcp plugin
+ ("xdg-utils" ,xdg-utils)
+ ("xkbfile" ,libxkbfile))) ; for nx plugin
+ (propagated-inputs
+ `(("dconf" ,dconf)))
+ (native-search-paths
+ (list
+ ;; To load plugins when installed via 'plugins' output.
+ (search-path-specification
+ (variable "REMMINA_PLUGIN_PATH")
+ (files
+ (list
+ "lib/remmina/plugins")))))
+ (search-paths native-search-paths)
+ (home-page "https://remmina.org/")
+ (synopsis "Remote Desktop Client")
+ (description "Remmina is a client to use other desktops remotely.
+RDP, VNC, SPICE, NX, XDMCP, SSH and EXEC network protocols are supported.")
+ (license license:gpl2+)))
--
2.31.1
R
R
Raghav Gururajan wrote on 11 May 2021 17:37
Re: [PATCH v4] gnu: Add remmina.
67629c5f-45ca-e700-ec02-1d9422256acc@raghavgururajan.name
Hi Leo,

Toggle quote (3 lines)
> I don't think an extra file is needed here. Remmina can fit quite well
> to the other VNC clients.

True. But adding it in rdesktop.scm or vnc.scm causes cyclic-dependency,
when I add #:use-module (gnu packages vnc) or #:use-module (gnu packages
rdesktop); respectively.

Toggle quote (2 lines)
> Adjust how? > You already have remmina.scm in your ChangeLog.

Corrected them in v5.

Toggle quote (10 lines)
> I don't think this does, what you think it does.
> "REMMINA_PLUGIN_PATH" is here interpreted as a single directory; usage
> as a PATH variable is therefore dangerous. (Consider a setting, where
> REMINA_PLUGIN_PATH="guix-profile-a/...:guix-profile-b/...")
>
> Also consider packages like Emacs, where the inclusion of their own
> outputs in their path variables was dangerous. (Although in this case,
> it's probably sane, since you're using an extra output, but do verify
> Remmina to work as intended without it.)

Thanks for the pointers. I tried running remmina without installing its
other output, no hiccups.

Regards,
RG.
Attachment: OpenPGP_signature
R
R
Raghav Gururajan wrote on 11 May 2021 18:12
[PATCH v6] gnu: Add remmina.
(address . 48326@debbugs.gnu.org)(name . Raghav Gururajan)(address . rg@raghavgururajan.name)
20210511161247.20752-1-rg@raghavgururajan.name
* gnu/packages/vnc.scm (remmina): New variable.
* gnu/packages/patches/remmina-plugin-path.patch: New file.
* gnu/local.mk (dist_path_DATA): Add it.
---
gnu/local.mk | 1 +
.../patches/remmina-plugin-path.patch | 79 +++++++++++
gnu/packages/vnc.scm | 126 ++++++++++++++++++
3 files changed, 206 insertions(+)
create mode 100644 gnu/packages/patches/remmina-plugin-path.patch

Toggle diff (252 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index c4bd88714c..5dd39924ee 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1644,6 +1644,7 @@ dist_patch_DATA = \
%D%/packages/patches/rct-add-missing-headers.patch \
%D%/packages/patches/readline-link-ncurses.patch \
%D%/packages/patches/readline-6.2-CVE-2014-2524.patch \
+ %D%/packages/patches/remmina-plugin-path.patch \
%D%/packages/patches/renpy-use-system-fribidi.patch \
%D%/packages/patches/reposurgeon-add-missing-docbook-files.patch \
%D%/packages/patches/r-httpuv-1.5.5-unvendor-libuv.patch \
diff --git a/gnu/packages/patches/remmina-plugin-path.patch b/gnu/packages/patches/remmina-plugin-path.patch
new file mode 100644
index 0000000000..ce382be57a
--- /dev/null
+++ b/gnu/packages/patches/remmina-plugin-path.patch
@@ -0,0 +1,79 @@
+From e6e3c454e380bc1e55a719907df43f73f491fca2 Mon Sep 17 00:00:00 2001
+From: Raghav Gururajan <rg@raghavgururajan.name>
+Date: Mon, 10 May 2021 18:21:02 -0400
+Subject: [PATCH] [PATCH]: Change path variable for loading plugins.
+
+Remmina is coded to load plugins from path (REMMINA_RUNTIME_PLUGINDIR)
+provided during compile-time. This causes cycle between outputs 'out'
+and 'plugins'. Therefore, code it to load plugins from path
+(REMMINA_PLUGIN_PATH) provided during run-time.
+---
+ CMakeLists.txt | 3 ---
+ config.h.in | 1 -
+ src/remmina_plugin_manager.c | 10 ++++++----
+ 3 files changed, 6 insertions(+), 8 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 17a58b04..acbbe440 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -313,9 +313,6 @@ if(NOT REMMINA_LOCALEDIR)
+ endif()
+ if(NOT REMMINA_PLUGINDIR)
+ set(REMMINA_PLUGINDIR "${CMAKE_INSTALL_FULL_LIBDIR}/remmina/plugins")
+- if(NOT REMMINA_RUNTIME_PLUGINDIR)
+- set(REMMINA_RUNTIME_PLUGINDIR "${REMMINA_PLUGINDIR}")
+- endif()
+ endif()
+ if(NOT REMMINA_UIDIR)
+ set(REMMINA_UIDIR "${REMMINA_DATADIR}/remmina/ui")
+diff --git a/config.h.in b/config.h.in
+index e59bf78a..8e8da940 100644
+--- a/config.h.in
++++ b/config.h.in
+@@ -22,7 +22,6 @@
+
+ #define REMMINA_RUNTIME_DATADIR "${REMMINA_RUNTIME_DATADIR}"
+ #define REMMINA_RUNTIME_LOCALEDIR "${REMMINA_RUNTIME_LOCALEDIR}"
+-#define REMMINA_RUNTIME_PLUGINDIR "${REMMINA_RUNTIME_PLUGINDIR}"
+ #define REMMINA_RUNTIME_UIDIR "${REMMINA_RUNTIME_UIDIR}"
+ #define REMMINA_RUNTIME_THEMEDIR "${REMMINA_RUNTIME_THEMEDIR}"
+ #define REMMINA_RUNTIME_EXTERNAL_TOOLS_DIR "${REMMINA_RUNTIME_EXTERNAL_TOOLS_DIR}"
+diff --git a/src/remmina_plugin_manager.c b/src/remmina_plugin_manager.c
+index a1b713a8..74e2c0f0 100644
+--- a/src/remmina_plugin_manager.c
++++ b/src/remmina_plugin_manager.c
+@@ -294,7 +294,7 @@ void remmina_plugin_manager_init()
+ {
+ TRACE_CALL(__func__);
+ GDir *dir;
+- const gchar *name, *ptr;
++ const gchar *remmina_plugin_path, *name, *ptr;
+ gchar *fullpath;
+ RemminaPlugin *plugin;
+ RemminaSecretPlugin *sp;
+@@ -312,8 +312,10 @@ void remmina_plugin_manager_init()
+ return;
+ }
+
+- g_print("Load modules from %s\n", REMMINA_RUNTIME_PLUGINDIR);
+- dir = g_dir_open(REMMINA_RUNTIME_PLUGINDIR, 0, NULL);
++ remmina_plugin_path = g_getenv("REMMINA_PLUGIN_PATH");
++
++ g_print("Load modules from %s\n", remmina_plugin_path);
++ dir = g_dir_open(remmina_plugin_path, 0, NULL);
+
+ if (dir == NULL)
+ return;
+@@ -323,7 +325,7 @@ void remmina_plugin_manager_init()
+ ptr++;
+ if (!remmina_plugin_manager_loader_supported(ptr))
+ continue;
+- fullpath = g_strdup_printf(REMMINA_RUNTIME_PLUGINDIR "/%s", name);
++ fullpath = g_strconcat(remmina_plugin_path, "/", name);
+ remmina_plugin_manager_load_plugin(fullpath);
+ g_free(fullpath);
+ }
+--
+2.31.1
+
diff --git a/gnu/packages/vnc.scm b/gnu/packages/vnc.scm
index b8979b2921..93174fc9fc 100644
--- a/gnu/packages/vnc.scm
+++ b/gnu/packages/vnc.scm
@@ -29,22 +29,148 @@
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages avahi)
#:use-module (gnu packages base)
#:use-module (gnu packages cmake)
#:use-module (gnu packages commencement)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages crypto)
+ #:use-module (gnu packages cups)
#:use-module (gnu packages fltk)
+ #:use-module (gnu packages freedesktop)
#:use-module (gnu packages gettext)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages gnome)
#:use-module (gnu packages gnupg)
+ #:use-module (gnu packages gtk)
#:use-module (gnu packages image)
#:use-module (gnu packages linux)
+ #:use-module (gnu packages pcre)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages rdesktop)
#:use-module (gnu packages sdl)
+ #:use-module (gnu packages spice)
+ #:use-module (gnu packages ssh)
#:use-module (gnu packages tls)
+ #:use-module (gnu packages video)
+ #:use-module (gnu packages webkit)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xorg))
+(define-public remmina
+ (package
+ (name "remmina")
+ (version "1.4.16")
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://gitlab.com/Remmina/Remmina")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (patches
+ (search-patches
+ ;; To honor REMMINA_PLUGIN_PATH.
+ "remmina-plugin-path.patch"))
+ (sha256
+ (base32 "09sjsgvh13jnhs6mhj9icyka0ad3qlnkbzvg7djj9rajzaf1y048"))))
+ (build-system cmake-build-system)
+ (outputs '("out" "plugins"))
+ (arguments
+ `(#:tests? #f ; No target
+ #:configure-flags
+ (list
+ ;; Install plugins in separate output.
+ (string-append "-DREMMINA_PLUGINDIR="
+ (assoc-ref %outputs "plugins")
+ "/lib/remmina/plugins")
+ ;; Disable online version checking.
+ "-DWITH_NEWS=OFF")
+ #:imported-modules
+ (,@%cmake-build-system-modules
+ (guix build glib-or-gtk-build-system))
+ #:modules
+ ((guix build cmake-build-system)
+ ((guix build glib-or-gtk-build-system)
+ #:prefix glib-or-gtk:)
+ (guix build utils))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'wrap-progs
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (for-each
+ (lambda (name)
+ (let ((file (string-append out "/bin/" name))
+ (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
+ (wrap-program file
+ `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
+ '("remmina" "remmina-file-wrapper")))
+ #t))
+ (add-after 'wrap-progs 'glib-or-gtk-compile-schemas
+ (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
+ (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
+ (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
+ (native-inputs
+ `(("gettext" ,gettext-minimal)
+ ("glib:bin" ,glib "bin")
+ ("gobject-introspection" ,gobject-introspection)
+ ("gtk+:bin" ,gtk+ "bin")
+ ("intl" ,intltool)
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("app-indicator" ,libappindicator)
+ ("atk" ,atk)
+ ("avahi" ,avahi)
+ ("cairo" ,cairo)
+ ("cups" ,cups)
+ ("ffmpeg" ,ffmpeg)
+ ("freerdp" ,freerdp) ; for rdp plugin
+ ("gcrypt" ,libgcrypt)
+ ("gdk-pixbuf" ,gdk-pixbuf+svg)
+ ("glib" ,glib)
+ ("gnome-keyring" ,gnome-keyring)
+ ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+ ("gtk+" ,gtk+)
+ ("harfbuzz" ,harfbuzz)
+ ("json-glib" ,json-glib)
+ ("libsecret" ,libsecret) ; for secret plugin
+ ("libsoup" ,libsoup)
+ ("libssh" ,libssh) ; for ssh plugin
+ ("libvnc" ,libvnc) ; for vnc plugin
+ ("openssl" ,openssl)
+ ("pango" ,pango)
+ ("pcre" ,pcre)
+ ("shared-mime-info" ,shared-mime-info)
+ ("sodium" ,libsodium)
+ ("spice-client-gtk" ,spice-gtk) ; for spice plugin
+ ("telepathy" ,telepathy-glib) ; for telepathy plugin
+ ("vte" ,vte)
+ ("wayland" ,wayland)
+ ("webkitgtk" ,webkitgtk) ; for www plugin
+ ("x11" ,libx11)
+ ("xext" ,libxext) ; for xdmcp plugin
+ ("xdg-utils" ,xdg-utils)
+ ("xkbfile" ,libxkbfile))) ; for nx plugin
+ (propagated-inputs
+ `(("dconf" ,dconf)))
+ (native-search-paths
+ (list
+ ;; To load plugins when installed via 'plugins' output.
+ (search-path-specification
+ (variable "REMMINA_PLUGIN_PATH")
+ (files
+ (list
+ "lib/remmina/plugins")))))
+ (search-paths native-search-paths)
+ (home-page "https://remmina.org/")
+ (synopsis "Remote Desktop Client")
+ (description "Remmina is a client to use other desktops remotely.
+RDP, VNC, SPICE, NX, XDMCP, SSH and EXEC network protocols are supported.")
+ (license license:gpl2+)))
+
(define-public tigervnc-client
(package
(name "tigervnc-client")
--
2.31.1
R
R
Raghav Gururajan wrote on 11 May 2021 20:04
[PATCH v7] gnu: Add remmina.
(address . 48326@debbugs.gnu.org)(name . Raghav Gururajan)(address . rg@raghavgururajan.name)
20210511180434.22147-1-rg@raghavgururajan.name
* gnu/packages/vnc.scm (remmina): New variable.
* gnu/packages/patches/remmina-plugin-path.patch: New file.
* gnu/local.mk (dist_path_DATA): Add it.
---
gnu/local.mk | 1 +
.../patches/remmina-plugin-path.patch | 79 +++++++++++
gnu/packages/vnc.scm | 127 ++++++++++++++++++
3 files changed, 207 insertions(+)
create mode 100644 gnu/packages/patches/remmina-plugin-path.patch

Toggle diff (253 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index c4bd88714c..5dd39924ee 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1644,6 +1644,7 @@ dist_patch_DATA = \
%D%/packages/patches/rct-add-missing-headers.patch \
%D%/packages/patches/readline-link-ncurses.patch \
%D%/packages/patches/readline-6.2-CVE-2014-2524.patch \
+ %D%/packages/patches/remmina-plugin-path.patch \
%D%/packages/patches/renpy-use-system-fribidi.patch \
%D%/packages/patches/reposurgeon-add-missing-docbook-files.patch \
%D%/packages/patches/r-httpuv-1.5.5-unvendor-libuv.patch \
diff --git a/gnu/packages/patches/remmina-plugin-path.patch b/gnu/packages/patches/remmina-plugin-path.patch
new file mode 100644
index 0000000000..ce382be57a
--- /dev/null
+++ b/gnu/packages/patches/remmina-plugin-path.patch
@@ -0,0 +1,79 @@
+From e6e3c454e380bc1e55a719907df43f73f491fca2 Mon Sep 17 00:00:00 2001
+From: Raghav Gururajan <rg@raghavgururajan.name>
+Date: Mon, 10 May 2021 18:21:02 -0400
+Subject: [PATCH] [PATCH]: Change path variable for loading plugins.
+
+Remmina is coded to load plugins from path (REMMINA_RUNTIME_PLUGINDIR)
+provided during compile-time. This causes cycle between outputs 'out'
+and 'plugins'. Therefore, code it to load plugins from path
+(REMMINA_PLUGIN_PATH) provided during run-time.
+---
+ CMakeLists.txt | 3 ---
+ config.h.in | 1 -
+ src/remmina_plugin_manager.c | 10 ++++++----
+ 3 files changed, 6 insertions(+), 8 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 17a58b04..acbbe440 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -313,9 +313,6 @@ if(NOT REMMINA_LOCALEDIR)
+ endif()
+ if(NOT REMMINA_PLUGINDIR)
+ set(REMMINA_PLUGINDIR "${CMAKE_INSTALL_FULL_LIBDIR}/remmina/plugins")
+- if(NOT REMMINA_RUNTIME_PLUGINDIR)
+- set(REMMINA_RUNTIME_PLUGINDIR "${REMMINA_PLUGINDIR}")
+- endif()
+ endif()
+ if(NOT REMMINA_UIDIR)
+ set(REMMINA_UIDIR "${REMMINA_DATADIR}/remmina/ui")
+diff --git a/config.h.in b/config.h.in
+index e59bf78a..8e8da940 100644
+--- a/config.h.in
++++ b/config.h.in
+@@ -22,7 +22,6 @@
+
+ #define REMMINA_RUNTIME_DATADIR "${REMMINA_RUNTIME_DATADIR}"
+ #define REMMINA_RUNTIME_LOCALEDIR "${REMMINA_RUNTIME_LOCALEDIR}"
+-#define REMMINA_RUNTIME_PLUGINDIR "${REMMINA_RUNTIME_PLUGINDIR}"
+ #define REMMINA_RUNTIME_UIDIR "${REMMINA_RUNTIME_UIDIR}"
+ #define REMMINA_RUNTIME_THEMEDIR "${REMMINA_RUNTIME_THEMEDIR}"
+ #define REMMINA_RUNTIME_EXTERNAL_TOOLS_DIR "${REMMINA_RUNTIME_EXTERNAL_TOOLS_DIR}"
+diff --git a/src/remmina_plugin_manager.c b/src/remmina_plugin_manager.c
+index a1b713a8..74e2c0f0 100644
+--- a/src/remmina_plugin_manager.c
++++ b/src/remmina_plugin_manager.c
+@@ -294,7 +294,7 @@ void remmina_plugin_manager_init()
+ {
+ TRACE_CALL(__func__);
+ GDir *dir;
+- const gchar *name, *ptr;
++ const gchar *remmina_plugin_path, *name, *ptr;
+ gchar *fullpath;
+ RemminaPlugin *plugin;
+ RemminaSecretPlugin *sp;
+@@ -312,8 +312,10 @@ void remmina_plugin_manager_init()
+ return;
+ }
+
+- g_print("Load modules from %s\n", REMMINA_RUNTIME_PLUGINDIR);
+- dir = g_dir_open(REMMINA_RUNTIME_PLUGINDIR, 0, NULL);
++ remmina_plugin_path = g_getenv("REMMINA_PLUGIN_PATH");
++
++ g_print("Load modules from %s\n", remmina_plugin_path);
++ dir = g_dir_open(remmina_plugin_path, 0, NULL);
+
+ if (dir == NULL)
+ return;
+@@ -323,7 +325,7 @@ void remmina_plugin_manager_init()
+ ptr++;
+ if (!remmina_plugin_manager_loader_supported(ptr))
+ continue;
+- fullpath = g_strdup_printf(REMMINA_RUNTIME_PLUGINDIR "/%s", name);
++ fullpath = g_strconcat(remmina_plugin_path, "/", name);
+ remmina_plugin_manager_load_plugin(fullpath);
+ g_free(fullpath);
+ }
+--
+2.31.1
+
diff --git a/gnu/packages/vnc.scm b/gnu/packages/vnc.scm
index b8979b2921..8530ee97ce 100644
--- a/gnu/packages/vnc.scm
+++ b/gnu/packages/vnc.scm
@@ -29,22 +29,149 @@
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages avahi)
#:use-module (gnu packages base)
#:use-module (gnu packages cmake)
#:use-module (gnu packages commencement)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages crypto)
+ #:use-module (gnu packages cups)
#:use-module (gnu packages fltk)
+ #:use-module (gnu packages freedesktop)
#:use-module (gnu packages gettext)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages gnome)
#:use-module (gnu packages gnupg)
+ #:use-module (gnu packages gtk)
#:use-module (gnu packages image)
#:use-module (gnu packages linux)
+ #:use-module (gnu packages pcre)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages rdesktop)
#:use-module (gnu packages sdl)
+ #:use-module (gnu packages spice)
+ #:use-module (gnu packages ssh)
#:use-module (gnu packages tls)
+ #:use-module (gnu packages video)
+ #:use-module (gnu packages webkit)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xorg))
+(define-public remmina
+ (package
+ (name "remmina")
+ (version "1.4.16")
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://gitlab.com/Remmina/Remmina")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (patches
+ (search-patches
+ ;; To honor REMMINA_PLUGIN_PATH.
+ "remmina-plugin-path.patch"))
+ (sha256
+ (base32 "09sjsgvh13jnhs6mhj9icyka0ad3qlnkbzvg7djj9rajzaf1y048"))))
+ (build-system cmake-build-system)
+ (outputs '("out" "plugins"))
+ (arguments
+ `(#:tests? #f ; No target
+ #:configure-flags
+ (list
+ ;; Install plugins in separate output.
+ (string-append "-DREMMINA_PLUGINDIR="
+ (assoc-ref %outputs "plugins")
+ "/lib/remmina/plugins")
+ ;; Disable online version checking.
+ "-DWITH_NEWS=OFF")
+ #:imported-modules
+ (,@%cmake-build-system-modules
+ (guix build glib-or-gtk-build-system))
+ #:modules
+ ((guix build cmake-build-system)
+ ((guix build glib-or-gtk-build-system)
+ #:prefix glib-or-gtk:)
+ (guix build utils))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'wrap-progs
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (for-each
+ (lambda (name)
+ (let ((file (string-append out "/bin/" name))
+ (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
+ (wrap-program file
+ `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
+ '("remmina" "remmina-file-wrapper")))
+ #t))
+ (add-after 'wrap-progs 'glib-or-gtk-compile-schemas
+ (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
+ (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
+ (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
+ (native-inputs
+ `(("gettext" ,gettext-minimal)
+ ("glib:bin" ,glib "bin")
+ ("gobject-introspection" ,gobject-introspection)
+ ("gtk+:bin" ,gtk+ "bin")
+ ("intl" ,intltool)
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("app-indicator" ,libappindicator)
+ ("atk" ,atk)
+ ("avahi" ,avahi)
+ ("cairo" ,cairo)
+ ("cups" ,cups)
+ ("ffmpeg" ,ffmpeg)
+ ("freerdp" ,freerdp) ; for rdp plugin
+ ("gcrypt" ,libgcrypt)
+ ("gdk-pixbuf" ,gdk-pixbuf+svg)
+ ("glib" ,glib)
+ ("gnome-keyring" ,gnome-keyring)
+ ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+ ("gtk+" ,gtk+)
+ ("harfbuzz" ,harfbuzz)
+ ("json-glib" ,json-glib)
+ ("libsecret" ,libsecret) ; for secret plugin
+ ("libsoup" ,libsoup)
+ ("libssh" ,libssh) ; for ssh plugin
+ ("libvnc" ,libvnc) ; for vnc plugin
+ ("openssl" ,openssl)
+ ("pango" ,pango)
+ ("pcre" ,pcre)
+ ("shared-mime-info" ,shared-mime-info)
+ ("sodium" ,libsodium)
+ ("spice-client-gtk" ,spice-gtk) ; for spice plugin
+ ("telepathy" ,telepathy-glib) ; for telepathy plugin
+ ("vte" ,vte)
+ ("wayland" ,wayland)
+ ("webkitgtk" ,webkitgtk) ; for www plugin
+ ("x11" ,libx11)
+ ("xext" ,libxext) ; for xdmcp plugin
+ ("xdg-utils" ,xdg-utils)
+ ("xkbfile" ,libxkbfile))) ; for nx plugin
+ (propagated-inputs
+ `(("dconf" ,dconf)))
+ (native-search-paths
+ (list
+ ;; To load plugins when installed via 'plugins' output.
+ (search-path-specification
+ (variable "REMMINA_PLUGIN_PATH")
+ (separator #f) ; single entry
+ (files
+ (list
+ "lib/remmina/plugins")))))
+ (search-paths native-search-paths)
+ (home-page "https://remmina.org/")
+ (synopsis "Remote Desktop Client")
+ (description "Remmina is a client to use other desktops remotely.
+RDP, VNC, SPICE, NX, XDMCP, SSH and EXEC network protocols are supported.")
+ (license license:gpl2+)))
+
(define-public tigervnc-client
(package
(name "tigervnc-client")
--
2.31.1
R
R
Raghav Gururajan wrote on 11 May 2021 21:54
[PATCH v8] gnu: Add remmina.
(address . 48326@debbugs.gnu.org)(name . Raghav Gururajan)(address . rg@raghavgururajan.name)
20210511195425.23641-1-rg@raghavgururajan.name
* gnu/packages/vnc.scm (remmina): New variable.
---
gnu/packages/vnc.scm | 108 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 108 insertions(+)

Toggle diff (137 lines)
diff --git a/gnu/packages/vnc.scm b/gnu/packages/vnc.scm
index b8979b2921..82640f98f6 100644
--- a/gnu/packages/vnc.scm
+++ b/gnu/packages/vnc.scm
@@ -29,22 +29,130 @@
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages avahi)
#:use-module (gnu packages base)
#:use-module (gnu packages cmake)
#:use-module (gnu packages commencement)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages crypto)
+ #:use-module (gnu packages cups)
#:use-module (gnu packages fltk)
+ #:use-module (gnu packages freedesktop)
#:use-module (gnu packages gettext)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages gnome)
#:use-module (gnu packages gnupg)
+ #:use-module (gnu packages gtk)
#:use-module (gnu packages image)
#:use-module (gnu packages linux)
+ #:use-module (gnu packages pcre)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages rdesktop)
#:use-module (gnu packages sdl)
+ #:use-module (gnu packages spice)
+ #:use-module (gnu packages ssh)
#:use-module (gnu packages tls)
+ #:use-module (gnu packages video)
+ #:use-module (gnu packages webkit)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xorg))
+(define-public remmina
+ (package
+ (name "remmina")
+ (version "1.4.16")
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://gitlab.com/Remmina/Remmina")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "09sjsgvh13jnhs6mhj9icyka0ad3qlnkbzvg7djj9rajzaf1y048"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:tests? #f ; No target
+ #:configure-flags
+ (list
+ ;; Disable online version checking.
+ "-DWITH_NEWS=OFF")
+ #:imported-modules
+ ((guix build glib-or-gtk-build-system)
+ ,@%cmake-build-system-modules)
+ #:modules
+ (((guix build glib-or-gtk-build-system)
+ #:prefix glib-or-gtk:)
+ (guix build cmake-build-system)
+ (guix build utils))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'wrap-progs
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (for-each
+ (lambda (name)
+ (let ((file (string-append out "/bin/" name))
+ (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
+ (wrap-program file
+ `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
+ '("remmina" "remmina-file-wrapper")))
+ #t))
+ (add-after 'wrap-progs 'glib-or-gtk-compile-schemas
+ (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
+ (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
+ (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
+ (native-inputs
+ `(("gettext" ,gettext-minimal)
+ ("glib:bin" ,glib "bin")
+ ("gobject-introspection" ,gobject-introspection)
+ ("gtk+:bin" ,gtk+ "bin")
+ ("intl" ,intltool)
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("app-indicator" ,libappindicator)
+ ("atk" ,atk)
+ ("avahi" ,avahi)
+ ("cairo" ,cairo)
+ ("cups" ,cups)
+ ("ffmpeg" ,ffmpeg)
+ ("freerdp" ,freerdp) ; for rdp plugin
+ ("gcrypt" ,libgcrypt)
+ ("gdk-pixbuf" ,gdk-pixbuf+svg)
+ ("glib" ,glib)
+ ("gnome-keyring" ,gnome-keyring)
+ ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+ ("gtk+" ,gtk+)
+ ("harfbuzz" ,harfbuzz)
+ ("json-glib" ,json-glib)
+ ("libsecret" ,libsecret) ; for secret plugin
+ ("libsoup" ,libsoup)
+ ("libssh" ,libssh) ; for ssh plugin
+ ("libvnc" ,libvnc) ; for vnc plugin
+ ("openssl" ,openssl)
+ ("pango" ,pango)
+ ("pcre" ,pcre)
+ ("shared-mime-info" ,shared-mime-info)
+ ("sodium" ,libsodium)
+ ("spice-client-gtk" ,spice-gtk) ; for spice plugin
+ ("telepathy" ,telepathy-glib) ; for telepathy plugin
+ ("vte" ,vte)
+ ("wayland" ,wayland)
+ ("webkitgtk" ,webkitgtk) ; for www plugin
+ ("x11" ,libx11)
+ ("xext" ,libxext) ; for xdmcp plugin
+ ("xdg-utils" ,xdg-utils)
+ ("xkbfile" ,libxkbfile))) ; for nx plugin
+ (propagated-inputs
+ `(("dconf" ,dconf)))
+ (home-page "https://remmina.org/")
+ (synopsis "Remote Desktop Client")
+ (description "Remmina is a client to use other desktops remotely.
+RDP, VNC, SPICE, NX, XDMCP, SSH and EXEC network protocols are supported.")
+ (license license:gpl2+)))
+
(define-public tigervnc-client
(package
(name "tigervnc-client")
--
2.31.1
R
R
Raghav Gururajan wrote on 11 May 2021 22:04
[PATCH v9] gnu: Add remmina.
(address . 48326@debbugs.gnu.org)(name . Raghav Gururajan)(address . rg@raghavgururajan.name)
20210511200458.23976-1-rg@raghavgururajan.name
* gnu/packages/vnc.scm (remmina): New variable.
---
gnu/packages/vnc.scm | 108 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 108 insertions(+)

Toggle diff (137 lines)
diff --git a/gnu/packages/vnc.scm b/gnu/packages/vnc.scm
index b8979b2921..2fd1f7a9db 100644
--- a/gnu/packages/vnc.scm
+++ b/gnu/packages/vnc.scm
@@ -29,22 +29,130 @@
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages avahi)
#:use-module (gnu packages base)
#:use-module (gnu packages cmake)
#:use-module (gnu packages commencement)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages crypto)
+ #:use-module (gnu packages cups)
#:use-module (gnu packages fltk)
+ #:use-module (gnu packages freedesktop)
#:use-module (gnu packages gettext)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages gnome)
#:use-module (gnu packages gnupg)
+ #:use-module (gnu packages gtk)
#:use-module (gnu packages image)
#:use-module (gnu packages linux)
+ #:use-module (gnu packages pcre)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages rdesktop)
#:use-module (gnu packages sdl)
+ #:use-module (gnu packages spice)
+ #:use-module (gnu packages ssh)
#:use-module (gnu packages tls)
+ #:use-module (gnu packages video)
+ #:use-module (gnu packages webkit)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xorg))
+(define-public remmina
+ (package
+ (name "remmina")
+ (version "1.4.16")
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://gitlab.com/Remmina/Remmina")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "09sjsgvh13jnhs6mhj9icyka0ad3qlnkbzvg7djj9rajzaf1y048"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:tests? #f ; No target
+ #:configure-flags
+ (list
+ ;; Disable online version checking.
+ "-DWITH_NEWS=OFF")
+ #:imported-modules
+ ((guix build glib-or-gtk-build-system)
+ ,@%cmake-build-system-modules)
+ #:modules
+ (((guix build glib-or-gtk-build-system)
+ #:prefix glib-or-gtk:)
+ (guix build cmake-build-system)
+ (guix build utils))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'wrap-progs
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (for-each
+ (lambda (name)
+ (let ((file (string-append out "/bin/" name))
+ (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
+ (wrap-program file
+ `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
+ '("remmina" "remmina-file-wrapper")))
+ #t))
+ (add-after 'wrap-progs 'glib-or-gtk-compile-schemas
+ (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
+ (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
+ (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
+ (native-inputs
+ `(("gettext" ,gettext-minimal)
+ ("glib:bin" ,glib "bin")
+ ("gobject-introspection" ,gobject-introspection)
+ ("gtk+:bin" ,gtk+ "bin")
+ ("intl" ,intltool)
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("app-indicator" ,libappindicator)
+ ("atk" ,atk)
+ ("avahi" ,avahi)
+ ("cairo" ,cairo)
+ ("cups" ,cups)
+ ("ffmpeg" ,ffmpeg)
+ ("freerdp" ,freerdp) ; for rdp plugin
+ ("gcrypt" ,libgcrypt)
+ ("gdk-pixbuf" ,gdk-pixbuf+svg)
+ ("glib" ,glib)
+ ("gnome-keyring" ,gnome-keyring)
+ ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+ ("gtk+" ,gtk+)
+ ("harfbuzz" ,harfbuzz)
+ ("json-glib" ,json-glib)
+ ("libsecret" ,libsecret) ; for secret plugin
+ ("libsoup" ,libsoup)
+ ("libssh" ,libssh) ; for ssh plugin
+ ("libvnc" ,libvnc) ; for vnc plugin
+ ("openssl" ,openssl)
+ ("pango" ,pango)
+ ("pcre2" ,pcre2) ; for exec plugin
+ ("shared-mime-info" ,shared-mime-info)
+ ("sodium" ,libsodium)
+ ("spice-client-gtk" ,spice-gtk) ; for spice plugin
+ ("telepathy" ,telepathy-glib)
+ ("vte" ,vte) ; for st plugin
+ ("wayland" ,wayland)
+ ("webkitgtk" ,webkitgtk) ; for www plugin
+ ("x11" ,libx11)
+ ("xext" ,libxext) ; for xdmcp plugin
+ ("xdg-utils" ,xdg-utils)
+ ("xkbfile" ,libxkbfile))) ; for nx plugin
+ (propagated-inputs
+ `(("dconf" ,dconf)))
+ (home-page "https://remmina.org/")
+ (synopsis "Remote Desktop Client")
+ (description "Remmina is a client to use other desktops remotely.
+RDP, VNC, SPICE, NX, XDMCP, SSH and EXEC network protocols are supported.")
+ (license license:gpl2+)))
+
(define-public tigervnc-client
(package
(name "tigervnc-client")
--
2.31.1
R
R
Raghav Gururajan wrote on 12 May 2021 00:33
(no subject)
(address . 48326-done@debbugs.gnu.org)
9a97aea7-58a0-f1c9-23bd-913974aeae03@raghavgururajan.name
pushed as c80627731bc100baa4b6c5d265df5465cee9498e
Attachment: OpenPGP_signature
Closed
?