diff mbox

python-kivy and Adobe source-code-pro font

Message ID 20160805193516.18edfdd9@openmailbox.org
State New
Headers show

Commit Message

Dylan Jeffers Aug. 6, 2016, 2:35 a.m. UTC
Hi all,

First patch to guix-devel; tried my best to conform to the guidelines.
Couldn't fix some "abiguous package" issues with
font-adobe-source-code-pro package. Let me know if someone finds a
solution.

More packages to come!
Dylan

Comments

Jelle Licht Aug. 7, 2016, 10:24 p.m. UTC | #1
Dylan Jeffers <sapientech@openmailbox.org> writes:

> Hi all,
>
Hello Dylan,

Thanks for this patch! I love the source-code-pro font :).

> First patch to guix-devel; tried my best to conform to the guidelines.

Guix (usually) has a one commit per change policy. Contributions in guix
usually follow a specific format. You might want to review the
guidelines as specified in the manual, which one can find online or by
executing
  `info -f doc/guix.info "(guix) Contributing"`
in a guix git checkout. 
> Couldn't fix some "abiguous package" issues with
> font-adobe-source-code-pro package. Let me know if someone finds a
> solution.

I am not quite sure what "ambiguous package" issues you are talking
about. Are you referring to "collision encountered" warnings?


I added your patch inline with some observations;
> From db8338214f57249f7f513d9b27b6f31ae6cea345 Mon Sep 17 00:00:00 2001
> From: Dylan Jeffers <sapientech@openmailbox.org>
> Date: Fri, 5 Aug 2016 18:37:34 -0700
> Subject: [PATCH] Add python-kivy and adobe source-code-pro font

Guix follows the CHANGELOG[0] format for commit messages. You can check the
commit history for examples of how to phrase certain common changes.

