From 2b6995d9ceb176c02651c1a31d25cc5105c8621f Mon Sep 17 00:00:00 2001 From: Gershom Bazerman Date: Sat, 1 Oct 2022 16:11:44 -0400 Subject: [PATCH 1/8] prepend rather than append extra prog path --- Cabal/src/Distribution/Simple/Configure.hs | 4 ++-- cabal-install/src/Distribution/Client/ProjectPlanning.hs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Cabal/src/Distribution/Simple/Configure.hs b/Cabal/src/Distribution/Simple/Configure.hs index 26022b9aa0b..144b0d89b06 100644 --- a/Cabal/src/Distribution/Simple/Configure.hs +++ b/Cabal/src/Distribution/Simple/Configure.hs @@ -849,9 +849,9 @@ mkProgramDb cfg initialProgramDb = programDb . userSpecifyPaths (configProgramPaths cfg) . setProgramSearchPath searchpath $ initialProgramDb - searchpath = getProgramSearchPath initialProgramDb - ++ map ProgramSearchPathDir + searchpath = map ProgramSearchPathDir (fromNubList $ configProgramPathExtra cfg) + ++ getProgramSearchPath initialProgramDb -- ----------------------------------------------------------------------------- -- Helper functions for configure diff --git a/cabal-install/src/Distribution/Client/ProjectPlanning.hs b/cabal-install/src/Distribution/Client/ProjectPlanning.hs index 07ac42e4ec0..162183c1027 100644 --- a/cabal-install/src/Distribution/Client/ProjectPlanning.hs +++ b/cabal-install/src/Distribution/Client/ProjectPlanning.hs @@ -444,8 +444,8 @@ configureCompiler verbosity progdb = userSpecifyPaths (Map.toList (getMapLast packageConfigProgramPaths)) . modifyProgramSearchPath - (++ [ ProgramSearchPathDir dir - | dir <- fromNubList packageConfigProgramPathExtra ]) + ([ ProgramSearchPathDir dir + | dir <- fromNubList packageConfigProgramPathExtra ] ++) $ defaultProgramDb From 85b64863fe2dfda2f9912a9f687cb2fc3879ad90 Mon Sep 17 00:00:00 2001 From: Gershom Bazerman Date: Fri, 21 Oct 2022 18:13:27 -0400 Subject: [PATCH 2/8] changelog --- changelog.d/pr-8506 | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 changelog.d/pr-8506 diff --git a/changelog.d/pr-8506 b/changelog.d/pr-8506 new file mode 100644 index 00000000000..445f2320e69 --- /dev/null +++ b/changelog.d/pr-8506 @@ -0,0 +1,7 @@ +synopsis: prepend rather than append extra prog path +packages: Cabal +prs: #8506 +issues: #6304 +description: { + Prepends the extra-prog-path to the system path rather than appending, to allow binaries in the extra path to override defaults. +} From e02d5dded010f14a5c2d4b4d4c97af687478a76e Mon Sep 17 00:00:00 2001 From: Gershom Bazerman Date: Thu, 29 Dec 2022 22:39:20 -0500 Subject: [PATCH 3/8] test --- .../PackageTests/ExtraProgPath/MyLibrary.hs | 1 + .../PackageTests/ExtraProgPath/cabal.project | 1 + .../PackageTests/ExtraProgPath/my.cabal | 20 +++++++++++++++++++ .../PackageTests/ExtraProgPath/pkg-config | 3 +++ .../PackageTests/ExtraProgPath/setup.out | 11 ++++++++++ .../PackageTests/ExtraProgPath/setup.test.hs | 6 ++++++ 6 files changed, 42 insertions(+) create mode 100644 cabal-testsuite/PackageTests/ExtraProgPath/MyLibrary.hs create mode 100644 cabal-testsuite/PackageTests/ExtraProgPath/cabal.project create mode 100644 cabal-testsuite/PackageTests/ExtraProgPath/my.cabal create mode 100755 cabal-testsuite/PackageTests/ExtraProgPath/pkg-config create mode 100644 cabal-testsuite/PackageTests/ExtraProgPath/setup.out create mode 100644 cabal-testsuite/PackageTests/ExtraProgPath/setup.test.hs diff --git a/cabal-testsuite/PackageTests/ExtraProgPath/MyLibrary.hs b/cabal-testsuite/PackageTests/ExtraProgPath/MyLibrary.hs new file mode 100644 index 00000000000..a51c414bcd2 --- /dev/null +++ b/cabal-testsuite/PackageTests/ExtraProgPath/MyLibrary.hs @@ -0,0 +1 @@ +module MyLibrary () where diff --git a/cabal-testsuite/PackageTests/ExtraProgPath/cabal.project b/cabal-testsuite/PackageTests/ExtraProgPath/cabal.project new file mode 100644 index 00000000000..5a93e28e878 --- /dev/null +++ b/cabal-testsuite/PackageTests/ExtraProgPath/cabal.project @@ -0,0 +1 @@ +packages: *.cabal \ No newline at end of file diff --git a/cabal-testsuite/PackageTests/ExtraProgPath/my.cabal b/cabal-testsuite/PackageTests/ExtraProgPath/my.cabal new file mode 100644 index 00000000000..2ddc23e47a9 --- /dev/null +++ b/cabal-testsuite/PackageTests/ExtraProgPath/my.cabal @@ -0,0 +1,20 @@ +name: CheckExtraProgPath +version: 0.1 +license: BSD3 +license-file: LICENSE +author: Alexander Vershilov +maintainer: Alexander Vershilov +synopsis: Check Extra Prog Path +category: PackageTests +build-type: Simple +cabal-version: 2.0 + +description: + Check that Cabal recognizes an override of the prog path. + +Library + pkgconfig-depends: zlib + default-language: Haskell2010 + build-depends: base <5.0 + exposed-modules: + MyLibrary diff --git a/cabal-testsuite/PackageTests/ExtraProgPath/pkg-config b/cabal-testsuite/PackageTests/ExtraProgPath/pkg-config new file mode 100755 index 00000000000..9f1e176f30d --- /dev/null +++ b/cabal-testsuite/PackageTests/ExtraProgPath/pkg-config @@ -0,0 +1,3 @@ +#/usr/bin/sh + +echo "doh"; diff --git a/cabal-testsuite/PackageTests/ExtraProgPath/setup.out b/cabal-testsuite/PackageTests/ExtraProgPath/setup.out new file mode 100644 index 00000000000..c986363b576 --- /dev/null +++ b/cabal-testsuite/PackageTests/ExtraProgPath/setup.out @@ -0,0 +1,11 @@ +# cabal v2-build +Warning: cannot determine version of /./pkg-config : +"doh/n" +Warning: cannot determine version of /./pkg-config : +"doh/n" +Resolving dependencies... +Error: cabal: Could not resolve dependencies: +[__0] next goal: CheckExtraProgPath (user goal) +[__0] rejecting: CheckExtraProgPath-0.1 (conflict: pkg-config package zlib-any, not found in the pkg-config database) +[__0] fail (backjumping, conflict set: CheckExtraProgPath) +After searching the rest of the dependency tree exhaustively, these were the goals I've had most trouble fulfilling: CheckExtraProgPath (2) diff --git a/cabal-testsuite/PackageTests/ExtraProgPath/setup.test.hs b/cabal-testsuite/PackageTests/ExtraProgPath/setup.test.hs new file mode 100644 index 00000000000..1d31d628683 --- /dev/null +++ b/cabal-testsuite/PackageTests/ExtraProgPath/setup.test.hs @@ -0,0 +1,6 @@ +import Test.Cabal.Prelude + +-- Test that setup shows all the 'autogen-modules' warnings. +main = cabalTest $ do + cdir <- testCurrentDir `fmap` getTestEnv + fails $ cabal "v2-build" ["--extra-prog-path="++cdir] From a21c039775badcf135a6f3f25f8c52606131bc00 Mon Sep 17 00:00:00 2001 From: Gershom Bazerman Date: Thu, 29 Dec 2022 22:42:50 -0500 Subject: [PATCH 4/8] skip on windows --- cabal-testsuite/PackageTests/ExtraProgPath/setup.test.hs | 1 + 1 file changed, 1 insertion(+) diff --git a/cabal-testsuite/PackageTests/ExtraProgPath/setup.test.hs b/cabal-testsuite/PackageTests/ExtraProgPath/setup.test.hs index 1d31d628683..444d5d708d6 100644 --- a/cabal-testsuite/PackageTests/ExtraProgPath/setup.test.hs +++ b/cabal-testsuite/PackageTests/ExtraProgPath/setup.test.hs @@ -2,5 +2,6 @@ import Test.Cabal.Prelude -- Test that setup shows all the 'autogen-modules' warnings. main = cabalTest $ do + skipIfWindows cdir <- testCurrentDir `fmap` getTestEnv fails $ cabal "v2-build" ["--extra-prog-path="++cdir] From b7cf63a5dc6dbf24c658f01581abbf39f485f326 Mon Sep 17 00:00:00 2001 From: Gershom Bazerman Date: Fri, 30 Dec 2022 00:03:24 -0500 Subject: [PATCH 5/8] update test --- cabal-testsuite/PackageTests/ExtraProgPath/pkg-config | 2 +- cabal-testsuite/PackageTests/ExtraProgPath/setup.out | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cabal-testsuite/PackageTests/ExtraProgPath/pkg-config b/cabal-testsuite/PackageTests/ExtraProgPath/pkg-config index 9f1e176f30d..323de7f2882 100755 --- a/cabal-testsuite/PackageTests/ExtraProgPath/pkg-config +++ b/cabal-testsuite/PackageTests/ExtraProgPath/pkg-config @@ -1,3 +1,3 @@ #/usr/bin/sh -echo "doh"; +exit 1; diff --git a/cabal-testsuite/PackageTests/ExtraProgPath/setup.out b/cabal-testsuite/PackageTests/ExtraProgPath/setup.out index c986363b576..b0edde0184f 100644 --- a/cabal-testsuite/PackageTests/ExtraProgPath/setup.out +++ b/cabal-testsuite/PackageTests/ExtraProgPath/setup.out @@ -1,8 +1,8 @@ # cabal v2-build Warning: cannot determine version of /./pkg-config : -"doh/n" +"" Warning: cannot determine version of /./pkg-config : -"doh/n" +"" Resolving dependencies... Error: cabal: Could not resolve dependencies: [__0] next goal: CheckExtraProgPath (user goal) From 7848c911c2c482a93053e965a9cbb5a9cd3c48f0 Mon Sep 17 00:00:00 2001 From: Gershom Bazerman Date: Mon, 2 Jan 2023 12:57:24 -0500 Subject: [PATCH 6/8] fix test --- cabal-testsuite/PackageTests/ExtraProgPath/pkg-config | 2 +- cabal-testsuite/PackageTests/ExtraProgPath/setup.test.hs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cabal-testsuite/PackageTests/ExtraProgPath/pkg-config b/cabal-testsuite/PackageTests/ExtraProgPath/pkg-config index 323de7f2882..7c5fafbf0ca 100755 --- a/cabal-testsuite/PackageTests/ExtraProgPath/pkg-config +++ b/cabal-testsuite/PackageTests/ExtraProgPath/pkg-config @@ -1,3 +1,3 @@ -#/usr/bin/sh +#!/usr/bin/sh exit 1; diff --git a/cabal-testsuite/PackageTests/ExtraProgPath/setup.test.hs b/cabal-testsuite/PackageTests/ExtraProgPath/setup.test.hs index 444d5d708d6..17652c5e1a6 100644 --- a/cabal-testsuite/PackageTests/ExtraProgPath/setup.test.hs +++ b/cabal-testsuite/PackageTests/ExtraProgPath/setup.test.hs @@ -1,7 +1,7 @@ import Test.Cabal.Prelude --- Test that setup shows all the 'autogen-modules' warnings. +-- Test that extra-prog-path overrides the path for pkg-config main = cabalTest $ do - skipIfWindows + -- skipIfWindows cdir <- testCurrentDir `fmap` getTestEnv fails $ cabal "v2-build" ["--extra-prog-path="++cdir] From de8ddd2efe53449ba1e05469f7687953365d0af5 Mon Sep 17 00:00:00 2001 From: gbaz Date: Mon, 2 Jan 2023 14:41:18 -0500 Subject: [PATCH 7/8] reenable windows skip --- cabal-testsuite/PackageTests/ExtraProgPath/setup.test.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cabal-testsuite/PackageTests/ExtraProgPath/setup.test.hs b/cabal-testsuite/PackageTests/ExtraProgPath/setup.test.hs index 17652c5e1a6..d3d7413d23e 100644 --- a/cabal-testsuite/PackageTests/ExtraProgPath/setup.test.hs +++ b/cabal-testsuite/PackageTests/ExtraProgPath/setup.test.hs @@ -2,6 +2,6 @@ import Test.Cabal.Prelude -- Test that extra-prog-path overrides the path for pkg-config main = cabalTest $ do - -- skipIfWindows + skipIfWindows cdir <- testCurrentDir `fmap` getTestEnv fails $ cabal "v2-build" ["--extra-prog-path="++cdir] From 3d75656aad1c284edd3dc6be0d24ba810f29f5c0 Mon Sep 17 00:00:00 2001 From: gbaz Date: Tue, 3 Jan 2023 17:57:42 -0500 Subject: [PATCH 8/8] Update setup.test.hs --- cabal-testsuite/PackageTests/ExtraProgPath/setup.test.hs | 1 + 1 file changed, 1 insertion(+) diff --git a/cabal-testsuite/PackageTests/ExtraProgPath/setup.test.hs b/cabal-testsuite/PackageTests/ExtraProgPath/setup.test.hs index d3d7413d23e..80ee56f6287 100644 --- a/cabal-testsuite/PackageTests/ExtraProgPath/setup.test.hs +++ b/cabal-testsuite/PackageTests/ExtraProgPath/setup.test.hs @@ -2,6 +2,7 @@ import Test.Cabal.Prelude -- Test that extra-prog-path overrides the path for pkg-config main = cabalTest $ do + -- skipped on windows because using a script to dummy up an executable doesn't work the same. skipIfWindows cdir <- testCurrentDir `fmap` getTestEnv fails $ cabal "v2-build" ["--extra-prog-path="++cdir]