GNU bug report logs - #49235
[PATCH] gnu: Add oneko.

Previous Next

Package: guix-patches;

Reported by: Timotej Lazar <timotej.lazar <at> araneo.si>

Date: Sat, 26 Jun 2021 19:22:01 UTC

Severity: normal

Tags: patch

Done: Leo Prikler <leo.prikler <at> student.tugraz.at>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 49235 in the body.
You can then email your comments to 49235 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#49235; Package guix-patches. (Sat, 26 Jun 2021 19:22:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Timotej Lazar <timotej.lazar <at> araneo.si>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Sat, 26 Jun 2021 19:22:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Timotej Lazar <timotej.lazar <at> araneo.si>
To: guix-patches <at> gnu.org
Cc: Timotej Lazar <timotej.lazar <at> araneo.si>
Subject: [PATCH] gnu: Add oneko.
Date: Sat, 26 Jun 2021 21:20:49 +0200
* gnu/packages/toys.scm (oneko): New variable.
---
This adds the oneko version of the original xneko toy. The license
statement seems to be at the end of README (not sure as I can’t read
Japanese), but Debian and FSF agree it’s in the public domain.

`guix lint` complains about a newer version, but the only differences
are a somewhat less broken build system and an additional bitmap of the
BSD daemon, which is trademarked. I opted for this version instead of
basically reverting all changes from the newer one.

Thanks!
Timotej

 gnu/packages/toys.scm | 50 ++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 49 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/toys.scm b/gnu/packages/toys.scm
index bbd5753841..d396062fe1 100644
--- a/gnu/packages/toys.scm
+++ b/gnu/packages/toys.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017, 2018, 2020 Tobias Geerinckx-Rice <me <at> tobias.gr>
 ;;; Copyright © 2019 Jesse Gibbons <jgibbons2357+guix <at> gmail.com>
-;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar <at> araneo.si>
+;;; Copyright © 2019, 2020, 2021 Timotej Lazar <timotej.lazar <at> araneo.si>
 ;;; Copyright © 2020 Efraim Flashner <efraim <at> flashner.co.il>
 ;;; Copyright © 2021 Leo Famulari <leo <at> famulari.name>
 ;;;
@@ -36,6 +36,54 @@
   #:use-module (guix packages)
   #:use-module (guix utils))
 
