gnu: wordnet: Build with gcc@6 to prevent chunked literal strings.
[jackhill/guix/guix.git] / gnu / packages / wordnet.scm
index 357c193..4207664 100644 (file)
@@ -23,6 +23,7 @@
   #:use-module (guix licenses)
   #:use-module (guix download)
   #:use-module (gnu packages)
+  #:use-module (gnu packages gcc)
   #:use-module (gnu packages tcl))
 
 (define-public wordnet
 
                                ;; Provide the `result' field in `Tcl_Interp'.
                                ;; See <https://bugs.gentoo.org/show_bug.cgi?id=452034>.
-                               ;;
-                               ;; 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")
+                               "CFLAGS=-DUSE_INTERP_RESULT -O2")
        #:phases
        (modify-phases %standard-phases
          (add-after 'install 'post-install
                #t))))))
     (outputs '("out"
                "tk"))                             ; for the Tcl/Tk GUI
+
+    ;; Build with a patched GCC to work around <http://bugs.gnu.org/24703>.
+    ;; (Specifically the 'DEFAULTPATH' string literal is what we want to
+    ;; prevent from being chunked so that grafting can "see" it and patch it.)
+    (native-inputs `(("gcc@6" ,gcc-6)))
+
     (inputs `(("tk" ,tk)
               ("tcl" ,tcl)))
     (home-page "http://wordnet.princeton.edu/")