packages feed

hpio 0.9.0.2 → 0.9.0.3

raw patch · 20 files changed

+286/−125 lines, 20 filesdep ~QuickCheckdep ~hlintPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: QuickCheck, hlint

API changes (from Hackage documentation)

- System.GPIO.Linux.Sysfs.IO: instance Control.Monad.RWS.Class.MonadRWS r w s m => Control.Monad.RWS.Class.MonadRWS r w s (System.GPIO.Linux.Sysfs.IO.SysfsIOT m)
- System.GPIO.Linux.Sysfs.Monad: instance Control.Monad.RWS.Class.MonadRWS r w s m => Control.Monad.RWS.Class.MonadRWS r w s (System.GPIO.Linux.Sysfs.Monad.SysfsGpioT m)
+ System.GPIO.Linux.Sysfs.IO: instance (Control.Monad.State.Class.MonadState s m, Control.Monad.Writer.Class.MonadWriter w m, Control.Monad.Reader.Class.MonadReader r m) => Control.Monad.RWS.Class.MonadRWS r w s (System.GPIO.Linux.Sysfs.IO.SysfsIOT m)
+ System.GPIO.Linux.Sysfs.Monad: instance (Control.Monad.State.Class.MonadState s m, Control.Monad.Writer.Class.MonadWriter w m, Control.Monad.Reader.Class.MonadReader r m) => Control.Monad.RWS.Class.MonadRWS r w s (System.GPIO.Linux.Sysfs.Monad.SysfsGpioT m)
- System.GPIO.Linux.Sysfs: class (Monad m) => MonadSysfs m where doesDirectoryExist = lift . doesDirectoryExist doesFileExist = lift . doesFileExist getDirectoryContents = lift . getDirectoryContents readFile = lift . readFile writeFile fn bs = lift $ writeFile fn bs unlockedWriteFile fn bs = lift $ unlockedWriteFile fn bs pollFile fn timeout = lift $ pollFile fn timeout
+ System.GPIO.Linux.Sysfs: class (Monad m) => MonadSysfs m
- System.GPIO.Linux.Sysfs.Monad: class (Monad m) => MonadSysfs m where doesDirectoryExist = lift . doesDirectoryExist doesFileExist = lift . doesFileExist getDirectoryContents = lift . getDirectoryContents readFile = lift . readFile writeFile fn bs = lift $ writeFile fn bs unlockedWriteFile fn bs = lift $ unlockedWriteFile fn bs pollFile fn timeout = lift $ pollFile fn timeout
+ System.GPIO.Linux.Sysfs.Monad: class (Monad m) => MonadSysfs m
- System.GPIO.Monad: class Monad m => MonadGpio h m | m -> h where pins = lift pins pinCapabilities = lift . pinCapabilities openPin = lift . openPin closePin = lift . closePin getPinDirection = lift . getPinDirection getPinInputMode = lift . getPinInputMode setPinInputMode h mode = lift $ setPinInputMode h mode getPinOutputMode = lift . getPinOutputMode setPinOutputMode h mode v = lift $ setPinOutputMode h mode v readPin = lift . readPin pollPin = lift . readPin pollPinTimeout h timeout = lift $ pollPinTimeout h timeout writePin h v = lift $ writePin h v togglePin = lift . togglePin getPinInterruptMode = lift . getPinInterruptMode setPinInterruptMode h mode = lift $ setPinInterruptMode h mode getPinActiveLevel = lift . getPinActiveLevel setPinActiveLevel h v = lift $ setPinActiveLevel h v togglePinActiveLevel = lift . togglePinActiveLevel
+ System.GPIO.Monad: class Monad m => MonadGpio h m | m -> h

Files

