summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml193
-rw-r--r--CHANGELOG.markdown4
-rw-r--r--Setup.lhs176
-rw-r--r--Warning.hs5
-rw-r--r--bytes.cabal9
-rw-r--r--src/Data/Bytes/Get.hs2
6 files changed, 143 insertions, 246 deletions
diff --git a/.travis.yml b/.travis.yml
index 14e76f6..11fee8f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,103 +1,138 @@
-# This file has been generated -- see https://github.com/hvr/multi-ghc-travis
+# This Travis job script has been generated by a script via
+#
+# runghc make_travis_yml_2.hs '-o' '.travis.yml' '--irc-channel=irc.freenode.org#haskell-lens' '--no-no-tests-no-bench' '--no-installed' 'cabal.project'
+#
+# For more information, see https://github.com/hvr/multi-ghc-travis
+#
language: c
sudo: false
+git:
+ submodules: false # whether to recursively clone submodules
+
+notifications:
+ irc:
+ channels:
+ - "irc.freenode.org#haskell-lens"
+ skip_join: true
+ template:
+ - "\x0313bytes\x03/\x0306%{branch}\x03 \x0314%{commit}\x03 %{build_url} %{message}"
+
cache:
directories:
- - $HOME/.cabsnap
- $HOME/.cabal/packages
+ - $HOME/.cabal/store
before_cache:
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/build-reports.log
- - rm -fv $HOME/.cabal/packages/hackage.haskell.org/00-index.tar
+ # remove files that are regenerated by 'cabal update'
+ - rm -fv $HOME/.cabal/packages/hackage.haskell.org/00-index.*
+ - rm -fv $HOME/.cabal/packages/hackage.haskell.org/*.json
+ - rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.cache
+ - rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.tar
+ - rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.tar.idx
+
+ - rm -rfv $HOME/.cabal/packages/head.hackage
matrix:
include:
- - env: CABALVER=1.16 GHCVER=7.4.2
- compiler: ": #GHC 7.4.2"
- addons: {apt: {packages: [cabal-install-1.16,ghc-7.4.2], sources: [hvr-ghc]}}
- - env: CABALVER=1.16 GHCVER=7.6.3
- compiler: ": #GHC 7.6.3"
- addons: {apt: {packages: [cabal-install-1.16,ghc-7.6.3], sources: [hvr-ghc]}}
- - env: CABALVER=1.18 GHCVER=7.8.4
- compiler: ": #GHC 7.8.4"
- addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.4], sources: [hvr-ghc]}}
- - env: CABALVER=1.22 GHCVER=7.10.3
- compiler: ": #GHC 7.10.3"
- addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.3], sources: [hvr-ghc]}}
- - env: CABALVER=1.24 GHCVER=8.0.2
- compiler: ": #GHC 8.0.2"
- addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.2], sources: [hvr-ghc]}}
- - env: CABALVER=1.24 GHCVER=8.2.1
- compiler: ": #GHC 8.2.1"
- addons: {apt: {packages: [cabal-install-1.24,ghc-8.2.1], sources: [hvr-ghc]}}
- - env: CABALVER=head GHCVER=head CABALFLAGS="--allow-newer"
- compiler: ": #GHC head"
- addons: {apt: {packages: [cabal-install-head,ghc-head], sources: [hvr-ghc]}}
+ - compiler: "ghc-7.4.2"
+ # env: TEST=--disable-tests BENCH=--disable-benchmarks
+ addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.0,ghc-7.4.2], sources: [hvr-ghc]}}
+ - compiler: "ghc-7.6.3"
+ # env: TEST=--disable-tests BENCH=--disable-benchmarks
+ addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.0,ghc-7.6.3], sources: [hvr-ghc]}}
+ - compiler: "ghc-7.8.4"
+ # env: TEST=--disable-tests BENCH=--disable-benchmarks
+ addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.0,ghc-7.8.4], sources: [hvr-ghc]}}
+ - compiler: "ghc-7.10.3"
+ # env: TEST=--disable-tests BENCH=--disable-benchmarks
+ addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.0,ghc-7.10.3], sources: [hvr-ghc]}}
+ - compiler: "ghc-8.0.2"
+ # env: TEST=--disable-tests BENCH=--disable-benchmarks
+ addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.0,ghc-8.0.2], sources: [hvr-ghc]}}
+ - compiler: "ghc-8.2.2"
+ # env: TEST=--disable-tests BENCH=--disable-benchmarks
+ addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.0,ghc-8.2.2], sources: [hvr-ghc]}}
+ - compiler: "ghc-8.4.1"
+ # env: TEST=--disable-tests BENCH=--disable-benchmarks
+ addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.2,ghc-8.4.1], sources: [hvr-ghc]}}
+ - compiler: "ghc-head"
+ env: GHCHEAD=true
+ addons: {apt: {packages: [ghc-ppa-tools,cabal-install-head,ghc-head], sources: [hvr-ghc]}}
+
allow_failures:
- - env: CABALVER=head GHCVER=head CABALFLAGS="--allow-newer"
+ - compiler: "ghc-head"
before_install:
- - unset CC
- - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH
+ - HC=${CC}
+ - HCPKG=${HC/ghc/ghc-pkg}
+ - unset CC
+ - ROOTDIR=$(pwd)
+ - mkdir -p $HOME/.local/bin
+ - "PATH=/opt/ghc/bin:/opt/ghc-ppa-tools/bin:$HOME/local/bin:$PATH"
+ - HCNUMVER=$(( $(${HC} --numeric-version|sed -E 's/([0-9]+)\.([0-9]+)\.([0-9]+).*/\1 * 10000 + \2 * 100 + \3/') ))
+ - echo $HCNUMVER
install:
- - cabal --version
- - echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]"
- - if [ -f $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz ];
- then
- zcat $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz >
- $HOME/.cabal/packages/hackage.haskell.org/00-index.tar;
- fi
- - travis_retry cabal update -v
- - sed -i 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config
- - cabal install --only-dependencies --enable-tests --enable-benchmarks --dry -v $CABALFLAGS > installplan.txt
- - sed -i -e '1,/^Resolving /d' installplan.txt; cat installplan.txt
-
-# check whether current requested install-plan matches cached package-db snapshot
- - if diff -u installplan.txt $HOME/.cabsnap/installplan.txt;
- then
- echo "cabal build-cache HIT";
- rm -rfv .ghc;
- cp -a $HOME/.cabsnap/ghc $HOME/.ghc;
- cp -a $HOME/.cabsnap/lib $HOME/.cabsnap/share $HOME/.cabsnap/bin $HOME/.cabal/;
- else
- echo "cabal build-cache MISS";
- rm -rf $HOME/.cabsnap;
- mkdir -p $HOME/.ghc $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin;
- cabal install -j --only-dependencies --enable-tests --enable-benchmarks $CABALFLAGS;
- fi
-
-# snapshot package-db on cache miss
- - if [ ! -d $HOME/.cabsnap ];
- then
- echo "snapshotting package-db to build-cache";
- mkdir $HOME/.cabsnap;
- cp -a $HOME/.ghc $HOME/.cabsnap/ghc;
- cp -a $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin installplan.txt $HOME/.cabsnap/;
- fi
+ - cabal --version
+ - echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> /dev/null || echo '?')]"
+ - BENCH=${BENCH---enable-benchmarks}
+ - TEST=${TEST---enable-tests}
+ - HADDOCK=${HADDOCK-true}
+ - INSTALLED=${INSTALLED-true}
+ - GHCHEAD=${GHCHEAD-false}
+ - travis_retry cabal update -v
+ - "sed -i.bak 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config"
+ - rm -fv cabal.project cabal.project.local
+ # Overlay Hackage Package Index for GHC HEAD: https://github.com/hvr/head.hackage
+ - |
+ if $GHCHEAD; then
+ sed -i.bak 's/-- allow-newer:.*/allow-newer: *:base, *:template-haskell, *:ghc, *:Cabal/' ${HOME}/.cabal/config
+
+ echo 'repository head.hackage' >> ${HOME}/.cabal/config
+ echo ' url: http://head.hackage.haskell.org/' >> ${HOME}/.cabal/config
+ echo ' secure: True' >> ${HOME}/.cabal/config
+ echo ' root-keys: 07c59cb65787dedfaef5bd5f987ceb5f7e5ebf88b904bbd4c5cbdeb2ff71b740' >> ${HOME}/.cabal/config
+ echo ' 2e8555dde16ebd8df076f1a8ef13b8f14c66bad8eafefd7d9e37d0ed711821fb' >> ${HOME}/.cabal/config
+ echo ' 8f79fd2389ab2967354407ec852cbe73f2e8635793ac446d09461ffb99527f6e' >> ${HOME}/.cabal/config
+ echo ' key-threshold: 3' >> ${HOME}/.cabal.config
+
+ cabal new-update head.hackage -v
+ fi
+ - grep -Ev -- '^\s*--' ${HOME}/.cabal/config | grep -Ev '^\s*$'
+ - "printf 'packages: \".\"\\n' > cabal.project"
+ - cat cabal.project
+ - if [ -f "./configure.ac" ]; then
+ (cd "." && autoreconf -i);
+ fi
+ - rm -f cabal.project.freeze
+ - cabal new-build -w ${HC} ${TEST} ${BENCH} --project-file="cabal.project" --dep -j2 all
+ - rm -rf "."/.ghc.environment.* "."/dist
+ - DISTDIR=$(mktemp -d /tmp/dist-test.XXXX)
# Here starts the actual work to be performed for the package under test;
# any command which exits with a non-zero exit code causes the build to fail.
script:
- - if [ -f configure.ac ]; then autoreconf -i; fi
- - cabal configure --enable-tests --enable-benchmarks -v2 $CABALFLAGS # -v2 provides useful information for debugging
- - cabal build # this builds all libraries and executables (including tests/benchmarks)
- - cabal test --show-details=always
- - cabal sdist # tests that a source-distribution can be generated
-
-# Check that the resulting source distribution can be built & installed.
-# If there are no other `.tar.gz` files in `dist`, this can be even simpler:
-# `cabal install --force-reinstalls dist/*-*.tar.gz`
- - SRC_TGZ=$(cabal info . | awk '{print $2;exit}').tar.gz &&
- (cd dist && cabal install $CABALFLAGS --force-reinstalls "$SRC_TGZ")
+ # test that source-distributions can be generated
+ - (cd "." && cabal sdist)
+ - mv "."/dist/bytes-*.tar.gz ${DISTDIR}/
+ - cd ${DISTDIR} || false
+ - find . -maxdepth 1 -name '*.tar.gz' -exec tar -xvf '{}' \;
+ - "printf 'packages: bytes-*/*.cabal\\n' > cabal.project"
+ - cat cabal.project
-notifications:
- irc:
- channels:
- - "irc.freenode.org#haskell-lens"
- skip_join: true
- template:
- - "\x0313bytes\x03/\x0306%{branch}\x03 \x0314%{commit}\x03 %{build_url} %{message}"
+ # build & run tests, build benchmarks
+ - cabal new-build -w ${HC} ${TEST} ${BENCH} all
+ - if [ "x$TEST" = "x--enable-tests" ]; then cabal new-test -w ${HC} ${TEST} ${BENCH} all; fi
+
+ # cabal check
+ - (cd bytes-* && cabal check)
+
+ # haddock
+ - rm -rf ./dist-newstyle
+ - if $HADDOCK; then cabal new-haddock -w ${HC} ${TEST} ${BENCH} all; else echo "Skipping haddock generation";fi
+
+# REGENDATA ["-o",".travis.yml","--irc-channel=irc.freenode.org#haskell-lens","--no-no-tests-no-bench","--no-installed","cabal.project"]
# EOF
diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
index 5f28c65..aaa0ddb 100644
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,7 @@
+0.15.4 [2018-04-05]
+-------------------
+* Use a significantly simpler `Setup.hs` script.
+
0.15.3
------
* Support GHC 8.2
diff --git a/Setup.lhs b/Setup.lhs
index 5555bb3..faedcd3 100644
--- a/Setup.lhs
+++ b/Setup.lhs
@@ -1,182 +1,34 @@
\begin{code}
{-# LANGUAGE CPP #-}
-{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -Wall #-}
module Main (main) where
#ifndef MIN_VERSION_cabal_doctest
#define MIN_VERSION_cabal_doctest(x,y,z) 0
#endif
-
#if MIN_VERSION_cabal_doctest(1,0,0)
-import Distribution.Extra.Doctest ( defaultMainWithDoctests )
-#else
-
--- Otherwise we provide a shim
-
-#ifndef MIN_VERSION_Cabal
-#define MIN_VERSION_Cabal(x,y,z) 0
-#endif
-#ifndef MIN_VERSION_directory
-#define MIN_VERSION_directory(x,y,z) 0
-#endif
-#if MIN_VERSION_Cabal(1,24,0)
-#define InstalledPackageId UnitId
-#endif
-
-import Control.Monad ( when )
-import Data.List ( nub )
-import Data.String ( fromString )
-import Distribution.Package ( InstalledPackageId )
-import Distribution.Package ( PackageId, Package (..), packageVersion )
-import Distribution.PackageDescription ( PackageDescription(), TestSuite(..) , Library (..), BuildInfo (..))
-import Distribution.Simple ( defaultMainWithHooks, UserHooks(..), simpleUserHooks )
-import Distribution.Simple.Utils ( rewriteFile, createDirectoryIfMissingVerbose )
-import Distribution.Simple.BuildPaths ( autogenModulesDir )
-import Distribution.Simple.Setup ( BuildFlags(buildDistPref, buildVerbosity), fromFlag)
-import Distribution.Simple.LocalBuildInfo ( withPackageDB, withLibLBI, withTestLBI, LocalBuildInfo(), ComponentLocalBuildInfo(componentPackageDeps), compiler )
-import Distribution.Simple.Compiler ( showCompilerId , PackageDB (..))
-import Distribution.Text ( display , simpleParse )
-import System.FilePath ( (</>) )
-
-#if MIN_VERSION_Cabal(1,25,0)
-import Distribution.Simple.BuildPaths ( autogenComponentModulesDir )
-#endif
-
-#if MIN_VERSION_directory(1,2,2)
-import System.Directory (makeAbsolute)
-#else
-import System.Directory (getCurrentDirectory)
-import System.FilePath (isAbsolute)
-
-makeAbsolute :: FilePath -> IO FilePath
-makeAbsolute p | isAbsolute p = return p
- | otherwise = do
- cwd <- getCurrentDirectory
- return $ cwd </> p
-#endif
-
-generateBuildModule :: String -> BuildFlags -> PackageDescription -> LocalBuildInfo -> IO ()
-generateBuildModule testsuiteName flags pkg lbi = do
- let verbosity = fromFlag (buildVerbosity flags)
- let distPref = fromFlag (buildDistPref flags)
-
- -- Package DBs
- let dbStack = withPackageDB lbi ++ [ SpecificPackageDB $ distPref </> "package.conf.inplace" ]
- let dbFlags = "-hide-all-packages" : packageDbArgs dbStack
-
- withLibLBI pkg lbi $ \lib libcfg -> do
- let libBI = libBuildInfo lib
- -- modules
- let modules = exposedModules lib ++ otherModules libBI
- -- it seems that doctest is happy to take in module names, not actual files!
- let module_sources = modules
+import Distribution.Extra.Doctest ( defaultMainWithDoctests )
+main :: IO ()
+main = defaultMainWithDoctests "doctests"
- -- We need the directory with library's cabal_macros.h!
-#if MIN_VERSION_Cabal(1,25,0)
- let libAutogenDir = autogenComponentModulesDir lbi libcfg
#else
- let libAutogenDir = autogenModulesDir lbi
-#endif
-
- -- Lib sources and includes
- iArgs <- mapM (fmap ("-i"++) . makeAbsolute) $ libAutogenDir : hsSourceDirs libBI
- includeArgs <- mapM (fmap ("-I"++) . makeAbsolute) $ includeDirs libBI
- -- CPP includes, i.e. include cabal_macros.h
- let cppFlags = map ("-optP"++) $
- [ "-include", libAutogenDir ++ "/cabal_macros.h" ]
- ++ cppOptions libBI
-
- withTestLBI pkg lbi $ \suite suitecfg -> when (testName suite == fromString testsuiteName) $ do
-
- -- get and create autogen dir
-#if MIN_VERSION_Cabal(1,25,0)
- let testAutogenDir = autogenComponentModulesDir lbi suitecfg
-#else
- let testAutogenDir = autogenModulesDir lbi
+#ifdef MIN_VERSION_Cabal
+-- If the macro is defined, we have new cabal-install,
+-- but for some reason we don't have cabal-doctest in package-db
+--
+-- Probably we are running cabal sdist, when otherwise using new-build
+-- workflow
+import Warning ()
#endif
- createDirectoryIfMissingVerbose verbosity True testAutogenDir
-
- -- write autogen'd file
- rewriteFile (testAutogenDir </> "Build_doctests.hs") $ unlines
- [ "module Build_doctests where"
- , ""
- -- -package-id etc. flags
- , "pkgs :: [String]"
- , "pkgs = " ++ (show $ formatDeps $ testDeps libcfg suitecfg)
- , ""
- , "flags :: [String]"
- , "flags = " ++ show (iArgs ++ includeArgs ++ dbFlags ++ cppFlags)
- , ""
- , "module_sources :: [String]"
- , "module_sources = " ++ show (map display module_sources)
- ]
- where
- -- we do this check in Setup, as then doctests don't need to depend on Cabal
- isOldCompiler = maybe False id $ do
- a <- simpleParse $ showCompilerId $ compiler lbi
- b <- simpleParse "7.5"
- return $ packageVersion (a :: PackageId) < b
- formatDeps = map formatOne
- formatOne (installedPkgId, pkgId)
- -- The problem is how different cabal executables handle package databases
- -- when doctests depend on the library
- | packageId pkg == pkgId = "-package=" ++ display pkgId
- | otherwise = "-package-id=" ++ display installedPkgId
+import Distribution.Simple
- -- From Distribution.Simple.Program.GHC
- packageDbArgs :: [PackageDB] -> [String]
- packageDbArgs | isOldCompiler = packageDbArgsConf
- | otherwise = packageDbArgsDb
-
- -- GHC <7.6 uses '-package-conf' instead of '-package-db'.
- packageDbArgsConf :: [PackageDB] -> [String]
- packageDbArgsConf dbstack = case dbstack of
- (GlobalPackageDB:UserPackageDB:dbs) -> concatMap specific dbs
- (GlobalPackageDB:dbs) -> ("-no-user-package-conf")
- : concatMap specific dbs
- _ -> ierror
- where
- specific (SpecificPackageDB db) = [ "-package-conf=" ++ db ]
- specific _ = ierror
- ierror = error $ "internal error: unexpected package db stack: "
- ++ show dbstack
-
- -- GHC >= 7.6 uses the '-package-db' flag. See
- -- https://ghc.haskell.org/trac/ghc/ticket/5977.
- packageDbArgsDb :: [PackageDB] -> [String]
- -- special cases to make arguments prettier in common scenarios
- packageDbArgsDb dbstack = case dbstack of
- (GlobalPackageDB:UserPackageDB:dbs)
- | all isSpecific dbs -> concatMap single dbs
- (GlobalPackageDB:dbs)
- | all isSpecific dbs -> "-no-user-package-db"
- : concatMap single dbs
- dbs -> "-clear-package-db"
- : concatMap single dbs
- where
- single (SpecificPackageDB db) = [ "-package-db=" ++ db ]
- single GlobalPackageDB = [ "-global-package-db" ]
- single UserPackageDB = [ "-user-package-db" ]
- isSpecific (SpecificPackageDB _) = True
- isSpecific _ = False
-
-testDeps :: ComponentLocalBuildInfo -> ComponentLocalBuildInfo -> [(InstalledPackageId, PackageId)]
-testDeps xs ys = nub $ componentPackageDeps xs ++ componentPackageDeps ys
-
-defaultMainWithDoctests :: String -> IO ()
-defaultMainWithDoctests testSuiteName = defaultMainWithHooks simpleUserHooks
- { buildHook = \pkg lbi hooks flags -> do
- generateBuildModule testSuiteName flags pkg lbi
- buildHook simpleUserHooks pkg lbi hooks flags
- }
+main :: IO ()
+main = defaultMain
#endif
-main :: IO ()
-main = defaultMainWithDoctests "doctests"
-
\end{code}
diff --git a/Warning.hs b/Warning.hs
new file mode 100644
index 0000000..a5a14a9
--- /dev/null
+++ b/Warning.hs
@@ -0,0 +1,5 @@
+module Warning
+ {-# WARNING ["You are configuring this package without cabal-doctest installed.",
+ "The doctests test-suite will not work as a result.",
+ "To fix this, install cabal-doctest before configuring."] #-}
+ () where
diff --git a/bytes.cabal b/bytes.cabal
index 98ca056..c659470 100644
--- a/bytes.cabal
+++ b/bytes.cabal
@@ -1,6 +1,6 @@
name: bytes
category: Data, Serialization
-version: 0.15.3
+version: 0.15.4
license: BSD3
cabal-version: >= 1.8
license-file: LICENSE
@@ -11,9 +11,9 @@ homepage: https://github.com/ekmett/bytes
bug-reports: https://github.com/ekmett/bytes/issues
copyright: Copyright (C) 2013-2015 Edward A. Kmett
build-type: Custom
-tested-with: GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.1
+tested-with: GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.1
synopsis: Sharing code for serialization between binary and cereal
-description: Sharing code for serialization between binary and cereal
+description: Sharing code for serialization between binary and cereal.
extra-source-files:
.travis.yml
@@ -25,6 +25,7 @@ extra-source-files:
AUTHORS.markdown
README.markdown
CHANGELOG.markdown
+ Warning.hs
source-repository head
type: git
@@ -89,5 +90,5 @@ test-suite doctests
base,
bytes,
directory >= 1.0,
- doctest >= 0.11.1 && <0.12,
+ doctest >= 0.11.1 && <0.16,
filepath >= 1.2
diff --git a/src/Data/Bytes/Get.hs b/src/Data/Bytes/Get.hs
index ede0304..6ab1a04 100644
--- a/src/Data/Bytes/Get.hs
+++ b/src/Data/Bytes/Get.hs
@@ -182,7 +182,7 @@ class (Integral (Remaining m), Monad m, Applicative m) => MonadGet m where
getWord64le = lift getWord64le
#endif
- -- | /O(1)./ Read a 'Word64' in native host order and host endianess.
+ -- | /O(1)./ Read a 'Word64' in native host order and host endianness.
getWord64host :: m Word64
#ifndef HLINT
default getWord64host :: (MonadTrans t, MonadGet n, m ~ t n) => m Word64