From 1ffa7090b99dfd2f54fa883929c5e78d7852657a Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 18 Jan 2013 01:06:24 +0100 Subject: distro: Change the module name space to (gnu ...). * distro: Rename to... * gnu: ... this. Update module names accordingly. * Makefile.am: Adjust accordingly. * po/POTFILES.in: Likewise. * distro.scm: Search for files under /gnu/packages instead of /distro/packages. * gnu/packages/base.scm (ld-wrapper-boot3): Likewise. --- gnu/packages/libffi.scm | 73 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 gnu/packages/libffi.scm (limited to 'gnu/packages/libffi.scm') diff --git a/gnu/packages/libffi.scm b/gnu/packages/libffi.scm new file mode 100644 index 0000000000..87c849e564 --- /dev/null +++ b/gnu/packages/libffi.scm @@ -0,0 +1,73 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2012 Ludovic Courtès +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages libffi) + #:use-module (guix licenses) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix utils) + #:use-module (guix build-system gnu)) + +(define-public libffi + (let ((post-install-phase + ;; Install headers in the right place. + '(lambda* (#:key outputs #:allow-other-keys) + (define out (assoc-ref outputs "out")) + (mkdir (string-append out "/include")) + (with-directory-excursion + (string-append out "/lib/libffi-3.0.9/include") + (for-each (lambda (h) + (format #t "moving `~a' to includedir~%" h) + (rename-file h (string-append out "/include/" h))) + (scandir "." + (lambda (x) + (not (member x '("." "..")))))))))) + (package + (name "libffi") + (version "3.0.9") + (source (origin + (method url-fetch) + (uri + (string-append "ftp://sourceware.org/pub/libffi/" + name "-" version ".tar.gz")) + (sha256 + (base32 + "0ln4jbpb6clcsdpb9niqk0frgx4k0xki96wiv067ig0q4cajb7aq")))) + (build-system gnu-build-system) + (arguments `(#:modules ((guix build utils) (guix build gnu-build-system) + (ice-9 ftw) (srfi srfi-26)) + #:phases (alist-cons-after 'install 'post-install + ,post-install-phase + %standard-phases))) + (synopsis "libffi, a foreign function call interface library") + (description + "The libffi library provides a portable, high level programming interface +to various calling conventions. This allows a programmer to call any +function specified by a call interface description at run-time. + +FFI stands for Foreign Function Interface. A foreign function interface is +the popular name for the interface that allows code written in one language +to call code written in another language. The libffi library really only +provides the lowest, machine dependent layer of a fully featured foreign +function interface. A layer must exist above libffi that handles type +conversions for values passed between the two languages.") + (home-page "http://sources.redhat.com/libffi/") + + ;; See . + (license expat)))) + -- cgit v1.2.3