From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marius Bakke Subject: [PATCH 1/4] gnu: Add python-avro. Date: Sun, 25 Sep 2016 22:17:25 +0100 Message-ID: <20160925211728.7636-1-mbakke@fastmail.com> Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:45294) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1boGoP-0002EM-LP for guix-devel@gnu.org; Sun, 25 Sep 2016 17:18:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1boGoM-0004aC-IK for guix-devel@gnu.org; Sun, 25 Sep 2016 17:18:13 -0400 Received: from out2-smtp.messagingengine.com ([66.111.4.26]:59349) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1boGoK-0004Xu-8l for guix-devel@gnu.org; Sun, 25 Sep 2016 17:18:10 -0400 List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: guix-devel@gnu.org Cc: Marius Bakke * 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..c97778a 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 implementations. The individual +;;; released versions often have missing or incomplete test data, so we define +;;; the common source here for use in 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 + ;; Delete unneeded bundled dependencies here. + (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 version.") + (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 ; Requires Apache Ivy. + #: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