diff mbox

[10/10] Add ring-client-gnome.

Message ID 87d1k8zg1j.fsf@openmailbox.org
State New
Headers show

Commit Message

Lukas Gradl Sept. 13, 2016, 2:31 a.m. UTC
None

Comments

Danny Milosavljevic Sept. 15, 2016, 9:27 p.m. UTC | #1
> +      (propagated-inputs
> +       `(("libring" ,libring) ; This is needed to run dring.

Wait... I don't understand why it's required to be propagated...

> +         ("adwaita-icon-theme" ,adwaita-icon-theme)

Okay.

> +         ("evolution-data-server" ,evolution-data-server)))

Hmm. Why is it propagated? Most other packages seem to be able to use it as a regular input just fine. Are they wrong?
Lukas Gradl Sept. 17, 2016, 4:38 p.m. UTC | #2
Thank you for your review!
And Sorry for my late answer!

Danny Milosavljevic <dannym@scratchpost.org> writes:

>> +      (propagated-inputs
>> +       `(("libring" ,libring) ; This is needed to run dring.
>
> Wait... I don't understand why it's required to be propagated...
>

I was not sure how to handle this properly.  The package libring
provides a program 'dring', which is a daemon that, as far as I
understand, does all the communication with peers on the internet.  So
in order to place a call, one first needs to run 'dring &' and then
start the ring-client-gnome.  If the ring daemon is not running, then
ring-client-gnome won't do anything useful, it will just error out on
startup.

Looking at the manual, this does not justify propagation.  My intention
was that people can just install ring-client-gnome in a profile and it
will work.  If libring is not propagated, it will also need to be
installed by hand.

Is there a good way to specify this kind of runtime requirement?  I
could also just move it to 'inputs' and put a hint in the description
that libring should be installed alongside ring-client-gnome.


>> +         ("evolution-data-server" ,evolution-data-server)))
>
> Hmm. Why is it propagated? Most other packages seem to be able to use it as a regular input just fine. Are they wrong?

This is a similar issue.  I use ratpoison and do not have
evolution-data-server in my profile.  Then, if I do this:

---8<--- cut here -------------------- start --->8---
lukas@serenity$ guix package --list-installed | grep evolution-data-server
lukas@serenity$ 
lukas@serenity$ ./pre-inst-env guix environment --no-substitutes --no-grafts --ad-hoc ring-client-gnome
warning: failed to install locale: Invalid argument
accepted connection from pid 686, user lukas
lukas@serenity [env]$ dring &
[1] 708
lukas@serenity [env]$ ring.cx
Ring Daemon 2.3.0, by Savoir-faire Linux 2004-2016
http://www.ring.cx/
[Video support enabled]

10:59:14.283 os_core_unix.c !pjlib 2.4 for POSIX initialized

(gnome-ring:711): Gtk-WARNING **: Locale not supported by C library.
	Using the fallback 'C' locale.
** Message: Ring GNOME client version: 1.0.0
** Message: git ref: unknown

(gnome-ring:711): Clutter-WARNING **: Locale not supported by C library.
Using the fallback 'C' locale.
Updating all accounts
Loading "708d2bd2d3639223"
Account parameter " "Account.presenceSubscribeSupported" " not found
Loading "45662ba5f88c4297"
Loading vcf from: QDir( "/home/lukas/.local/share/gnome-ring/profiles" , nameFilters = { "*" },  QDir::SortFlags( Name | IgnoreCase ) , QDir::Filters( Dirs|Files|Drives|AllEntries ) )

(gnome-ring:711): GLib-GIO-ERROR **: Settings schema 'org.gnome.Evolution.DefaultSources' is not installed

/gnu/store/p2pxykqp746za9z3cxply4hpjff3qfxa-profile/bin/ring.cx: line 46:   711 Trace/breakpoint trap   gnome-ring $*
lukas@serenity [env]$
---8<--- cut here -------------------- end ----->8---

It throws an error that I do not get if I instead do:

---8<--- cut here -------------------- start --->8---
lukas@serenity$ ./pre-inst-env guix environment --no-substitutes --no-grafts --ad-hoc ring-client-gnome evolution-data-server
warning: failed to install locale: Invalid argument
accepted connection from pid 1120, user lukas
lukas@serenity [env]$ dring &
[1] 1133
lukas@serenity [env]$ Ring Daemon 2.3.0, by Savoir-faire Linux 2004-2016
http://www.ring.cx/
[Video support enabled]

11:22:50.300 os_core_unix.c !pjlib 2.4 for POSIX initialized

lukas@serenity [env]$ ring.cx

(gnome-ring:1150): Gtk-WARNING **: Locale not supported by C library.
	Using the fallback 'C' locale.
** Message: Ring GNOME client version: 1.0.0
** Message: git ref: unknown

