~ruther/guix-local

579760d06e11d24ef280e5af16a2e02a98c1d77d — Eric Bavier 10 years ago 69d9792
gnu: Add woff2.

* gnu/packages/fontutils.scm (woff2): New variable.
* gnu/packages/patches/woff2-libbrotli.patch: New patch.
* gnu-system.am (dist_patch_DATA): Add it.
3 files changed, 126 insertions(+), 0 deletions(-)

M gnu-system.am
M gnu/packages/fontutils.scm
A gnu/packages/patches/woff2-libbrotli.patch
M gnu-system.am => gnu-system.am +1 -0
@@ 765,6 765,7 @@ dist_patch_DATA =						\
  gnu/packages/patches/wicd-urwid-1.3.patch			\
  gnu/packages/patches/wicd-wpa2-ttls.patch			\
  gnu/packages/patches/wmctrl-64-fix.patch			\
  gnu/packages/patches/woff2-libbrotli.patch			\
  gnu/packages/patches/wpa-supplicant-CVE-2015-5310.patch	\
  gnu/packages/patches/wpa-supplicant-CVE-2015-5314.patch	\
  gnu/packages/patches/wpa-supplicant-CVE-2015-5315.patch	\

M gnu/packages/fontutils.scm => gnu/packages/fontutils.scm +41 -0
@@ 39,6 39,7 @@
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix svn-download)
  #:use-module (guix git-download)
  #:use-module (guix build-system cmake)
  #:use-module (guix build-system gnu))



@@ 181,6 182,46 @@ TTF (TrueType/OpenType Font) files.")
    (license license:bsd-2)
    (home-page "https://code.google.com/archive/p/ttf2eot/")))

(define-public woff2
  (let ((commit "4e698b8c6c5e070d53c340db9ddf160e21070ede")
        (revision "1"))
    (package
      (name "woff2")
      (version (string-append "20160306-" revision "."
                              (string-take commit 7)))
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      (url "https://github.com/google/woff2.git")
                      (commit commit)))
                (file-name (string-append name "-" version ".tar.xz"))
                (sha256
                 (base32
                  "0wka0yhf0cjmd4rv2jckxpyv6lb5ckj4nj0k1ajq5hrjy7f30lcp"))
                (patches (list (search-patch "woff2-libbrotli.patch")))))
      (build-system gnu-build-system)
      (native-inputs
       `(("pkg-config" ,pkg-config)))
      (inputs
       `(("brotli" ,brotli)))
      (arguments
       `(#:tests? #f                    ;no tests
         #:phases (modify-phases %standard-phases
                    (delete 'configure)
                    (replace 'install
                      (lambda* (#:key outputs #:allow-other-keys)
                        (let* ((out (assoc-ref outputs "out"))
                               (bin (string-append out "/bin")))
                          (install-file "woff2_compress" bin)
                          (install-file "woff2_decompress" bin)
                          #t))))))
      (synopsis "Compress TrueType fonts to WOFF2")
      (description
       "This package provides utilities for compressing/decompressing TrueType
fonts to/from the WOFF2 format.")
      (license license:asl2.0)
      (home-page "https://github.com/google/woff2"))))

(define-public fontconfig
  (package
   (name "fontconfig")

A gnu/packages/patches/woff2-libbrotli.patch => gnu/packages/patches/woff2-libbrotli.patch +84 -0
@@ 0,0 1,84 @@
From: Eric Bavier <bavier@member.fsf.org>
Date: Sat, 2 Apr 2016 01:31:03 -0500
Subject: [PATCH] Build against external libbrotli.

---
 Makefile         | 20 ++++----------------
 src/woff2_dec.cc |  2 +-
 src/woff2_enc.cc |  2 +-
 3 files changed, 6 insertions(+), 18 deletions(-)

diff --git a/Makefile b/Makefile
index 92b8d54..618a751 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 OS := $(shell uname)
 
-CPPFLAGS = -I./brotli/dec/ -I./brotli/enc/ -I./src
+CPPFLAGS := -I./src $(shell pkg-config --cflags libbrotlienc libbrotlidec)
 
 CC ?= gcc
 CXX ?= g++
@@ -22,29 +22,17 @@ OUROBJ = font.o glyph.o normalize.o table_tags.o transform.o \
          woff2_dec.o woff2_enc.o woff2_common.o woff2_out.o \
          variable_length.o
 
-BROTLI = brotli
-ENCOBJ = $(BROTLI)/enc/*.o
-DECOBJ = $(BROTLI)/dec/*.o
+BROTLI_LIBS := $(shell pkg-config --libs libbrotlienc libbrotlidec)
 
 OBJS = $(patsubst %, $(SRCDIR)/%, $(OUROBJ))
 EXECUTABLES=woff2_compress woff2_decompress
 
 EXE_OBJS=$(patsubst %, $(SRCDIR)/%.o, $(EXECUTABLES))
 
-ifeq (,$(wildcard $(BROTLI)/*))
-  $(error Brotli dependency not found : you must initialize the Git submodule)
-endif
-
 all : $(OBJS) $(EXECUTABLES)
 
-$(EXECUTABLES) : $(EXE_OBJS) deps
-	$(CXX) $(LFLAGS) $(OBJS) $(ENCOBJ) $(DECOBJ) $(SRCDIR)/$@.o -o $@
-
-deps :
-	$(MAKE) -C $(BROTLI)/dec
-	$(MAKE) -C $(BROTLI)/enc
+$(EXECUTABLES) : $(EXE_OBJS)
+	$(CXX) $(LDFLAGS) $(OBJS) $(SRCDIR)/$@.o -o $@ $(BROTLI_LIBS) $(LIBS)
 
 clean :
 	rm -f $(OBJS) $(EXE_OBJS) $(EXECUTABLES)
-	$(MAKE) -C $(BROTLI)/dec clean
-	$(MAKE) -C $(BROTLI)/enc clean
diff --git a/src/woff2_dec.cc b/src/woff2_dec.cc
index 837eede..98c01ce 100644
--- a/src/woff2_dec.cc
+++ b/src/woff2_dec.cc
@@ -27,7 +27,7 @@
 #include <memory>
 #include <utility>
 
-#include "./decode.h"
+#include "brotli/dec/decode.h"
 #include "./buffer.h"
 #include "./port.h"
 #include "./round.h"
diff --git a/src/woff2_enc.cc b/src/woff2_enc.cc
index 920c614..00d74da 100644
--- a/src/woff2_enc.cc
+++ b/src/woff2_enc.cc
@@ -23,7 +23,7 @@
 #include <string>
 #include <vector>
 
-#include "./encode.h"
+#include "brotli/enc/encode.h"
 #include "./buffer.h"
 #include "./font.h"
 #include "./normalize.h"
-- 
2.7.3