> 
> ---
>  gnu/packages/fonts.scm  | 51 +++++++++++++++++++++++++++++++++++++++++++++++++
>  gnu/packages/python.scm | 51 +++++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 102 insertions(+)
> 
> diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
> index 9b2281a..fa8420e 100644
> --- a/gnu/packages/fonts.scm
> +++ b/gnu/packages/fonts.scm
> @@ -414,6 +414,55 @@ The Liberation Fonts are sponsored by Red Hat.")
>  for long (8 and more hours per day) work with computers.")
>      (license license:silofl1.1)))
>  
> +(define-public font-adobe-source-code-pro
> +  (package
> +    (name "font-adobe-source-code-pro")
> +    (version "2.030")
> +    (source (origin
> +              (method url-fetch)
> +              (uri (string-append
> +                    "https://github.com/adobe-fonts/source-code-pro/archive/"
> +                    version "R-ro/1.050R-it.tar.gz"))
> +              (sha256
> +               (base32
> +                "0arhhsf3i7ss39ykn73d1j8k4n8vx7115xph6jwkd970p1cxvr54"))))
> +    (build-system trivial-build-system)
> +    (arguments
> +     `(#:modules ((guix build utils))
> +       #:builder
> +         (begin
> +           (use-modules (guix build utils))
> +           (let ((tar  (string-append (assoc-ref %build-inputs
> +                                                 "tar")
> +                                      "/bin/tar"))
> +                 (PATH (string-append (assoc-ref %build-inputs
> +                                                 "gzip")
> +                                      "/bin"))
> +                 (font-dir (string-append
> +                            %output "/share/fonts/truetype")))
> +             (setenv "PATH" PATH)
> +             (system* tar "xvf" (assoc-ref %build-inputs "source"))
> +             (mkdir-p font-dir)
> +             (chdir (string-append "source-code-pro-" ,version
> +                                   "R-ro-1.050R-it/TTF/"))
> +             (for-each (lambda (ttf)
> +                         (copy-file ttf
> +                                    (string-append font-dir "/"
> +                                                   (basename ttf))))
> +                       (find-files "." "\\.ttf$"))))))
Here you install all the ttf files ...
> +    (native-inputs
> +     `(("gzip" ,gzip)
> +       ("tar" ,tar)))
> +    (home-page "https://adobe-fonts.github.io/source-code-pro/")
> +    (synopsis "Source-Code-Pro fonts")
> +    (description
> +     "Source Code Pro is a set of OpenType fonts that have been designed
> +to work well in user interface (UI) environments.  In addition to a
> +functional OpenType font, this open source project provides all of the
> +source files that were used to build this OpenType font by using the
> +AFDKO makeotf tool.")
... and here you mention the source of these ttf files also being
available in the package (which you do not seem to install). Best case
scenario would be if we can generate the ttf files ourselves from these
sources. I had a brief look at AFDKO, and IMHO the build procedure seems
quite complicated. Right now, I would remove the part about the source
files and AFDKO from the description.

> +    (license license:silofl1.1)))
> +
>  (define-public font-adobe-source-han-sans
>    (package
>      (name "font-adobe-source-han-sans")
> @@ -865,3 +914,5 @@ powerline support.")
>      (license (license:x11-style
>                "https://github.com/chrissimpkins/Hack/blob/master/LICENSE.md"
>                "Hack Open Font License v2.0"))))
> +
> +
These added newlines seem superfluous

> diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
> index 470bad8..2cdc398 100644
> --- a/gnu/packages/python.scm
> +++ b/gnu/packages/python.scm
> @@ -88,10 +88,15 @@
>    #:use-module (gnu packages tcl)
>    #:use-module (gnu packages bdw-gc)
>    #:use-module (gnu packages pcre)
> +  #:use-module (gnu packages gstreamer)
> +  #:use-module (gnu packages gl)
> +  #:use-module (gnu packages sdl)
> +  #:use-module (gnu packages video)
>    #:use-module (guix packages)
>    #:use-module (guix download)
>    #:use-module (guix git-download)
>    #:use-module (guix utils)
> +  #:use-module (guix build utils)
>    #:use-module (guix build-system gnu)
>    #:use-module (guix build-system cmake)
>    #:use-module (guix build-system python)
> @@ -9808,3 +9813,49 @@ etc.")
>      (package
>        (inherit base)
>        (name "ptpython2"))))
> +
> +
One of these newlines can be removed.

