version tags
Duncan Coutts
duncan.coutts at worc.ox.ac.uk
Fri May 9 05:12:06 EDT 2008
On Thu, 2008-05-08 at 16:54 -0700, Isaac Potoczny-Jones wrote:
> Duncan Coutts wrote:
> > And actually they don't affect the ordering but they do affect equality.
> > Yes it's inconsistent.
> >
> > If we look in the base library in Data.Version we find:
> >
> > instance Eq Version where
> > v1 == v2 = versionBranch v1 == versionBranch v2
> > && sort (versionTags v1) == sort (versionTags v2)
> > -- tags may be in any order
> >
> > instance Ord Version where
> > v1 `compare` v2 = versionBranch v1 `compare` versionBranch v2
> >
> > This is clearly wrong. We would expect that:
> > a == b
> > <=> compare a b == EQ
> > but that does not hold here.
>
> Ewwwwwwwwwww.
Yeah quite :-)
> Sounds like it's a good time to fix it now. I'm surprised that only one
> package uses tags, though.
It's clear we should drop the check on the tags from the == test but I'm
not sure if we should also change the showVersion or parseVersion
functions.
I'm planning on changing the equivalent of showVersion in Cabal to not
display the tags.
> Maybe add something to the package lint during upload too?
I've attached a patch to do that and I'm cc'ing Ross so he can decide if
he agrees or not.
Duncan
-------------- next part --------------
New patches:
[Reject package version tags
Duncan Coutts <duncan at haskell.org>**20080509090756
At least until we decide how to deal with them properly.
] {
hunk ./Unpack.hs 24
+import Distribution.Version ( Version(..) )
hunk ./Unpack.hs 78
+ when (not . null . versionTags . pkgVersion $ pkgId) $
+ die "package version tags are not currently allowed"
+
}
Context:
[if a package has built, ignore any failures
Ross Paterson <ross at soi.city.ac.uk>**20080425154935]
[track changes to checkPackage
Ross Paterson <ross at soi.city.ac.uk>**20080424003335]
[add a meta tag declaring the charset as ISO-8859-1, as that's what Text.XHtml generates
Ross Paterson <ross at soi.city.ac.uk>**20080328154601]
[make parse warnings fatal
Ross Paterson <ross at soi.city.ac.uk>**20080328121040]
[update to Cabal 1.3.9
Ross Paterson <ross at soi.city.ac.uk>**20080328120711]
[disallow updating an existing package
Ross Paterson <ross at soi.city.ac.uk>**20080328120600]
[generate 00-index.tar.gz asynchronously
Ross Paterson <ross at soi.city.ac.uk>**20080302105639]
[prune the search for cabal files to make it go faster
Ross Paterson <ross at soi.city.ac.uk>**20080302105432]
[add small latest-versions lister
Ross Paterson <ross at soi.city.ac.uk>**20080221134229]
[use absolute filenames when looking for packages
Ross Paterson <ross at soi.city.ac.uk>**20080221124040]
[longer label on the search button
Ross Paterson <ross at soi.city.ac.uk>**20080221123956]
[simple implementation of tags, starting with upload info
Ross Paterson <ross at soi.city.ac.uk>**20080216021131]
[swap arguments to extraChecks
Ross Paterson <ross at soi.city.ac.uk>**20080214182808]
[fix warning
Ross Paterson <ross at soi.city.ac.uk>**20080214182753]
[Update to latest Cabal lib API and use new package checking code
Duncan Coutts <duncan at haskell.org>**20080213201347
Compiles but otherwise totally untested.
]
[remove private copies of functions now in ghc 6.8
Ross Paterson <ross at soi.city.ac.uk>**20080212011430]
[introduce PublicFile for files visible through the web
Ross Paterson <ross at soi.city.ac.uk>**20080212005643]
[refactoring of upload and check scripts
Ross Paterson <ross at soi.city.ac.uk>**20080211131109]
[unpack the whole directory, not just the .cabal file
Ross Paterson <ross at soi.city.ac.uk>**20080211131009]
[add a Google search box to the package list page
Ross Paterson <ross at soi.city.ac.uk>**20080203021954]
[swap depends-on and required-by maps
Ross Paterson <ross at soi.city.ac.uk>**20080202012507]
[list successful and unsuccessful builds, with logs
Ross Paterson <ross at soi.city.ac.uk>**20080126013443]
[blacklist Application, Tool and Type categories
Ross Paterson <ross at soi.city.ac.uk>**20071213074800]
[add author
Ross Paterson <ross at soi.city.ac.uk>**20071213074632]
[correct and simplify the library and programs test
Ross Paterson <ross at soi.city.ac.uk>**20071210104009]
[capitalize category names
Ross Paterson <ross at soi.city.ac.uk>**20071130143321]
[merge category names that differ only in case
Ross Paterson <ross at soi.city.ac.uk>**20071130142342]
[render equality constraints concisely
Ross Paterson <ross at soi.city.ac.uk>**20071128005652]
[ignore case when sorting lists of dependent packages
Ross Paterson <ross at soi.city.ac.uk>**20071120123549]
[display dependencies in disjunctive normal form
Ross Paterson <ross at soi.city.ac.uk>**20071024225216]
[Oops, need the flattened package description to get exposed modules and executables
Ross Paterson <ross at soi.city.ac.uk>**20071024070848]
[use GenericPackageDescription instead of PackageDescription
Ross Paterson <ross at soi.city.ac.uk>**20071024064933]
[now need Cabal >= 1.2.1
Ross Paterson <ross at soi.city.ac.uk>**20071021155643]
[update for Cabal 1.2.1
Ross Paterson <ross at soi.city.ac.uk>**20071021155322]
[cabal packaging (based on work of Trevor Elliott)
Ross Paterson <ross at soi.city.ac.uk>**20071019124210]
[also install search
Ross Paterson <ross at soi.city.ac.uk>**20070909185526]
[Added search functionality (by Sascha B?hme), but not yet in main menu
Ross Paterson <ross at soi.city.ac.uk>**20070909140603]
[update for Cabal-1.2
Ross Paterson <ross at soi.city.ac.uk>**20070907234506]
[ensure the package list contains latest versions, plus some refacting
Ross Paterson <ross at soi.city.ac.uk>**20070723204248]
[add link to build log to package page
Ross Paterson <ross at soi.city.ac.uk>**20070720124702]
[minor build updates
Ross Paterson <ross at soi.city.ac.uk>**20070617213315]
[fix rendering of identifiers
Ross Paterson <ross at soi.city.ac.uk>**20070617213249]
[add missing file
Ross Paterson <ross at soi.city.ac.uk>**20070530140019]
[bugfix for previous commit
Ross Paterson <ross at soi.city.ac.uk>**20070510142803]
[fix error in building index
Ross Paterson <ross at soi.city.ac.uk>**20070508165611]
[include a package in the list only if it has a Cabal file
Ross Paterson <ross at soi.city.ac.uk>**20070506180938]
[change the directory layout of the HackageDB data
Ross Paterson <ross at soi.city.ac.uk>**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 <ross at soi.city.ac.uk>**20070307011355]
[use local copy of Cabal logo
Ross Paterson <ross at soi.city.ac.uk>**20070225125801]
[make "recent additions" a generated page instead of a CGI script
Ross Paterson <ross at soi.city.ac.uk>**20070220235702]
[tweaks to package list
Ross Paterson <ross at soi.city.ac.uk>**20070220235601]
[generate RSS feed of recent updates
Ross Paterson <ross at soi.city.ac.uk>**20070214185538]
[bug fix: show preview even if no warnings
Ross Paterson <ross at soi.city.ac.uk>**20070213180708]
[check-pkg also returns plain text if requested
Ross Paterson <ross at soi.city.ac.uk>**20070213001039]
[for plain text clients, return only the warnings
Ross Paterson <ross at soi.city.ac.uk>**20070211171633]
[use CGI type synonym
Ross Paterson <ross at soi.city.ac.uk>**20070210152353]
[refactor pkgBody arguments as a record
Ross Paterson <ross at soi.city.ac.uk>**20070208194243]
[strip executables
Ross Paterson <ross at soi.city.ac.uk>**20070207233429]
[mark property table
Ross Paterson <ross at soi.city.ac.uk>**20070207233402]
[point to accounts page
Ross Paterson <ross at soi.city.ac.uk>**20070207230638]
[install upload-pkg in the correct place
Ross Paterson <ross at soi.city.ac.uk>**20070206001525]
[new location <pkgid>.misc/doc for docs
Ross Paterson <ross at soi.city.ac.uk>**20070205004623]
[versioned haddock documentation
Ross Paterson <ross at soi.city.ac.uk>**20070203202526]
[if PACKAGE/doc/html exists, module names are links into it
Ross Paterson <ross at soi.city.ac.uk>**20070203170215
(Generation of haddock documentation is not yet automated, though)
]
[minor refactoring
Ross Paterson <ross at soi.city.ac.uk>**20070202121300]
[change package links from pkg/vers to pkg-vers
Ross Paterson <ross at soi.city.ac.uk>**20070201143905]
[package-ids are unambiguous
Ross Paterson <ross at soi.city.ac.uk>**20070201132112]
[allow version tags (they seem harmless)
Ross Paterson <ross at soi.city.ac.uk>**20070201131251]
[trim long synopses in package list
Ross Paterson <ross at soi.city.ac.uk>**20070201100052]
[tag category list
Ross Paterson <ross at soi.city.ac.uk>**20070131121652]
[some re-arrangement
Ross Paterson <ross at soi.city.ac.uk>**20070131003654]
[add category index to package list
Ross Paterson <ross at soi.city.ac.uk>**20070130180021]
[tweak Cabal logo
Ross Paterson <ross at soi.city.ac.uk>**20070129130941]
[add Cabal branding to package page
Ross Paterson <ross at soi.city.ac.uk>**20070129122133]
[mark package lists with an element class
Ross Paterson <ross at soi.city.ac.uk>**20070129092724]
[revert to textual indication of package type
Ross Paterson <ross at soi.city.ac.uk>**20070129080416]
[cleanup
Ross Paterson <ross at soi.city.ac.uk>**20070129025127]
[more compact presentation of package list
Ross Paterson <ross at soi.city.ac.uk>**20070129021339]
[show other versions on package page
Ross Paterson <ross at soi.city.ac.uk>**20070129020229]
[move cabalFile to Util
Ross Paterson <ross at soi.city.ac.uk>**20070129014325]
[pkg-list: only read the most recent Cabal file for each package
Ross Paterson <ross at soi.city.ac.uk>**20070129012719]
[trim unused functions
Ross Paterson <ross at soi.city.ac.uk>**20070129012355]
[add export lists for Main modules
Ross Paterson <ross at soi.city.ac.uk>**20070129012315]
[fix dependency
Ross Paterson <ross at soi.city.ac.uk>**20070129005924]
[refactoring of version search
Ross Paterson <ross at soi.city.ac.uk>**20070129005845]
[switch to Text.XHtml
Ross Paterson <ross at soi.city.ac.uk>**20070129001802]
[more graceful error on missing package
Ross Paterson <ross at soi.city.ac.uk>**20070127171227]
[minor simplification
Ross Paterson <ross at soi.city.ac.uk>**20070127164406]
[minor refactoring
Ross Paterson <ross at soi.city.ac.uk>**20070127143750]
[shuffle stuff between modules
Ross Paterson <ross at soi.city.ac.uk>**20070127142603]
[change install to scp + mv
Ross Paterson <ross at soi.city.ac.uk>**20070127131030]
[reword check output
Ross Paterson <ross at soi.city.ac.uk>**20070127130746]
[add upload.html
Ross Paterson <ross at soi.city.ac.uk>**20070126210510]
[re-order things on package page
Ross Paterson <ross at soi.city.ac.uk>**20070126204017]
[minor refactoring
Ross Paterson <ross at soi.city.ac.uk>**20070126202141]
[tabulate fields
Ross Paterson <ross at soi.city.ac.uk>**20070126201050]
[remove superfluous thehtml
Ross Paterson <ross at soi.city.ac.uk>**20070126174820]
[ensure that showPackageId produces the original pkg-id
Ross Paterson <ross at soi.city.ac.uk>**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 <ross at soi.city.ac.uk>**20070126143901]
[remove old form-based parameters to package script
Ross Paterson <ross at soi.city.ac.uk>**20070126115030]
[tweak category headings
Ross Paterson <ross at soi.city.ac.uk>**20070126112054]
[make package URLs a bit shorter
Ross Paterson <ross at soi.city.ac.uk>**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 <ross at soi.city.ac.uk>**20070118102430]
[append a preview of the package page to the check-pkg output
Ross Paterson <ross at soi.city.ac.uk>**20070118003003]
[add a README file with overview and install instructions
Ross Paterson <ross at soi.city.ac.uk>**20070116153445]
[clean up locations a bit
Ross Paterson <ross at soi.city.ac.uk>**20070116123020]
[parse and markup package descriptions with code stolen from Haddock
Ross Paterson <ross at soi.city.ac.uk>**20070116105520]
[temporarily downgrade repeated-upload check to a warning
Ross Paterson <ross at soi.city.ac.uk>**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 <ross at soi.city.ac.uk>**20070113010328]
[fix previous commit
Ross Paterson <ross at soi.city.ac.uk>**20070112155632]
[use errorOutput for error cases
Ross Paterson <ross at soi.city.ac.uk>**20070112151251]
[basename: strip to slash or backslash (which IE includes in filenames)
Ross Paterson <ross at soi.city.ac.uk>**20070112143846]
[use a different tmp directory for each process
Ross Paterson <ross at soi.city.ac.uk>**20070111010943]
[don't accept "Foreign binding" as a category
Ross Paterson <ross at soi.city.ac.uk>**20070110233221]
[fix stylesheet location
Ross Paterson <ross at soi.city.ac.uk>**20070110182307]
[change locations to match install on hackage.haskell.org
Ross Paterson <ross at soi.city.ac.uk>**20070110170036]
[repair post-upload-hook
Ross Paterson <ross at soi.city.ac.uk>**20070109224215]
[fallback for category: top-level of module hierarchy
Ross Paterson <ross at soi.city.ac.uk>**20070109224115]
[initial import
Ross Paterson <ross at soi.city.ac.uk>**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:
ba36c49612699cb94998160a83065de0ae5cb5b2
More information about the cabal-devel
mailing list