Skip to content

Use IPids instead of package keys in HPC tix files

With GHC 7.10.2, HPC module names are stored in the format "package_key/Module.Name", rather than "package_id/Module.Name". In stack, we restrict the coverage results to just the library modules by using the "--include" flag. For GHC 7.10, this means I need to ask ghc-pkg what the package key is in order to figure out what to pass in for "--include" (see this issue: https://github.com/commercialhaskell/stack/issues/785).

I thought this was done correctly, but now I'm seeing some cases where coverage is reporting (0/0) due to the wrong package key being passed in... I think I need to run the ghc-pkg query with the package's ipid rather than name.. So, I need to have the correct ipid somewhere, in order to run ghc-pkg describe, parse its results to find out what the package key is, and then finally pass this in as a CLI argument. The hpc program's CLI is already woefully error-prone (see #10951), but this makes it plain hellish.

Is there a better way to do what I need to do here?

I think the right approach to resolving this is to put the full ipid in the HPC files. Then, the hpc program should be modified to allow "--include" argument to take multiple package identification formats - ipid, package identifier, or package name. This should also make it possible to remove the explici

If the full package name was included, I could at least do some custom tix file munging based on just the package name. As things stand, the only way I can meaningfully operate on tix files is if I have the correct package key. There isn't enough information in the files to perform operations based on package name.

Edited by Michael Sloan
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information