(gnome-ring:1150): Clutter-WARNING **: Locale not supported by C library.
Using the fallback 'C' locale.
Updating all accounts
Loading "708d2bd2d3639223"
Account parameter " "Account.presenceSubscribeSupported" " not found
Loading "45662ba5f88c4297"
Loading vcf from: QDir( "/home/lukas/.local/share/gnome-ring/profiles" , nameFilters = { "*" },  QDir::SortFlags( Name | IgnoreCase ) , QDir::Filters( Dirs|Files|Drives|AllEntries ) )

(gnome-ring:1150): Gtk-WARNING **: gtkwidget.c:8523: widget not within a GtkWindow
QDBusMarshaller: type `VectorString' attempts to redefine basic D-BUS type 'as' (QStringList) (Did you forget to call beginStructure() ?)
QDBusMarshaller: type `MapStringVectorString' produces invalid D-BUS signature `a{s}' (Did you forget to call beginStructure() ?)
QDBusMarshaller: type `QMap<QString,MapStringVectorString>' produces invalid D-BUS signature `a{s}' (Did you forget to call beginStructure() ?)
Invalid current audio plugin
Selection changed 0
Selection changed 0

** (gnome-ring:1150): CRITICAL **: Unable to create EDS registry: Error calling StartServiceByName for org.gnome.evolution.dataserver.Sources5: GDBus.Error:org.freedesktop.DBus.Error.Spawn.ChildSignaled: Process org.gnome.evolution.dataserver.Sources5 received signal 5

  C-c C-c
lukas@serenity [env]$ 
---8<--- cut here -------------------- end ----->8---

The main window pops up and it works.  I tried to solve this by
propagating evolution-data-server, however, the same thing still
happens.  If evolution-data-server is not explicitly installed, then
ring-client-gnome doesn't find it.  I am not sure how to proceed on
this.  I thought I had seen the same behavior with the package
'gnome-calendar' which also uses evolution-data-server, however, I am
not able to reproduce it now:

---8<--- cut here -------------------- start --->8---
lukas@serenity$ ./pre-inst-env guix environment --no-substitutes --no-grafts --ad-hoc gnome-calendar
warning: failed to install locale: Invalid argument
accepted connection from pid 6782, user lukas
lukas@serenity [env]$ gnome-calendar

(process:6793): libecal-CRITICAL **: e_cal_util_get_system_timezone: assertion 'location != NULL' failed

** (process:6793): WARNING **: Failed to access calendar configuration: Error calling StartServiceByName for org.gnome.evolution.dataserver.Sources5: GDBus.Error:org.freedesktop.DBus.Error.Spawn.ChildSignaled: Process org.gnome.evolution.dataserver.Sources5 received signal 5

** (process:6793): CRITICAL **: e_cal_data_model_set_timezone: assertion 'zone != NULL' failed

(gnome-calendar:6793): Gtk-WARNING **: Locale not supported by C library.
	Using the fallback 'C' locale.

(gnome-calendar:6793): libecal-CRITICAL **: e_cal_util_get_system_timezone: assertion 'location != NULL' failed

(gnome-calendar:6793): libecal-CRITICAL **: e_cal_util_get_system_timezone: assertion 'location != NULL' failed

(gnome-calendar:6793): GLib-GIO-ERROR **: Settings schema 'org.gnome.shell.calendar' is not installed

Trace/breakpoint trap
lukas@serenity [env]$ exit
lukas@serenity$ ./pre-inst-env guix environment --no-substitutes --no-grafts --ad-hoc gnome-calendar evolution-data-server
warning: failed to install locale: Invalid argument
accepted connection from pid 6805, user lukas
The following derivations will be built:
   /gnu/store/3p1ggs14p303s7l348qvvkaxlhx93g96-profile.drv
   /gnu/store/wkv432071y8ny4805wx7l8dz738il5ap-ca-certificate-bundle.drv
   /gnu/store/m7cx7q37qfk0bzql20cvgb38pqy2qjyx-xdg-mime-database.drv
   /gnu/store/jjj4628gf3mrvy4psaqsl3frl4wl310j-xdg-desktop-database.drv
   /gnu/store/i66lqa6sik03m8f1qnw7yha1p2cnc25a-info-dir.drv
   /gnu/store/82gf9ak5sr7s6imbvgdi8aahw6z3xb3y-gtk-icon-themes.drv
   /gnu/store/3lhi0yx05k5f3fplnpasksyqfsw5gkyp-fonts-dir.drv
