packages feed

property-list-0.0.0.7: property-list.cabal

name:                   property-list
version:                0.0.0.7
stability:              experimental
license:                PublicDomain

cabal-version:          >= 1.2
build-type:             Simple

author:                 James Cook <james.cook@usma.edu>
maintainer:             James Cook <james.cook@usma.edu>
homepage:               http://code.haskell.org/~mokus/property-list

category:               Data, Parsing, XML
synopsis:               XML property list parser
description:            Parser, data type and formatter for Apple's XML property list 1.0 format.
                        
                        The bytestring-0.9.1.5 update on hackage seems to have 
                        cratered the build for many packages, including the last
                        several versions of this one, so this version will
                        probably not build properly on the hackage site. 
                        As far as I know, though, that is the only reason
                        it fails. This version includes a hack to try to make
                        it build on the site, triggered by the HaXml_1_13 build flag.

flag new-data-object
  description:          Use the new version of the data-object package (>= 0.0.2)
                        Which has a "generic object" type in place of the simpler
                        Object type in previous versions.
  default:              True

flag new-template-haskell
  description:          Template Haskell 2.4 seems to have made the
                        generated @PropertyListItem OneOfN@ instances break.
                        So, detect it and deal with it.

flag HaXml_1_13
  default:              False
  description:          The Hackage website builder is currently very finicky
                        and the bytestring-0.9.1.5 update has made me very
                        frustrated, because the last several versions of this
                        package have failed to build because of it.  
                        The "preferred-versions" fallback fails too, because
                        the additional HaXml constraint combined with the
                        one here becomes unsatisfiable.  So, I'm gonna make
                        this thing work with HaXml 1.13 now.  
                        
                        And, as an additional hack to make sure it works, 
                        this flag will also trigger dependencies on specific 
                        versions of packages known to have been built against 
                        bytestring-0.9.1.4 on the hackage server.
                        
                        Once ghc-6.12 is released, this should no longer be
                        a problem and I can clean up the mess I've made here.
                        

Library
  hs-source-dirs:       src
  exposed-modules:      Data.PropertyList
  other-modules:        Data.PropertyList.Xml
                        Data.PropertyList.Type
                        Data.PropertyList.Parse
                        Data.PropertyList.PropertyListItem
                        Data.PropertyList.Object
  build-depends:        base >= 3 && <5,
                        bytestring,
                        bytestring-class,
                        containers, 
                        dataenc,
                        mtl,
                        old-locale,
                        pretty,
                        time,
                        th-fold

  if flag(new-template-haskell)
    -- wild guess - template-haskell seems to follow the "even-minors" convention,
    -- so put 2.6 as upper version bound.
    build-depends:      template-haskell >=2.4 && <2.6
    cpp-options:        -DNEW_TEMPLATE_HASKELL
  else
    build-depends:      template-haskell <2.4

  
  if flag(new-data-object)
    build-depends:      data-object >= 0.0.2
    cpp-options:        -DNEW_DATA_OBJECT
  else
    build-depends:      data-object <  0.0.2

  if flag(HaXml_1_13)
    other-modules:      Data.PropertyList.Xml.Dtd_1_13
    cpp-options:        -DHaXml_1_13
    build-depends:      HaXml >= 1.13 && <1.14,
                        bytestring == 0.9.1.4,
                        bytestring-class == 0.0.0,
                        data-object == 0.0.2,
                        
                        utf8-string == 0.3.5
                        -- (transitive dependency brought in by bytestring-class)
                        
  else
    other-modules:      Data.PropertyList.Xml.Dtd
    build-depends:      HaXml >= 1.19