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

From: Felix Gruber <[email-masked]>
Date: Mon, 27 Dec 2021 14:48:22 +0000

Hello Nicolas,

On 12/26/21 9:54 PM, Nicolas Goaziou wrote:
> Felix Gruber <[email-masked]> 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