warning: collision encountered: /gnu/store/grppcf85880nbzfvj9rg4fc90zx7papz-gtk+-3.20.3/share/icons/hicolor/icon-theme.cache /gnu/store/153wx94y4505kjlbvfyr20q8bafjv998-gnome-calendar-3.20.2/share/icons/hicolor/icon-theme.cache 
warning: arbitrarily choosing /gnu/store/grppcf85880nbzfvj9rg4fc90zx7papz-gtk+-3.20.3/share/icons/hicolor/icon-theme.cache
warning: collision encountered: /gnu/store/ry5ylm1fyjpr875gwga39vj459ccld4q-gtk-icon-themes/share/icons/hicolor/icon-theme.cache /gnu/store/grppcf85880nbzfvj9rg4fc90zx7papz-gtk+-3.20.3/share/icons/hicolor/icon-theme.cache /gnu/store/153wx94y4505kjlbvfyr20q8bafjv998-gnome-calendar-3.20.2/share/icons/hicolor/icon-theme.cache 
warning: arbitrarily choosing /gnu/store/ry5ylm1fyjpr875gwga39vj459ccld4q-gtk-icon-themes/share/icons/hicolor/icon-theme.cache
warning: collision encountered: /gnu/store/kav2jb48w3m18d43bk1f7rxziawpi9sa-evolution-data-server-3.20.1/share/glib-2.0/schemas/gschemas.compiled /gnu/store/grppcf85880nbzfvj9rg4fc90zx7papz-gtk+-3.20.3/share/glib-2.0/schemas/gschemas.compiled /gnu/store/153wx94y4505kjlbvfyr20q8bafjv998-gnome-calendar-3.20.2/share/glib-2.0/schemas/gschemas.compiled 
warning: arbitrarily choosing /gnu/store/kav2jb48w3m18d43bk1f7rxziawpi9sa-evolution-data-server-3.20.1/share/glib-2.0/schemas/gschemas.compiled
lukas@serenity [env]$ gnome-calendar

(process:6859): libecal-CRITICAL **: e_cal_util_get_system_timezone: assertion 'location != NULL' failed

** (process:6859): WARNING **: Failed to access calendar configuration: Error calling StartServiceByName for org.gnome.evolution.dataserver.Sources5: GDBus.Error:org.freedesktop.DBus.Error.Spawn.ChildSignaled: Process org.gnome.evolution.dataserver.Sources5 received signal 5

** (process:6859): CRITICAL **: e_cal_data_model_set_timezone: assertion 'zone != NULL' failed

(gnome-calendar:6859): Gtk-WARNING **: Locale not supported by C library.
	Using the fallback 'C' locale.

(gnome-calendar:6859): libecal-CRITICAL **: e_cal_util_get_system_timezone: assertion 'location != NULL' failed

(gnome-calendar:6859): libecal-CRITICAL **: e_cal_util_get_system_timezone: assertion 'location != NULL' failed

(gnome-calendar:6859): GLib-GIO-ERROR **: Settings schema 'org.gnome.shell.calendar' is not installed

Trace/breakpoint trap

---8<--- cut here -------------------- end ----->8---

It fails in both cases.

To come back to your question:  I am not fully convinced that other
packages using evolution-data-server are able to properly use it as an
input.  I am pretty sure that propagating evolution-data-server does not
make it a lot better.  Should I move it to 'inputs'?


Thank you for your review!
Best,
Lukas
Danny Milosavljevic Sept. 25, 2016, 11:35 p.m. UTC | #3
Hi,

> I was not sure how to handle this properly.  The package libring
> provides a program 'dring', which is a daemon that, as far as I
> understand, does all the communication with peers on the internet.  So
> in order to place a call, one first needs to run 'dring &' and then
> start the ring-client-gnome.  If the ring daemon is not running, then
> ring-client-gnome won't do anything useful, it will just error out on
> startup.
> 
> Looking at the manual, this does not justify propagation.  My intention
> was that people can just install ring-client-gnome in a profile and it
> will work.  If libring is not propagated, it will also need to be
> installed by hand.

I think it's fine to be propagated in this case - but let's see what the others say.

> Is there a good way to specify this kind of runtime requirement?  I
> could also just move it to 'inputs' and put a hint in the description
> that libring should be installed alongside ring-client-gnome.

Good question.

> (gnome-ring:711): GLib-GIO-ERROR **: Settings schema 'org.gnome.Evolution.DefaultSources' is not installed
> (gnome-calendar:6793): GLib-GIO-ERROR **: Settings schema 'org.gnome.shell.calendar' is not installed
> ** (process:6859): WARNING **: Failed to access calendar configuration: Error calling StartServiceByName for org.gnome.evolution.dataserver.Sources
> (gnome-calendar:6859): GLib-GIO-ERROR **: Settings schema 'org.gnome.shell.calendar' is not installed

