[GHC] #7779: building GHC overwrites the installed package database if GHC_PACKAGE_PATH is set
GHC
cvs-ghc at haskell.org
Wed Mar 20 05:31:28 CET 2013
#7779: building GHC overwrites the installed package database if GHC_PACKAGE_PATH
is set
-----------------------------+----------------------------------------------
Reporter: heatsink | Owner:
Type: bug | Status: new
Priority: normal | Component: Build System
Version: 7.4.2 | Keywords:
Os: Unknown/Multiple | Architecture: Unknown/Multiple
Failure: None/Unknown | Blockedby:
Blocking: | Related:
-----------------------------+----------------------------------------------
When building GHC, if `GHC_PACKAGE_PATH` is set to a single path, then the
build process will register packages in that path instead of in the build
tree. Since `GHC_PACKAGE_PATH` points to the host compiler's package
database, the build system overwrites the host compiler's package
database, rendering the host compiler unusable.
To reproduce:
1. Get a binary distribution of GHC 7.4.1 and a source distribution of GHC
7.4.2
2. Configure the binary distribution to install in a temporary directory:
`./configure --prefix=$HOME/workspace1`
3. Install the binary distribution
4. Set up the environment to use only the installed compiler: `export
PATH=$HOME/workspace1/bin:$PATH; export
GHC_PACKAGE_PATH=$HOME/workspace1/lib/ghc-7.4.1/package.conf.d`
5. Configure the source distribution to install in a different directory:
`./configure --prefix=$HOME/workspace2`
6. Build the source distribution: `make`
Building will eventually run commands that modify the package database in
`GHC_PACKAGE_PATH`. One of these commands is `"inplace/bin/ghc-pkg"
update --force rts/package.conf.inplace`. I confirmed that the database
is being modified by making `ghc-pkg` print the name of the file it's
about to update.
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7779>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list