Skip to content

cabal new-install allows linking against multiple versions of the same package when internal libraries are used #5782

Closed
@vmchale

Description

@vmchale

Due to the vector package upgrade, the following happened:

vanessa@thinkpad ~/programming 🌸 cabal new-install ats-pkg
Resolving dependencies...
Build profile: -w ghc-8.6.2 -O1
In order, the following will be built (use -v for more details):
 - ats-pkg-3.2.4.4 (lib) (requires build)
 - ats-pkg-3.2.4.4 (exe:atspkg) (requires build)
Starting     ats-pkg-3.2.4.4 (lib)
Building     ats-pkg-3.2.4.4 (lib)

Failed to build ats-pkg-3.2.4.4.
Build log (
/home/vanessa/.cabal/logs/ghc-8.6.2/ats-pkg-3.2.4.4-220240a7fc982f1ef6dbbd3d7adca7552df6a1a213963e5fccd3aa4e9777ba0d.log
):
Warning: ats-pkg.cabal:52:5: The field "build-tools" is deprecated in the
Cabal specification version 2.0. Please use 'build-tool-depends' field
Configuring library for ats-pkg-3.2.4.4..
Warning: The package has an extraneous version range for a dependency on an
internal library: ats-pkg -any && ==3.2.4.4. This version range includes the
current package but isn't needed as the current package's library will always
be used.
Warning:
    This package indirectly depends on multiple versions of the same package. This is very likely to cause a compile failure.
      package ats-pkg (ats-pkg-3.2.4.4-a0502221d0d07ee100c04ace74149f498e46682acc88ea189fea506f5623b3ee) requires dhall-1.19.1-1fe9a070c032067f2d160ed443460097fec88c08fcd38d54eede84d5563dcb39
      package ats-pkg (ats-pkg-3.2.4.4) requires dhall-1.19.1-7f45d71c84a4f197a2691eb97907b8bd119d9ca492a802e003e397032de7b119
      package dhall (dhall-1.19.1-1fe9a070c032067f2d160ed443460097fec88c08fcd38d54eede84d5563dcb39) requires serialise-0.2.1.0-5d9662694e8f9b09c2f191eb32be6eef1ece0c9136b3ad50bb8f100ea14d93fa
      package dhall (dhall-1.19.1-7f45d71c84a4f197a2691eb97907b8bd119d9ca492a802e003e397032de7b119) requires serialise-0.2.1.0-c251b18b942c982fe79f40f9864275e9a5c111ad79cc6e4d869e0de51819b2a3
      package serialise (serialise-0.2.1.0-5d9662694e8f9b09c2f191eb32be6eef1ece0c9136b3ad50bb8f100ea14d93fa) requires vector-0.12.0.1-959b3278eb03c494c9c33864bcaa5e8ecf0455b6f6d8fd11e984803a63c05b49
      package dhall (dhall-1.19.1-1fe9a070c032067f2d160ed443460097fec88c08fcd38d54eede84d5563dcb39) requires vector-0.12.0.1-959b3278eb03c494c9c33864bcaa5e8ecf0455b6f6d8fd11e984803a63c05b49
      package serialise (serialise-0.2.1.0-c251b18b942c982fe79f40f9864275e9a5c111ad79cc6e4d869e0de51819b2a3) requires vector-0.12.0.2-7479aef3e2736f944c6682efd74d870b2a80551faaa63d55fd6849324aacdd74
      package dhall (dhall-1.19.1-7f45d71c84a4f197a2691eb97907b8bd119d9ca492a802e003e397032de7b119) requires vector-0.12.0.2-7479aef3e2736f944c6682efd74d870b2a80551faaa63d55fd6849324aacdd74
Preprocessing library for ats-pkg-3.2.4.4..
Building library for ats-pkg-3.2.4.4..
[ 1 of 14] Compiling Language.ATS.Package.Build.C ( src/Language/ATS/Package/Build/C.hs, dist/build/Language/ATS/Package/Build/C.o )
[ 2 of 14] Compiling Language.ATS.Package.Compiler ( src/Language/ATS/Package/Compiler.hs, dist/build/Language/ATS/Package/Compiler.o )
[ 3 of 14] Compiling Language.ATS.Package.Config ( src/Language/ATS/Package/Config.hs, dist/build/Language/ATS/Package/Config.o )
[ 4 of 14] Compiling Language.ATS.Package.Debian ( src/Language/ATS/Package/Debian.hs, dist/build/Language/ATS/Package/Debian.o )

src/Language/ATS/Package/Debian.hs:30:49: error:
    Ambiguous occurrence ‘Interpret’
    It could refer to either ‘Dhall.Interpret’,
                             imported from ‘Dhall’ at src/Language/ATS/Package/Debian.hs:17:1-57
                          or ‘Quaalude.Interpret’,
                             imported from ‘Quaalude’ at src/Language/ATS/Package/Debian.hs:18:1-25
                             (and originally defined in ‘dhall-1.19.1:Dhall’)
   |
30 |                      deriving (Generic, Binary, Interpret)
   |                                                 ^^^^^^^^^

src/Language/ATS/Package/Debian.hs:32:27: error:
    Ambiguous occurrence ‘Interpret’
    It could refer to either ‘Dhall.Interpret’,
                             imported from ‘Dhall’ at src/Language/ATS/Package/Debian.hs:17:1-57
                          or ‘Quaalude.Interpret’,
                             imported from ‘Quaalude’ at src/Language/ATS/Package/Debian.hs:18:1-25
                             (and originally defined in ‘dhall-1.19.1:Dhall’)
   |
32 | deriving newtype instance Interpret Version
   |                           ^^^^^^^^^
cabal: Failed to build ats-pkg-3.2.4.4 (which is required by exe:atspkg from
ats-pkg-3.2.4.4). See the build log above for details.

I believe that this is due to the fact that quaalude (an internal prelude for ats-pkg) depends on dhall. As the build report above attests, quaalude was not rebuilt in light of the vector upgrade; I'm guessing that cabal tried to link the old cached quaalude against the new dhall.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions