[Hackage] #370: Check for use of -X flags on upload

#370: Check for use of -X flags on upload ----------------------------+----------------------------------------------- Reporter: guest | Owner: Type: defect | Status: new Priority: normal | Milestone: HackageDB Component: Cabal library | Version: HEAD Severity: normal | Keywords: Difficulty: normal | Ghcversion: 6.8.2 Platform: | ----------------------------+----------------------------------------------- We'd like to make it possible to ensure all code on hackage lists precisely the -X extensions it uses. This kind of thing -XEmptyDataDecls -XTypeSynonymInstances -XMultiParamTypeClasses -XFlexibleInstances -XRank2Types -XScopedTypeVariables -XDeriveDataTypeable Now, these should be listed in both the .cabal file, and in individual modules that require the extensions. We can check this by loading the modules in ghci. The end result: we'd be able to filter on extensions. Researchers would be able to see precisely which extensions are used, and in what packages. A simple 'is this type correct' script: {{{ #!/bin/sh echo "Checking type correctness ... " f=`mktemp` for i in *.hs ; do ghci -cpp -Iinclude -v0 $i < /dev/null done > $f 2>&1 if cmp -s $f /dev/null ; then echo "Passed" true else echo "Failed" cat $f false fi }}} -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/370 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects

#370: Check for use of -X flags on upload ----------------------------+----------------------------------------------- Reporter: guest | Owner: Type: defect | Status: new Priority: normal | Milestone: Cabal-2.0 Component: Cabal library | Version: HEAD Severity: normal | Resolution: Keywords: | Difficulty: normal Ghcversion: 6.8.2 | Platform: ----------------------------+----------------------------------------------- Changes (by duncan): * milestone: HackageDB => Cabal-2.0 Comment: Closely related to this is the problem that the `extensions` field does not quite mean what we want. It currently means to apply those excetions to all the modules in the package, but what we want it to mean is that this package uses these extensions (and not all modules need use all the extensions). I fear we need a different name for this meaning or we'll break lots of existing packages. We can gradually move to the new system. Eg use {{{ library uses-extensions: Foo, Bar }}} This is a declaration to the outside world that this library uses these extensions, however it does not mean that we pass -XFoo -XBar when buliding this library. We expect the .hs files to use the `LANGUAGE` pragma. This `uses-extensions` field would just be the union of all the extensions listed in the `LANGUAGE` pragma. The next question would be how to enforce that the declaration is accurate. We could parse the OPTIONS and LANGUAGE pragmas to extract the languages used. Note also that we should be encouraging the use of the portable `LANGUAGE` pragma, not ghc's `-X` flags. -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/370#comment:1 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects

#370: Check that packages declare language extensions accurately ----------------------------+----------------------------------------------- Reporter: guest | Owner: Type: defect | Status: new Priority: normal | Milestone: Cabal-2.0 Component: Cabal library | Version: HEAD Severity: normal | Resolution: Keywords: | Difficulty: normal Ghcversion: 6.8.2 | Platform: ----------------------------+----------------------------------------------- Changes (by duncan): * summary: Check for use of -X flags on upload => Check that packages declare language extensions accurately -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/370#comment:2 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects
participants (1)
-
Hackage