diff options
author | Sean Whitton <spwhitton@spwhitton.name> | 2020-01-03 11:48:04 +0000 |
---|---|---|
committer | Sean Whitton <spwhitton@spwhitton.name> | 2020-01-03 11:48:04 +0000 |
commit | 3931c7bc0839f5265da93c77b7dba51b96c64b07 (patch) | |
tree | 1bc54e809f4a69c0aea4cd87de7612fd9c64a39b | |
parent | ecf5f00cf987b1ff91230a9d84bc7243e19abf8a (diff) | |
parent | 8d5632057313db2b3bdbbe5692ddaa8f6f37ed1e (diff) | |
download | haskell-filepath-bytestring-3931c7bc0839f5265da93c77b7dba51b96c64b07.tar.gz |
haskell-filepath-bytestring (1.4.2.1.6-1) unstable; urgency=medium
* New upstream release (Closes: #947970).
[dgit import unpatched haskell-filepath-bytestring 1.4.2.1.6-1]
-rw-r--r-- | debian/changelog | 29 | ||||
-rw-r--r-- | debian/compat | 1 | ||||
-rw-r--r-- | debian/control | 74 | ||||
-rw-r--r-- | debian/copyright | 44 | ||||
-rwxr-xr-x | debian/missing-sources/Generate.hs | 174 | ||||
-rwxr-xr-x | debian/rules | 9 | ||||
-rw-r--r-- | debian/source/format | 1 | ||||
-rw-r--r-- | debian/watch | 2 |
8 files changed, 334 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..670d8ba --- /dev/null +++ b/debian/changelog @@ -0,0 +1,29 @@ +haskell-filepath-bytestring (1.4.2.1.6-1) unstable; urgency=medium + + * New upstream release (Closes: #947970). + + -- Sean Whitton <spwhitton@spwhitton.name> Fri, 03 Jan 2020 11:48:04 +0000 + +haskell-filepath-bytestring (1.4.2.1.0-3) unstable; urgency=medium + + * Source-only upload to permit migration to testing. + + -- Sean Whitton <spwhitton@spwhitton.name> Thu, 02 Jan 2020 20:17:47 +0000 + +haskell-filepath-bytestring (1.4.2.1.0-2) unstable; urgency=medium + + * Try upload again. + + -- Sean Whitton <spwhitton@spwhitton.name> Thu, 12 Dec 2019 21:33:12 -0700 + +haskell-filepath-bytestring (1.4.2.1.0-1) unstable; urgency=medium + + * Initial release. + + -- Sean Whitton <spwhitton@spwhitton.name> Wed, 11 Dec 2019 16:06:57 -0700 + +filepath-bytestring (1.4.2.1.0) unstable; urgency=medium + + * Initial release, based on filepath 1.4.2.1. + + -- Joey Hess <id@joeyh.name> Tue, 10 Dec 2019 15:21:14 -0400 diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..f599e28 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +10 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..7535023 --- /dev/null +++ b/debian/control @@ -0,0 +1,74 @@ +Source: haskell-filepath-bytestring +Maintainer: Debian Haskell Group <pkg-haskell-maintainers@lists.alioth.debian.org> +Uploaders: Sean Whitton <spwhitton@spwhitton.name> +Priority: optional +Section: haskell +Build-Depends: debhelper (>= 10), + haskell-devscripts-minimal | haskell-devscripts (>= 0.9), + cdbs, + ghc, + ghc-prof, + libghc-quickcheck2-dev (>= 2.7) <!nocheck>, + libghc-quickcheck2-dev (<< 2.14) <!nocheck>, +Build-Depends-Indep: ghc-doc, +Standards-Version: 4.4.1 +Homepage: https://hackage.haskell.org/package/filepath-bytestring +Vcs-Browser: https://salsa.debian.org/haskell-team/DHG_packages/tree/master/p/haskell-filepath-bytestring +Vcs-Git: https://salsa.debian.org/haskell-team/DHG_packages.git +X-Description: library for manipulating RawFilePaths + This package provides functionality for manipulating RawFilePath + values. It can be used as a drop in replacement for the filepath library + to get the benefits of using ByteStrings. It provides three modules: + . + * "System.FilePath.Posix.ByteString" manipulates POSIX/Linux style + RawFilePath values (with / as the path separator). + . + * "System.FilePath.Windows.ByteString" manipulates Windows style + RawFilePath values (with either \ or / as the path separator, and + deals with drives). + . + * "System.FilePath.ByteString" is an alias for the module + appropriate to your platform. + . + All three modules provide the same API, and the same documentation + (calling out differences in the different variants). + +Package: libghc-filepath-bytestring-dev +Architecture: any +Depends: ${haskell:Depends}, + ${misc:Depends}, + ${shlibs:Depends}, +Recommends: ${haskell:Recommends}, +Suggests: ${haskell:Suggests}, +Conflicts: ${haskell:Conflicts}, +Provides: ${haskell:Provides}, +Description: ${haskell:ShortDescription}${haskell:ShortBlurb} + ${haskell:LongDescription} + . + ${haskell:Blurb} + +Package: libghc-filepath-bytestring-prof +Architecture: any +Depends: ${haskell:Depends}, + ${misc:Depends}, +Recommends: ${haskell:Recommends}, +Suggests: ${haskell:Suggests}, +Conflicts: ${haskell:Conflicts}, +Provides: ${haskell:Provides}, +Description: ${haskell:ShortDescription}${haskell:ShortBlurb} + ${haskell:LongDescription} + . + ${haskell:Blurb} + +Package: libghc-filepath-bytestring-doc +Architecture: all +Section: doc +Depends: ${haskell:Depends}, + ${misc:Depends}, +Recommends: ${haskell:Recommends}, +Suggests: ${haskell:Suggests}, +Conflicts: ${haskell:Conflicts}, +Description: ${haskell:ShortDescription}${haskell:ShortBlurb} + ${haskell:LongDescription} + . + ${haskell:Blurb} diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..854c3fb --- /dev/null +++ b/debian/copyright @@ -0,0 +1,44 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: filepath-bytestring +Upstream-Contact: Joey Hess <id@joeyh.name> +Source: https://hackage.haskell.org/package/filepath-bytestring + +Files: * +Copyright: (C) 2005-2019 Neil Mitchell + (C) 2019 Joey Hess +License: BSD-3-clause + +Files: debian/* +Copyright: (C) 2019 Sean Whitton <spwhitton@spwhitton.name> +License: BSD-3-clause + +License: BSD-3-clause + All rights reserved. + . + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + . + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + . + * Neither the name of Neil Mitchell nor the names of other + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/debian/missing-sources/Generate.hs b/debian/missing-sources/Generate.hs new file mode 100755 index 0000000..62153a6 --- /dev/null +++ b/debian/missing-sources/Generate.hs @@ -0,0 +1,174 @@ +{-# LANGUAGE RecordWildCards, ViewPatterns #-} + +module Generate(main) where + +import Control.Exception +import Control.Monad +import Data.Char +import Data.List +import System.Directory +import System.IO + +equivtests :: [(Int, String)] +equivtests = + [ (0, "isPathSeparator") + , (0, "isSearchPathSeparator") + , (0, "isExtSeparator") + , (1, "splitExtension") + , (1, "takeExtension") + , (2, "replaceExtension") + , (1, "dropExtension") + , (2, "addExtension") + , (1, "hasExtension") + , (1, "splitExtensions") + , (1, "dropExtensions") + , (1, "takeExtensions") + , (2, "replaceExtensions") + , (2, "isExtensionOf") + , (2, "stripExtension") + , (1, "splitFileName") + , (1, "takeFileName") + , (2, "replaceFileName") + , (1, "dropFileName") + , (1, "takeBaseName") + , (2, "replaceBaseName") + , (1, "takeDirectory") + , (2, "replaceDirectory") + , (2, "combine") + , (1, "splitPath") + , (3, "joinPath") + , (1, "splitDirectories") + , (1, "splitDrive") + , (2, "joinDrive") + , (1, "takeDrive") + , (1, "hasDrive") + , (1, "dropDrive") + , (1, "isDrive") + , (1, "hasTrailingPathSeparator") + , (1, "addTrailingPathSeparator") + , (1, "dropTrailingPathSeparator") + ] + +main :: IO () +main = do + src <- readFile "System/FilePath/Internal.hs" + let tests = map renderTest $ concatMap parseTest $ lines src + writeFileBinaryChanged "tests/TestGen.hs" $ unlines $ + ["-- GENERATED CODE: See ../Generate.hs" + ,"{-# LANGUAGE OverloadedStrings #-}" + ,"module TestGen(tests) where" + ,"import TestUtil" + ,"import Data.Char" + ,"import qualified System.FilePath.Windows.ByteString as W" + ,"import qualified System.FilePath.Posix.ByteString as P" + ,"import Data.ByteString (isPrefixOf, isSuffixOf, null, any)" + ,"import Prelude hiding (isPrefixOf, isSuffixOf, null, any)" + --,"{-# ANN module \"HLint: ignore\" #-}" + ,"tests :: [(String, Property)]" + ,"tests ="] ++ + [" " ++ c ++ "(" ++ show t1 ++ ", " ++ t2 ++ ")" | (c,(t1,t2)) <- zip ("[":repeat ",") tests] ++ + [" ]"] + + let mkequivs porw l = [" " ++ c ++ "(" ++ show ("equiv " ++ porw ++ "." ++ t2) ++ ", equiv_" ++ show t1 ++ " Our" ++ porw ++ "." ++ t2 ++ " Their" ++ porw ++ "." ++ t2 ++ ")" | (c,(t1,t2)) <- l] + writeFileBinaryChanged "tests/TestEquiv.hs" $ unlines $ + ["-- GENERATED CODE: See ../Generate.hs" + ,"module TestEquiv(equivtests) where" + ,"import TestUtil" + ,"import System.FilePath.ByteString (RawFilePath)" + ,"import qualified System.FilePath.Windows.ByteString as OurWindows" + ,"import qualified System.FilePath.Windows as TheirWindows" + ,"import qualified System.FilePath.Posix.ByteString as OurPosix" + ,"import qualified System.FilePath.Posix as TheirPosix" + ,"equivtests :: [(String, Property)]" + ,"equivtests ="] ++ + mkequivs "Posix" (zip ("[":repeat ",") equivtests) ++ + mkequivs "Windows" (zip (repeat ",") equivtests) ++ + [" ]"] + +data PW = P | W deriving Show -- Posix or Windows +data Test = Test + {testPlatform :: PW + ,testVars :: [(String,String)] -- generator constructor, variable + ,testBody :: [String] + } + + +parseTest :: String -> [Test] +parseTest (stripPrefix "-- > " -> Just x) = platform $ toLexemes x + where + platform ("untested":x) = [] + platform ("Windows":":":x) = [valid W x] + platform ("Posix" :":":x) = [valid P x] + platform x = [valid P x, valid W x] + + valid p ("Valid":x) = free p a $ drop 1 b + where (a,b) = break (== "=>") x + valid p x = free p [] x + + free p val x = Test p [(ctor v, v) | v <- vars] x + where vars = nub $ sort [v | v@[c] <- x, isAlpha c] + ctor v | v < "x" = "" + | v `elem` val = "QFilePathValid" ++ show p + | otherwise = "QFilePath" +parseTest _ = [] + + +toLexemes :: String -> [String] +toLexemes x = case lex x of + [("","")] -> [] + [(x,y)] -> x : toLexemes y + y -> error $ "Generate.toLexemes, " ++ show x ++ " -> " ++ show y + + +fromLexemes :: [String] -> String +fromLexemes = unwords . f + where + f ("`":x:"`":xs) = ("`" ++ x ++ "`") : f xs + f (x:y:xs) | x `elem` ["[","("] || y `elem` [",",")","]"] = f $ (x ++ y) : xs + f (x:xs) = x : f xs + f [] = [] + + +renderTest :: Test -> (String, String) +renderTest Test{..} = (body, code) + where + code = "property $ " ++ if null testVars then body else "\\" ++ unwords vars ++ " -> " ++ convvars body + vars = [if null ctor then v else "(" ++ ctor ++ " " ++ ('v':v) ++ ")" | (ctor,v) <- testVars] + + convvars = convvars' $ map snd $ filter (not . null . fst) testVars + convvars' [] b = b + convvars' (v:vs) b = convvars' vs $ + "let " ++ v ++ " = toRawFilePath v" ++ v ++ " in " ++ b + + body = fromLexemes $ map (qualify testPlatform) testBody + + +qualify :: PW -> String -> String +qualify pw str + | str `elem` fpops || (all isAlpha str && length str > 1 && str `notElem` prelude) = show pw ++ "." ++ str + | otherwise = str + where + prelude = ["elem","uncurry","snd","fst","not","null","if","then","else" + ,"True","False","Just","Nothing","fromJust","concat","isPrefixOf","isSuffixOf","any" + ,"fromIntegral","ord","mempty","mconcat"] + fpops = ["</>","<.>","-<.>"] + + +--------------------------------------------------------------------- +-- UTILITIES + +writeFileBinary :: FilePath -> String -> IO () +writeFileBinary file x = withBinaryFile file WriteMode $ \h -> hPutStr h x + +readFileBinary' :: FilePath -> IO String +readFileBinary' file = withBinaryFile file ReadMode $ \h -> do + s <- hGetContents h + evaluate $ length s + return s + +writeFileBinaryChanged :: FilePath -> String -> IO () +writeFileBinaryChanged file x = do + b <- doesFileExist file + old <- if b then fmap Just $ readFileBinary' file else return Nothing + when (Just x /= old) $ + writeFileBinary file x diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..a1a43c2 --- /dev/null +++ b/debian/rules @@ -0,0 +1,9 @@ +#!/usr/bin/make -f + +DEB_SETUP_BIN_NAME = debian/hlibrary.setup +DEB_CABAL_PACKAGE = filepath-bytestring +DEB_DEFAULT_COMPILER = ghc +DEB_ENABLE_TESTS = yes + +include /usr/share/cdbs/1/rules/debhelper.mk +include /usr/share/cdbs/1/class/hlibrary.mk diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/debian/watch b/debian/watch new file mode 100644 index 0000000..bdfe4f6 --- /dev/null +++ b/debian/watch @@ -0,0 +1,2 @@ +version=3 +https://hackage.haskell.org/package/filepath-bytestring/distro-monitor .*-([0-9\.]+)\.(?:zip|tgz|tbz|txz|(?:tar\.(?:gz|bz2|xz))) |