From 9d50da70608de32d9db0c29859caec6f2cddb95f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 5 Oct 2016 18:34:39 +0200 Subject: [PATCH] gnu: wordnet: Make sure the self-reference is visible to the GC. Before that, "guix gc --references $(guix build wordnet)" would not show WordNet itself, erroneously so. * gnu/packages/wordnet.scm (wordnet)[arguments]: Add -fno-builtin-strcpy to #:configure-flags. --- gnu/packages/wordnet.scm | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/gnu/packages/wordnet.scm b/gnu/packages/wordnet.scm index dd3cdf3008..357c19351b 100644 --- a/gnu/packages/wordnet.scm +++ b/gnu/packages/wordnet.scm @@ -51,7 +51,22 @@ ;; Provide the `result' field in `Tcl_Interp'. ;; See . - "CFLAGS=-DUSE_INTERP_RESULT -O2") + ;; + ;; The 'DEFAULTPATH' string literal, which + ;; contains the output path, only appears as + ;; the operand of one 'strcpy' call. As a + ;; consequence, GCC does not store the string + ;; literal as is but instead introduces "gaps" + ;; for alignment reasons presumably---like + ;; "/gnu/sto?????re/8jp8b??????ky105…". This + ;; makes this string invisible to the GC, which + ;; in turns causes problems when running a + ;; grafted WordNet because that grafted WordNet + ;; keeps referring to the ungrafted variant, + ;; which is not protected from GC. Thus, + ;; disable use of '__builtin_strcpy' to avoid + ;; that. + "CFLAGS=-DUSE_INTERP_RESULT -O2 -fno-builtin-strcpy") #:phases (modify-phases %standard-phases (add-after 'install 'post-install