unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#28421] [PATCH] gnu: Add uim.
@ 2017-09-11 20:22 Arun Isaac
  2017-09-12 12:55 ` Ludovic Courtès
  0 siblings, 1 reply; 9+ messages in thread
From: Arun Isaac @ 2017-09-11 20:22 UTC (permalink / raw)
  To: 28421

* gnu/packages/xorg.scm (uim): New variable.
---
 gnu/packages/xorg.scm | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 77 insertions(+)

diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index b72153894..267f3db59 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -13,6 +13,7 @@
 ;;; Copyright © 2016, 2017 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -39,10 +40,12 @@
   #:use-module (guix build-system python)
   #:use-module (guix utils)
   #:use-module (gnu packages)
+  #:use-module (gnu packages anthy)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages emacs)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages freedesktop)
@@ -54,6 +57,7 @@
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
   #:use-module (gnu packages libbsd)
+  #:use-module (gnu packages libedit)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages m4)
@@ -62,6 +66,7 @@
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages qt)
   #:use-module (gnu packages spice)
   #:use-module (gnu packages video)
   #:use-module (gnu packages xiph)
@@ -5970,3 +5975,75 @@ disconnect from these programs and reconnect from the same or another machine,
 without losing any state.  It can also be used to forward full desktops from
 X11 servers, Windows, or macOS.")
     (license license:gpl2+)))
+
+(define-public uim
+  (package
+    (name "uim")
+    (version "1.8.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/uim/uim/releases/download/uim-1.8.6/uim-"
+                           version ".tar.bz2"))
+       (sha256
+        (base32
+         "0pr3rfqpxha8p6cxzdjsxbbmmr76riklzw36f68phd1zqw1sh7kv"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("libedit" ,libedit)
+       ("libxft" ,libxft)
+       ("m17n-lib" ,m17n-lib)))
+    (native-inputs
+     `(("anthy" ,anthy)
+       ("emacs" ,emacs-minimal)
+       ("gtk+" ,gtk+)
+       ("gtk+" ,gtk+-2)
+       ("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)
+       ("qt" ,qt-4)))
+    (arguments
+     `(#:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (guix build emacs-utils))
+       #:imported-modules (,@%gnu-build-system-modules
+                           (guix build emacs-utils))
+       #:configure-flags
+       (list "--with-anthy-utf8"
+             "--with-qt4-immodule"
+             "--with-qt4"
+             (string-append "--with-lispdir=" %output
+                            "/share/emacs/site-lisp/guix.d")
+             ;; Set proper runpath
+             (string-append "LDFLAGS=-Wl,-rpath="
+                            (assoc-ref %outputs "out")
+                            "/lib"))
+       #:phases
+       (modify-phases %standard-phases
+         ;; Set path of uim-el-agent and uim-el-helper-agent executables
+         (add-after 'configure 'configure-uim-el
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "emacs/uim-var.el"
+               (("\"(uim-el-agent|uim-el-helper-agent)\"" _ executable)
+                (string-append "\"" (assoc-ref outputs "out")
+                               "/bin/" executable "\"")))))
+         ;; Generate emacs autoloads for uim.el
+         (add-after 'install 'make-autoloads
+           (lambda* (#:key outputs #:allow-other-keys)
+             (emacs-generate-autoloads
+              ,name (string-append (assoc-ref outputs "out")
+                                   "/share/emacs/site-lisp")))))))
+    (home-page "https://github.com/uim/uim")
+    (synopsis "Multilingual input method framework")
+    (description "uim is a multilingual input method library and environment.
+It provides a simple, easily extensible and high code-quality input method
+development platform, and useful input method environment for users of desktop
+and embedded platforms.")
+    (license (list license:lgpl2.1+ ; scm/py.scm, pixmaps/*.{svg,png} (see pixmaps/README)
+                   license:gpl2+ ; scm/pinyin-big5.scm
+                   license:gpl3+ ; scm/elatin-rules.cm
+                   license:public-domain ; scm/input-parse.scm, scm/match.scm
+                   license:lgpl2.0+ ; gtk2/toolbar/eggtrayicon.{ch},
+                                    ; qt3/chardict/kseparator.{cpp,h},
+                                    ; qt3/pref/kseparator.{cpp,h}
+                   license:bsd-3)))) ; pixmaps/*.{svg,png} (see
+                                     ; pixmaps/README), all other files
-- 
2.14.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [bug#28421] [PATCH] gnu: Add uim.
       [not found] <20170911202204.23647-1-arunisaac@systemreboot.net>
@ 2017-09-12  7:34 ` Arun Isaac
  0 siblings, 0 replies; 9+ messages in thread
From: Arun Isaac @ 2017-09-12  7:34 UTC (permalink / raw)
  To: 28421


> +       #:phases
> +       (modify-phases %standard-phases
> +         ;; Set path of uim-el-agent and uim-el-helper-agent executables
> +         (add-after 'configure 'configure-uim-el
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (substitute* "emacs/uim-var.el"
> +               (("\"(uim-el-agent|uim-el-helper-agent)\"" _ executable)
> +                (string-append "\"" (assoc-ref outputs "out")
> +                               "/bin/" executable "\"")))))
> +         ;; Generate emacs autoloads for uim.el
> +         (add-after 'install 'make-autoloads
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (emacs-generate-autoloads
> +              ,name (string-append (assoc-ref outputs "out")
> +                                   "/share/emacs/site-lisp")))))))

