diff options
-rw-r--r-- | .gitlab-ci.yml | 7 | ||||
-rw-r--r-- | hadrian/bindist/Makefile | 39 | ||||
-rw-r--r-- | hadrian/src/Rules/BinaryDist.hs | 5 | ||||
-rw-r--r-- | hadrian/src/Rules/Test.hs | 10 | ||||
-rw-r--r-- | hadrian/src/Settings/Default.hs | 1 |
5 files changed, 37 insertions, 25 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a6878d6ad2..63c6983a38 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -816,12 +816,10 @@ validate-x86_64-linux-fedora27: - | python boot bash -c './configure --enable-tarballs-autodownload GHC=`pwd`/toolchain/bin/ghc HAPPY=`pwd`/toolchain/bin/happy ALEX=`pwd`/toolchain/bin/alex' - - bash -c "PATH=`pwd`/toolchain/bin:$PATH hadrian/build.cabal.sh --flavour=$FLAVOUR -j`mk/detect-cpu-count.sh` --flavour=Quick --docs=no-sphinx binary-dist" + - bash -c "PATH=`pwd`/toolchain/bin:$PATH hadrian/build.cabal.sh --flavour=$FLAVOUR -j`mk/detect-cpu-count.sh` --docs=no-sphinx binary-dist" - mv _build/bindist/ghc*.tar.xz ghc.tar.xz - bash -c "export TOP=$(pwd); cd _build/bindist/ghc-*/ && PATH=$TOP/toolchain/bin:$PATH ./configure --prefix=$TOP/_build/install && make install && cd ../../../" - - bash -c "export TOP=$(pwd); PATH=$TOP/toolchain/bin:$PATH hadrian/build.cabal.sh --flavour=$FLAVOUR -j`mk/detect-cpu-count.sh` --flavour=quick test --summary-junit=./junit.xml --skip-perf --test-compiler=$TOP/_build/install/bin/ghc" - # skipping perf tests for now since we build a quick-flavoured GHC, - # which might result in some broken perf tests? + - bash -c "export TOP=$(pwd); PATH=$TOP/toolchain/bin:$PATH hadrian/build.cabal.sh --flavour=$FLAVOUR -j`mk/detect-cpu-count.sh` test --summary-junit=./junit.xml --test-compiler=$TOP/_build/install/bin/ghc" tags: - x86_64-windows artifacts: @@ -835,6 +833,7 @@ validate-x86_64-linux-fedora27: validate-x86_64-windows-hadrian: extends: .build-windows-hadrian + stage: full-build variables: MSYSTEM: MINGW64 TEST_ENV: "x86_64-windows-hadrian" diff --git a/hadrian/bindist/Makefile b/hadrian/bindist/Makefile index 79f9a9f2f2..d043cf2425 100644 --- a/hadrian/bindist/Makefile +++ b/hadrian/bindist/Makefile @@ -71,23 +71,38 @@ endef .PHONY: install -install: install_lib install_bin install_includes -install: install_docs install_wrappers install_ghci -install: install_mingw update_package_db + +ifeq "$(TargetOS_CPP)" "mingw32" +install_bin: install_mingw install_bin_direct +else +install_bin: install_bin_libdir install_wrappers +endif + +install: install_bin install_lib install_includes +install: install_docs install_ghci update_package_db ActualBinsDir=${ghclibdir}/bin +ifeq "$(TargetOS_CPP)" "mingw32" +ActualLibsDir=${ghclibdir} +else ActualLibsDir=${ghclibdir}/lib +endif WrapperBinsDir=${bindir} # We need to install binaries relative to libraries. BINARIES = $(wildcard ./bin/*) -install_bin: +install_bin_libdir: @echo "Copying binaries to $(ActualBinsDir)" $(INSTALL_DIR) "$(ActualBinsDir)" for i in $(BINARIES); do \ cp -R $$i "$(ActualBinsDir)"; \ done +install_bin_direct: + @echo "Copying binaries to $(WrapperBinsDir)" + $(INSTALL_DIR) "$(WrapperBinsDir)" + cp ./bin/* "$(WrapperBinsDir)/" + install_ghci: @echo "Copying and installing ghci" $(CREATE_SCRIPT) '$(WrapperBinsDir)/ghci' @@ -105,7 +120,7 @@ install_lib: INCLUDES = $(wildcard ./include/*) install_includes: - @echo "Copying libraries to $(includedir)" + @echo "Copying include files to $(includedir)" $(INSTALL_DIR) "$(includedir)" for i in $(INCLUDES); do \ cp -R $$i "$(includedir)/"; \ @@ -113,34 +128,30 @@ install_includes: DOCS = $(wildcard ./docs/*) install_docs: - @echo "Copying libraries to $(docdir)" + @echo "Copying docs to $(docdir)" $(INSTALL_DIR) "$(docdir)" for i in $(DOCS); do \ cp -R $$i "$(docdir)/"; \ done BINARY_NAMES=$(shell ls ./wrappers/) -install_wrappers: - @echo "Installing Wrapper scripts" +install_wrappers: install_bin_libdir + @echo "Installing wrapper scripts" $(INSTALL_DIR) "$(WrapperBinsDir)" $(foreach p, $(BINARY_NAMES),\ $(call installscript,$p,$(WrapperBinsDir)/$p,$(WrapperBinsDir),$(ActualBinsDir),$(ActualBinsDir)/$p,$(ActualLibsDir),$(docdir),$(includedir))) PKG_CONFS = $(shell find "$(ActualLibsDir)/package.conf.d" -name '*.conf' | sed 's: :xxx:g') -update_package_db: +update_package_db: install_bin install_lib @echo "$(PKG_CONFS)" @echo "Updating the package DB" $(foreach p, $(PKG_CONFS),\ $(call patchpackageconf,$(shell echo $(notdir $p) | sed 's/-\([0-9]*[0-9]\.\)*conf//g'),$(shell echo "$p" | sed 's:xxx: :g'),$(docdir),$(shell realpath --relative-to="$(libdir)" "$(docdir)"))) '$(WrapperBinsDir)/ghc-pkg' recache -# The 'foreach' that copies the mingw directory will only trigger a copy -# when the wildcard matches, therefore only on Windows. -MINGW = $(wildcard ./mingw) install_mingw: @echo "Installing MingGW" $(INSTALL_DIR) "$(prefix)/mingw" - $(foreach d, $(MINGW),\ - cp -R ./mingw "$(prefix)") + cp -R ./mingw "$(prefix)" # END INSTALL # ---------------------------------------------------------------------- diff --git a/hadrian/src/Rules/BinaryDist.hs b/hadrian/src/Rules/BinaryDist.hs index 42efb95420..8ec3ea137d 100644 --- a/hadrian/src/Rules/BinaryDist.hs +++ b/hadrian/src/Rules/BinaryDist.hs @@ -136,10 +136,11 @@ bindistRules = do -- shipping it removeFile (bindistFilesDir -/- mingwStamp) - -- We copy the binary (<build root>/stage1/bin/haddock) to + -- We copy the binary (<build root>/stage1/bin/haddock[.exe]) to -- the bindist's bindir (<build root>/bindist/ghc-.../bin/). haddockPath <- programPath (vanillaContext Stage1 haddock) - copyFile haddockPath (bindistFilesDir -/- "bin" -/- "haddock") + copyFile haddockPath + (bindistFilesDir -/- "bin" -/- takeFileName haddockPath) -- We then 'need' all the files necessary to configure and install -- (as in, './configure [...] && make install') this build on some diff --git a/hadrian/src/Rules/Test.hs b/hadrian/src/Rules/Test.hs index 71e2f48271..3c821adf53 100644 --- a/hadrian/src/Rules/Test.hs +++ b/hadrian/src/Rules/Test.hs @@ -140,7 +140,7 @@ timeoutProgBuilder = do root <- buildRoot if windowsHost then do - prog <- programPath =<< programContext Stage1 timeout + prog <- programPath =<< programContext Stage0 timeout copyFile prog (root -/- timeoutPath) else do python <- builderPath Python @@ -154,12 +154,12 @@ timeoutProgBuilder = do needTestBuilders :: Action () needTestBuilders = do testGhc <- testCompiler <$> userSetting defaultTestArgs - when (testGhc `elem` ["stage1", "stage2", "stage3"]) needTestsuitePackages + when (testGhc `elem` ["stage1", "stage2", "stage3"]) + (needTestsuitePackages testGhc) -- | Build extra programs and libraries required by testsuite -needTestsuitePackages :: Action () -needTestsuitePackages = do - testGhc <- testCompiler <$> userSetting defaultTestArgs +needTestsuitePackages :: String -> Action () +needTestsuitePackages testGhc = do when (testGhc `elem` ["stage1", "stage2", "stage3"]) $ do let stg = stageOf testGhc allpkgs <- packages <$> flavour diff --git a/hadrian/src/Settings/Default.hs b/hadrian/src/Settings/Default.hs index 5bf9ea7e7c..aeac1434db 100644 --- a/hadrian/src/Settings/Default.hs +++ b/hadrian/src/Settings/Default.hs @@ -76,6 +76,7 @@ stage0Packages = do , transformers , unlit ] ++ [ terminfo | not windowsHost, not cross ] + ++ [ timeout | windowsHost ] ++ [ touchy | windowsHost ] -- | Packages built in 'Stage1' by default. You can change this in "UserSettings". |