diff --git a/compiler/main/Packages.hs b/compiler/main/Packages.hs index 2275267d14c3fe931f649911df39a24e4bf53cd2..dd12101bcb07d1cbcd09d6963033e626f6767859 100644 --- a/compiler/main/Packages.hs +++ b/compiler/main/Packages.hs @@ -559,13 +559,15 @@ readPackageConfig dflags conf_file = do "can't find a package database at " ++ conf_file let + -- Fix #16360: remove trailing slash from conf_file before calculting pkgroot + conf_file' = dropTrailingPathSeparator conf_file top_dir = topDir dflags - pkgroot = takeDirectory conf_file + pkgroot = takeDirectory conf_file' pkg_configs1 = map (mungePackageConfig top_dir pkgroot) proto_pkg_configs pkg_configs2 = setBatchPackageFlags dflags pkg_configs1 -- - return (conf_file, pkg_configs2) + return (conf_file', pkg_configs2) where readDirStylePackageConfig conf_dir = do let filename = conf_dir </> "package.cache" diff --git a/testsuite/tests/driver/T16360/Hello.hs b/testsuite/tests/driver/T16360/Hello.hs new file mode 100644 index 0000000000000000000000000000000000000000..56109fa8bfa32ee0d428daa4fafe3e5662970b39 --- /dev/null +++ b/testsuite/tests/driver/T16360/Hello.hs @@ -0,0 +1,3 @@ +import Test + +main = print test diff --git a/testsuite/tests/driver/T16360/Makefile b/testsuite/tests/driver/T16360/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..67dcf80ba82568d76b9cc1cd11af7b075bb0b589 --- /dev/null +++ b/testsuite/tests/driver/T16360/Makefile @@ -0,0 +1,17 @@ +TOP=../../.. +include $(TOP)/mk/boilerplate.mk +include $(TOP)/mk/test.mk + +LOCAL_PKGCONF=package.conf.d + +clean: + rm -f test/*.o test/*.hi *.o *.hi + rm -rf $(LOCAL_PKGCONF) + +.PHONY: T16360 +T16360: + @rm -rf $(LOCAL_PKGCONF) + "$(TEST_HC)" $(TEST_HC_OPTS) -this-unit-id test-1.0 -c test/Test.hs + "$(GHC_PKG)" init $(LOCAL_PKGCONF) + "$(GHC_PKG)" --no-user-package-db -f $(LOCAL_PKGCONF) register test/test.pkg -v0 + "$(TEST_HC)" $(TEST_HC_OPTS) -package-db $(LOCAL_PKGCONF)/ -c Hello.hs diff --git a/testsuite/tests/driver/T16360/all.T b/testsuite/tests/driver/T16360/all.T new file mode 100644 index 0000000000000000000000000000000000000000..1cc19459f925cc28b4171efcf5eb07f254f0a4b4 --- /dev/null +++ b/testsuite/tests/driver/T16360/all.T @@ -0,0 +1 @@ +test('T16360', [extra_files(['Hello.hs', 'test/'])], makefile_test, []) diff --git a/testsuite/tests/driver/T16360/test/Test.hs b/testsuite/tests/driver/T16360/test/Test.hs new file mode 100644 index 0000000000000000000000000000000000000000..b4d7f27dce739ef7b73732d6526c744ce6d3dc9b --- /dev/null +++ b/testsuite/tests/driver/T16360/test/Test.hs @@ -0,0 +1,4 @@ +module Test where + +test :: Int +test = 42 diff --git a/testsuite/tests/driver/T16360/test/test.pkg b/testsuite/tests/driver/T16360/test/test.pkg new file mode 100644 index 0000000000000000000000000000000000000000..f925cfe2d99c3def1700ca94dee6519f19d05c5b --- /dev/null +++ b/testsuite/tests/driver/T16360/test/test.pkg @@ -0,0 +1,8 @@ +name: test +version: 1.0 +id: test-1.0 +key: test-1.0 +exposed-modules: Test +import-dirs: ${pkgroot}/test +library-dirs: ${pkgroot}/test +exposed: True