Subject: nototools (required for building Noto from source)

From: ng0 <[email-masked]>
Date: Mon, 25 Sep 2017 12:18:41 +0000

This patch series adds the python2 application set "nototools".
It is a requirement for resolving #28404 (Google Noto Fonts).
-- 
ng0
GnuPG: A88C8ADD129828D7EAC02E52E22F9BBFEE348588
GnuPG: https://krosos.org/dist/keys/
https://www.infotropique.org https://krosos.org
From f47baab3fecf69913409693254460a49cc8c4b24 Mon Sep 17 00:00:00 2001
From: ng0 <[email-masked]>
Date: Wed, 20 Sep 2017 11:31:51 +0000
Subject: [PATCH 1/7] gnu: python-fonttools: Update to 3.15.1.

* gnu/packages/python.scm (python-fonttools): Update to 3.15.1.
(source)[uri]: Use 'pypi-uri'.
---
 gnu/packages/python.scm | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 3e266c5ef..fb149d91c 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -23,7 +23,7 @@
 ;;; Copyright © 2016 Daniel Pimentel <[email-masked]>
 ;;; Copyright © 2016 Sou Bunnbu <[email-masked]>
 ;;; Copyright © 2016 Troy Sankey <[email-masked]>
-;;; Copyright © 2016, 2017 ng0 <[email-masked]>
+;;; Copyright © 2016, 2017 ng0 <[email-masked]>
 ;;; Copyright © 2016 Dylan Jeffers <sapientech@[email-masked]>
 ;;; Copyright © 2016 David Craven <[email-masked]>
 ;;; Copyright © 2016, 2017 Marius Bakke <[email-masked]>
@@ -7360,15 +7360,13 @@ add functionality and customization to your projects with their own plugins.")
 (define-public python-fonttools
   (package
     (name "python-fonttools")
-    (version "2.5")
+    (version "3.15.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append
-                    "https://pypi.python.org/packages/source/F/FontTools/"
-                    "fonttools-" version ".tar.gz"))
+              (uri (pypi-uri "fonttools" version ".zip"))
               (sha256
                (base32
-                "08ay3x4ijarwhl60gqx2i9jzq6pxs20p4snc2d1q5jagh4rn39lb"))))
+                "1hhj97izwliy0vybmza72d90l5d4mcn50y8akq7kyccfl82vdx4d"))))
     (build-system python-build-system)
     (arguments
      '(#:test-target "check"
@@ -7382,6 +7380,8 @@ add functionality and customization to your projects with their own plugins.")
              (substitute* "setup.py"
                (("^[ \t]*extra_path *= *'FontTools',") ""))
              #t)))))
+    (native-inputs
+     `(("unzip" ,unzip)))
     (home-page "https://github.com/behdad/fonttools")
     (synopsis "Tools to manipulate font files")
     (description
-- 
2.14.1

From d73dfb5b471adaa7752f4ce2140e879f629d303c Mon Sep 17 00:00:00 2001
From: ng0 <[email-masked]>
Date: Wed, 20 Sep 2017 11:39:29 +0000
Subject: [PATCH 2/7] gnu: Add python2-ufolib.

* gnu/packages/python.scm (python2-ufolib): New variable.
---
 gnu/packages/python.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index fb149d91c..3a9a39a7d 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7397,6 +7397,32 @@ from an XML-based format.")
 (define-public python2-fonttools
   (package-with-python2 python-fonttools))
 
+(define-public python2-ufolib
+  (package
+    (name "python2-ufolib")
+    (version "2.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "ufoLib" version ".zip"))
+       (sha256
+        (base32 "1njin1465qqzshnrvcl5sbv0bsy15gj6fycbw4lmcnwkx5sldgyx"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (propagated-inputs
+     `(("python2-fonttools" ,python2-fonttools)))
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("python2-pytest-3.0" ,python2-pytest-3.0)
+       ("python2-pytest-runner" ,python2-pytest-runner)))
+    (home-page "https://github.com/unified-font-object/ufoLib")
+    (synopsis "Low-level UFO reader and writer.")
+    (description
+     "ufoLib reads and writes Unified Font Object (UFO)
+files.  UFO is a file format that stores fonts source files.")
+    (license license:bsd-3)))
+
 (define-public python-ly
   (package
     (name "python-ly")
-- 
2.14.1

From e34aa6f3d4ca6f0e989b1d8fbaf7985cd2891099 Mon Sep 17 00:00:00 2001
From: ng0 <[email-masked]>
Date: Wed, 20 Sep 2017 11:49:31 +0000
Subject: [PATCH 3/7] gnu: Add python2-setuptools-scm-git-archive.

* gnu/packages/python.scm (python2-setuptools-scm-git-archive): New variable.
---
 gnu/packages/python.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 3a9a39a7d..ae11c3b3b 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7423,6 +7423,28 @@ from an XML-based format.")
 files.  UFO is a file format that stores fonts source files.")
     (license license:bsd-3)))
 