I have missed returning #t from these two phases. I'll fix those in a
subsequent patch once somebody reviews this patch, and suggests any
other changes.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#28421] [PATCH] gnu: Add uim.
  2017-09-11 20:22 Arun Isaac
@ 2017-09-12 12:55 ` Ludovic Courtès
  2017-09-13 23:49   ` Arun Isaac
                     ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Ludovic Courtès @ 2017-09-12 12:55 UTC (permalink / raw)
  To: Arun Isaac; +Cc: 28421

Arun Isaac <arunisaac@systemreboot.net> skribis:

> * gnu/packages/xorg.scm (uim): New variable.

[...]

> +    (native-inputs
> +     `(("anthy" ,anthy)
> +       ("emacs" ,emacs-minimal)
> +       ("gtk+" ,gtk+)
> +       ("gtk+" ,gtk+-2)
> +       ("intltool" ,intltool)
> +       ("pkg-config" ,pkg-config)
> +       ("qt" ,qt-4)))

GTK+ and Qt are native inputs?

Also, is Qt 5 supported?  That would be best.

Besides, would it make sense to split the thing into several outputs to
avoid the huge dependencies?

> +    (home-page "https://github.com/uim/uim")
> +    (synopsis "Multilingual input method framework")
> +    (description "uim is a multilingual input method library and environment.
> +It provides a simple, easily extensible and high code-quality input method
> +development platform, and useful input method environment for users of desktop
> +and embedded platforms.")

I’m not clear if it’s a later above Qt/GTK+ or something entirely
separate?

Apart from that, LGTM with phases that return #t as you noted.

Thanks!

Ludo’.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#28421] [PATCH] gnu: Add uim.
  2017-09-12 12:55 ` Ludovic Courtès
@ 2017-09-13 23:49   ` Arun Isaac
       [not found]   ` <82a195b0.AEQAQDMYN5MAAAAAAAAAAAOzWv8AAAACwQwAAAAAAAW9WABZucP6@mailjet.com>
  2017-09-23  6:50   ` Arun Isaac
  2 siblings, 0 replies; 9+ messages in thread
From: Arun Isaac @ 2017-09-13 23:49 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 28421


>> * gnu/packages/xorg.scm (uim): New variable.
>
> [...]
>
>> +    (native-inputs
>> +     `(("anthy" ,anthy)
>> +       ("emacs" ,emacs-minimal)
>> +       ("gtk+" ,gtk+)
>> +       ("gtk+" ,gtk+-2)
>> +       ("intltool" ,intltool)
>> +       ("pkg-config" ,pkg-config)
>> +       ("qt" ,qt-4)))
>
> GTK+ and Qt are native inputs?