+(define-public oneko
+  (package
+    (name "oneko")
+    ;; Identical to version 1.2.sakura.5b but without the trademarked BSD daemon.
+    (version "1.1b.sakura.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "http://www.daidouji.com/oneko/distfiles/oneko-" version ".tar.gz"))
+       (sha256
+        (base32 "0dh5xr579clq0871pk6m7xfmsa24jk3idgx61k7skl37i40klaa3"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("imake" ,imake)))
+    (inputs
+     `(("libx11" ,libx11)
+       ("libxext" ,libxext)))
+    (arguments
+     `(#:tests? #f ; no tests
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda _
+             (substitute* "Imakefile"
+               ((" = /bin/") " = ") ; don’t use absolute paths for cp, rm and strip
+               (("\\$\\(DESTDIR\\)/man") "$(DESTDIR)/share/man"))
+             (invoke "xmkmf")
+             (substitute* "Makefile"
+               ;; Fix incorrectly generated compiler flags.
+               (("(CDEBUGFLAGS = ).*" _ front) (string-append front "-O2\n")))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (doc (string-append out "/share/doc/" ,name)))
+               (mkdir-p (string-append out "/bin"))
+               (mkdir-p (string-append out "/share/man/man1"))
+               (invoke "make" (string-append "DESTDIR=" out) "install")
+               (for-each (lambda (file) (install-file file doc))
+                         (find-files "." "README.*")))
+             #t)))))
+    (home-page "http://www.daidouji.com/oneko/")
+    (synopsis "Cute cat chasing your mouse pointer")
+    (description "Displays a cat or another animated character that chases the
+mouse pointer around the screen while you work.")
+    (license license:public-domain))) ; see https://directory.fsf.org/wiki/Oneko
+
 (define-public sl
   (package
     (name "sl")
-- 
2.32.0





Information forwarded to guix-patches <at> gnu.org:
bug#49235; Package guix-patches. (Sun, 27 Jun 2021 12:47:02 GMT) Full text and rfc822 format available.

Message #8 received at 49235 <at> debbugs.gnu.org (full text, mbox):

From: Leo Prikler <leo.prikler <at> student.tugraz.at>
To: Timotej Lazar <timotej.lazar <at> araneo.si>, 49235 <at> debbugs.gnu.org
Subject: Re: [PATCH] gnu: Add oneko.
Date: Sun, 27 Jun 2021 14:45:45 +0200
Am Samstag, den 26.06.2021, 21:20 +0200 schrieb Timotej Lazar:
> * gnu/packages/toys.scm (oneko): New variable.
> ---
> This adds the oneko version of the original xneko toy. The license
> statement seems to be at the end of README (not sure as I can’t read
> Japanese), but Debian and FSF agree it’s in the public domain.
基本的にPDSですが、バグ修正や機能拡張は(こっそりでもいいですから)私(kato <at> ntts.co.jp)に教えて下さいね。
バージョンアップもするつもりです。
With my limited Japanese knowledge, this roughly translates to:
"It's basically PDS[1], but if it's about bug fixes or enhancements[2],
please write tell me (kato <at> ntss.co.jp).  I also plan to do version
updates."

[1] probably means public domain software
[2] the bracket expression(こっそりでもいいですから)roughly translates to "because
it's also fine if you do it silently", basically meaning it's also fine
if you fix bugs/enhance the program without telling Kato.

Based on the above, I think both Debian and the FSF are correct in
assuming, that *the code* is public domain.

> `guix lint` complains about a newer version, but the only differences
> are a somewhat less broken build system and an additional bitmap of
> the
> BSD daemon, which is trademarked. I opted for this version instead of
> basically reverting all changes from the newer one.
This, however, seems to be an odd choice to me, particularly because
the "sakura" variant already adds characters that are owned by CLAMP.

『カードキャプターさくら』およびそのキャラクターは CLAMP の著作物です。
ただしそのキャラクターは同人誌等における利用が容認されています。 
CLAMP 学園電子分校(http://www.clamp.f-2.co.jp/)をご参照ください。

This roughly translates to

"Cardcaptor Sakura" and it's characters are owned by CLAMP.
However, it is acceptable to use those characters in Doujin[1] work.
Please see CLAMP 学園電子分校[2](http://www.clamp.f-2.co.jp/)

[1] Japanese media companies are generally lax when it comes to enforce
their IPs against fans of their work, i.e. against doujins.  A
comparable scenario exists in the BBC tacitly allowing Doctor Who
fanfiction.  However, this does not always make them compatible with
free software – ZUN, the creator of Touhou, for instance disallows
commercial reuse without his approval.
[2] It's a proper name, and I'm not attempting to translate it.

Since the site mentioned appears to be currently down, I'll have to do
a little deeper dive to see whether it's actually safe to keep the
Cardcaptor Sakura characters.  However, this does call into the
question whether we can really pin a version that is safe from all
those legally dangerous bits.  I think it is probably safer to use the
same version as Debian (i.e. the currently latest IIUC) and apply the
same patch as Debian here.

Regards,
Leo
> 
>  gnu/packages/toys.scm | 50
> ++++++++++++++++++++++++++++++++++++++++++-
>  1 file changed, 49 insertions(+), 1 deletion(-)
> 
> diff --git a/gnu/packages/toys.scm b/gnu/packages/toys.scm
> index bbd5753841..d396062fe1 100644
> --- a/gnu/packages/toys.scm
> +++ b/gnu/packages/toys.scm
> @@ -1,7 +1,7 @@
>  ;;; GNU Guix --- Functional package management for GNU
>  ;;; Copyright © 2017, 2018, 2020 Tobias Geerinckx-Rice <me <at> tobias.gr
> >
>  ;;; Copyright © 2019 Jesse Gibbons <jgibbons2357+guix <at> gmail.com>
> -;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar <at> araneo.si>
> +;;; Copyright © 2019, 2020, 2021 Timotej Lazar <
> timotej.lazar <at> araneo.si>
>  ;;; Copyright © 2020 Efraim Flashner <efraim <at> flashner.co.il>
>  ;;; Copyright © 2021 Leo Famulari <leo <at> famulari.name>
>  ;;;
> @@ -36,6 +36,54 @@
>    #:use-module (guix packages)
>    #:use-module (guix utils))
>  
> +(define-public oneko
> +  (package
> +    (name "oneko")
> +    ;; Identical to version 1.2.sakura.5b but without the
> trademarked BSD daemon.
> +    (version "1.1b.sakura.5")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (string-append
> +             "http://www.daidouji.com/oneko/distfiles/oneko-"
> version ".tar.gz"))
> +       (sha256
> +        (base32
> "0dh5xr579clq0871pk6m7xfmsa24jk3idgx61k7skl37i40klaa3"))))
> +    (build-system gnu-build-system)
> +    (native-inputs
> +     `(("imake" ,imake)))
> +    (inputs
> +     `(("libx11" ,libx11)
> +       ("libxext" ,libxext)))
> +    (arguments
> +     `(#:tests? #f ; no tests
> +       #:phases
> +       (modify-phases %standard-phases
> +         (replace 'configure
> +           (lambda _
> +             (substitute* "Imakefile"
> +               ((" = /bin/") " = ") ; don’t use absolute paths for
> cp, rm and strip
> +               (("\\$\\(DESTDIR\\)/man") "$(DESTDIR)/share/man"))
> +             (invoke "xmkmf")
> +             (substitute* "Makefile"
> +               ;; Fix incorrectly generated compiler flags.
> +               (("(CDEBUGFLAGS = ).*" _ front) (string-append front
> "-O2\n")))
> +             #t))
> +         (replace 'install
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (let* ((out (assoc-ref outputs "out"))
> +                    (doc (string-append out "/share/doc/" ,name)))
> +               (mkdir-p (string-append out "/bin"))
> +               (mkdir-p (string-append out "/share/man/man1"))
> +               (invoke "make" (string-append "DESTDIR=" out)
> "install")
> +               (for-each (lambda (file) (install-file file doc))
> +                         (find-files "." "README.*")))
> +             #t)))))
> +    (home-page "http://www.daidouji.com/oneko/")
> +    (synopsis "Cute cat chasing your mouse pointer")
> +    (description "Displays a cat or another animated character that
> chases the
> +mouse pointer around the screen while you work.")
> +    (license license:public-domain))) ; see 
> https://directory.fsf.org/wiki/Oneko
> +
>  (define-public sl
>    (package
>      (name "sl")





Information forwarded to guix-patches <at> gnu.org:
bug#49235; Package guix-patches. (Sun, 27 Jun 2021 13:41:01 GMT) Full text and rfc822 format available.

Message #11 received at 49235 <at> debbugs.gnu.org (full text, mbox):

From: Timotej Lazar <timotej.lazar <at> araneo.si>
To: Leo Prikler <leo.prikler <at> student.tugraz.at>, 49235 <at> debbugs.gnu.org
Subject: Re: [PATCH] gnu: Add oneko.
Date: Sun, 27 Jun 2021 15:40:22 +0200
Leo Prikler <leo.prikler <at> student.tugraz.at> [2021-06-27 14:45:45+0200]:
> This roughly translates to
>
> "Cardcaptor Sakura" and it's characters are owned by CLAMP.
> However, it is acceptable to use those characters in Doujin[1] work.
> Please see CLAMP 学園電子分校[2](http://www.clamp.f-2.co.jp/)

Seems that Debian’s analysis, which was my primary source, is somewhat
lacking. It would probably be safest to remove all characters except the
original neko, tora and dog options. I can send a new package using the
latest version with these characters removed.

Thanks for taking the time to investigate this!




Information forwarded to guix-patches <at> gnu.org:
bug#49235; Package guix-patches. (Sun, 27 Jun 2021 13:56:01 GMT) Full text and rfc822 format available.

Message #14 received at 49235 <at> debbugs.gnu.org (full text, mbox):

From: Leo Prikler <leo.prikler <at> student.tugraz.at>
To: Timotej Lazar <timotej.lazar <at> araneo.si>, 49235 <at> debbugs.gnu.org
Subject: Re: [PATCH] gnu: Add oneko.
Date: Sun, 27 Jun 2021 15:55:17 +0200
Am Sonntag, den 27.06.2021, 15:40 +0200 schrieb Timotej Lazar:
> Leo Prikler <leo.prikler <at> student.tugraz.at> [2021-06-27
> 14:45:45+0200]:
> > This roughly translates to
> > 
> > "Cardcaptor Sakura" and it's characters are owned by CLAMP.
> > However, it is acceptable to use those characters in Doujin[1]
> > work.
> > Please see CLAMP 学園電子分校[2](http://www.clamp.f-2.co.jp/)
> 
> Seems that Debian’s analysis, which was my primary source, is
> somewhat
> lacking. It would probably be safest to remove all characters except
> the
> original neko, tora and dog options. I can send a new package using
> the
> latest version with these characters removed.
Upon further investigation, this page appears to have been dead for ~20
years.  The newer CLAMP homepage does not appear to mention doujins at
all and trying to search for a policy of theirs will only yield
unrelated results.

In other words, yeah, keeping only the original neko, tora and dog is
the safest bet here.  Please don't forget to also have a look at the
cursors.  From what I can see only the mouse and the bone should be
fine as they relate to neko and tora or dog respectively.

Regards,
Leo





Information forwarded to guix-patches <at> gnu.org:
bug#49235; Package guix-patches. (Sun, 27 Jun 2021 17:51:01 GMT) Full text and rfc822 format available.

Message #17 received at 49235 <at> debbugs.gnu.org (full text, mbox):

From: Timotej Lazar <timotej.lazar <at> araneo.si>
To: 49235 <at> debbugs.gnu.org
Cc: Timotej Lazar <timotej.lazar <at> araneo.si>
Subject: [PATCH v2] gnu: Add oneko.
Date: Sun, 27 Jun 2021 19:49:33 +0200
* gnu/packages/toys.scm (oneko): New variable.
---
 gnu/local.mk                                  |   1 +
 ...oneko-remove-refs-to-nonfree-bitmaps.patch | 307 ++++++++++++++++++
 gnu/packages/toys.scm                         |  61 +++-
 3 files changed, 368 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/oneko-remove-refs-to-nonfree-bitmaps.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index f507fe566f..2d3ca77504 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1499,6 +1499,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/ocaml-dose3-dont-make-printconf.patch	\
   %D%/packages/patches/ocaml-dose3-Install-mli-cmx-etc.patch	\
   %D%/packages/patches/omake-fix-non-determinism.patch	\
+  %D%/packages/patches/oneko-remove-refs-to-nonfree-bitmaps.patch	\
   %D%/packages/patches/openbabel-fix-crash-on-nwchem-output.patch	\
   %D%/packages/patches/opencascade-oce-glibc-2.26.patch		\
   %D%/packages/patches/opencv-fix-build-of-grfmt_jpeg2000.cpp.patch	\
diff --git a/gnu/packages/patches/oneko-remove-refs-to-nonfree-bitmaps.patch b/gnu/packages/patches/oneko-remove-refs-to-nonfree-bitmaps.patch
new file mode 100644
index 0000000000..2ab4b5dda0
--- /dev/null
+++ b/gnu/packages/patches/oneko-remove-refs-to-nonfree-bitmaps.patch
@@ -0,0 +1,307 @@
+Removes references to bitmaps with unclear copyright status, and related
+program options. Bitmaps themselves are deleted in a source snippet.
+diff --git a/cursors/cursor.include b/cursors/cursor.include
+index ef96d72..1dc3dc2 100644
+--- a/cursors/cursor.include
++++ b/cursors/cursor.include
+@@ -2,9 +2,3 @@
+ #include "mouse_cursor_mask.xbm"
+ #include "bone_cursor.xbm"
+ #include "bone_cursor_mask.xbm"
+-#include "bsd_cursor.xbm"
+-#include "bsd_cursor_mask.xbm"
+-#include "card_cursor.xbm"
+-#include "card_cursor_mask.xbm"
+-#include "petal_cursor.xbm"
+-#include "petal_cursor_mask.xbm"
+diff --git a/oneko.c b/oneko.c
+index d2b81fe..04fa59f 100644
+--- a/oneko.c
++++ b/oneko.c
+@@ -33,7 +33,7 @@ XColor	theBackgroundColor;		/* $@?'(J ($@%P%C%/%0%i%&%s%I(J) */
+ 
+ int Synchronous = False;
+ /* Types of animals */
+-#define BITMAPTYPES 6
++#define BITMAPTYPES 3
+ typedef struct _AnimalDefaults {
+   char *name;
+   int speed, idle, bitmap_width, bitmap_height;
+@@ -51,12 +51,6 @@ AnimalDefaultsData AnimalDefaultsDataTable[] =
+       mouse_cursor_width,mouse_cursor_height, mouse_cursor_x_hot,mouse_cursor_y_hot },
+   { "dog" , 10, 6, 32, 32, 125000L, 0, 0, bone_cursor_bits,bone_cursor_mask_bits,
+       bone_cursor_width,bone_cursor_height, bone_cursor_x_hot,bone_cursor_y_hot },
+-  { "bsd_daemon" , 16, 6, 32, 32, 300000L, 22, 20, bsd_cursor_bits,bsd_cursor_mask_bits,
+-      bsd_cursor_width,bsd_cursor_height, bsd_cursor_x_hot,bsd_cursor_y_hot },
+-  { "sakura" , 13, 6, 32, 32, 125000L, 0, 0, card_cursor_bits,card_cursor_mask_bits,
+-      card_cursor_width,card_cursor_height, card_cursor_x_hot,card_cursor_y_hot },
+-  { "tomoyo" , 10, 6, 32, 32, 125000L, 32, 32, petal_cursor_bits,petal_cursor_mask_bits,
+-      petal_cursor_width,petal_cursor_height, petal_cursor_x_hot,petal_cursor_y_hot },
+ };
+ 
+ /*
+@@ -154,70 +148,70 @@ typedef struct {
+ 
+ BitmapGCData	BitmapGCDataTable[] =
+ {
+-    { &Mati2GC, &Mati2Xbm,  mati2_bits, mati2_tora_bits, mati2_dog_bits, mati2_bsd_bits, mati2_sakura_bits, mati2_tomoyo_bits,
+-      &Mati2Msk, mati2_mask_bits, mati2_mask_bits, mati2_dog_mask_bits, mati2_bsd_mask_bits, mati2_sakura_mask_bits, mati2_tomoyo_mask_bits },
+-    { &Jare2GC, &Jare2Xbm,  jare2_bits, jare2_tora_bits, jare2_dog_bits, jare2_bsd_bits, jare2_sakura_bits, jare2_tomoyo_bits,
+-      &Jare2Msk, jare2_mask_bits, jare2_mask_bits, jare2_dog_mask_bits, jare2_bsd_mask_bits, jare2_sakura_mask_bits, jare2_tomoyo_mask_bits },
+-    { &Kaki1GC, &Kaki1Xbm,  kaki1_bits, kaki1_tora_bits, kaki1_dog_bits, kaki1_bsd_bits, kaki1_sakura_bits, kaki1_tomoyo_bits,
+-      &Kaki1Msk, kaki1_mask_bits, kaki1_mask_bits, kaki1_dog_mask_bits, kaki1_bsd_mask_bits, kaki1_sakura_mask_bits, kaki1_tomoyo_mask_bits },
+-    { &Kaki2GC, &Kaki2Xbm,  kaki2_bits, kaki2_tora_bits, kaki2_dog_bits, kaki2_bsd_bits, kaki2_sakura_bits, kaki2_tomoyo_bits,
+-      &Kaki2Msk, kaki2_mask_bits, kaki2_mask_bits, kaki2_dog_mask_bits, kaki2_bsd_mask_bits, kaki2_sakura_mask_bits, kaki2_tomoyo_mask_bits },
+-    { &Mati3GC, &Mati3Xbm,  mati3_bits, mati3_tora_bits, mati3_dog_bits, mati3_bsd_bits, mati3_sakura_bits, mati3_tomoyo_bits,
+-      &Mati3Msk, mati3_mask_bits, mati3_mask_bits, mati3_dog_mask_bits, mati3_bsd_mask_bits, mati3_sakura_mask_bits, mati3_tomoyo_mask_bits },
+-    { &Sleep1GC, &Sleep1Xbm,  sleep1_bits, sleep1_tora_bits, sleep1_dog_bits, sleep1_bsd_bits, sleep1_sakura_bits, sleep1_tomoyo_bits,
+-      &Sleep1Msk, sleep1_mask_bits, sleep1_mask_bits, sleep1_dog_mask_bits, sleep1_bsd_mask_bits, sleep1_sakura_mask_bits, sleep1_tomoyo_mask_bits },
+-    { &Sleep2GC, &Sleep2Xbm,  sleep2_bits, sleep2_tora_bits, sleep2_dog_bits, sleep2_bsd_bits, sleep2_sakura_bits, sleep2_tomoyo_bits,
+-      &Sleep2Msk, sleep2_mask_bits, sleep2_mask_bits, sleep2_dog_mask_bits, sleep2_bsd_mask_bits, sleep2_sakura_mask_bits, sleep2_tomoyo_mask_bits },
+-    { &AwakeGC, &AwakeXbm,  awake_bits, awake_tora_bits, awake_dog_bits, awake_bsd_bits, awake_sakura_bits, awake_tomoyo_bits,
+-      &AwakeMsk, awake_mask_bits, awake_mask_bits, awake_dog_mask_bits, awake_bsd_mask_bits, awake_sakura_mask_bits, awake_tomoyo_mask_bits },
+-    { &Up1GC, &Up1Xbm,  up1_bits, up1_tora_bits, up1_dog_bits, up1_bsd_bits, up1_sakura_bits, up1_tomoyo_bits,
+-      &Up1Msk, up1_mask_bits, up1_mask_bits, up1_dog_mask_bits, up1_bsd_mask_bits, up1_sakura_mask_bits, up1_tomoyo_mask_bits },
+-    { &Up2GC, &Up2Xbm,  up2_bits, up2_tora_bits, up2_dog_bits, up2_bsd_bits, up2_sakura_bits, up2_tomoyo_bits,
+-      &Up2Msk, up2_mask_bits, up2_mask_bits, up2_dog_mask_bits, up2_bsd_mask_bits, up2_sakura_mask_bits, up2_tomoyo_mask_bits },
+-    { &Down1GC, &Down1Xbm,  down1_bits, down1_tora_bits, down1_dog_bits, down1_bsd_bits, down1_sakura_bits, down1_tomoyo_bits,
+-      &Down1Msk, down1_mask_bits, down1_mask_bits, down1_dog_mask_bits, down1_bsd_mask_bits, down1_sakura_mask_bits, down1_tomoyo_mask_bits },
+-    { &Down2GC, &Down2Xbm,  down2_bits, down2_tora_bits, down2_dog_bits, down2_bsd_bits, down2_sakura_bits, down2_tomoyo_bits,
+-      &Down2Msk, down2_mask_bits, down2_mask_bits, down2_dog_mask_bits, down2_bsd_mask_bits, down2_sakura_mask_bits, down2_tomoyo_mask_bits },
+-    { &Left1GC, &Left1Xbm,  left1_bits, left1_tora_bits, left1_dog_bits, left1_bsd_bits, left1_sakura_bits, left1_tomoyo_bits,
+-      &Left1Msk, left1_mask_bits, left1_mask_bits, left1_dog_mask_bits, left1_bsd_mask_bits, left1_sakura_mask_bits, left1_tomoyo_mask_bits },
+-    { &Left2GC, &Left2Xbm,  left2_bits, left2_tora_bits, left2_dog_bits, left2_bsd_bits, left2_sakura_bits, left2_tomoyo_bits,
+-      &Left2Msk, left2_mask_bits, left2_mask_bits, left2_dog_mask_bits, left2_bsd_mask_bits, left2_sakura_mask_bits, left2_tomoyo_mask_bits },
+-    { &Right1GC, &Right1Xbm,  right1_bits, right1_tora_bits, right1_dog_bits, right1_bsd_bits, right1_sakura_bits, right1_tomoyo_bits,
+-      &Right1Msk, right1_mask_bits, right1_mask_bits,right1_dog_mask_bits, right1_bsd_mask_bits, right1_sakura_mask_bits, right1_tomoyo_mask_bits },
+-    { &Right2GC, &Right2Xbm,  right2_bits, right2_tora_bits, right2_dog_bits, right2_bsd_bits, right2_sakura_bits, right2_tomoyo_bits,
+-      &Right2Msk, right2_mask_bits, right2_mask_bits, right2_dog_mask_bits, right2_bsd_mask_bits, right2_sakura_mask_bits, right2_tomoyo_mask_bits },
+-    { &UpLeft1GC, &UpLeft1Xbm,  upleft1_bits, upleft1_tora_bits, upleft1_dog_bits, upleft1_bsd_bits, upleft1_sakura_bits, upleft1_tomoyo_bits,
+-      &UpLeft1Msk, upleft1_mask_bits, upleft1_mask_bits, upleft1_dog_mask_bits, upleft1_bsd_mask_bits, upleft1_sakura_mask_bits, upleft1_tomoyo_mask_bits },
+-    { &UpLeft2GC, &UpLeft2Xbm,  upleft2_bits, upleft2_tora_bits, upleft2_dog_bits, upleft2_bsd_bits, upleft2_sakura_bits, upleft2_tomoyo_bits,
+-      &UpLeft2Msk, upleft2_mask_bits, upleft2_mask_bits,upleft2_dog_mask_bits, upleft2_bsd_mask_bits, upleft2_sakura_mask_bits, upleft2_tomoyo_mask_bits },
+-    { &UpRight1GC, &UpRight1Xbm,  upright1_bits, upright1_tora_bits, upright1_dog_bits, upright1_bsd_bits, upright1_sakura_bits, upright1_tomoyo_bits,
+-      &UpRight1Msk, upright1_mask_bits, upright1_mask_bits,upright1_dog_mask_bits, upright1_bsd_mask_bits, upright1_sakura_mask_bits, upright1_tomoyo_mask_bits },
+-    { &UpRight2GC, &UpRight2Xbm,  upright2_bits, upright2_tora_bits, upright2_dog_bits, upright2_bsd_bits, upright2_sakura_bits, upright2_tomoyo_bits,
+-      &UpRight2Msk, upright2_mask_bits, upright2_mask_bits,upright2_dog_mask_bits, upright2_bsd_mask_bits, upright2_sakura_mask_bits, upright2_tomoyo_mask_bits },
+-    { &DownLeft1GC, &DownLeft1Xbm,  dwleft1_bits, dwleft1_tora_bits, dwleft1_dog_bits, dwleft1_bsd_bits, dwleft1_sakura_bits, dwleft1_tomoyo_bits,
+-      &DownLeft1Msk, dwleft1_mask_bits, dwleft1_mask_bits, dwleft1_dog_mask_bits, dwleft1_bsd_mask_bits, dwleft1_sakura_mask_bits, dwleft1_tomoyo_mask_bits },
+-    { &DownLeft2GC, &DownLeft2Xbm,  dwleft2_bits, dwleft2_tora_bits, dwleft2_dog_bits, dwleft2_bsd_bits, dwleft2_sakura_bits, dwleft2_tomoyo_bits,
+-      &DownLeft2Msk, dwleft2_mask_bits, dwleft2_mask_bits, dwleft2_dog_mask_bits, dwleft2_bsd_mask_bits, dwleft2_sakura_mask_bits, dwleft2_tomoyo_mask_bits },
+-    { &DownRight1GC, &DownRight1Xbm,  dwright1_bits, dwright1_tora_bits, dwright1_dog_bits, dwright1_bsd_bits, dwright1_sakura_bits, dwright1_tomoyo_bits,
+-      &DownRight1Msk, dwright1_mask_bits, dwright1_mask_bits, dwright1_dog_mask_bits, dwright1_bsd_mask_bits, dwright1_sakura_mask_bits, dwright1_tomoyo_mask_bits },
+-    { &DownRight2GC, &DownRight2Xbm,  dwright2_bits, dwright2_tora_bits, dwright2_dog_bits, dwright2_bsd_bits, dwright2_sakura_bits, dwright2_tomoyo_bits,
+-      &DownRight2Msk, dwright2_mask_bits, dwright2_mask_bits, dwright2_dog_mask_bits, dwright2_bsd_mask_bits, dwright2_sakura_mask_bits, dwright2_tomoyo_mask_bits },
+-    { &UpTogi1GC, &UpTogi1Xbm,  utogi1_bits, utogi1_tora_bits, utogi1_dog_bits, utogi1_bsd_bits, utogi1_sakura_bits, utogi1_tomoyo_bits,
+-      &UpTogi1Msk, utogi1_mask_bits, utogi1_mask_bits, utogi1_dog_mask_bits, utogi1_bsd_mask_bits, utogi1_sakura_mask_bits, utogi1_tomoyo_mask_bits },
+-    { &UpTogi2GC, &UpTogi2Xbm,  utogi2_bits, utogi2_tora_bits, utogi2_dog_bits, utogi2_bsd_bits, utogi2_sakura_bits, utogi2_tomoyo_bits,
+-      &UpTogi2Msk, utogi2_mask_bits, utogi2_mask_bits, utogi2_dog_mask_bits, utogi2_bsd_mask_bits, utogi2_sakura_mask_bits, utogi2_tomoyo_mask_bits },
+-    { &DownTogi1GC, &DownTogi1Xbm,  dtogi1_bits, dtogi1_tora_bits, dtogi1_dog_bits, dtogi1_bsd_bits, dtogi1_sakura_bits, dtogi1_tomoyo_bits,
+-      &DownTogi1Msk, dtogi1_mask_bits, dtogi1_mask_bits, dtogi1_dog_mask_bits, dtogi1_bsd_mask_bits, dtogi1_sakura_mask_bits, dtogi1_tomoyo_mask_bits },
+-    { &DownTogi2GC, &DownTogi2Xbm,  dtogi2_bits, dtogi2_tora_bits, dtogi2_dog_bits, dtogi2_bsd_bits, dtogi2_sakura_bits, dtogi2_tomoyo_bits,
+-      &DownTogi2Msk, dtogi2_mask_bits, dtogi2_mask_bits, dtogi2_dog_mask_bits, dtogi2_bsd_mask_bits, dtogi2_sakura_mask_bits, dtogi2_tomoyo_mask_bits },
+-    { &LeftTogi1GC, &LeftTogi1Xbm,  ltogi1_bits, ltogi1_tora_bits, ltogi1_dog_bits, ltogi1_bsd_bits, ltogi1_sakura_bits, ltogi1_tomoyo_bits,
+-      &LeftTogi1Msk, ltogi1_mask_bits, ltogi1_mask_bits,ltogi1_dog_mask_bits, ltogi1_bsd_mask_bits, ltogi1_sakura_mask_bits, ltogi1_tomoyo_mask_bits },
+-    { &LeftTogi2GC, &LeftTogi2Xbm,  ltogi2_bits, ltogi2_tora_bits, ltogi2_dog_bits, ltogi2_bsd_bits, ltogi2_sakura_bits, ltogi2_tomoyo_bits,
+-      &LeftTogi2Msk, ltogi2_mask_bits, ltogi2_mask_bits,ltogi2_dog_mask_bits, ltogi2_bsd_mask_bits, ltogi2_sakura_mask_bits, ltogi2_tomoyo_mask_bits },
+-    { &RightTogi1GC, &RightTogi1Xbm,  rtogi1_bits, rtogi1_tora_bits, rtogi1_dog_bits, rtogi1_bsd_bits, rtogi1_sakura_bits, rtogi1_tomoyo_bits,
+-      &RightTogi1Msk, rtogi1_mask_bits, rtogi1_mask_bits,rtogi1_dog_mask_bits, rtogi1_bsd_mask_bits, rtogi1_sakura_mask_bits, rtogi1_tomoyo_mask_bits },
+-    { &RightTogi2GC, &RightTogi2Xbm,  rtogi2_bits, rtogi2_tora_bits, rtogi2_dog_bits, rtogi2_bsd_bits, rtogi2_sakura_bits, rtogi2_tomoyo_bits,
+-      &RightTogi2Msk, rtogi2_mask_bits, rtogi2_mask_bits,rtogi2_dog_mask_bits, rtogi2_bsd_mask_bits, rtogi2_sakura_mask_bits, rtogi2_tomoyo_mask_bits },
++    { &Mati2GC, &Mati2Xbm,  mati2_bits, mati2_tora_bits, mati2_dog_bits,
++      &Mati2Msk, mati2_mask_bits, mati2_mask_bits, mati2_dog_mask_bits },
++    { &Jare2GC, &Jare2Xbm,  jare2_bits, jare2_tora_bits, jare2_dog_bits,
++      &Jare2Msk, jare2_mask_bits, jare2_mask_bits, jare2_dog_mask_bits },
++    { &Kaki1GC, &Kaki1Xbm,  kaki1_bits, kaki1_tora_bits, kaki1_dog_bits,
++      &Kaki1Msk, kaki1_mask_bits, kaki1_mask_bits, kaki1_dog_mask_bits },
++    { &Kaki2GC, &Kaki2Xbm,  kaki2_bits, kaki2_tora_bits, kaki2_dog_bits,
++      &Kaki2Msk, kaki2_mask_bits, kaki2_mask_bits, kaki2_dog_mask_bits },
++    { &Mati3GC, &Mati3Xbm,  mati3_bits, mati3_tora_bits, mati3_dog_bits,
++      &Mati3Msk, mati3_mask_bits, mati3_mask_bits, mati3_dog_mask_bits },
++    { &Sleep1GC, &Sleep1Xbm,  sleep1_bits, sleep1_tora_bits, sleep1_dog_bits,
++      &Sleep1Msk, sleep1_mask_bits, sleep1_mask_bits, sleep1_dog_mask_bits },
++    { &Sleep2GC, &Sleep2Xbm,  sleep2_bits, sleep2_tora_bits, sleep2_dog_bits,
++      &Sleep2Msk, sleep2_mask_bits, sleep2_mask_bits, sleep2_dog_mask_bits },
++    { &AwakeGC, &AwakeXbm,  awake_bits, awake_tora_bits, awake_dog_bits,
++      &AwakeMsk, awake_mask_bits, awake_mask_bits, awake_dog_mask_bits },
++    { &Up1GC, &Up1Xbm,  up1_bits, up1_tora_bits, up1_dog_bits,
++      &Up1Msk, up1_mask_bits, up1_mask_bits, up1_dog_mask_bits },
++    { &Up2GC, &Up2Xbm,  up2_bits, up2_tora_bits, up2_dog_bits,
++      &Up2Msk, up2_mask_bits, up2_mask_bits, up2_dog_mask_bits },
++    { &Down1GC, &Down1Xbm,  down1_bits, down1_tora_bits, down1_dog_bits,
++      &Down1Msk, down1_mask_bits, down1_mask_bits, down1_dog_mask_bits },
++    { &Down2GC, &Down2Xbm,  down2_bits, down2_tora_bits, down2_dog_bits,
++      &Down2Msk, down2_mask_bits, down2_mask_bits, down2_dog_mask_bits },
++    { &Left1GC, &Left1Xbm,  left1_bits, left1_tora_bits, left1_dog_bits,
++      &Left1Msk, left1_mask_bits, left1_mask_bits, left1_dog_mask_bits },
++    { &Left2GC, &Left2Xbm,  left2_bits, left2_tora_bits, left2_dog_bits,
++      &Left2Msk, left2_mask_bits, left2_mask_bits, left2_dog_mask_bits },
++    { &Right1GC, &Right1Xbm,  right1_bits, right1_tora_bits, right1_dog_bits,
++      &Right1Msk, right1_mask_bits, right1_mask_bits,right1_dog_mask_bits },
++    { &Right2GC, &Right2Xbm,  right2_bits, right2_tora_bits, right2_dog_bits,
++      &Right2Msk, right2_mask_bits, right2_mask_bits, right2_dog_mask_bits },
++    { &UpLeft1GC, &UpLeft1Xbm,  upleft1_bits, upleft1_tora_bits, upleft1_dog_bits,
++      &UpLeft1Msk, upleft1_mask_bits, upleft1_mask_bits, upleft1_dog_mask_bits },
++    { &UpLeft2GC, &UpLeft2Xbm,  upleft2_bits, upleft2_tora_bits, upleft2_dog_bits,
++      &UpLeft2Msk, upleft2_mask_bits, upleft2_mask_bits,upleft2_dog_mask_bits },
++    { &UpRight1GC, &UpRight1Xbm,  upright1_bits, upright1_tora_bits, upright1_dog_bits,
++      &UpRight1Msk, upright1_mask_bits, upright1_mask_bits,upright1_dog_mask_bits },
++    { &UpRight2GC, &UpRight2Xbm,  upright2_bits, upright2_tora_bits, upright2_dog_bits,
++      &UpRight2Msk, upright2_mask_bits, upright2_mask_bits,upright2_dog_mask_bits },
++    { &DownLeft1GC, &DownLeft1Xbm,  dwleft1_bits, dwleft1_tora_bits, dwleft1_dog_bits,
++      &DownLeft1Msk, dwleft1_mask_bits, dwleft1_mask_bits, dwleft1_dog_mask_bits },
++    { &DownLeft2GC, &DownLeft2Xbm,  dwleft2_bits, dwleft2_tora_bits, dwleft2_dog_bits,
++      &DownLeft2Msk, dwleft2_mask_bits, dwleft2_mask_bits, dwleft2_dog_mask_bits },
++    { &DownRight1GC, &DownRight1Xbm,  dwright1_bits, dwright1_tora_bits, dwright1_dog_bits,
++      &DownRight1Msk, dwright1_mask_bits, dwright1_mask_bits, dwright1_dog_mask_bits },
++    { &DownRight2GC, &DownRight2Xbm,  dwright2_bits, dwright2_tora_bits, dwright2_dog_bits,
++      &DownRight2Msk, dwright2_mask_bits, dwright2_mask_bits, dwright2_dog_mask_bits },
++    { &UpTogi1GC, &UpTogi1Xbm,  utogi1_bits, utogi1_tora_bits, utogi1_dog_bits,
++      &UpTogi1Msk, utogi1_mask_bits, utogi1_mask_bits, utogi1_dog_mask_bits },
++    { &UpTogi2GC, &UpTogi2Xbm,  utogi2_bits, utogi2_tora_bits, utogi2_dog_bits,
++      &UpTogi2Msk, utogi2_mask_bits, utogi2_mask_bits, utogi2_dog_mask_bits },
++    { &DownTogi1GC, &DownTogi1Xbm,  dtogi1_bits, dtogi1_tora_bits, dtogi1_dog_bits,
++      &DownTogi1Msk, dtogi1_mask_bits, dtogi1_mask_bits, dtogi1_dog_mask_bits },
++    { &DownTogi2GC, &DownTogi2Xbm,  dtogi2_bits, dtogi2_tora_bits, dtogi2_dog_bits,
++      &DownTogi2Msk, dtogi2_mask_bits, dtogi2_mask_bits, dtogi2_dog_mask_bits },
++    { &LeftTogi1GC, &LeftTogi1Xbm,  ltogi1_bits, ltogi1_tora_bits, ltogi1_dog_bits,
++      &LeftTogi1Msk, ltogi1_mask_bits, ltogi1_mask_bits,ltogi1_dog_mask_bits },
++    { &LeftTogi2GC, &LeftTogi2Xbm,  ltogi2_bits, ltogi2_tora_bits, ltogi2_dog_bits,
++      &LeftTogi2Msk, ltogi2_mask_bits, ltogi2_mask_bits,ltogi2_dog_mask_bits },
++    { &RightTogi1GC, &RightTogi1Xbm,  rtogi1_bits, rtogi1_tora_bits, rtogi1_dog_bits,
++      &RightTogi1Msk, rtogi1_mask_bits, rtogi1_mask_bits,rtogi1_dog_mask_bits },
++    { &RightTogi2GC, &RightTogi2Xbm,  rtogi2_bits, rtogi2_tora_bits, rtogi2_dog_bits,
++      &RightTogi2Msk, rtogi2_mask_bits, rtogi2_mask_bits,rtogi2_dog_mask_bits },
+     { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }
+ };
+ 
+@@ -1512,8 +1506,6 @@ GetArguments(argc, argv, theDisplayName)
+     }
+     else {
+       char *av = argv[ArgCounter] + 1;
+-      if (strcmp(av, "bsd") == 0)
+-	av = "bsd_daemon";
+       for (loop=0;loop<BITMAPTYPES;loop++) {
+ 	if (strcmp(av,AnimalDefaultsDataTable[loop].name)==0)
+ 	  {NekoMoyou = loop;found=1;}
+diff --git a/oneko.h b/oneko.h
+index 414e12f..38281fd 100644
+--- a/oneko.h
++++ b/oneko.h
+@@ -36,17 +36,11 @@
+ #include "bitmaps/neko/neko.include"
+ #include "bitmaps/tora/tora.include"
+ #include "bitmaps/dog/dog.include"
+-#include "bitmaps/bsd/bsd.include"
+-#include "bitmaps/sakura/sakura.include"
+-#include "bitmaps/tomoyo/tomoyo.include"
+ 
+ /* These are the bitmasks that allow the use of the shape extension. */
+ 
+ #include "bitmasks/neko/neko.mask.include"
+ #include "bitmasks/dog/dog.mask.include"
+-#include "bitmasks/bsd/bsd.mask.include"
+-#include "bitmasks/sakura/sakura.mask.include"
+-#include "bitmasks/tomoyo/tomoyo.mask.include"
+ 
+ /*
+  *	$@Dj?tDj5A(J
+diff --git a/oneko.man b/oneko.man
+index d6d2b40..0e9b09d 100644
+--- a/oneko.man
++++ b/oneko.man
+@@ -3,9 +3,7 @@
+ The program oneko creates a cute cat chasing around your mouse cursor.
+ .SH SYNOPSIS
+ .B oneko
+-[\fB-help\fP] [\fB-tora\fP]
+-[\fB-dog\fP] [\fB-bsd_daemon\fP] [\fB-bsd\fP]
+-[\fB-sakura\fP] [\fB-tomoyo\fP]
++[\fB-help\fP] [\fB-tora\fP] [\fB-dog\fP]
+ [\fB-time\fP \fIn\fP] [\fB-speed\fP \fIn\fP] [\fB-idle\fP \fIn\fP]
+ [\fB-name\fP \fIname\fP] [\fB-towindow\fP] [\fB-toname\fP \fIname\fP]
+ [\fB-tofocus\fP]
+@@ -28,19 +26,6 @@ I don't know how to say it in English.
+ .B -dog
+ Runs a dog instead of a cat.
+ .TP
+-.B -bsd_daemon
+-Runs a 4.3BSD daemon instead of a cat.
+-.TP
+-.B -bsd
+-Same as
+-.B -bsd_daemon.
+-.TP
+-.B -sakura
+-Runs Sakura Kinomoto instead of a cat.
+-.TP
+-.B -tomoyo
+-Runs Tomoyo Daidouji instead of a cat.
+-.TP
+ .BI \-time " interval"
+ Sets interval timer which determine intervals for cat animation.
+ Default value is 125000 and unit is micro-second.  Smaller value makes cat
+@@ -129,12 +114,6 @@ Background color.
+ While this program uses XGetDefault, be sure to use "neko.resouce" form.
+ If you run this program as "tora", by hard of soft link, the \fB-tora\fP
+ option is enabled by default.
+-.PP
+-BSD Daemon Copyright 1988 by Marshall Kirk McKusick. All Rights Reserved.
+-.PP
+-Sakura Kinomoto and Tomoyo Daidouji are characters in a comic strip
+-"CARDCAPTOR SAKURA" (CLAMP, Kodansha), with the sanction indicated in
+-CLAMP SCHOOL WEB CAMPUS (http://www.clamp.f-2.co.jp/).
+ .SH AUTHOR
+ Original
+ .I xneko
+diff --git a/oneko.man.jp b/oneko.man.jp
+index 96f9e3a..9a885df 100644
+--- a/oneko.man.jp
++++ b/oneko.man.jp
+@@ -3,9 +3,7 @@
+ $@$+$o$$$$G-$,%^%&%9%+!<%=%k$rDI$$$+$1$k%W%m%0%i%`(J
+ .SH $@=q<0(J
+ .B oneko
+-[\fB-help\fP] [\fB-tora\fP]
+-[\fB-dog\fP] [\fB-bsd_daemon\fP] [\fB-bsd\fP]
+-[\fB-sakura\fP] [\fB-tomoyo\fP]
++[\fB-help\fP] [\fB-tora\fP] [\fB-dog\fP]
+ [\fB-time\fP \fIn\fP] [\fB-speed\fP \fIn\fP] [\fB-idle\fP \fIn\fP]
+ [\fB-name\fP \fIname\fP] [\fB-towindow\fP] [\fB-toname\fP \fIname\fP]
+ [\fB-tofocus\fP]
+@@ -27,19 +25,6 @@
+ .B -dog
+ $@G-$KBe$o$j8$$,Av$j$^$9!#(J
+ .TP
+-.B -bsd_daemon
+-$@G-$KBe$o$j(J 4.3BSD $@%G!<%b%s$,Av$j$^$9!#(J
+-.TP
+-.B -bsd
+-.B -bsd_daemon
+-$@$KF1$8!#(J
+-.TP
+-.B -sakura
+-$@G-$KBe$o$jLZG7K\:y$,Av$j$^$9!#(J
+-.TP
+-.B -tomoyo
+-$@G-$KBe$o$jBgF;;{CN@$$,Av$j$^$9!#(J
+-.TP
+ .BI \-time " interval"
+ $@G-%"%K%a!<%7%g%s$N4V3V$r;XDj$7$^$9!#(J
+ $@%G%U%)%k%HCM$O(J 125000 $@$GC10L$O%^%$%/%mIC$G$9!#(J
+@@ -127,15 +112,6 @@ SHAPE extension $@$r;H$$$?$/$J$$>l9g(J True $@$H$7$^$9!#(J
+ $@$r;H$&$3$H$KN10U$7$F$/$@$5$$!#(J
+ $@%O!<%I%j%s%/$"$k$$$O%=%U%H%j%s%/$K$h$C$F!"$3$N%W%m%0%i%`$r(J tora $@$H$7$F(J
+ $@5/F0$7$?>l9g$K$O!"%G%U%)%k%H$G(J \fB-tora\fP $@%*%W%7%g%s$,M-8z$H$J$j$^$9!#(J
+-.PP
+-BSD $@%G!<%b%s$O(J  Marshall Kirk McKusick $@;a$NCx:nJ*$G$9!#$9$Y$F$N8"Mx$O(J
+-$@J];}$5$l$F$$$^$9!#(J
+-BSD Daemon Copyright 1988 by Marshall Kirk McKusick. All Rights Reserved.
+-.PP
+-$@LZG7K\:y$*$h$SBgF;;{CN@$$OL!2h!X%+!<%I%-%c%W%?!<$5$/$i!Y!J(JCLAMP, $@9VCL(J
+-$@<R!K$N%-%c%i%/%?!<$G$"$j!"(JCLAMP $@3X1`EE;RJ,9;(J
+-$@!J(Jhttp://www.clamp.f-2.co.jp/$@!K$K<($5$l$F$$$kMFG'$N$b$H$KMxMQ$5$l$F$$(J
+-$@$^$9!#(J
+ .SH $@:n<T(J
+ $@%*%j%8%J%k$N(J
+ .I xneko
diff --git a/gnu/packages/toys.scm b/gnu/packages/toys.scm
index bbd5753841..0c40501b14 100644
--- a/gnu/packages/toys.scm
+++ b/gnu/packages/toys.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017, 2018, 2020 Tobias Geerinckx-Rice <me <at> tobias.gr>
 ;;; Copyright © 2019 Jesse Gibbons <jgibbons2357+guix <at> gmail.com>
-;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar <at> araneo.si>
+;;; Copyright © 2019, 2020, 2021 Timotej Lazar <timotej.lazar <at> araneo.si>
 ;;; Copyright © 2020 Efraim Flashner <efraim <at> flashner.co.il>
 ;;; Copyright © 2021 Leo Famulari <leo <at> famulari.name>
 ;;;
@@ -21,6 +21,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages toys)
+  #:use-module (gnu packages)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages gtk)
@@ -36,6 +37,64 @@
   #:use-module (guix packages)
   #:use-module (guix utils))
 
+(define-public oneko
+  (package
+    (name "oneko")
+    (version "1.2.sakura.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "http://www.daidouji.com/oneko/distfiles/oneko-" version ".tar.gz"))
+       (sha256
+        (base32 "0bxjlbafn10sfi5d06420pg70rpvsiy5gdbm8kspd6qy4kqhabic"))
+       (patches (search-patches "oneko-remove-refs-to-nonfree-bitmaps.patch"))
+       (modules '((guix build utils)))
+       (snippet
+        ;; Remove bitmaps with unclear copyright status.
+        '(begin
+           (for-each delete-file-recursively
+                     (find-files "." "(bsd|tomoyo|sakura|card|petal).*\\.xbm"))
+           #t))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("imake" ,imake)))
+    (inputs
+     `(("libx11" ,libx11)
+       ("libxext" ,libxext)))
+    (arguments
+     `(#:tests? #f ; no tests
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda _
+             (invoke "xmkmf")
+             ;; Fix incorrectly generated compiler flags.
+             (substitute* "Makefile"
+               (("(CDEBUGFLAGS = ).*" _ front) (string-append front "-O2\n")))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs make-flags #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (doc (string-append out "/share/doc/" ,name "-" ,version))
+                    (man (string-append out "/share/man/"))
+                    (man6 (string-append man "/man6"))
+                    (man6-ja (string-append man "/ja/man6")))
+               (install-file "oneko" bin)
+               (mkdir-p man6)
+               (mkdir-p man6-ja)
+               (copy-file "oneko.man" (string-append man6 "/oneko.6"))
+               (copy-file "oneko.man.jp" (string-append man6-ja "/oneko.6"))
+               (for-each (lambda (file) (install-file file doc))
+                         (find-files "." "README.*")))
+             #t)))))
+    (home-page "http://www.daidouji.com/oneko/")
+    (synopsis "Cute cat chasing your mouse pointer")
+    (description "Displays a cat or another animated character that chases the
+mouse pointer around the screen while you work.")
+    (license license:public-domain))) ; see https://directory.fsf.org/wiki/Oneko
+
 (define-public sl
   (package
     (name "sl")
-- 
2.32.0





Information forwarded to guix-patches <at> gnu.org:
bug#49235; Package guix-patches. (Sun, 27 Jun 2021 17:52:02 GMT) Full text and rfc822 format available.

Message #20 received at 49235 <at> debbugs.gnu.org (full text, mbox):

From: Timotej Lazar <timotej.lazar <at> araneo.si>
To: Leo Prikler <leo.prikler <at> student.tugraz.at>, 49235 <at> debbugs.gnu.org
Subject: Re: [PATCH] gnu: Add oneko.
Date: Sun, 27 Jun 2021 19:51:57 +0200
Leo Prikler <leo.prikler <at> student.tugraz.at> [2021-06-27 15:55:17+0200]:
> In other words, yeah, keeping only the original neko, tora and dog is
> the safest bet here.  Please don't forget to also have a look at the
> cursors.  From what I can see only the mouse and the bone should be
> fine as they relate to neko and tora or dog respectively.

Good catch! I’ve sent a new patch which removes these bitmaps and
options, and also adds the Japanese manpage.

Thanks,
Timotej




Information forwarded to guix-patches <at> gnu.org:
bug#49235; Package guix-patches. (Sun, 27 Jun 2021 18:25:02 GMT) Full text and rfc822 format available.

Message #23 received at 49235 <at> debbugs.gnu.org (full text, mbox):

From: Leo Prikler <leo.prikler <at> student.tugraz.at>
To: Timotej Lazar <timotej.lazar <at> araneo.si>, 49235 <at> debbugs.gnu.org
Subject: Re: [PATCH] gnu: Add oneko.
Date: Sun, 27 Jun 2021 20:24:04 +0200
Am Sonntag, den 27.06.2021, 19:51 +0200 schrieb Timotej Lazar:
> Leo Prikler <leo.prikler <at> student.tugraz.at> [2021-06-27
> 15:55:17+0200]:
> > In other words, yeah, keeping only the original neko, tora and dog
> > is
> > the safest bet here.  Please don't forget to also have a look at
> > the
> > cursors.  From what I can see only the mouse and the bone should be
> > fine as they relate to neko and tora or dog respectively.
> 
> Good catch! I’ve sent a new patch which removes these bitmaps and
> options, and also adds the Japanese manpage.
Is man/$LANG/man the way this should be structured?

For the patch, I think that it deserves a better name + comment.  The
copyright in those cases is not unclear – it is very clear who owns
those bitmaps, and in at least one case it's further clear that the
owner doesn't want others to reuse them.  W.r.t. the name, I don't
think we should shorten references to "refs".  Find a name, that fits
into a line better without the use of abbrevs.

The snippet should probably also remove the .include files, which at
least seem referenced in the code.

Don't forget to add me through --cc when sending mail with git-email to
make sure I receive the updated version :)

Regards,
Leo





Information forwarded to guix-patches <at> gnu.org:
bug#49235; Package guix-patches. (Sun, 27 Jun 2021 19:07:02 GMT) Full text and rfc822 format available.

Message #26 received at 49235 <at> debbugs.gnu.org (full text, mbox):

From: Timotej Lazar <timotej.lazar <at> araneo.si>
To: Leo Prikler <leo.prikler <at> student.tugraz.at>, 49235 <at> debbugs.gnu.org
Subject: Re: [PATCH] gnu: Add oneko.
Date: Sun, 27 Jun 2021 21:06:24 +0200
Leo Prikler <leo.prikler <at> student.tugraz.at> [2021-06-27 20:24:04+0200]:
> Is man/$LANG/man the way this should be structured?

I followed the pattern for existing manpages in my profile. `man -L ja
oneko` also returns the correct page. On a related note, would it be a
good idea to change the encoding from ISO-2022-JP to utf-8? `iconv`
produces a file that at least looks correct.

> For the patch, I think that it deserves a better name + comment.  The
> copyright in those cases is not unclear – it is very clear who owns
> those bitmaps, and in at least one case it's further clear that the
> owner doesn't want others to reuse them.

I am not sure if the copyright actually covers *all* depictions of the
BSD daemon (and others), or just the (variatons of) the original image.
But I’ll reword the comment to say “nonfree” instead.

> The snippet should probably also remove the .include files, which at
> least seem referenced in the code.

Those includes are patched out. Just in case I’ll change the snippet to
remove whole directories instead of just the *xbm files.

Thanks,
Timotej




Information forwarded to guix-patches <at> gnu.org:
bug#49235; Package guix-patches. (Sun, 27 Jun 2021 19:25:01 GMT) Full text and rfc822 format available.

Message #29 received at 49235 <at> debbugs.gnu.org (full text, mbox):

From: Leo Prikler <leo.prikler <at> student.tugraz.at>
To: Timotej Lazar <timotej.lazar <at> araneo.si>, 49235 <at> debbugs.gnu.org
Subject: Re: [PATCH] gnu: Add oneko.
Date: Sun, 27 Jun 2021 21:24:00 +0200
Am Sonntag, den 27.06.2021, 21:06 +0200 schrieb Timotej Lazar:
> Leo Prikler <leo.prikler <at> student.tugraz.at> [2021-06-27
> 20:24:04+0200]:
> > Is man/$LANG/man the way this should be structured?
> 
> I followed the pattern for existing manpages in my profile. `man -L
> ja
> oneko` also returns the correct page. On a related note, would it be
> a
> good idea to change the encoding from ISO-2022-JP to utf-8? `iconv`
> produces a file that at least looks correct.
"In that case go on" to the former and "yes" to the latter.

> > For the patch, I think that it deserves a better name +
> > comment.  The
> > copyright in those cases is not unclear – it is very clear who owns
> > those bitmaps, and in at least one case it's further clear that the
> > owner doesn't want others to reuse them.
> 
> I am not sure if the copyright actually covers *all* depictions of
> the
> BSD daemon (and others), or just the (variatons of) the original
> image.
> But I’ll reword the comment to say “nonfree” instead.
I think the Debian patch says it best in that there might be copyright
issues.

> > The snippet should probably also remove the .include files, which
> > at
> > least seem referenced in the code.
> 
> Those includes are patched out. Just in case I’ll change the snippet
> to
> remove whole directories instead of just the *xbm files.
To be fair, I only looked at the snippet, not what it produced, so it
might actually be that it already did the correct thing.  Are there
directory, which are matched by .*\\.xbm?

Regards,
Leo





Information forwarded to guix-patches <at> gnu.org:
bug#49235; Package guix-patches. (Sun, 27 Jun 2021 19:46:01 GMT) Full text and rfc822 format available.

Message #32 received at 49235 <at> debbugs.gnu.org (full text, mbox):

From: Timotej Lazar <timotej.lazar <at> araneo.si>
To: Leo Prikler <leo.prikler <at> student.tugraz.at>, 49235 <at> debbugs.gnu.org
Subject: Re: [PATCH] gnu: Add oneko.
Date: Sun, 27 Jun 2021 21:45:27 +0200
Leo Prikler <leo.prikler <at> student.tugraz.at> [2021-06-27 21:24:00+0200]:
> I think the Debian patch says it best in that there might be copyright
> issues.

OK, I’ll copy / adjust that one then. :)

> To be fair, I only looked at the snippet, not what it produced, so it
> might actually be that it already did the correct thing.  Are there
> directory, which are matched by .*\\.xbm?

The snippet only deletes the *xbm files. There is also (for instance)
bsd.include that #includes the relevant bitmaps and is in turn #included
by the main source file. The latter #include statements are removed by
the patch.

I didn’t delete bsd.include (and others) in the snippet since they don’t
have copyright issues and it would make the snippet a bit messier. A
COPYRIGHT file for the BSD daemon also remains. If that is problematic,
I can adjust the snippet to also delete these files. In any case, none
of them gets copied to the output.




Information forwarded to guix-patches <at> gnu.org:
bug#49235; Package guix-patches. (Sun, 27 Jun 2021 19:51:01 GMT) Full text and rfc822 format available.

Message #35 received at 49235 <at> debbugs.gnu.org (full text, mbox):

From: Leo Prikler <leo.prikler <at> student.tugraz.at>
To: Timotej Lazar <timotej.lazar <at> araneo.si>, 49235 <at> debbugs.gnu.org
Subject: Re: [PATCH] gnu: Add oneko.
Date: Sun, 27 Jun 2021 21:50:39 +0200
Am Sonntag, den 27.06.2021, 21:45 +0200 schrieb Timotej Lazar:
> Leo Prikler <leo.prikler <at> student.tugraz.at> [2021-06-27
> 21:24:00+0200]:
> > I think the Debian patch says it best in that there might be
> > copyright
> > issues.
> 
> OK, I’ll copy / adjust that one then. :)
> 
> > To be fair, I only looked at the snippet, not what it produced, so
> > it
> > might actually be that it already did the correct thing.  Are there
> > directory, which are matched by .*\\.xbm?
> 
> The snippet only deletes the *xbm files. There is also (for instance)
> bsd.include that #includes the relevant bitmaps and is in turn
> #included
> by the main source file. The latter #include statements are removed
> by
> the patch.
That is indeed a good way of splitting this up, but the mentioned files
would still need to be deleted (see below).

> I didn’t delete bsd.include (and others) in the snippet since they
> don’t
> have copyright issues and it would make the snippet a bit messier. A
> COPYRIGHT file for the BSD daemon also remains. If that is
> problematic,
> I can adjust the snippet to also delete these files. In any case,
> none
> of them gets copied to the output.
It's not just about the output, we're trying to keep `guix build -S`
clean as well.  I'm not sure about the copyright issues of these source
files -- in any case they only serve to enable the legally questionable
portions of the program, so in my opinion it's better to drop them.





Information forwarded to guix-patches <at> gnu.org:
bug#49235; Package guix-patches. (Mon, 28 Jun 2021 17:04:01 GMT) Full text and rfc822 format available.

Message #38 received at 49235 <at> debbugs.gnu.org (full text, mbox):

From: Timotej Lazar <timotej.lazar <at> araneo.si>
To: 49235 <at> debbugs.gnu.org
Cc: leo.prikler <at> student.tugraz.at, Timotej Lazar <timotej.lazar <at> araneo.si>
Subject: [PATCH v3] gnu: Add oneko.
Date: Mon, 28 Jun 2021 19:02:37 +0200
* gnu/packages/toys.scm (oneko): New variable.
---
I’ve changed the snippet to also delete all files related to nonfree
bitmaps. I also adjusted the name & comment for the patch.

On closer inspection it turns out that iconv messes up the Japanese
manpage a bit, so I copied it as is. I see some other options:

  1. don’t include it at all;
  2. use some fork from github where this has already been done; or
  3. convert and fix it manually, and include it as a patch.

I’m inclined to include it as is, for the “historical value” of using
the original source (1,2), and to avoid having to carry another patch in
Guix (3). Let me know if you’d prefer another solution!

 gnu/local.mk                                  |   1 +
 .../oneko-remove-nonfree-characters.patch     | 307 ++++++++++++++++++
 gnu/packages/toys.scm                         |  63 +++-
 3 files changed, 370 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/oneko-remove-nonfree-characters.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index f507fe566f..7d1fc8157c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1499,6 +1499,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/ocaml-dose3-dont-make-printconf.patch	\
   %D%/packages/patches/ocaml-dose3-Install-mli-cmx-etc.patch	\
   %D%/packages/patches/omake-fix-non-determinism.patch	\
+  %D%/packages/patches/oneko-remove-nonfree-characters.patch	\
   %D%/packages/patches/openbabel-fix-crash-on-nwchem-output.patch	\
   %D%/packages/patches/opencascade-oce-glibc-2.26.patch		\
   %D%/packages/patches/opencv-fix-build-of-grfmt_jpeg2000.cpp.patch	\
diff --git a/gnu/packages/patches/oneko-remove-nonfree-characters.patch b/gnu/packages/patches/oneko-remove-nonfree-characters.patch
new file mode 100644
index 0000000000..4f80e53995
--- /dev/null
+++ b/gnu/packages/patches/oneko-remove-nonfree-characters.patch
@@ -0,0 +1,307 @@
+Remove options and code to use bitmaps of the BSD daemon and other characters
+with copyright issues. The bitmaps themselves are deleted in a source snippet.
+diff --git a/cursors/cursor.include b/cursors/cursor.include
+index ef96d72..1dc3dc2 100644
+--- a/cursors/cursor.include
++++ b/cursors/cursor.include
+@@ -2,9 +2,3 @@
+ #include "mouse_cursor_mask.xbm"
+ #include "bone_cursor.xbm"
+ #include "bone_cursor_mask.xbm"
+-#include "bsd_cursor.xbm"
+-#include "bsd_cursor_mask.xbm"
+-#include "card_cursor.xbm"
+-#include "card_cursor_mask.xbm"
+-#include "petal_cursor.xbm"
+-#include "petal_cursor_mask.xbm"
+diff --git a/oneko.c b/oneko.c
+index d2b81fe..04fa59f 100644
+--- a/oneko.c
++++ b/oneko.c
+@@ -33,7 +33,7 @@ XColor	theBackgroundColor;		/* $@?'(J ($@%P%C%/%0%i%&%s%I(J) */
+ 
+ int Synchronous = False;
+ /* Types of animals */
+-#define BITMAPTYPES 6
++#define BITMAPTYPES 3
+ typedef struct _AnimalDefaults {
+   char *name;
+   int speed, idle, bitmap_width, bitmap_height;
+@@ -51,12 +51,6 @@ AnimalDefaultsData AnimalDefaultsDataTable[] =
+       mouse_cursor_width,mouse_cursor_height, mouse_cursor_x_hot,mouse_cursor_y_hot },
+   { "dog" , 10, 6, 32, 32, 125000L, 0, 0, bone_cursor_bits,bone_cursor_mask_bits,
+       bone_cursor_width,bone_cursor_height, bone_cursor_x_hot,bone_cursor_y_hot },
+-  { "bsd_daemon" , 16, 6, 32, 32, 300000L, 22, 20, bsd_cursor_bits,bsd_cursor_mask_bits,
+-      bsd_cursor_width,bsd_cursor_height, bsd_cursor_x_hot,bsd_cursor_y_hot },
+-  { "sakura" , 13, 6, 32, 32, 125000L, 0, 0, card_cursor_bits,card_cursor_mask_bits,
+-      card_cursor_width,card_cursor_height, card_cursor_x_hot,card_cursor_y_hot },
+-  { "tomoyo" , 10, 6, 32, 32, 125000L, 32, 32, petal_cursor_bits,petal_cursor_mask_bits,
+-      petal_cursor_width,petal_cursor_height, petal_cursor_x_hot,petal_cursor_y_hot },
+ };
+ 
+ /*
+@@ -154,70 +148,70 @@ typedef struct {
+ 
+ BitmapGCData	BitmapGCDataTable[] =
+ {
+-    { &Mati2GC, &Mati2Xbm,  mati2_bits, mati2_tora_bits, mati2_dog_bits, mati2_bsd_bits, mati2_sakura_bits, mati2_tomoyo_bits,
+-      &Mati2Msk, mati2_mask_bits, mati2_mask_bits, mati2_dog_mask_bits, mati2_bsd_mask_bits, mati2_sakura_mask_bits, mati2_tomoyo_mask_bits },
+-    { &Jare2GC, &Jare2Xbm,  jare2_bits, jare2_tora_bits, jare2_dog_bits, jare2_bsd_bits, jare2_sakura_bits, jare2_tomoyo_bits,
+-      &Jare2Msk, jare2_mask_bits, jare2_mask_bits, jare2_dog_mask_bits, jare2_bsd_mask_bits, jare2_sakura_mask_bits, jare2_tomoyo_mask_bits },
+-    { &Kaki1GC, &Kaki1Xbm,  kaki1_bits, kaki1_tora_bits, kaki1_dog_bits, kaki1_bsd_bits, kaki1_sakura_bits, kaki1_tomoyo_bits,
+-      &Kaki1Msk, kaki1_mask_bits, kaki1_mask_bits, kaki1_dog_mask_bits, kaki1_bsd_mask_bits, kaki1_sakura_mask_bits, kaki1_tomoyo_mask_bits },
+-    { &Kaki2GC, &Kaki2Xbm,  kaki2_bits, kaki2_tora_bits, kaki2_dog_bits, kaki2_bsd_bits, kaki2_sakura_bits, kaki2_tomoyo_bits,
+-      &Kaki2Msk, kaki2_mask_bits, kaki2_mask_bits, kaki2_dog_mask_bits, kaki2_bsd_mask_bits, kaki2_sakura_mask_bits, kaki2_tomoyo_mask_bits },
+-    { &Mati3GC, &Mati3Xbm,  mati3_bits, mati3_tora_bits, mati3_dog_bits, mati3_bsd_bits, mati3_sakura_bits, mati3_tomoyo_bits,
+-      &Mati3Msk, mati3_mask_bits, mati3_mask_bits, mati3_dog_mask_bits, mati3_bsd_mask_bits, mati3_sakura_mask_bits, mati3_tomoyo_mask_bits },
+-    { &Sleep1GC, &Sleep1Xbm,  sleep1_bits, sleep1_tora_bits, sleep1_dog_bits, sleep1_bsd_bits, sleep1_sakura_bits, sleep1_tomoyo_bits,
+-      &Sleep1Msk, sleep1_mask_bits, sleep1_mask_bits, sleep1_dog_mask_bits, sleep1_bsd_mask_bits, sleep1_sakura_mask_bits, sleep1_tomoyo_mask_bits },
+-    { &Sleep2GC, &Sleep2Xbm,  sleep2_bits, sleep2_tora_bits, sleep2_dog_bits, sleep2_bsd_bits, sleep2_sakura_bits, sleep2_tomoyo_bits,
+-      &Sleep2Msk, sleep2_mask_bits, sleep2_mask_bits, sleep2_dog_mask_bits, sleep2_bsd_mask_bits, sleep2_sakura_mask_bits, sleep2_tomoyo_mask_bits },
+-    { &AwakeGC, &AwakeXbm,  awake_bits, awake_tora_bits, awake_dog_bits, awake_bsd_bits, awake_sakura_bits, awake_tomoyo_bits,
+-      &AwakeMsk, awake_mask_bits, awake_mask_bits, awake_dog_mask_bits, awake_bsd_mask_bits, awake_sakura_mask_bits, awake_tomoyo_mask_bits },
+-    { &Up1GC, &Up1Xbm,  up1_bits, up1_tora_bits, up1_dog_bits, up1_bsd_bits, up1_sakura_bits, up1_tomoyo_bits,
+-      &Up1Msk, up1_mask_bits, up1_mask_bits, up1_dog_mask_bits, up1_bsd_mask_bits, up1_sakura_mask_bits, up1_tomoyo_mask_bits },
+-    { &Up2GC, &Up2Xbm,  up2_bits, up2_tora_bits, up2_dog_bits, up2_bsd_bits, up2_sakura_bits, up2_tomoyo_bits,
+-      &Up2Msk, up2_mask_bits, up2_mask_bits, up2_dog_mask_bits, up2_bsd_mask_bits, up2_sakura_mask_bits, up2_tomoyo_mask_bits },
+-    { &Down1GC, &Down1Xbm,  down1_bits, down1_tora_bits, down1_dog_bits, down1_bsd_bits, down1_sakura_bits, down1_tomoyo_bits,
+-      &Down1Msk, down1_mask_bits, down1_mask_bits, down1_dog_mask_bits, down1_bsd_mask_bits, down1_sakura_mask_bits, down1_tomoyo_mask_bits },
+-    { &Down2GC, &Down2Xbm,  down2_bits, down2_tora_bits, down2_dog_bits, down2_bsd_bits, down2_sakura_bits, down2_tomoyo_bits,
+-      &Down2Msk, down2_mask_bits, down2_mask_bits, down2_dog_mask_bits, down2_bsd_mask_bits, down2_sakura_mask_bits, down2_tomoyo_mask_bits },
+-    { &Left1GC, &Left1Xbm,  left1_bits, left1_tora_bits, left1_dog_bits, left1_bsd_bits, left1_sakura_bits, left1_tomoyo_bits,
+-      &Left1Msk, left1_mask_bits, left1_mask_bits, left1_dog_mask_bits, left1_bsd_mask_bits, left1_sakura_mask_bits, left1_tomoyo_mask_bits },
+-    { &Left2GC, &Left2Xbm,  left2_bits, left2_tora_bits, left2_dog_bits, left2_bsd_bits, left2_sakura_bits, left2_tomoyo_bits,
+-      &Left2Msk, left2_mask_bits, left2_mask_bits, left2_dog_mask_bits, left2_bsd_mask_bits, left2_sakura_mask_bits, left2_tomoyo_mask_bits },
+-    { &Right1GC, &Right1Xbm,  right1_bits, right1_tora_bits, right1_dog_bits, right1_bsd_bits, right1_sakura_bits, right1_tomoyo_bits,
+-      &Right1Msk, right1_mask_bits, right1_mask_bits,right1_dog_mask_bits, right1_bsd_mask_bits, right1_sakura_mask_bits, right1_tomoyo_mask_bits },
+-    { &Right2GC, &Right2Xbm,  right2_bits, right2_tora_bits, right2_dog_bits, right2_bsd_bits, right2_sakura_bits, right2_tomoyo_bits,
+-      &Right2Msk, right2_mask_bits, right2_mask_bits, right2_dog_mask_bits, right2_bsd_mask_bits, right2_sakura_mask_bits, right2_tomoyo_mask_bits },
+-    { &UpLeft1GC, &UpLeft1Xbm,  upleft1_bits, upleft1_tora_bits, upleft1_dog_bits, upleft1_bsd_bits, upleft1_sakura_bits, upleft1_tomoyo_bits,
+-      &UpLeft1Msk, upleft1_mask_bits, upleft1_mask_bits, upleft1_dog_mask_bits, upleft1_bsd_mask_bits, upleft1_sakura_mask_bits, upleft1_tomoyo_mask_bits },
+-    { &UpLeft2GC, &UpLeft2Xbm,  upleft2_bits, upleft2_tora_bits, upleft2_dog_bits, upleft2_bsd_bits, upleft2_sakura_bits, upleft2_tomoyo_bits,
+-      &UpLeft2Msk, upleft2_mask_bits, upleft2_mask_bits,upleft2_dog_mask_bits, upleft2_bsd_mask_bits, upleft2_sakura_mask_bits, upleft2_tomoyo_mask_bits },
+-    { &UpRight1GC, &UpRight1Xbm,  upright1_bits, upright1_tora_bits, upright1_dog_bits, upright1_bsd_bits, upright1_sakura_bits, upright1_tomoyo_bits,
+-      &UpRight1Msk, upright1_mask_bits, upright1_mask_bits,upright1_dog_mask_bits, upright1_bsd_mask_bits, upright1_sakura_mask_bits, upright1_tomoyo_mask_bits },
+-    { &UpRight2GC, &UpRight2Xbm,  upright2_bits, upright2_tora_bits, upright2_dog_bits, upright2_bsd_bits, upright2_sakura_bits, upright2_tomoyo_bits,
+-      &UpRight2Msk, upright2_mask_bits, upright2_mask_bits,upright2_dog_mask_bits, upright2_bsd_mask_bits, upright2_sakura_mask_bits, upright2_tomoyo_mask_bits },
+-    { &DownLeft1GC, &DownLeft1Xbm,  dwleft1_bits, dwleft1_tora_bits, dwleft1_dog_bits, dwleft1_bsd_bits, dwleft1_sakura_bits, dwleft1_tomoyo_bits,
+-      &DownLeft1Msk, dwleft1_mask_bits, dwleft1_mask_bits, dwleft1_dog_mask_bits, dwleft1_bsd_mask_bits, dwleft1_sakura_mask_bits, dwleft1_tomoyo_mask_bits },
+-    { &DownLeft2GC, &DownLeft2Xbm,  dwleft2_bits, dwleft2_tora_bits, dwleft2_dog_bits, dwleft2_bsd_bits, dwleft2_sakura_bits, dwleft2_tomoyo_bits,
+-      &DownLeft2Msk, dwleft2_mask_bits, dwleft2_mask_bits, dwleft2_dog_mask_bits, dwleft2_bsd_mask_bits, dwleft2_sakura_mask_bits, dwleft2_tomoyo_mask_bits },
+-    { &DownRight1GC, &DownRight1Xbm,  dwright1_bits, dwright1_tora_bits, dwright1_dog_bits, dwright1_bsd_bits, dwright1_sakura_bits, dwright1_tomoyo_bits,
+-      &DownRight1Msk, dwright1_mask_bits, dwright1_mask_bits, dwright1_dog_mask_bits, dwright1_bsd_mask_bits, dwright1_sakura_mask_bits, dwright1_tomoyo_mask_bits },
+-    { &DownRight2GC, &DownRight2Xbm,  dwright2_bits, dwright2_tora_bits, dwright2_dog_bits, dwright2_bsd_bits, dwright2_sakura_bits, dwright2_tomoyo_bits,
+-      &DownRight2Msk, dwright2_mask_bits, dwright2_mask_bits, dwright2_dog_mask_bits, dwright2_bsd_mask_bits, dwright2_sakura_mask_bits, dwright2_tomoyo_mask_bits },
+-    { &UpTogi1GC, &UpTogi1Xbm,  utogi1_bits, utogi1_tora_bits, utogi1_dog_bits, utogi1_bsd_bits, utogi1_sakura_bits, utogi1_tomoyo_bits,
+-      &UpTogi1Msk, utogi1_mask_bits, utogi1_mask_bits, utogi1_dog_mask_bits, utogi1_bsd_mask_bits, utogi1_sakura_mask_bits, utogi1_tomoyo_mask_bits },
+-    { &UpTogi2GC, &UpTogi2Xbm,  utogi2_bits, utogi2_tora_bits, utogi2_dog_bits, utogi2_bsd_bits, utogi2_sakura_bits, utogi2_tomoyo_bits,
+-      &UpTogi2Msk, utogi2_mask_bits, utogi2_mask_bits, utogi2_dog_mask_bits, utogi2_bsd_mask_bits, utogi2_sakura_mask_bits, utogi2_tomoyo_mask_bits },
+-    { &DownTogi1GC, &DownTogi1Xbm,  dtogi1_bits, dtogi1_tora_bits, dtogi1_dog_bits, dtogi1_bsd_bits, dtogi1_sakura_bits, dtogi1_tomoyo_bits,
+-      &DownTogi1Msk, dtogi1_mask_bits, dtogi1_mask_bits, dtogi1_dog_mask_bits, dtogi1_bsd_mask_bits, dtogi1_sakura_mask_bits, dtogi1_tomoyo_mask_bits },
+-    { &DownTogi2GC, &DownTogi2Xbm,  dtogi2_bits, dtogi2_tora_bits, dtogi2_dog_bits, dtogi2_bsd_bits, dtogi2_sakura_bits, dtogi2_tomoyo_bits,
+-      &DownTogi2Msk, dtogi2_mask_bits, dtogi2_mask_bits, dtogi2_dog_mask_bits, dtogi2_bsd_mask_bits, dtogi2_sakura_mask_bits, dtogi2_tomoyo_mask_bits },
+-    { &LeftTogi1GC, &LeftTogi1Xbm,  ltogi1_bits, ltogi1_tora_bits, ltogi1_dog_bits, ltogi1_bsd_bits, ltogi1_sakura_bits, ltogi1_tomoyo_bits,
+-      &LeftTogi1Msk, ltogi1_mask_bits, ltogi1_mask_bits,ltogi1_dog_mask_bits, ltogi1_bsd_mask_bits, ltogi1_sakura_mask_bits, ltogi1_tomoyo_mask_bits },
+-    { &LeftTogi2GC, &LeftTogi2Xbm,  ltogi2_bits, ltogi2_tora_bits, ltogi2_dog_bits, ltogi2_bsd_bits, ltogi2_sakura_bits, ltogi2_tomoyo_bits,
+-      &LeftTogi2Msk, ltogi2_mask_bits, ltogi2_mask_bits,ltogi2_dog_mask_bits, ltogi2_bsd_mask_bits, ltogi2_sakura_mask_bits, ltogi2_tomoyo_mask_bits },
+-    { &RightTogi1GC, &RightTogi1Xbm,  rtogi1_bits, rtogi1_tora_bits, rtogi1_dog_bits, rtogi1_bsd_bits, rtogi1_sakura_bits, rtogi1_tomoyo_bits,
+-      &RightTogi1Msk, rtogi1_mask_bits, rtogi1_mask_bits,rtogi1_dog_mask_bits, rtogi1_bsd_mask_bits, rtogi1_sakura_mask_bits, rtogi1_tomoyo_mask_bits },
+-    { &RightTogi2GC, &RightTogi2Xbm,  rtogi2_bits, rtogi2_tora_bits, rtogi2_dog_bits, rtogi2_bsd_bits, rtogi2_sakura_bits, rtogi2_tomoyo_bits,
+-      &RightTogi2Msk, rtogi2_mask_bits, rtogi2_mask_bits,rtogi2_dog_mask_bits, rtogi2_bsd_mask_bits, rtogi2_sakura_mask_bits, rtogi2_tomoyo_mask_bits },
++    { &Mati2GC, &Mati2Xbm,  mati2_bits, mati2_tora_bits, mati2_dog_bits,
++      &Mati2Msk, mati2_mask_bits, mati2_mask_bits, mati2_dog_mask_bits },
++    { &Jare2GC, &Jare2Xbm,  jare2_bits, jare2_tora_bits, jare2_dog_bits,
++      &Jare2Msk, jare2_mask_bits, jare2_mask_bits, jare2_dog_mask_bits },
++    { &Kaki1GC, &Kaki1Xbm,  kaki1_bits, kaki1_tora_bits, kaki1_dog_bits,
++      &Kaki1Msk, kaki1_mask_bits, kaki1_mask_bits, kaki1_dog_mask_bits },
++    { &Kaki2GC, &Kaki2Xbm,  kaki2_bits, kaki2_tora_bits, kaki2_dog_bits,
++      &Kaki2Msk, kaki2_mask_bits, kaki2_mask_bits, kaki2_dog_mask_bits },
++    { &Mati3GC, &Mati3Xbm,  mati3_bits, mati3_tora_bits, mati3_dog_bits,
++      &Mati3Msk, mati3_mask_bits, mati3_mask_bits, mati3_dog_mask_bits },
++    { &Sleep1GC, &Sleep1Xbm,  sleep1_bits, sleep1_tora_bits, sleep1_dog_bits,
++      &Sleep1Msk, sleep1_mask_bits, sleep1_mask_bits, sleep1_dog_mask_bits },
++    { &Sleep2GC, &Sleep2Xbm,  sleep2_bits, sleep2_tora_bits, sleep2_dog_bits,
++      &Sleep2Msk, sleep2_mask_bits, sleep2_mask_bits, sleep2_dog_mask_bits },
++    { &AwakeGC, &AwakeXbm,  awake_bits, awake_tora_bits, awake_dog_bits,
++      &AwakeMsk, awake_mask_bits, awake_mask_bits, awake_dog_mask_bits },
++    { &Up1GC, &Up1Xbm,  up1_bits, up1_tora_bits, up1_dog_bits,
++      &Up1Msk, up1_mask_bits, up1_mask_bits, up1_dog_mask_bits },
++    { &Up2GC, &Up2Xbm,  up2_bits, up2_tora_bits, up2_dog_bits,
++      &Up2Msk, up2_mask_bits, up2_mask_bits, up2_dog_mask_bits },
++    { &Down1GC, &Down1Xbm,  down1_bits, down1_tora_bits, down1_dog_bits,
++      &Down1Msk, down1_mask_bits, down1_mask_bits, down1_dog_mask_bits },
++    { &Down2GC, &Down2Xbm,  down2_bits, down2_tora_bits, down2_dog_bits,
++      &Down2Msk, down2_mask_bits, down2_mask_bits, down2_dog_mask_bits },
++    { &Left1GC, &Left1Xbm,  left1_bits, left1_tora_bits, left1_dog_bits,
++      &Left1Msk, left1_mask_bits, left1_mask_bits, left1_dog_mask_bits },
++    { &Left2GC, &Left2Xbm,  left2_bits, left2_tora_bits, left2_dog_bits,
++      &Left2Msk, left2_mask_bits, left2_mask_bits, left2_dog_mask_bits },
++    { &Right1GC, &Right1Xbm,  right1_bits, right1_tora_bits, right1_dog_bits,
++      &Right1Msk, right1_mask_bits, right1_mask_bits,right1_dog_mask_bits },
++    { &Right2GC, &Right2Xbm,  right2_bits, right2_tora_bits, right2_dog_bits,
++      &Right2Msk, right2_mask_bits, right2_mask_bits, right2_dog_mask_bits },
++    { &UpLeft1GC, &UpLeft1Xbm,  upleft1_bits, upleft1_tora_bits, upleft1_dog_bits,
++      &UpLeft1Msk, upleft1_mask_bits, upleft1_mask_bits, upleft1_dog_mask_bits },
++    { &UpLeft2GC, &UpLeft2Xbm,  upleft2_bits, upleft2_tora_bits, upleft2_dog_bits,
++      &UpLeft2Msk, upleft2_mask_bits, upleft2_mask_bits,upleft2_dog_mask_bits },
++    { &UpRight1GC, &UpRight1Xbm,  upright1_bits, upright1_tora_bits, upright1_dog_bits,
++      &UpRight1Msk, upright1_mask_bits, upright1_mask_bits,upright1_dog_mask_bits },
++    { &UpRight2GC, &UpRight2Xbm,  upright2_bits, upright2_tora_bits, upright2_dog_bits,
++      &UpRight2Msk, upright2_mask_bits, upright2_mask_bits,upright2_dog_mask_bits },
++    { &DownLeft1GC, &DownLeft1Xbm,  dwleft1_bits, dwleft1_tora_bits, dwleft1_dog_bits,
++      &DownLeft1Msk, dwleft1_mask_bits, dwleft1_mask_bits, dwleft1_dog_mask_bits },
++    { &DownLeft2GC, &DownLeft2Xbm,  dwleft2_bits, dwleft2_tora_bits, dwleft2_dog_bits,
++      &DownLeft2Msk, dwleft2_mask_bits, dwleft2_mask_bits, dwleft2_dog_mask_bits },
++    { &DownRight1GC, &DownRight1Xbm,  dwright1_bits, dwright1_tora_bits, dwright1_dog_bits,
++      &DownRight1Msk, dwright1_mask_bits, dwright1_mask_bits, dwright1_dog_mask_bits },
++    { &DownRight2GC, &DownRight2Xbm,  dwright2_bits, dwright2_tora_bits, dwright2_dog_bits,
++      &DownRight2Msk, dwright2_mask_bits, dwright2_mask_bits, dwright2_dog_mask_bits },
++    { &UpTogi1GC, &UpTogi1Xbm,  utogi1_bits, utogi1_tora_bits, utogi1_dog_bits,
++      &UpTogi1Msk, utogi1_mask_bits, utogi1_mask_bits, utogi1_dog_mask_bits },
++    { &UpTogi2GC, &UpTogi2Xbm,  utogi2_bits, utogi2_tora_bits, utogi2_dog_bits,
++      &UpTogi2Msk, utogi2_mask_bits, utogi2_mask_bits, utogi2_dog_mask_bits },
++    { &DownTogi1GC, &DownTogi1Xbm,  dtogi1_bits, dtogi1_tora_bits, dtogi1_dog_bits,
++      &DownTogi1Msk, dtogi1_mask_bits, dtogi1_mask_bits, dtogi1_dog_mask_bits },
++    { &DownTogi2GC, &DownTogi2Xbm,  dtogi2_bits, dtogi2_tora_bits, dtogi2_dog_bits,
++      &DownTogi2Msk, dtogi2_mask_bits, dtogi2_mask_bits, dtogi2_dog_mask_bits },
++    { &LeftTogi1GC, &LeftTogi1Xbm,  ltogi1_bits, ltogi1_tora_bits, ltogi1_dog_bits,
++      &LeftTogi1Msk, ltogi1_mask_bits, ltogi1_mask_bits,ltogi1_dog_mask_bits },
++    { &LeftTogi2GC, &LeftTogi2Xbm,  ltogi2_bits, ltogi2_tora_bits, ltogi2_dog_bits,
++      &LeftTogi2Msk, ltogi2_mask_bits, ltogi2_mask_bits,ltogi2_dog_mask_bits },
++    { &RightTogi1GC, &RightTogi1Xbm,  rtogi1_bits, rtogi1_tora_bits, rtogi1_dog_bits,
++      &RightTogi1Msk, rtogi1_mask_bits, rtogi1_mask_bits,rtogi1_dog_mask_bits },
++    { &RightTogi2GC, &RightTogi2Xbm,  rtogi2_bits, rtogi2_tora_bits, rtogi2_dog_bits,
++      &RightTogi2Msk, rtogi2_mask_bits, rtogi2_mask_bits,rtogi2_dog_mask_bits },
+     { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }
+ };
+ 
+@@ -1512,8 +1506,6 @@ GetArguments(argc, argv, theDisplayName)
+     }
+     else {
+       char *av = argv[ArgCounter] + 1;
+-      if (strcmp(av, "bsd") == 0)
+-	av = "bsd_daemon";
+       for (loop=0;loop<BITMAPTYPES;loop++) {
+ 	if (strcmp(av,AnimalDefaultsDataTable[loop].name)==0)
+ 	  {NekoMoyou = loop;found=1;}
+diff --git a/oneko.h b/oneko.h
+index 414e12f..38281fd 100644
+--- a/oneko.h
++++ b/oneko.h
+@@ -36,17 +36,11 @@
+ #include "bitmaps/neko/neko.include"
+ #include "bitmaps/tora/tora.include"
+ #include "bitmaps/dog/dog.include"
+-#include "bitmaps/bsd/bsd.include"
+-#include "bitmaps/sakura/sakura.include"
+-#include "bitmaps/tomoyo/tomoyo.include"
+ 
+ /* These are the bitmasks that allow the use of the shape extension. */
+ 
+ #include "bitmasks/neko/neko.mask.include"
+ #include "bitmasks/dog/dog.mask.include"
+-#include "bitmasks/bsd/bsd.mask.include"
+-#include "bitmasks/sakura/sakura.mask.include"
+-#include "bitmasks/tomoyo/tomoyo.mask.include"
+ 
+ /*
+  *	$@Dj?tDj5A(J
+diff --git a/oneko.man b/oneko.man
+index d6d2b40..0e9b09d 100644
+--- a/oneko.man
++++ b/oneko.man
+@@ -3,9 +3,7 @@
+ The program oneko creates a cute cat chasing around your mouse cursor.
+ .SH SYNOPSIS
+ .B oneko
+-[\fB-help\fP] [\fB-tora\fP]
+-[\fB-dog\fP] [\fB-bsd_daemon\fP] [\fB-bsd\fP]
+-[\fB-sakura\fP] [\fB-tomoyo\fP]
++[\fB-help\fP] [\fB-tora\fP] [\fB-dog\fP]
+ [\fB-time\fP \fIn\fP] [\fB-speed\fP \fIn\fP] [\fB-idle\fP \fIn\fP]
+ [\fB-name\fP \fIname\fP] [\fB-towindow\fP] [\fB-toname\fP \fIname\fP]
+ [\fB-tofocus\fP]
+@@ -28,19 +26,6 @@ I don't know how to say it in English.
+ .B -dog
+ Runs a dog instead of a cat.
+ .TP
+-.B -bsd_daemon
+-Runs a 4.3BSD daemon instead of a cat.
+-.TP
+-.B -bsd
+-Same as
+-.B -bsd_daemon.
+-.TP
+-.B -sakura
+-Runs Sakura Kinomoto instead of a cat.
+-.TP
+-.B -tomoyo
+-Runs Tomoyo Daidouji instead of a cat.
+-.TP
+ .BI \-time " interval"
+ Sets interval timer which determine intervals for cat animation.
+ Default value is 125000 and unit is micro-second.  Smaller value makes cat
+@@ -129,12 +114,6 @@ Background color.
+ While this program uses XGetDefault, be sure to use "neko.resouce" form.
+ If you run this program as "tora", by hard of soft link, the \fB-tora\fP
+ option is enabled by default.
+-.PP
+-BSD Daemon Copyright 1988 by Marshall Kirk McKusick. All Rights Reserved.
+-.PP
+-Sakura Kinomoto and Tomoyo Daidouji are characters in a comic strip
+-"CARDCAPTOR SAKURA" (CLAMP, Kodansha), with the sanction indicated in
+-CLAMP SCHOOL WEB CAMPUS (http://www.clamp.f-2.co.jp/).
+ .SH AUTHOR
+ Original
+ .I xneko
+diff --git a/oneko.man.jp b/oneko.man.jp
+index 96f9e3a..9a885df 100644
+--- a/oneko.man.jp
++++ b/oneko.man.jp
+@@ -3,9 +3,7 @@
+ $@$+$o$$$$G-$,%^%&%9%+!<%=%k$rDI$$$+$1$k%W%m%0%i%`(J
+ .SH $@=q<0(J
+ .B oneko
+-[\fB-help\fP] [\fB-tora\fP]
+-[\fB-dog\fP] [\fB-bsd_daemon\fP] [\fB-bsd\fP]
+-[\fB-sakura\fP] [\fB-tomoyo\fP]
++[\fB-help\fP] [\fB-tora\fP] [\fB-dog\fP]
+ [\fB-time\fP \fIn\fP] [\fB-speed\fP \fIn\fP] [\fB-idle\fP \fIn\fP]
+ [\fB-name\fP \fIname\fP] [\fB-towindow\fP] [\fB-toname\fP \fIname\fP]
+ [\fB-tofocus\fP]
+@@ -27,19 +25,6 @@
+ .B -dog
+ $@G-$KBe$o$j8$$,Av$j$^$9!#(J
+ .TP
+-.B -bsd_daemon
+-$@G-$KBe$o$j(J 4.3BSD $@%G!<%b%s$,Av$j$^$9!#(J
+-.TP
+-.B -bsd
+-.B -bsd_daemon
+-$@$KF1$8!#(J
+-.TP
+-.B -sakura
+-$@G-$KBe$o$jLZG7K\:y$,Av$j$^$9!#(J
+-.TP
+-.B -tomoyo
+-$@G-$KBe$o$jBgF;;{CN@$$,Av$j$^$9!#(J
+-.TP
+ .BI \-time " interval"
+ $@G-%"%K%a!<%7%g%s$N4V3V$r;XDj$7$^$9!#(J
+ $@%G%U%)%k%HCM$O(J 125000 $@$GC10L$O%^%$%/%mIC$G$9!#(J
+@@ -127,15 +112,6 @@ SHAPE extension $@$r;H$$$?$/$J$$>l9g(J True $@$H$7$^$9!#(J
+ $@$r;H$&$3$H$KN10U$7$F$/$@$5$$!#(J
+ $@%O!<%I%j%s%/$"$k$$$O%=%U%H%j%s%/$K$h$C$F!"$3$N%W%m%0%i%`$r(J tora $@$H$7$F(J
+ $@5/F0$7$?>l9g$K$O!"%G%U%)%k%H$G(J \fB-tora\fP $@%*%W%7%g%s$,M-8z$H$J$j$^$9!#(J
+-.PP
+-BSD $@%G!<%b%s$O(J  Marshall Kirk McKusick $@;a$NCx:nJ*$G$9!#$9$Y$F$N8"Mx$O(J
+-$@J];}$5$l$F$$$^$9!#(J
+-BSD Daemon Copyright 1988 by Marshall Kirk McKusick. All Rights Reserved.
+-.PP
+-$@LZG7K\:y$*$h$SBgF;;{CN@$$OL!2h!X%+!<%I%-%c%W%?!<$5$/$i!Y!J(JCLAMP, $@9VCL(J
+-$@<R!K$N%-%c%i%/%?!<$G$"$j!"(JCLAMP $@3X1`EE;RJ,9;(J
+-$@!J(Jhttp://www.clamp.f-2.co.jp/$@!K$K<($5$l$F$$$kMFG'$N$b$H$KMxMQ$5$l$F$$(J
+-$@$^$9!#(J
+ .SH $@:n<T(J
+ $@%*%j%8%J%k$N(J
+ .I xneko
diff --git a/gnu/packages/toys.scm b/gnu/packages/toys.scm
index bbd5753841..a277bce453 100644
--- a/gnu/packages/toys.scm
+++ b/gnu/packages/toys.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017, 2018, 2020 Tobias Geerinckx-Rice <me <at> tobias.gr>
 ;;; Copyright © 2019 Jesse Gibbons <jgibbons2357+guix <at> gmail.com>
-;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar <at> araneo.si>
+;;; Copyright © 2019, 2020, 2021 Timotej Lazar <timotej.lazar <at> araneo.si>
 ;;; Copyright © 2020 Efraim Flashner <efraim <at> flashner.co.il>
 ;;; Copyright © 2021 Leo Famulari <leo <at> famulari.name>
 ;;;
@@ -21,6 +21,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages toys)
+  #:use-module (gnu packages)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages gtk)
@@ -36,6 +37,66 @@
   #:use-module (guix packages)
   #:use-module (guix utils))
 
+(define-public oneko
+  (package
+    (name "oneko")
+    (version "1.2.sakura.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "http://www.daidouji.com/oneko/distfiles/oneko-" version ".tar.gz"))
+       (sha256
+        (base32 "0bxjlbafn10sfi5d06420pg70rpvsiy5gdbm8kspd6qy4kqhabic"))
+       (patches (search-patches "oneko-remove-nonfree-characters.patch"))
+       (modules '((guix build utils)))
+       (snippet
+        ;; Remove bitmaps with copyright issues.
+        '(begin
+           (for-each delete-file-recursively
+                     (cons* "bitmaps/bsd" "bitmaps/sakura" "bitmaps/tomoyo"
+                            "bitmasks/bsd" "bitmasks/sakura" "bitmasks/tomoyo"
+                            (find-files "cursors" "(bsd|card|petal).*\\.xbm")))
+           #t))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("imake" ,imake)))
+    (inputs
+     `(("libx11" ,libx11)
+       ("libxext" ,libxext)))
+    (arguments
+     `(#:tests? #f ; no tests
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda _
+             (invoke "xmkmf")
+             ;; Fix incorrectly generated compiler flags.
+             (substitute* "Makefile"
+               (("(CDEBUGFLAGS = ).*" _ front) (string-append front "-O2\n")))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs make-flags #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (doc (string-append out "/share/doc/" ,name "-" ,version))
+                    (man (string-append out "/share/man"))
+                    (man6 (string-append man "/man6"))
+                    (man6-ja (string-append man "/ja/man6")))
+               (install-file "oneko" bin)
+               (mkdir-p man6)
+               (mkdir-p man6-ja)
+               (copy-file "oneko.man" (string-append man6 "/oneko.6"))
+               (copy-file "oneko.man.jp" (string-append man6-ja "/oneko.6"))
+               (for-each (lambda (file) (install-file file doc))
+                         (find-files "." "README.*")))
+             #t)))))
+    (home-page "http://www.daidouji.com/oneko/")
+    (synopsis "Cute cat chasing your mouse pointer")
+    (description "Displays a cat or another animated character that chases the
+mouse pointer around the screen while you work.")
+    (license license:public-domain))) ; see https://directory.fsf.org/wiki/Oneko
+
 (define-public sl
   (package
     (name "sl")
-- 
2.32.0





Reply sent to Leo Prikler <leo.prikler <at> student.tugraz.at>:
You have taken responsibility. (Mon, 28 Jun 2021 19:06:01 GMT) Full text and rfc822 format available.

Notification sent to Timotej Lazar <timotej.lazar <at> araneo.si>:
bug acknowledged by developer. (Mon, 28 Jun 2021 19:06:02 GMT) Full text and rfc822 format available.

Message #43 received at 49235-done <at> debbugs.gnu.org (full text, mbox):

From: Leo Prikler <leo.prikler <at> student.tugraz.at>
To: Timotej Lazar <timotej.lazar <at> araneo.si>, 49235-done <at> debbugs.gnu.org
Subject: Re: [PATCH v3] gnu: Add oneko.
Date: Mon, 28 Jun 2021 21:05:40 +0200
Am Montag, den 28.06.2021, 19:02 +0200 schrieb Timotej Lazar:
> * gnu/packages/toys.scm (oneko): New variable.
> ---
> I’ve changed the snippet to also delete all files related to nonfree
> bitmaps. I also adjusted the name & comment for the patch.
> 
> On closer inspection it turns out that iconv messes up the Japanese
> manpage a bit, so I copied it as is. I see some other options:
> 
>   1. don’t include it at all;
>   2. use some fork from github where this has already been done; or
>   3. convert and fix it manually, and include it as a patch.
> 
> I’m inclined to include it as is, for the “historical value” of using
> the original source (1,2), and to avoid having to carry another patch
> in
> Guix (3). Let me know if you’d prefer another solution!
For now I've pushed your patch as-is, since it's not really detrimental
to the functionality of the package.  That being said, I do think we
should seek out patches that have been made from the github forks
mentioned in (2) and apply them as in (3).  Perhaps we might want to
cherry-pick among hunks, so as to not mention the removed bitmaps any
longer.

Another thing I could think is that iconv is either called with the
wrong parameters or that patching the manpage actually breaks it.  In
the case of the latter, you'd have to add the patch as input to the
package, then apply it in the snippet after running iconv.  Of course,
since the character encoding changes, you'd also have to update the
patch, but that's a minor issue imo.

Regards,
Leo

>  gnu/local.mk                                  |   1 +
>  .../oneko-remove-nonfree-characters.patch     | 307
> ++++++++++++++++++
>  gnu/packages/toys.scm                         |  63 +++-
>  3 files changed, 370 insertions(+), 1 deletion(-)
>  create mode 100644 gnu/packages/patches/oneko-remove-nonfree-
> characters.patch
> 
> diff --git a/gnu/local.mk b/gnu/local.mk
> index f507fe566f..7d1fc8157c 100644
> --- a/gnu/local.mk
> +++ b/gnu/local.mk
> @@ -1499,6 +1499,7 @@ dist_patch_DATA =				
> 		\
>    %D%/packages/patches/ocaml-dose3-dont-make-printconf.patch	\
>    %D%/packages/patches/ocaml-dose3-Install-mli-cmx-etc.patch	\
>    %D%/packages/patches/omake-fix-non-determinism.patch	\
> +  %D%/packages/patches/oneko-remove-nonfree-characters.patch	\
>    %D%/packages/patches/openbabel-fix-crash-on-nwchem-output.patch	
> \
>    %D%/packages/patches/opencascade-oce-glibc-2.26.patch		
> \
>    %D%/packages/patches/opencv-fix-build-of-grfmt_jpeg2000.cpp.patch	
> \
> diff --git a/gnu/packages/patches/oneko-remove-nonfree-
> characters.patch b/gnu/packages/patches/oneko-remove-nonfree-
> characters.patch
> new file mode 100644
> index 0000000000..4f80e53995
> --- /dev/null
> +++ b/gnu/packages/patches/oneko-remove-nonfree-characters.patch
> @@ -0,0 +1,307 @@
> +Remove options and code to use bitmaps of the BSD daemon and other
> characters
> +with copyright issues. The bitmaps themselves are deleted in a
> source snippet.
> +diff --git a/cursors/cursor.include b/cursors/cursor.include
> +index ef96d72..1dc3dc2 100644
> +--- a/cursors/cursor.include
> ++++ b/cursors/cursor.include
> +@@ -2,9 +2,3 @@
> + #include "mouse_cursor_mask.xbm"
> + #include "bone_cursor.xbm"
> + #include "bone_cursor_mask.xbm"
> +-#include "bsd_cursor.xbm"
> +-#include "bsd_cursor_mask.xbm"
> +-#include "card_cursor.xbm"
> +-#include "card_cursor_mask.xbm"
> +-#include "petal_cursor.xbm"
> +-#include "petal_cursor_mask.xbm"
> +diff --git a/oneko.c b/oneko.c
> +index d2b81fe..04fa59f 100644
> +--- a/oneko.c
> ++++ b/oneko.c
> +@@ -33,7 +33,7 @@ XColor	theBackgroundColor;		/*
> $@?'(J ($@%P%C%/%0%i%&%s%I(J) */
> + 
> + int Synchronous = False;
> + /* Types of animals */
> +-#define BITMAPTYPES 6
> ++#define BITMAPTYPES 3
> + typedef struct _AnimalDefaults {
> +   char *name;
> +   int speed, idle, bitmap_width, bitmap_height;
> +@@ -51,12 +51,6 @@ AnimalDefaultsData AnimalDefaultsDataTable[] =
> +       mouse_cursor_width,mouse_cursor_height,
> mouse_cursor_x_hot,mouse_cursor_y_hot },
> +   { "dog" , 10, 6, 32, 32, 125000L, 0, 0,
> bone_cursor_bits,bone_cursor_mask_bits,
> +       bone_cursor_width,bone_cursor_height,
> bone_cursor_x_hot,bone_cursor_y_hot },
> +-  { "bsd_daemon" , 16, 6, 32, 32, 300000L, 22, 20,
> bsd_cursor_bits,bsd_cursor_mask_bits,
> +-      bsd_cursor_width,bsd_cursor_height,
> bsd_cursor_x_hot,bsd_cursor_y_hot },
> +-  { "sakura" , 13, 6, 32, 32, 125000L, 0, 0,
> card_cursor_bits,card_cursor_mask_bits,
> +-      card_cursor_width,card_cursor_height,
> card_cursor_x_hot,card_cursor_y_hot },
> +-  { "tomoyo" , 10, 6, 32, 32, 125000L, 32, 32,
> petal_cursor_bits,petal_cursor_mask_bits,
> +-      petal_cursor_width,petal_cursor_height,
> petal_cursor_x_hot,petal_cursor_y_hot },
> + };
> + 
> + /*
> +@@ -154,70 +148,70 @@ typedef struct {
> + 
> + BitmapGCData	BitmapGCDataTable[] =
> + {
> +-    { &Mati2GC, &Mati2Xbm,  mati2_bits, mati2_tora_bits,
> mati2_dog_bits, mati2_bsd_bits, mati2_sakura_bits, mati2_tomoyo_bits,
> +-      &Mati2Msk, mati2_mask_bits, mati2_mask_bits,
> mati2_dog_mask_bits, mati2_bsd_mask_bits, mati2_sakura_mask_bits,
> mati2_tomoyo_mask_bits },
> +-    { &Jare2GC, &Jare2Xbm,  jare2_bits, jare2_tora_bits,
> jare2_dog_bits, jare2_bsd_bits, jare2_sakura_bits, jare2_tomoyo_bits,
> +-      &Jare2Msk, jare2_mask_bits, jare2_mask_bits,
> jare2_dog_mask_bits, jare2_bsd_mask_bits, jare2_sakura_mask_bits,
> jare2_tomoyo_mask_bits },
> +-    { &Kaki1GC, &Kaki1Xbm,  kaki1_bits, kaki1_tora_bits,
> kaki1_dog_bits, kaki1_bsd_bits, kaki1_sakura_bits, kaki1_tomoyo_bits,
> +-      &Kaki1Msk, kaki1_mask_bits, kaki1_mask_bits,
> kaki1_dog_mask_bits, kaki1_bsd_mask_bits, kaki1_sakura_mask_bits,
> kaki1_tomoyo_mask_bits },
> +-    { &Kaki2GC, &Kaki2Xbm,  kaki2_bits, kaki2_tora_bits,
> kaki2_dog_bits, kaki2_bsd_bits, kaki2_sakura_bits, kaki2_tomoyo_bits,
> +-      &Kaki2Msk, kaki2_mask_bits, kaki2_mask_bits,
> kaki2_dog_mask_bits, kaki2_bsd_mask_bits, kaki2_sakura_mask_bits,
> kaki2_tomoyo_mask_bits },
> +-    { &Mati3GC, &Mati3Xbm,  mati3_bits, mati3_tora_bits,
> mati3_dog_bits, mati3_bsd_bits, mati3_sakura_bits, mati3_tomoyo_bits,
> +-      &Mati3Msk, mati3_mask_bits, mati3_mask_bits,
> mati3_dog_mask_bits, mati3_bsd_mask_bits, mati3_sakura_mask_bits,
> mati3_tomoyo_mask_bits },
> +-    { &Sleep1GC, &Sleep1Xbm,  sleep1_bits, sleep1_tora_bits,
> sleep1_dog_bits, sleep1_bsd_bits, sleep1_sakura_bits,
> sleep1_tomoyo_bits,
> +-      &Sleep1Msk, sleep1_mask_bits, sleep1_mask_bits,
> sleep1_dog_mask_bits, sleep1_bsd_mask_bits, sleep1_sakura_mask_bits,
> sleep1_tomoyo_mask_bits },
> +-    { &Sleep2GC, &Sleep2Xbm,  sleep2_bits, sleep2_tora_bits,
> sleep2_dog_bits, sleep2_bsd_bits, sleep2_sakura_bits,
> sleep2_tomoyo_bits,
> +-      &Sleep2Msk, sleep2_mask_bits, sleep2_mask_bits,
> sleep2_dog_mask_bits, sleep2_bsd_mask_bits, sleep2_sakura_mask_bits,
> sleep2_tomoyo_mask_bits },
> +-    { &AwakeGC, &AwakeXbm,  awake_bits, awake_tora_bits,
> awake_dog_bits, awake_bsd_bits, awake_sakura_bits, awake_tomoyo_bits,
> +-      &AwakeMsk, awake_mask_bits, awake_mask_bits,
> awake_dog_mask_bits, awake_bsd_mask_bits, awake_sakura_mask_bits,
> awake_tomoyo_mask_bits },
> +-    { &Up1GC, &Up1Xbm,  up1_bits, up1_tora_bits, up1_dog_bits,
> up1_bsd_bits, up1_sakura_bits, up1_tomoyo_bits,
> +-      &Up1Msk, up1_mask_bits, up1_mask_bits, up1_dog_mask_bits,
> up1_bsd_mask_bits, up1_sakura_mask_bits, up1_tomoyo_mask_bits },
> +-    { &Up2GC, &Up2Xbm,  up2_bits, up2_tora_bits, up2_dog_bits,
> up2_bsd_bits, up2_sakura_bits, up2_tomoyo_bits,
> +-      &Up2Msk, up2_mask_bits, up2_mask_bits, up2_dog_mask_bits,
> up2_bsd_mask_bits, up2_sakura_mask_bits, up2_tomoyo_mask_bits },
> +-    { &Down1GC, &Down1Xbm,  down1_bits, down1_tora_bits,
> down1_dog_bits, down1_bsd_bits, down1_sakura_bits, down1_tomoyo_bits,
> +-      &Down1Msk, down1_mask_bits, down1_mask_bits,
> down1_dog_mask_bits, down1_bsd_mask_bits, down1_sakura_mask_bits,
> down1_tomoyo_mask_bits },
> +-    { &Down2GC, &Down2Xbm,  down2_bits, down2_tora_bits,
> down2_dog_bits, down2_bsd_bits, down2_sakura_bits, down2_tomoyo_bits,
> +-      &Down2Msk, down2_mask_bits, down2_mask_bits,
> down2_dog_mask_bits, down2_bsd_mask_bits, down2_sakura_mask_bits,
> down2_tomoyo_mask_bits },
> +-    { &Left1GC, &Left1Xbm,  left1_bits, left1_tora_bits,
> left1_dog_bits, left1_bsd_bits, left1_sakura_bits, left1_tomoyo_bits,
> +-      &Left1Msk, left1_mask_bits, left1_mask_bits,
> left1_dog_mask_bits, left1_bsd_mask_bits, left1_sakura_mask_bits,
> left1_tomoyo_mask_bits },
> +-    { &Left2GC, &Left2Xbm,  left2_bits, left2_tora_bits,
> left2_dog_bits, left2_bsd_bits, left2_sakura_bits, left2_tomoyo_bits,
> +-      &Left2Msk, left2_mask_bits, left2_mask_bits,
> left2_dog_mask_bits, left2_bsd_mask_bits, left2_sakura_mask_bits,
> left2_tomoyo_mask_bits },
> +-    { &Right1GC, &Right1Xbm,  right1_bits, right1_tora_bits,
> right1_dog_bits, right1_bsd_bits, right1_sakura_bits,
> right1_tomoyo_bits,
> +-      &Right1Msk, right1_mask_bits,
> right1_mask_bits,right1_dog_mask_bits, right1_bsd_mask_bits,
> right1_sakura_mask_bits, right1_tomoyo_mask_bits },
> +-    { &Right2GC, &Right2Xbm,  right2_bits, right2_tora_bits,
> right2_dog_bits, right2_bsd_bits, right2_sakura_bits,
> right2_tomoyo_bits,
> +-      &Right2Msk, right2_mask_bits, right2_mask_bits,
> right2_dog_mask_bits, right2_bsd_mask_bits, right2_sakura_mask_bits,
> right2_tomoyo_mask_bits },
> +-    { &UpLeft1GC, &UpLeft1Xbm,  upleft1_bits, upleft1_tora_bits,
> upleft1_dog_bits, upleft1_bsd_bits, upleft1_sakura_bits,
> upleft1_tomoyo_bits,
> +-      &UpLeft1Msk, upleft1_mask_bits, upleft1_mask_bits,
> upleft1_dog_mask_bits, upleft1_bsd_mask_bits,
> upleft1_sakura_mask_bits, upleft1_tomoyo_mask_bits },
> +-    { &UpLeft2GC, &UpLeft2Xbm,  upleft2_bits, upleft2_tora_bits,
> upleft2_dog_bits, upleft2_bsd_bits, upleft2_sakura_bits,
> upleft2_tomoyo_bits,
> +-      &UpLeft2Msk, upleft2_mask_bits,
> upleft2_mask_bits,upleft2_dog_mask_bits, upleft2_bsd_mask_bits,
> upleft2_sakura_mask_bits, upleft2_tomoyo_mask_bits },
> +-    { &UpRight1GC, &UpRight1Xbm,  upright1_bits,
> upright1_tora_bits, upright1_dog_bits, upright1_bsd_bits,
> upright1_sakura_bits, upright1_tomoyo_bits,
> +-      &UpRight1Msk, upright1_mask_bits,
> upright1_mask_bits,upright1_dog_mask_bits, upright1_bsd_mask_bits,
> upright1_sakura_mask_bits, upright1_tomoyo_mask_bits },
> +-    { &UpRight2GC, &UpRight2Xbm,  upright2_bits,
> upright2_tora_bits, upright2_dog_bits, upright2_bsd_bits,
> upright2_sakura_bits, upright2_tomoyo_bits,
> +-      &UpRight2Msk, upright2_mask_bits,
> upright2_mask_bits,upright2_dog_mask_bits, upright2_bsd_mask_bits,
> upright2_sakura_mask_bits, upright2_tomoyo_mask_bits },
> +-    { &DownLeft1GC, &DownLeft1Xbm,  dwleft1_bits,
> dwleft1_tora_bits, dwleft1_dog_bits, dwleft1_bsd_bits,
> dwleft1_sakura_bits, dwleft1_tomoyo_bits,
> +-      &DownLeft1Msk, dwleft1_mask_bits, dwleft1_mask_bits,
> dwleft1_dog_mask_bits, dwleft1_bsd_mask_bits,
> dwleft1_sakura_mask_bits, dwleft1_tomoyo_mask_bits },
> +-    { &DownLeft2GC, &DownLeft2Xbm,  dwleft2_bits,
> dwleft2_tora_bits, dwleft2_dog_bits, dwleft2_bsd_bits,
> dwleft2_sakura_bits, dwleft2_tomoyo_bits,
> +-      &DownLeft2Msk, dwleft2_mask_bits, dwleft2_mask_bits,
> dwleft2_dog_mask_bits, dwleft2_bsd_mask_bits,
> dwleft2_sakura_mask_bits, dwleft2_tomoyo_mask_bits },
> +-    { &DownRight1GC, &DownRight1Xbm,  dwright1_bits,
> dwright1_tora_bits, dwright1_dog_bits, dwright1_bsd_bits,
> dwright1_sakura_bits, dwright1_tomoyo_bits,
> +-      &DownRight1Msk, dwright1_mask_bits, dwright1_mask_bits,
> dwright1_dog_mask_bits, dwright1_bsd_mask_bits,
> dwright1_sakura_mask_bits, dwright1_tomoyo_mask_bits },
> +-    { &DownRight2GC, &DownRight2Xbm,  dwright2_bits,
> dwright2_tora_bits, dwright2_dog_bits, dwright2_bsd_bits,
> dwright2_sakura_bits, dwright2_tomoyo_bits,
> +-      &DownRight2Msk, dwright2_mask_bits, dwright2_mask_bits,
> dwright2_dog_mask_bits, dwright2_bsd_mask_bits,
> dwright2_sakura_mask_bits, dwright2_tomoyo_mask_bits },
> +-    { &UpTogi1GC, &UpTogi1Xbm,  utogi1_bits, utogi1_tora_bits,
> utogi1_dog_bits, utogi1_bsd_bits, utogi1_sakura_bits,
> utogi1_tomoyo_bits,
> +-      &UpTogi1Msk, utogi1_mask_bits, utogi1_mask_bits,
> utogi1_dog_mask_bits, utogi1_bsd_mask_bits, utogi1_sakura_mask_bits,
> utogi1_tomoyo_mask_bits },
> +-    { &UpTogi2GC, &UpTogi2Xbm,  utogi2_bits, utogi2_tora_bits,
> utogi2_dog_bits, utogi2_bsd_bits, utogi2_sakura_bits,
> utogi2_tomoyo_bits,
> +-      &UpTogi2Msk, utogi2_mask_bits, utogi2_mask_bits,
> utogi2_dog_mask_bits, utogi2_bsd_mask_bits, utogi2_sakura_mask_bits,
> utogi2_tomoyo_mask_bits },
> +-    { &DownTogi1GC, &DownTogi1Xbm,  dtogi1_bits, dtogi1_tora_bits,
> dtogi1_dog_bits, dtogi1_bsd_bits, dtogi1_sakura_bits,
> dtogi1_tomoyo_bits,
> +-      &DownTogi1Msk, dtogi1_mask_bits, dtogi1_mask_bits,
> dtogi1_dog_mask_bits, dtogi1_bsd_mask_bits, dtogi1_sakura_mask_bits,
> dtogi1_tomoyo_mask_bits },
> +-    { &DownTogi2GC, &DownTogi2Xbm,  dtogi2_bits, dtogi2_tora_bits,
> dtogi2_dog_bits, dtogi2_bsd_bits, dtogi2_sakura_bits,
> dtogi2_tomoyo_bits,
> +-      &DownTogi2Msk, dtogi2_mask_bits, dtogi2_mask_bits,
> dtogi2_dog_mask_bits, dtogi2_bsd_mask_bits, dtogi2_sakura_mask_bits,
> dtogi2_tomoyo_mask_bits },
> +-    { &LeftTogi1GC, &LeftTogi1Xbm,  ltogi1_bits, ltogi1_tora_bits,
> ltogi1_dog_bits, ltogi1_bsd_bits, ltogi1_sakura_bits,
> ltogi1_tomoyo_bits,
> +-      &LeftTogi1Msk, ltogi1_mask_bits,
> ltogi1_mask_bits,ltogi1_dog_mask_bits, ltogi1_bsd_mask_bits,
> ltogi1_sakura_mask_bits, ltogi1_tomoyo_mask_bits },
> +-    { &LeftTogi2GC, &LeftTogi2Xbm,  ltogi2_bits, ltogi2_tora_bits,
> ltogi2_dog_bits, ltogi2_bsd_bits, ltogi2_sakura_bits,
> ltogi2_tomoyo_bits,
> +-      &LeftTogi2Msk, ltogi2_mask_bits,
> ltogi2_mask_bits,ltogi2_dog_mask_bits, ltogi2_bsd_mask_bits,
> ltogi2_sakura_mask_bits, ltogi2_tomoyo_mask_bits },
> +-    { &RightTogi1GC, &RightTogi1Xbm,  rtogi1_bits,
> rtogi1_tora_bits, rtogi1_dog_bits, rtogi1_bsd_bits,
> rtogi1_sakura_bits, rtogi1_tomoyo_bits,
> +-      &RightTogi1Msk, rtogi1_mask_bits,
> rtogi1_mask_bits,rtogi1_dog_mask_bits, rtogi1_bsd_mask_bits,
> rtogi1_sakura_mask_bits, rtogi1_tomoyo_mask_bits },
> +-    { &RightTogi2GC, &RightTogi2Xbm,  rtogi2_bits,
> rtogi2_tora_bits, rtogi2_dog_bits, rtogi2_bsd_bits,
> rtogi2_sakura_bits, rtogi2_tomoyo_bits,
> +-      &RightTogi2Msk, rtogi2_mask_bits,
> rtogi2_mask_bits,rtogi2_dog_mask_bits, rtogi2_bsd_mask_bits,
> rtogi2_sakura_mask_bits, rtogi2_tomoyo_mask_bits },
> ++    { &Mati2GC, &Mati2Xbm,  mati2_bits, mati2_tora_bits,
> mati2_dog_bits,
> ++      &Mati2Msk, mati2_mask_bits, mati2_mask_bits,
> mati2_dog_mask_bits },
> ++    { &Jare2GC, &Jare2Xbm,  jare2_bits, jare2_tora_bits,
> jare2_dog_bits,
> ++      &Jare2Msk, jare2_mask_bits, jare2_mask_bits,
> jare2_dog_mask_bits },
> ++    { &Kaki1GC, &Kaki1Xbm,  kaki1_bits, kaki1_tora_bits,
> kaki1_dog_bits,
> ++      &Kaki1Msk, kaki1_mask_bits, kaki1_mask_bits,
> kaki1_dog_mask_bits },
> ++    { &Kaki2GC, &Kaki2Xbm,  kaki2_bits, kaki2_tora_bits,
> kaki2_dog_bits,
> ++      &Kaki2Msk, kaki2_mask_bits, kaki2_mask_bits,
> kaki2_dog_mask_bits },
> ++    { &Mati3GC, &Mati3Xbm,  mati3_bits, mati3_tora_bits,
> mati3_dog_bits,
> ++      &Mati3Msk, mati3_mask_bits, mati3_mask_bits,
> mati3_dog_mask_bits },
> ++    { &Sleep1GC, &Sleep1Xbm,  sleep1_bits, sleep1_tora_bits,
> sleep1_dog_bits,
> ++      &Sleep1Msk, sleep1_mask_bits, sleep1_mask_bits,
> sleep1_dog_mask_bits },
> ++    { &Sleep2GC, &Sleep2Xbm,  sleep2_bits, sleep2_tora_bits,
> sleep2_dog_bits,
> ++      &Sleep2Msk, sleep2_mask_bits, sleep2_mask_bits,
> sleep2_dog_mask_bits },
> ++    { &AwakeGC, &AwakeXbm,  awake_bits, awake_tora_bits,
> awake_dog_bits,
> ++      &AwakeMsk, awake_mask_bits, awake_mask_bits,
> awake_dog_mask_bits },
> ++    { &Up1GC, &Up1Xbm,  up1_bits, up1_tora_bits, up1_dog_bits,
> ++      &Up1Msk, up1_mask_bits, up1_mask_bits, up1_dog_mask_bits },
> ++    { &Up2GC, &Up2Xbm,  up2_bits, up2_tora_bits, up2_dog_bits,
> ++      &Up2Msk, up2_mask_bits, up2_mask_bits, up2_dog_mask_bits },
> ++    { &Down1GC, &Down1Xbm,  down1_bits, down1_tora_bits,
> down1_dog_bits,
> ++      &Down1Msk, down1_mask_bits, down1_mask_bits,
> down1_dog_mask_bits },
> ++    { &Down2GC, &Down2Xbm,  down2_bits, down2_tora_bits,
> down2_dog_bits,
> ++      &Down2Msk, down2_mask_bits, down2_mask_bits,
> down2_dog_mask_bits },
> ++    { &Left1GC, &Left1Xbm,  left1_bits, left1_tora_bits,
> left1_dog_bits,
> ++      &Left1Msk, left1_mask_bits, left1_mask_bits,
> left1_dog_mask_bits },
> ++    { &Left2GC, &Left2Xbm,  left2_bits, left2_tora_bits,
> left2_dog_bits,
> ++      &Left2Msk, left2_mask_bits, left2_mask_bits,
> left2_dog_mask_bits },
> ++    { &Right1GC, &Right1Xbm,  right1_bits, right1_tora_bits,
> right1_dog_bits,
> ++      &Right1Msk, right1_mask_bits,
> right1_mask_bits,right1_dog_mask_bits },
> ++    { &Right2GC, &Right2Xbm,  right2_bits, right2_tora_bits,
> right2_dog_bits,
> ++      &Right2Msk, right2_mask_bits, right2_mask_bits,
> right2_dog_mask_bits },
> ++    { &UpLeft1GC, &UpLeft1Xbm,  upleft1_bits, upleft1_tora_bits,
> upleft1_dog_bits,
> ++      &UpLeft1Msk, upleft1_mask_bits, upleft1_mask_bits,
> upleft1_dog_mask_bits },
> ++    { &UpLeft2GC, &UpLeft2Xbm,  upleft2_bits, upleft2_tora_bits,
> upleft2_dog_bits,
> ++      &UpLeft2Msk, upleft2_mask_bits,
> upleft2_mask_bits,upleft2_dog_mask_bits },
> ++    { &UpRight1GC, &UpRight1Xbm,  upright1_bits,
> upright1_tora_bits, upright1_dog_bits,
> ++      &UpRight1Msk, upright1_mask_bits,
> upright1_mask_bits,upright1_dog_mask_bits },
> ++    { &UpRight2GC, &UpRight2Xbm,  upright2_bits,
> upright2_tora_bits, upright2_dog_bits,
> ++      &UpRight2Msk, upright2_mask_bits,
> upright2_mask_bits,upright2_dog_mask_bits },
> ++    { &DownLeft1GC, &DownLeft1Xbm,  dwleft1_bits,
> dwleft1_tora_bits, dwleft1_dog_bits,
> ++      &DownLeft1Msk, dwleft1_mask_bits, dwleft1_mask_bits,
> dwleft1_dog_mask_bits },
> ++    { &DownLeft2GC, &DownLeft2Xbm,  dwleft2_bits,
> dwleft2_tora_bits, dwleft2_dog_bits,
> ++      &DownLeft2Msk, dwleft2_mask_bits, dwleft2_mask_bits,
> dwleft2_dog_mask_bits },
> ++    { &DownRight1GC, &DownRight1Xbm,  dwright1_bits,
> dwright1_tora_bits, dwright1_dog_bits,
> ++      &DownRight1Msk, dwright1_mask_bits, dwright1_mask_bits,
> dwright1_dog_mask_bits },
> ++    { &DownRight2GC, &DownRight2Xbm,  dwright2_bits,
> dwright2_tora_bits, dwright2_dog_bits,
> ++      &DownRight2Msk, dwright2_mask_bits, dwright2_mask_bits,
> dwright2_dog_mask_bits },
> ++    { &UpTogi1GC, &UpTogi1Xbm,  utogi1_bits, utogi1_tora_bits,
> utogi1_dog_bits,
> ++      &UpTogi1Msk, utogi1_mask_bits, utogi1_mask_bits,
> utogi1_dog_mask_bits },
> ++    { &UpTogi2GC, &UpTogi2Xbm,  utogi2_bits, utogi2_tora_bits,
> utogi2_dog_bits,
> ++      &UpTogi2Msk, utogi2_mask_bits, utogi2_mask_bits,
> utogi2_dog_mask_bits },
> ++    { &DownTogi1GC, &DownTogi1Xbm,  dtogi1_bits, dtogi1_tora_bits,
> dtogi1_dog_bits,
> ++      &DownTogi1Msk, dtogi1_mask_bits, dtogi1_mask_bits,
> dtogi1_dog_mask_bits },
> ++    { &DownTogi2GC, &DownTogi2Xbm,  dtogi2_bits, dtogi2_tora_bits,
> dtogi2_dog_bits,
> ++      &DownTogi2Msk, dtogi2_mask_bits, dtogi2_mask_bits,
> dtogi2_dog_mask_bits },
> ++    { &LeftTogi1GC, &LeftTogi1Xbm,  ltogi1_bits, ltogi1_tora_bits,
> ltogi1_dog_bits,
> ++      &LeftTogi1Msk, ltogi1_mask_bits,
> ltogi1_mask_bits,ltogi1_dog_mask_bits },
> ++    { &LeftTogi2GC, &LeftTogi2Xbm,  ltogi2_bits, ltogi2_tora_bits,
> ltogi2_dog_bits,
> ++      &LeftTogi2Msk, ltogi2_mask_bits,
> ltogi2_mask_bits,ltogi2_dog_mask_bits },
> ++    { &RightTogi1GC, &RightTogi1Xbm,  rtogi1_bits,
> rtogi1_tora_bits, rtogi1_dog_bits,
> ++      &RightTogi1Msk, rtogi1_mask_bits,
> rtogi1_mask_bits,rtogi1_dog_mask_bits },
> ++    { &RightTogi2GC, &RightTogi2Xbm,  rtogi2_bits,
> rtogi2_tora_bits, rtogi2_dog_bits,
> ++      &RightTogi2Msk, rtogi2_mask_bits,
> rtogi2_mask_bits,rtogi2_dog_mask_bits },
> +     { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }
> + };
> + 
> +@@ -1512,8 +1506,6 @@ GetArguments(argc, argv, theDisplayName)
> +     }
> +     else {
> +       char *av = argv[ArgCounter] + 1;
> +-      if (strcmp(av, "bsd") == 0)
> +-	av = "bsd_daemon";
> +       for (loop=0;loop<BITMAPTYPES;loop++) {
> + 	if (strcmp(av,AnimalDefaultsDataTable[loop].name)==0)
> + 	  {NekoMoyou = loop;found=1;}
> +diff --git a/oneko.h b/oneko.h
> +index 414e12f..38281fd 100644
> +--- a/oneko.h
> ++++ b/oneko.h
> +@@ -36,17 +36,11 @@
> + #include "bitmaps/neko/neko.include"
> + #include "bitmaps/tora/tora.include"
> + #include "bitmaps/dog/dog.include"
> +-#include "bitmaps/bsd/bsd.include"
> +-#include "bitmaps/sakura/sakura.include"
> +-#include "bitmaps/tomoyo/tomoyo.include"
> + 
> + /* These are the bitmasks that allow the use of the shape
> extension. */
> + 
> + #include "bitmasks/neko/neko.mask.include"
> + #include "bitmasks/dog/dog.mask.include"
> +-#include "bitmasks/bsd/bsd.mask.include"
> +-#include "bitmasks/sakura/sakura.mask.include"
> +-#include "bitmasks/tomoyo/tomoyo.mask.include"
> + 
> + /*
> +  *	$@Dj?tDj5A(J
> +diff --git a/oneko.man b/oneko.man
> +index d6d2b40..0e9b09d 100644
> +--- a/oneko.man
> ++++ b/oneko.man
> +@@ -3,9 +3,7 @@
> + The program oneko creates a cute cat chasing around your mouse
> cursor.
> + .SH SYNOPSIS
> + .B oneko
> +-[\fB-help\fP] [\fB-tora\fP]
> +-[\fB-dog\fP] [\fB-bsd_daemon\fP] [\fB-bsd\fP]
> +-[\fB-sakura\fP] [\fB-tomoyo\fP]
> ++[\fB-help\fP] [\fB-tora\fP] [\fB-dog\fP]
> + [\fB-time\fP \fIn\fP] [\fB-speed\fP \fIn\fP] [\fB-idle\fP \fIn\fP]
> + [\fB-name\fP \fIname\fP] [\fB-towindow\fP] [\fB-toname\fP
> \fIname\fP]
> + [\fB-tofocus\fP]
> +@@ -28,19 +26,6 @@ I don't know how to say it in English.
> + .B -dog
> + Runs a dog instead of a cat.
> + .TP
> +-.B -bsd_daemon
> +-Runs a 4.3BSD daemon instead of a cat.
> +-.TP
> +-.B -bsd
> +-Same as
> +-.B -bsd_daemon.
> +-.TP
> +-.B -sakura
> +-Runs Sakura Kinomoto instead of a cat.
> +-.TP
> +-.B -tomoyo
> +-Runs Tomoyo Daidouji instead of a cat.
> +-.TP
> + .BI \-time " interval"
> + Sets interval timer which determine intervals for cat animation.
> + Default value is 125000 and unit is micro-second.  Smaller value
> makes cat
> +@@ -129,12 +114,6 @@ Background color.
> + While this program uses XGetDefault, be sure to use "neko.resouce"
> form.
> + If you run this program as "tora", by hard of soft link, the \fB-
> tora\fP
> + option is enabled by default.
> +-.PP
> +-BSD Daemon Copyright 1988 by Marshall Kirk McKusick. All Rights
> Reserved.
> +-.PP
> +-Sakura Kinomoto and Tomoyo Daidouji are characters in a comic strip
> +-"CARDCAPTOR SAKURA" (CLAMP, Kodansha), with the sanction indicated
> in
> +-CLAMP SCHOOL WEB CAMPUS (http://www.clamp.f-2.co.jp/).
> + .SH AUTHOR
> + Original
> + .I xneko
> +diff --git a/oneko.man.jp b/oneko.man.jp
> +index 96f9e3a..9a885df 100644
> +--- a/oneko.man.jp
> ++++ b/oneko.man.jp
> +@@ -3,9 +3,7 @@
> + $@$+$o$$$$G-$,%^%&%9%+!<%=%k$rDI$$$+$1$k%W%m%0%i%`(J
> + .SH $@=q<0(J
> + .B oneko
> +-[\fB-help\fP] [\fB-tora\fP]
> +-[\fB-dog\fP] [\fB-bsd_daemon\fP] [\fB-bsd\fP]
> +-[\fB-sakura\fP] [\fB-tomoyo\fP]
> ++[\fB-help\fP] [\fB-tora\fP] [\fB-dog\fP]
> + [\fB-time\fP \fIn\fP] [\fB-speed\fP \fIn\fP] [\fB-idle\fP \fIn\fP]
> + [\fB-name\fP \fIname\fP] [\fB-towindow\fP] [\fB-toname\fP
> \fIname\fP]
> + [\fB-tofocus\fP]
> +@@ -27,19 +25,6 @@
> + .B -dog
> + $@G-$KBe$o$j8$$,Av$j$^$9!#(J
> + .TP
> +-.B -bsd_daemon
> +-$@G-$KBe$o$j(J 4.3BSD $@%G!<%b%s$,Av$j$^$9!#(J
> +-.TP
> +-.B -bsd
> +-.B -bsd_daemon
> +-$@$KF1$8!#(J
> +-.TP
> +-.B -sakura
> +-$@G-$KBe$o$jLZG7K\:y$,Av$j$^$9!#(J
> +-.TP
> +-.B -tomoyo
> +-$@G-$KBe$o$jBgF;;{CN@$$,Av$j$^$9!#(J
> +-.TP
> + .BI \-time " interval"
> + $@G-%"%K%a!<%7%g%s$N4V3V$r;XDj$7$^$9!#(J
> + $@%G%U%)%k%HCM$O(J 125000 $@$GC10L$O%^%$%/%mIC$G$9!#(J
> +@@ -127,15 +112,6 @@ SHAPE extension $@$r;H$$$?$/$J$$>l9g(J True
> $@$H$7$^$9!#(J
> + $@$r;H$&$3$H$KN10U$7$F$/$@$5$$!#(J
> + $@%O!<%I%j%s%/$"$k$$$O%=%U%H%j%s%/$K$h$C$F!"$3$N%W%m%0%i%`$r(J
> tora $@$H$7$F(J
> + $@5/F0$7$?>l9g$K$O!"%G%U%)%k%H$G(J \fB-tora\fP $@%*%W%7%g%s$,M-
> 8z$H$J$j$^$9!#(J
> +-.PP
> +-BSD $@%G!<%b%s$O(J  Marshall Kirk McKusick
> $@;a$NCx:nJ*$G$9!#$9$Y$F$N8"Mx$O(J
> +-$@J];}$5$l$F$$$^$9!#(J
> +-BSD Daemon Copyright 1988 by Marshall Kirk McKusick. All Rights
> Reserved.
> +-.PP
> +-$@LZG7K\:y$*$h$SBgF;;{CN@$$OL!2h!X%+!<%I%-
> %c%W%?!<$5$/$i!Y!J(JCLAMP, $@9VCL(J
> +-$@<R!K$N%-%c%i%/%?!<$G$"$j!"(JCLAMP $@3X1`EE;RJ,9;(J
> +-$@!J(J
> http://www.clamp.f-2.co.jp/$@!K$K<($5$l$F$$$kMFG'$N$b$H$KMxMQ$5$l$F$$(J
> +-$@$^$9!#(J
> + .SH $@:n<T(J
> + $@%*%j%8%J%k$N(J
> + .I xneko
> diff --git a/gnu/packages/toys.scm b/gnu/packages/toys.scm
> index bbd5753841..a277bce453 100644
> --- a/gnu/packages/toys.scm
> +++ b/gnu/packages/toys.scm
> @@ -1,7 +1,7 @@
>  ;;; GNU Guix --- Functional package management for GNU
>  ;;; Copyright © 2017, 2018, 2020 Tobias Geerinckx-Rice <me <at> tobias.gr
> >
>  ;;; Copyright © 2019 Jesse Gibbons <jgibbons2357+guix <at> gmail.com>
> -;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar <at> araneo.si>
> +;;; Copyright © 2019, 2020, 2021 Timotej Lazar <
> timotej.lazar <at> araneo.si>
>  ;;; Copyright © 2020 Efraim Flashner <efraim <at> flashner.co.il>
>  ;;; Copyright © 2021 Leo Famulari <leo <at> famulari.name>
>  ;;;
> @@ -21,6 +21,7 @@
>  ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>
> ;.
>  
>  (define-module (gnu packages toys)
> +  #:use-module (gnu packages)
>    #:use-module (gnu packages bison)
>    #:use-module (gnu packages flex)
>    #:use-module (gnu packages gtk)
> @@ -36,6 +37,66 @@
>    #:use-module (guix packages)
>    #:use-module (guix utils))
>  
> +(define-public oneko
> +  (package
> +    (name "oneko")
> +    (version "1.2.sakura.5")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (string-append
> +             "http://www.daidouji.com/oneko/distfiles/oneko-"
> version ".tar.gz"))
> +       (sha256
> +        (base32
> "0bxjlbafn10sfi5d06420pg70rpvsiy5gdbm8kspd6qy4kqhabic"))
> +       (patches (search-patches "oneko-remove-nonfree-
> characters.patch"))
> +       (modules '((guix build utils)))
> +       (snippet
> +        ;; Remove bitmaps with copyright issues.
> +        '(begin
> +           (for-each delete-file-recursively
> +                     (cons* "bitmaps/bsd" "bitmaps/sakura"
> "bitmaps/tomoyo"
> +                            "bitmasks/bsd" "bitmasks/sakura"
> "bitmasks/tomoyo"
> +                            (find-files "cursors"
> "(bsd|card|petal).*\\.xbm")))
> +           #t))))
> +    (build-system gnu-build-system)
> +    (native-inputs
> +     `(("imake" ,imake)))
> +    (inputs
> +     `(("libx11" ,libx11)
> +       ("libxext" ,libxext)))
> +    (arguments
> +     `(#:tests? #f ; no tests
> +       #:phases
> +       (modify-phases %standard-phases
> +         (replace 'configure
> +           (lambda _
> +             (invoke "xmkmf")
> +             ;; Fix incorrectly generated compiler flags.
> +             (substitute* "Makefile"
> +               (("(CDEBUGFLAGS = ).*" _ front) (string-append front
> "-O2\n")))
> +             #t))
> +         (replace 'install
> +           (lambda* (#:key outputs make-flags #:allow-other-keys)
> +             (let* ((out (assoc-ref outputs "out"))
> +                    (bin (string-append out "/bin"))
> +                    (doc (string-append out "/share/doc/" ,name "-"
> ,version))
> +                    (man (string-append out "/share/man"))
> +                    (man6 (string-append man "/man6"))
> +                    (man6-ja (string-append man "/ja/man6")))
> +               (install-file "oneko" bin)
> +               (mkdir-p man6)
> +               (mkdir-p man6-ja)
> +               (copy-file "oneko.man" (string-append man6
> "/oneko.6"))
> +               (copy-file "oneko.man.jp" (string-append man6-ja
> "/oneko.6"))
> +               (for-each (lambda (file) (install-file file doc))
> +                         (find-files "." "README.*")))
> +             #t)))))
> +    (home-page "http://www.daidouji.com/oneko/")
> +    (synopsis "Cute cat chasing your mouse pointer")
> +    (description "Displays a cat or another animated character that
> chases the
> +mouse pointer around the screen while you work.")
> +    (license license:public-domain))) ; see 
> https://directory.fsf.org/wiki/Oneko
> +
>  (define-public sl
>    (package
>      (name "sl")





bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Tue, 27 Jul 2021 11:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 2 years and 267 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.