Why does the port with USES=cabal and USE_CABAL= fail with unknown dependencies?
Gleb Popov
arrowd at freebsd.org
Mon Feb 24 06:56:03 UTC 2020
On Mon, Feb 24, 2020 at 10:30 AM Yuri <yuri at rawbw.com> wrote:
> I'm trying to port this project: https://github.com/GaloisInc/cryptol
>
> However, it still downloads dependencies during the local build, and
> fails in poudriere:
>
> Warning: No remote package servers have been specified. Usually you
> would have
> one specified in the config file.
> Resolving dependencies...
> cabal: Could not resolve dependencies:
> [__0] trying: FloatingHex-0.4 (user goal)
> [__1] trying: base-4.12.0.0/installed-4.1... (dependency of FloatingHex)
> [__2] next goal: cryptohash-sha1 (user goal)
> [__2] rejecting: cryptohash-sha1-0.11.100.1 (conflict:
> base==4.12.0.0/installed-4.1..., cryptohash-sha1 => base>=4.5 && <4.10)
> [__2] fail (backjumping, conflict set: base, cryptohash-sha1)
>
Here it says that cryptohash-sha1-0.11.100.1 requires base>=4.5 && <4.10,
but our GHC ships 4.12, IIRC.
The proper way to fix it is to check whether the problem package has
additional revisions. Go to
https://hackage.haskell.org/package/cryptohash-sha1 and look at the right:
Revised Revision 4
<https://hackage.haskell.org/package/cryptohash-sha1-0.11.100.1/revisions/>
made by HerbertValerioRiedel
<https://hackage.haskell.org/user/HerbertValerioRiedel> at Sun Sep 1
09:25:44 UTC 2019
This means, USE_CABAL entry for this package should be
"cryptohash-sha1-0.11.100.1_4".
Are you making up USE_CABAL manually? There is actually an automated
procedure to do that:
1. Define PORTNAME, PORTVERSION and USES=cabal
2. Run `make cabal-extract`. This will fetch the package using
devel/hs-cabal-install
3. Run `make cabal-extract-deps`. This will fetch and build all package
dependencies, including transitive ones.
4. Run make `make-use-cabal`. This will generate intial USE_CABAL string.
Copy&paste it into the port.
5. Run make `make-use-cabal-revs`. This will check packages from current
USE_CABAL for available revisions and generate new string. Copy&paste it
into the port.
6. Run `make makesum && make clean` and try building the port the usual way.
This procedure misses some packages sometimes (hsc2hs, for instance), but
these can quickly be added manually.
After searching the rest of the dependency tree exhaustively, these were the
> goals I've had most trouble fulfilling: FloatingHex, base, cryptohash-sha1
>
>
> For example, FloatingHex-0.4 is in USE_CABAL but it still downloads it.
>
> How to correct this?
>
>
> Thank you,
>
> Yuri
>
>
> -------Makefile-------
>
> PORTNAME= cryptol
> DISTVERSION= 2.8.0
> CATEGORIES= security lang haskell
>
> MAINTAINER= yuri at FreeBSD.org
> COMMENT= Language of cryptography
>
> LICENSE= BSD3CLAUSE
>
> USES= cabal
>
> USE_CABAL= \
> FloatingHex-0.4 \
> GraphSCC-1.0.4 \
> QuickCheck-2.13.2 \
> alex-3.2.5 \
> ansi-terminal-0.10.3 \
> async-2.2.2 \
> base-compat-0.10.5 \
> base-orphans-0.8.2 \
> blaze-builder-0.4.1.0 \
> blaze-html-0.9.1.2 \
> blaze-markup-0.8.2.3 \
> colour-2.3.5 \
> crackNum-2.3 \
> cryptohash-sha1-0.11.100.1 \
> generic-deriving-1.13.1 \
> gitrev-1.3.1 \
> happy-1.19.12 \
> hashable-1.3.0.0 \
> heredoc-0.2.0.0 \
> monad-control-1.0.2.3 \
> monadLib-3.10 \
> panic-0.4.0.1 \
> primitive-0.7.0.0 \
> random-1.1 \
> sbv-8.6 \
> simple-smt-0.9.4 \
> splitmix-0.0.3 \
> strict-0.3.2 \
> syb-0.7.1 \
> tf-random-0.5 \
> th-abstraction-0.3.2.0 \
> transformers-base-0.4.5.2 \
> transformers-compat-0.6.5
>
> EXECUTABLES= ${PORTNAME}
>
> PLIST_FILES= bin/${PORTNAME}
>
> .include <bsd.port.mk>
>
> _______________________________________________
> freebsd-haskell at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-haskell
> To unsubscribe, send any mail to "freebsd-haskell-unsubscribe at freebsd.org"
>
More information about the freebsd-haskell
mailing list