guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 06/10] gnu: Add libiconv.


From: Jan Nieuwenhuizen
Subject: Re: [PATCH 06/10] gnu: Add libiconv.
Date: Sun, 01 May 2016 20:27:58 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

Manolis Ragkousis writes:

> Καλησπέρα Jan,

Goedeavond Manolis,

>> +  #:export (glibc
>> +            libiconv-if-needed))
>
> The #:export (glibc...) part only exists in wip-hurd so we need to
> remove this in order for your patch to apply on master.

Ok, changed to

    #:export (libiconv-if-needed))

>> +(define-public libiconv

> Maybe we should break this patch into two different ones, one for the
> libiconv package description and one for the libiconv-if-needed. The
> first will go to master and the second to core-updates. WDYT?

I don't think that's necessary.  This patch itself does not change any
package.  The only thing this patch does is add libiconv, and the
convenience function:

>> +(define* (libiconv-if-needed #:optional (target (%current-target-system)))
>> +  (if (mingw-target? target)
>> +      `(("libiconv" ,libiconv))
>> +      '()))

that can be used by other packages, such as libunistring.  See below.
As we get more platforms that have libc without iconv, they can be
added to the if condition above.

> I am sorry for my ignorance but why is libiconv needed when targeting
> mingw?

Libiconv is character-set translation functionality that's also present
in glibc.  MinGW is one of those platforms that has a libc without
iconv.  Some packages, e.g. libunistring, need iconv functionality.

Have a look at the 09/10 libunistring patch, it says

-   (propagated-inputs '())                  ; FIXME: add libiconv when !glibc
+   (propagated-inputs `(,@(libiconv-if-needed)))

as libunistring depends on iconv.

Greetings,
Jan

>From c04fb3f9ae21c49a5925d7cc767dd558273c4082 Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <address@hidden>
Date: Tue, 12 Apr 2016 15:46:58 +0200
Subject: [PATCH 06/10] gnu: Add libiconv.

* gnu/packages/base.scm (libiconv): New variable.
(libiconv-if-needed): New function.
---
 gnu/packages/base.scm | 32 ++++++++++++++++++++++++++++++--
 1 file changed, 30 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 1c4ebbf..34dac61 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2014 Alex Kost <address@hidden>
 ;;; Copyright © 2014, 2015 Manolis Fragkiskos Ragkousis <address@hidden>
 ;;; Copyright © 2016 Efraim Flashner <address@hidden>
+;;; Copyright © 2016 Jan Nieuwenhuizen <address@hidden>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,7 +25,7 @@
 
 (define-module (gnu packages base)
   #:use-module ((guix licenses)
-                #:select (gpl3+ lgpl2.0+ public-domain))
+                #:select (gpl3+ lgpl2.0+ lgpl3+ public-domain))
   #:use-module (gnu packages)
   #:use-module (gnu packages acl)
   #:use-module (gnu packages bash)
@@ -43,7 +44,8 @@
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
-  #:use-module (guix build-system trivial))
+  #:use-module (guix build-system trivial)
+  #:export (libiconv-if-needed))
 
 ;;; Commentary:
 ;;;
@@ -936,6 +938,32 @@ reflect changes made by political bodies to time zone 
boundaries, UTC offsets,
 and daylight-saving rules.")
     (license public-domain)))
 
+(define-public libiconv
+  (package
+   (name "libiconv")
+   (version "1.14")
+   (source (origin
+            (method url-fetch)
+            (uri (string-append
+                  "mirror://gnu/libiconv/libiconv-"
+                  version ".tar.gz"))
+            (sha256
+             (base32
+              "04q6lgl3kglmmhw59igq1n7v3rp1rpkypl366cy1k1yn2znlvckj"))))
+   (build-system gnu-build-system)
+   (synopsis "Character set conversion library")
+   (description
+     "libiconv provides an implementation of the iconv function for systems
+that lack it.  iconv is used to convert between character encodings in a
+program.  It supports a wide variety of different encodings.")
+   (home-page "http://www.gnu.org/software/libiconv/";)
+   (license lgpl3+)))
+
+(define* (libiconv-if-needed #:optional (target (%current-target-system)))
+  (if (mingw-target? target)
+      `(("libiconv" ,libiconv))
+      '()))
+
 (define-public (canonical-package package)
   ;; Avoid circular dependency by lazily resolving 'commencement'.
   (let* ((iface (resolve-interface '(gnu packages commencement)))
-- 
2.7.3

-- 
Jan Nieuwenhuizen <address@hidden> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar®  http://AvatarAcademy.nl  

reply via email to

[Prev in Thread] Current Thread [Next in Thread]