Move check-ppr and check-api-annotations to testsuite/utils
authorBen Gamari <bgamari.foss@gmail.com>
Wed, 27 Sep 2017 19:22:37 +0000 (15:22 -0400)
committerBen Gamari <ben@smart-cactus.org>
Wed, 27 Sep 2017 21:37:29 +0000 (17:37 -0400)
These are needed by the testsuite and consequently must be shipped in
the testsuite tarball to ensure that we can test binary distributions.

See #13897.

Test Plan: Validate

Reviewers: austin

Subscribers: snowleopard, rwbarton, thomie

GHC Trac Issues: #13897

Differential Revision: https://phabricator.haskell.org/D4039

13 files changed:
.gitignore
Makefile
ghc.mk
testsuite/utils/check-api-annotations/Main.hs [moved from utils/check-api-annotations/Main.hs with 100% similarity]
testsuite/utils/check-api-annotations/README [moved from utils/check-api-annotations/README with 100% similarity]
testsuite/utils/check-api-annotations/check-api-annotations.cabal [moved from utils/check-api-annotations/check-api-annotations.cabal with 100% similarity]
testsuite/utils/check-api-annotations/ghc.mk [new file with mode: 0644]
testsuite/utils/check-ppr/Main.hs [moved from utils/check-ppr/Main.hs with 100% similarity]
testsuite/utils/check-ppr/README [moved from utils/check-ppr/README with 100% similarity]
testsuite/utils/check-ppr/check-ppr.cabal [moved from utils/check-ppr/check-ppr.cabal with 100% similarity]
testsuite/utils/check-ppr/ghc.mk [new file with mode: 0644]
utils/check-api-annotations/ghc.mk [deleted file]
utils/check-ppr/ghc.mk [deleted file]

index 245b2a5..710c6bf 100644 (file)
@@ -76,6 +76,7 @@ _darcs/
 /libraries/dist-haddock/
 /rts/dist/
 /utils/*/dist*/
