diff --git a/gnu-system.am b/gnu-system.am index 11d8d6e730..0c5255fd50 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -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 \ diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm index dc18daaeb6..a16e9dddcf 100644 --- a/gnu/packages/fontutils.scm +++ b/gnu/packages/fontutils.scm @@ -39,6 +39,7 @@ (define-module (gnu packages fontutils) #: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 @@ (define-public ttf2eot (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") diff --git a/gnu/packages/patches/woff2-libbrotli.patch b/gnu/packages/patches/woff2-libbrotli.patch new file mode 100644 index 0000000000..47539c8070 --- /dev/null +++ b/gnu/packages/patches/woff2-libbrotli.patch @@ -0,0 +1,84 @@ +From: Eric Bavier +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 + #include + +-#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 + #include + +-#include "./encode.h" ++#include "brotli/enc/encode.h" + #include "./buffer.h" + #include "./font.h" + #include "./normalize.h" +-- +2.7.3 +