Commit 47c0fd27 authored by simonpj@microsoft.com's avatar simonpj@microsoft.com

Fix computation of installed packages

This is a follow-on to Simon's patch yesterday, developed
with him.  It cleans up the computation of how packages
are installed, and installs the right ones.
parent f6a9f267
......@@ -285,7 +285,9 @@ include rules/bindist.mk
# Packages
# --------------------------------
# Subsets of packages
# Properties of packages
# These lists say "if this package is built, here's a property it has"
# They do not say "this package will be built"; see $(PACKAGES_xx) for that
# Packages that are built but not installed
INTREE_ONLY_PACKAGES := haskeline mtl terminfo utf8-string xhtml
......@@ -305,11 +307,24 @@ STAGE2_PACKAGES := dph/dph-base dph/dph-prim-interface dph/dph-prim-seq \
# so we don't have to include it below.
STAGE0_PACKAGES = Cabal hpc extensible-exceptions binary bin-package-db
# --------------------------------
# Building the lists of packages
# These packages are installed, but are installed hidden
# Why install them at all? Because the 'ghc' package depends on them
HIDDEN_PACKAGES = binary
# We need to build two lists:
#
# $(EXTRA_PACKAGES) is another classification, of packages built but
# not installed
# It is set in rules/extra-package.mk,
# by $(call extra-packages) a little further down
# this ghc.mk
# --------------------------------
# Packages to build
# The lists of packages that we *actually* going to build in each stage:
#
# $(STAGE0_PACKAGE) does double duty; it really is the list of packages
# we build the bootstrap compiler in stage 0
#
# $(PACKAGES) A list of directories relative to libraries/ containing
# packages that will be built by stage1, in dependency
# order.
......@@ -897,28 +912,22 @@ INSTALLED_GHC_REAL=$(DESTDIR)$(bindir)/ghc.exe
INSTALLED_GHC_PKG_REAL=$(DESTDIR)$(bindir)/ghc-pkg.exe
endif
INSTALLED_PACKAGES := $(filter-out $(INTREE_ONLY_PACKAGES),$(PACKAGES))
INSTALLED_PKG_DIRS := $(addprefix libraries/,$(PACKAGES)) \
compiler \
$(addprefix libraries/,$(PACKAGES_STAGE2))
ifeq "$(InstallExtraPackages)" "NO"
INSTALLED_PACKAGES := $(filter-out $(EXTRA_PACKAGES), $(INSTALLED_PACKAGES))
INSTALLED_PKG_DIRS := $(filter-out $(addprefix libraries/,$(EXTRA_PACKAGES)),\
$(INSTALLED_PKG_DIRS))
endif
INSTALLED_PKG_DIRS := $(filter-out $(addprefix libraries/,$(INTREE_ONLY_PACKAGES)),\
$(INSTALLED_PKG_DIRS))
HIDDEN_PACKAGES = binary
define set_INSTALL_DISTDIR
# $1 = libraries/base, $2 = dist-install
# =>
# INSTALL_DISTDIR_libraries/base = dist-install
INSTALL_DISTDIR_$1 = $2
endef
$(eval $(foreach p,$(INSTALLED_PACKAGES) $(PACKAGES_STAGE2),\
$(call set_INSTALL_DISTDIR,libraries/$p,dist-install)))
# Set the INSTALL_DISTDIR_p for each package; compiler is special
$(foreach p,$(filter-out compiler,$(INSTALLED_PKG_DIRS)),\
$(eval INSTALL_DISTDIR_$p = dist-install))
INSTALL_DISTDIR_compiler = stage2
ALL_INSTALLED_PACKAGES = $(addprefix libraries/,$(INSTALLED_PACKAGES)) \
compiler \
$(addprefix libraries/,$(PACKAGES_STAGE2))
# Now we can do the installation
install_packages: install_libexecs
install_packages: libffi/package.conf.install rts/package.conf.install
$(INSTALL_DIR) "$(DESTDIR)$(topdir)"
......@@ -926,7 +935,7 @@ install_packages: libffi/package.conf.install rts/package.conf.install
$(INSTALL_DIR) "$(INSTALLED_PACKAGE_CONF)"
"$(INSTALLED_GHC_PKG_REAL)" --force --global-conf "$(INSTALLED_PACKAGE_CONF)" update libffi/package.conf.install
"$(INSTALLED_GHC_PKG_REAL)" --force --global-conf "$(INSTALLED_PACKAGE_CONF)" update rts/package.conf.install
$(foreach p, $(ALL_INSTALLED_PACKAGES), \
$(foreach p, $(INSTALLED_PKG_DIRS), \
$(call make-command, \
"$(GHC_CABAL_INPLACE)" install \
"$(INSTALLED_GHC_REAL)" \
......
......@@ -22,6 +22,9 @@ STRIP_CMD = :
CHECK_PACKAGES = YES
# We want to install DPH when validating, so that we can test it
InstallExtraPackages = YES
# dblatex with miktex under msys/mingw can't build the PS and PDF docs,
# and just building the HTML docs is sufficient to check that the
# markup is correct, so we turn off PS and PDF doc building when
......
......@@ -22,12 +22,18 @@
# * 'localpath' is where to put the repository in a checked out tree.
# * 'remotepath' is where the repository is in the central repository.
# * 'VCS' is what version control system the repo uses.
#
# * The 'tag' determines when "darcs-all get" will get the
# repo. If the tag is "-" then it will always get it, but if there
# is a tag then a corresponding flag must be given to darcs-all, e.g.
# if you want to get the packages with an "extralibs" or "testsuite"
# tag then you need to use "darcs-all --extra --testsuite get".
# Support for new tags must be manually added to the darcs-all script.
#
# 'tag' is also used to determine which packages the build system
# deems to have the EXTRA_PACKAGE property: tags 'dph' and 'extra'
# both give this property
#
# * 'upstream' is the URL of the upstream repo, where there is one, or
# "-" if there is no upstream.
#
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment