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