diff mbox

[1/3] gnu: Add utfcpp.

Message ID 1462673439.1215291.601202577.5D6E31AB@webmail.messagingengine.com
State New
Headers show

Commit Message

Alex Griffin May 8, 2016, 2:10 a.m. UTC
On Sat, May 7, 2016, at 05:19 PM, Leo Famulari wrote:
> Not a bad idea for a new module, but I wonder if you considered any of
> the existing modules? Are none of them appropriate?

Nothing else seemed to fit, but I'm open to suggestions.

> > +(define-public utfcpp
> 
> I'm curious — are there any significant differences between this and the
> bundled library?

No, as far as I can tell it's the same code but with different upstream
maintainers.

> Can you make sure these lines are < 80 characters?
> 
> Otherwise, LGTM!

Yup, here's a new patch.

Comments

Alex Kost May 8, 2016, 8:13 a.m. UTC | #1
Alex Griffin (2016-05-08 05:10 +0300) wrote:

> On Sat, May 7, 2016, at 05:19 PM, Leo Famulari wrote:
>> Not a bad idea for a new module, but I wonder if you considered any of
>> the existing modules? Are none of them appropriate?
>
> Nothing else seemed to fit, but I'm open to suggestions.

I suggest (gnu packages textutils); I see 'utf8proc' is placed there.  I
think this is also a suitable module for 'libunistring' (currently it is
placed in its own file), but it's a separate question.

> From b91d9f45339b78965af46a951a0922c29cd1de95 Mon Sep 17 00:00:00 2001
> From: Alex Griffin <a@ajgrf.com>
> Date: Sat, 7 May 2016 12:16:39 -0500
> Subject: [PATCH 1/3] gnu: Add utfcpp.
>
> * gnu/packages/unicode.scm: New file.
> ---
>  gnu/packages/unicode.scm | 63 ++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 63 insertions(+)
>  create mode 100644 gnu/packages/unicode.scm
>
> diff --git a/gnu/packages/unicode.scm b/gnu/packages/unicode.scm
> new file mode 100644
> index 0000000..e386b0b
> --- /dev/null
> +++ b/gnu/packages/unicode.scm
> @@ -0,0 +1,63 @@
> +;;; GNU Guix --- Functional package management for GNU
> +;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
> +;;;
> +;;; 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 <http://www.gnu.org/licenses/>.
> +
> +(define-module (gnu packages unicode)
> + #:use-module ((guix licenses) #:prefix license:)
> + #:use-module (guix packages)
> + #:use-module (guix download)
> + #:use-module (guix build-system trivial)
> + #:use-module (gnu packages zip))

Not a big thing but we indent '#:use-module' by 2 spaces.  Out of
curiosity: what editor do you use?

> +
> +(define-public utfcpp
> +  (package
> +    (name "utfcpp")
> +    (version "2.3.4")
> +    (source (origin
> +              (method url-fetch)
> +              (uri
> +               (string-append
> +                "mirror://sourceforge/project/utfcpp/utf8cpp_2x/Release%20"
> +                version "/utf8_v"
> +                (string-map (lambda (x) (if (eq? x #\.) #\_ x)) version)
> +                ".zip"))
> +              (file-name (string-append name "-" version ".zip"))
> +              (sha256
> +               (base32
> +                "1vqhs0aipcvvdrwcs7h3jsryg6mgbmc4s34n5cm6d36q4nxwwwrk"))))

I don't know whether we have an idiomatic way to convert "2.3.4" into
"2_3_4", but I would just use a tarball from github:

    (source (origin
              (method url-fetch)
              (uri (string-append
                    "https://github.com/nemtrif/utfcpp/archive/v"
                    version ".tar.gz"))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "1x36184rsxiskwdkkz7hnpp6qvqckl04bxj5db9dnwyii1zx09hs"))))

But let's wait for other opinions.

> +    (build-system trivial-build-system)
> +    (arguments
> +     `(#:modules ((guix build utils))
> +       #:builder
> +       (begin
> +         (use-modules (guix build utils))
> +         (let ((source (assoc-ref %build-inputs "source"))
> +               (out    (assoc-ref %outputs "out"))
> +               (unzip  (string-append (assoc-ref %build-inputs "unzip")
> +                                      "/bin/unzip")))
> +           (mkdir-p out)
> +           (with-directory-excursion out
> +             (system* unzip source)
> +             (mkdir-p "share/doc")
> +             (rename-file "doc" "share/doc/utfcpp")
> +             (rename-file "source" "include"))))))
> +    (native-inputs `(("unzip" ,unzip)))
> +    (home-page "https://github.com/nemtrif/utfcpp")
> +    (synopsis "Portable C++ library for handling UTF-8")
> +    (description "UTF8-CPP is a C++ library for handling UTF-8 encoded text
> +                 in a portable way.")

Please don't add leading spaces in descriptions :-)

> +    (license license:boost1.0)))
Alex Griffin May 8, 2016, 2:43 p.m. UTC | #2
On Sun, May 8, 2016, at 03:13 AM, Alex Kost wrote:
> I suggest (gnu packages textutils); I see 'utf8proc' is placed there.  I
> think this is also a suitable module for 'libunistring' (currently it is
> placed in its own file), but it's a separate question.

Okay. I had assumed textutils was for command line utilities, but if
that's where utf8proc goes then utfcpp seems to fit there too.

> Not a big thing but we indent '#:use-module' by 2 spaces.  Out of
> curiosity: what editor do you use?

I use Emacs, the bad indenting is just from moving the package out of
another file with incorrect indentation (finance.scm).

> I don't know whether we have an idiomatic way to convert "2.3.4" into
> "2_3_4", but I would just use a tarball from github:

The project was just migrated to GitHub and hasn't had a new release
since then, so I'm using the sourceforge zip file because that's what
other projects have downloaded and used. Also I try to avoid the
automatically-generated GitHub archives because they're prone to change
hashes (although I see I forgot about that in the ledger package.)

> Please don't add leading spaces in descriptions :-)

Okay. My updated patches should come later today. Thanks!
Ludovic Courtès May 8, 2016, 4:12 p.m. UTC | #3
Alex Kost <alezost@gmail.com> skribis:

> Not a big thing but we indent '#:use-module' by 2 spaces.  Out of
> curiosity: what editor do you use?

[...]

> Please don't add leading spaces in descriptions :-)

Just a side remark: I think it’s preferable and more efficient if those
of us with commit access fix little issues like these on behalf of our
friendly newcomers.  :-)

Ludo’.
Alex Kost May 8, 2016, 7:22 p.m. UTC | #4
Ludovic Courtès (2016-05-08 19:12 +0300) wrote:

> Alex Kost <alezost@gmail.com> skribis:
>
>> Not a big thing but we indent '#:use-module' by 2 spaces.  Out of
>> curiosity: what editor do you use?
>
> [...]
>
>> Please don't add leading spaces in descriptions :-)
>
> Just a side remark: I think it’s preferable and more efficient if those
> of us with commit access fix little issues like these on behalf of our
> friendly newcomers.  :-)

I agree and I usually do it, but this was not the only "problem".
Alex Kost May 8, 2016, 7:42 p.m. UTC | #5
Alex Griffin (2016-05-08 17:43 +0300) wrote:

> On Sun, May 8, 2016, at 03:13 AM, Alex Kost wrote:
>> I suggest (gnu packages textutils); I see 'utf8proc' is placed there.  I
>> think this is also a suitable module for 'libunistring' (currently it is
>> placed in its own file), but it's a separate question.
>
> Okay. I had assumed textutils was for command line utilities, but if
> that's where utf8proc goes then utfcpp seems to fit there too.

Note that I'm not an expert in finding the most suitable module.  I
often have the same problem when I make a package.  But in this case, I
think (gnu packages textutils) is OK.

>> Not a big thing but we indent '#:use-module' by 2 spaces.  Out of
>> curiosity: what editor do you use?
>
> I use Emacs, the bad indenting is just from moving the package out of
> another file with incorrect indentation (finance.scm).

Ah, OK, it happens, we have many not perfect indentations here and
there, sorry :-)

>> I don't know whether we have an idiomatic way to convert "2.3.4" into
>> "2_3_4", but I would just use a tarball from github:
>
> The project was just migrated to GitHub and hasn't had a new release
> since then, so I'm using the sourceforge zip file because that's what
> other projects have downloaded and used. Also I try to avoid the
> automatically-generated GitHub archives because they're prone to change
> hashes (although I see I forgot about that in the ledger package.)

This is doubtful; do you have any proof?  We use a lot of tarballs from
github and AFAIK we have never seen any hash changes.  These tarballs
are just tagged snapshots of the git repos, so the only way I see they
can be changed is when the upstream pushes a tag, then deletes it, and
recreates it (probably after some commit history rewriting and force
pushing).

And I don't think that sourceforge is more trustable than github.

To be clear: I don't insist on using the tarball from github; zip-file
from sourceforge is fine for me, I just said what I would do.
Leo Famulari May 9, 2016, 3:31 a.m. UTC | #6
On Sun, May 08, 2016 at 09:43:28AM -0500, Alex Griffin wrote:
> On Sun, May 8, 2016, at 03:13 AM, Alex Kost wrote:
> > I don't know whether we have an idiomatic way to convert "2.3.4" into
> > "2_3_4", but I would just use a tarball from github:
> 
> The project was just migrated to GitHub and hasn't had a new release
> since then, so I'm using the sourceforge zip file because that's what
> other projects have downloaded and used. Also I try to avoid the
> automatically-generated GitHub archives because they're prone to change
> hashes (although I see I forgot about that in the ledger package.)

I haven't noticed a GitHub tarball change its content unexpectedly.

However, I have noticed that for projects who distribute tarballs from
both GitHub and another site, the tarballs are often different. The
project distributes the result of something like `make dist` on the
other site, while GitHub automatically generates a snapshot of the
tagged commit.

So, if utfcpp's GitHub and SourceForge tarballs are different, that
could be the reason, and also a reason to use the SourceForge
distribution.
Alex Kost May 9, 2016, 8:02 a.m. UTC | #7
Leo Famulari (2016-05-09 06:31 +0300) wrote:

> On Sun, May 08, 2016 at 09:43:28AM -0500, Alex Griffin wrote:
>> On Sun, May 8, 2016, at 03:13 AM, Alex Kost wrote:
>> > I don't know whether we have an idiomatic way to convert "2.3.4" into
>> > "2_3_4", but I would just use a tarball from github:
>>
>> The project was just migrated to GitHub and hasn't had a new release
>> since then, so I'm using the sourceforge zip file because that's what
>> other projects have downloaded and used. Also I try to avoid the
>> automatically-generated GitHub archives because they're prone to change
>> hashes (although I see I forgot about that in the ledger package.)
>
> I haven't noticed a GitHub tarball change its content unexpectedly.
>
> However, I have noticed that for projects who distribute tarballs from
> both GitHub and another site, the tarballs are often different. The
> project distributes the result of something like `make dist` on the
> other site, while GitHub automatically generates a snapshot of the
> tagged commit.

"make dist" creates a real release and it is surely preferred
over a simple repo snapshot.  But this is not the case.

> So, if utfcpp's GitHub and SourceForge tarballs are different, that
> could be the reason, and also a reason to use the SourceForge
> distribution.

No it's not the reason, this utfcpp doesn't even use any build system,
it consists of several files that are not built in any way.  And
actually tarball from github has more files (samples and tests, but it
doesn't matter).
diff mbox

Patch

From b91d9f45339b78965af46a951a0922c29cd1de95 Mon Sep 17 00:00:00 2001
From: Alex Griffin <a@ajgrf.com>
Date: Sat, 7 May 2016 12:16:39 -0500
Subject: [PATCH 1/3] gnu: Add utfcpp.

* gnu/packages/unicode.scm: New file.
---
 gnu/packages/unicode.scm | 63 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 63 insertions(+)
 create mode 100644 gnu/packages/unicode.scm

diff --git a/gnu/packages/unicode.scm b/gnu/packages/unicode.scm
new file mode 100644
index 0000000..e386b0b
--- /dev/null
+++ b/gnu/packages/unicode.scm
@@ -0,0 +1,63 @@ 
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages unicode)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system trivial)
+ #:use-module (gnu packages zip))
+
+(define-public utfcpp
+  (package
+    (name "utfcpp")
+    (version "2.3.4")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append
+                "mirror://sourceforge/project/utfcpp/utf8cpp_2x/Release%20"
+                version "/utf8_v"
+                (string-map (lambda (x) (if (eq? x #\.) #\_ x)) version)
+                ".zip"))
+              (file-name (string-append name "-" version ".zip"))
+              (sha256
+               (base32
+                "1vqhs0aipcvvdrwcs7h3jsryg6mgbmc4s34n5cm6d36q4nxwwwrk"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules (guix build utils))
+         (let ((source (assoc-ref %build-inputs "source"))
+               (out    (assoc-ref %outputs "out"))
+               (unzip  (string-append (assoc-ref %build-inputs "unzip")
+                                      "/bin/unzip")))
+           (mkdir-p out)
+           (with-directory-excursion out
+             (system* unzip source)
+             (mkdir-p "share/doc")
+             (rename-file "doc" "share/doc/utfcpp")
+             (rename-file "source" "include"))))))
+    (native-inputs `(("unzip" ,unzip)))
+    (home-page "https://github.com/nemtrif/utfcpp")
+    (synopsis "Portable C++ library for handling UTF-8")
+    (description "UTF8-CPP is a C++ library for handling UTF-8 encoded text
+                 in a portable way.")
+    (license license:boost1.0)))
-- 
2.7.4