> +(define-public python-kivy
> +  (package
> +    (name "python-kivy")
> +    (version "1.9.1")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (pypi-uri "kivy" version))
> +       (sha256
> +        (base32
> +         "0zk3g1j1z0lzcm9d0k1lprrs95zr8n8k5pdg3p5qlsn26jz4bg19"))))
> +    (build-system python-build-system)
> +    (arguments
> +     `(#:tests? #f                      ; tests require many more packages

NOTE: I am not a pythonista, but could you not disable subset of the
tests that depend on many more packages? Or maybe elaborate a bit more
one why exactly testing this package is not worth it. See the
python-drmaa for example.

> +                #:phases
> +                (modify-phases
> +                    %standard-phases
> +                  (add-after 'patch-generated-file-shebangs 'set-sdl-paths
> +                    (lambda* (#:key inputs #:allow-other-keys)
> +                      (setenv "KIVY_SDL2_PATH"
> +                              (string-append (assoc-ref inputs "sdl-union")
> +                                             "/include/SDL2")))))))
Something funky seems to be going on with the indention here. I usually
let emacs' scheme mode take care of the indentation for me using the
`indent-region` command. I assume the KIVY_SDL2_PATH is required for
kivy to build correctly? 

> +    (native-inputs
> +     `(("pkg-config" ,pkg-config)))
> +    (inputs
> +     `(
> +       ("python-cython" ,python-cython)
You can join the previous two lines, so you get `(("python-cython <etc> 

> +       ("gstreamer" ,gstreamer)
> +       ("mesa" ,mesa)
> +       ("sdl-union"
> +        ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
> +    (home-page "http://kivy.org")
> +    (synopsis
> +     "Open-source multitouch application framework")
Guix and its packaged software are Free Software projects, and as such,
the 'open-sourceness' of this package are implied by the greater
implications of it already being Free Software. 

> +    (description
> +     "A software library for rapid development of
> +hardware-accelerated multitouch applications.")
> +    (license bsd-3)))
Unless I am mistaken, Kivy is licensed under the "MIT" (Expat) license.
> +
> +(define-public python2-kivy
> +  (let ((base (package-with-python2 (strip-python2-variant python-kivy))))
> +    (package
> +      (inherit base)
> +      (name "python2-kivy"))))
> -- 
> 2.7.3
>
> More packages to come!
> Dylan

Looking forward to your other contributions!

Regards,
- Jelle

[0]: https://www.gnu.org/prep/standards/html_node/Change-Logs.html
Leo Famulari Aug. 9, 2016, 3:56 a.m. UTC | #2
On Fri, Aug 05, 2016 at 07:35:16PM -0700, Dylan Jeffers wrote:
> Couldn't fix some "abiguous package" issues with
> font-adobe-source-code-pro package. Let me know if someone finds a
> solution.

This means that you have more than one packages providing
font-adobe-source-code-pro.
Mark H Weaver Aug. 10, 2016, 6:42 p.m. UTC | #3
Hi,

Dylan Jeffers <sapientech@openmailbox.org> writes:

> First patch to guix-devel; tried my best to conform to the guidelines.
> Couldn't fix some "abiguous package" issues with
> font-adobe-source-code-pro package. Let me know if someone finds a
> solution.
>
> More packages to come!
> Dylan
>
> From db8338214f57249f7f513d9b27b6f31ae6cea345 Mon Sep 17 00:00:00 2001
> From: Dylan Jeffers <sapientech@openmailbox.org>
> Date: Fri, 5 Aug 2016 18:37:34 -0700
> Subject: [PATCH] Add python-kivy and adobe source-code-pro font
>
> ---

This commit needs to be split up into two commits, and they need proper
commit logs in accordance with our conventions.  See section 8.5
(Submitting Patches) in the manual for details.  I also recommend
looking in the existing commit logs for examples.

>  gnu/packages/fonts.scm  | 51 +++++++++++++++++++++++++++++++++++++++++++++++++
>  gnu/packages/python.scm | 51 +++++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 102 insertions(+)
>
> diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
> index 9b2281a..fa8420e 100644
> --- a/gnu/packages/fonts.scm
> +++ b/gnu/packages/fonts.scm
> @@ -414,6 +414,55 @@ The Liberation Fonts are sponsored by Red Hat.")
>  for long (8 and more hours per day) work with computers.")
>      (license license:silofl1.1)))
>  
> +(define-public font-adobe-source-code-pro

Please add your copyright notice at the top of files that you make
non-trivial changes to.

> +  (package
> +    (name "font-adobe-source-code-pro")
> +    (version "2.030")
> +    (source (origin
> +              (method url-fetch)
> +              (uri (string-append
> +                    "https://github.com/adobe-fonts/source-code-pro/archive/"
> +                    version "R-ro/1.050R-it.tar.gz"))

Please add a 'file-name' field to this 'origin', because otherwise the
filename in the store will be <hash>-1.050R-it.tar.gz which is a bit
confusing.  Search for 'file-name' in gnu/packages/*.scm for examples.

> +              (sha256
> +               (base32
> +                "0arhhsf3i7ss39ykn73d1j8k4n8vx7115xph6jwkd970p1cxvr54"))))
> +    (build-system trivial-build-system)
> +    (arguments
> +     `(#:modules ((guix build utils))
> +       #:builder
> +         (begin
> +           (use-modules (guix build utils))
> +           (let ((tar  (string-append (assoc-ref %build-inputs
> +                                                 "tar")
> +                                      "/bin/tar"))
> +                 (PATH (string-append (assoc-ref %build-inputs
> +                                                 "gzip")
> +                                      "/bin"))
> +                 (font-dir (string-append
> +                            %output "/share/fonts/truetype")))
> +             (setenv "PATH" PATH)
> +             (system* tar "xvf" (assoc-ref %build-inputs "source"))
> +             (mkdir-p font-dir)
> +             (chdir (string-append "source-code-pro-" ,version
> +                                   "R-ro-1.050R-it/TTF/"))
> +             (for-each (lambda (ttf)
> +                         (copy-file ttf
> +                                    (string-append font-dir "/"
> +                                                   (basename ttf))))
> +                       (find-files "." "\\.ttf$"))))))
> +    (native-inputs
> +     `(("gzip" ,gzip)
> +       ("tar" ,tar)))
> +    (home-page "https://adobe-fonts.github.io/source-code-pro/")
> +    (synopsis "Source-Code-Pro fonts")
> +    (description
> +     "Source Code Pro is a set of OpenType fonts that have been designed
> +to work well in user interface (UI) environments.  In addition to a
> +functional OpenType font, this open source project provides all of the
> +source files that were used to build this OpenType font by using the
> +AFDKO makeotf tool.")

The question of whether AFDKO is a free software project is unclear.
Even just downloading AFDKO from Adobe requires first accepting a EULA:

  http://www.adobe.com/devnet/opentype/afdko.html

There is a github project with some code in it, but it's not clear to me
whether it can be built and made functional without using non-free
development tools.  See:

  https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=762252#25
  https://github.com/adobe-type-tools/afdko/issues/41

That said, this needn't be a blocker for including the built OTF files
in Guix, as long as the license permits all users to copy and
redistribute them for commercial and non-commercial purposes, as these
fonts are considered non-functional data.  See:

  http://www.gnu.org/distros/free-system-distribution-guidelines.html#non-functional-data

> +    (license license:silofl1.1)))
> +
>  (define-public font-adobe-source-han-sans
>    (package
>      (name "font-adobe-source-han-sans")
> @@ -865,3 +914,5 @@ powerline support.")
>      (license (license:x11-style
>                "https://github.com/chrissimpkins/Hack/blob/master/LICENSE.md"
>                "Hack Open Font License v2.0"))))
> +
> +

Please remove this hunk of the patch.

> diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
> index 470bad8..2cdc398 100644
> --- a/gnu/packages/python.scm
> +++ b/gnu/packages/python.scm
> @@ -88,10 +88,15 @@
>    #:use-module (gnu packages tcl)
>    #:use-module (gnu packages bdw-gc)
>    #:use-module (gnu packages pcre)
> +  #:use-module (gnu packages gstreamer)
> +  #:use-module (gnu packages gl)
> +  #:use-module (gnu packages sdl)
> +  #:use-module (gnu packages video)
>    #:use-module (guix packages)
>    #:use-module (guix download)
>    #:use-module (guix git-download)
>    #:use-module (guix utils)
> +  #:use-module (guix build utils)

Is (guix build utils) really needed here?  If so, why?

Also, please add your copyright notice to the job of this file.

>    #:use-module (guix build-system gnu)
>    #:use-module (guix build-system cmake)
>    #:use-module (guix build-system python)
> @@ -9808,3 +9813,49 @@ etc.")
>      (package
>        (inherit base)
>        (name "ptpython2"))))
> +
> +
> +(define-public python-kivy
> +  (package
> +    (name "python-kivy")
> +    (version "1.9.1")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (pypi-uri "kivy" version))
> +       (sha256
> +        (base32
> +         "0zk3g1j1z0lzcm9d0k1lprrs95zr8n8k5pdg3p5qlsn26jz4bg19"))))
> +    (build-system python-build-system)
> +    (arguments
> +     `(#:tests? #f                      ; tests require many more packages
> +                #:phases

#:phases should be lined up with #:tests?.  The emacs package within
Guix includes a patch that fixes its Scheme mode to auto-indent this
properly, or see https://www.netris.org/~mhw/scheme-indent-function.el,
(or just fix it up manually).

> +                (modify-phases
> +                    %standard-phases
> +                  (add-after 'patch-generated-file-shebangs 'set-sdl-paths
> +                    (lambda* (#:key inputs #:allow-other-keys)
> +                      (setenv "KIVY_SDL2_PATH"
> +                              (string-append (assoc-ref inputs "sdl-union")
> +                                             "/include/SDL2")))))))

Please add #t after the (setenv ...) call, as phase procedures are
expected to return a boolean indicating whether it succeeded, whereas
the return value of 'setenv' is unspecified.

> +    (native-inputs
> +     `(("pkg-config" ,pkg-config)))
> +    (inputs
> +     `(
> +       ("python-cython" ,python-cython)

Please combine the above two lines into one line.

> +       ("gstreamer" ,gstreamer)
> +       ("mesa" ,mesa)
> +       ("sdl-union"
> +        ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
> +    (home-page "http://kivy.org")
> +    (synopsis
> +     "Open-source multitouch application framework")

We avoid the term "open-source", preferring the term "free software"
instead, but since all software in Guix is free, there's no need to
mention this at all.  So how about just "Multitouch application
framework"?

> +    (description
> +     "A software library for rapid development of
> +hardware-accelerated multitouch applications.")
> +    (license bsd-3)))
> +
> +(define-public python2-kivy
> +  (let ((base (package-with-python2 (strip-python2-variant python-kivy))))
> +    (package
> +      (inherit base)
> +      (name "python2-kivy"))))

Can you post an updated pair of patches, in two separate emails?

      Thanks!
        Mark
Mark H Weaver Aug. 10, 2016, 7:49 p.m. UTC | #4
Mark H Weaver <mhw@netris.org> writes:

>> +    (description
>> +     "Source Code Pro is a set of OpenType fonts that have been designed
>> +to work well in user interface (UI) environments.  In addition to a
>> +functional OpenType font, this open source project provides all of the
>> +source files that were used to build this OpenType font by using the
>> +AFDKO makeotf tool.")
>
> The question of whether AFDKO is a free software project is unclear.
> Even just downloading AFDKO from Adobe requires first accepting a EULA:
>
>   http://www.adobe.com/devnet/opentype/afdko.html
>
> There is a github project with some code in it, but it's not clear to me
> whether it can be built and made functional without using non-free
> development tools.  See:
>
>   https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=762252#25
>   https://github.com/adobe-type-tools/afdko/issues/41
>
> That said, this needn't be a blocker for including the built OTF files
> in Guix, as long as the license permits all users to copy and
> redistribute them for commercial and non-commercial purposes, as these
> fonts are considered non-functional data.  See:
>
>   http://www.gnu.org/distros/free-system-distribution-guidelines.html#non-functional-data

And I meant, but forgot, to conclude this with:

For now, please remove the second sentence of the 'description' field
above, to avoid steering users toward AFDKO.

      Mark
Alex Griffin Aug. 10, 2016, 8:08 p.m. UTC | #5
On Wed, Aug 10, 2016, at 01:42 PM, Mark H Weaver wrote:
> That said, this needn't be a blocker for including the built OTF files
> in Guix, as long as the license permits all users to copy and
> redistribute them for commercial and non-commercial purposes, as these
> fonts are considered non-functional data.  See:
> 
>   http://www.gnu.org/distros/free-system-distribution-guidelines.html#non-functional-data

Are you sure about that? By my reading, that document explicitly
categorizes fonts as functional works by that document:

> “Information for practical use” includes software, documentation, fonts,
> and other data that has direct functional applications. It does not include
> artistic works that have an aesthetic (rather than functional) purpose,
> or statements of opinion or judgment.

Personally, I have avoided submitting my font-iosevka [1] package for
months because it just downloads the ttf files instead of building them
from the JavaScript source code. (Maybe when we have better node
support, eh?)

[1]: https://be5invis.github.io/Iosevka/
Mark H Weaver Aug. 10, 2016, 9:05 p.m. UTC | #6
Alex Griffin <a@ajgrf.com> writes:

> On Wed, Aug 10, 2016, at 01:42 PM, Mark H Weaver wrote:
>> That said, this needn't be a blocker for including the built OTF files
>> in Guix, as long as the license permits all users to copy and
>> redistribute them for commercial and non-commercial purposes, as these
>> fonts are considered non-functional data.  See:
>> 
>>   http://www.gnu.org/distros/free-system-distribution-guidelines.html#non-functional-data
>
> Are you sure about that? By my reading, that document explicitly
> categorizes fonts as functional works by that document:
>
>> “Information for practical use” includes software, documentation, fonts,
>> and other data that has direct functional applications. It does not include
>> artistic works that have an aesthetic (rather than functional) purpose,
>> or statements of opinion or judgment.

You're right, I stand corrected.  This will require more investigation.

    Thanks,
      Mark
Leo Famulari Aug. 10, 2016, 9:09 p.m. UTC | #7
On Wed, Aug 10, 2016 at 03:08:44PM -0500, Alex Griffin wrote:
> On Wed, Aug 10, 2016, at 01:42 PM, Mark H Weaver wrote:
> > That said, this needn't be a blocker for including the built OTF files
> > in Guix, as long as the license permits all users to copy and
> > redistribute them for commercial and non-commercial purposes, as these
> > fonts are considered non-functional data.  See:
> > 
> >   http://www.gnu.org/distros/free-system-distribution-guidelines.html#non-functional-data
> 
> Are you sure about that? By my reading, that document explicitly
> categorizes fonts as functional works by that document:
> 
> > “Information for practical use” includes software, documentation, fonts,
> > and other data that has direct functional applications. It does not include
> > artistic works that have an aesthetic (rather than functional) purpose,
> > or statements of opinion or judgment.
> 
> Personally, I have avoided submitting my font-iosevka [1] package for
> months because it just downloads the ttf files instead of building them
> from the JavaScript source code. (Maybe when we have better node
> support, eh?)

I don't know what the right answer is, but (gnu packages fonts) has
several font packages that simply download and unpack TTF files.
Alex Griffin Aug. 10, 2016, 10:14 p.m. UTC | #8
On Wed, Aug 10, 2016, at 04:09 PM, Leo Famulari wrote:
> I don't know what the right answer is, but (gnu packages fonts) has
> several font packages that simply download and unpack TTF files.

I was assuming that font editors typically operated directly on font
files, so there is no corresponding source. I guess that's not true
though, since FontForge operates on SFD files and Adobe apparently works
with AFDKO files. The question is do we need to built fonts from source?

I think we can package Source Code Pro either way. It looks like there
are two versions of AFDKO, a free software version on GitHub [1] and one
with non-free code on adobe.com.

[1]: https://github.com/adobe-type-tools/afdko

Thanks,
Dylan Jeffers Aug. 11, 2016, 2:53 a.m. UTC | #9
Hi everyone,

Thanks for all the pointers, will post an update in the next few days!

Dylan
diff mbox

Patch

From db8338214f57249f7f513d9b27b6f31ae6cea345 Mon Sep 17 00:00:00 2001
From: Dylan Jeffers <sapientech@openmailbox.org>
Date: Fri, 5 Aug 2016 18:37:34 -0700
Subject: [PATCH] Add python-kivy and adobe source-code-pro font

---
 gnu/packages/fonts.scm  | 51 +++++++++++++++++++++++++++++++++++++++++++++++++
 gnu/packages/python.scm | 51 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 102 insertions(+)

diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 9b2281a..fa8420e 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -414,6 +414,55 @@  The Liberation Fonts are sponsored by Red Hat.")
 for long (8 and more hours per day) work with computers.")
     (license license:silofl1.1)))
 
+(define-public font-adobe-source-code-pro
+  (package
+    (name "font-adobe-source-code-pro")
+    (version "2.030")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/adobe-fonts/source-code-pro/archive/"
+                    version "R-ro/1.050R-it.tar.gz"))
+              (sha256
+               (base32
+                "0arhhsf3i7ss39ykn73d1j8k4n8vx7115xph6jwkd970p1cxvr54"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+         (begin
+           (use-modules (guix build utils))
+           (let ((tar  (string-append (assoc-ref %build-inputs
+                                                 "tar")
+                                      "/bin/tar"))
+                 (PATH (string-append (assoc-ref %build-inputs
+                                                 "gzip")
+                                      "/bin"))
+                 (font-dir (string-append
+                            %output "/share/fonts/truetype")))
+             (setenv "PATH" PATH)
+             (system* tar "xvf" (assoc-ref %build-inputs "source"))
+             (mkdir-p font-dir)
+             (chdir (string-append "source-code-pro-" ,version
+                                   "R-ro-1.050R-it/TTF/"))
+             (for-each (lambda (ttf)
+                         (copy-file ttf
+                                    (string-append font-dir "/"
+                                                   (basename ttf))))
+                       (find-files "." "\\.ttf$"))))))
+    (native-inputs
+     `(("gzip" ,gzip)
+       ("tar" ,tar)))
+    (home-page "https://adobe-fonts.github.io/source-code-pro/")
+    (synopsis "Source-Code-Pro fonts")
+    (description
+     "Source Code Pro is a set of OpenType fonts that have been designed
+to work well in user interface (UI) environments.  In addition to a
+functional OpenType font, this open source project provides all of the
+source files that were used to build this OpenType font by using the
+AFDKO makeotf tool.")
+    (license license:silofl1.1)))
+
 (define-public font-adobe-source-han-sans
   (package
     (name "font-adobe-source-han-sans")
@@ -865,3 +914,5 @@  powerline support.")
     (license (license:x11-style
               "https://github.com/chrissimpkins/Hack/blob/master/LICENSE.md"
               "Hack Open Font License v2.0"))))
+
+
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 470bad8..2cdc398 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -88,10 +88,15 @@ 
   #:use-module (gnu packages tcl)
   #:use-module (gnu packages bdw-gc)
   #:use-module (gnu packages pcre)
+  #:use-module (gnu packages gstreamer)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages sdl)
+  #:use-module (gnu packages video)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix utils)
+  #:use-module (guix build utils)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system python)
@@ -9808,3 +9813,49 @@  etc.")
     (package
       (inherit base)
       (name "ptpython2"))))
+
+
+(define-public python-kivy
+  (package
+    (name "python-kivy")
+    (version "1.9.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "kivy" version))
+       (sha256
+        (base32
+         "0zk3g1j1z0lzcm9d0k1lprrs95zr8n8k5pdg3p5qlsn26jz4bg19"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f                      ; tests require many more packages
+                #:phases
+                (modify-phases
+                    %standard-phases
+                  (add-after 'patch-generated-file-shebangs 'set-sdl-paths
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      (setenv "KIVY_SDL2_PATH"
+                              (string-append (assoc-ref inputs "sdl-union")
+                                             "/include/SDL2")))))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(
+       ("python-cython" ,python-cython)
+       ("gstreamer" ,gstreamer)
+       ("mesa" ,mesa)
+       ("sdl-union"
+        ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))))
+    (home-page "http://kivy.org")
+    (synopsis
+     "Open-source multitouch application framework")
+    (description
+     "A software library for rapid development of
+hardware-accelerated multitouch applications.")
+    (license bsd-3)))
+
+(define-public python2-kivy
+  (let ((base (package-with-python2 (strip-python2-variant python-kivy))))
+    (package
+      (inherit base)
+      (name "python2-kivy"))))
-- 
2.7.3