summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml7
-rw-r--r--hadrian/bindist/Makefile39
-rw-r--r--hadrian/src/Rules/BinaryDist.hs5
-rw-r--r--hadrian/src/Rules/Test.hs10
-rw-r--r--hadrian/src/Settings/Default.hs1
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".