diff mbox series

[bug#52789,1/3] gnu: Add libunibreak.

Message ID 20211225133706.2964-1-felgru@posteo.net
State Accepted
Headers show
Series Update naev to 0.9.0 | expand

Checks

Context Check Description
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

Felix Gruber Dec. 25, 2021, 1:37 p.m. UTC
* gnu/packages/unicode.scm (libunibreak): New variable.
---
 gnu/packages/unicode.scm | 48 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

Comments

Nicolas Goaziou Dec. 26, 2021, 8:54 p.m. UTC | #1
Hello,

Felix Gruber <felgru@posteo.net> writes:

> * gnu/packages/unicode.scm (libunibreak): New variable.

Thanks.

However, the check phase fails for me with the following backtrace:

--8<---------------cut here---------------start------------->8---
starting phase `check'
Making check in src
make[1]: Entering directory '/tmp/guix-build-libunibreak-4.2-1.drv-0/source/src'
gcc -DHAVE_CONFIG_H -I. -I..  -I.   -g -O2 -MT tests-tests.o -MD -MP -MF .deps/tests-tests.Tpo -c -o tests-tests.o `test -f 'tests.c' || echo './'`tests.c
make  tests
make[2]: Entering directory '/tmp/guix-build-libunibreak-4.2-1.drv-0/source/src'
gcc -DHAVE_CONFIG_H -I. -I..  -I.   -g -O2 -MT tests-tests.o -MD -MP -MF .deps/tests-tests.Tpo -c -o tests-tests.o `test -f 'tests.c' || echo './'`tests.c
mv -f .deps/tests-tests.Tpo .deps/tests-tests.Po
/gnu/store/vx6vfbmmazvfi7vp8xyjn2mcyylvw9gn-bash-minimal-5.1.8/bin/bash ../libtool  --tag=CC   --mode=link gcc  -g -O2   -o tests tests-tests.o libunibreak.la 
mv -f .deps/tests-tests.Tpo .deps/tests-tests.Po
mv: cannot stat '.deps/tests-tests.Tpo': No such file or directory
make[2]: *** [Makefile:577: tests-tests.o] Error 1
make[2]: Leaving directory '/tmp/guix-build-libunibreak-4.2-1.drv-0/source/src'
make[1]: *** [Makefile:702: check-am] Error 2
make[1]: *** Waiting for unfinished jobs....
libtool: link: gcc -g -O2 -o .libs/tests tests-tests.o  ./.libs/libunibreak.so -Wl,-rpath -Wl,/gnu/store/s8vii50z9pw3q48dmmgfcbv613dhwfmc-libunibreak-4.2-1/lib
make[1]: Leaving directory '/tmp/guix-build-libunibreak-4.2-1.drv-0/source/src'
make: *** [Makefile:458: check-recursive] Error 1
--8<---------------cut here---------------end--------------->8---

Also, libunibreak 5.0 is out. Would it make sense to update it?

Regard,
Felix Gruber Dec. 27, 2021, 2:48 p.m. UTC | #2
Hello Nicolas,

On 12/26/21 9:54 PM, Nicolas Goaziou wrote:
> Felix Gruber <felgru@posteo.net> writes:
> 
>> * gnu/packages/unicode.scm (libunibreak): New variable.
> 
> Thanks.
> 
> However, the check phase fails for me with the following backtrace:
> 
> --8<---------------cut here---------------start------------->8---
> starting phase `check'
> Making check in src
> make[1]: Entering directory '/tmp/guix-build-libunibreak-4.2-1.drv-0/source/src'
> gcc -DHAVE_CONFIG_H -I. -I..  -I.   -g -O2 -MT tests-tests.o -MD -MP -MF .deps/tests-tests.Tpo -c -o tests-tests.o `test -f 'tests.c' || echo './'`tests.c
> make  tests
> make[2]: Entering directory '/tmp/guix-build-libunibreak-4.2-1.drv-0/source/src'
> gcc -DHAVE_CONFIG_H -I. -I..  -I.   -g -O2 -MT tests-tests.o -MD -MP -MF .deps/tests-tests.Tpo -c -o tests-tests.o `test -f 'tests.c' || echo './'`tests.c
> mv -f .deps/tests-tests.Tpo .deps/tests-tests.Po
> /gnu/store/vx6vfbmmazvfi7vp8xyjn2mcyylvw9gn-bash-minimal-5.1.8/bin/bash ../libtool  --tag=CC   --mode=link gcc  -g -O2   -o tests tests-tests.o libunibreak.la 
> mv -f .deps/tests-tests.Tpo .deps/tests-tests.Po
> mv: cannot stat '.deps/tests-tests.Tpo': No such file or directory
> make[2]: *** [Makefile:577: tests-tests.o] Error 1
> make[2]: Leaving directory '/tmp/guix-build-libunibreak-4.2-1.drv-0/source/src'
> make[1]: *** [Makefile:702: check-am] Error 2
> make[1]: *** Waiting for unfinished jobs....
> libtool: link: gcc -g -O2 -o .libs/tests tests-tests.o  ./.libs/libunibreak.so -Wl,-rpath -Wl,/gnu/store/s8vii50z9pw3q48dmmgfcbv613dhwfmc-libunibreak-4.2-1/lib
> make[1]: Leaving directory '/tmp/guix-build-libunibreak-4.2-1.drv-0/source/src'
> make: *** [Makefile:458: check-recursive] Error 1
> --8<---------------cut here---------------end--------------->8---

Hmm, it seems that libunibreak's tests can cause non-deterministic test
failures, probably because multiple make targets contain the line
```
mv -f .deps/tests-tests.Tpo .deps/tests-tests.Po
```
which causes race conditions between those targets.
After adding the #:parallel-tests #f argument, I was able to built
libunibreak five times in a row without observing any further build
failures.

> Also, libunibreak 5.0 is out. Would it make sense to update it?

libunibreak 5.0 is based on Unicode 14, which unfortunately gives us
test failures when we build it against our ucd package which only
contains data for Unicode 12. libunibreak 4.2-1 was the last version
based on Unicode 12.
ucd has 505 (transitively) dependent packages, which is probably too
much to update it on master.

Do you think it would be viable to add a ucd-14 package next to our ucd
package, so that I could update libunibreak to 5.0 using this new ucd-14
package as input?

Best,
Felix
Nicolas Goaziou Dec. 27, 2021, 4:18 p.m. UTC | #3
Hello,

Felix Gruber <felgru@posteo.net> writes:

> libunibreak 5.0 is based on Unicode 14, which unfortunately gives us
> test failures when we build it against our ucd package which only
> contains data for Unicode 12. libunibreak 4.2-1 was the last version
> based on Unicode 12.
> ucd has 505 (transitively) dependent packages, which is probably too
> much to update it on master.
>
> Do you think it would be viable to add a ucd-14 package next to our ucd
> package, so that I could update libunibreak to 5.0 using this new ucd-14
> package as input?

I think it should be done in two steps. First, do like above on master
branch, perhaps naming it ucd-next, then replace ucd with ucd-next on
staging branch.

WDYT?

Regards,
Felix Gruber Dec. 27, 2021, 11:19 p.m. UTC | #4
Hi Nicolas,

I've updated the patchset to add the ucd-next package as discussed and
to package version 5.0 of libunibreak.

I'll submit a separate patch for updating ucd to be applied to the
staging branch.

Felix Gruber (4):
  gnu: Add ucd-next.
  gnu: Add libunibreak.
  gnu: Add naev-artwork.
  gnu: naev: Update to 0.9.0.

 gnu/packages/games.scm   | 74 +++++++++++++++++++++++++++++-----------
 gnu/packages/unicode.scm | 64 ++++++++++++++++++++++++++++++++++
 2 files changed, 118 insertions(+), 20 deletions(-)
Nicolas Goaziou Dec. 28, 2021, 3:06 p.m. UTC | #5
Hello,

Felix Gruber <felgru@posteo.net> writes:

> I've updated the patchset to add the ucd-next package as discussed and
> to package version 5.0 of libunibreak.

Thank you. I applied them.

> I'll submit a separate patch for updating ucd to be applied to the
> staging branch.

I tweaked this one because it couldn't be based off changes from master
branch.

Regards,
diff mbox series

Patch

diff --git a/gnu/packages/unicode.scm b/gnu/packages/unicode.scm
index 806fe05fb6..a5216a38dd 100644
--- a/gnu/packages/unicode.scm
+++ b/gnu/packages/unicode.scm
@@ -1,6 +1,7 @@ 
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2020 Liliana Marie Prikler <liliana.prikler@gmail.com>
 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -18,13 +19,60 @@ 
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages unicode)
+  #:use-module (gnu packages autotools)
+  #:use-module (guix git-download)
   #:use-module (guix licenses)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix utils)
   #:use-module (guix build-system copy)
