packages feed

libarchive-3.0.5.0: libarchive.cabal

cabal-version:      3.0
name:               libarchive
version:            3.0.5.0
license:            BSD-3-Clause
license-file:       LICENSE
copyright:          Copyright: (c) 2018-2020 Vanessa McHale
maintainer:         vamchale@gmail.com
author:             Vanessa McHale

bug-reports:        https://github.com/vmchale/libarchive/issues
synopsis:           Haskell interface to libarchive
description:
    Haskell bindings for [libarchive](https://www.libarchive.org/). Provides the ability to unpack archives, including the ability to unpack archives lazily.

category:           Codec
build-type:         Custom
extra-source-files:
    test/data/aarch64-linux-dist.tar

extra-doc-files:
    README.md
    CHANGELOG.md

source-repository head
    type:     git
    location: https://github.com/vmchale/libarchive

custom-setup
    setup-depends:
        base <=5,
        Cabal <=4,
        chs-cabal

flag cross
    description: Set this flag if cross-compiling
    default:     False
    manual:      True

flag low-memory
    description: Run low-memory version of test suite
    default:     False

flag system-libarchive
    description:
        Use libarchive found with pkg-config rather than the bundled sources

flag no-exe
    description: don't install the archive executables

library
    exposed-modules:
        Codec.Archive
        Codec.Archive.Foreign
        Codec.Archive.Foreign.Archive
        Codec.Archive.Foreign.ArchiveEntry
        Codec.Archive.Internal.Pack
        Codec.Archive.Internal.Pack.Lazy
        Codec.Archive.Internal.Pack.Common
        Codec.Archive.Internal.Unpack.Lazy
        Codec.Archive.Internal.Unpack
        Codec.Archive.Internal.Monad

    hs-source-dirs:   src
    other-modules:
        Codec.Archive.Foreign.Archive.Macros
        Codec.Archive.Foreign.ArchiveEntry.Macros
        Codec.Archive.Types
        Codec.Archive.Types.Foreign
        Codec.Archive.Permissions

    default-language: Haskell2010
    other-extensions: DeriveGeneric DeriveAnyClass
    ghc-options:      -Wall
    build-depends:
        base >=4.8 && <5,
        bytestring,
        composition-prelude >=2.0.5.0,
        dlist,
        filepath,
        mtl >=2.2.1,
        unix-compat >=0.1.2.1,
        deepseq >=1.4.0.0

    if os(windows)
        cc-options: -U__GCC_ASM_FLAG_OUTPUTS__

    if arch(i386)
        cc-options: -D_Alignas(t)=__attribute__((__aligned__(t)))

    if !flag(cross)
        build-tool-depends: c2hs:c2hs >=0.26.1, cpphs:cpphs

    if !impl(ghc >=8.0)
        build-depends:
            semigroups,
            transformers

    if impl(ghc >=8.0)
        ghc-options:
            -Wincomplete-uni-patterns -Wincomplete-record-updates
            -Wredundant-constraints

    if impl(ghc >=8.4)
        ghc-options: -Wmissing-export-lists

    if impl(ghc >=8.10)
        ghc-options: -Wunused-packages

    if flag(system-libarchive)
        pkgconfig-depends: libarchive >=3.8.2 && <4.0
    else
        build-depends: libarchive-clib >=3.8.2 && <4.0

    includes:
        archive.h
        archive_entry.h

executable archive
    main-is:          Main.hs
    hs-source-dirs:   exe
    default-language: Haskell2010
    ghc-options:      -Wall
    build-depends:
        base >=4.8 && <5,
        bytestring >=0.9,
        bzlib >=0.4 && <0.7,
        directory >=1.0,
        exceptions,
        filepath >=1.0,
        libarchive,
        lzma-static,
        time,
        zlib ^>=0.7.1.1

    if flag(no-exe)
        buildable: False

test-suite libarchive-test
    type:               exitcode-stdio-1.0
    main-is:            Spec.hs
    build-tool-depends: cpphs:cpphs
    hs-source-dirs:     test
    other-modules:
        Codec.Archive.Roundtrip
        Codec.Archive.Test

    default-language:   Haskell2010
    other-extensions:   OverloadedStrings
    ghc-options:        -threaded -rtsopts "-with-rtsopts=-N -K1K" -Wall
    build-depends:
        base,
        deepseq,
        libarchive,
        hspec,
        bytestring,
        directory >=1.2.5.0,
        filepath,
        temporary,
        mtl >=2.2.2,
        dir-traverse,
        composition-prelude >=2.0.5.0,
        pathological-bytestrings

    if os(windows)
        build-depends:
            hspec-core

    if flag(low-memory)
        cpp-options: -DLOW_MEMORY

    if !impl(ghc >=8.0)
        build-depends: transformers

    if impl(ghc >=8.0)
        ghc-options:
            -Wincomplete-uni-patterns -Wincomplete-record-updates
            -Wredundant-constraints

    if impl(ghc >=8.4)
        ghc-options: -Wmissing-export-lists

    if impl(ghc >=8.10)
        ghc-options: -Wunused-packages

benchmark libarchive-bench
    type:             exitcode-stdio-1.0
    main-is:          Bench.hs
    hs-source-dirs:   bench
    default-language: Haskell2010
    ghc-options:      -Wall
    build-depends:
        base,
        libarchive,
        criterion,
        bytestring,
        tar >=0.6.0.0,
        temporary

    if impl(ghc >=8.0)
        ghc-options:
            -Wincomplete-uni-patterns -Wincomplete-record-updates
            -Wredundant-constraints

    if impl(ghc >=8.4)
        ghc-options: -Wmissing-export-lists

    if impl(ghc >=8.10)
        ghc-options: -Wunused-packages

benchmark mem
    type:             exitcode-stdio-1.0
    main-is:          Mem.hs
    hs-source-dirs:   mem
    default-language: Haskell2010
    ghc-options:      -Wall -threaded -rtsopts -with-rtsopts=-N
    build-depends:
        base,
        libarchive,
        bytestring

    if impl(ghc >=8.0)
        ghc-options:
            -Wincomplete-uni-patterns -Wincomplete-record-updates
            -Wredundant-constraints

    if impl(ghc >=8.4)
        ghc-options: -Wmissing-export-lists

    if impl(ghc >=8.10)
        ghc-options: -Wunused-packages