.travis.yml view
@@ -40,6 +40,9 @@   - env: BUILD=cabal GHCVER=8.2.1 CABALVER=2.0 HAPPYVER=1.19.5 ALEXVER=3.1.7     compiler: ": #GHC 8.2.1"     addons: {apt: {packages: [cabal-install-2.0,ghc-8.2.1,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}+  - env: BUILD=cabal GHCVER=8.2.2 CABALVER=2.0 HAPPYVER=1.19.5 ALEXVER=3.1.7+    compiler: ": #GHC 8.2.2"+    addons: {apt: {packages: [cabal-install-2.0,ghc-8.2.2,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}    # Build with the newest GHC and cabal-install. This is an accepted failure,   # see below.@@ -67,6 +70,10 @@    - env: BUILD=stack ARGS="--resolver lts-7" STACK_YAML=stack-lts-7.yaml     compiler: ": #stack 8.0.1"+    addons: {apt: {packages: [libgmp-dev]}}++  - env: BUILD=stack ARGS="--resolver lts-9" STACK_YAML=stack-lts-9.yaml+    compiler: ": #stack 8.0.2"     addons: {apt: {packages: [libgmp-dev]}}    # Nightly builds are allowed to fail
changelog.md view
@@ -1,3 +1,15 @@+## 0.9.0.3 (2018-01-25)++Changes:+  - Bump QuickCheck, hlint bounds.+  - Add GHC 8.2.2 to .travis.yml.+  - Much improved Nix support, including a default fixed nixpkgs+    revision and Hydra jobsets.+  - Stackage LTS 10 support.++Fixes:+  - Fixed new hlint issues.+ ## 0.9.0.2 (2017-10-18)  Changes:
+ default.nix view
@@ -0,0 +1,11 @@+# From GitHub: mozilla/nixpkgs-mozilla/default.nix.++self: super:++with super.lib;++(foldl' (flip extends) (_: super) [++  (import ./nix/overlays/haskell-overrides.nix)++]) self
hpio.cabal view
@@ -1,9 +1,11 @@--- This file has been generated from package.yaml by hpack version 0.19.2.+-- This file has been generated from package.yaml by hpack version 0.21.2. -- -- see: https://github.com/sol/hpack+--+-- hash: 998649f85926e44c675d5e7d0f9074add5f856d11f0f01dc411e7db73e59f8c9  name:                   hpio-version:                0.9.0.2+version:                0.9.0.3 synopsis:               Monads for GPIO in Haskell description:            This package provides an embedded DSL for writing cross-platform                         GPIO programs in Haskell. Currently only Linux is supported (via the@@ -33,16 +35,24 @@ extra-source-files:     .travis.yml     changelog.md+    default.nix     Hlint.hs-    nix/hpio.nix+    nix/fetch-nixpkgs.nix+    nix/jobsets/default.nix+    nix/jobsets/release.nix+    nix/jobsets/spec.json+    nix/lib.nix+    nix/nixpkgs-src.json+    nix/overlays/haskell-overrides.nix+    nix/pkgs/hpio.nix     package.yaml     README.md-    release.nix     shell.nix     stack-lts-2.yaml     stack-lts-3.yaml     stack-lts-6.yaml     stack-lts-7.yaml+    stack-lts-9.yaml     stack.yaml  source-repository head@@ -79,7 +89,7 @@   c-sources:       src/System/GPIO/Linux/Sysfs/pollSysfs.c   build-depends:-      QuickCheck >=2.7.6 && <2.11+      QuickCheck >=2.7.6 && <2.12     , base >=4.7.0 && <5     , bytestring >=0.10.4 && <0.11     , containers >=0.5.5 && <0.6@@ -243,7 +253,7 @@   else     build-depends:         base-      , hlint+      , hlint >=1.9 && <2.1       , protolude   default-language: Haskell2010 
+ nix/fetch-nixpkgs.nix view
@@ -0,0 +1,25 @@+# From https://github.com/input-output-hk/iohk-ops/blob/a25d2d9320f8b8f3515f1195d5fceba96fd24493/fetch-nixpkgs.nix++let+  spec = builtins.fromJSON (builtins.readFile ./nixpkgs-src.json);+  src = import <nix/fetchurl.nix> {+    url = "https://github.com/${spec.owner}/${spec.repo}/archive/${spec.rev}.tar.gz";+    inherit (spec) sha256;+  };+  nixcfg = import <nix/config.nix>;+in builtins.derivation {+  system = builtins.currentSystem;+  name = "${src.name}-unpacked";+  builder = builtins.storePath nixcfg.shell;+  inherit src;+  args = [+    (builtins.toFile "builder" ''+      $coreutils/mkdir $out+      cd $out+      $gzip -d < $src | $tar -x --strip-components=1+    '')+  ];+  coreutils = builtins.storePath nixcfg.coreutils;+  tar = builtins.storePath nixcfg.tar;+  gzip = builtins.storePath nixcfg.gzip;+}
− nix/hpio.nix
@@ -1,29 +0,0 @@-{ mkDerivation, async, base, bytestring, containers, directory-, doctest, exceptions, filepath, hlint, hspec, monad-control-, monad-logger, mtl, optparse-applicative, protolude, QuickCheck-, stdenv, text, transformers, transformers-base, unix-, unix-bytestring-}:-mkDerivation {-  pname = "hpio";-  version = "0.9.0.2";-  src = ../.;-  isLibrary = true;-  isExecutable = true;-  libraryHaskellDepends = [-    base bytestring containers directory exceptions filepath-    monad-control monad-logger mtl protolude QuickCheck text-    transformers transformers-base unix unix-bytestring-  ];-  executableHaskellDepends = [-    async base exceptions mtl optparse-applicative protolude text-    transformers-  ];-  testHaskellDepends = [-    base containers directory doctest exceptions filepath hlint hspec-    protolude QuickCheck-  ];-  homepage = "https://github.com/quixoftic/hpio#readme";-  description = "Monads for GPIO in Haskell";-  license = stdenv.lib.licenses.bsd3;-}
+ nix/jobsets/default.nix view
@@ -0,0 +1,63 @@+# Based on+# https://github.com/input-output-hk/iohk-ops/blob/df01a228e559e9a504e2d8c0d18766794d34edea/jobsets/default.nix++{ nixpkgs ? <nixpkgs>+, declInput ? {}+}:++let++  hpioUri = "https://github.com/quixoftic/hpio.git";++  mkFetchGithub = value: {+    inherit value;+    type = "git";+    emailresponsible = false;+  };++  nixpkgs-src = builtins.fromJSON (builtins.readFile ../nixpkgs-src.json);++  pkgs = import nixpkgs {};++  defaultSettings = {+    enabled = 1;+    hidden = false;+    keepnr = 10;+    schedulingshares = 100;+    checkinterval = 60;+    enableemail = false;+    emailoverride = "";+    nixexprpath = "nix/jobsets/release.nix";+    nixexprinput = "hpio";+    description = "hpio";+    inputs = {+      hpio = mkFetchGithub "${hpioUri} master";+    };+  };++  mkChannelAlt = hpioBranch: nixpkgsRev: {+    checkinterval = 60;+    schedulingshares = 100;+    inputs = {+      nixpkgs_override = mkFetchGithub "https://github.com/NixOS/nixpkgs-channels.git ${nixpkgsRev}";+      hpio = mkFetchGithub "${hpioUri} ${hpioBranch}";+    };+  };++  mainJobsets = with pkgs.lib; mapAttrs (name: settings: defaultSettings // settings) (rec {+    master = {};+    nixpkgs-unstable = mkChannelAlt "master" "nixpkgs-unstable";+  });++  jobsetsAttrs = mainJobsets;++  jobsetJson = pkgs.writeText "spec.json" (builtins.toJSON jobsetsAttrs);++in {+  jobsets = with pkgs.lib; pkgs.runCommand "spec.json" {} ''+    cat <<EOF+    ${builtins.toJSON declInput}+    EOF+    cp ${jobsetJson} $out+  '';+}
+ nix/jobsets/release.nix view
@@ -0,0 +1,28 @@+let++  fixedNixPkgs = (import ../lib.nix).fetchNixPkgs;++in++{ supportedSystems ? [ "x86_64-darwin" "x86_64-linux" ]+, scrubJobs ? true+, nixpkgsArgs ? {+    config = { allowUnfree = true; allowBroken = true; inHydra = true; };+    overlays = [ (import ../../.) ];+  }+}:++with import (fixedNixPkgs + "/pkgs/top-level/release-lib.nix") {+  inherit supportedSystems scrubJobs nixpkgsArgs;+};++let++  jobs = (mapTestOn ({+    haskellPackages = packagePlatforms pkgs.haskellPackages;+  }));++in+{+  inherit (jobs.haskellPackages) hpio;+}
+ nix/jobsets/spec.json view
@@ -0,0 +1,16 @@+{+    "enabled": 1,+    "hidden": false,+    "description": "hpio jobsets",+    "nixexprinput": "src",+    "nixexprpath": "nix/jobsets/default.nix",+    "checkinterval": 60,+    "schedulingshares": 100,+    "enableemail": false,+    "emailoverride": "",+    "keepnr": 5,+    "inputs": {+         "src": { "type": "git", "value": "https://github.com/quixoftic/hpio.git master", "emailresponsible": false }+         ,"nixpkgs": { "type": "git", "value": "https://github.com/NixOS/nixpkgs-channels.git nixpkgs-unstable", "emailresponsible": false }+     }+}
+ nix/lib.nix view
@@ -0,0 +1,23 @@+let++  # From https://github.com/input-output-hk/iohk-ops/blob/e6f1ae95cdbfdd5c213aa0b9a1ef67150febc503/lib.nix+  +  fetchNixPkgs =+  let+    try = builtins.tryEval <nixpkgs_override>;+  in+    if try.success+      then builtins.trace "Using <nixpkgs_override>" try.value+      else import ./fetch-nixpkgs.nix;++  nixpkgs = import fetchNixPkgs;++  pkgs = nixpkgs {};++  lib = pkgs.lib;++in lib // (rec {++  inherit fetchNixPkgs;++})
+ nix/nixpkgs-src.json view
@@ -0,0 +1,6 @@+{+    "owner":  "NixOS"+,   "repo":   "nixpkgs-channels"+,   "rev":    "a8d0b805b19a9f5713d0733ddd3d6610654140a0"+,   "sha256": "0a28qxilbax2zi2px19mp7nrgh1nsba1dnlw2a4l80xk7n0iywd2"+}
+ nix/overlays/haskell-overrides.nix view
@@ -0,0 +1,15 @@+self: super:++let++  inherit (self) haskell;++in+{+  haskellPackages = super.haskellPackages.extend (self: super:+    with haskell.lib;+    rec {+      hpio = self.callPackage ../pkgs/hpio.nix {};+    }+  );+}
+ nix/pkgs/hpio.nix view
@@ -0,0 +1,29 @@+{ mkDerivation, async, base, bytestring, containers, directory+, doctest, exceptions, filepath, hlint, hspec, monad-control+, monad-logger, mtl, optparse-applicative, protolude, QuickCheck+, stdenv, text, transformers, transformers-base, unix+, unix-bytestring+}:+mkDerivation {+  pname = "hpio";+  version = "0.9.0.3";+  src = ../../.;+  isLibrary = true;+  isExecutable = true;+  libraryHaskellDepends = [+    base bytestring containers directory exceptions filepath+    monad-control monad-logger mtl protolude QuickCheck text+    transformers transformers-base unix unix-bytestring+  ];+  executableHaskellDepends = [+    async base exceptions mtl optparse-applicative protolude text+    transformers+  ];+  testHaskellDepends = [+    base containers directory doctest exceptions filepath hlint hspec+    protolude QuickCheck+  ];+  homepage = "https://github.com/quixoftic/hpio#readme";+  description = "Monads for GPIO in Haskell";+  license = stdenv.lib.licenses.bsd3;+}
package.yaml view
@@ -1,5 +1,5 @@ name:        hpio-version:     0.9.0.2+version:     0.9.0.3 synopsis:    Monads for GPIO in Haskell category:    System stability:   experimental@@ -113,7 +113,7 @@     - TypeSynonymInstances     - UndecidableInstances   dependencies:-    - QuickCheck          >=2.7.6  && <2.11+    - QuickCheck          >=2.7.6  && <2.12     - base                >=4.7.0  && <5     - bytestring          >=0.10.4 && <0.11     - containers          >=0.5.5  && <0.6@@ -194,7 +194,7 @@       else:         dependencies:           - base-          - hlint+          - hlint     >= 1.9 && <2.1           - protolude   doctest:     main: doctest.hs@@ -228,8 +228,6 @@       - hspec                >=2.1.7       - protolude       - QuickCheck-    ghc-options:-      - -threaded     when:       - condition: flag(linux-bbone-tests)         cpp-options:@@ -240,12 +238,14 @@   - Hlint.hs   - README.md   - changelog.md+  - default.nix   - nix/*+  - nix/*/*   - package.yaml-  - release.nix   - shell.nix   - stack.yaml   - stack-lts-2.yaml   - stack-lts-3.yaml   - stack-lts-6.yaml   - stack-lts-7.yaml+  - stack-lts-9.yaml
− release.nix
@@ -1,67 +0,0 @@-{ compiler ? "ghc821" }:--let-  # Disable tests for these packages-  dontCheckPackages = [-  ];--  # Jailbreak these packages-  doJailbreakPackages = [-  ];--  # Disable haddocks for these packages-  dontHaddockPackages = [-  ];--  config = {-    packageOverrides = pkgs: rec {-      haskellPackages =-        let-          generatedOverrides = haskellPackagesNew: haskellPackagesOld:-            let-              toPackage = file: _: {-                name  = builtins.replaceStrings [ ".nix" ] [ "" ] file;--                value = haskellPackagesNew.callPackage (./. + "/nix/${file}") { };-              };--            in-              pkgs.lib.mapAttrs' toPackage (builtins.readDir ./nix);--          makeOverrides =-            function: names: haskellPackagesNew: haskellPackagesOld:-              let-                toPackage = name: {-                  inherit name;--                  value = function haskellPackagesOld.${name};-                };--            in-              builtins.listToAttrs (map toPackage names);--          composeExtensionsList =-            pkgs.lib.fold pkgs.lib.composeExtensions (_: _: {});--          # More exotic overrides go here-          manualOverrides = haskellPackagesNew: haskellPackagesOld: {-            protolude = pkgs.haskell.packages.${compiler}.protolude_0_2;-          };-        in-          pkgs.haskell.packages.${compiler}.override {-            overrides = composeExtensionsList [-              generatedOverrides-              (makeOverrides pkgs.haskell.lib.dontCheck   dontCheckPackages  )-              (makeOverrides pkgs.haskell.lib.doJailbreak doJailbreakPackages)-              (makeOverrides pkgs.haskell.lib.dontHaddock dontHaddockPackages)-              manualOverrides-            ];-          };-    };-  };--  pkgs = import <nixpkgs> { inherit config; };--in-  { hpio = pkgs.haskellPackages.hpio;-  }
shell.nix view
@@ -1,3 +1,15 @@-{ compiler ? "ghc821" }:+{ compiler ? "ghc822"+, overlays ? [ (import ./.) ]+}: -(import ./release.nix { inherit compiler; }).hpio.env+let++  fixedNixPkgs = (import ./nix/lib.nix).fetchNixPkgs;++  pkgs = (import fixedNixPkgs) { inherit overlays; };++  drv = pkgs.haskellPackages.hpio;++in++  if pkgs.lib.inNixShell then drv.env else drv
src/System/GPIO/Linux/Sysfs/Mock.hs view
@@ -569,8 +569,7 @@ -- filesystem. doesDirectoryExist :: (MockM m) => FilePath -> SysfsMockT m Bool doesDirectoryExist path =-  do cwz <- getZipper-     return $ either (const False) (const True) (Internal.cd path cwz)+  either (const False) (const True) . Internal.cd path <$> getZipper  -- | Check whether the specified file exists in the mock filesystem. doesFileExist :: (MockM m) => FilePath -> SysfsMockT m Bool@@ -605,8 +604,7 @@     Just (Direction pin) ->       do visible <- _userVisibleDirection <$> pinState pin          if visible-            then do direction <- _direction <$> pinState pin-                    return $ pinDirectionToBS direction+            then pinDirectionToBS . _direction <$> pinState pin             else throwM $                    InternalError $                      unwords ["Mock pin", show pin, "has no direction but direction attribute is exported"]@@ -720,8 +718,7 @@ fileAt path =   let (dirPath, fileName) = splitFileName path   in-    do parent <- _cwd <$> cd dirPath-       return $ findFile fileName parent+    findFile fileName . _cwd <$> cd dirPath  -- | For the mock filesystem, this action is equivalent to -- 'writeFile'.
src/System/GPIO/Linux/Sysfs/Monad.hs view
@@ -529,9 +529,7 @@     maybeReadPinEdge =         pinHasEdge p >>= \case           False -> return Nothing-          True ->-            do edge <- readPinEdge p-               return $ Just edge+          True -> Just <$> readPinEdge p  writeDirection :: (CatchSysfsM m) => Pin -> ByteString -> m () writeDirection p bs =
+ stack-lts-9.yaml view
@@ -0,0 +1,10 @@+require-stack-version: ">= 1.1.0"+pvp-bounds: both+resolver: lts-9.6+extra-deps:+- protolude-0.2+packages:+- .+flags:+  hpio:+    test-hlint: false
stack.yaml view
@@ -1,10 +1,5 @@ require-stack-version: ">= 1.1.0" pvp-bounds: both-resolver: lts-9.6-extra-deps:-- protolude-0.2+resolver: lts-10.3 packages: - .-flags:-  hpio:-    test-hlint: false