+  #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial))
 
+(define-public libunibreak
+  (package
+    (name "libunibreak")
+    (version "4.2-1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/adah1972/libunibreak")
+                    (commit (string-append "libunibreak_"
+                              (string-replace-substring version "." "_")))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "182327vv2bqn5pr7v2ain0j4f2q97fvgimyv08vj66bqkxmhm7a3"))))
+    (build-system gnu-build-system)
+    (native-inputs
+      (list autoconf-wrapper
+            automake
+            libtool
+            ucd ; required for tests
+            ))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'pre-check
+           (lambda* (#:key inputs #:allow-other-keys)
+             (for-each (lambda (file)
+                         (copy-file
+                           (search-input-file inputs
+                             (string-append "/share/ucd/auxiliary/"
+                                            file))
+                           (string-append "src/" file)))
+                       '("LineBreakTest.txt"
+                         "WordBreakTest.txt"
+                         "GraphemeBreakTest.txt")))))))
+    (home-page "http://vimgadgets.sourceforge.net/libunibreak/")
+    (synopsis "Unicode line breaking and word breaking algorithms")
+    (description
+     "Libunibreak is an implementation of the line breaking and word
+breaking algorithms as described in Unicode Standard Annex 14 and
+Unicode Standard Annex 29.  It is designed to be used in a generic text
+renderer.")
+    (license zlib)))
+
 (define-public ucd
   (package
     (name "ucd")