The package has gtk and qt programs to set uim preferences. At least,
those must need gtk and qt as inputs. So, you're right -- gtk and qt
should be inputs, not native inputs.

Also, I think anthy should be an input, not a native input.

> Also, is Qt 5 supported?  That would be best.

It looks there is no release yet that supports Qt 5, though there is
support in the master branch.

https://github.com/uim/uim/issues/61

> Besides, would it make sense to split the thing into several outputs to
> avoid the huge dependencies?

I don't know if it's a good idea to split the package into a gtk output
and a qt output. What if the user needs multilingual input in both gtk
and qt programs?

Also, this package can be built in many different ways -- with and
without the gtk and qt helper programs (for uim preferences), with and
without anthy support, with and without m17nlib support, etc. I don't
know where to draw the line, and choose only a few outputs. The
configure flags and dependencies, as they stand now, I copied from Arch
Linux.

https://git.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/uim

> I’m not clear if it’s a later above Qt/GTK+ or something entirely
> separate?

I am not entirely sure either but I think at least the core library
(libuim) is entirely separate.

> Apart from that, LGTM with phases that return #t as you noted.

Will send an updated patch with all changes discussed.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#28421] [PATCH] gnu: Add uim.
       [not found]   ` <82a195b0.AEQAQDMYN5MAAAAAAAAAAAOzWv8AAAACwQwAAAAAAAW9WABZucP6@mailjet.com>
@ 2017-09-14  7:00     ` Ludovic Courtès
  0 siblings, 0 replies; 9+ messages in thread
From: Ludovic Courtès @ 2017-09-14  7:00 UTC (permalink / raw)
  To: Arun Isaac; +Cc: 28421

Hi Arun,

Arun Isaac <arunisaac@systemreboot.net> skribis:

