~ruther/guix-local

2c5ab05bffe5f89092ef60c3743b3941dcf92af0 — Ludovic Courtès 9 years ago aba5182
gnu: wordnet: Build with gcc@6 to prevent chunked literal strings.

* gnu/packages/wordnet.scm (wordnet)[arguments]: Remove
-fno-builtin-strcpy.
[native-inputs]: New field.
1 files changed, 8 insertions(+), 16 deletions(-)

M gnu/packages/wordnet.scm
M gnu/packages/wordnet.scm => gnu/packages/wordnet.scm +8 -16
@@ 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


@@ 51,22 52,7 @@

                               ;; 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


@@ 93,6 79,12 @@
               #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/")