From b04727191595c0df8fa877c787b07aaac9b3d1de Mon Sep 17 00:00:00 2001 From: Jens Nolte <git@queezle.net> Date: Sun, 4 Sep 2022 23:05:19 +0200 Subject: [PATCH] Split timer into quasar-timer package Co-authored-by: Jan Beinke <git@janbeinke.com> --- cabal.project | 1 + flake.nix | 5 +- .ghci => quasar-timer/.ghci | 0 quasar-timer/LICENSE | 26 ++++++ quasar-timer/quasar-timer.cabal | 90 +++++++++++++++++++ {quasar => quasar-timer}/src/Quasar/Timer.hs | 0 .../src/Quasar/Timer/PosixTimer.hsc | 0 .../src/Quasar/Timer/TimerFd.hs | 0 quasar-timer/test/Spec.hs | 3 + quasar/quasar.cabal | 5 -- 10 files changed, 124 insertions(+), 6 deletions(-) rename .ghci => quasar-timer/.ghci (100%) create mode 100644 quasar-timer/LICENSE create mode 100644 quasar-timer/quasar-timer.cabal rename {quasar => quasar-timer}/src/Quasar/Timer.hs (100%) rename {quasar => quasar-timer}/src/Quasar/Timer/PosixTimer.hsc (100%) rename {quasar => quasar-timer}/src/Quasar/Timer/TimerFd.hs (100%) create mode 100644 quasar-timer/test/Spec.hs diff --git a/cabal.project b/cabal.project index 054da09..f966205 100644 --- a/cabal.project +++ b/cabal.project @@ -1,3 +1,4 @@ packages: quasar + quasar-timer stm-ltd diff --git a/flake.nix b/flake.nix index a9ff650..52c081b 100644 --- a/flake.nix +++ b/flake.nix @@ -24,6 +24,7 @@ quasar = pkgs.haskellPackages.quasar; quasar_ghc92 = (getHaskellPackages "ghc92.").quasar; quasar_ghc94 = (getHaskellPackages "ghc94.").quasar; + quasar-timer = pkgs.haskellPackages.quasar-timer; stm-ltd = pkgs.haskellPackages.stm-ltd; } ); @@ -31,8 +32,9 @@ overlay = final: prev: { haskell = prev.haskell // { packageOverrides = hfinal: hprev: prev.haskell.packageOverrides hfinal hprev // { - stm-ltd = hfinal.callCabal2nix "stm-ltd" ./stm-ltd {}; quasar = hfinal.callCabal2nix "quasar" ./quasar {}; + quasar-timer = hfinal.callCabal2nix "quasar-timer" ./quasar-timer {}; + stm-ltd = hfinal.callCabal2nix "stm-ltd" ./stm-ltd {}; }; }; }; @@ -43,6 +45,7 @@ in pkgs.mkShell { inputsFrom = [ self.packages.${system}.quasar.env + self.packages.${system}.quasar-timer.env self.packages.${system}.stm-ltd.env ]; packages = [ diff --git a/.ghci b/quasar-timer/.ghci similarity index 100% rename from .ghci rename to quasar-timer/.ghci diff --git a/quasar-timer/LICENSE b/quasar-timer/LICENSE new file mode 100644 index 0000000..21eaac4 --- /dev/null +++ b/quasar-timer/LICENSE @@ -0,0 +1,26 @@ +Copyright Jens Nolte (c) 2020 + +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. + +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/quasar-timer/quasar-timer.cabal b/quasar-timer/quasar-timer.cabal new file mode 100644 index 0000000..236296b --- /dev/null +++ b/quasar-timer/quasar-timer.cabal @@ -0,0 +1,90 @@ +cabal-version: 3.0 + +name: quasar-timer +version: 0.1.0.0 +license: BSD-2-Clause +build-type: Simple + +common shared-properties + default-extensions: + AllowAmbiguousTypes + BangPatterns + BlockArguments + ConstraintKinds + DataKinds + DefaultSignatures + DeriveAnyClass + DeriveGeneric + DerivingStrategies + DisambiguateRecordFields + DuplicateRecordFields + ExistentialQuantification + FlexibleContexts + FlexibleInstances + FunctionalDependencies + GADTs + GeneralizedNewtypeDeriving + ImportQualifiedPost + InstanceSigs + LambdaCase + -- Enable once 9.0.1 is required + --LexicalNegation + MultiParamTypeClasses + NamedFieldPuns + NoImplicitPrelude + NumericUnderscores + OverloadedStrings + PolyKinds + RankNTypes + ScopedTypeVariables + StandaloneDeriving + TupleSections + TypeApplications + TypeFamilies + TypeOperators + ViewPatterns + default-language: Haskell2010 + ghc-options: + -Weverything + -Wno-all-missed-specialisations + -Wno-missing-safe-haskell-mode + -Wno-missing-kind-signatures + -Wno-missing-import-lists + -Wno-unsafe + -Werror=incomplete-patterns + -Werror=missing-fields + -Werror=missing-home-modules + -Werror=missing-methods + +common shared-executable-properties + import: shared-properties + ghc-options: + -threaded + -rtsopts + "-with-rtsopts=-N -I0" + +library + import: shared-properties + build-depends: + base >=4.7 && <5, + exceptions, + heaps, + quasar, + time, + exposed-modules: + Quasar.Timer + Quasar.Timer.PosixTimer + Quasar.Timer.TimerFd + hs-source-dirs: + src + +test-suite quasar-timer-test + import: shared-executable-properties + type: exitcode-stdio-1.0 + build-depends: + base >=4.7 && <5, + hspec, + main-is: Spec.hs + other-modules: + hs-source-dirs: + test diff --git a/quasar/src/Quasar/Timer.hs b/quasar-timer/src/Quasar/Timer.hs similarity index 100% rename from quasar/src/Quasar/Timer.hs rename to quasar-timer/src/Quasar/Timer.hs diff --git a/quasar/src/Quasar/Timer/PosixTimer.hsc b/quasar-timer/src/Quasar/Timer/PosixTimer.hsc similarity index 100% rename from quasar/src/Quasar/Timer/PosixTimer.hsc rename to quasar-timer/src/Quasar/Timer/PosixTimer.hsc diff --git a/quasar/src/Quasar/Timer/TimerFd.hs b/quasar-timer/src/Quasar/Timer/TimerFd.hs similarity index 100% rename from quasar/src/Quasar/Timer/TimerFd.hs rename to quasar-timer/src/Quasar/Timer/TimerFd.hs diff --git a/quasar-timer/test/Spec.hs b/quasar-timer/test/Spec.hs new file mode 100644 index 0000000..e286043 --- /dev/null +++ b/quasar-timer/test/Spec.hs @@ -0,0 +1,3 @@ +{-# OPTIONS_GHC -F -pgmF hspec-discover #-} +{-# OPTIONS_GHC -Wno-missing-export-lists #-} +{-# OPTIONS_GHC -Wno-prepositive-qualified-module #-} diff --git a/quasar/quasar.cabal b/quasar/quasar.cabal index a71b688..3236bda 100644 --- a/quasar/quasar.cabal +++ b/quasar/quasar.cabal @@ -76,11 +76,9 @@ library exceptions, ghc-prim, hashable, - heaps, mtl, stm, stm-ltd, - time, transformers, transformers-base, unordered-containers, @@ -103,9 +101,6 @@ library Quasar.PreludeExtras Quasar.PreludeSTM Quasar.Resources - Quasar.Timer - Quasar.Timer.PosixTimer - Quasar.Timer.TimerFd Quasar.Utils.Exceptions Quasar.Utils.ExtraT Quasar.Utils.ReaderLock -- GitLab