From 9bb2dac10478efc420a97ac70892be0fe0356080 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Sun, 25 Sep 2016 20:23:39 +0100 Subject: [PATCH 1/4] gnu: Add python-avro. * gnu/packages/serialization.scm (avro-version): New variable (private). (avro-source): New variable (private). (python-avro, python2-avro): New variables. --- gnu/packages/serialization.scm | 50 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm index 4a3278f..e80f5fe 100644 --- a/gnu/packages/serialization.scm +++ b/gnu/packages/serialization.scm @@ -25,6 +25,7 @@ #:use-module (guix download) #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) + #:use-module (guix build-system python) #:use-module (gnu packages) #:use-module (gnu packages autotools) #:use-module (gnu packages boost) @@ -200,3 +201,52 @@ it a convenient format to store user input files.") "Cap'n Proto is a very fast data interchange format and capability-based RPC system. Think JSON, except binary. Or think Protocol Buffers, except faster.") (license license:expat))) + +;;; Avro uses a single source repository for all language implementations. The +;;; individual released versions some times have missing or incomplete test data, +;;; so we use the full source tarball for all Avro packages. +(define (avro-version) "1.8.1") +(define (avro-source version) + (origin + (method url-fetch) + (uri (string-append "mirror://apache/avro/avro-" version + "/avro-src-" version ".tar.gz")) + (sha256 (base32 "0bplj4qmh7d6p987qd6a13g59awrc5cbx25n5brcrwq8yjik21av")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Drop bundled dependencies. + (delete-file-recursively "lang/py/lib/simplejson") + #t)))) + +(define-public python-avro + (package + (name "python-avro") + (version (avro-version)) + (source (avro-source version)) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'enter-source + (lambda _ (chdir "lang/py3") #t))))) + (propagated-inputs + `(("python-simplejson" ,python-simplejson))) + (home-page "https://avro.apache.org/") + (synopsis "Python implementation of the Avro data serialization system") + (description + "Avro is a data serialization system and RPC framework with rich data +structures. This package provides the Python interface.") + (license license:asl2.0) + (properties `((python2-variant . ,(delay python2-avro)))))) + +(define-public python2-avro + (let ((base (package-with-python2 (strip-python2-variant python-avro)))) + (package (inherit base) + (arguments + `(#:tests? #f ; TODO: Enable when Apache Ivy is packaged. + #:python ,python-2 ; Needed when overriding inherited args. + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'enter-source + (lambda _ (chdir "lang/py") #t)))))))) -- 2.10.0