Skip to content

If we don't need a package, then we don't use cabal.project.local #8154

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
zlonast opened this issue May 22, 2022 · 7 comments
Open

If we don't need a package, then we don't use cabal.project.local #8154

zlonast opened this issue May 22, 2022 · 7 comments
Labels
re: project-file Concerning cabal.project files type: discussion

Comments

@zlonast
Copy link
Collaborator

zlonast commented May 22, 2022

Describe the bug
I get a warning. ld: warning: directory not found for option '-L/opt/homebrew/Cellar/xz/5.2.5/lib'
I noticed that the build for mac os throws a warning.
Then I decided to create a cabal.project.local file with path /usr/local/Cellar/xz/5.2.5/lib and was surprised that the warning was still there.
It turned out that the package is no longer needed, but now the cabal does not see the changes from the cabal.project.local.

I have found some solutions. Not good but working.
If you remove or replace a package lzma in a cabal.project, then the warning disappears.

To Reproduce
Steps to reproduce the behavior:

cabal init

add to cabal.project (that path usually use in ubuntu)

packages:
  .

package lzma
  extra-include-dirs: /opt/homebrew/Cellar/xz/5.2.5/include
  extra-lib-dirs: /opt/homebrew/Cellar/xz/5.2.5/lib

add to cabal.project.local (that path usually use in mac os)

ignore-project: True

package lzma
  extra-include-dirs: /usr/local/Cellar/xz/5.2.5/include
  extra-lib-dirs: /usr/local/Cellar/xz/5.2.5/lib

add to .cabal (we need at least one lib who using lzma, if we want to get warning)

build-depends:    
        base >=4.7 && <5
      , servant-swagger-ui
$ cabal v2-build

Expected behavior
No warning.

System information
mac os
cabal 3.6.2.0
ghc 9.0.2

@andreabedini
Copy link
Collaborator

Interestingly I cannot reproduce this warning on Linux. Despite the fact that none of /opt/homebrew/Cellar/xz/5.2.5/lib or /usr/local/Cellar/xz/5.2.5/lib exists.

But the problem stands. extra-lib-dirs and extra-include-dirs have an "append" sematic and, as both cabal.project files get read, both (pairs of) directories get added. I can see this by looking at what flags cabal has used to build lzma.

❯ cat ~/.cabal/store/ghc-8.10.7/lzma-0.0.0.3-70b060e19676f1d44df5d8f3c6ad7ec67f4722b1337e11aba82ccc51c7d0ac44/cabal-hash.txt 
pkgid: lzma-0.0.0.3
component: ComponentLib
src: af8321c3511bde3e2745093fa3bd74c642e386db7d2e7c43b3a54814f1338144
pkg-config-deps: 
deps: base-4.14.3.0, bytestring-0.10.12.0
compilerid: ghc-8.10.7
platform: x86_64-linux
shared-lib: True
stripped-exe: False
debug-info: 0
extra-lib-dirs: /opt/homebrew/Cellar/xz/5.2.5/lib /usr/local/Cellar/xz/5.2.5/lib
extra-include-dirs: /opt/homebrew/Cellar/xz/5.2.5/include /usr/local/Cellar/xz/5.2.5/include

@Mikolaj
Copy link
Member

Mikolaj commented May 23, 2022

So the problem is that project files have "append" sematics? I think this is expected and useful when people use their tiny ad-hoc cabal.project.local to supplement big checked-in cabal.project. However, this could be better documented and, perhaps, we could in addition permit "overwrite" semantics, e.g., with some special syntax, or with another file.

@zloilya: what are your thoughts as a (surprised) user?

@Mikolaj Mikolaj added type: discussion re: project-file Concerning cabal.project files labels May 23, 2022
@zlonast
Copy link
Collaborator Author

zlonast commented May 23, 2022

I think the package overwrite syntax would be a good solution for me.
But I didn't find any docs for the cabal.project.local, so it still has some magic to me.

@zlonast
Copy link
Collaborator Author

zlonast commented May 23, 2022

Initially, I just decided to go through the Nix-style Local Builds chapter, thinking that it should be rewritten(docs) in the future and maybe I should start playing with what was described in it.
I start with this thread issues6105

@Mikolaj
Copy link
Member

Mikolaj commented May 23, 2022

Splendid. Please feel free to open tickets for concrete proposals, the smaller, the better. E.g., the overwrite syntax ticket, or "document that cabal.project and cabal.project.local have append semantics" once you determine there are no tickets opened for that already (or no documentation already somewhere or it can be improved).

@jneira
Copy link
Member

jneira commented Jul 27, 2022

side question: i wonder what is the semantics of ignore-project: true in a cabal.project.local. Clearly it is not ignoring the main cabal.project

@fgaz
Copy link
Member

fgaz commented Jul 31, 2022

I think it doesn't have any effect when in a project file, like builddir and project-file, for the same reason as those

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
re: project-file Concerning cabal.project files type: discussion
Projects
None yet
Development

No branches or pull requests

5 participants