+(define-public python2-setuptools-scm-git-archive
+  (package
+    (name "python2-setuptools-scm-git-archive")
+    (version "1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "setuptools_scm_git_archive" version))
+       (sha256
+        (base32
+         "1nii1sz5jq75ilf18bjnr11l9rz1lvdmyk66bxl7q90qan85yhjj"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (propagated-inputs
+     `(("python2-setuptools-scm" ,python2-setuptools-scm)))
+    (home-page "https://github.com/Changaco/setuptools_scm_git_archive/")
+    (synopsis "setuptools_scm plugin for git archives")
+    (description
+     "setuptools_scm plugin for git archives")
+    (license license:expat)))
+
 (define-public python-ly
   (package
     (name "python-ly")
-- 
2.14.1

From 560acb742a36d97f20d78a5ac5d388a44c3b2ed2 Mon Sep 17 00:00:00 2001
From: ng0 <[email-masked]>
Date: Wed, 20 Sep 2017 12:00:41 +0000
Subject: [PATCH 4/7] gnu: Add python2-pyclipper.

* gnu/packages/python.scm (python2-pyclipper): New variable.
---
 gnu/packages/python.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index ae11c3b3b..2a13a6466 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7445,6 +7445,32 @@ files.  UFO is a file format that stores fonts source files.")
      "setuptools_scm plugin for git archives")
     (license license:expat)))
 
+(define-public python2-pyclipper
+(package
+  (name "python2-pyclipper")
+  (version "1.0.6")
+  (source
+   (origin
+     (method url-fetch)
+     (uri (pypi-uri "pyclipper" version ".zip"))
+     (sha256
+      (base32
+       "1zpmwv3bya3j984y5cf9x9d5108kf6mxldcba68wiq0frv5qrssw"))))
+  (build-system python-build-system)
+  (arguments
+   `(#:python ,python-2
+     #:tests? #f)); 8 Tests fail, 37 succeed
+  (propagated-inputs
+   `(("python2-setuptools-scm-git-archive" ,python2-setuptools-scm-git-archive)))
+  (native-inputs
+   `(("unzip" ,unzip)))
+  (home-page "https://github.com/greginvm/pyclipper")
+  (synopsis "Wrapper for Angus Johnson's Clipper library")
+  (description
+   "Pyclipper is a Cython wrapper for the C++ translation of the
+Angus Johnson's Clipper library (ver. 6.2.1)")
+  (license license:expat)))
+
 (define-public python-ly
   (package
     (name "python-ly")
-- 
2.14.1

From 05901d74378199516472562eaa175a4025bd438b Mon Sep 17 00:00:00 2001
From: ng0 <[email-masked]>
Date: Wed, 20 Sep 2017 18:07:47 +0000
Subject: [PATCH 5/7] gnu: Add python2-booleanoperations.

* gnu/packages/python.scm (python2-booleanoperations): New variable.
---
 gnu/packages/python.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 2a13a6466..4bdd05a78 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7471,6 +7471,35 @@ files.  UFO is a file format that stores fonts source files.")
 Angus Johnson's Clipper library (ver. 6.2.1)")
   (license license:expat)))
 
+(define-public python2-booleanoperations
+  (package
+    (name "python2-booleanoperations")
+    (version "0.7.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "booleanOperations" version ".zip"))
+       (sha256
+        (base32
+         "1hw42fazdpvsn77glx96hwsj9l17mvx37sc5707s08y5w6fx16mn"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("python2-pytest-3.0" ,python2-pytest-3.0)
+       ("python2-pytest-runner" ,python2-pytest-runner)))
+    (propagated-inputs
+     `(("python-fonttools" ,python2-fonttools)
+       ("python-pyclipper" ,python2-pyclipper)
+       ("python-ufolib" ,python2-ufolib)))
+    (home-page "https://github.com/typemytype/booleanOperations")
+    (synopsis "Boolean operations on paths")
+    (description
+     "BooleanOperations provides a python library that enables
+boolean operations on paths.")
+    (license license:expat)))
+
 (define-public python-ly
   (package
     (name "python-ly")
-- 
2.14.1

From a72beedccffc8c6baef91bf2548dfec4ff286d87 Mon Sep 17 00:00:00 2001
From: ng0 <[email-masked]>
Date: Mon, 25 Sep 2017 11:13:03 +0000
Subject: [PATCH 6/7] gnu: Add python2-defcon.

* gnu/packages/python.scm (python2-defcon): New variable.
---
 gnu/packages/python.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 4bdd05a78..75bf2ab13 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -7500,6 +7500,39 @@ Angus Johnson's Clipper library (ver. 6.2.1)")
 boolean operations on paths.")
     (license license:expat)))
 
+(define-public python2-defcon
+  (package
+    (name "python2-defcon")
+    (version "0.3.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "defcon" version ".zip"))
+       (sha256
+        (base32
+         "1f41w54fdjy9izxcwzqa142kd56whqsg9nq5k4508jb6iip84h89"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2))
+    (native-inputs
+     `(("unzip" ,unzip)
+       ("python2-pytest-3.0" ,python2-pytest-3.0)
+       ("python2-pytest-runner" ,python2-pytest-runner)))
+    (propagated-inputs
+     `(("python2-fonttools" ,python2-fonttools)
+       ("python2-ufolib" ,python2-ufolib)))
+    (home-page "https://pypi.python.org/pypi/defcon")
+    (synopsis "set of flexible objects for representing UFO data")
+    (description
+     "Defcon is a set of UFO based objects optimized for use in
+font editing applications.  The objects are built to be lightweight,
+fast and flexible.  The objects are very bare-bones and they are not
+meant to be end-all, be-all objects.  Rather, they are meant to provide
+base functionality so that you can focus on your application’s behavior,
+not object observing or maintaining cached data.  Defcon implements
+UFO3 as described by the UFO font format.")
+    (license license:expat)))
+
 (define-public python-ly
   (package
     (name "python-ly")
-- 
2.14.1

From 53930f87fa54a13fde52246ad30d74e409b4020e Mon Sep 17 00:00:00 2001
From: ng0 <[email-masked]>
Date: Mon, 25 Sep 2017 12:12:55 +0000
Subject: [PATCH 7/7] gnu: Add nototools.

* gnu/packages/fontutils.scm (nototools): New variable.
---
 gnu/packages/fontutils.scm | 47 +++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 46 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 102def93d..3aec84414 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2016, 2017 Efraim Flashner <[email-masked]>
 ;;; Copyright © 2017 Rene Saavedra <[email-masked]>
 ;;; Copyright © 2017 Leo Famulari <[email-masked]>
+;;; Copyright © 2017 ng0 <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -44,7 +45,8 @@
   #:use-module (guix svn-download)
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
-  #:use-module (guix build-system gnu))
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python))
 
 (define-public freetype
   (package
@@ -565,3 +567,46 @@ opentype fonts.  You can save fonts in many different outline formats, and
 generate bitmaps.")
    (license license:gpl3+)
    (home-page "https://fontforge.github.io/en-US/")))
+
+(define-public nototools
+  (let ((commit "fecf378cf98af95bf603707b99861ce698e4c384")
+        (revision "1"))
+    (package
+      (name "nototools")
+      (version (string-append "0.0.1-" revision "."
+                              (string-take commit 7)))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/googlei18n/nototools.git")
+               (commit commit)))
+         (file-name (string-append name "-" version "-checkout"))
+         (sha256
+          (base32
+           "0b2yx4kwniccc8v221rwrzavy1gchm7q658f46cp0wdx44bsr4xj"))))
+      (build-system python-build-system)
+      (arguments
+       `(#:python ,python-2))
+      (propagated-inputs
+       `(("python2-booleanoperations" ,python2-booleanoperations)
+         ("python2-defcon" ,python2-defcon)
+         ("python2-fonttools" ,python2-fonttools)
+         ("python2-pillow" ,python2-pillow)
+         ("python2-pyclipper" ,python2-pyclipper)
+         ("python2-ufolib" ,python2-ufolib)))
+      (home-page "https://github.com/googlei18n/nototools")
+      (synopsis "Noto fonts support tools and scripts")
+      (description
+       "Nototools is a python package containing python scripts used to
+maintain the Noto Fonts project.")
+      (license (list license:asl2.0
+                     ;; Sample texts are attributed to UN and OHCHR.
+                     ;; The permissions on the UDHR are pretty lax:
+                     ;; http://www.ohchr.org/EN/UDHR/Pages/Introduction.aspx
+                     ;; "If UDHR translations or materials are reproduced, users
+                     ;; should make reference to this website as a source by
+                     ;; providing a link."
+                     license:public-domain
+                     license:non-copyleft "file://sample_texts/attributions.txt"
+                     "See sample_texts/attributions.txt in the distribution.")))))
-- 
2.14.1