-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi!
I've got a patch for ghc-pkg show broken packages (due to missing
dependencies) with a new command 'check', and also indicate brocken
packages when using the command 'list'.
ghc-pkg: New command 'check' and made 'list' indicate broken packages
Command 'check': print a list of all packages that are broken and
which dependencies they are missing.
Command 'list': updated by making it put brackets around broken
packages.
I hope you like it.
Cheers,
Lennart Kolmodin
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFFT6jC4txYG4KUCuERAm2PAKCqNZPL8C3iWpJlAHki/LDe9IWilACeIWpN
Lh9f7Gs4hlnsKH4BSPiUe2s=
=nw5u
-----END PGP SIGNATURE-----
New patches:
[ghc-pkg: New command 'check' and made 'list' indicate broken packages
Lennart Kolmodin <[EMAIL PROTECTED]>**20061105183851
Command 'check': print a list of all packages that are broken and
which dependencies they are missing.
Command 'list': updated by making it put brackets around broken
packages.
] {
hunk ./utils/ghc-pkg/Main.hs 138
- "print output in easy-to-parse format when running command 'list'"
+ "print output in easy-to-parse format for some commands"
hunk ./utils/ghc-pkg/Main.hs 174
+ " Accepts the --simple-output flag.\n" ++
hunk ./utils/ghc-pkg/Main.hs 179
+ " $p check\n" ++
+ " Check the consistency of package depenencies and list broken
packages.\n" ++
+ " Accepts the --simple-output flag.\n" ++
+ "\n" ++
hunk ./utils/ghc-pkg/Main.hs 244
+ ["check"] -> do
+ checkConsistency cli
hunk ./utils/ghc-pkg/Main.hs 486
- show_func = if simple_output then show_easy else mapM_ show_regular
+ pkg_map = map (\p -> (package p, p)) $ concatMap snd db_stack
+ show_func = if simple_output then show_simple else mapM_ (show_normal
pkg_map)
hunk ./utils/ghc-pkg/Main.hs 491
- where show_regular (db_name,pkg_confs) =
+ where show_normal pkg_map (db_name,pkg_confs) =
hunk ./utils/ghc-pkg/Main.hs 493
- text (db_name ++ ":") $$ nest 4 packages
+ text db_name <> comma $$ nest 4 packages
hunk ./utils/ghc-pkg/Main.hs 497
+ | isBrokenPackage p pkg_map = braces doc
hunk ./utils/ghc-pkg/Main.hs 502
- show_easy db_stack = do
+ show_simple db_stack = do
hunk ./utils/ghc-pkg/Main.hs 580
+
+--
-----------------------------------------------------------------------------
+-- Check: Check consistency of installed packages
+
+checkConsistency :: [Flag] -> IO ()
+checkConsistency flags = do
+ db_stack <- getPkgDatabases False flags
+ let pkgs = map (\p -> (package p, p)) $ concatMap snd db_stack
+ broken_pkgs = do
+ (pid, p) <- pkgs
+ let broken_deps = missingPackageDeps p pkgs
+ guard (not . null $ broken_deps)
+ return (pid, broken_deps)
+ mapM_ (putStrLn . render . show_func) broken_pkgs
+ where
+ show_func | FlagSimpleOutput `elem` flags = show_simple
+ | otherwise = show_normal
+ show_simple (pid,deps) =
+ text (showPackageId pid) <> colon
+ <+> fsep (punctuate comma (map (text . showPackageId) deps))
+ show_normal (pid,deps) =
+ text "package" <+> text (showPackageId pid) <+> text "has missing
dependencies:"
+ $$ nest 4 (fsep (punctuate comma (map (text . showPackageId) deps)))
+
+missingPackageDeps :: InstalledPackageInfo
+ -> [(PackageIdentifier, InstalledPackageInfo)]
+ -> [PackageIdentifier]
+missingPackageDeps pkg pkg_map =
+ [ d | d <- depends pkg, isNothing (lookup d pkg_map)] ++
+ [ d | d <- depends pkg, Just p <- return (lookup d pkg_map), isBrokenPackage
p pkg_map]
+
+isBrokenPackage :: InstalledPackageInfo -> [(PackageIdentifier,
InstalledPackageInfo)] -> Bool
+isBrokenPackage pkg pkg_map = not . null $ missingPackageDeps pkg pkg_map
+
+
}
Context:
[Various debugging print changes; nothing exciting
[EMAIL PROTECTED]
[Tidy up substitutions
[EMAIL PROTECTED]
The new simplifer stuff exposed the fact that the invariants on the
TvSubstEnv and IdSubstEnv were insufficiently explicit. (Resulted in
a bug found by Sam Brosnon.)
This patch fixes the bug, and tries to document the invariants pretty
thoroughly. See
Note [Extending the TvSubst] in Type
Note [Extenting the Subst] in CoreSubst
(Most of the new lines are comments.)
]
[Get External Core (-fext-core) working with readline
Samuel Bronson <[EMAIL PROTECTED]>**20061101003649
Had to add support for dynamic C calls and for foreign labels (Addr#
constants). Actually I only did the printing side -- parsing is not
done yet. But at least now you can build the libraries with -fext-core.
I also got the function arrow to print out properly again (it was
printing fully-qualified and z-coded!)
I also added a field for calling convention name to the External
data constructor in ExternalCore.Exp (for static C calls).
I'm not exactly sure where to document all of this, so I haven't done
that, though I did comment the code a bit.
]
[Remove pre-5.04 code
Ian Lynagh <[EMAIL PROTECTED]>**20061024011026]
[Major overhaul of the Simplifier
[EMAIL PROTECTED]
This big patch completely overhauls the Simplifier. The simplifier
had grown old and crufty, and was hard to understand and maintain.
This new version is still quite complicated, because the simplifier
does a lot, but it's much easier to understand, for me at least.
It does mean that I have touched almost every line of the simplifier,
so the diff is a large one.
Big changes are these
* When simplifying an Expr we generate a simplified Expr plus a
bunch of "floats", which are bindings that have floated out
of the Expr. Before, this float stuff was returned separately,
but not they are embedded in the SimplEnv, which makes the
plumbing much easier and more robust. In particular, the
SimplEnv already meaintains the "in-scope set", and making
that travel with the floats helps to ensure that we always
use the right in-scope set.
This change has a pervasive effect.
* Rather than simplifying the args of a call before trying rules
and inlining, we now defer simplifying the args until both
rules and inlining have failed, so we're going to leave a
call in the result. This avoids the risk of repeatedly
simplifying an argument, which was handled by funny ad-hoc
flags before.
The downside is that we must apply the substitution to the args before
rule-matching; and if thep rule doesn't match that is wasted work.
But having any rules at all is the exception not the rule, and the
substitution is lazy, so we only substitute until a no-match is found.
The code is much more elegant though.
* A SimplCont is now more zipper-like. It used to have an embedded
function, but that was a bit hard to think about, and now it's
nice and consistent. The relevant constructors are StrictArg
and StrictBind
* Each Rule now has an *arity* (gotten by CoreSyn.ruleArity), which
tells how many arguments it matches against. This entailed adding
a field ru_nargs to a BuiltinRule. And that made me look at
PrelRules; I did quite a bit of refactoring in the end, so the
diff in PrelRules looks much biggger than it really is.
* A little refactoring in OccurAnal. The key change is that in
the RHS of x = y `cast` co
we regard 'y' as "many", so that it doesn't get inlined into
the RHS of x. This allows x to be inlined elsewhere. It's
very like the existing situation for
x = Just y
where we treat 'y' as "many".
]
[Improve error message from ghc --make when filename and modulename differ
[EMAIL PROTECTED]
[Improve handling of unused imports (test is mod75)
[EMAIL PROTECTED]
[Remove unused lookupDeprec function
[EMAIL PROTECTED]
[Fix handling of non-in-scope exports (fixes test mod7)
[EMAIL PROTECTED]
[Comments and layout only
[EMAIL PROTECTED]
[import Maybes wibble
[EMAIL PROTECTED]
[add a few #includes to make it compile
[EMAIL PROTECTED]
[Trim imports
[EMAIL PROTECTED]
[Default the kind of unconstrained meta-type variables before tcSimplifyTop
[EMAIL PROTECTED]
This patch fixes a long standing bug, Trac #179,
and a recently reported one, Trac #963.
The problem in both cases was an unconstrained type variable 'a', of kind
argTypeKind (printed "??") or openTypeKind ("?"). At top level we now default
the kind of such variables to liftedTypeKind ("*"). This is important because
then instance declarations can match it. The defaulting function is called
TcMType.zonkTopTyVar, and is commented. (Most of the extra lines in the
patch are comments!)
]
[Comments and layout only
[EMAIL PROTECTED]
[Minor refactoring
[EMAIL PROTECTED]
[Remove unused import
[EMAIL PROTECTED]
[Comments only
[EMAIL PROTECTED]
[Make idInfo fail more informatively on TyVars
[EMAIL PROTECTED]
[Improve error message (push to 6.6 branch)
[EMAIL PROTECTED]
[Fix error reporting for contexts during deriving (Trac 958)
[EMAIL PROTECTED]
When doing the fixpoint iteration for 'deriving' we have to be careful
not to end up in a loop, even if we have -fallow-undecidable-instances.
Test is tcfail169
]
[Fix a long-standing but obscure bug in worker-wrapper generation
[EMAIL PROTECTED]
Worker/wrapper generation sometimes has to add a dummy void (State#) argument
to retain laziness. But when generating the strictness signature for the
worker, I forgot to take account of the extra argument, resulting in a
bogus strictness signature.
Result, chaos. Trac 317 shows this up, and this patch fixes it.
]
[Move --help, --version etc to 4.4 (modes) because that is what they really are
[EMAIL PROTECTED]
[remove the *.raw files
Simon Marlow <[EMAIL PROTECTED]>**20061027152129]
[improve the diagnostic generated by memInventory() for a memory leak
Simon Marlow <[EMAIL PROTECTED]>**20061027133611]
[count mut-list bytes, not words
Simon Marlow <[EMAIL PROTECTED]>**20061027133445]
[fix calculation of GC Work for 6.6+
Simon Marlow <[EMAIL PROTECTED]>**20061027103439]
[copyright updates and add Commentary links
Simon Marlow <[EMAIL PROTECTED]>**20061026092536]
[rename spin lock functions, and use macros for non-THREADED_RTS
Simon Marlow <[EMAIL PROTECTED]>**20061026091814]
[Remove PAR/GRAN code from the storage manager
Simon Marlow <[EMAIL PROTECTED]>**20061025111114
]
[markRootPtrTable: write out type in full instead of using evac_fn typedef
Simon Marlow <[EMAIL PROTECTED]>**20061026085418
Fixes stage 2 build with -fvia-C
]
[an expression with a TickBox round it is not in HNF.
[EMAIL PROTECTED]
[Adding arrows to the acceptable code for hpc
[EMAIL PROTECTED]
[fixing type error inside Hpc inc; we had a 32 bit '1'.
[EMAIL PROTECTED]
[Improving error message in CmmLint
[EMAIL PROTECTED]
[Changing Main.tix to <prog_name>.tix in the Hpc RTS
[EMAIL PROTECTED]
[Add pointer to coding conventions to HACKING
Manuel M T Chakravarty <[EMAIL PROTECTED]>**20061025164331]
[6.4 compatiblity
[EMAIL PROTECTED]
[Haskell Program Coverage
[EMAIL PROTECTED]
This large checkin is the new ghc version of Haskell
Program Coverage, an expression-level coverage tool for Haskell.
Parts:
- Hpc.[ch] - small runtime support for Hpc; reading/writing *.tix files.
- Coverage.lhs - Annotates the HsSyn with coverage tickboxes.
- New Note's in Core,
- TickBox -- ticked on entry to sub-expression
- BinaryTickBox -- ticked on exit to sub-expression, depending
-- on the boolean result.
- New Stg level TickBox (no BinaryTickBoxes, though)
You can run the coverage tool with -fhpc at compile time.
Main must be compiled with -fhpc.
]
[fix 5.04 compile
Simon Marlow <[EMAIL PROTECTED]>**20061024133943]
[fix indentation wibble to make it compile with 5.04
Simon Marlow <[EMAIL PROTECTED]>**20061024122800]
[Re-enable TABLES_NEXT_TO_CODE for powerpc (was accidentally disabled)
[EMAIL PROTECTED]
[Split GC.c, and move storage manager into sm/ directory
Simon Marlow <[EMAIL PROTECTED]>**20061024091357
In preparation for parallel GC, split up the monolithic GC.c file into
smaller parts. Also in this patch (and difficult to separate,
unfortunatley):
- Don't include Stable.h in Rts.h, instead just include it where
necessary.
- consistently use STATIC_INLINE in source files, and INLINE_HEADER
in header files. STATIC_INLINE is now turned off when DEBUG is on,
to make debugging easier.
- The GC no longer takes the get_roots function as an argument.
We weren't making use of this generalisation.
]
[fix a printf format warning
Simon Marlow <[EMAIL PROTECTED]>**20061024091323]
[add prototypes for exitHashTable()
Simon Marlow <[EMAIL PROTECTED]>**20061020102934]
[remove ^Ms
Simon Marlow <[EMAIL PROTECTED]>**20061019141218]
[add pure spin locks
Simon Marlow <[EMAIL PROTECTED]>**20061019135620]
[comments only: document allocateLocal()
Simon Marlow <[EMAIL PROTECTED]>**20061019101200]
[rename allocated_bytes() to allocatedBytes()
Simon Marlow <[EMAIL PROTECTED]>**20061019101129]
[remove performGCWithRoots()
Simon Marlow <[EMAIL PROTECTED]>**20061019101102
I don't think this can ever be useful, because to add more roots you
need to do it consistently for every GC. The right way to add roots
is to use newStablePtr.
]
[Bump the HEAD to 6.7
Ian Lynagh <[EMAIL PROTECTED]>**20061024003553]
[Clean up debugging code in RnNames
Manuel M T Chakravarty <[EMAIL PROTECTED]>**20061023180503]
[wibble in parseStaticFlags
Simon Marlow <[EMAIL PROTECTED]>**20061023145817
should fix profiling and unreg in HEAD
]
[Improve error messages for indexed types
Manuel M T Chakravarty <[EMAIL PROTECTED]>**20061022171212]
[A little abstraction
[EMAIL PROTECTED]
[Fix handling of family instances in the presense of this doc stuff
Manuel M T Chakravarty <[EMAIL PROTECTED]>**20061022004904
- Not sure whether I do the right thing, because I don't understand the
doc stuff. However, the original code was definitely wrong and
breaking the renaming of family instance declarations.
- The important point is that in
data instance T pats = rhs
T is *not* a defining occurence of T (similarly as C is not a defining
occurence in "instance C Int").
]
[TAG 2006-10-22
Ian Lynagh <[EMAIL PROTECTED]>**20061022003640]
Patch bundle hash:
593652f45ace4b98d84a5ce4600e59bf0be6dd52
_______________________________________________
Cvs-ghc mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/cvs-ghc