+/testsuite/utils/*/dist-install/
 /compiler/stage1/
 /compiler/stage2/
 /compiler/stage3/
index 8046e36..cffd4ec 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -215,13 +215,17 @@ endif
 # out-of-date, it is useful if Phabricator, via a normal `./validate` and `make
 # test`, runs each test at least once.
 .PHONY: fasttest
-fasttest:
+fasttest: testsuite_utils
        $(MAKE) -C testsuite/tests CLEANUP=1 SUMMARY_FILE=../../testsuite_summary.txt fast
 
 .PHONY: test
-test:
+test: testsuite_utils
        $(MAKE) -C testsuite/tests CLEANUP=1 SUMMARY_FILE=../../testsuite_summary.txt
 
 .PHONY: slowtest fulltest
-slowtest fulltest:
+slowtest fulltest: testsuite_utils
        $(MAKE) -C testsuite/tests CLEANUP=1 SUMMARY_FILE=../../testsuite_summary.txt slow
+
+.PHONY: testsuite_utils
+testsuite_utils:
+       $(MAKE) -f ghc.mk testsuite_utils
diff --git a/ghc.mk b/ghc.mk
index 8918441..c3edc5e 100644 (file)
--- a/ghc.mk
+++ b/ghc.mk
@@ -560,8 +560,8 @@ ghc/stage2/package-data.mk: compiler/stage2/package-data.mk
 # all the other libraries' package-data.mk files.
 utils/haddock/dist/package-data.mk: compiler/stage2/package-data.mk
 utils/ghctags/dist-install/package-data.mk: compiler/stage2/package-data.mk
-utils/check-api-annotations/dist-install/package-data.mk: compiler/stage2/package-data.mk
-utils/check-ppr/dist-install/package-data.mk: compiler/stage2/package-data.mk
+testsuite/utils/check-api-annotations/dist-install/package-data.mk: compiler/stage2/package-data.mk
+testsuite/utils/check-ppr/dist-install/package-data.mk: compiler/stage2/package-data.mk
 
 # add the final package.conf dependency: ghc-prim depends on RTS
 libraries/ghc-prim/dist-install/package-data.mk : rts/dist/package.conf.inplace
@@ -684,8 +684,6 @@ BUILD_DIRS += utils/hsc2hs
 BUILD_DIRS += utils/ghc-pkg
 BUILD_DIRS += utils/testremove
 BUILD_DIRS += utils/ghctags
-BUILD_DIRS += utils/check-api-annotations
-BUILD_DIRS += utils/check-ppr
 BUILD_DIRS += utils/ghc-cabal
 BUILD_DIRS += utils/hpc
 BUILD_DIRS += utils/runghc
@@ -695,6 +693,19 @@ BUILD_DIRS += utils/count_lines
 BUILD_DIRS += utils/compare_sizes
 BUILD_DIRS += iserv
 
+# If we are in a tree derived from a source tarball the testsuite/ directory may
+# not exist, meaning we can't build the testsuite/utils packages.
+ifeq "$(wildcard testsuite/Makefile)" ""
+HaveTestsuite = NO
+else
+HaveTestsuite = YES
+endif
+
+ifeq "$(HaveTestsuite)" "YES"
+BUILD_DIRS += testsuite/utils/check-api-annotations
+BUILD_DIRS += testsuite/utils/check-ppr
+endif
+
 # ----------------------------------------------
 # Actually include the sub-ghc.mk's
 
@@ -734,8 +745,8 @@ ifneq "$(CrossCompiling) $(Stage1Only)" "NO NO"
 # See Note [No stage2 packages when CrossCompiling or Stage1Only].
 # See Note [Stage1Only vs stage=1] in mk/config.mk.in.
 BUILD_DIRS := $(filter-out utils/ghctags,$(BUILD_DIRS))
-BUILD_DIRS := $(filter-out utils/check-api-annotations,$(BUILD_DIRS))
-BUILD_DIRS := $(filter-out utils/check-ppr,$(BUILD_DIRS))
+BUILD_DIRS := $(filter-out testsuite/utils/check-api-annotations,$(BUILD_DIRS))
+BUILD_DIRS := $(filter-out testsuite/utils/check-ppr,$(BUILD_DIRS))
 endif
 endif # CLEANING
 
@@ -1572,3 +1583,14 @@ phase_0_builds: $(utils/deriveConstants_dist_depfile_c_asm)
 
 .PHONY: phase_1_builds
 phase_1_builds: $(PACKAGE_DATA_MKS)
+
+# Various utilities in testsuite/utils which must be built before
+# the testsuite is run.
+.PHONY: testsuite_utils
+testsuite_utils:
+ifeq "$(HaveTestsuite)" "NO"
+       @echo "The testsuite/ directory appears to be unavailable."
+       @echo ""
+       @echo "If this tree is from a source tarball please download and extract"
+       @echo "the corresponding testsuite tarball."
+endif
diff --git a/testsuite/utils/check-api-annotations/ghc.mk b/testsuite/utils/check-api-annotations/ghc.mk
new file mode 100644 (file)
index 0000000..f2af7d0
--- /dev/null
@@ -0,0 +1,20 @@
+# -----------------------------------------------------------------------------
+#
+# (c) 2009 The University of Glasgow
+#
+# This file is part of the GHC build system.
+#
+# To understand how the build system works and how to modify it, see
+#      http://ghc.haskell.org/trac/ghc/wiki/Building/Architecture
+#      http://ghc.haskell.org/trac/ghc/wiki/Building/Modifying
+#
+# -----------------------------------------------------------------------------
+
+testsuite/utils/check-api-annotations_USES_CABAL                   = YES
+testsuite/utils/check-api-annotations_PACKAGE                      = check-api-annotations
+testsuite/utils/check-api-annotations_dist-install_PROGNAME        = check-api-annotations
+testsuite/utils/check-api-annotations_dist-install_INSTALL         = NO
+testsuite/utils/check-api-annotations_dist-install_INSTALL_INPLACE = YES
+$(eval $(call build-prog,testsuite/utils/check-api-annotations,dist-install,2))
+
+testsuite_utils: $(testsuite/utils/check-api-annotations_dist-install_INPLACE)
diff --git a/testsuite/utils/check-ppr/ghc.mk b/testsuite/utils/check-ppr/ghc.mk
new file mode 100644 (file)
index 0000000..62b8de6
--- /dev/null
@@ -0,0 +1,20 @@
+# -----------------------------------------------------------------------------
+#
+# (c) 2009 The University of Glasgow
+#
+# This file is part of the GHC build system.
+#
+# To understand how the build system works and how to modify it, see
+#      http://ghc.haskell.org/trac/ghc/wiki/Building/Architecture
+#      http://ghc.haskell.org/trac/ghc/wiki/Building/Modifying
+#
+# -----------------------------------------------------------------------------
+
+testsuite/utils/check-ppr_USES_CABAL                   = YES
+testsuite/utils/check-ppr_PACKAGE                      = check-ppr
+testsuite/utils/check-ppr_dist-install_PROGNAME        = check-ppr
+testsuite/utils/check-ppr_dist-install_INSTALL         = NO
+testsuite/utils/check-ppr_dist-install_INSTALL_INPLACE = YES
+$(eval $(call build-prog,testsuite/utils/check-ppr,dist-install,2))
+
+testsuite_utils: $(testsuite/utils/check-ppr_dist-install_INPLACE)
diff --git a/utils/check-api-annotations/ghc.mk b/utils/check-api-annotations/ghc.mk
deleted file mode 100644 (file)
index 61f896d..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-# -----------------------------------------------------------------------------
-#
-# (c) 2009 The University of Glasgow
-#
-# This file is part of the GHC build system.
-#
-# To understand how the build system works and how to modify it, see
-#      http://ghc.haskell.org/trac/ghc/wiki/Building/Architecture
-#      http://ghc.haskell.org/trac/ghc/wiki/Building/Modifying
-#
-# -----------------------------------------------------------------------------
-
-utils/check-api-annotations_USES_CABAL                   = YES
-utils/check-api-annotations_PACKAGE                      = check-api-annotations
-utils/check-api-annotations_dist-install_PROGNAME        = check-api-annotations
-utils/check-api-annotations_dist-install_INSTALL         = NO
-utils/check-api-annotations_dist-install_INSTALL_INPLACE = YES
-$(eval $(call build-prog,utils/check-api-annotations,dist-install,2))
diff --git a/utils/check-ppr/ghc.mk b/utils/check-ppr/ghc.mk
deleted file mode 100644 (file)
index 189b447..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-# -----------------------------------------------------------------------------
-#
-# (c) 2009 The University of Glasgow
-#
-# This file is part of the GHC build system.
-#
-# To understand how the build system works and how to modify it, see
-#      http://ghc.haskell.org/trac/ghc/wiki/Building/Architecture
-#      http://ghc.haskell.org/trac/ghc/wiki/Building/Modifying
-#
-# -----------------------------------------------------------------------------
-
-utils/check-ppr_USES_CABAL                   = YES
-utils/check-ppr_PACKAGE                      = check-ppr
-utils/check-ppr_dist-install_PROGNAME        = check-ppr
-utils/check-ppr_dist-install_INSTALL         = NO
-utils/check-ppr_dist-install_INSTALL_INPLACE = YES
-$(eval $(call build-prog,utils/check-ppr,dist-install,2))