>>> * gnu/packages/xorg.scm (uim): New variable.
>>
>> [...]
>>
>>> +    (native-inputs
>>> +     `(("anthy" ,anthy)
>>> +       ("emacs" ,emacs-minimal)
>>> +       ("gtk+" ,gtk+)
>>> +       ("gtk+" ,gtk+-2)
>>> +       ("intltool" ,intltool)
>>> +       ("pkg-config" ,pkg-config)
>>> +       ("qt" ,qt-4)))
>>
>> GTK+ and Qt are native inputs?
>
> The package has gtk and qt programs to set uim preferences. At least,
> those must need gtk and qt as inputs. So, you're right -- gtk and qt
> should be inputs, not native inputs.
>
> Also, I think anthy should be an input, not a native input.

OK.

>> Also, is Qt 5 supported?  That would be best.
>
> It looks there is no release yet that supports Qt 5, though there is
> support in the master branch.
>
> https://github.com/uim/uim/issues/61

Good.

>> Besides, would it make sense to split the thing into several outputs to
>> avoid the huge dependencies?
>
> I don't know if it's a good idea to split the package into a gtk output
> and a qt output. What if the user needs multilingual input in both gtk
> and qt programs?
>
> Also, this package can be built in many different ways -- with and
> without the gtk and qt helper programs (for uim preferences), with and
> without anthy support, with and without m17nlib support, etc. I don't
> know where to draw the line, and choose only a few outputs. The
> configure flags and dependencies, as they stand now, I copied from Arch
> Linux.
>
> https://git.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/uim

I think the question is: are GTK+ and Qt needed just for the preference
UI, or are they needed to enable support for this input method in GTK+
and Qt applications?

If it’s the latter, we definitely need to keep both.

If it’s the former, perhaps we can have one package that simply provides
libuim and does not depend on a GUI toolkit (“uim-minimal”), and another
one (or two) that provide the GUIs.  Alternately, there could be a “lib”
output (no dependency on GTK+/Qt).

Thoughts?

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#28421] [PATCH] gnu: Add uim.
  2017-09-12 12:55 ` Ludovic Courtès
  2017-09-13 23:49   ` Arun Isaac
       [not found]   ` <82a195b0.AEQAQDMYN5MAAAAAAAAAAAOzWv8AAAACwQwAAAAAAAW9WABZucP6@mailjet.com>
@ 2017-09-23  6:50   ` Arun Isaac
  2017-09-23 16:35     ` Ludovic Courtès
  2 siblings, 1 reply; 9+ messages in thread
From: Arun Isaac @ 2017-09-23  6:50 UTC (permalink / raw)
  To: 28421


Sorry for the late reply. Somehow, your last mail was not delivered to
my inbox. I just saw it on the debbugs web interface.

> I think the question is: are GTK+ and Qt needed just for the
> preference UI, or are they needed to enable support for this input
> method in GTK+ and Qt applications?

I ran `ldd lib/gtk-2.0/2.10.0/immodules/im-uim.so | grep gtk' in uim's
store directory, and got

libgtk-x11-2.0.so.0 => /gnu/store/6wbbjj5f9ldbf7gpgah16pw2kfw3q6ij-gtk+-2.24.31/lib/libgtk-x11-2.0.so.0 (0x00007ff9de133000)
libgdk-x11-2.0.so.0 => /gnu/store/6wbbjj5f9ldbf7gpgah16pw2kfw3q6ij-gtk+-2.24.31/lib/libgdk-x11-2.0.so.0 (0x00007ff9ddc58000)

Similar output for `ldd lib/gtk-3.0/3.0.0/immodules/im-uim.so | grep
gtk'. So, I guess gtk+ is needed for this input method to work in gtk+
applications. Must be likewise for qt.

 If it's the latter, we definitely need to keep both.

Debian's solution is to have a separate uim package for each frontend --
uim-gtk2, uim-gtk3, uim-qt, uim-el, uim-fep, etc. This seems a little
expensive. But, perhaps we can take the middle ground, and have two
outputs

* a gtk output that supports gtk2, gtk3 and others
* a qt output that supports qt and others

WDYT?

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#28421] [PATCH] gnu: Add uim.
  2017-09-23  6:50   ` Arun Isaac
@ 2017-09-23 16:35     ` Ludovic Courtès
  2017-09-23 19:05       ` Arun Isaac
       [not found]       ` <15afe43a.AEQAQk2GuKIAAAAAAAAAAAOzWv8AAAACwQwAAAAAAAW9WABZxrCd@mailjet.com>
  0 siblings, 2 replies; 9+ messages in thread
From: Ludovic Courtès @ 2017-09-23 16:35 UTC (permalink / raw)
  To: Arun Isaac; +Cc: 28421

Hi Arun,

Arun Isaac <arunisaac@systemreboot.net> skribis:

> Sorry for the late reply. Somehow, your last mail was not delivered to
> my inbox. I just saw it on the debbugs web interface.
>
>> I think the question is: are GTK+ and Qt needed just for the
>> preference UI, or are they needed to enable support for this input
>> method in GTK+ and Qt applications?
>
> I ran `ldd lib/gtk-2.0/2.10.0/immodules/im-uim.so | grep gtk' in uim's
> store directory, and got
>
> libgtk-x11-2.0.so.0 => /gnu/store/6wbbjj5f9ldbf7gpgah16pw2kfw3q6ij-gtk+-2.24.31/lib/libgtk-x11-2.0.so.0 (0x00007ff9de133000)
> libgdk-x11-2.0.so.0 => /gnu/store/6wbbjj5f9ldbf7gpgah16pw2kfw3q6ij-gtk+-2.24.31/lib/libgdk-x11-2.0.so.0 (0x00007ff9ddc58000)
>
> Similar output for `ldd lib/gtk-3.0/3.0.0/immodules/im-uim.so | grep
> gtk'. So, I guess gtk+ is needed for this input method to work in gtk+
> applications. Must be likewise for qt.
>
>  If it's the latter, we definitely need to keep both.
>
> Debian's solution is to have a separate uim package for each frontend --
> uim-gtk2, uim-gtk3, uim-qt, uim-el, uim-fep, etc. This seems a little
> expensive. But, perhaps we can take the middle ground, and have two
> outputs
>
> * a gtk output that supports gtk2, gtk3 and others
> * a qt output that supports qt and others
>
> WDYT?

Separate outputs would be fine, though I have a slight preference for
separate packages (I suppose that could be factorized by having a
‘make-uim’ procedure that takes the GUI toolkit and returns the
corresponding package), since that would be easier to build (no need to
download/build all the toolkits.)

Now, whether you opt for separate packages or separate outputs, it
doesn’t have to be as fine-grain as what Debian’s does.  A single
package/output for both GTK versions would be fine, for instance.

Thanks for looking into it!

Ludo’.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#28421] [PATCH] gnu: Add uim.
  2017-09-23 16:35     ` Ludovic Courtès
@ 2017-09-23 19:05       ` Arun Isaac
       [not found]       ` <15afe43a.AEQAQk2GuKIAAAAAAAAAAAOzWv8AAAACwQwAAAAAAAW9WABZxrCd@mailjet.com>
  1 sibling, 0 replies; 9+ messages in thread
From: Arun Isaac @ 2017-09-23 19:05 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 28421


Ludovic Courtès <ludo@gnu.org> writes:

> Separate outputs would be fine, though I have a slight preference for
> separate packages

A general question: For what use cases do we use outputs, and for what
use cases do we use separate packages? How are these two features
different?

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#28421] [PATCH] gnu: Add uim.
       [not found]       ` <15afe43a.AEQAQk2GuKIAAAAAAAAAAAOzWv8AAAACwQwAAAAAAAW9WABZxrCd@mailjet.com>
@ 2017-09-24 19:48         ` Ludovic Courtès
  0 siblings, 0 replies; 9+ messages in thread
From: Ludovic Courtès @ 2017-09-24 19:48 UTC (permalink / raw)
  To: Arun Isaac; +Cc: 28421

Howdy,

Arun Isaac <arunisaac@systemreboot.net> skribis:

> Ludovic Courtès <ludo@gnu.org> writes:
>
>> Separate outputs would be fine, though I have a slight preference for
>> separate packages
>
> A general question: For what use cases do we use outputs, and for what
> use cases do we use separate packages? How are these two features
> different?

They’re similar, indeed.  In some cases, separate outputs is the only
mechanism that can be used—for instance for “debug” outputs, or even
“lib” outputs to some extent.

In other cases, such as this one, there’s no practical difference
between having separate outputs and having separate packages.

When there’s a choice, I tend to prefer to use outputs for the
“standard” things (“lib”, “debug”, “doc”, etc.), and separate packages
for less obvious splits (“qt”, “gtk”, etc.)

This is a very informal description.  Maybe someone could articulate it
better and we could provide guidelines in the manual?

Anyway, HTH!

Ludo’.

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2017-09-24 19:49 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20170911202204.23647-1-arunisaac@systemreboot.net>
2017-09-12  7:34 ` [bug#28421] [PATCH] gnu: Add uim Arun Isaac
2017-09-11 20:22 Arun Isaac
2017-09-12 12:55 ` Ludovic Courtès
2017-09-13 23:49   ` Arun Isaac
     [not found]   ` <82a195b0.AEQAQDMYN5MAAAAAAAAAAAOzWv8AAAACwQwAAAAAAAW9WABZucP6@mailjet.com>
2017-09-14  7:00     ` Ludovic Courtès
2017-09-23  6:50   ` Arun Isaac
2017-09-23 16:35     ` Ludovic Courtès
2017-09-23 19:05       ` Arun Isaac
     [not found]       ` <15afe43a.AEQAQk2GuKIAAAAAAAAAAAOzWv8AAAACwQwAAAAAAAW9WABZxrCd@mailjet.com>
2017-09-24 19:48         ` Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).