From: Ian Lynagh Date: Tue, 22 Jul 2008 12:57:43 +0000 (+0000) Subject: Fix the stage3 build X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=09d76f81a7b77139901a73f9f241d26a5bdd3796 Fix the stage3 build --- diff --git a/compiler/Makefile b/compiler/Makefile index 6066385..d818790 100644 --- a/compiler/Makefile +++ b/compiler/Makefile @@ -58,12 +58,16 @@ stage3 :: clean distclean:: -$(CABAL) clean --distpref dist-stage1 -$(CABAL) clean --distpref dist-stage2 + -$(CABAL) clean --distpref dist-stage3 $(RM) -f Makefile-stage1 $(RM) -f Makefile-stage2 + $(RM) -f Makefile-stage3 $(RM) -f prelude/primops.txt $(RM) -f $(PRIMOP_BITS) $(RM) -f $(CONFIG_HS) $(RM) -f parser/Parser.y + $(RM) -rf stage1 stage2plus + $(RM) -f $(STAGE3_PACKAGE_CONF) CONFIGURE_FLAGS_STAGE1 += --flags=stage1 CONFIGURE_FLAGS_STAGE2 += --flags=-stage1 @@ -165,6 +169,7 @@ CONFIGURE_FLAGS_STAGE2 += $(USE_STAGE1_CONFIGURE_FLAGS) CONFIGURE_FLAGS_STAGE3 += $(USE_STAGE2_CONFIGURE_FLAGS) boot.stage.%: $(PRIMOP_BITS) $(CONFIG_HS) parser/Parser.y + test -e $(STAGE3_PACKAGE_CONF) || echo "[]" > $(STAGE3_PACKAGE_CONF) $(CABAL) configure --distpref dist-stage$* \ $(CONFIGURE_FLAGS_STAGE$*) \ $(INSTALL_DIRS_CONFIGURE_FLAGS) \ @@ -184,11 +189,6 @@ doc.stage.%: install: @: -stage_dirs : - $(MKDIRHIER) stage$(stage) - -boot :: stage_dirs - # ----------------------------------------------------------------------------- # Create compiler configuration # @@ -299,7 +299,8 @@ endif PLATFORM_H = ghc_boot_platform.h -stage1/$(PLATFORM_H) : stage_dirs $(FPTOOLS_TOP)/mk/config.mk +stage1/$(PLATFORM_H) : $(FPTOOLS_TOP)/mk/config.mk + $(MKDIRHIER) stage1 @echo "Creating $@..." @$(RM) $@ @echo "#ifndef __PLATFORM_H__" >$@ @@ -345,7 +346,8 @@ endif # For stage2 and above, the BUILD platform is the HOST of stage1, and # the HOST platform is the TARGET of stage1. The TARGET remains the same # (stage1 is the cross-compiler, not stage2). -stage2/$(PLATFORM_H) : stage_dirs $(FPTOOLS_TOP)/mk/config.mk +stage2plus/$(PLATFORM_H) : $(FPTOOLS_TOP)/mk/config.mk + $(MKDIRHIER) stage2plus @echo "Creating $@..." @$(RM) $@ @echo "#ifndef __PLATFORM_H__" >$@ @@ -388,7 +390,11 @@ endif @echo "#endif /* __PLATFORM_H__ */" >> $@ @echo "Done." -STAGE_PLATFORM_H = stage$(stage)/$(PLATFORM_H) +ifeq "$(stage)" "1" +STAGE_PLATFORM_H = stage1/$(PLATFORM_H) +else +STAGE_PLATFORM_H = stage2plus/$(PLATFORM_H) +endif boot :: $(STAGE_PLATFORM_H) diff --git a/compiler/ghc.cabal b/compiler/ghc.cabal index 2bb88fd..0798086 100644 --- a/compiler/ghc.cabal +++ b/compiler/ghc.cabal @@ -72,12 +72,10 @@ Library Include-Dirs: . parser utils - -- XXX Change these directory names: The stage2 files are what - -- we want for all stages >= 1 if flag(stage1) Include-Dirs: stage1 else - Include-Dirs: stage2 + Include-Dirs: stage2plus Install-Includes: HsVersions.h, ghc_boot_platform.h c-sources: diff --git a/mk/cabal-flags.mk b/mk/cabal-flags.mk index ae6a6c3..4e61c66 100644 --- a/mk/cabal-flags.mk +++ b/mk/cabal-flags.mk @@ -7,6 +7,7 @@ UTILS_ABS = $(FPTOOLS_TOP_ABS)/utils CABAL = $(LIBRARIES_ABS)/cabal-bin $(GHC) $(LIBRARIES_ABS)/bootstrapping.conf INSTALL_PACKAGE = \ $(UTILS_ABS)/installPackage/install-inplace/bin/installPackage +STAGE3_PACKAGE_CONF = $(FPTOOLS_TOP_ABS)/stage3.package.conf # We rely on all the CONFIGURE_ARGS being quoted with '...', and there # being no 's inside the values. @@ -81,9 +82,10 @@ USE_STAGE1_CONFIGURE_FLAGS = \ --with-compiler=$(GHC_STAGE1) \ $(USE_STAGE_CONFIGURE_FLAGS) -USE_STAGE2_CONFIGURE_FLAGS = \ - --with-compiler=$(GHC_STAGE2) \ - $(USE_STAGE_CONFIGURE_FLAGS) +USE_STAGE2_CONFIGURE_FLAGS = \ + --with-compiler=$(GHC_STAGE2) \ + $(USE_STAGE_CONFIGURE_FLAGS) \ + --package-db $(STAGE3_PACKAGE_CONF) BUILD_FLAGS = $(addprefix --ghc-option=,$(SRC_HC_OPTS)) diff --git a/utils/ghc-pkg/Main.hs b/utils/ghc-pkg/Main.hs index bb80e63..0f0b9ec 100644 --- a/utils/ghc-pkg/Main.hs +++ b/utils/ghc-pkg/Main.hs @@ -635,7 +635,7 @@ doDump = mapM_ putStrLn . intersperse "---" . map showInstalledPackageInfo findPackages :: PackageDBStack -> PackageArg -> IO [InstalledPackageInfo] findPackages db_stack pkgarg = case [ p | p <- all_pkgs, pkgarg `matchesPkg` p ] of - [] -> die ("cannot find package " ++ pkg_msg pkgarg) + [] -> dieWith 2 ("cannot find package " ++ pkg_msg pkgarg) ps -> return ps where all_pkgs = allPackagesInStack db_stack @@ -1026,11 +1026,14 @@ bye :: String -> IO a bye s = putStr s >> exitWith ExitSuccess die :: String -> IO a -die s = do +die = dieWith 1 + +dieWith :: Int -> String -> IO a +dieWith ec s = do hFlush stdout prog <- getProgramName hPutStrLn stderr (prog ++ ": " ++ s) - exitWith (ExitFailure 1) + exitWith (ExitFailure ec) dieOrForceAll :: Force -> String -> IO () dieOrForceAll ForceAll s = ignoreError s