[commit: ghc] master: Always build GHCi libs (a7be163)

git at git.haskell.org git at git.haskell.org
Wed Mar 15 19:25:41 UTC 2017


Repository : ssh://git@git.haskell.org/ghc

On branch  : master
Link       : http://ghc.haskell.org/trac/ghc/changeset/a7be163196f452530b61cbb526631db946d20e8b/ghc

>---------------------------------------------------------------

commit a7be163196f452530b61cbb526631db946d20e8b
Author: Simon Marlow <marlowsd at gmail.com>
Date:   Wed Mar 15 09:28:10 2017 -0400

    Always build GHCi libs
    
    Since the introduction of -split-sections, using GHCi with the RTS
    linker is really slow:
    
    ```
    $ time (echo :quit | ./inplace/bin/ghc-stage2 --interactive -fexternal-interpreter)
    GHCi, version 8.1.20170304: http://www.haskell.org/ghc/  :? for help
    Prelude> Leaving GHCi.
    
    real        0m3.793s
    ```
    
    (when we use `-fexternal-interpreter` it uses the RTS linker by default,
    you can make it use the system linker by adding `-dynamic`)
    
    Building the GHCi libs doesn't take much time or space in the GHC build,
    but makes things much quicker for people using the RTS linker:
    
    ```
    $ time (echo :quit | ./inplace/bin/ghc-stage2 --interactive -fexternal-interpreter)
    GHCi, version 8.1.20170304: http://www.haskell.org/ghc/  :? for help
    Prelude> Leaving GHCi.
    
    real        0m0.285s
    ```
    
    So I propose that we build and ship them unconditionally.
    
    Test Plan: validate, perf tests above
    
    Reviewers: bgamari, austin, niteria, erikd, Phyx
    
    Reviewed By: bgamari
    
    Subscribers: rwbarton, thomie, snowleopard
    
    Differential Revision: https://phabricator.haskell.org/D3298


>---------------------------------------------------------------

a7be163196f452530b61cbb526631db946d20e8b
 rules/build-package-data.mk | 6 ++++--
 rules/build-package-way.mk  | 4 ----
 2 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/rules/build-package-data.mk b/rules/build-package-data.mk
index 8f3a8e7..a20afbc 100644
--- a/rules/build-package-data.mk
+++ b/rules/build-package-data.mk
@@ -32,11 +32,13 @@ endif
 $1_$2_CONFIGURE_OPTS += --disable-library-for-ghci
 ifeq "$$(filter v,$$($1_$2_WAYS))" "v"
 $1_$2_CONFIGURE_OPTS += --enable-library-vanilla
+# Build the GHCi lib even if GHCi is dynamic (and therefore won't use
+# these by default), because they will be used by
+#  (a) ghci -fexternal-interpreter
+#  (b) statically-linked binaries that use the GHC package
 ifeq "$$(GhcWithInterpreter)" "YES"
-ifneq "$$(DYNAMIC_GHC_PROGRAMS)" "YES"
 $1_$2_CONFIGURE_OPTS += --enable-library-for-ghci
 endif
-endif
 else
 $1_$2_CONFIGURE_OPTS += --disable-library-vanilla
 endif
diff --git a/rules/build-package-way.mk b/rules/build-package-way.mk
index 8f61a35..f230ef5 100644
--- a/rules/build-package-way.mk
+++ b/rules/build-package-way.mk
@@ -143,9 +143,6 @@ endif
 endif
 
 # Build the GHCi library
-ifeq "$$(DYNAMIC_GHC_PROGRAMS)" "YES"
-$1_$2_GHCI_LIB = $$($1_$2_dyn_LIB)
-else
 ifeq "$3" "v"
 $1_$2_GHCI_LIB = $1/$2/build/HS$$($1_$2_COMPONENT_ID).$$($3_osuf)
 ifeq "$$($1_$2_BUILD_GHCI_LIB)" "YES"
@@ -164,7 +161,6 @@ $(call all-target,$1_$2,$$($1_$2_GHCI_LIB))
 endif
 endif # "$$($1_$2_BUILD_GHCI_LIB)" "YES"
 endif # "$3" "v"
-endif # "$$(DYNAMIC_GHC_PROGRAMS)" "YES"
 
 $(call profEnd, build-package-way($1,$2,$3))
 endef # build-package-way



More information about the ghc-commits mailing list