haskell / haskell/cabal

The Grinch stole all the vowels: Odd naming in .cabal/store (macOS)

Open
#7,209 46 comments 3 reactions 0 assignees View on GitHub
blocked: upstream platform: mac re: old GHC versions type: enhancement type: user-question
Dominant language
Haskell
Stars
1.7k
Forks
750
Avg merge
4d 3h
Merged PRs (30d)
28

Description

This affects only macOS, I think.
If I look into `.cabal/store`, I see:
```
~/.cabal/store/ghc-8.10.3$ ls
Dff-0.4.0-e2417685 n-0.4.1-98d17fa3
Dff-0.4.0-e6c8ed46 nclsd-xcptns-1.0.3-7f7ef320
HTF-0.14.0.3-710f7bdf ndxd-trvrsbl-0.1-9a7dbfcd
HUnt-1.6.1.0-74fb3e3f ndxd-trvrsbl-0.1-ec48aff0
HsYAML-0.2.1.0-7c9cf1ca ndxd-trvrsbl-nstncs-0.1-be410491
QckChck-2.14.2-3e204cf1 nrdrd-cntnrs-0.2.13.0-0b73c8ca
QckChck-2.14.2-605cea58 nrdrd-cntnrs-0.2.13.0-a7a57927
ShllChck-0.7.1-f3d01607 ns-trmnl-0.11-fcd1ff58
...
```
Seriously! The Grinch stole all the vowels.
I cannot help feeling trolled by cabal v2. (Which I am still trying to learn.)
https://github.com/haskell/cabal/pull/5399#discussion_r546862382
Apparently, removing the vowels should help the Mach-O linker with its space limitations.
https://github.com/typedrat/cabal/blob/638c78e790721566780dbf75a2e6f884ceafa970/cabal-install/Distribution/Client/PackageHash.hs#L137-L145
I feels I am on the C64 again. Sure this isn't an Easter egg?

Questions:
* Just how many bytes are saved by dropping the vowels?
* Does this measure _guarantee_ that things will work? (How? And how does this fight super long package names?)
* Do thinks break without the measure?
* Is this a systematic fix of the problem?
* How does this weigh against the confusion of the users?

Odd.

Contributor guide

Open the contributing guide

Research direction

Start with cabal-install/Distribution/Client/PackageHash.hs around lines 137–145 and read the linked pull request discussion. Reproduce the macOS .cabal/store naming behavior, then establish the space savings, guarantees, and failure cases described in the issue. Done means the behavior is explained and an agreed fix or documentation change is clearly defined.

Written by the indexing model from the issue text.

Assessment

Tech stack
haskell
Domain
build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.