Wed Feb 13 20:13:47 GMT 2008 Duncan Coutts <[EMAIL PROTECTED]>
* Update to latest Cabal lib API and use new package checking code
Compiles but otherwise totally untested.
Wed Feb 13 20:17:11 GMT 2008 Duncan Coutts <[EMAIL PROTECTED]>
* Reject uploading the same version of a package again
New patches:
[Update to latest Cabal lib API and use new package checking code
Duncan Coutts <[EMAIL PROTECTED]>**20080213201347
Compiles but otherwise totally untested.
] {
hunk ./PackagePage.hs 12
-import Distribution.Configuration
+import Distribution.PackageDescription.Configuration
+ ( flattenPackageDescription )
hunk ./SearchHackage.hs 10
- ( PackageDescription,
- flattenPackageDescription )
+ ( PackageDescription )
+import Distribution.PackageDescription.Configuration
+ ( flattenPackageDescription )
hunk ./Unpack.hs 10
-import Data.List ( isSuffixOf, nub, (\\) )
+import Data.List ( isSuffixOf, nub, (\\), partition )
hunk ./Unpack.hs 14
- PackageDescription(..),
- flattenPackageDescription,
- parsePackageDescription,
- sanityCheckPackage, exposedModules )
+ PackageDescription(..), exposedModules )
+import Distribution.PackageDescription.Parse
+ ( parsePackageDescription )
+import Distribution.PackageDescription.Configuration
+ ( flattenPackageDescription )
+import Distribution.PackageDescription.Check
+ ( PackageCheck(..),
+ checkPackage, checkPackageFiles )
hunk ./Unpack.hs 91
- liftIO $ changeWorkingDirectory tmpPkgDir
- extraChecks (flattenPackageDescription pkgDesc)
- liftIO $ changeWorkingDirectory "../.."
+ extraChecks tmpPkgDir (flattenPackageDescription pkgDesc)
hunk ./Unpack.hs 104
-extraChecks :: PackageDescription -> PutMonad ()
-extraChecks pkgDesc = do
- -- check for empty package, Licence and Licence-File
- (warnings, errors) <- liftIO $ sanityCheckPackage pkgDesc
- mapM_ die errors
- mapM_ warn warnings
-
- when (null (category pkgDesc)) $
- warn "No category field."
- when (null (description pkgDesc)) $
- warn "No description field."
- when (null (maintainer pkgDesc)) $
- warn "No maintainer field."
- when (null (synopsis pkgDesc)) $
- warn "No synopsis field."
- when (length (synopsis pkgDesc) >= 80) $
- warn "Over-long synopsis field"
+extraChecks :: FilePath -> PackageDescription -> PutMonad ()
+extraChecks pkgPath pkgDesc = do
+ -- various checks
+ fileChecks <- liftIO $ checkPackageFiles pkgDesc pkgPath
+ let pureChecks = checkPackage pkgDesc
+ checks = pureChecks ++ fileChecks
+ isDistError (PackageDistSuspicious {}) = False
+ isDistError _ = True
+ (errors, warnings) = partition isDistError checks
+ mapM_ (die . explanation) errors
+ mapM_ (warn . explanation) warnings
hunk ./Util.hs 13
-import Distribution.Configuration
- ( CondTree(..) )
hunk ./Util.hs 16
+import Distribution.PackageDescription.Parse
+ ( readPackageDescription )
hunk ./hackage-scripts.cabal 10
-build-depends: base, Cabal >= 1.2.1, array, containers, directory, filepath,
+build-depends: base, Cabal >= 1.3.4, array, containers, directory, filepath,
hunk ./pkg-list.hs 13
+import Distribution.PackageDescription.Configuration
+ ( flattenPackageDescription )
}
[Reject uploading the same version of a package again
Duncan Coutts <[EMAIL PROTECTED]>**20080213201711] {
hunk ./Unpack.hs 90
- warn "this version of the package is already present in the database"
+ die "this version of the package is already present in the database"
}
Context:
[remove private copies of functions now in ghc 6.8
Ross Paterson <[EMAIL PROTECTED]>**20080212011430]
[introduce PublicFile for files visible through the web
Ross Paterson <[EMAIL PROTECTED]>**20080212005643]
[refactoring of upload and check scripts
Ross Paterson <[EMAIL PROTECTED]>**20080211131109]
[unpack the whole directory, not just the .cabal file
Ross Paterson <[EMAIL PROTECTED]>**20080211131009]
[add a Google search box to the package list page
Ross Paterson <[EMAIL PROTECTED]>**20080203021954]
[swap depends-on and required-by maps
Ross Paterson <[EMAIL PROTECTED]>**20080202012507]
[list successful and unsuccessful builds, with logs
Ross Paterson <[EMAIL PROTECTED]>**20080126013443]
[blacklist Application, Tool and Type categories
Ross Paterson <[EMAIL PROTECTED]>**20071213074800]
[add author
Ross Paterson <[EMAIL PROTECTED]>**20071213074632]
[correct and simplify the library and programs test
Ross Paterson <[EMAIL PROTECTED]>**20071210104009]
[capitalize category names
Ross Paterson <[EMAIL PROTECTED]>**20071130143321]
[merge category names that differ only in case
Ross Paterson <[EMAIL PROTECTED]>**20071130142342]
[render equality constraints concisely
Ross Paterson <[EMAIL PROTECTED]>**20071128005652]
[ignore case when sorting lists of dependent packages
Ross Paterson <[EMAIL PROTECTED]>**20071120123549]
[display dependencies in disjunctive normal form
Ross Paterson <[EMAIL PROTECTED]>**20071024225216]
[Oops, need the flattened package description to get exposed modules and executables
Ross Paterson <[EMAIL PROTECTED]>**20071024070848]
[use GenericPackageDescription instead of PackageDescription
Ross Paterson <[EMAIL PROTECTED]>**20071024064933]
[now need Cabal >= 1.2.1
Ross Paterson <[EMAIL PROTECTED]>**20071021155643]
[update for Cabal 1.2.1
Ross Paterson <[EMAIL PROTECTED]>**20071021155322]
[cabal packaging (based on work of Trevor Elliott)
Ross Paterson <[EMAIL PROTECTED]>**20071019124210]
[also install search
Ross Paterson <[EMAIL PROTECTED]>**20070909185526]
[Added search functionality (by Sascha Böhme), but not yet in main menu
Ross Paterson <[EMAIL PROTECTED]>**20070909140603]
[update for Cabal-1.2
Ross Paterson <[EMAIL PROTECTED]>**20070907234506]
[ensure the package list contains latest versions, plus some refacting
Ross Paterson <[EMAIL PROTECTED]>**20070723204248]
[add link to build log to package page
Ross Paterson <[EMAIL PROTECTED]>**20070720124702]
[minor build updates
Ross Paterson <[EMAIL PROTECTED]>**20070617213315]
[fix rendering of identifiers
Ross Paterson <[EMAIL PROTECTED]>**20070617213249]
[add missing file
Ross Paterson <[EMAIL PROTECTED]>**20070530140019]
[bugfix for previous commit
Ross Paterson <[EMAIL PROTECTED]>**20070510142803]
[fix error in building index
Ross Paterson <[EMAIL PROTECTED]>**20070508165611]
[include a package in the list only if it has a Cabal file
Ross Paterson <[EMAIL PROTECTED]>**20070506180938]
[change the directory layout of the HackageDB data
Ross Paterson <[EMAIL PROTECTED]>**20070506151844
Put version in a separate directory (to simplify future expansion).
This will not affect users of the web interface, but will be a breaking
change for those who reference the files directly, notably cabal-install.
Here's how the positions of the files of the binary package change
(-> denotes a symbolic link):
Old layout New layout
--------------------------------------------------------------------
binary/binary-0.2.cabal binary/0.2/binary.cabal
binary/binary-0.2.tar.gz binary/0.2/binary-0.2.tar.gz
binary/binary-0.2.misc/doc/html/ binary/0.2/doc/html/
binary/binary-0.3.cabal binary/0.3/binary.cabal
binary/binary-0.3.tar.gz binary/0.3/binary-0.3.tar.gz
binary/binary-0.3.misc/doc/html/ binary/0.3/doc/html/
binary/latest.misc -> binary-0.3.misc binary/latest -> 0.3
]
[catch "Unclassified" category
Ross Paterson <[EMAIL PROTECTED]>**20070307011355]
[use local copy of Cabal logo
Ross Paterson <[EMAIL PROTECTED]>**20070225125801]
[make "recent additions" a generated page instead of a CGI script
Ross Paterson <[EMAIL PROTECTED]>**20070220235702]
[tweaks to package list
Ross Paterson <[EMAIL PROTECTED]>**20070220235601]
[generate RSS feed of recent updates
Ross Paterson <[EMAIL PROTECTED]>**20070214185538]
[bug fix: show preview even if no warnings
Ross Paterson <[EMAIL PROTECTED]>**20070213180708]
[check-pkg also returns plain text if requested
Ross Paterson <[EMAIL PROTECTED]>**20070213001039]
[for plain text clients, return only the warnings
Ross Paterson <[EMAIL PROTECTED]>**20070211171633]
[use CGI type synonym
Ross Paterson <[EMAIL PROTECTED]>**20070210152353]
[refactor pkgBody arguments as a record
Ross Paterson <[EMAIL PROTECTED]>**20070208194243]
[strip executables
Ross Paterson <[EMAIL PROTECTED]>**20070207233429]
[mark property table
Ross Paterson <[EMAIL PROTECTED]>**20070207233402]
[point to accounts page
Ross Paterson <[EMAIL PROTECTED]>**20070207230638]
[install upload-pkg in the correct place
Ross Paterson <[EMAIL PROTECTED]>**20070206001525]
[new location <pkgid>.misc/doc for docs
Ross Paterson <[EMAIL PROTECTED]>**20070205004623]
[versioned haddock documentation
Ross Paterson <[EMAIL PROTECTED]>**20070203202526]
[if PACKAGE/doc/html exists, module names are links into it
Ross Paterson <[EMAIL PROTECTED]>**20070203170215
(Generation of haddock documentation is not yet automated, though)
]
[minor refactoring
Ross Paterson <[EMAIL PROTECTED]>**20070202121300]
[change package links from pkg/vers to pkg-vers
Ross Paterson <[EMAIL PROTECTED]>**20070201143905]
[package-ids are unambiguous
Ross Paterson <[EMAIL PROTECTED]>**20070201132112]
[allow version tags (they seem harmless)
Ross Paterson <[EMAIL PROTECTED]>**20070201131251]
[trim long synopses in package list
Ross Paterson <[EMAIL PROTECTED]>**20070201100052]
[tag category list
Ross Paterson <[EMAIL PROTECTED]>**20070131121652]
[some re-arrangement
Ross Paterson <[EMAIL PROTECTED]>**20070131003654]
[add category index to package list
Ross Paterson <[EMAIL PROTECTED]>**20070130180021]
[tweak Cabal logo
Ross Paterson <[EMAIL PROTECTED]>**20070129130941]
[add Cabal branding to package page
Ross Paterson <[EMAIL PROTECTED]>**20070129122133]
[mark package lists with an element class
Ross Paterson <[EMAIL PROTECTED]>**20070129092724]
[revert to textual indication of package type
Ross Paterson <[EMAIL PROTECTED]>**20070129080416]
[cleanup
Ross Paterson <[EMAIL PROTECTED]>**20070129025127]
[more compact presentation of package list
Ross Paterson <[EMAIL PROTECTED]>**20070129021339]
[show other versions on package page
Ross Paterson <[EMAIL PROTECTED]>**20070129020229]
[move cabalFile to Util
Ross Paterson <[EMAIL PROTECTED]>**20070129014325]
[pkg-list: only read the most recent Cabal file for each package
Ross Paterson <[EMAIL PROTECTED]>**20070129012719]
[trim unused functions
Ross Paterson <[EMAIL PROTECTED]>**20070129012355]
[add export lists for Main modules
Ross Paterson <[EMAIL PROTECTED]>**20070129012315]
[fix dependency
Ross Paterson <[EMAIL PROTECTED]>**20070129005924]
[refactoring of version search
Ross Paterson <[EMAIL PROTECTED]>**20070129005845]
[switch to Text.XHtml
Ross Paterson <[EMAIL PROTECTED]>**20070129001802]
[more graceful error on missing package
Ross Paterson <[EMAIL PROTECTED]>**20070127171227]
[minor simplification
Ross Paterson <[EMAIL PROTECTED]>**20070127164406]
[minor refactoring
Ross Paterson <[EMAIL PROTECTED]>**20070127143750]
[shuffle stuff between modules
Ross Paterson <[EMAIL PROTECTED]>**20070127142603]
[change install to scp + mv
Ross Paterson <[EMAIL PROTECTED]>**20070127131030]
[reword check output
Ross Paterson <[EMAIL PROTECTED]>**20070127130746]
[add upload.html
Ross Paterson <[EMAIL PROTECTED]>**20070126210510]
[re-order things on package page
Ross Paterson <[EMAIL PROTECTED]>**20070126204017]
[minor refactoring
Ross Paterson <[EMAIL PROTECTED]>**20070126202141]
[tabulate fields
Ross Paterson <[EMAIL PROTECTED]>**20070126201050]
[remove superfluous thehtml
Ross Paterson <[EMAIL PROTECTED]>**20070126174820]
[ensure that showPackageId produces the original pkg-id
Ross Paterson <[EMAIL PROTECTED]>**20070126150901
Rule out version numbers like "1.00" -> [1,0] -> "1.0". These ought to be
rejected by the parser.
]
[add boilerplate header to each page
Ross Paterson <[EMAIL PROTECTED]>**20070126143901]
[remove old form-based parameters to package script
Ross Paterson <[EMAIL PROTECTED]>**20070126115030]
[tweak category headings
Ross Paterson <[EMAIL PROTECTED]>**20070126112054]
[make package URLs a bit shorter
Ross Paterson <[EMAIL PROTECTED]>**20070125105147
* remove .cgi from CGI scripts in cgi-bin
* use PATHINFO instead of form data to identify packages.
So now its .../package/<pkg>/<version> or just .../package/<pkg>
]
[some refactoring
Ross Paterson <[EMAIL PROTECTED]>**20070118102430]
[append a preview of the package page to the check-pkg output
Ross Paterson <[EMAIL PROTECTED]>**20070118003003]
[add a README file with overview and install instructions
Ross Paterson <[EMAIL PROTECTED]>**20070116153445]
[clean up locations a bit
Ross Paterson <[EMAIL PROTECTED]>**20070116123020]
[parse and markup package descriptions with code stolen from Haddock
Ross Paterson <[EMAIL PROTECTED]>**20070116105520]
[temporarily downgrade repeated-upload check to a warning
Ross Paterson <[EMAIL PROTECTED]>**20070116073009
The check seems like a good idea in the longer term, but
It's a bit cumbersome while we're all still experimenting.
]
[more compact log lines
Ross Paterson <[EMAIL PROTECTED]>**20070113010328]
[fix previous commit
Ross Paterson <[EMAIL PROTECTED]>**20070112155632]
[use errorOutput for error cases
Ross Paterson <[EMAIL PROTECTED]>**20070112151251]
[basename: strip to slash or backslash (which IE includes in filenames)
Ross Paterson <[EMAIL PROTECTED]>**20070112143846]
[use a different tmp directory for each process
Ross Paterson <[EMAIL PROTECTED]>**20070111010943]
[don't accept "Foreign binding" as a category
Ross Paterson <[EMAIL PROTECTED]>**20070110233221]
[fix stylesheet location
Ross Paterson <[EMAIL PROTECTED]>**20070110182307]
[change locations to match install on hackage.haskell.org
Ross Paterson <[EMAIL PROTECTED]>**20070110170036]
[repair post-upload-hook
Ross Paterson <[EMAIL PROTECTED]>**20070109224215]
[fallback for category: top-level of module hierarchy
Ross Paterson <[EMAIL PROTECTED]>**20070109224115]
[initial import
Ross Paterson <[EMAIL PROTECTED]>**20070109004703
This is a crude first cut at an interface to the Hackage package database:
* generating a package list (pkg-list)
* page describing a package (package.cgi)
* apply basic checks to a Cabal package (check-pkg.cgi)
* upload a Cabal package to the database (upload-pkg.cgi)
]
Patch bundle hash:
e87e3bae0af1f408877a49dc53ab2eaa957ae3f1
_______________________________________________
cabal-devel mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cabal-devel