Hmmm... I don't use GNOME - so no idea. I have to defer to people more knowledgeable about it. How does a GNOME program find other program's settings schemas in Guix? Also it seems it's trying to use dbus (?) in order to start the evolution data server. How is that searched for?
Pjotr Prins Oct. 23, 2016, 3:36 p.m. UTC | #4
On Mon, Sep 26, 2016 at 01:35:04AM +0200, Danny Milosavljevic wrote:
> > (gnome-ring:711): GLib-GIO-ERROR **: Settings schema 'org.gnome.Evolution.DefaultSources' is not installed
> > (gnome-calendar:6793): GLib-GIO-ERROR **: Settings schema 'org.gnome.shell.calendar' is not installed
> > ** (process:6859): WARNING **: Failed to access calendar configuration: Error calling StartServiceByName for org.gnome.evolution.dataserver.Sources
> > (gnome-calendar:6859): GLib-GIO-ERROR **: Settings schema 'org.gnome.shell.calendar' is not installed
> 
> Hmmm... I don't use GNOME - so no idea. I have to defer to people more knowledgeable about it. How does a GNOME program find other program's settings schemas in Guix? Also it seems it's trying to use dbus (?) in order to start the evolution data server. How is that searched for?

I am hitting a similar problem with gnumeric. Install latest, open
spreadsheet, hit 'safe as' and you get:

(gnumeric:1974): GLib-GIO-ERROR **: Settings schema 'org.gtk.Settings.FileChooser' is not installed

(bit annoying as some work got lost) but easy to reproduce.

This issue suggests a solution:

  http://stackoverflow.com/questions/9678301/can-not-use-gtk3-filechooser-on-mac-osx#9684626

i.e., the builder needs to run glib-compile-schemas [path to
org.gtk.Settings.FileChooser.gschema]. There is a compiled schema in
the path, but maybe not for FileChooser and others.

Pj.
--
diff mbox

Patch

From 10a6216d59e8128c0d6208c5f0487825f3a956a0 Mon Sep 17 00:00:00 2001
From: Lukas Gradl <lgradl@openmailbox.org>
Date: Sun, 28 Aug 2016 14:05:28 -0500
Subject: [PATCH 10/10] gnu: Add ring-client-gnome.

* gnu/packages/telephony.scm (ring-client-gnome): New variable.
---
 gnu/packages/telephony.scm | 52 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)

diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 7acb2dc..6df564f 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -23,6 +23,7 @@ 
 
 (define-module (gnu packages telephony)
   #:use-module (gnu packages)
+  #:use-module (gnu packages aidc)
   #:use-module (gnu packages audio)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
@@ -30,8 +31,12 @@ 
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages crypto)
+  #:use-module (gnu packages documentation)
+  #: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 libupnp)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages multiprecision)
@@ -611,3 +616,50 @@  protocols, as well as decentralized calling using P2P-DHT.
 This package provides a library common to all Ring clients.")
       (home-page "https://ring.cx/")
       (license license:gpl3+))))
+
+
+(define-public ring-client-gnome
+  (let ((commit "1a468b9e6fae7c4426c590c1b5eee2718e0c0001")) ; This is the
+                                        ; commit used in the AUR package.
+    (package
+      (name "ring-client-gnome")
+      (version (string-append "1.0.0-1." (string-take commit 7)))
+      (source
+       (origin
+         (method git-fetch)
+         (uri
+          (git-reference
+           (url (string-append
+                 "https://gerrit-ring.savoirfairelinux.com/" name))
+           (commit commit)))
+         (sha256
+          (base32
+           "07r0yky60c0zxq4slr7zxgmiknrpybzq94kk1j4khml6nlbjbvp2"))))
+      (build-system cmake-build-system)
+      (inputs
+       `(("libringclient" ,libringclient)
+         ("gtk+" ,gtk+)
+         ("glib:bin" ,glib "bin")
+         ("qrencode" ,qrencode)
+         ("libnotify" ,libnotify)
+         ("clutter" ,clutter)
+         ("clutter-gtk" ,clutter-gtk)
+         ("gettext" ,gnu-gettext)))
+      (native-inputs
+       `(("pkg-config" ,pkg-config)
+         ("doxygen" ,doxygen)))
+      (propagated-inputs
+       `(("libring" ,libring) ; This is needed to run dring.
+         ("adwaita-icon-theme" ,adwaita-icon-theme)
+         ("evolution-data-server" ,evolution-data-server)))
+      (arguments
+       `(#:tests? #f)) ; There is no testsuite.
+      (synopsis "Distributed multimedia communications platform")
+      (description "Ring is a secure and distributed voice, video and chat
+communication platform that requires no centralized server and leaves the
+power of privacy in the hands of the user.  It supports the SIP and IAX
+protocols, as well as decentralized calling using P2P-DHT.
+
+This package provides the Ring client for the Gnome Desktop.")
+      (home-page "https://ring.cx/")
+      (license license:gpl3+))))
-- 
2.9.0