From fc3c67af9c373e8ab37c53bdac7202226b8ce546 Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Fri, 31 Jul 2020 11:24:43 +0200 Subject: [PATCH 01/28] akshaymankar/ghc-8.8 --- libs/hscim/hscim.cabal | 22 ++++----- libs/hscim/package.yaml | 6 +-- nix/sources.json | 14 +++--- stack-deps.nix | 2 +- stack.yaml | 30 +++++++---- stack.yaml.lock | 107 +++++++++++++++++++++++++++++----------- 6 files changed, 120 insertions(+), 61 deletions(-) diff --git a/libs/hscim/hscim.cabal b/libs/hscim/hscim.cabal index 95d263a3692..94b6e1dc31c 100644 --- a/libs/hscim/hscim.cabal +++ b/libs/hscim/hscim.cabal @@ -1,10 +1,10 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.31.2. +-- This file has been generated from package.yaml by hpack version 0.33.0. -- -- see: https://github.com/sol/hpack -- --- hash: 1b9add2104b5ee4d50f0d991824c3a07c5c0816d995bb90e64c48ce47717d7c5 +-- hash: 6f50966a204628956d641ded5887d6d680439edc24085d2d5a39ffaa42bb9f48 name: hscim version: 0.3.4 @@ -72,7 +72,7 @@ library aeson >=1.4.5 && <1.5 , aeson-qq >=0.8.2 && <0.9 , attoparsec >=0.13.2 && <0.14 - , base >=4.12 && <4.13 + , base >=4.12 && <4.14 , bytestring >=0.10.8 && <0.11 , email-validate >=2.3.2 && <2.4 , errors >=2.3.0 && <2.4 @@ -97,9 +97,9 @@ library , stm >=2.5.0 && <2.6 , stm-containers >=1.1.0 && <1.2 , string-conversions >=0.4.0 && <0.5 - , template-haskell >=2.14.0 && <2.15 + , template-haskell >=2.14.0 && <2.16 , text >=1.2.3 && <1.3 - , time >=1.8.0 && <1.9 + , time >=1.8.0 && <1.10 , unordered-containers >=0.2.10 && <0.3 , uuid >=1.3.13 && <1.4 , vector >=0.12.0 && <0.13 @@ -121,7 +121,7 @@ executable hscim-server aeson >=1.4.5 && <1.5 , aeson-qq >=0.8.2 && <0.9 , attoparsec >=0.13.2 && <0.14 - , base >=4.12 && <4.13 + , base >=4.12 && <4.14 , bytestring >=0.10.8 && <0.11 , email-validate >=2.3.2 && <2.4 , errors >=2.3.0 && <2.4 @@ -147,9 +147,9 @@ executable hscim-server , stm >=2.5.0 && <2.6 , stm-containers >=1.1.0 && <1.2 , string-conversions >=0.4.0 && <0.5 - , template-haskell >=2.14.0 && <2.15 + , template-haskell >=2.14.0 && <2.16 , text >=1.2.3 && <1.3 - , time >=1.8.0 && <1.9 + , time >=1.8.0 && <1.10 , unordered-containers >=0.2.10 && <0.3 , uuid >=1.3.13 && <1.4 , vector >=0.12.0 && <0.13 @@ -183,7 +183,7 @@ test-suite spec aeson >=1.4.5 && <1.5 , aeson-qq >=0.8.2 && <0.9 , attoparsec >=0.13.2 && <0.14 - , base >=4.12 && <4.13 + , base >=4.12 && <4.14 , bytestring >=0.10.8 && <0.11 , email-validate >=2.3.2 && <2.4 , errors >=2.3.0 && <2.4 @@ -209,9 +209,9 @@ test-suite spec , stm >=2.5.0 && <2.6 , stm-containers >=1.1.0 && <1.2 , string-conversions >=0.4.0 && <0.5 - , template-haskell >=2.14.0 && <2.15 + , template-haskell >=2.14.0 && <2.16 , text >=1.2.3 && <1.3 - , time >=1.8.0 && <1.9 + , time >=1.8.0 && <1.10 , unordered-containers >=0.2.10 && <0.3 , uuid >=1.3.13 && <1.4 , vector >=0.12.0 && <0.13 diff --git a/libs/hscim/package.yaml b/libs/hscim/package.yaml index 1afdc336b6d..af12cfd2281 100644 --- a/libs/hscim/package.yaml +++ b/libs/hscim/package.yaml @@ -38,12 +38,12 @@ dependencies: - aeson >= 1.4.5 && < 1.5 - attoparsec >= 0.13.2 && < 0.14 - bytestring >= 0.10.8 && < 0.11 - - base >= 4.12 && < 4.13 + - base >= 4.12 && < 4.14 - scientific >= 0.3.6 && < 0.4 - hashable >= 1.2.7 && < 1.4 - text >= 1.2.3 && < 1.3 - - time >= 1.8.0 && < 1.9 - - template-haskell >= 2.14.0 && < 2.15 + - time >= 1.8.0 && < 1.10 + - template-haskell >= 2.14.0 && < 2.16 - unordered-containers >= 0.2.10 && < 0.3 - vector >= 0.12.0 && < 0.13 - aeson-qq >= 0.8.2 && < 0.9 diff --git a/nix/sources.json b/nix/sources.json index e4ab45d9d5f..7a8e7297c28 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -5,22 +5,22 @@ "homepage": "https://github.com/nmattia/niv", "owner": "nmattia", "repo": "niv", - "rev": "50600603b51432839c4b6267fd6a0d00ae6b0451", - "sha256": "1rrhlscbqdn9a77ws49acl536n3mz6bai68z08mpg8qqa4ahr2sn", + "rev": "ab9cc41caf44d1f1d465d8028e4bc0096fd73238", + "sha256": "17k52n8zwp832cqifsc4458mhy4044wmk22f807171hf6p7l4xvr", "type": "tarball", - "url": "https://github.com/nmattia/niv/archive/50600603b51432839c4b6267fd6a0d00ae6b0451.tar.gz", + "url": "https://github.com/nmattia/niv/archive/ab9cc41caf44d1f1d465d8028e4bc0096fd73238.tar.gz", "url_template": "https://github.com///archive/.tar.gz" }, "nixpkgs": { - "branch": "nixos-19.09", + "branch": "nixos-20.03", "description": "A read-only mirror of NixOS/nixpkgs tracking the released channels. Send issues and PRs to", "homepage": "https://github.com/NixOS/nixpkgs", "owner": "NixOS", "repo": "nixpkgs-channels", - "rev": "8731aaaf8b30888bc24994096db830993090d7c4", - "sha256": "1hcc89rxi47nb0mpk05nl9rbbb04kfw97xfydhpmmgh57yrp3zqa", + "rev": "7c85b91589222b3710e9ff24b228b83f8be8e937", + "sha256": "1cgvlc92gkpwy5i8f7li9051jypaq20631l735j9z03ajv80jvxm", "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs-channels/archive/8731aaaf8b30888bc24994096db830993090d7c4.tar.gz", + "url": "https://github.com/NixOS/nixpkgs-channels/archive/7c85b91589222b3710e9ff24b228b83f8be8e937.tar.gz", "url_template": "https://github.com///archive/.tar.gz" } } diff --git a/stack-deps.nix b/stack-deps.nix index d29487c53ba..282d2595f2c 100644 --- a/stack-deps.nix +++ b/stack-deps.nix @@ -17,5 +17,5 @@ pkgs.haskell.lib.buildStackProject { snappy zlib ]; - ghc = pkgs.haskell.compiler.ghc865; + ghc = pkgs.haskell.compiler.ghc883; } diff --git a/stack.yaml b/stack.yaml index d417313b894..46202d7117e 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,4 +1,4 @@ -resolver: lts-14.27 +resolver: lts-16.7 packages: - libs/api-bot @@ -55,7 +55,7 @@ nix: allow-newer: true extra-deps: -- swagger2-2.4 +# - swagger2-2.4 - git: https://github.com/fimad/prometheus-haskell commit: 2e3282e5fb27ba8d989c271a0a989823fad7ec43 subdirs: @@ -136,19 +136,17 @@ extra-deps: # Dropped from upstream snapshot - template-0.2.0.10 -- HaskellNet-0.5.1 +- HaskellNet-0.5.2 - HaskellNet-SSL-0.3.4.1 - snappy-0.2.0.2 - smtp-mail-0.2.0.0 -- stm-containers-1.1.0.4 +- stm-containers-1.1.0.4 # Latest: lts-15.16 - redis-io-1.0.0 - redis-resp-1.0.0 -- hedgehog-quickcheck-0.1.1 - -# Only in nightly -- stm-hamt-1.2.0.4 -- optics-th-0.2 -- primitive-unlifted-0.1.2.0 +- stm-hamt-1.2.0.4 # Latest: lts-15.16 +# - hedgehog-quickcheck-0.1.1 +# - optics-th-0.2 +- primitive-unlifted-0.1.2.0 # Latest: lts-15.16 # Not on stackage - currency-codes-3.0.0.1 @@ -182,3 +180,15 @@ extra-deps: - ghc-lib-parser-8.10.1.20200412@sha256:b0517bb150a02957d7180f131f5b94abd2a7f58a7d1532a012e71618282339c2,8751 # for ormolu-0.1.2.0 - headroom-0.2.1.0 + +## For lts-16.7 +- HsOpenSSL-x509-system-0.1.0.3@sha256:f4958ee0eec555c5c213662eff6764bddefe5665e2afcfd32733ce3801a9b687,1774 +- cql-4.0.2@sha256:a0006a5ac13d6f86d5eff28c11be80928246309f217ea6d5f5c8a76a5d16b48b,3157 +- cql-io-1.1.1@sha256:897ef0811b227c8b1a269b29b9c1ebfb09c46f00d66834e2e8c6f19ea7f90f7d,4611 +- hex-0.1.2@sha256:1ea06834d1b5616edda6601b2945c5242b44cff9be84ff3a27595a136dcb154e,616 +- primitive-extras-0.8@sha256:fca0310150496867f5b9421fe1541ecda87fae17eae44885a29f9c52dd00c8ff,2963 +- servant-multipart-0.11.6@sha256:1863862e507dd6f672b4c9d2c6d87d4faec19686ced3d828d712ada07536cddb,2655 +- text-format-0.3.2@sha256:2a3fc17cf87120fcfdbca62a0da59759755549285841cdc1483081c35fb3d115,1814 +- wai-predicates-0.10.0@sha256:6b096fd8c4487e06e910911ed35447756aa217426c39db44a4bdc55e0131b9aa,2849 +- quickcheck-state-machine-0.7.0@sha256:4fc4467380e35b88aab72c278856aacebbf95688059d8ad70eb82fe048df476b,4958 +- markov-chain-usage-model-0.0.0@sha256:1afa95faeb9213c4d960a669190078b41b89169462b8edd910472980671ba8c0,2112 diff --git a/stack.yaml.lock b/stack.yaml.lock index 1d2d2035253..0e55b8f59df 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -4,13 +4,6 @@ # https://docs.haskellstack.org/en/stable/lock_files packages: -- completed: - hackage: swagger2-2.4@sha256:3fde8c2c6bc091738cba62e63c29d690b711848560d86e82615516869f76140b,4415 - pantry-tree: - size: 2192 - sha256: f4ae95200dfc2f44699a39f533dd6889107aff61f52e988c13edad8fcb30faef - original: - hackage: swagger2-2.4 - completed: subdir: wai-middleware-prometheus name: wai-middleware-prometheus @@ -317,12 +310,12 @@ packages: original: hackage: template-0.2.0.10 - completed: - hackage: HaskellNet-0.5.1@sha256:53f2cfffb140740691296f905a70143c859b571eea3f5cf5f7a4642851d9e38a,1584 + hackage: HaskellNet-0.5.2@sha256:77fb8466fcbeb76f17366ffd7deb37550b6ea08a4d08bf721d0b597c2573336d,2069 pantry-tree: - size: 1437 - sha256: e0806ea13b946dfc785bf9580e126cfcb8d3c6f21e1fbe313374745c3a8a8b99 + size: 1499 + sha256: 20f0361675729e606fb37b8a1865f4bd49d952f2d0148693b62f68fadf5801d5 original: - hackage: HaskellNet-0.5.1 + hackage: HaskellNet-0.5.2 - completed: hackage: HaskellNet-SSL-0.3.4.1@sha256:3ca14dd69460a380cf69aed40654fb10c4c03e344632b6a9986568c87feda157,1843 pantry-tree: @@ -365,13 +358,6 @@ packages: sha256: c63020c2f2ca4f92c4747959a2e89e84bdd929d1ea1458c75552ee3f7aaa00fc original: hackage: redis-resp-1.0.0 -- completed: - hackage: hedgehog-quickcheck-0.1.1@sha256:7f4d4197d65314b0117857ff7e530d84f456b124e93024952bf9b01d8c1cc1b2,1552 - pantry-tree: - size: 407 - sha256: 2052d8dae458f1832b598a8de139eb91dfb23432a52fec16e9d48f90909fdc17 - original: - hackage: hedgehog-quickcheck-0.1.1 - completed: hackage: stm-hamt-1.2.0.4@sha256:7957497c022554b7599e790696d1a3e56359ad99e5da36a251894c626ca1f60a,3970 pantry-tree: @@ -379,13 +365,6 @@ packages: sha256: d9a8be48da86bd4a2ba9d52ea29b9a74f1b686d439ba1bbfba04ab1a002391da original: hackage: stm-hamt-1.2.0.4 -- completed: - hackage: optics-th-0.2@sha256:b4f6c5a3f134c697837190ed6da969dd284aefe79e43c3ef793093b607bb83b9,1929 - pantry-tree: - size: 653 - sha256: f6b5caed956d3761b35769ac518d3f0f407449dafe33154992386f02d9489bad - original: - hackage: optics-th-0.2 - completed: hackage: primitive-unlifted-0.1.2.0@sha256:9c3df73af54ed19fb3f4874da19334863cc414b22e578e27b5f52beeac4a60dd,1360 pantry-tree: @@ -526,9 +505,79 @@ packages: sha256: 11d2ac77cee54cc1f222e574e4126189fe5b60a47a1aedbafc2ab0de709b29c6 original: hackage: headroom-0.2.1.0 +- completed: + hackage: HsOpenSSL-x509-system-0.1.0.3@sha256:f4958ee0eec555c5c213662eff6764bddefe5665e2afcfd32733ce3801a9b687,1774 + pantry-tree: + size: 503 + sha256: 2a097abbccc0382ebb565c8ab9932628f33471607c2174303c3c930d7685bd18 + original: + hackage: HsOpenSSL-x509-system-0.1.0.3@sha256:f4958ee0eec555c5c213662eff6764bddefe5665e2afcfd32733ce3801a9b687,1774 +- completed: + hackage: cql-4.0.2@sha256:a0006a5ac13d6f86d5eff28c11be80928246309f217ea6d5f5c8a76a5d16b48b,3157 + pantry-tree: + size: 1281 + sha256: 8cc6e57c6a794188ae79415cee38bd29e1c07f7426cfa533c9a57523c0a2ed23 + original: + hackage: cql-4.0.2@sha256:a0006a5ac13d6f86d5eff28c11be80928246309f217ea6d5f5c8a76a5d16b48b,3157 +- completed: + hackage: cql-io-1.1.1@sha256:897ef0811b227c8b1a269b29b9c1ebfb09c46f00d66834e2e8c6f19ea7f90f7d,4611 + pantry-tree: + size: 2067 + sha256: 7ced76ae95b51fa1669b4fcaeec3825b5cb8cf1f4e37c53d0bddf6234742eba8 + original: + hackage: cql-io-1.1.1@sha256:897ef0811b227c8b1a269b29b9c1ebfb09c46f00d66834e2e8c6f19ea7f90f7d,4611 +- completed: + hackage: hex-0.1.2@sha256:1ea06834d1b5616edda6601b2945c5242b44cff9be84ff3a27595a136dcb154e,616 + pantry-tree: + size: 197 + sha256: 4d16492d2bf61d231c94e10a55d5fed2f33521e09ae9cf0c511700992b919191 + original: + hackage: hex-0.1.2@sha256:1ea06834d1b5616edda6601b2945c5242b44cff9be84ff3a27595a136dcb154e,616 +- completed: + hackage: primitive-extras-0.8@sha256:fca0310150496867f5b9421fe1541ecda87fae17eae44885a29f9c52dd00c8ff,2963 + pantry-tree: + size: 1105 + sha256: e7c1d26202b80d1fca2ef780ec7fe76ede1275f4d9a996c6d44c08d8de1c45db + original: + hackage: primitive-extras-0.8@sha256:fca0310150496867f5b9421fe1541ecda87fae17eae44885a29f9c52dd00c8ff,2963 +- completed: + hackage: servant-multipart-0.11.6@sha256:1863862e507dd6f672b4c9d2c6d87d4faec19686ced3d828d712ada07536cddb,2655 + pantry-tree: + size: 386 + sha256: 3d45dc52822a30de2ee524358bf91ad77c041c4385ab75d636effa17e02e351e + original: + hackage: servant-multipart-0.11.6@sha256:1863862e507dd6f672b4c9d2c6d87d4faec19686ced3d828d712ada07536cddb,2655 +- completed: + hackage: text-format-0.3.2@sha256:2a3fc17cf87120fcfdbca62a0da59759755549285841cdc1483081c35fb3d115,1814 + pantry-tree: + size: 1029 + sha256: 2db26ddb77184186e0d5b2b020bdfbeb044c168024767b1fa3691682ca618896 + original: + hackage: text-format-0.3.2@sha256:2a3fc17cf87120fcfdbca62a0da59759755549285841cdc1483081c35fb3d115,1814 +- completed: + hackage: wai-predicates-0.10.0@sha256:6b096fd8c4487e06e910911ed35447756aa217426c39db44a4bdc55e0131b9aa,2849 + pantry-tree: + size: 1378 + sha256: d3325d68312f18fc76fb2ef687c9de5c5aaa74294e79158f1c41824e120ce92e + original: + hackage: wai-predicates-0.10.0@sha256:6b096fd8c4487e06e910911ed35447756aa217426c39db44a4bdc55e0131b9aa,2849 +- completed: + hackage: quickcheck-state-machine-0.7.0@sha256:4fc4467380e35b88aab72c278856aacebbf95688059d8ad70eb82fe048df476b,4958 + pantry-tree: + size: 3022 + sha256: 045794fff983e385560b321ff5576f6ec5c2821748c3042053f72daaca7beba8 + original: + hackage: quickcheck-state-machine-0.7.0@sha256:4fc4467380e35b88aab72c278856aacebbf95688059d8ad70eb82fe048df476b,4958 +- completed: + hackage: markov-chain-usage-model-0.0.0@sha256:1afa95faeb9213c4d960a669190078b41b89169462b8edd910472980671ba8c0,2112 + pantry-tree: + size: 432 + sha256: 6871bd9281acf589296d0998a3d62892b036040ab10e74e8a0f356f68c194f4f + original: + hackage: markov-chain-usage-model-0.0.0@sha256:1afa95faeb9213c4d960a669190078b41b89169462b8edd910472980671ba8c0,2112 snapshots: - completed: - size: 524996 - url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/14/27.yaml - sha256: 7ea31a280c56bf36ff591a7397cc384d0dff622e7f9e4225b47d8980f019a0f0 - original: lts-14.27 + size: 531932 + url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/16/7.yaml + sha256: 96ceeddd4fd68b2d430f7695a12eadefee760b7034c88c75d99d0f380f483068 + original: lts-16.7 From 940844980adee457a8ec98a413b018d0e2a22c0e Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Fri, 31 Jul 2020 16:05:37 +0200 Subject: [PATCH 02/28] WIP --- stack.yaml | 7 +++++-- stack.yaml.lock | 29 +++++++++++------------------ 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/stack.yaml b/stack.yaml index 46202d7117e..e9f47bb882a 100644 --- a/stack.yaml +++ b/stack.yaml @@ -88,7 +88,7 @@ extra-deps: commit: 0a5142cd3ba48116ff059c041348b817fb7bdb25 - git: https://github.com/wireapp/bloodhound - commit: 7d3ccf8039912829b26b8e47cc4eaabc98cb571a # (2020-05-25) branch: feature/reindex + commit: 8c2b6f77bf6cd2506ea0ad3c1cd1251c9f42545b # (2020-05-25) branch: wire-fork-ghc-8.8 # For bloodhound - deriving-aeson-0.2.5@sha256:a1efa4ab7ff94f73e6d2733a9d4414cb4c3526761295722cff28027b5b3da1a4,1277 @@ -185,10 +185,13 @@ extra-deps: - HsOpenSSL-x509-system-0.1.0.3@sha256:f4958ee0eec555c5c213662eff6764bddefe5665e2afcfd32733ce3801a9b687,1774 - cql-4.0.2@sha256:a0006a5ac13d6f86d5eff28c11be80928246309f217ea6d5f5c8a76a5d16b48b,3157 - cql-io-1.1.1@sha256:897ef0811b227c8b1a269b29b9c1ebfb09c46f00d66834e2e8c6f19ea7f90f7d,4611 -- hex-0.1.2@sha256:1ea06834d1b5616edda6601b2945c5242b44cff9be84ff3a27595a136dcb154e,616 - primitive-extras-0.8@sha256:fca0310150496867f5b9421fe1541ecda87fae17eae44885a29f9c52dd00c8ff,2963 - servant-multipart-0.11.6@sha256:1863862e507dd6f672b4c9d2c6d87d4faec19686ced3d828d712ada07536cddb,2655 - text-format-0.3.2@sha256:2a3fc17cf87120fcfdbca62a0da59759755549285841cdc1483081c35fb3d115,1814 - wai-predicates-0.10.0@sha256:6b096fd8c4487e06e910911ed35447756aa217426c39db44a4bdc55e0131b9aa,2849 - quickcheck-state-machine-0.7.0@sha256:4fc4467380e35b88aab72c278856aacebbf95688059d8ad70eb82fe048df476b,4958 - markov-chain-usage-model-0.0.0@sha256:1afa95faeb9213c4d960a669190078b41b89169462b8edd910472980671ba8c0,2112 + +# Forked due to ghc-8.8 +- git: https://github.com/akshaymankar/haskell-hex + commit: 85795a95dde91583f31a028fe399b35ab9e4b5d0 diff --git a/stack.yaml.lock b/stack.yaml.lock index 0e55b8f59df..b383eedf07b 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -83,17 +83,6 @@ packages: original: git: https://github.com/wireapp/hspec-wai commit: 0a5142cd3ba48116ff059c041348b817fb7bdb25 -- completed: - name: bloodhound - version: 0.17.0.0 - git: https://github.com/wireapp/bloodhound - pantry-tree: - size: 4343 - sha256: f3d35894f570e67a68303e71134a722909151f4de232093375a63b7935a4b761 - commit: 7d3ccf8039912829b26b8e47cc4eaabc98cb571a - original: - git: https://github.com/wireapp/bloodhound - commit: 7d3ccf8039912829b26b8e47cc4eaabc98cb571a - completed: hackage: deriving-aeson-0.2.5@sha256:a1efa4ab7ff94f73e6d2733a9d4414cb4c3526761295722cff28027b5b3da1a4,1277 pantry-tree: @@ -526,13 +515,6 @@ packages: sha256: 7ced76ae95b51fa1669b4fcaeec3825b5cb8cf1f4e37c53d0bddf6234742eba8 original: hackage: cql-io-1.1.1@sha256:897ef0811b227c8b1a269b29b9c1ebfb09c46f00d66834e2e8c6f19ea7f90f7d,4611 -- completed: - hackage: hex-0.1.2@sha256:1ea06834d1b5616edda6601b2945c5242b44cff9be84ff3a27595a136dcb154e,616 - pantry-tree: - size: 197 - sha256: 4d16492d2bf61d231c94e10a55d5fed2f33521e09ae9cf0c511700992b919191 - original: - hackage: hex-0.1.2@sha256:1ea06834d1b5616edda6601b2945c5242b44cff9be84ff3a27595a136dcb154e,616 - completed: hackage: primitive-extras-0.8@sha256:fca0310150496867f5b9421fe1541ecda87fae17eae44885a29f9c52dd00c8ff,2963 pantry-tree: @@ -575,6 +557,17 @@ packages: sha256: 6871bd9281acf589296d0998a3d62892b036040ab10e74e8a0f356f68c194f4f original: hackage: markov-chain-usage-model-0.0.0@sha256:1afa95faeb9213c4d960a669190078b41b89169462b8edd910472980671ba8c0,2112 +- completed: + name: hex + version: 0.1.1 + git: https://github.com/akshaymankar/haskell-hex + pantry-tree: + size: 197 + sha256: 5776a07f09545dc94c374760e63d80153833eff7a2bd16065377f88ad3cbdf96 + commit: 85795a95dde91583f31a028fe399b35ab9e4b5d0 + original: + git: https://github.com/akshaymankar/haskell-hex + commit: 85795a95dde91583f31a028fe399b35ab9e4b5d0 snapshots: - completed: size: 531932 From 11a9602192f5a8ae4cc724ce8b3bc8113e394063 Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Thu, 20 Aug 2020 13:51:17 +0200 Subject: [PATCH 03/28] More WIP --- stack.yaml | 2 +- stack.yaml.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/stack.yaml b/stack.yaml index e9f47bb882a..295cf52497d 100644 --- a/stack.yaml +++ b/stack.yaml @@ -124,7 +124,7 @@ extra-deps: commit: 7546a1a25635ef65183e3d44c1052285e8401608 # master (Jul 21, 2016) - git: https://github.com/wireapp/hsaml2 - commit: fe08618e81dee9b7a25f10f5b9d26d1ff1837c79 # master (Mar 25, 2020) + commit: 26edb4507084b1860bf8a1b49b306f41e31b3189 # pull-upstream (Aug 20, 2020) - git: https://github.com/wireapp/http-client commit: 9100baeddbd15d93dc58a826ae812dafff29d5fd # master (Jun 16, 2020) diff --git a/stack.yaml.lock b/stack.yaml.lock index b383eedf07b..56bc7630bb2 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -234,11 +234,11 @@ packages: git: https://github.com/wireapp/hsaml2 pantry-tree: size: 3918 - sha256: a90ad3e25ab6ba579ea4d347c8734f92f73e323303c91d53729ddc8784774f72 - commit: fe08618e81dee9b7a25f10f5b9d26d1ff1837c79 + sha256: ea8078ffc4228fb085c7c95d2de73b1a9e4cbd80011396ccbd467bb88d03080e + commit: 26edb4507084b1860bf8a1b49b306f41e31b3189 original: git: https://github.com/wireapp/hsaml2 - commit: fe08618e81dee9b7a25f10f5b9d26d1ff1837c79 + commit: 26edb4507084b1860bf8a1b49b306f41e31b3189 - completed: subdir: http-client name: http-client From dbd60ac5755ac14603eff2786cbe532385bbdfc7 Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Sat, 22 Aug 2020 12:30:52 +0200 Subject: [PATCH 04/28] Moar WIP --- stack.yaml | 10 ++++++---- stack.yaml.lock | 34 +++++++++++++++++++--------------- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/stack.yaml b/stack.yaml index 295cf52497d..b82632a151d 100644 --- a/stack.yaml +++ b/stack.yaml @@ -64,7 +64,7 @@ extra-deps: # a version > 1.0.0 of wai-middleware-prometheus is available # (required: https://github.com/fimad/prometheus-haskell/pull/45) - git: https://github.com/wireapp/saml2-web-sso - commit: 687d9ac8ac2994aff8436189c6ecce29faad8500 # master (May 18, 2020) + commit: be04baaffb92ff64d8e1d9f400ec45849d754faf # akshaymankar/ghc-8.8 (Aug 21, 2020) - git: https://github.com/kim/hs-collectd commit: 885da222be2375f78c7be36127620ed772b677c9 @@ -124,7 +124,7 @@ extra-deps: commit: 7546a1a25635ef65183e3d44c1052285e8401608 # master (Jul 21, 2016) - git: https://github.com/wireapp/hsaml2 - commit: 26edb4507084b1860bf8a1b49b306f41e31b3189 # pull-upstream (Aug 20, 2020) + commit: 2ff7b0c11a9d510f1ec411f436bc134b216ebd4a # pull-upstream (Aug 20, 2020) - git: https://github.com/wireapp/http-client commit: 9100baeddbd15d93dc58a826ae812dafff29d5fd # master (Jun 16, 2020) @@ -186,9 +186,11 @@ extra-deps: - cql-4.0.2@sha256:a0006a5ac13d6f86d5eff28c11be80928246309f217ea6d5f5c8a76a5d16b48b,3157 - cql-io-1.1.1@sha256:897ef0811b227c8b1a269b29b9c1ebfb09c46f00d66834e2e8c6f19ea7f90f7d,4611 - primitive-extras-0.8@sha256:fca0310150496867f5b9421fe1541ecda87fae17eae44885a29f9c52dd00c8ff,2963 -- servant-multipart-0.11.6@sha256:1863862e507dd6f672b4c9d2c6d87d4faec19686ced3d828d712ada07536cddb,2655 +- servant-multipart-0.11.5 # Dropped from stackage, 0.11.6 has a breaking change - text-format-0.3.2@sha256:2a3fc17cf87120fcfdbca62a0da59759755549285841cdc1483081c35fb3d115,1814 -- wai-predicates-0.10.0@sha256:6b096fd8c4487e06e910911ed35447756aa217426c39db44a4bdc55e0131b9aa,2849 +# - wai-predicates-0.10.0@sha256:6b096fd8c4487e06e910911ed35447756aa217426c39db44a4bdc55e0131b9aa,2849 +- git: https://gitlab.com/axeman/wai-predicates.git + commit: dc8813c17645251c050599485cdc2b5874daac30 - quickcheck-state-machine-0.7.0@sha256:4fc4467380e35b88aab72c278856aacebbf95688059d8ad70eb82fe048df476b,4958 - markov-chain-usage-model-0.0.0@sha256:1afa95faeb9213c4d960a669190078b41b89169462b8edd910472980671ba8c0,2112 diff --git a/stack.yaml.lock b/stack.yaml.lock index 56bc7630bb2..048147ae807 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -22,12 +22,12 @@ packages: version: '0.18' git: https://github.com/wireapp/saml2-web-sso pantry-tree: - size: 4601 - sha256: 58cd6e1435b4ad530b99de3f9c7ffbf7d8644ebc75f2da22b2521e4347a92701 - commit: 687d9ac8ac2994aff8436189c6ecce29faad8500 + size: 4657 + sha256: c1c5ff18a9c8996aa33dd571662033928cda4ae4ebcda98b6777f8ebd0cc7102 + commit: be04baaffb92ff64d8e1d9f400ec45849d754faf original: git: https://github.com/wireapp/saml2-web-sso - commit: 687d9ac8ac2994aff8436189c6ecce29faad8500 + commit: be04baaffb92ff64d8e1d9f400ec45849d754faf - completed: name: collectd version: 0.0.0.2 @@ -234,11 +234,11 @@ packages: git: https://github.com/wireapp/hsaml2 pantry-tree: size: 3918 - sha256: ea8078ffc4228fb085c7c95d2de73b1a9e4cbd80011396ccbd467bb88d03080e - commit: 26edb4507084b1860bf8a1b49b306f41e31b3189 + sha256: c2f2849bc28cc7fb8a4ec843dbc7606df179915dc54c5cc2aa2e30b974ef3d61 + commit: 2ff7b0c11a9d510f1ec411f436bc134b216ebd4a original: git: https://github.com/wireapp/hsaml2 - commit: 26edb4507084b1860bf8a1b49b306f41e31b3189 + commit: 2ff7b0c11a9d510f1ec411f436bc134b216ebd4a - completed: subdir: http-client name: http-client @@ -523,12 +523,12 @@ packages: original: hackage: primitive-extras-0.8@sha256:fca0310150496867f5b9421fe1541ecda87fae17eae44885a29f9c52dd00c8ff,2963 - completed: - hackage: servant-multipart-0.11.6@sha256:1863862e507dd6f672b4c9d2c6d87d4faec19686ced3d828d712ada07536cddb,2655 + hackage: servant-multipart-0.11.5@sha256:1633f715b5b53d648a1da69839bdc5046599f4f7244944d4bbf852dba38d8f4b,2319 pantry-tree: - size: 386 - sha256: 3d45dc52822a30de2ee524358bf91ad77c041c4385ab75d636effa17e02e351e + size: 333 + sha256: b3e1fd2ad2e654475be000c2f0ac6f717b5499436fa73eec50ceccddf352dcec original: - hackage: servant-multipart-0.11.6@sha256:1863862e507dd6f672b4c9d2c6d87d4faec19686ced3d828d712ada07536cddb,2655 + hackage: servant-multipart-0.11.5 - completed: hackage: text-format-0.3.2@sha256:2a3fc17cf87120fcfdbca62a0da59759755549285841cdc1483081c35fb3d115,1814 pantry-tree: @@ -537,12 +537,16 @@ packages: original: hackage: text-format-0.3.2@sha256:2a3fc17cf87120fcfdbca62a0da59759755549285841cdc1483081c35fb3d115,1814 - completed: - hackage: wai-predicates-0.10.0@sha256:6b096fd8c4487e06e910911ed35447756aa217426c39db44a4bdc55e0131b9aa,2849 + name: wai-predicates + version: 0.10.0 + git: https://gitlab.com/axeman/wai-predicates.git pantry-tree: - size: 1378 - sha256: d3325d68312f18fc76fb2ef687c9de5c5aaa74294e79158f1c41824e120ce92e + size: 1585 + sha256: 64b646102d2a187aa662c00f20071cc8e2574da9240bacbf4710a4928528f0d7 + commit: dc8813c17645251c050599485cdc2b5874daac30 original: - hackage: wai-predicates-0.10.0@sha256:6b096fd8c4487e06e910911ed35447756aa217426c39db44a4bdc55e0131b9aa,2849 + git: https://gitlab.com/axeman/wai-predicates.git + commit: dc8813c17645251c050599485cdc2b5874daac30 - completed: hackage: quickcheck-state-machine-0.7.0@sha256:4fc4467380e35b88aab72c278856aacebbf95688059d8ad70eb82fe048df476b,4958 pantry-tree: From 76b146af0813ecb0d301c1d56e58862aaecba1b1 Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Mon, 24 Aug 2020 13:38:27 +0200 Subject: [PATCH 05/28] Get deps in order --- stack.yaml | 9 ++++++--- stack.yaml.lock | 42 +++++++++++++++++++++++++----------------- 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/stack.yaml b/stack.yaml index b82632a151d..d3551e62a7b 100644 --- a/stack.yaml +++ b/stack.yaml @@ -137,11 +137,9 @@ extra-deps: # Dropped from upstream snapshot - template-0.2.0.10 - HaskellNet-0.5.2 -- HaskellNet-SSL-0.3.4.1 - snappy-0.2.0.2 - smtp-mail-0.2.0.0 - stm-containers-1.1.0.4 # Latest: lts-15.16 -- redis-io-1.0.0 - redis-resp-1.0.0 - stm-hamt-1.2.0.4 # Latest: lts-15.16 # - hedgehog-quickcheck-0.1.1 @@ -196,4 +194,9 @@ extra-deps: # Forked due to ghc-8.8 - git: https://github.com/akshaymankar/haskell-hex - commit: 85795a95dde91583f31a028fe399b35ab9e4b5d0 + commit: d20af1ce51381b67a9cd63657a931d80b640f361 # ghc-8.8 (Aug 24, 2020) + +- git: https://gitlab.com/axeman/redis-io.git + commit: e113fa4de8fcc3665c3c562a05a07f7a1d63b3cc # ghc-8.8 (Aug 24, 2020) +- git: https://github.com/zoominsoftware/HaskellNet-SSL + commit: 5b4f4ab49a6321b57f6dbeba64a7f4bb8ffa5cbc # allow-newer-network, dpwright/HaskellNet-SSL#24 (Aug 24, 2020) diff --git a/stack.yaml.lock b/stack.yaml.lock index 048147ae807..b7211babca9 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -305,13 +305,6 @@ packages: sha256: 20f0361675729e606fb37b8a1865f4bd49d952f2d0148693b62f68fadf5801d5 original: hackage: HaskellNet-0.5.2 -- completed: - hackage: HaskellNet-SSL-0.3.4.1@sha256:3ca14dd69460a380cf69aed40654fb10c4c03e344632b6a9986568c87feda157,1843 - pantry-tree: - size: 577 - sha256: 33fbfd0d8bbaa689f0169d442861dafcdcd4fe795a4b42aa0bedbfa41aa65b23 - original: - hackage: HaskellNet-SSL-0.3.4.1 - completed: hackage: snappy-0.2.0.2@sha256:2931b03c5fdab2dac8d7eadb3be2f4ef8906666e43f1f1db65a06efd57ea701b,1591 pantry-tree: @@ -333,13 +326,6 @@ packages: sha256: 059c5a2d657d392aca0a887648f57380d6321734dc8879c056a44d4414308ac6 original: hackage: stm-containers-1.1.0.4 -- completed: - hackage: redis-io-1.0.0@sha256:8885d41408ec7305d7503e21bd3f334fb02fb2367d26b9998d8a6fcbccf8339b,2734 - pantry-tree: - size: 855 - sha256: ed28c921459e22410513f00d97c9915bcba7f7b083a8b80d067fc5c5114a9db1 - original: - hackage: redis-io-1.0.0 - completed: hackage: redis-resp-1.0.0@sha256:c134ac23e79d57071fdc8559e2b2e72280ea11786a8ba4118c10ed506dc7d991,1615 pantry-tree: @@ -567,11 +553,33 @@ packages: git: https://github.com/akshaymankar/haskell-hex pantry-tree: size: 197 - sha256: 5776a07f09545dc94c374760e63d80153833eff7a2bd16065377f88ad3cbdf96 - commit: 85795a95dde91583f31a028fe399b35ab9e4b5d0 + sha256: dc3375135f836ce0073f10225476cda3ea723524a731534c516499041f10646b + commit: d20af1ce51381b67a9cd63657a931d80b640f361 original: git: https://github.com/akshaymankar/haskell-hex - commit: 85795a95dde91583f31a028fe399b35ab9e4b5d0 + commit: d20af1ce51381b67a9cd63657a931d80b640f361 +- completed: + name: redis-io + version: 1.0.0 + git: https://gitlab.com/axeman/redis-io.git + pantry-tree: + size: 912 + sha256: cab38ce5d67d9089342f001b9abf874d7065e5f45aac82aa02b6c01e7b61a248 + commit: e113fa4de8fcc3665c3c562a05a07f7a1d63b3cc + original: + git: https://gitlab.com/axeman/redis-io.git + commit: e113fa4de8fcc3665c3c562a05a07f7a1d63b3cc +- completed: + name: HaskellNet-SSL + version: 0.3.4.2 + git: https://github.com/zoominsoftware/HaskellNet-SSL + pantry-tree: + size: 786 + sha256: c6a64c9e64bc834842756be28eaac2d842f0dde3753542bfa0cfd87ae5cf0bc5 + commit: 5b4f4ab49a6321b57f6dbeba64a7f4bb8ffa5cbc + original: + git: https://github.com/zoominsoftware/HaskellNet-SSL + commit: 5b4f4ab49a6321b57f6dbeba64a7f4bb8ffa5cbc snapshots: - completed: size: 531932 From 4c3d41d2662f7cf376d542d68c92db9ea367abec Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Mon, 24 Aug 2020 13:38:49 +0200 Subject: [PATCH 06/28] WIP: Deal with breakage in our code --- libs/bilge/src/Bilge/Assert.hs | 1 - libs/bilge/src/Bilge/IO.hs | 1 - libs/brig-types/src/Brig/Types/Instances.hs | 16 +++---- .../brig-types/src/Brig/Types/Provider/Tag.hs | 1 - libs/extended/src/Servant/API/Extended.hs | 2 - libs/galley-types/src/Galley/Types.hs | 1 - libs/galley-types/src/Galley/Types/Teams.hs | 1 - .../gundeck-types/src/Gundeck/Types/Common.hs | 2 +- .../src/Web/Scim/Capabilities/MetaSchema.hs | 1 - libs/hscim/src/Web/Scim/Class/Group.hs | 1 - libs/hscim/src/Web/Scim/Class/User.hs | 1 - libs/hscim/src/Web/Scim/Schema/PatchOp.hs | 1 - libs/hscim/src/Web/Scim/Schema/User.hs | 1 - libs/hscim/src/Web/Scim/Server.hs | 1 - libs/hscim/src/Web/Scim/Test/Util.hs | 2 +- libs/imports/src/Imports.hs | 1 - .../src/Data/Metrics/Middleware/Prometheus.hs | 2 - libs/ssl-util/src/Ssl/Util.hs | 1 - libs/tasty-cannon/src/Test/Tasty/Cannon.hs | 2 +- libs/types-common-aws/src/Util/Test/SQS.hs | 2 +- libs/types-common-journal/src/Data/Proto.hs | 1 - libs/types-common/src/Data/Json/Util.hs | 2 +- libs/types-common/src/Data/LegalHold.hs | 4 +- libs/types-common/src/Data/List1.hs | 2 +- libs/types-common/src/Data/Misc.hs | 11 ++--- libs/types-common/src/Util/Options.hs | 3 +- libs/wire-api/src/Wire/API/Call/Config.hs | 2 +- .../src/Wire/API/Event/Conversation.hs | 1 - libs/wire-api/src/Wire/API/Team/Permission.hs | 2 +- libs/wire-api/src/Wire/API/Team/Role.hs | 4 +- libs/wire-api/src/Wire/API/User/RichInfo.hs | 5 +- services/brig/src/Brig/Data/Instances.hs | 48 +++++++++---------- services/brig/src/Brig/Password.hs | 2 +- services/cannon/src/Cannon/App.hs | 2 +- services/federator/src/Federator/Run.hs | 7 ++- services/galley/src/Galley/API/Error.hs | 2 +- services/gundeck/src/Gundeck/Instances.hs | 14 +++--- .../gundeck/src/Gundeck/Push/Native/Types.hs | 1 - services/spar/src/Spar/App.hs | 1 - services/spar/src/Spar/Data/Instances.hs | 12 ++--- services/spar/src/Spar/Types.hs | 1 - tools/db/find-undead/src/Work.hs | 4 +- tools/makedeb/src/System/MakeDeb.hs | 4 +- tools/stern/src/Stern/API/Predicates.hs | 1 - tools/stern/src/Stern/App.hs | 2 - 45 files changed, 78 insertions(+), 101 deletions(-) diff --git a/libs/bilge/src/Bilge/Assert.hs b/libs/bilge/src/Bilge/Assert.hs index 472117d11ff..670d20b19e5 100644 --- a/libs/bilge/src/Bilge/Assert.hs +++ b/libs/bilge/src/Bilge/Assert.hs @@ -38,7 +38,6 @@ import Control.Monad.Writer.Class import Control.Monad.Writer.Strict import qualified Data.ByteString as S import qualified Data.ByteString.Lazy as Lazy -import Data.List (intersperse, isInfixOf) import Imports import Network.HTTP.Client import System.Console.ANSI diff --git a/libs/bilge/src/Bilge/IO.hs b/libs/bilge/src/Bilge/IO.hs index 0a794cb2691..34aa87291b1 100644 --- a/libs/bilge/src/Bilge/IO.hs +++ b/libs/bilge/src/Bilge/IO.hs @@ -72,7 +72,6 @@ import Bilge.Request import Bilge.Response import Control.Monad.Base import Control.Monad.Catch -import Control.Monad.Fail (MonadFail) import Control.Monad.Trans.Control import qualified Data.ByteString.Lazy as LB import qualified Data.ByteString.Lazy as Lazy diff --git a/libs/brig-types/src/Brig/Types/Instances.hs b/libs/brig-types/src/Brig/Types/Instances.hs index f4422aac93a..9e280ad5888 100644 --- a/libs/brig-types/src/Brig/Types/Instances.hs +++ b/libs/brig-types/src/Brig/Types/Instances.hs @@ -33,15 +33,15 @@ instance Cql PrekeyId where ctype = Tagged IntColumn toCql = CqlInt . fromIntegral . keyId fromCql (CqlInt i) = return $ PrekeyId (fromIntegral i) - fromCql _ = fail "PrekeyId: Int expected" + fromCql _ = Left "PrekeyId: Int expected" instance Cql ServiceTag where ctype = Tagged BigIntColumn fromCql (CqlBigInt i) = case intToTag i of Just t -> return t - Nothing -> fail $ "unexpected service tag: " ++ show i - fromCql _ = fail "service tag: int expected" + Nothing -> Left $ "unexpected service tag: " ++ show i + fromCql _ = Left "service tag: int expected" toCql = CqlBigInt . tagToInt @@ -50,10 +50,10 @@ instance Cql ServiceKeyPEM where fromCql (CqlBlob b) = maybe - (fail "service key pem: malformed key") + (Left "service key pem: malformed key") pure (fromByteString' b) - fromCql _ = fail "service key pem: blob expected" + fromCql _ = Left "service key pem: blob expected" toCql = CqlBlob . toByteString @@ -74,15 +74,15 @@ instance Cql ServiceKey where p <- required "pem" case (t :: Int32) of 0 -> return $! ServiceKey RsaServiceKey s p - _ -> fail $ "Unexpected service key type: " ++ show t + _ -> Left $ "Unexpected service key type: " ++ show t where required :: Cql r => Text -> Either String r required f = maybe - (fail ("ServiceKey: Missing required field '" ++ show f ++ "'")) + (Left ("ServiceKey: Missing required field '" ++ show f ++ "'")) fromCql (lookup f fs) - fromCql _ = fail "service key: udt expected" + fromCql _ = Left "service key: udt expected" toCql (ServiceKey RsaServiceKey siz pem) = CqlUdt diff --git a/libs/brig-types/src/Brig/Types/Provider/Tag.hs b/libs/brig-types/src/Brig/Types/Provider/Tag.hs index 12ca5cf3546..f8f351bd5cf 100644 --- a/libs/brig-types/src/Brig/Types/Provider/Tag.hs +++ b/libs/brig-types/src/Brig/Types/Provider/Tag.hs @@ -48,7 +48,6 @@ where import Cassandra.CQL (Cql) import Data.Bits -import Data.List (foldl') import Data.Range import qualified Data.Set as Set import Imports diff --git a/libs/extended/src/Servant/API/Extended.hs b/libs/extended/src/Servant/API/Extended.hs index 5122f4f737f..a4801626d7d 100644 --- a/libs/extended/src/Servant/API/Extended.hs +++ b/libs/extended/src/Servant/API/Extended.hs @@ -21,10 +21,8 @@ -- errors instead of plaintext. module Servant.API.Extended where -import Control.Monad.Trans (liftIO) import qualified Data.ByteString.Lazy as BL import Data.EitherR (fmapL) -import Data.Maybe (fromMaybe) import Data.String.Conversions (cs) import Data.Typeable import GHC.TypeLits diff --git a/libs/galley-types/src/Galley/Types.hs b/libs/galley-types/src/Galley/Types.hs index c3804604311..8b1dd5cd0db 100644 --- a/libs/galley-types/src/Galley/Types.hs +++ b/libs/galley-types/src/Galley/Types.hs @@ -85,7 +85,6 @@ import Wire.API.Conversation.Typing import Wire.API.CustomBackend import Wire.API.Event.Conversation import Wire.API.Message -import Wire.API.User (UserIdList (..)) import Wire.API.User.Client -------------------------------------------------------------------------------- diff --git a/libs/galley-types/src/Galley/Types/Teams.hs b/libs/galley-types/src/Galley/Types/Teams.hs index 7aba8945405..7d77246b7f0 100644 --- a/libs/galley-types/src/Galley/Types/Teams.hs +++ b/libs/galley-types/src/Galley/Types/Teams.hs @@ -138,7 +138,6 @@ import Data.String.Conversions (cs) import Imports import Wire.API.Event.Team import Wire.API.Team -import Wire.API.Team (NewTeam (..), Team (..), TeamBinding (..)) import Wire.API.Team.Conversation import Wire.API.Team.Feature import Wire.API.Team.Member diff --git a/libs/gundeck-types/src/Gundeck/Types/Common.hs b/libs/gundeck-types/src/Gundeck/Types/Common.hs index e49931dbe84..15b7a511066 100644 --- a/libs/gundeck-types/src/Gundeck/Types/Common.hs +++ b/libs/gundeck-types/src/Gundeck/Types/Common.hs @@ -57,5 +57,5 @@ instance ToByteString URI where instance FromByteString URI where parser = takeByteString >>= parse . Bytes.unpack -parse :: Monad m => String -> m URI +parse :: (Monad m, MonadFail m) => String -> m URI parse = maybe (fail "Invalid URI") (return . URI) . Net.parseURI diff --git a/libs/hscim/src/Web/Scim/Capabilities/MetaSchema.hs b/libs/hscim/src/Web/Scim/Capabilities/MetaSchema.hs index 42dafbb8731..9549982c371 100644 --- a/libs/hscim/src/Web/Scim/Capabilities/MetaSchema.hs +++ b/libs/hscim/src/Web/Scim/Capabilities/MetaSchema.hs @@ -29,7 +29,6 @@ where import Data.Aeson import qualified Data.HashMap.Lazy as HML import Data.Text (Text) -import GHC.Generics (Generic) import Servant hiding (URI) import Servant.API.Generic import Servant.Server.Generic diff --git a/libs/hscim/src/Web/Scim/Class/Group.hs b/libs/hscim/src/Web/Scim/Class/Group.hs index e206d4b0cd0..6643fc30112 100644 --- a/libs/hscim/src/Web/Scim/Class/Group.hs +++ b/libs/hscim/src/Web/Scim/Class/Group.hs @@ -31,7 +31,6 @@ where import Data.Aeson import qualified Data.Aeson as Aeson import Data.Text -import GHC.Generics (Generic) import Servant import Servant.API.Generic import Servant.Server.Generic diff --git a/libs/hscim/src/Web/Scim/Class/User.hs b/libs/hscim/src/Web/Scim/Class/User.hs index 1e8e5932f8b..d65ad0cecd5 100644 --- a/libs/hscim/src/Web/Scim/Class/User.hs +++ b/libs/hscim/src/Web/Scim/Class/User.hs @@ -27,7 +27,6 @@ module Web.Scim.Class.User where import Data.Aeson.Types (FromJSON) -import GHC.Generics (Generic) import Servant import Servant.API.Generic import Servant.Server.Generic diff --git a/libs/hscim/src/Web/Scim/Schema/PatchOp.hs b/libs/hscim/src/Web/Scim/Schema/PatchOp.hs index b44fe9f7a30..66ddf7c2bb0 100644 --- a/libs/hscim/src/Web/Scim/Schema/PatchOp.hs +++ b/libs/hscim/src/Web/Scim/Schema/PatchOp.hs @@ -18,7 +18,6 @@ module Web.Scim.Schema.PatchOp where import Control.Applicative -import Control.Monad (guard) import Control.Monad.Except import Data.Aeson.Types (FromJSON (parseJSON), ToJSON (toJSON), Value (String), object, withObject, withText, (.:), (.:?), (.=)) import qualified Data.Aeson.Types as Aeson diff --git a/libs/hscim/src/Web/Scim/Schema/User.hs b/libs/hscim/src/Web/Scim/Schema/User.hs index c16aa8709d5..f83b261f0ac 100644 --- a/libs/hscim/src/Web/Scim/Schema/User.hs +++ b/libs/hscim/src/Web/Scim/Schema/User.hs @@ -72,7 +72,6 @@ module Web.Scim.Schema.User ) where -import Control.Monad (foldM) import Control.Monad.Except import Data.Aeson import qualified Data.HashMap.Strict as HM diff --git a/libs/hscim/src/Web/Scim/Server.hs b/libs/hscim/src/Web/Scim/Server.hs index 7e4b866bffc..cc726506ca9 100644 --- a/libs/hscim/src/Web/Scim/Server.hs +++ b/libs/hscim/src/Web/Scim/Server.hs @@ -37,7 +37,6 @@ module Web.Scim.Server ) where -import GHC.Generics (Generic) import Network.Wai import Servant import Servant.API.Generic diff --git a/libs/hscim/src/Web/Scim/Test/Util.hs b/libs/hscim/src/Web/Scim/Test/Util.hs index 38feba2a0ef..ee77c1f6029 100644 --- a/libs/hscim/src/Web/Scim/Test/Util.hs +++ b/libs/hscim/src/Web/Scim/Test/Util.hs @@ -52,8 +52,8 @@ where import qualified Control.Retry as Retry import Data.Aeson -import Data.Aeson.Internal (JSONPathElement (Key), ()) import Data.Aeson.QQ +import Data.Aeson.Types (JSONPathElement (Key)) import Data.ByteString (ByteString) import qualified Data.ByteString as BS import qualified Data.ByteString.Char8 as BS8 diff --git a/libs/imports/src/Imports.hs b/libs/imports/src/Imports.hs index 50be52f3589..5e9a93f934b 100644 --- a/libs/imports/src/Imports.hs +++ b/libs/imports/src/Imports.hs @@ -164,7 +164,6 @@ import Data.Text (Text) import qualified Data.Text.Lazy import Data.Traversable import Data.Tuple -import Data.Typeable (Typeable) import Data.Void import Data.Word import GHC.Generics (Generic) diff --git a/libs/metrics-wai/src/Data/Metrics/Middleware/Prometheus.hs b/libs/metrics-wai/src/Data/Metrics/Middleware/Prometheus.hs index b35e502da28..b04c99d11c0 100644 --- a/libs/metrics-wai/src/Data/Metrics/Middleware/Prometheus.hs +++ b/libs/metrics-wai/src/Data/Metrics/Middleware/Prometheus.hs @@ -20,10 +20,8 @@ module Data.Metrics.Middleware.Prometheus ) where -import Data.Maybe (fromMaybe) import Data.Metrics.Types (Paths, treeLookup) import Data.Metrics.WaiRoute (treeToPaths) -import Data.Text (Text) import qualified Data.Text.Encoding as T import Imports import qualified Network.Wai as Wai diff --git a/libs/ssl-util/src/Ssl/Util.hs b/libs/ssl-util/src/Ssl/Util.hs index ef4285e070d..40aa869b657 100644 --- a/libs/ssl-util/src/Ssl/Util.hs +++ b/libs/ssl-util/src/Ssl/Util.hs @@ -39,7 +39,6 @@ import Data.Byteable (constEqBytes) import Data.Dynamic (fromDynamic) import Data.Time.Clock (getCurrentTime) import Imports -import Network.HTTP.Client (defaultRequest) import Network.HTTP.Client.Internal import OpenSSL.BN (integerToMPI) import OpenSSL.EVP.Digest (Digest, digestLBS) diff --git a/libs/tasty-cannon/src/Test/Tasty/Cannon.hs b/libs/tasty-cannon/src/Test/Tasty/Cannon.hs index c40cef37ef2..0b0cb4e8027 100644 --- a/libs/tasty-cannon/src/Test/Tasty/Cannon.hs +++ b/libs/tasty-cannon/src/Test/Tasty/Cannon.hs @@ -65,7 +65,7 @@ where import Control.Concurrent.Async import Control.Concurrent.Timeout hiding (threadDelay) -import Control.Exception (SomeAsyncException, asyncExceptionFromException, throwIO) +import Control.Exception (asyncExceptionFromException, throwIO) import Control.Monad.Catch hiding (bracket) import qualified Control.Monad.Catch as Catch import Data.Aeson (FromJSON, Value (..), decodeStrict', fromJSON) diff --git a/libs/types-common-aws/src/Util/Test/SQS.hs b/libs/types-common-aws/src/Util/Test/SQS.hs index dddaa98d67d..d19edb7ac97 100644 --- a/libs/types-common-aws/src/Util/Test/SQS.hs +++ b/libs/types-common-aws/src/Util/Test/SQS.hs @@ -25,7 +25,7 @@ module Util.Test.SQS where -import Control.Exception (SomeAsyncException, asyncExceptionFromException) +import Control.Exception (asyncExceptionFromException) import Control.Lens hiding ((.=)) import Control.Monad.Catch hiding (bracket) import Control.Monad.Trans.Control diff --git a/libs/types-common-journal/src/Data/Proto.hs b/libs/types-common-journal/src/Data/Proto.hs index 2bcebc6ed4b..b3445805dd0 100644 --- a/libs/types-common-journal/src/Data/Proto.hs +++ b/libs/types-common-journal/src/Data/Proto.hs @@ -17,7 +17,6 @@ module Data.Proto where -import Data.Time.Clock (getCurrentTime) import Data.Time.Clock.POSIX import Imports diff --git a/libs/types-common/src/Data/Json/Util.hs b/libs/types-common/src/Data/Json/Util.hs index b2479a4e48b..03b79cfbed8 100644 --- a/libs/types-common/src/Data/Json/Util.hs +++ b/libs/types-common/src/Data/Json/Util.hs @@ -151,7 +151,7 @@ instance FromJSON Base64ByteString where stToLbs = L.fromChunks . pure . Data.Text.Encoding.encodeUtf8 handleError = either - (fail "parse Base64ByteString: invalid base64 encoding") + (const $ fail "parse Base64ByteString: invalid base64 encoding") (pure . Base64ByteString) parseJSON _ = fail "parse Base64ByteString: not a string" diff --git a/libs/types-common/src/Data/LegalHold.hs b/libs/types-common/src/Data/LegalHold.hs index 4a866805bf7..1839ebf179b 100644 --- a/libs/types-common/src/Data/LegalHold.hs +++ b/libs/types-common/src/Data/LegalHold.hs @@ -58,8 +58,8 @@ instance Cql UserLegalHoldStatus where 0 -> pure $ UserLegalHoldDisabled 1 -> pure $ UserLegalHoldPending 2 -> pure $ UserLegalHoldEnabled - _ -> fail "fromCql: Invalid UserLegalHoldStatus" - fromCql _ = fail "fromCql: UserLegalHoldStatus: CqlInt expected" + _ -> Left "fromCql: Invalid UserLegalHoldStatus" + fromCql _ = Left "fromCql: UserLegalHoldStatus: CqlInt expected" toCql UserLegalHoldDisabled = CqlInt 0 toCql UserLegalHoldPending = CqlInt 1 diff --git a/libs/types-common/src/Data/List1.hs b/libs/types-common/src/Data/List1.hs index 9426491fb00..3cefeaa6aa0 100644 --- a/libs/types-common/src/Data/List1.hs +++ b/libs/types-common/src/Data/List1.hs @@ -77,6 +77,6 @@ instance (Cql a) => Cql (List1 a) where toCql = CqlList . map toCql . toList - fromCql (CqlList []) = fail "At least 1 element in list required." + fromCql (CqlList []) = Left "At least 1 element in list required." fromCql (CqlList l) = List1 . N.fromList <$> mapM fromCql l fromCql _ = Left "Expected CqlList." diff --git a/libs/types-common/src/Data/Misc.hs b/libs/types-common/src/Data/Misc.hs index b58c715e2ac..9f465bfcc55 100644 --- a/libs/types-common/src/Data/Misc.hs +++ b/libs/types-common/src/Data/Misc.hs @@ -71,7 +71,6 @@ import Data.ByteString.Char8 (unpack) import Data.ByteString.Conversion import Data.ByteString.Lazy (toStrict) import Data.IP (IP (IPv4, IPv6), toIPv4, toIPv6b) -import Data.Int (Int64) import Data.Range import qualified Data.Swagger.Build.Api as Doc import qualified Data.Text as Text @@ -191,7 +190,7 @@ instance Cql Latitude where toCql (Latitude x) = CqlDouble x fromCql (CqlDouble x) = return (Latitude x) - fromCql _ = fail "Latitude: Expected CqlDouble." + fromCql _ = Left "Latitude: Expected CqlDouble." instance Cql Longitude where ctype = Tagged DoubleColumn @@ -199,7 +198,7 @@ instance Cql Longitude where toCql (Longitude x) = CqlDouble x fromCql (CqlDouble x) = return (Longitude x) - fromCql _ = fail "Longitude: Expected CqlDouble." + fromCql _ = Left "Longitude: Expected CqlDouble." -------------------------------------------------------------------------------- -- Time @@ -229,7 +228,7 @@ instance Cql Milliseconds where toCql = CqlBigInt . msToInt64 fromCql = \case CqlBigInt i -> pure $ int64ToMs i - _ -> fail "Milliseconds: expected CqlBigInt" + _ -> Left "Milliseconds: expected CqlBigInt" -------------------------------------------------------------------------------- -- HttpsUrl @@ -270,7 +269,7 @@ instance Cql HttpsUrl where toCql = CqlBlob . toByteString fromCql (CqlBlob t) = runParser parser (toStrict t) - fromCql _ = fail "HttpsUrl: Expected CqlBlob" + fromCql _ = Left "HttpsUrl: Expected CqlBlob" instance Arbitrary HttpsUrl where arbitrary = pure $ HttpsUrl [URI.QQ.uri|https://example.com|] @@ -300,7 +299,7 @@ instance Cql (Fingerprint a) where toCql = CqlBlob . toByteString fromCql (CqlBlob b) = return (Fingerprint (toStrict b)) - fromCql _ = fail "Fingerprint: Expected CqlBlob" + fromCql _ = Left "Fingerprint: Expected CqlBlob" instance Arbitrary (Fingerprint Rsa) where arbitrary = diff --git a/libs/types-common/src/Util/Options.hs b/libs/types-common/src/Util/Options.hs index bcf8d315e60..33313e9a5ce 100644 --- a/libs/types-common/src/Util/Options.hs +++ b/libs/types-common/src/Util/Options.hs @@ -23,7 +23,6 @@ module Util.Options where import Control.Lens -import Data.Aeson (FromJSON) import Data.Aeson.TH import qualified Data.ByteString.Char8 as BS import Data.ByteString.Conversion @@ -33,7 +32,7 @@ import Imports import Options.Applicative import Options.Applicative.Types import System.Exit (die) -import System.IO (hPutStrLn, stderr) +import System.IO (hPutStrLn) import URI.ByteString import Util.Options.Common diff --git a/libs/wire-api/src/Wire/API/Call/Config.hs b/libs/wire-api/src/Wire/API/Call/Config.hs index e7ccbcd6f5e..9fca13243f0 100644 --- a/libs/wire-api/src/Wire/API/Call/Config.hs +++ b/libs/wire-api/src/Wire/API/Call/Config.hs @@ -253,7 +253,7 @@ parseTurnURI = parseOnly (parser <* endOfInput) parseScheme = parse "parseScheme" parseHost = parse "parseHost" parseTransport = parse "parseTransport" - parse :: (BC.FromByteString b, Monad m) => String -> Text -> m b + parse :: (BC.FromByteString b, Monad m, MonadFail m) => String -> Text -> m b parse err x = case BC.fromByteString (TE.encodeUtf8 x) of Just ok -> return ok Nothing -> fail (err ++ " failed when parsing: " ++ show x) diff --git a/libs/wire-api/src/Wire/API/Event/Conversation.hs b/libs/wire-api/src/Wire/API/Event/Conversation.hs index 491c640b001..e3c7086bb03 100644 --- a/libs/wire-api/src/Wire/API/Event/Conversation.hs +++ b/libs/wire-api/src/Wire/API/Event/Conversation.hs @@ -75,7 +75,6 @@ import qualified Test.QuickCheck as QC import URI.ByteString () import Wire.API.Arbitrary (Arbitrary (arbitrary), GenericUniform (..)) import Wire.API.Conversation -import Wire.API.Conversation (modelConversationAccessUpdate, modelConversationMessageTimerUpdate, modelConversationReceiptModeUpdate, modelConversationUpdateName) import Wire.API.Conversation.Code (ConversationCode (..), modelConversationCode) import Wire.API.Conversation.Role import Wire.API.Conversation.Typing (TypingData (..), modelTyping) diff --git a/libs/wire-api/src/Wire/API/Team/Permission.hs b/libs/wire-api/src/Wire/API/Team/Permission.hs index 4c3e023a7d6..97533cdeb5c 100644 --- a/libs/wire-api/src/Wire/API/Team/Permission.hs +++ b/libs/wire-api/src/Wire/API/Team/Permission.hs @@ -202,4 +202,4 @@ instance Cql.Cql Permissions where d <- Err.note "missing 'copy' permissions" ("copy" `lookup` p) >>= Cql.fromCql r <- Err.note "invalid permissions" (newPermissions (f s) (f d)) pure r - fromCql _ = fail "permissions: udt expected" + fromCql _ = Left "permissions: udt expected" diff --git a/libs/wire-api/src/Wire/API/Team/Role.hs b/libs/wire-api/src/Wire/API/Team/Role.hs index d7fdef5e490..9b6e0f43226 100644 --- a/libs/wire-api/src/Wire/API/Team/Role.hs +++ b/libs/wire-api/src/Wire/API/Team/Role.hs @@ -122,5 +122,5 @@ instance Cql.Cql Role where 2 -> return RoleAdmin 3 -> return RoleMember 4 -> return RoleExternalPartner - n -> fail $ "Unexpected Role value: " ++ show n - fromCql _ = fail "Role value: int expected" + n -> Left $ "Unexpected Role value: " ++ show n + fromCql _ = Left "Role value: int expected" diff --git a/libs/wire-api/src/Wire/API/User/RichInfo.hs b/libs/wire-api/src/Wire/API/User/RichInfo.hs index 91e1a589c81..dfa65cce8e7 100644 --- a/libs/wire-api/src/Wire/API/User/RichInfo.hs +++ b/libs/wire-api/src/Wire/API/User/RichInfo.hs @@ -45,7 +45,6 @@ module Wire.API.User.RichInfo ) where -import Control.Monad.Fail (MonadFail) import Data.Aeson import qualified Data.Aeson.Types as Aeson import Data.CaseInsensitive (CI) @@ -53,7 +52,7 @@ import qualified Data.CaseInsensitive as CI import qualified Data.HashMap.Strict as HM import qualified Data.HashMap.Strict as HashMap import Data.Hashable (Hashable) -import Data.List.Extra (nubOn) +import Data.List.Extra (nubOrdOn) import qualified Data.Map as Map import qualified Data.Swagger.Build.Api as Doc import qualified Data.Text as Text @@ -237,7 +236,7 @@ richInfoAssocListFromObject richinfoObj = do ds -> fail ("duplicate fields: " <> show (map head ds)) instance Arbitrary RichInfoAssocList where - arbitrary = RichInfoAssocList <$> nubOn richFieldType <$> arbitrary + arbitrary = RichInfoAssocList <$> nubOrdOn richFieldType <$> arbitrary emptyRichInfoAssocList :: RichInfoAssocList emptyRichInfoAssocList = RichInfoAssocList [] diff --git a/services/brig/src/Brig/Data/Instances.hs b/services/brig/src/Brig/Data/Instances.hs index fa906ab0256..19246eeb378 100644 --- a/services/brig/src/Brig/Data/Instances.hs +++ b/services/brig/src/Brig/Data/Instances.hs @@ -68,8 +68,8 @@ instance Cql Email where fromCql (CqlText t) = case parseEmail t of Just e -> return e - Nothing -> fail "fromCql: Invalid email" - fromCql _ = fail "fromCql: email: CqlText expected" + Nothing -> Left "fromCql: Invalid email" + fromCql _ = Left "fromCql: email: CqlText expected" toCql = toCql . fromEmail @@ -78,8 +78,8 @@ instance Cql UserSSOId where fromCql (CqlText t) = case eitherDecode $ cs t of Right i -> return i - Left msg -> fail $ "fromCql: Invalid UserSSOId: " ++ msg - fromCql _ = fail "fromCql: UserSSOId: CqlText expected" + Left msg -> Left $ "fromCql: Invalid UserSSOId: " ++ msg + fromCql _ = Left "fromCql: UserSSOId: CqlText expected" toCql = toCql . cs @LBS @ST . encode @@ -93,8 +93,8 @@ instance Cql Relation where 3 -> return Ignored 4 -> return Sent 5 -> return Cancelled - n -> fail $ "unexpected relation: " ++ show n - fromCql _ = fail "relation: int expected" + n -> Left $ "unexpected relation: " ++ show n + fromCql _ = Left "relation: int expected" toCql Accepted = CqlInt 0 toCql Blocked = CqlInt 1 @@ -120,7 +120,7 @@ instance Cql AssetSize where fromCql (CqlInt 0) = return AssetPreview fromCql (CqlInt 1) = return AssetComplete - fromCql n = fail $ "Unexpected asset size: " ++ show n + fromCql n = Left $ "Unexpected asset size: " ++ show n toCql AssetPreview = CqlInt 0 toCql AssetComplete = CqlInt 1 @@ -145,16 +145,16 @@ instance Cql Asset where s <- optional "size" case (t :: Int32) of 0 -> return $! ImageAsset k s - _ -> fail $ "unexpected user asset type: " ++ show t + _ -> Left $ "unexpected user asset type: " ++ show t where required :: Cql r => Text -> Either String r required f = maybe - (fail ("Asset: Missing required field '" ++ show f ++ "'")) + (Left ("Asset: Missing required field '" ++ show f ++ "'")) fromCql (lookup f fs) optional f = maybe (Right Nothing) fromCql (lookup f fs) - fromCql _ = fail "UserAsset: UDT expected" + fromCql _ = Left "UserAsset: UDT expected" -- Note: Order must match up with the 'ctype' definition. toCql (ImageAsset k s) = @@ -177,8 +177,8 @@ instance Cql AccountStatus where 1 -> return Suspended 2 -> return Deleted 3 -> return Ephemeral - n -> fail $ "unexpected account status: " ++ show n - fromCql _ = fail "account status: int expected" + n -> Left $ "unexpected account status: " ++ show n + fromCql _ = Left "account status: int expected" instance Cql ClientType where ctype = Tagged IntColumn @@ -189,7 +189,7 @@ instance Cql ClientType where fromCql (CqlInt 0) = return TemporaryClientType fromCql (CqlInt 1) = return PermanentClientType fromCql (CqlInt 2) = return LegalHoldClientType - fromCql _ = fail "ClientType: Int [0, 2] expected" + fromCql _ = Left "ClientType: Int [0, 2] expected" instance Cql ClientClass where ctype = Tagged IntColumn @@ -202,15 +202,15 @@ instance Cql ClientClass where fromCql (CqlInt 1) = return TabletClient fromCql (CqlInt 2) = return DesktopClient fromCql (CqlInt 3) = return LegalHoldClient - fromCql _ = fail "ClientClass: Int [0, 3] expected" + fromCql _ = Left "ClientClass: Int [0, 3] expected" instance Cql PropertyValue where ctype = Tagged BlobColumn toCql = toCql . Blob . JSON.encode . propertyValueJson fromCql (CqlBlob v) = case JSON.eitherDecode v of - Left e -> fail ("Failed to read property value: " <> e) + Left e -> Left ("Failed to read property value: " <> e) Right x -> pure (PropertyValue x) - fromCql _ = fail "PropertyValue: Blob expected" + fromCql _ = Left "PropertyValue: Blob expected" instance Cql Country where ctype = Tagged AsciiColumn @@ -218,8 +218,8 @@ instance Cql Country where fromCql (CqlAscii c) = case parseCountry c of Just c' -> return c' - Nothing -> fail "Country: ISO 3166-1-alpha2 expected." - fromCql _ = fail "Country: ASCII expected" + Nothing -> Left "Country: ISO 3166-1-alpha2 expected." + fromCql _ = Left "Country: ASCII expected" instance Cql Language where ctype = Tagged AsciiColumn @@ -227,15 +227,15 @@ instance Cql Language where fromCql (CqlAscii l) = case parseLanguage l of Just l' -> return l' - Nothing -> fail "Language: ISO 639-1 expected." - fromCql _ = fail "Language: ASCII expected" + Nothing -> Left "Language: ISO 639-1 expected." + fromCql _ = Left "Language: ASCII expected" instance Cql ManagedBy where ctype = Tagged IntColumn fromCql (CqlInt 0) = return ManagedByWire fromCql (CqlInt 1) = return ManagedByScim - fromCql n = fail $ "Unexpected ManagedBy: " ++ show n + fromCql n = Left $ "Unexpected ManagedBy: " ++ show n toCql ManagedByWire = CqlInt 0 toCql ManagedByScim = CqlInt 1 @@ -244,10 +244,10 @@ instance Cql RichInfoAssocList where ctype = Tagged BlobColumn toCql = toCql . Blob . JSON.encode fromCql (CqlBlob v) = JSON.eitherDecode v - fromCql _ = fail "RichInfo: Blob expected" + fromCql _ = Left "RichInfo: Blob expected" instance Cql Domain where ctype = Tagged TextColumn toCql = CqlText . domainText - fromCql (CqlText txt) = either fail pure $ mkDomain txt - fromCql _ = fail "Domain: Text expected" + fromCql (CqlText txt) = mkDomain txt + fromCql _ = Left "Domain: Text expected" diff --git a/services/brig/src/Brig/Password.hs b/services/brig/src/Brig/Password.hs index 1b782ac74c6..0f7738e8375 100644 --- a/services/brig/src/Brig/Password.hs +++ b/services/brig/src/Brig/Password.hs @@ -43,7 +43,7 @@ instance Cql Password where ctype = Tagged BlobColumn fromCql (CqlBlob lbs) = return . Password . EncryptedPass $ toStrict lbs - fromCql _ = fail "password: expected blob" + fromCql _ = Left "password: expected blob" toCql = CqlBlob . fromStrict . getEncryptedPass . fromPassword diff --git a/services/cannon/src/Cannon/App.hs b/services/cannon/src/Cannon/App.hs index 74de9451438..428549a4dfc 100644 --- a/services/cannon/src/Cannon/App.hs +++ b/services/cannon/src/Cannon/App.hs @@ -33,7 +33,7 @@ import Data.Id (ClientId) import qualified Data.Text.Lazy as Text import Data.Timeout import Imports hiding (threadDelay) -import Lens.Family hiding (set) +import Lens.Family hiding (reset, set) import Network.HTTP.Types.Status import Network.Wai.Utilities.Error import Network.WebSockets hiding (Request, Response, requestHeaders) diff --git a/services/federator/src/Federator/Run.hs b/services/federator/src/Federator/Run.hs index 023bbd0956a..ed5fb177af6 100644 --- a/services/federator/src/Federator/Run.hs +++ b/services/federator/src/Federator/Run.hs @@ -28,7 +28,12 @@ module Federator.Run ) where -import Control.Lens ((^.)) +import Bilge (RequestId (unRequestId)) +import Bilge.RPC (HasRequestId (..)) +import Control.Error +import Control.Lens (view, (^.)) +import Control.Monad.Catch (MonadCatch, MonadMask) +import Control.Monad.Trans.Resource import Data.Default (def) import qualified Data.Metrics.Middleware as Metrics import Data.Text (unpack) diff --git a/services/galley/src/Galley/API/Error.hs b/services/galley/src/Galley/API/Error.hs index cd26fe1618e..5e6bd16254a 100644 --- a/services/galley/src/Galley/API/Error.hs +++ b/services/galley/src/Galley/API/Error.hs @@ -30,7 +30,7 @@ import Galley.Types.Teams (IsPerm, hardTruncationLimit) import Imports import Network.HTTP.Types.Status import Network.Wai.Utilities.Error -import Type.Reflection (Typeable, typeRep) +import Type.Reflection (typeRep) internalError :: Error internalError = internalErrorWithDescription "internal error" diff --git a/services/gundeck/src/Gundeck/Instances.hs b/services/gundeck/src/Gundeck/Instances.hs index e162984af34..b96d011c2ed 100644 --- a/services/gundeck/src/Gundeck/Instances.hs +++ b/services/gundeck/src/Gundeck/Instances.hs @@ -50,8 +50,8 @@ instance Cql Transport where 2 -> return APNSSandbox 3 -> return APNSVoIP 4 -> return APNSVoIPSandbox - n -> fail $ "unexpected transport: " ++ show n - fromCql _ = fail "transport: int expected" + n -> Left $ "unexpected transport: " ++ show n + fromCql _ = Left "transport: int expected" instance Cql ConnId where ctype = Tagged BlobColumn @@ -59,25 +59,25 @@ instance Cql ConnId where toCql (ConnId c) = CqlBlob (Bytes.fromStrict c) fromCql (CqlBlob b) = return . ConnId $ Bytes.toStrict b - fromCql _ = fail "ConnId: Blob expected" + fromCql _ = Left "ConnId: Blob expected" instance Cql EndpointArn where ctype = Tagged TextColumn toCql = CqlText . toText - fromCql (CqlText txt) = either fail return (fromText txt) - fromCql _ = fail "EndpointArn: Text expected" + fromCql (CqlText txt) = either Left return (fromText txt) + fromCql _ = Left "EndpointArn: Text expected" instance Cql Token where ctype = Tagged TextColumn toCql = CqlText . tokenText fromCql (CqlText txt) = Right (Token txt) - fromCql _ = fail "Token: Text expected" + fromCql _ = Left "Token: Text expected" instance Cql AppName where ctype = Tagged TextColumn toCql = CqlText . appNameText fromCql (CqlText txt) = Right (AppName txt) - fromCql _ = fail "App: Text expected" + fromCql _ = Left "App: Text expected" instance ToText (Id a) where toText = Text.decodeUtf8 . Uuid.toASCIIBytes . toUUID diff --git a/services/gundeck/src/Gundeck/Push/Native/Types.hs b/services/gundeck/src/Gundeck/Push/Native/Types.hs index 70f391a6c7f..e007bbe2fec 100644 --- a/services/gundeck/src/Gundeck/Push/Native/Types.hs +++ b/services/gundeck/src/Gundeck/Push/Native/Types.hs @@ -44,7 +44,6 @@ import Control.Lens (Lens', makeLenses, view, (^.)) import Data.Id (ClientId, ConnId, UserId) import Gundeck.Aws.Arn import Gundeck.Types -import Gundeck.Types.Push.V2 (PushToken) import Imports -- | Native push address information of a device. diff --git a/services/spar/src/Spar/App.hs b/services/spar/src/Spar/App.hs index 56778246e97..e9cb0bae542 100644 --- a/services/spar/src/Spar/App.hs +++ b/services/spar/src/Spar/App.hs @@ -58,7 +58,6 @@ import SAML2.WebSSO hiding (Email (..), UserRef (..)) import qualified SAML2.WebSSO as SAML import Servant import qualified Servant.Multipart as Multipart -import Servant.Server (errBody, errReasonPhrase) import Spar.API.Swagger () import qualified Spar.Data as Data import Spar.Error diff --git a/services/spar/src/Spar/Data/Instances.hs b/services/spar/src/Spar/Data/Instances.hs index f2d2cb2c57a..28f7623b267 100644 --- a/services/spar/src/Spar/Data/Instances.hs +++ b/services/spar/src/Spar/Data/Instances.hs @@ -46,28 +46,28 @@ instance Cql SAML.XmlText where toCql = CqlText . SAML.unsafeFromXmlText fromCql (CqlText t) = pure $ SAML.mkXmlText t - fromCql _ = fail "XmlText: expected CqlText" + fromCql _ = Left "XmlText: expected CqlText" instance Cql (SignedCertificate) where ctype = Tagged BlobColumn toCql = CqlBlob . cs . renderKeyInfo fromCql (CqlBlob t) = parseKeyInfo False (cs t) - fromCql _ = fail "SignedCertificate: expected CqlBlob" + fromCql _ = Left "SignedCertificate: expected CqlBlob" instance Cql (URIRef Absolute) where ctype = Tagged TextColumn toCql = CqlText . SAML.renderURI fromCql (CqlText t) = parseURI' t - fromCql _ = fail "URI: expected CqlText" + fromCql _ = Left "URI: expected CqlText" instance Cql SAML.NameID where ctype = Tagged TextColumn toCql = CqlText . cs . SAML.encodeElem fromCql (CqlText t) = SAML.decodeElem (cs t) - fromCql _ = fail "NameID: expected CqlText" + fromCql _ = Left "NameID: expected CqlText" deriving instance Cql SAML.Issuer @@ -88,8 +88,8 @@ instance Cql VerdictFormatCon where fromCql (CqlInt i) = case i of 0 -> return VerdictFormatConWeb 1 -> return VerdictFormatConMobile - n -> fail $ "unexpected VerdictFormatCon: " ++ show n - fromCql _ = fail "member-status: int expected" + n -> Left $ "unexpected VerdictFormatCon: " ++ show n + fromCql _ = Left "member-status: int expected" fromVerdictFormat :: VerdictFormat -> VerdictFormatRow fromVerdictFormat VerdictFormatWeb = (VerdictFormatConWeb, Nothing, Nothing) diff --git a/services/spar/src/Spar/Types.hs b/services/spar/src/Spar/Types.hs index 66425194635..d574a27ab5d 100644 --- a/services/spar/src/Spar/Types.hs +++ b/services/spar/src/Spar/Types.hs @@ -32,7 +32,6 @@ import Data.Id (ScimTokenId, TeamId, UserId) import Data.Json.Util import Data.Proxy (Proxy (Proxy)) import Data.String.Conversions -import Data.String.Conversions (ST) import qualified Data.Text as ST import Data.Text.Encoding (encodeUtf8) import Data.Time diff --git a/tools/db/find-undead/src/Work.hs b/tools/db/find-undead/src/Work.hs index f60e30f9719..70d1675aa79 100644 --- a/tools/db/find-undead/src/Work.hs +++ b/tools/db/find-undead/src/Work.hs @@ -139,5 +139,5 @@ instance Cql AccountStatus where 1 -> return Suspended 2 -> return Deleted 3 -> return Ephemeral - n -> fail $ "unexpected account status: " ++ show n - fromCql _ = fail "account status: int expected" + n -> Left $ "unexpected account status: " ++ show n + fromCql _ = Left "account status: int expected" diff --git a/tools/makedeb/src/System/MakeDeb.hs b/tools/makedeb/src/System/MakeDeb.hs index 8211c7000a9..ae46fa4f003 100644 --- a/tools/makedeb/src/System/MakeDeb.hs +++ b/tools/makedeb/src/System/MakeDeb.hs @@ -30,10 +30,10 @@ where import Data.Text (pack) import qualified Data.Text as Text import qualified Data.Text.IO as Text -import Filesystem.Path.CurrentOS (decodeString, encodeString) +import Filesystem.Path.CurrentOS (FilePath, decodeString, encodeString) import Imports hiding (FilePath) import Options.Applicative -import Shelly +import Shelly hiding (FilePath) import System.MakeDeb.FileUtils data MakeDebOpts = MakeDebOpts diff --git a/tools/stern/src/Stern/API/Predicates.hs b/tools/stern/src/Stern/API/Predicates.hs index 1d48ddb128d..5992d1254bb 100644 --- a/tools/stern/src/Stern/API/Predicates.hs +++ b/tools/stern/src/Stern/API/Predicates.hs @@ -23,7 +23,6 @@ module Stern.API.Predicates where import Brig.Types -import Data.ByteString (ByteString) import qualified Data.ByteString.Char8 as Char8 import Data.ByteString.Conversion import qualified Data.Char as Char diff --git a/tools/stern/src/Stern/App.hs b/tools/stern/src/Stern/App.hs index fc5132def11..e5fd8e80382 100644 --- a/tools/stern/src/Stern/App.hs +++ b/tools/stern/src/Stern/App.hs @@ -24,7 +24,6 @@ module Stern.App where import qualified Bilge -import qualified Bilge.IO as Bilge (withResponse) import Bilge.RPC (HasRequestId (..)) import Control.Error import Control.Lens (makeLenses, set, view, (^.)) @@ -32,7 +31,6 @@ import Control.Monad.Catch (MonadCatch, MonadThrow) import Control.Monad.IO.Class import Control.Monad.Reader.Class import Control.Monad.Trans.Class -import Control.Monad.Trans.Reader (ReaderT (..), runReaderT) import Data.ByteString.Conversion (toByteString') import Data.Default (def) import Data.Id (UserId) From c9028f3bdd57d44a52d3474f9a5190d4e70e2934 Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Mon, 24 Aug 2020 17:19:16 +0200 Subject: [PATCH 07/28] WIP: Deal with more breakage --- libs/api-bot/src/Network/Wire/Bot/Monad.hs | 1 - services/brig/src/Brig/SMTP.hs | 1 - .../brig/src/Brig/User/Auth/Cookie/Limit.hs | 1 - .../brig/src/Brig/User/Auth/DB/Instances.hs | 4 +-- services/cannon/src/Cannon/API/Internal.hs | 2 -- services/cannon/src/Cannon/API/Public.hs | 1 - .../cargohold/src/CargoHold/API/Public.hs | 1 - services/galley/src/Galley/Data/Instances.hs | 32 +++++++++---------- services/galley/src/Galley/Data/Types.hs | 2 +- services/gundeck/src/Gundeck/Push.hs | 1 - .../gundeck/src/Gundeck/Push/Websocket.hs | 2 +- .../gundeck/src/Gundeck/Util/DelayQueue.hs | 1 - services/spar/src/Spar/Scim/Swagger.hs | 2 +- services/spar/test-integration/Util/Core.hs | 1 - services/spar/test-integration/Util/Scim.hs | 1 - tools/bonanza/bonanza.cabal | 5 +-- tools/bonanza/package.yaml | 1 + tools/stern/src/Stern/API.hs | 5 +-- tools/stern/src/Stern/Intra.hs | 3 +- 19 files changed, 27 insertions(+), 40 deletions(-) diff --git a/libs/api-bot/src/Network/Wire/Bot/Monad.hs b/libs/api-bot/src/Network/Wire/Bot/Monad.hs index da01c668e79..d7fd11ea459 100644 --- a/libs/api-bot/src/Network/Wire/Bot/Monad.hs +++ b/libs/api-bot/src/Network/Wire/Bot/Monad.hs @@ -94,7 +94,6 @@ import Control.Concurrent.Async import Control.Concurrent.STM (retry) import Control.Monad.Base import Control.Monad.Catch hiding (try) -import Control.Monad.Fail (MonadFail) import Control.Monad.Trans.Control import qualified Data.HashMap.Strict as HashMap import Data.Id diff --git a/services/brig/src/Brig/SMTP.hs b/services/brig/src/Brig/SMTP.hs index 86d5eb0022e..59818297d81 100644 --- a/services/brig/src/Brig/SMTP.hs +++ b/services/brig/src/Brig/SMTP.hs @@ -20,7 +20,6 @@ module Brig.SMTP where import Control.Lens import Data.Aeson import Data.Aeson.TH -import Data.Char (toLower) import Data.Pool import Data.Text (unpack) import Imports diff --git a/services/brig/src/Brig/User/Auth/Cookie/Limit.hs b/services/brig/src/Brig/User/Auth/Cookie/Limit.hs index 77ca9c71507..d8160d3f03b 100644 --- a/services/brig/src/Brig/User/Auth/Cookie/Limit.hs +++ b/services/brig/src/Brig/User/Auth/Cookie/Limit.hs @@ -19,7 +19,6 @@ module Brig.User.Auth.Cookie.Limit where import Brig.Types.User.Auth import Data.Aeson -import Data.List (sortBy) import Data.Time.Clock import Data.Time.Clock.POSIX import qualified Data.Vector as Vector diff --git a/services/brig/src/Brig/User/Auth/DB/Instances.hs b/services/brig/src/Brig/User/Auth/DB/Instances.hs index 737af407f98..971f8fd2488 100644 --- a/services/brig/src/Brig/User/Auth/DB/Instances.hs +++ b/services/brig/src/Brig/User/Auth/DB/Instances.hs @@ -40,7 +40,7 @@ instance Cql CookieId where toCql = CqlBigInt . fromIntegral . cookieIdNum fromCql (CqlBigInt i) = return (CookieId (fromIntegral i)) - fromCql _ = fail "fromCql: invalid cookie id" + fromCql _ = Left "fromCql: invalid cookie id" instance Cql CookieType where ctype = Tagged IntColumn @@ -50,4 +50,4 @@ instance Cql CookieType where fromCql (CqlInt 0) = return SessionCookie fromCql (CqlInt 1) = return PersistentCookie - fromCql _ = fail "fromCql: invalid cookie type" + fromCql _ = Left "fromCql: invalid cookie type" diff --git a/services/cannon/src/Cannon/API/Internal.hs b/services/cannon/src/Cannon/API/Internal.hs index d9e15604386..b60d6dcdff3 100644 --- a/services/cannon/src/Cannon/API/Internal.hs +++ b/services/cannon/src/Cannon/API/Internal.hs @@ -37,8 +37,6 @@ import Network.Wai import Network.Wai.Predicate import Network.Wai.Routing import Network.Wai.Utilities -import Network.Wai.Utilities.Request (parseBody') -import Network.Wai.Utilities.Response (json) import System.Logger.Class (msg, val) import qualified System.Logger.Class as LC diff --git a/services/cannon/src/Cannon/API/Public.hs b/services/cannon/src/Cannon/API/Public.hs index 1084491e30b..8480c5932f9 100644 --- a/services/cannon/src/Cannon/API/Public.hs +++ b/services/cannon/src/Cannon/API/Public.hs @@ -33,7 +33,6 @@ import Network.Wai.Handler.WebSockets import Network.Wai.Predicate import Network.Wai.Routing import Network.Wai.Utilities -import Network.Wai.Utilities.Response (json) import Network.Wai.Utilities.Swagger import qualified Network.WebSockets as Ws diff --git a/services/cargohold/src/CargoHold/API/Public.hs b/services/cargohold/src/CargoHold/API/Public.hs index 73ba7eb5dd4..33950d5c024 100644 --- a/services/cargohold/src/CargoHold/API/Public.hs +++ b/services/cargohold/src/CargoHold/API/Public.hs @@ -43,7 +43,6 @@ import Network.Wai.Conduit (sourceRequestBody) import Network.Wai.Predicate hiding (Error, setStatus) import Network.Wai.Routing import Network.Wai.Utilities hiding (message) -import Network.Wai.Utilities.Response (json) import Network.Wai.Utilities.Swagger (document, mkSwaggerApi) import qualified Network.Wai.Utilities.Swagger as Doc import Network.Wai.Utilities.ZAuth diff --git a/services/galley/src/Galley/Data/Instances.hs b/services/galley/src/Galley/Data/Instances.hs index d94b533a315..0175d87b5f5 100644 --- a/services/galley/src/Galley/Data/Instances.hs +++ b/services/galley/src/Galley/Data/Instances.hs @@ -51,8 +51,8 @@ instance Cql ConvType where 1 -> return SelfConv 2 -> return One2OneConv 3 -> return ConnectConv - n -> fail $ "unexpected conversation-type: " ++ show n - fromCql _ = fail "conv-type: int expected" + n -> Left $ "unexpected conversation-type: " ++ show n + fromCql _ = Left "conv-type: int expected" instance Cql Access where ctype = Tagged IntColumn @@ -67,8 +67,8 @@ instance Cql Access where 2 -> return InviteAccess 3 -> return LinkAccess 4 -> return CodeAccess - n -> fail $ "Unexpected Access value: " ++ show n - fromCql _ = fail "Access value: int expected" + n -> Left $ "Unexpected Access value: " ++ show n + fromCql _ = Left "Access value: int expected" instance Cql AccessRole where ctype = Tagged IntColumn @@ -83,8 +83,8 @@ instance Cql AccessRole where 2 -> return TeamAccessRole 3 -> return ActivatedAccessRole 4 -> return NonActivatedAccessRole - n -> fail $ "Unexpected AccessRole value: " ++ show n - fromCql _ = fail "AccessRole value: int expected" + n -> Left $ "Unexpected AccessRole value: " ++ show n + fromCql _ = Left "AccessRole value: int expected" instance Cql ConvTeamInfo where ctype = Tagged $ UdtColumn "teaminfo" [("teamid", UuidColumn), ("managed", BooleanColumn)] @@ -95,7 +95,7 @@ instance Cql ConvTeamInfo where t <- note "missing 'teamid' in teaminfo" ("teamid" `lookup` u) >>= fromCql m <- note "missing 'managed' in teaminfo" ("managed" `lookup` u) >>= fromCql pure (ConvTeamInfo t m) - fromCql _ = fail "teaminfo: udt expected" + fromCql _ = Left "teaminfo: udt expected" instance Cql TeamBinding where ctype = Tagged BooleanColumn @@ -105,7 +105,7 @@ instance Cql TeamBinding where fromCql (CqlBoolean True) = pure Binding fromCql (CqlBoolean False) = pure NonBinding - fromCql _ = fail "teambinding: boolean expected" + fromCql _ = Left "teambinding: boolean expected" instance Cql TeamStatus where ctype = Tagged IntColumn @@ -122,8 +122,8 @@ instance Cql TeamStatus where 2 -> return Deleted 3 -> return Suspended 4 -> return PendingActive - n -> fail $ "unexpected team-status: " ++ show n - fromCql _ = fail "team-status: int expected" + n -> Left $ "unexpected team-status: " ++ show n + fromCql _ = Left "team-status: int expected" instance Cql Public.TeamFeatureStatusValue where ctype = Tagged IntColumn @@ -131,8 +131,8 @@ instance Cql Public.TeamFeatureStatusValue where fromCql (CqlInt n) = case n of 0 -> pure $ Public.TeamFeatureDisabled 1 -> pure $ Public.TeamFeatureEnabled - _ -> fail "fromCql: Invalid TeamFeatureStatusValue" - fromCql _ = fail "fromCql: TeamFeatureStatusValue: CqlInt expected" + _ -> Left "fromCql: Invalid TeamFeatureStatusValue" + fromCql _ = Left "fromCql: TeamFeatureStatusValue: CqlInt expected" toCql Public.TeamFeatureDisabled = CqlInt 0 toCql Public.TeamFeatureEnabled = CqlInt 1 @@ -143,8 +143,8 @@ instance Cql TeamSearchVisibility where fromCql (CqlInt n) = case n of 0 -> pure $ SearchVisibilityStandard 1 -> pure $ SearchVisibilityNoNameOutsideTeam - _ -> fail "fromCql: Invalid TeamSearchVisibility" - fromCql _ = fail "fromCql: TeamSearchVisibility: CqlInt expected" + _ -> Left "fromCql: Invalid TeamSearchVisibility" + fromCql _ = Left "fromCql: TeamSearchVisibility: CqlInt expected" toCql SearchVisibilityStandard = CqlInt 0 toCql SearchVisibilityNoNameOutsideTeam = CqlInt 1 @@ -152,5 +152,5 @@ instance Cql TeamSearchVisibility where instance Cql Domain where ctype = Tagged TextColumn toCql = CqlText . domainText - fromCql (CqlText txt) = either fail pure $ mkDomain txt - fromCql _ = fail "Domain: Text expected" + fromCql (CqlText txt) = mkDomain txt + fromCql _ = Left "Domain: Text expected" diff --git a/services/galley/src/Galley/Data/Types.hs b/services/galley/src/Galley/Data/Types.hs index 16a5e9f3f61..19cb9bd2123 100644 --- a/services/galley/src/Galley/Data/Types.hs +++ b/services/galley/src/Galley/Data/Types.hs @@ -100,7 +100,7 @@ instance Cql Scope where toCql ReusableCode = CqlInt 1 fromCql (CqlInt 1) = return ReusableCode - fromCql _ = fail "unknown Scope" + fromCql _ = Left "unknown Scope" toCode :: Key -> Scope -> (Value, Int32, ConvId) -> Code toCode k s (val, ttl, cnv) = diff --git a/services/gundeck/src/Gundeck/Push.hs b/services/gundeck/src/Gundeck/Push.hs index c1f07844c19..a06252abd71 100644 --- a/services/gundeck/src/Gundeck/Push.hs +++ b/services/gundeck/src/Gundeck/Push.hs @@ -67,7 +67,6 @@ import Network.HTTP.Types import Network.Wai.Utilities import System.Logger.Class (msg, val, (+++), (.=), (~~)) import qualified System.Logger.Class as Log -import UnliftIO.Concurrent (forkIO) import qualified Wire.API.Push.Token as Public push :: [Push] -> Gundeck () diff --git a/services/gundeck/src/Gundeck/Push/Websocket.hs b/services/gundeck/src/Gundeck/Push/Websocket.hs index 6cfdab100ef..df7426efdae 100644 --- a/services/gundeck/src/Gundeck/Push/Websocket.hs +++ b/services/gundeck/src/Gundeck/Push/Websocket.hs @@ -47,7 +47,7 @@ import Gundeck.Types.Notification import Gundeck.Types.Presence import Gundeck.Util import Imports -import Network.HTTP.Client (HttpException (..), HttpExceptionContent (..)) +import Network.HTTP.Client (HttpExceptionContent (..)) import qualified Network.HTTP.Client.Internal as Http import Network.HTTP.Types (StdMethod (POST), status200, status410) import qualified Network.URI as URI diff --git a/services/gundeck/src/Gundeck/Util/DelayQueue.hs b/services/gundeck/src/Gundeck/Util/DelayQueue.hs index 0e9013ac87b..80130fe4580 100644 --- a/services/gundeck/src/Gundeck/Util/DelayQueue.hs +++ b/services/gundeck/src/Gundeck/Util/DelayQueue.hs @@ -32,7 +32,6 @@ where import Data.OrdPSQ (OrdPSQ) import qualified Data.OrdPSQ as PSQ -import Data.Tuple (swap) import Imports hiding (length) data DelayQueue k v = DelayQueue diff --git a/services/spar/src/Spar/Scim/Swagger.hs b/services/spar/src/Spar/Scim/Swagger.hs index 60a20e52df4..2a97cf9824d 100644 --- a/services/spar/src/Spar/Scim/Swagger.hs +++ b/services/spar/src/Spar/Scim/Swagger.hs @@ -30,7 +30,7 @@ module Spar.Scim.Swagger ) where -import Control.Lens (mapped, (&), (.~), (?~)) +import Control.Lens (mapped, (.~), (?~)) import Data.Id (ScimTokenId, TeamId) import Data.Proxy (Proxy (Proxy)) import Data.Swagger hiding (Header (..)) diff --git a/services/spar/test-integration/Util/Core.hs b/services/spar/test-integration/Util/Core.hs index 2f49c730e60..93daf8dbfe0 100644 --- a/services/spar/test-integration/Util/Core.hs +++ b/services/spar/test-integration/Util/Core.hs @@ -135,7 +135,6 @@ import Control.Exception import Control.Lens hiding ((.=)) import Control.Monad.Catch import Control.Monad.Except -import Control.Monad.Fail (MonadFail) import Control.Retry import Crypto.Random.Types (MonadRandom) import Data.Aeson as Aeson hiding (json) diff --git a/services/spar/test-integration/Util/Scim.hs b/services/spar/test-integration/Util/Scim.hs index 5a28a8df5f1..313e4d0af0f 100644 --- a/services/spar/test-integration/Util/Scim.hs +++ b/services/spar/test-integration/Util/Scim.hs @@ -37,7 +37,6 @@ import qualified SAML2.WebSSO as SAML import SAML2.WebSSO.Types (IdPId, idpId) import Spar.Data as Data import qualified Spar.Intra.Brig as Intra -import Spar.Scim (CreateScimToken (..), CreateScimTokenResponse (..), ScimTokenList (..)) import Spar.Scim.Types import Spar.Scim.User (synthesizeScimUser, validateScimUser') import Spar.Types (IdP, IdPMetadataInfo (..), ScimToken (..), ScimTokenInfo (..)) diff --git a/tools/bonanza/bonanza.cabal b/tools/bonanza/bonanza.cabal index c49b73b1b88..f893c97fb18 100644 --- a/tools/bonanza/bonanza.cabal +++ b/tools/bonanza/bonanza.cabal @@ -1,10 +1,10 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.31.2. +-- This file has been generated from package.yaml by hpack version 0.33.0. -- -- see: https://github.com/sol/hpack -- --- hash: 8d08766e828f1eb6b5314808808037082ec748509c5640b48410a0691beeaa1a +-- hash: c393e7ad1fa91da04b5c2445faaa5c3b0a72153a9529d757776e97fc0c48d70b name: bonanza version: 3.6.0 @@ -71,6 +71,7 @@ library , lens-aeson , mtl , network + , network-bsd , optparse-applicative >=0.11 , protobuf >=0.2.1.1 , resourcet diff --git a/tools/bonanza/package.yaml b/tools/bonanza/package.yaml index b544e420999..1abedb2ddfb 100644 --- a/tools/bonanza/package.yaml +++ b/tools/bonanza/package.yaml @@ -40,6 +40,7 @@ library: - lens-aeson - mtl - network + - network-bsd - optparse-applicative >=0.11 - protobuf >=0.2.1.1 - scientific diff --git a/tools/stern/src/Stern/API.hs b/tools/stern/src/Stern/API.hs index 4368489f85b..1e20b506dc4 100644 --- a/tools/stern/src/Stern/API.hs +++ b/tools/stern/src/Stern/API.hs @@ -29,13 +29,10 @@ where import Brig.Types import Brig.Types.Intra -import Control.Applicative ((<|>)) import Control.Error import Control.Lens ((^.)) -import Control.Monad (liftM, void, when) import Data.Aeson hiding (Error, json) import Data.Aeson.Types (emptyArray) -import Data.ByteString (ByteString) import Data.ByteString.Conversion import Data.ByteString.Lazy (fromStrict) import Data.Handle (Handle) @@ -45,7 +42,7 @@ import Data.Predicate import Data.Range import Data.Swagger.Build.Api hiding (Response, def, min, response) import qualified Data.Swagger.Build.Api as Doc -import Data.Text (Text, unpack) +import Data.Text (unpack) import qualified Data.Text as T import Data.Text.Encoding (decodeLatin1) import qualified Galley.Types.Teams.SearchVisibility as Team diff --git a/tools/stern/src/Stern/Intra.hs b/tools/stern/src/Stern/Intra.hs index bb8a891512f..8fc0645b991 100644 --- a/tools/stern/src/Stern/Intra.hs +++ b/tools/stern/src/Stern/Intra.hs @@ -67,7 +67,6 @@ import Control.Lens (view, (^.)) import Control.Monad.Reader import Data.Aeson hiding (Error) import Data.Aeson.Types (emptyArray) -import Data.ByteString (ByteString) import qualified Data.ByteString.Char8 as BS import Data.ByteString.Conversion import Data.Handle (Handle) @@ -75,7 +74,7 @@ import qualified Data.HashMap.Strict as M import Data.Id import Data.Int import Data.List.Split (chunksOf) -import Data.Text (Text, strip) +import Data.Text (strip) import Data.Text.Encoding (decodeUtf8, encodeUtf8) import Data.Text.Lazy (pack) import Galley.Types From e15ec99cd4c08b0c52ac03a49fdcd4da4314bb4c Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Tue, 25 Aug 2020 11:34:00 +0200 Subject: [PATCH 08/28] WIP: Take care of all breakage except for makedeb --- services/brig/src/Brig/API/Error.hs | 2 +- services/brig/src/Brig/API/Internal.hs | 1 - services/brig/src/Brig/API/Public.hs | 1 - services/brig/src/Brig/AWS.hs | 1 - services/brig/src/Brig/App.hs | 2 +- services/brig/src/Brig/Calling/API.hs | 1 - services/brig/src/Brig/Code.hs | 4 ++-- services/brig/src/Brig/Data/User.hs | 1 - services/brig/src/Brig/Data/UserKey.hs | 8 ++++---- services/brig/src/Brig/Index/Migrations.hs | 2 +- services/brig/src/Brig/Index/Migrations/Types.hs | 1 - services/brig/src/Brig/Phone.hs | 1 - services/brig/src/Brig/Provider/DB.hs | 1 - services/brig/src/Brig/RPC.hs | 2 +- services/brig/src/Brig/User/Search/Index.hs | 1 - services/brig/src/Brig/Whitelist.hs | 2 +- services/brig/test/integration/API/Calling.hs | 2 -- services/brig/test/integration/API/Search.hs | 3 --- services/brig/test/integration/API/Team.hs | 2 -- services/brig/test/integration/API/Team/Util.hs | 1 - services/brig/test/integration/Util.hs | 3 +-- services/galley/src/Galley/Data.hs | 1 - services/galley/src/Galley/External.hs | 1 - services/galley/src/Galley/Intra/Client.hs | 1 - services/galley/src/Galley/Intra/Push.hs | 2 +- services/galley/src/Galley/Intra/User.hs | 3 +-- services/galley/test/integration/API/SQS.hs | 2 +- .../galley/test/integration/API/Teams/LegalHold.hs | 3 +-- services/galley/test/integration/API/Util.hs | 3 +-- services/galley/test/integration/TestSetup.hs | 1 - services/gundeck/src/Gundeck/API/Public.hs | 1 - services/gundeck/test/integration/API.hs | 2 +- services/gundeck/test/integration/TestSetup.hs | 1 - .../spar/test-integration/Test/Spar/AppSpec.hs | 1 - .../spar/test-integration/Test/Spar/DataSpec.hs | 1 - stack.yaml | 4 +++- stack.yaml.lock | 14 +++++++------- 37 files changed, 28 insertions(+), 55 deletions(-) diff --git a/services/brig/src/Brig/API/Error.hs b/services/brig/src/Brig/API/Error.hs index f16e8e0916e..2835c60c57a 100644 --- a/services/brig/src/Brig/API/Error.hs +++ b/services/brig/src/Brig/API/Error.hs @@ -38,7 +38,7 @@ import Imports import Network.HTTP.Types.Header import Network.HTTP.Types.Status import qualified Network.Wai.Utilities.Error as Wai -import Type.Reflection (Typeable, typeRep) +import Type.Reflection (typeRep) data Error where StdError :: !Wai.Error -> Error diff --git a/services/brig/src/Brig/API/Internal.hs b/services/brig/src/Brig/API/Internal.hs index 4c5a296ae69..b568f470e19 100644 --- a/services/brig/src/Brig/API/Internal.hs +++ b/services/brig/src/Brig/API/Internal.hs @@ -57,7 +57,6 @@ import Network.Wai (Response) import Network.Wai.Predicate hiding (result, setStatus) import Network.Wai.Routing import Network.Wai.Utilities as Utilities -import Network.Wai.Utilities.Response (json) import Network.Wai.Utilities.ZAuth (zauthConnId, zauthUserId) import Wire.API.User import Wire.API.User.RichInfo diff --git a/services/brig/src/Brig/API/Public.hs b/services/brig/src/Brig/API/Public.hs index f40c5b03c81..e194c212b63 100644 --- a/services/brig/src/Brig/API/Public.hs +++ b/services/brig/src/Brig/API/Public.hs @@ -71,7 +71,6 @@ import Network.Wai (Response, lazyRequestBody) import Network.Wai.Predicate hiding (result, setStatus) import Network.Wai.Routing import Network.Wai.Utilities as Utilities -import Network.Wai.Utilities.Response (json) import Network.Wai.Utilities.Swagger (document, mkSwaggerApi) import qualified Network.Wai.Utilities.Swagger as Doc import Network.Wai.Utilities.ZAuth (zauthConnId, zauthUserId) diff --git a/services/brig/src/Brig/AWS.hs b/services/brig/src/Brig/AWS.hs index 745ed6408d7..d4e0f449029 100644 --- a/services/brig/src/Brig/AWS.hs +++ b/services/brig/src/Brig/AWS.hs @@ -56,7 +56,6 @@ import qualified Data.ByteString.Lazy as BL import qualified Data.Text as Text import qualified Data.Text.Encoding as Text import Data.UUID hiding (null) -import Data.Yaml (FromJSON (..)) import Imports hiding (group) import Network.AWS (AWSRequest, Rs) import qualified Network.AWS as AWS diff --git a/services/brig/src/Brig/App.hs b/services/brig/src/Brig/App.hs index 1daf11a86c6..198e2684bf5 100644 --- a/services/brig/src/Brig/App.hs +++ b/services/brig/src/Brig/App.hs @@ -90,7 +90,7 @@ import Control.AutoUpdate import Control.Error import Control.Exception.Enclosed (handleAny) import Control.Lens hiding (index, (.=)) -import Control.Monad.Catch (MonadCatch, MonadMask, MonadThrow) +import Control.Monad.Catch (MonadCatch, MonadMask) import Control.Monad.Trans.Resource import Data.ByteString.Conversion import Data.Default (def) diff --git a/services/brig/src/Brig/Calling/API.hs b/services/brig/src/Brig/Calling/API.hs index e1900114acf..a42a5440c02 100644 --- a/services/brig/src/Brig/Calling/API.hs +++ b/services/brig/src/Brig/Calling/API.hs @@ -26,7 +26,6 @@ import Brig.Calling import qualified Brig.Calling as Calling import Brig.Calling.Internal import Control.Lens -import Control.Monad.Fail (MonadFail) import Control.Monad.Random.Class import Data.ByteString.Conversion (toByteString') import Data.ByteString.Lens diff --git a/services/brig/src/Brig/Code.hs b/services/brig/src/Brig/Code.hs index e2e091bea9c..76475084e7f 100644 --- a/services/brig/src/Brig/Code.hs +++ b/services/brig/src/Brig/Code.hs @@ -127,7 +127,7 @@ instance Cql Scope where fromCql (CqlInt 3) = return PasswordReset fromCql (CqlInt 4) = return AccountLogin fromCql (CqlInt 5) = return AccountApproval - fromCql _ = fail "fromCql: Scope: int expected" + fromCql _ = Left "fromCql: Scope: int expected" newtype Retries = Retries {numRetries :: Word8} deriving (Eq, Show, Ord, Num, Integral, Enum, Real) @@ -136,7 +136,7 @@ instance Cql Retries where ctype = Tagged IntColumn toCql = CqlInt . fromIntegral . numRetries fromCql (CqlInt n) = return (Retries (fromIntegral n)) - fromCql _ = fail "fromCql: Retries: int expected" + fromCql _ = Left "fromCql: Retries: int expected" -------------------------------------------------------------------------------- -- Generation diff --git a/services/brig/src/Brig/Data/User.hs b/services/brig/src/Brig/Data/User.hs index b192b8fd8f8..2eb4c9c1d69 100644 --- a/services/brig/src/Brig/Data/User.hs +++ b/services/brig/src/Brig/Data/User.hs @@ -73,7 +73,6 @@ import Brig.Options import Brig.Password import Brig.Types import Brig.Types.Intra -import Brig.Types.User (newUserExpiresIn) import qualified Brig.ZAuth as ZAuth import Cassandra import Control.Error diff --git a/services/brig/src/Brig/Data/UserKey.hs b/services/brig/src/Brig/Data/UserKey.hs index be21c62a357..408973ff0dd 100644 --- a/services/brig/src/Brig/Data/UserKey.hs +++ b/services/brig/src/Brig/Data/UserKey.hs @@ -72,8 +72,8 @@ instance Cql UKHashType where fromCql (CqlInt i) = case i of 0 -> return UKHashPhone 1 -> return UKHashEmail - n -> fail $ "unexpected hashtype: " ++ show n - fromCql _ = fail "userkeyhashtype: int expected" + n -> Left $ "unexpected hashtype: " ++ show n + fromCql _ = Left "userkeyhashtype: int expected" toCql UKHashPhone = CqlInt 0 toCql UKHashEmail = CqlInt 1 @@ -84,9 +84,9 @@ instance Cql UserKeyHash where ctype = Tagged BlobColumn fromCql (CqlBlob lbs) = case MH.decode (toStrict lbs) of - Left e -> fail ("userkeyhash: " ++ e) + Left e -> Left ("userkeyhash: " ++ e) Right h -> return $ UserKeyHash h - fromCql _ = fail "userkeyhash: expected blob" + fromCql _ = Left "userkeyhash: expected blob" toCql (UserKeyHash d) = CqlBlob $ MH.encode (MH.algorithm d) (MH.digest d) diff --git a/services/brig/src/Brig/Index/Migrations.hs b/services/brig/src/Brig/Index/Migrations.hs index 14ea80ebf4e..852ef985932 100644 --- a/services/brig/src/Brig/Index/Migrations.hs +++ b/services/brig/src/Brig/Index/Migrations.hs @@ -26,7 +26,7 @@ import qualified Brig.User.Search.Index as Search import qualified Cassandra as C import qualified Cassandra.Settings as C import Control.Lens (view, (^.)) -import Control.Monad.Catch (Exception, MonadThrow, finally, throwM) +import Control.Monad.Catch (MonadThrow, finally, throwM) import Data.Aeson (Value, object, (.=)) import qualified Data.Metrics as Metrics import qualified Data.Text as Text diff --git a/services/brig/src/Brig/Index/Migrations/Types.hs b/services/brig/src/Brig/Index/Migrations/Types.hs index 920ed007e1d..3327515a134 100644 --- a/services/brig/src/Brig/Index/Migrations/Types.hs +++ b/services/brig/src/Brig/Index/Migrations/Types.hs @@ -23,7 +23,6 @@ module Brig.Index.Migrations.Types where import qualified Brig.User.Search.Index as Search import qualified Cassandra as C import Control.Monad.Catch (MonadThrow) -import Control.Monad.Reader (MonadReader (..), ReaderT, lift, runReaderT) import Data.Aeson (FromJSON (..), ToJSON (..), object, withObject, (.:), (.=)) import Data.Metrics (Metrics) import qualified Database.Bloodhound as ES diff --git a/services/brig/src/Brig/Phone.hs b/services/brig/src/Brig/Phone.hs index 41520c0dc41..02379acb2ba 100644 --- a/services/brig/src/Brig/Phone.hs +++ b/services/brig/src/Brig/Phone.hs @@ -44,7 +44,6 @@ import Brig.Types import Control.Lens (view) import Control.Monad.Catch import Control.Retry -import Data.Char (isSpace) import Data.LanguageCodes import qualified Data.Metrics as Metrics import qualified Data.Text as Text diff --git a/services/brig/src/Brig/Provider/DB.hs b/services/brig/src/Brig/Provider/DB.hs index c9adc1089a8..af0313ae037 100644 --- a/services/brig/src/Brig/Provider/DB.hs +++ b/services/brig/src/Brig/Provider/DB.hs @@ -29,7 +29,6 @@ import Brig.Types.Provider.Tag import Cassandra as C import Control.Arrow ((&&&)) import Data.Id -import Data.List (minimumBy, sortOn, uncons, unfoldr) import Data.List1 (List1) import Data.Misc import Data.Range (Range, fromRange, rcast, rnil) diff --git a/services/brig/src/Brig/RPC.hs b/services/brig/src/Brig/RPC.hs index 1bb3a0f9419..4d12ab84065 100644 --- a/services/brig/src/Brig/RPC.hs +++ b/services/brig/src/Brig/RPC.hs @@ -32,7 +32,7 @@ import Data.Id import qualified Data.Text as Text import qualified Data.Text.Lazy as LT import Imports -import Network.HTTP.Client (HttpException (..), HttpExceptionContent (..), checkResponse) +import Network.HTTP.Client (HttpExceptionContent (..), checkResponse) import Network.HTTP.Types.Method import Network.HTTP.Types.Status import System.Logger.Class hiding (name, (.=)) diff --git a/services/brig/src/Brig/User/Search/Index.hs b/services/brig/src/Brig/User/Search/Index.hs index 95ceb2ec267..d66267f3118 100644 --- a/services/brig/src/Brig/User/Search/Index.hs +++ b/services/brig/src/Brig/User/Search/Index.hs @@ -71,7 +71,6 @@ import Data.Id import qualified Data.Map as Map import Data.Metrics import Data.Range -import Data.Semigroup (Max (..)) import Data.Text.ICU.Translit (trans, transliterate) import Data.Text.Lazy.Builder.Int (decimal) import Data.Text.Lens hiding (text) diff --git a/services/brig/src/Brig/Whitelist.hs b/services/brig/src/Brig/Whitelist.hs index a61e7838844..010412c85b8 100644 --- a/services/brig/src/Brig/Whitelist.hs +++ b/services/brig/src/Brig/Whitelist.hs @@ -35,7 +35,7 @@ import Data.Aeson import Data.Text import Data.Text.Encoding (encodeUtf8) import Imports -import Network.HTTP.Client (HttpException (..), HttpExceptionContent (..), parseRequest) +import Network.HTTP.Client (HttpExceptionContent (..)) -- | A service providing a whitelist of allowed email addresses and phone numbers data Whitelist = Whitelist diff --git a/services/brig/test/integration/API/Calling.hs b/services/brig/test/integration/API/Calling.hs index b36a2182270..1f693223de9 100644 --- a/services/brig/test/integration/API/Calling.hs +++ b/services/brig/test/integration/API/Calling.hs @@ -29,14 +29,12 @@ import Data.Bifunctor (Bifunctor (first)) import Data.ByteString.Conversion import qualified Data.ByteString.Lazy as LB import Data.Id -import Data.List ((\\)) import qualified Data.List.NonEmpty as NonEmpty import Data.List1 (List1) import qualified Data.List1 as List1 import Data.Misc (Port, mkHttpsUrl) import qualified Data.Set as Set import Imports -import Network.HTTP.Client (Manager) import System.FilePath (()) import Test.Tasty import Test.Tasty.HUnit diff --git a/services/brig/test/integration/API/Search.hs b/services/brig/test/integration/API/Search.hs index 7574a5be620..ff669fa11cc 100644 --- a/services/brig/test/integration/API/Search.hs +++ b/services/brig/test/integration/API/Search.hs @@ -30,18 +30,15 @@ import qualified Brig.Options as Opt import Brig.Types import Control.Lens ((.~), (?~), (^.)) import Control.Monad.Catch (MonadCatch, MonadThrow) -import Control.Monad.Fail (MonadFail) import Control.Retry import Data.Aeson (FromJSON, Value, (.=)) import qualified Data.Aeson as Aeson import Data.Handle (fromHandle) import Data.Id -import Data.List (elemIndex) import qualified Data.Text as Text import qualified Database.Bloodhound as ES import qualified Galley.Types.Teams.SearchVisibility as Team import Imports -import Network.HTTP.Client (Manager) import qualified Network.HTTP.Client as HTTP import qualified Network.Wai.Test as WaiTest import Test.Tasty diff --git a/services/brig/test/integration/API/Team.hs b/services/brig/test/integration/API/Team.hs index 1a83cdad7af..26644728549 100644 --- a/services/brig/test/integration/API/Team.hs +++ b/services/brig/test/integration/API/Team.hs @@ -36,7 +36,6 @@ import Brig.Types.User.Auth import Control.Arrow ((&&&)) import Control.Lens hiding ((.=)) import Control.Monad.Catch (MonadCatch, MonadThrow) -import Control.Monad.Fail (MonadFail) import Data.Aeson import Data.ByteString.Conversion import Data.Id hiding (client) @@ -47,7 +46,6 @@ import qualified Data.UUID.V4 as UUID import qualified Galley.Types.Teams as Team import qualified Galley.Types.Teams.Intra as Team import Imports -import Network.HTTP.Client (Manager) import qualified Network.Wai.Test as WaiTest import qualified Network.Wai.Utilities.Error as Error import Numeric.Natural (Natural) diff --git a/services/brig/test/integration/API/Team/Util.hs b/services/brig/test/integration/API/Team/Util.hs index 107ac430dba..0293e682fb7 100644 --- a/services/brig/test/integration/API/Team/Util.hs +++ b/services/brig/test/integration/API/Team/Util.hs @@ -28,7 +28,6 @@ import Brig.Types.Team.Invitation import Brig.Types.User import Control.Lens ((^?)) import Control.Monad.Catch (MonadCatch, MonadThrow) -import Control.Monad.Fail (MonadFail) import Data.Aeson import Data.Aeson.Lens import Data.ByteString.Conversion diff --git a/services/brig/test/integration/Util.hs b/services/brig/test/integration/Util.hs index 405ee2b69df..33c0ca23f0d 100644 --- a/services/brig/test/integration/Util.hs +++ b/services/brig/test/integration/Util.hs @@ -37,7 +37,6 @@ import Brig.Types.User import Brig.Types.User.Auth import Control.Lens ((^.), (^?), (^?!)) import Control.Monad.Catch (MonadCatch) -import Control.Monad.Fail (MonadFail) import Control.Retry import Data.Aeson import Data.Aeson.Lens (key, _Integral, _JSON, _String) @@ -540,7 +539,7 @@ mkEmailRandomLocalSuffix e = do uid <- liftIO UUID.nextRandom case parseEmail e of Just (Email loc dom) -> return $ Email (loc <> "+" <> UUID.toText uid) dom - Nothing -> fail $ "Invalid email address: " ++ Text.unpack e + Nothing -> error $ "Invalid email address: " ++ Text.unpack e -- | Generate emails that are in the trusted whitelist of domains whose @+@ suffices count for email -- disambiguation. See also: 'Brig.Email.mkEmailKey'. diff --git a/services/galley/src/Galley/Data.hs b/services/galley/src/Galley/Data.hs index 355a6b09adb..5b54cba20ec 100644 --- a/services/galley/src/Galley/Data.hs +++ b/services/galley/src/Galley/Data.hs @@ -116,7 +116,6 @@ import Data.Bifunctor (first) import Data.ByteString.Conversion hiding (parser) import Data.Coerce (coerce) import Data.Domain (Domain) -import Data.Function (on) import Data.Id as Id import Data.IdMapping (IdMapping (IdMapping), MappedOrLocalId (Local, Mapped), opaqueIdFromMappedOrLocal) import Data.Json.Util (UTCTimeMillis (..)) diff --git a/services/galley/src/Galley/External.hs b/services/galley/src/Galley/External.hs index 22b76e9a0af..4b8b7994a82 100644 --- a/services/galley/src/Galley/External.hs +++ b/services/galley/src/Galley/External.hs @@ -22,7 +22,6 @@ where import Bilge.Request import Bilge.Retry (httpHandlers) -import Control.Exception (fromException) import Control.Lens import Control.Retry import Data.ByteString.Conversion.To diff --git a/services/galley/src/Galley/Intra/Client.hs b/services/galley/src/Galley/Intra/Client.hs index 9c36265711e..f8f67405579 100644 --- a/services/galley/src/Galley/Intra/Client.hs +++ b/services/galley/src/Galley/Intra/Client.hs @@ -27,7 +27,6 @@ where import Bilge hiding (getHeader, options, statusCode) import Bilge.RPC import Brig.Types.Client -import Brig.Types.Client.Prekey (LastPrekey, Prekey) import Brig.Types.Intra import Brig.Types.Team.LegalHold (LegalHoldClientRequest (..)) import Brig.Types.User.Auth (LegalHoldLogin (..)) diff --git a/services/galley/src/Galley/Intra/Push.hs b/services/galley/src/Galley/Intra/Push.hs index 27a4944fcc1..8e3381e2c9d 100644 --- a/services/galley/src/Galley/Intra/Push.hs +++ b/services/galley/src/Galley/Intra/Push.hs @@ -50,7 +50,7 @@ where import Bilge hiding (options) import Bilge.RPC import Bilge.Retry -import Control.Lens (makeLenses, set, view, (&), (.~), (^.)) +import Control.Lens (makeLenses, set, view, (.~), (^.)) import Control.Monad.Catch import Control.Retry import Data.Aeson (Object) diff --git a/services/galley/src/Galley/Intra/User.hs b/services/galley/src/Galley/Intra/User.hs index 9e2dd2cd3b4..d2ec99fd311 100644 --- a/services/galley/src/Galley/Intra/User.hs +++ b/services/galley/src/Galley/Intra/User.hs @@ -30,7 +30,6 @@ import Bilge hiding (getHeader, options, statusCode) import Bilge.RPC import Brig.Types.Connection (ConnectionsStatusRequest (..), Relation (..), UserIds (..)) import Brig.Types.Intra -import Brig.Types.Intra (ConnectionStatus (..), ReAuthUser (..)) import Brig.Types.User (User) import Control.Monad.Catch (throwM) import Data.ByteString.Char8 (pack) @@ -40,7 +39,7 @@ import Data.Id import Galley.App import Galley.Intra.Util import Imports -import Network.HTTP.Client (HttpException (..), HttpExceptionContent (..)) +import Network.HTTP.Client (HttpExceptionContent (..)) import qualified Network.HTTP.Client.Internal as Http import Network.HTTP.Types.Method import Network.HTTP.Types.Status diff --git a/services/galley/test/integration/API/SQS.hs b/services/galley/test/integration/API/SQS.hs index afd7f1f7663..a52e7dae200 100644 --- a/services/galley/test/integration/API/SQS.hs +++ b/services/galley/test/integration/API/SQS.hs @@ -19,7 +19,7 @@ -- instead. module API.SQS where -import Control.Exception (SomeAsyncException, asyncExceptionFromException) +import Control.Exception (asyncExceptionFromException) import Control.Lens hiding ((.=)) import Control.Monad.Catch hiding (bracket) import qualified Data.ByteString.Base64 as B64 diff --git a/services/galley/test/integration/API/Teams/LegalHold.hs b/services/galley/test/integration/API/Teams/LegalHold.hs index b66c6887d1a..01481bfa563 100644 --- a/services/galley/test/integration/API/Teams/LegalHold.hs +++ b/services/galley/test/integration/API/Teams/LegalHold.hs @@ -36,7 +36,7 @@ import qualified Cassandra.Exec as Cql import qualified Control.Concurrent.Async as Async import Control.Concurrent.Chan import Control.Concurrent.Timeout hiding (threadDelay) -import Control.Exception (SomeAsyncException, asyncExceptionFromException) +import Control.Exception (asyncExceptionFromException) import Control.Lens import Control.Monad.Catch import Control.Retry (RetryPolicy, RetryStatus, exponentialBackoff, limitRetries, retrying) @@ -83,7 +83,6 @@ import Test.QuickCheck.Instances () import Test.Tasty import qualified Test.Tasty.Cannon as WS import Test.Tasty.HUnit -import Test.Tasty.HUnit (assertBool) import TestHelpers import TestSetup import qualified Wire.API.Team.Feature as Public diff --git a/services/galley/test/integration/API/Util.hs b/services/galley/test/integration/API/Util.hs index 8892fa136ee..9f8c2a98c16 100644 --- a/services/galley/test/integration/API/Util.hs +++ b/services/galley/test/integration/API/Util.hs @@ -27,7 +27,6 @@ import Brig.Types.Team.Invitation import Brig.Types.User.Auth (CookieLabel (..)) import Control.Lens hiding (from, to, (#), (.=)) import Control.Monad.Catch (MonadCatch) -import Control.Monad.Fail (MonadFail) import Control.Retry (constantDelay, limitRetries, retrying) import Data.Aeson hiding (json) import Data.Aeson.Lens (key, _String) @@ -1264,7 +1263,7 @@ randomUserWithClient lk = do newNonce :: TestM (Id ()) newNonce = randomId -fromBS :: (HasCallStack, FromByteString a, Monad m) => ByteString -> m a +fromBS :: (HasCallStack, FromByteString a, MonadFail m) => ByteString -> m a fromBS = maybe (fail "fromBS: no parse") return . fromByteString convRange :: Maybe (Either [ConvId] ConvId) -> Maybe Int32 -> Request -> Request diff --git a/services/galley/test/integration/TestSetup.hs b/services/galley/test/integration/TestSetup.hs index 090124ddfd5..2b0dd87a939 100644 --- a/services/galley/test/integration/TestSetup.hs +++ b/services/galley/test/integration/TestSetup.hs @@ -39,7 +39,6 @@ import Bilge (Manager, MonadHttp (..), Request, withResponse) import qualified Cassandra as Cql import Control.Lens (makeLenses, view) import Control.Monad.Catch (MonadCatch, MonadMask, MonadThrow) -import Control.Monad.Fail (MonadFail) import Data.Aeson import qualified Galley.Aws as Aws import Galley.Options (Opts) diff --git a/services/gundeck/src/Gundeck/API/Public.hs b/services/gundeck/src/Gundeck/API/Public.hs index b2457fab223..273dc640e0f 100644 --- a/services/gundeck/src/Gundeck/API/Public.hs +++ b/services/gundeck/src/Gundeck/API/Public.hs @@ -40,7 +40,6 @@ import Network.Wai import Network.Wai.Predicate hiding (setStatus) import Network.Wai.Routing hiding (route) import Network.Wai.Utilities -import Network.Wai.Utilities.Response (json, setStatus) import Network.Wai.Utilities.Swagger import Wire.API.Notification (NotificationId) import qualified Wire.API.Notification as Public diff --git a/services/gundeck/test/integration/API.hs b/services/gundeck/test/integration/API.hs index 7cc5984ceaa..e995ed9648e 100644 --- a/services/gundeck/test/integration/API.hs +++ b/services/gundeck/test/integration/API.hs @@ -27,7 +27,7 @@ import Bilge.Assert import qualified Cassandra as Cql import Control.Arrow ((&&&)) import Control.Concurrent.Async (Async, async, concurrently_, forConcurrently_, wait) -import Control.Lens (view, (%~), (.~), (<&>), (^.), (^?), _2) +import Control.Lens (view, (%~), (.~), (^.), (^?), _2) import Control.Retry (constantDelay, limitRetries, recoverAll, retrying) import Data.Aeson hiding (json) import Data.Aeson.Lens diff --git a/services/gundeck/test/integration/TestSetup.hs b/services/gundeck/test/integration/TestSetup.hs index 47e41b27ac2..2d31de313a7 100644 --- a/services/gundeck/test/integration/TestSetup.hs +++ b/services/gundeck/test/integration/TestSetup.hs @@ -39,7 +39,6 @@ import Bilge (HttpT (..), Manager, MonadHttp, Request, runHttpT) import qualified Cassandra as Cql import Control.Lens (makeLenses, (^.)) import Control.Monad.Catch (MonadCatch, MonadMask, MonadThrow) -import Control.Monad.Fail (MonadFail) import Imports import qualified System.Logger as Log import Test.Tasty (TestName, TestTree) diff --git a/services/spar/test-integration/Test/Spar/AppSpec.hs b/services/spar/test-integration/Test/Spar/AppSpec.hs index d49246c7b8e..341750a4c1e 100644 --- a/services/spar/test-integration/Test/Spar/AppSpec.hs +++ b/services/spar/test-integration/Test/Spar/AppSpec.hs @@ -30,7 +30,6 @@ import Data.Id import qualified Data.List as List import Data.String.Conversions import Imports -import SAML2.Util ((-/)) import SAML2.WebSSO as SAML import qualified SAML2.WebSSO.Test.MockResponse as SAML import qualified Servant diff --git a/services/spar/test-integration/Test/Spar/DataSpec.hs b/services/spar/test-integration/Test/Spar/DataSpec.hs index 808e1d3f2e9..a49edaba146 100644 --- a/services/spar/test-integration/Test/Spar/DataSpec.hs +++ b/services/spar/test-integration/Test/Spar/DataSpec.hs @@ -27,7 +27,6 @@ import Cassandra import Control.Lens import Control.Monad.Except import Data.Kind (Type) -import Data.Typeable (Typeable) import Data.UUID as UUID import Data.UUID.V4 as UUID import Imports diff --git a/stack.yaml b/stack.yaml index d3551e62a7b..59509f7a14a 100644 --- a/stack.yaml +++ b/stack.yaml @@ -189,7 +189,6 @@ extra-deps: # - wai-predicates-0.10.0@sha256:6b096fd8c4487e06e910911ed35447756aa217426c39db44a4bdc55e0131b9aa,2849 - git: https://gitlab.com/axeman/wai-predicates.git commit: dc8813c17645251c050599485cdc2b5874daac30 -- quickcheck-state-machine-0.7.0@sha256:4fc4467380e35b88aab72c278856aacebbf95688059d8ad70eb82fe048df476b,4958 - markov-chain-usage-model-0.0.0@sha256:1afa95faeb9213c4d960a669190078b41b89169462b8edd910472980671ba8c0,2112 # Forked due to ghc-8.8 @@ -200,3 +199,6 @@ extra-deps: commit: e113fa4de8fcc3665c3c562a05a07f7a1d63b3cc # ghc-8.8 (Aug 24, 2020) - git: https://github.com/zoominsoftware/HaskellNet-SSL commit: 5b4f4ab49a6321b57f6dbeba64a7f4bb8ffa5cbc # allow-newer-network, dpwright/HaskellNet-SSL#24 (Aug 24, 2020) + +# Not in the LTS, not using latest on hackage due to breaking change +- quickcheck-state-machine-0.6.0 diff --git a/stack.yaml.lock b/stack.yaml.lock index b7211babca9..5e6cccdfa87 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -533,13 +533,6 @@ packages: original: git: https://gitlab.com/axeman/wai-predicates.git commit: dc8813c17645251c050599485cdc2b5874daac30 -- completed: - hackage: quickcheck-state-machine-0.7.0@sha256:4fc4467380e35b88aab72c278856aacebbf95688059d8ad70eb82fe048df476b,4958 - pantry-tree: - size: 3022 - sha256: 045794fff983e385560b321ff5576f6ec5c2821748c3042053f72daaca7beba8 - original: - hackage: quickcheck-state-machine-0.7.0@sha256:4fc4467380e35b88aab72c278856aacebbf95688059d8ad70eb82fe048df476b,4958 - completed: hackage: markov-chain-usage-model-0.0.0@sha256:1afa95faeb9213c4d960a669190078b41b89169462b8edd910472980671ba8c0,2112 pantry-tree: @@ -580,6 +573,13 @@ packages: original: git: https://github.com/zoominsoftware/HaskellNet-SSL commit: 5b4f4ab49a6321b57f6dbeba64a7f4bb8ffa5cbc +- completed: + hackage: quickcheck-state-machine-0.6.0@sha256:3e4f8df0f6b5d415e3c8840dc75034a63e37f56f5f8cfa1035ded16345235ac4,3825 + pantry-tree: + size: 1926 + sha256: ae502fd7f4c6680294149bed482d1896904c1259d5ae614093da01e0731ec92e + original: + hackage: quickcheck-state-machine-0.6.0 snapshots: - completed: size: 531932 From 258711a84093838d5a60800f8988e33e1fe7762e Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Tue, 25 Aug 2020 14:24:55 +0200 Subject: [PATCH 09/28] Fix compiler errros in makedeb: Maybe not the right thing --- tools/makedeb/src/System/MakeDeb.hs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/makedeb/src/System/MakeDeb.hs b/tools/makedeb/src/System/MakeDeb.hs index ae46fa4f003..6729bcfc71b 100644 --- a/tools/makedeb/src/System/MakeDeb.hs +++ b/tools/makedeb/src/System/MakeDeb.hs @@ -99,19 +99,19 @@ options = makeDeb :: MakeDebOpts -> IO () makeDeb opts = shelly . silently . withTmpDir $ \tmp -> do - void . escaping False $ cmd "cp" "-R" "-L" (deb opts "*") tmp - let opts' = opts {deb = tmp} + void . escaping False $ run "cp" ["-R", "-L", Text.pack $ encodeString (deb opts) "*", Text.pack tmp] + let opts' = opts {deb = decodeString tmp} substitute opts' package opts' package :: MakeDebOpts -> Sh () package MakeDebOpts {..} = do let f = name <> "_" <> version <> "+" <> build <> "_" <> arch - cmd "dpkg-deb" "-b" deb (out fromText f <.> "deb") + run_ "dpkg-deb" ["-b", Text.pack $ encodeString deb, Text.pack $ encodeString out fromText f <.> "deb"] substitute :: MakeDebOpts -> Sh () substitute MakeDebOpts {..} = flip traverseFiles (encodeString deb) $ \fname -> do - mime <- cmd "file" "--brief" "--mime" (decodeString fname) + mime <- run "file" ["--brief", "--mime", Text.pack fname] when ("text/plain" `Text.isPrefixOf` mime) $ replace [ ("<>", version), From 8a7a8a03f151bc9275cbc91356633c09ecdfb0ba Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Fri, 11 Sep 2020 12:41:30 +0200 Subject: [PATCH 10/28] Use hex from hackage --- stack.yaml | 4 +--- stack.yaml.lock | 10 +++------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/stack.yaml b/stack.yaml index 59509f7a14a..bdea9798ff1 100644 --- a/stack.yaml +++ b/stack.yaml @@ -191,9 +191,7 @@ extra-deps: commit: dc8813c17645251c050599485cdc2b5874daac30 - markov-chain-usage-model-0.0.0@sha256:1afa95faeb9213c4d960a669190078b41b89169462b8edd910472980671ba8c0,2112 -# Forked due to ghc-8.8 -- git: https://github.com/akshaymankar/haskell-hex - commit: d20af1ce51381b67a9cd63657a931d80b640f361 # ghc-8.8 (Aug 24, 2020) +- hex-0.2.0 - git: https://gitlab.com/axeman/redis-io.git commit: e113fa4de8fcc3665c3c562a05a07f7a1d63b3cc # ghc-8.8 (Aug 24, 2020) diff --git a/stack.yaml.lock b/stack.yaml.lock index 5e6cccdfa87..5556d23a45e 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -541,16 +541,12 @@ packages: original: hackage: markov-chain-usage-model-0.0.0@sha256:1afa95faeb9213c4d960a669190078b41b89169462b8edd910472980671ba8c0,2112 - completed: - name: hex - version: 0.1.1 - git: https://github.com/akshaymankar/haskell-hex + hackage: hex-0.2.0@sha256:197d2561d2e216c4ead035b4911dabc6e678ac6257cb71b64e324c822f6f9f5a,726 pantry-tree: size: 197 - sha256: dc3375135f836ce0073f10225476cda3ea723524a731534c516499041f10646b - commit: d20af1ce51381b67a9cd63657a931d80b640f361 + sha256: 1e5aba0165fb8ffa93d1516a87026a59c245750ca5f2ed42bd53b8328620f98e original: - git: https://github.com/akshaymankar/haskell-hex - commit: d20af1ce51381b67a9cd63657a931d80b640f361 + hackage: hex-0.2.0 - completed: name: redis-io version: 1.0.0 From 9c5f97d8b0ded17fe26894754fea0df197d6a14f Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Fri, 11 Sep 2020 13:54:06 +0200 Subject: [PATCH 11/28] Delete unused imports after rebase --- services/federator/src/Federator/App.hs | 2 +- services/federator/src/Federator/Run.hs | 7 +------ services/spar/src/Spar/App.hs | 1 - services/spar/src/Spar/Intra/Brig.hs | 1 - 4 files changed, 2 insertions(+), 9 deletions(-) diff --git a/services/federator/src/Federator/App.hs b/services/federator/src/Federator/App.hs index f6dcd763ab2..872aed9e9f4 100644 --- a/services/federator/src/Federator/App.hs +++ b/services/federator/src/Federator/App.hs @@ -31,7 +31,7 @@ import Bilge.RPC (HasRequestId (..)) import Control.Error (ExceptT) import Control.Lens (view) import Control.Monad.Catch (MonadCatch, MonadMask, MonadThrow) -import Control.Monad.Trans.Resource (MonadUnliftIO, ResourceT, runResourceT, transResourceT) +import Control.Monad.Trans.Resource (ResourceT, runResourceT, transResourceT) import Federator.Types (Env, applog, requestId) import Imports import Servant.API.Generic () diff --git a/services/federator/src/Federator/Run.hs b/services/federator/src/Federator/Run.hs index ed5fb177af6..023bbd0956a 100644 --- a/services/federator/src/Federator/Run.hs +++ b/services/federator/src/Federator/Run.hs @@ -28,12 +28,7 @@ module Federator.Run ) where -import Bilge (RequestId (unRequestId)) -import Bilge.RPC (HasRequestId (..)) -import Control.Error -import Control.Lens (view, (^.)) -import Control.Monad.Catch (MonadCatch, MonadMask) -import Control.Monad.Trans.Resource +import Control.Lens ((^.)) import Data.Default (def) import qualified Data.Metrics.Middleware as Metrics import Data.Text (unpack) diff --git a/services/spar/src/Spar/App.hs b/services/spar/src/Spar/App.hs index e9cb0bae542..f0a6cce9a6f 100644 --- a/services/spar/src/Spar/App.hs +++ b/services/spar/src/Spar/App.hs @@ -53,7 +53,6 @@ import qualified Data.UUID.V4 as UUID import Imports hiding (log) import qualified Network.HTTP.Types.Status as Http import qualified Network.Wai.Utilities.Error as Wai -import SAML2.Util (renderURI) import SAML2.WebSSO hiding (Email (..), UserRef (..)) import qualified SAML2.WebSSO as SAML import Servant diff --git a/services/spar/src/Spar/Intra/Brig.hs b/services/spar/src/Spar/Intra/Brig.hs index 3f22161a401..2e2c777542b 100644 --- a/services/spar/src/Spar/Intra/Brig.hs +++ b/services/spar/src/Spar/Intra/Brig.hs @@ -70,7 +70,6 @@ import Data.Id (Id (Id), TeamId, UserId) import Data.Ix import Data.Misc (PlainTextPassword, (<$$>)) import Data.String.Conversions -import Data.String.Conversions (cs) import Imports import Network.HTTP.Types.Method import qualified Network.Wai.Utilities.Error as Wai From 4af5e52cd1f85889bcd3f09f5e47c66f2dde3a82 Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Mon, 14 Sep 2020 09:58:26 +0200 Subject: [PATCH 12/28] Bump alpine to 3.12 for GHC --- build/alpine/Dockerfile.deps | 4 ++-- build/alpine/Dockerfile.prebuilder | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/build/alpine/Dockerfile.deps b/build/alpine/Dockerfile.deps index 96e7804a3cc..212d8df510a 100644 --- a/build/alpine/Dockerfile.deps +++ b/build/alpine/Dockerfile.deps @@ -1,6 +1,6 @@ # Requires docker >= 17.05 (requires support for multi-stage builds) -FROM alpine:3.11 as cryptobox-builder +FROM alpine:3.12 as cryptobox-builder # compile cryptobox-c RUN apk add --no-cache cargo file libsodium-dev git && \ @@ -11,7 +11,7 @@ RUN apk add --no-cache cargo file libsodium-dev git && \ cargo build --release # Minimal dependencies for alpine-compiled, dynamically linked wire-server Haskell services -FROM alpine:3.11 +FROM alpine:3.12 COPY --from=cryptobox-builder /tmp/cryptobox-c/target/release/libcryptobox.so /usr/lib diff --git a/build/alpine/Dockerfile.prebuilder b/build/alpine/Dockerfile.prebuilder index d0a71453238..e71708e76c3 100644 --- a/build/alpine/Dockerfile.prebuilder +++ b/build/alpine/Dockerfile.prebuilder @@ -1,6 +1,6 @@ # Requires docker >= 17.05 (requires support for multi-stage builds) -FROM alpine:3.11 as cryptobox-builder +FROM alpine:3.12 as cryptobox-builder # compile cryptobox-c RUN apk add --no-cache cargo file libsodium-dev git && \ @@ -10,7 +10,7 @@ RUN apk add --no-cache cargo file libsodium-dev git && \ export SODIUM_USE_PKG_CONFIG=1 && \ cargo build --release -FROM alpine:3.11 +FROM alpine:3.12 # install cryptobox-c in the new container COPY --from=cryptobox-builder /tmp/cryptobox-c/target/release/libcryptobox.so /usr/lib/libcryptobox.so From f2c2a661b421d1d37141189b3b1b31c7e9915d62 Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Mon, 14 Sep 2020 11:00:41 +0200 Subject: [PATCH 13/28] Add ncurses-dev to prebuilder --- build/alpine/Dockerfile.prebuilder | 1 + 1 file changed, 1 insertion(+) diff --git a/build/alpine/Dockerfile.prebuilder b/build/alpine/Dockerfile.prebuilder index e71708e76c3..382ba4b32fb 100644 --- a/build/alpine/Dockerfile.prebuilder +++ b/build/alpine/Dockerfile.prebuilder @@ -37,6 +37,7 @@ RUN apk add --no-cache \ libxml2-dev \ git \ ncurses \ + ncurses-dev \ sed # get static version of Haskell Stack and use system ghc by default From 881350eda461567d5b9a4e799ad66f192cf318bd Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Mon, 14 Sep 2020 17:13:34 +0200 Subject: [PATCH 14/28] Use PR branch of wai-predicates --- stack.yaml | 2 +- stack.yaml.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/stack.yaml b/stack.yaml index bdea9798ff1..86687fa0a81 100644 --- a/stack.yaml +++ b/stack.yaml @@ -188,7 +188,7 @@ extra-deps: - text-format-0.3.2@sha256:2a3fc17cf87120fcfdbca62a0da59759755549285841cdc1483081c35fb3d115,1814 # - wai-predicates-0.10.0@sha256:6b096fd8c4487e06e910911ed35447756aa217426c39db44a4bdc55e0131b9aa,2849 - git: https://gitlab.com/axeman/wai-predicates.git - commit: dc8813c17645251c050599485cdc2b5874daac30 + commit: 999d195b27104b9b39174f5ce18f5214b018a177 # ghc-8.8 (Sep 14, 2020, PR: https://gitlab.com/twittner/wai-predicates/-/merge_requests/1) - markov-chain-usage-model-0.0.0@sha256:1afa95faeb9213c4d960a669190078b41b89169462b8edd910472980671ba8c0,2112 - hex-0.2.0 diff --git a/stack.yaml.lock b/stack.yaml.lock index 5556d23a45e..5d6a164d13a 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -528,11 +528,11 @@ packages: git: https://gitlab.com/axeman/wai-predicates.git pantry-tree: size: 1585 - sha256: 64b646102d2a187aa662c00f20071cc8e2574da9240bacbf4710a4928528f0d7 - commit: dc8813c17645251c050599485cdc2b5874daac30 + sha256: 8675a538bbbfb171b9d565831f333e443118ea5a70b1be8bffa635cb847d04fa + commit: 999d195b27104b9b39174f5ce18f5214b018a177 original: git: https://gitlab.com/axeman/wai-predicates.git - commit: dc8813c17645251c050599485cdc2b5874daac30 + commit: 999d195b27104b9b39174f5ce18f5214b018a177 - completed: hackage: markov-chain-usage-model-0.0.0@sha256:1afa95faeb9213c4d960a669190078b41b89169462b8edd910472980671ba8c0,2112 pantry-tree: From 63832ece9369feeaac31027034b9d75143c20481 Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Mon, 14 Sep 2020 17:13:56 +0200 Subject: [PATCH 15/28] Use upstream merged HaskelNet-SSL --- stack.yaml | 4 ++-- stack.yaml.lock | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/stack.yaml b/stack.yaml index 86687fa0a81..1559d1d40c3 100644 --- a/stack.yaml +++ b/stack.yaml @@ -195,8 +195,8 @@ extra-deps: - git: https://gitlab.com/axeman/redis-io.git commit: e113fa4de8fcc3665c3c562a05a07f7a1d63b3cc # ghc-8.8 (Aug 24, 2020) -- git: https://github.com/zoominsoftware/HaskellNet-SSL - commit: 5b4f4ab49a6321b57f6dbeba64a7f4bb8ffa5cbc # allow-newer-network, dpwright/HaskellNet-SSL#24 (Aug 24, 2020) +- git: https://github.com/dpwright/HaskellNet-SSL + commit: ca84ef29a93eaef7673fa58056cdd8dae1568d2d # master (Sep 14, 2020) # Not in the LTS, not using latest on hackage due to breaking change - quickcheck-state-machine-0.6.0 diff --git a/stack.yaml.lock b/stack.yaml.lock index 5d6a164d13a..d42167b88ef 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -561,14 +561,14 @@ packages: - completed: name: HaskellNet-SSL version: 0.3.4.2 - git: https://github.com/zoominsoftware/HaskellNet-SSL + git: https://github.com/dpwright/HaskellNet-SSL pantry-tree: size: 786 sha256: c6a64c9e64bc834842756be28eaac2d842f0dde3753542bfa0cfd87ae5cf0bc5 - commit: 5b4f4ab49a6321b57f6dbeba64a7f4bb8ffa5cbc + commit: ca84ef29a93eaef7673fa58056cdd8dae1568d2d original: - git: https://github.com/zoominsoftware/HaskellNet-SSL - commit: 5b4f4ab49a6321b57f6dbeba64a7f4bb8ffa5cbc + git: https://github.com/dpwright/HaskellNet-SSL + commit: ca84ef29a93eaef7673fa58056cdd8dae1568d2d - completed: hackage: quickcheck-state-machine-0.6.0@sha256:3e4f8df0f6b5d415e3c8840dc75034a63e37f56f5f8cfa1035ded16345235ac4,3825 pantry-tree: From cbcb3aa06e7438f84dd9d74d9ca3a5b2ccad932f Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Tue, 15 Sep 2020 09:30:38 +0200 Subject: [PATCH 16/28] Parmeterize builder image using the same way as others --- build/alpine/Dockerfile.builder | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/build/alpine/Dockerfile.builder b/build/alpine/Dockerfile.builder index 482e7aa42af..c5196cd429a 100644 --- a/build/alpine/Dockerfile.builder +++ b/build/alpine/Dockerfile.builder @@ -1,9 +1,7 @@ # Requires docker >= 17.05 (requires support for multi-stage builds) - -ARG prebuilder_tag=latest ARG prebuilder=quay.io/wire/alpine-prebuilder -FROM ${prebuilder}:${prebuilder_tag} +FROM ${prebuilder} WORKDIR / # Download stack indices and compile/cache dependencies to speed up subsequent From 4982704dd34bdb64964d6f645e54018bfb2bea68 Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Tue, 15 Sep 2020 10:43:49 +0200 Subject: [PATCH 17/28] Bump simpl-tick-factor to compile bonanza --- tools/bonanza/bonanza.cabal | 4 ++-- tools/bonanza/package.yaml | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/tools/bonanza/bonanza.cabal b/tools/bonanza/bonanza.cabal index f893c97fb18..526e1d66746 100644 --- a/tools/bonanza/bonanza.cabal +++ b/tools/bonanza/bonanza.cabal @@ -4,7 +4,7 @@ cabal-version: 1.12 -- -- see: https://github.com/sol/hpack -- --- hash: c393e7ad1fa91da04b5c2445faaa5c3b0a72153a9529d757776e97fc0c48d70b +-- hash: d0c214716e0e657d0ed77bf9c646a2e9c92ef00310a0dfb464a1bf92c9befaad name: bonanza version: 3.6.0 @@ -155,7 +155,7 @@ test-suite bonanza-tests hs-source-dirs: test/unit default-extensions: AllowAmbiguousTypes BangPatterns ConstraintKinds DataKinds DefaultSignatures DerivingStrategies DeriveFunctor DeriveGeneric DeriveLift DeriveTraversable EmptyCase FlexibleContexts FlexibleInstances FunctionalDependencies GADTs InstanceSigs KindSignatures LambdaCase MultiParamTypeClasses MultiWayIf NamedFieldPuns NoImplicitPrelude OverloadedStrings PackageImports PatternSynonyms PolyKinds QuasiQuotes RankNTypes ScopedTypeVariables StandaloneDeriving TemplateHaskell TupleSections TypeApplications TypeFamilies TypeFamilyDependencies TypeOperators UndecidableInstances ViewPatterns - ghc-options: -O2 -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates -Wpartial-fields -fwarn-tabs -optP-Wno-nonportable-include-path -threaded -with-rtsopts=-N + ghc-options: -O2 -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates -Wpartial-fields -fwarn-tabs -optP-Wno-nonportable-include-path -threaded -with-rtsopts=-N -fsimpl-tick-factor=250 build-depends: QuickCheck , aeson diff --git a/tools/bonanza/package.yaml b/tools/bonanza/package.yaml index 1abedb2ddfb..17228661a88 100644 --- a/tools/bonanza/package.yaml +++ b/tools/bonanza/package.yaml @@ -102,6 +102,12 @@ tests: ghc-options: - -threaded - -with-rtsopts=-N + - -fsimpl-tick-factor=250 # Without this GHC's simplifier fails as it runs + # out of time while compiling + # 'Test.Bonanza.Arbitrary'. While compiling this + # module GHC takes up quite a lot of RAM (about + # 8GB). Looks like a GHC bug. To be further + # investigated. dependencies: - aeson - attoparsec From c595ecccae0fff1a484dc5eb18039c97551c99ca Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Wed, 16 Sep 2020 15:09:19 +0200 Subject: [PATCH 18/28] Replace 'mapM' with 'sequence $ map ...' Not sure why, but this convinces GHC to not inline things very aggressively. --- tools/bonanza/bonanza.cabal | 4 +-- tools/bonanza/package.yaml | 6 ---- .../test/unit/Test/Bonanza/Arbitrary.hs | 35 ++++++++++--------- 3 files changed, 20 insertions(+), 25 deletions(-) diff --git a/tools/bonanza/bonanza.cabal b/tools/bonanza/bonanza.cabal index 526e1d66746..962395345ff 100644 --- a/tools/bonanza/bonanza.cabal +++ b/tools/bonanza/bonanza.cabal @@ -4,7 +4,7 @@ cabal-version: 1.12 -- -- see: https://github.com/sol/hpack -- --- hash: d0c214716e0e657d0ed77bf9c646a2e9c92ef00310a0dfb464a1bf92c9befaad +-- hash: b4f9b357aa7c80ad5e4c9ba4704951aee705113487921a21c5722b3eb71e678b name: bonanza version: 3.6.0 @@ -155,7 +155,7 @@ test-suite bonanza-tests hs-source-dirs: test/unit default-extensions: AllowAmbiguousTypes BangPatterns ConstraintKinds DataKinds DefaultSignatures DerivingStrategies DeriveFunctor DeriveGeneric DeriveLift DeriveTraversable EmptyCase FlexibleContexts FlexibleInstances FunctionalDependencies GADTs InstanceSigs KindSignatures LambdaCase MultiParamTypeClasses MultiWayIf NamedFieldPuns NoImplicitPrelude OverloadedStrings PackageImports PatternSynonyms PolyKinds QuasiQuotes RankNTypes ScopedTypeVariables StandaloneDeriving TemplateHaskell TupleSections TypeApplications TypeFamilies TypeFamilyDependencies TypeOperators UndecidableInstances ViewPatterns - ghc-options: -O2 -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates -Wpartial-fields -fwarn-tabs -optP-Wno-nonportable-include-path -threaded -with-rtsopts=-N -fsimpl-tick-factor=250 + ghc-options: -O2 -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates -Wpartial-fields -fwarn-tabs -optP-Wno-nonportable-include-path -threaded -with-rtsopts=-N -ddump-simpl-stats build-depends: QuickCheck , aeson diff --git a/tools/bonanza/package.yaml b/tools/bonanza/package.yaml index 17228661a88..1abedb2ddfb 100644 --- a/tools/bonanza/package.yaml +++ b/tools/bonanza/package.yaml @@ -102,12 +102,6 @@ tests: ghc-options: - -threaded - -with-rtsopts=-N - - -fsimpl-tick-factor=250 # Without this GHC's simplifier fails as it runs - # out of time while compiling - # 'Test.Bonanza.Arbitrary'. While compiling this - # module GHC takes up quite a lot of RAM (about - # 8GB). Looks like a GHC bug. To be further - # investigated. dependencies: - aeson - attoparsec diff --git a/tools/bonanza/test/unit/Test/Bonanza/Arbitrary.hs b/tools/bonanza/test/unit/Test/Bonanza/Arbitrary.hs index dccf2a3c018..9401e30261c 100644 --- a/tools/bonanza/test/unit/Test/Bonanza/Arbitrary.hs +++ b/tools/bonanza/test/unit/Test/Bonanza/Arbitrary.hs @@ -376,23 +376,24 @@ instance Arbitrary (ParseInput (NginzLogRecord)) where where genFields :: Gen [(Text, CommonLogField)] genFields = - mapM - (\(f, g) -> f <$> g) - [ ((,) "status", genIntField), - ((,) "body_bytes_sent", genIntField), - ((,) "http_referer", genStringField), - ((,) "http_user_agent", genStringField), - ((,) "http_x_forwarded_for", genIPv4Field), - ((,) "separator", genEmptyField), - ((,) "connection", genIntField), - ((,) "request_time", genDoubleField), - ((,) "upstream_response_time", genDoubleField), - ((,) "upstream_cache_status", genStringField), - ((,) "user", genStringField), - ((,) "zconn", genStringField), - ((,) "request", genStringField), - ((,) "proxy_protocol_addr", genIPv4Field) - ] + sequence $ + map + (\(f, g) -> (f,) <$> g) + [ ("status", genIntField), + ("body_bytes_sent", genIntField), + ("http_referer", genStringField), + ("http_user_agent", genStringField), + ("http_x_forwarded_for", genIPv4Field), + ("separator", genEmptyField), + ("connection", genIntField), + ("request_time", genDoubleField), + ("upstream_response_time", genDoubleField), + ("upstream_cache_status", genStringField), + ("user", genStringField), + ("zconn", genStringField), + ("request", genStringField), + ("proxy_protocol_addr", genIPv4Field) + ] genIntField :: Gen CommonLogField genIntField = maybe CEmpty (CField . Number . fromIntegral . getNonNegative) From 7f511b48e73ad5e2acc17848c2ee20d8df46339f Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Thu, 17 Sep 2020 10:03:26 +0200 Subject: [PATCH 19/28] Upgrade to LTS 16.14, GHC 8.8.4 --- build/alpine/Dockerfile.prebuilder | 10 +++++++--- nix/overlays/wire-server.nix | 12 +++++++----- nix/sources.json | 8 ++++---- stack-deps.nix | 2 +- stack.yaml | 2 +- stack.yaml.lock | 8 ++++---- 6 files changed, 24 insertions(+), 18 deletions(-) diff --git a/build/alpine/Dockerfile.prebuilder b/build/alpine/Dockerfile.prebuilder index 382ba4b32fb..a9525939f09 100644 --- a/build/alpine/Dockerfile.prebuilder +++ b/build/alpine/Dockerfile.prebuilder @@ -22,9 +22,7 @@ RUN apk add --no-cache \ ca-certificates \ linux-headers \ zlib-dev \ - ghc \ - ghc-dev \ - ghc-doc \ + perl \ libsodium-dev \ openssl-dev \ protobuf \ @@ -45,3 +43,9 @@ ARG STACK_ALPINE_VERSION=2.3.1 RUN curl -sSfL https://github.com/commercialhaskell/stack/releases/download/v${STACK_ALPINE_VERSION}/stack-${STACK_ALPINE_VERSION}-linux-x86_64-static.tar.gz \ | tar --wildcards -C /usr/local/bin --strip-components=1 -xzvf - '*/stack' && chmod 755 /usr/local/bin/stack && \ stack config set system-ghc --global true + +ARG GHC_VERSION=8.8.4 +RUN curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org \ + | BOOTSTRAP_HASKELL_NONINTERACTIVE=1 BOOTSTRAP_HASKELL_GHC_VERSION=${GHC_VERSION} sh + +ENV PATH=/root/.ghcup/bin:${PATH} diff --git a/nix/overlays/wire-server.nix b/nix/overlays/wire-server.nix index 9b1a1e5a983..aeefaa46ffc 100644 --- a/nix/overlays/wire-server.nix +++ b/nix/overlays/wire-server.nix @@ -5,14 +5,15 @@ self: super: { rustPlatform.buildRustPackage rec { name = "cryptobox-c-${version}"; version = "2019-06-17"; - buildInputs = [ pkgconfig libsodium ]; + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ libsodium ]; src = fetchFromGitHub { owner = "wireapp"; repo = "cryptobox-c"; rev = "4067ad96b125942545dbdec8c1a89f1e1b65d013"; sha256 = "1i9dlhw0xk1viglyhail9fb36v1awrypps8jmhrkz8k1bhx98ci3"; }; - cargoSha256 = "0m85c49hvvxxv7jdipfcaydy4n8iw4h6myzv63v7qc0fxnp1vfm8"; + cargoSha256 = "0zs8ibv7rinrrzp9naxd7yak7kn1gp3pjb3g8i4wf7xw2hkkq81z"; postInstall = '' mkdir -p $out/include cp src/cbox.h $out/include @@ -25,11 +26,12 @@ self: super: { rustPlatform.buildRustPackage rec { name = "libzauth-${version}"; version = "3.0.0"; - buildInputs = [ libsodium pkgconfig ]; + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ libsodium ]; src = self.nix-gitignore.gitignoreSourcePure [ ../../.gitignore ] ../../libs/libzauth; sourceRoot = "libzauth/libzauth-c"; - cargoSha256 = "01yj1rchqmjnpj5cb9wl7vdzrycjwjhm60xh1jghw02n8jhl51p2"; # self.lib.fakeSha256; + cargoSha256 = "10ijvi3rnnqpy589hhhp8s4p7xfpsbb1c3mzqnf65ra96q4nd6bf"; # self.lib.fakeSha256; postInstall = '' mkdir -p $out/lib/pkgconfig mkdir -p $out/include @@ -37,7 +39,7 @@ self: super: { sed -e "s~<>~${version}~" \ -e "s~<>~$out~" \ src/libzauth.pc > $out/lib/pkgconfig/libzauth.pc - cp target/release/libzauth.so $out/lib/ + cp target/release-tmp/libzauth.so $out/lib/ ''; } ) {}; diff --git a/nix/sources.json b/nix/sources.json index 7a8e7297c28..370e10743a1 100644 --- a/nix/sources.json +++ b/nix/sources.json @@ -12,15 +12,15 @@ "url_template": "https://github.com///archive/.tar.gz" }, "nixpkgs": { - "branch": "nixos-20.03", + "branch": "nixpkgs-unstable", "description": "A read-only mirror of NixOS/nixpkgs tracking the released channels. Send issues and PRs to", "homepage": "https://github.com/NixOS/nixpkgs", "owner": "NixOS", "repo": "nixpkgs-channels", - "rev": "7c85b91589222b3710e9ff24b228b83f8be8e937", - "sha256": "1cgvlc92gkpwy5i8f7li9051jypaq20631l735j9z03ajv80jvxm", + "rev": "6d4b93323e7f78121f8d6db6c59f3889aa1dd931", + "sha256": "0g2j41cx2w2an5d9kkqvgmada7ssdxqz1zvjd7hi5vif8ag0v5la", "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs-channels/archive/7c85b91589222b3710e9ff24b228b83f8be8e937.tar.gz", + "url": "https://github.com/NixOS/nixpkgs-channels/archive/6d4b93323e7f78121f8d6db6c59f3889aa1dd931.tar.gz", "url_template": "https://github.com///archive/.tar.gz" } } diff --git a/stack-deps.nix b/stack-deps.nix index 282d2595f2c..ba6c69fd34a 100644 --- a/stack-deps.nix +++ b/stack-deps.nix @@ -17,5 +17,5 @@ pkgs.haskell.lib.buildStackProject { snappy zlib ]; - ghc = pkgs.haskell.compiler.ghc883; + ghc = pkgs.haskell.compiler.ghc884; } diff --git a/stack.yaml b/stack.yaml index 1559d1d40c3..cfeafeeafca 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,4 +1,4 @@ -resolver: lts-16.7 +resolver: lts-16.14 packages: - libs/api-bot diff --git a/stack.yaml.lock b/stack.yaml.lock index d42167b88ef..67db566de55 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -578,7 +578,7 @@ packages: hackage: quickcheck-state-machine-0.6.0 snapshots: - completed: - size: 531932 - url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/16/7.yaml - sha256: 96ceeddd4fd68b2d430f7695a12eadefee760b7034c88c75d99d0f380f483068 - original: lts-16.7 + size: 532382 + url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/16/14.yaml + sha256: 1ef27e36f38824abafc43224ca612211b3828fa9ffd31ba0fc2867ae2e19ba90 + original: lts-16.14 From f6889c9d8bc84359aa8b2146e63ce8e2948299e3 Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Thu, 17 Sep 2020 10:27:36 +0200 Subject: [PATCH 20/28] Add GHC deps to the builder image --- build/alpine/Dockerfile.prebuilder | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build/alpine/Dockerfile.prebuilder b/build/alpine/Dockerfile.prebuilder index a9525939f09..3f84e00a7a4 100644 --- a/build/alpine/Dockerfile.prebuilder +++ b/build/alpine/Dockerfile.prebuilder @@ -23,6 +23,9 @@ RUN apk add --no-cache \ linux-headers \ zlib-dev \ perl \ + gmp-dev \ + libffi-dev \ + make \ libsodium-dev \ openssl-dev \ protobuf \ From 0cb67e0564e97c2a67cc3d043a0671a9d6594723 Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Fri, 18 Sep 2020 17:52:16 +0200 Subject: [PATCH 21/28] Build dependencies without running out of RAM --- build/alpine/Dockerfile.builder | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build/alpine/Dockerfile.builder b/build/alpine/Dockerfile.builder index c5196cd429a..52203d7a58b 100644 --- a/build/alpine/Dockerfile.builder +++ b/build/alpine/Dockerfile.builder @@ -11,6 +11,7 @@ WORKDIR / # a Haddock segfault. See https://github.com/haskell/haddock/issues/928 ARG wire_server_branch=develop +ARG THREADS=4 RUN set -x && \ echo ${wire_server_branch} && \ git clone -b ${wire_server_branch} https://github.com/wireapp/wire-server.git && \ @@ -19,7 +20,7 @@ RUN set -x && \ echo "allow-different-user: true" >> /root/.stack/config.yaml && \ stack build --haddock --dependencies-only haskell-src-exts && \ stack build --haddock --no-haddock-hyperlink-source haskell-src-exts && \ - stack build --pedantic --haddock --test --no-run-tests --bench --no-run-benchmarks --dependencies-only && \ + stack build --pedantic --haddock --test --no-run-tests --bench --no-run-benchmarks --dependencies-only -j${THREADS} && \ stack install ormolu && \ cd / && \ # we run the build only to cache the built source in /root/.stack, we can remove the source code itself From e14ace1f3a7e762724b32315600b938d04d6f1eb Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Mon, 21 Sep 2020 11:35:48 +0200 Subject: [PATCH 22/28] Bump redis-io to merge-request commit --- stack.yaml | 2 +- stack.yaml.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/stack.yaml b/stack.yaml index cfeafeeafca..8f4765c5db6 100644 --- a/stack.yaml +++ b/stack.yaml @@ -194,7 +194,7 @@ extra-deps: - hex-0.2.0 - git: https://gitlab.com/axeman/redis-io.git - commit: e113fa4de8fcc3665c3c562a05a07f7a1d63b3cc # ghc-8.8 (Aug 24, 2020) + commit: a0f39b1c517df21ad284ff91ecb062cbe41a4ad1 # ghc-8.8 (Sep 21 , 2020, https://gitlab.com/twittner/redis-io/-/merge_requests/5) - git: https://github.com/dpwright/HaskellNet-SSL commit: ca84ef29a93eaef7673fa58056cdd8dae1568d2d # master (Sep 14, 2020) diff --git a/stack.yaml.lock b/stack.yaml.lock index 67db566de55..5ea018b1f4e 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -553,11 +553,11 @@ packages: git: https://gitlab.com/axeman/redis-io.git pantry-tree: size: 912 - sha256: cab38ce5d67d9089342f001b9abf874d7065e5f45aac82aa02b6c01e7b61a248 - commit: e113fa4de8fcc3665c3c562a05a07f7a1d63b3cc + sha256: 3e8093b581c621df7ecbf2f6f79686afdea8bfeb56f0e546fff1e9d86de3bf80 + commit: a0f39b1c517df21ad284ff91ecb062cbe41a4ad1 original: git: https://gitlab.com/axeman/redis-io.git - commit: e113fa4de8fcc3665c3c562a05a07f7a1d63b3cc + commit: a0f39b1c517df21ad284ff91ecb062cbe41a4ad1 - completed: name: HaskellNet-SSL version: 0.3.4.2 From d27366ded5d34abb7e0e01d0e020beffb5a9fdda Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Wed, 23 Sep 2020 17:39:09 +0200 Subject: [PATCH 23/28] Regenerate bonanza.cabal --- tools/bonanza/bonanza.cabal | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/bonanza/bonanza.cabal b/tools/bonanza/bonanza.cabal index 962395345ff..f893c97fb18 100644 --- a/tools/bonanza/bonanza.cabal +++ b/tools/bonanza/bonanza.cabal @@ -4,7 +4,7 @@ cabal-version: 1.12 -- -- see: https://github.com/sol/hpack -- --- hash: b4f9b357aa7c80ad5e4c9ba4704951aee705113487921a21c5722b3eb71e678b +-- hash: c393e7ad1fa91da04b5c2445faaa5c3b0a72153a9529d757776e97fc0c48d70b name: bonanza version: 3.6.0 @@ -155,7 +155,7 @@ test-suite bonanza-tests hs-source-dirs: test/unit default-extensions: AllowAmbiguousTypes BangPatterns ConstraintKinds DataKinds DefaultSignatures DerivingStrategies DeriveFunctor DeriveGeneric DeriveLift DeriveTraversable EmptyCase FlexibleContexts FlexibleInstances FunctionalDependencies GADTs InstanceSigs KindSignatures LambdaCase MultiParamTypeClasses MultiWayIf NamedFieldPuns NoImplicitPrelude OverloadedStrings PackageImports PatternSynonyms PolyKinds QuasiQuotes RankNTypes ScopedTypeVariables StandaloneDeriving TemplateHaskell TupleSections TypeApplications TypeFamilies TypeFamilyDependencies TypeOperators UndecidableInstances ViewPatterns - ghc-options: -O2 -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates -Wpartial-fields -fwarn-tabs -optP-Wno-nonportable-include-path -threaded -with-rtsopts=-N -ddump-simpl-stats + ghc-options: -O2 -Wall -Wincomplete-uni-patterns -Wincomplete-record-updates -Wpartial-fields -fwarn-tabs -optP-Wno-nonportable-include-path -threaded -with-rtsopts=-N build-depends: QuickCheck , aeson From fa1443d4c12d93715327efbaf04cd9aa78e3191c Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Thu, 24 Sep 2020 17:05:41 +0200 Subject: [PATCH 24/28] Use saml2-web-sso from the master branch --- stack.yaml | 2 +- stack.yaml.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/stack.yaml b/stack.yaml index 8f4765c5db6..86de4a664f0 100644 --- a/stack.yaml +++ b/stack.yaml @@ -64,7 +64,7 @@ extra-deps: # a version > 1.0.0 of wai-middleware-prometheus is available # (required: https://github.com/fimad/prometheus-haskell/pull/45) - git: https://github.com/wireapp/saml2-web-sso - commit: be04baaffb92ff64d8e1d9f400ec45849d754faf # akshaymankar/ghc-8.8 (Aug 21, 2020) + commit: 43c74bd44698e062abaa090c56de5272e66cee27 # master (Sep 24, 2020) - git: https://github.com/kim/hs-collectd commit: 885da222be2375f78c7be36127620ed772b677c9 diff --git a/stack.yaml.lock b/stack.yaml.lock index 5ea018b1f4e..fd5e362c1f1 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -24,10 +24,10 @@ packages: pantry-tree: size: 4657 sha256: c1c5ff18a9c8996aa33dd571662033928cda4ae4ebcda98b6777f8ebd0cc7102 - commit: be04baaffb92ff64d8e1d9f400ec45849d754faf + commit: 43c74bd44698e062abaa090c56de5272e66cee27 original: git: https://github.com/wireapp/saml2-web-sso - commit: be04baaffb92ff64d8e1d9f400ec45849d754faf + commit: 43c74bd44698e062abaa090c56de5272e66cee27 - completed: name: collectd version: 0.0.0.2 From 63369196a0b7435d97feb36212901c46028d865b Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Thu, 24 Sep 2020 17:21:08 +0200 Subject: [PATCH 25/28] Tidy up stack.yaml --- stack.yaml | 50 +++++++++++----------- stack.yaml.lock | 111 +++++++++++++++++++++++------------------------- 2 files changed, 76 insertions(+), 85 deletions(-) diff --git a/stack.yaml b/stack.yaml index 86de4a664f0..7b8989bed0e 100644 --- a/stack.yaml +++ b/stack.yaml @@ -142,8 +142,6 @@ extra-deps: - stm-containers-1.1.0.4 # Latest: lts-15.16 - redis-resp-1.0.0 - stm-hamt-1.2.0.4 # Latest: lts-15.16 -# - hedgehog-quickcheck-0.1.1 -# - optics-th-0.2 - primitive-unlifted-0.1.2.0 # Latest: lts-15.16 # Not on stackage @@ -159,6 +157,7 @@ extra-deps: - base58-bytestring-0.1.0 - stompl-0.5.0 - pattern-trie-0.1.0 +- markov-chain-usage-model-0.0.0 # Not latest as latst one breaks wai-routing - wai-route-0.4.0 @@ -167,36 +166,35 @@ extra-deps: - QuickCheck-2.14 - splitmix-0.0.4 # needed for QuickCheck -# Newer than the one one stackage -- polysemy-1.3.0.0 +- HsOpenSSL-x509-system-0.1.0.3@sha256:f4958ee0eec555c5c213662eff6764bddefe5665e2afcfd32733ce3801a9b687,1774 # Latest: lts-14.27 +- cql-4.0.2@sha256:a0006a5ac13d6f86d5eff28c11be80928246309f217ea6d5f5c8a76a5d16b48b,3157 # Latest: lts-14.27 +- cql-io-1.1.1@sha256:897ef0811b227c8b1a269b29b9c1ebfb09c46f00d66834e2e8c6f19ea7f90f7d,4611 # Latest: lts-14.27 +- primitive-extras-0.8@sha256:fca0310150496867f5b9421fe1541ecda87fae17eae44885a29f9c52dd00c8ff,2963 # Latest: lts-15.16 +- text-format-0.3.2@sha256:2a3fc17cf87120fcfdbca62a0da59759755549285841cdc1483081c35fb3d115,1814 # Latest: lts-14.27 +- hex-0.2.0@sha256:197d2561d2e216c4ead035b4911dabc6e678ac6257cb71b64e324c822f6f9f5a,726 # Latest: lts-14.27 -############################################################ -# Development tools -############################################################ +# Not in the upstream snapshot and not using latest version on hackage due to +# breaking change +- quickcheck-state-machine-0.6.0 +- servant-multipart-0.11.5@sha256:1633f715b5b53d648a1da69839bdc5046599f4f7244944d4bbf852dba38d8f4b,2319 -- ormolu-0.1.2.0 -- ghc-lib-parser-8.10.1.20200412@sha256:b0517bb150a02957d7180f131f5b94abd2a7f58a7d1532a012e71618282339c2,8751 # for ormolu-0.1.2.0 +# Dependencies on upstream source -- headroom-0.2.1.0 +# Required for GHC 8.8, but not released to hackage yet +- git: https://github.com/dpwright/HaskellNet-SSL + commit: ca84ef29a93eaef7673fa58056cdd8dae1568d2d # master (Sep 14, 2020) -## For lts-16.7 -- HsOpenSSL-x509-system-0.1.0.3@sha256:f4958ee0eec555c5c213662eff6764bddefe5665e2afcfd32733ce3801a9b687,1774 -- cql-4.0.2@sha256:a0006a5ac13d6f86d5eff28c11be80928246309f217ea6d5f5c8a76a5d16b48b,3157 -- cql-io-1.1.1@sha256:897ef0811b227c8b1a269b29b9c1ebfb09c46f00d66834e2e8c6f19ea7f90f7d,4611 -- primitive-extras-0.8@sha256:fca0310150496867f5b9421fe1541ecda87fae17eae44885a29f9c52dd00c8ff,2963 -- servant-multipart-0.11.5 # Dropped from stackage, 0.11.6 has a breaking change -- text-format-0.3.2@sha256:2a3fc17cf87120fcfdbca62a0da59759755549285841cdc1483081c35fb3d115,1814 -# - wai-predicates-0.10.0@sha256:6b096fd8c4487e06e910911ed35447756aa217426c39db44a4bdc55e0131b9aa,2849 +# Forks with pending PRs - git: https://gitlab.com/axeman/wai-predicates.git commit: 999d195b27104b9b39174f5ce18f5214b018a177 # ghc-8.8 (Sep 14, 2020, PR: https://gitlab.com/twittner/wai-predicates/-/merge_requests/1) -- markov-chain-usage-model-0.0.0@sha256:1afa95faeb9213c4d960a669190078b41b89169462b8edd910472980671ba8c0,2112 - -- hex-0.2.0 - - git: https://gitlab.com/axeman/redis-io.git commit: a0f39b1c517df21ad284ff91ecb062cbe41a4ad1 # ghc-8.8 (Sep 21 , 2020, https://gitlab.com/twittner/redis-io/-/merge_requests/5) -- git: https://github.com/dpwright/HaskellNet-SSL - commit: ca84ef29a93eaef7673fa58056cdd8dae1568d2d # master (Sep 14, 2020) -# Not in the LTS, not using latest on hackage due to breaking change -- quickcheck-state-machine-0.6.0 +############################################################ +# Development tools +############################################################ + +- ormolu-0.1.2.0 +- ghc-lib-parser-8.10.1.20200412@sha256:b0517bb150a02957d7180f131f5b94abd2a7f58a7d1532a012e71618282339c2,8751 # for ormolu-0.1.2.0 + +- headroom-0.2.1.0 diff --git a/stack.yaml.lock b/stack.yaml.lock index fd5e362c1f1..c85507bf2fc 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -431,6 +431,13 @@ packages: sha256: 9cf57bcb24b5da4d9ab314750810dce6c28ae082348e0afd60bdb12afdeeca6f original: hackage: pattern-trie-0.1.0 +- completed: + hackage: markov-chain-usage-model-0.0.0@sha256:1afa95faeb9213c4d960a669190078b41b89169462b8edd910472980671ba8c0,2112 + pantry-tree: + size: 432 + sha256: 6871bd9281acf589296d0998a3d62892b036040ab10e74e8a0f356f68c194f4f + original: + hackage: markov-chain-usage-model-0.0.0 - completed: hackage: wai-route-0.4.0@sha256:ee52f13d2945e4a56147e91e515e184f840654f2e3d9071c73bec3d8aa1f4444,2119 pantry-tree: @@ -452,34 +459,6 @@ packages: sha256: e58892088b95190bfb59a7c0803f7ef65338e57fc9b938d7c166563605003902 original: hackage: splitmix-0.0.4 -- completed: - hackage: polysemy-1.3.0.0@sha256:fa76e96a883fd1c4bdbad792a0a9d88f59f84817651aea5c71d9b4f74e42c5b6,6141 - pantry-tree: - size: 4309 - sha256: 3d2fb15ddda9053f6bfd4b0810a79a9542505acb5e7e528856ec3cd86d6df066 - original: - hackage: polysemy-1.3.0.0 -- completed: - hackage: ormolu-0.1.2.0@sha256:24e6512750576978b6f045c1e53a7aad28ab61960f738a3c74fb0bc2beaf4030,6237 - pantry-tree: - size: 71915 - sha256: 5a857d9bf0e9579ee4daacfb63b4665cdf9e0a0de31d8e0715a27836007e9c42 - original: - hackage: ormolu-0.1.2.0 -- completed: - hackage: ghc-lib-parser-8.10.1.20200412@sha256:b0517bb150a02957d7180f131f5b94abd2a7f58a7d1532a012e71618282339c2,8751 - pantry-tree: - size: 19497 - sha256: b11275740480138dd1fce4a22a2aa8835cddfecaa8da58a153f130b4575f9df5 - original: - hackage: ghc-lib-parser-8.10.1.20200412@sha256:b0517bb150a02957d7180f131f5b94abd2a7f58a7d1532a012e71618282339c2,8751 -- completed: - hackage: headroom-0.2.1.0@sha256:084b72a071454516bff30c3f50e4f671fb12ee062602693ad5ffcafdea5fab99,8140 - pantry-tree: - size: 9195 - sha256: 11d2ac77cee54cc1f222e574e4126189fe5b60a47a1aedbafc2ab0de709b29c6 - original: - hackage: headroom-0.2.1.0 - completed: hackage: HsOpenSSL-x509-system-0.1.0.3@sha256:f4958ee0eec555c5c213662eff6764bddefe5665e2afcfd32733ce3801a9b687,1774 pantry-tree: @@ -508,20 +487,45 @@ packages: sha256: e7c1d26202b80d1fca2ef780ec7fe76ede1275f4d9a996c6d44c08d8de1c45db original: hackage: primitive-extras-0.8@sha256:fca0310150496867f5b9421fe1541ecda87fae17eae44885a29f9c52dd00c8ff,2963 +- completed: + hackage: text-format-0.3.2@sha256:2a3fc17cf87120fcfdbca62a0da59759755549285841cdc1483081c35fb3d115,1814 + pantry-tree: + size: 1029 + sha256: 2db26ddb77184186e0d5b2b020bdfbeb044c168024767b1fa3691682ca618896 + original: + hackage: text-format-0.3.2@sha256:2a3fc17cf87120fcfdbca62a0da59759755549285841cdc1483081c35fb3d115,1814 +- completed: + hackage: hex-0.2.0@sha256:197d2561d2e216c4ead035b4911dabc6e678ac6257cb71b64e324c822f6f9f5a,726 + pantry-tree: + size: 197 + sha256: 1e5aba0165fb8ffa93d1516a87026a59c245750ca5f2ed42bd53b8328620f98e + original: + hackage: hex-0.2.0@sha256:197d2561d2e216c4ead035b4911dabc6e678ac6257cb71b64e324c822f6f9f5a,726 +- completed: + hackage: quickcheck-state-machine-0.6.0@sha256:3e4f8df0f6b5d415e3c8840dc75034a63e37f56f5f8cfa1035ded16345235ac4,3825 + pantry-tree: + size: 1926 + sha256: ae502fd7f4c6680294149bed482d1896904c1259d5ae614093da01e0731ec92e + original: + hackage: quickcheck-state-machine-0.6.0 - completed: hackage: servant-multipart-0.11.5@sha256:1633f715b5b53d648a1da69839bdc5046599f4f7244944d4bbf852dba38d8f4b,2319 pantry-tree: size: 333 sha256: b3e1fd2ad2e654475be000c2f0ac6f717b5499436fa73eec50ceccddf352dcec original: - hackage: servant-multipart-0.11.5 + hackage: servant-multipart-0.11.5@sha256:1633f715b5b53d648a1da69839bdc5046599f4f7244944d4bbf852dba38d8f4b,2319 - completed: - hackage: text-format-0.3.2@sha256:2a3fc17cf87120fcfdbca62a0da59759755549285841cdc1483081c35fb3d115,1814 + name: HaskellNet-SSL + version: 0.3.4.2 + git: https://github.com/dpwright/HaskellNet-SSL pantry-tree: - size: 1029 - sha256: 2db26ddb77184186e0d5b2b020bdfbeb044c168024767b1fa3691682ca618896 + size: 786 + sha256: c6a64c9e64bc834842756be28eaac2d842f0dde3753542bfa0cfd87ae5cf0bc5 + commit: ca84ef29a93eaef7673fa58056cdd8dae1568d2d original: - hackage: text-format-0.3.2@sha256:2a3fc17cf87120fcfdbca62a0da59759755549285841cdc1483081c35fb3d115,1814 + git: https://github.com/dpwright/HaskellNet-SSL + commit: ca84ef29a93eaef7673fa58056cdd8dae1568d2d - completed: name: wai-predicates version: 0.10.0 @@ -533,20 +537,6 @@ packages: original: git: https://gitlab.com/axeman/wai-predicates.git commit: 999d195b27104b9b39174f5ce18f5214b018a177 -- completed: - hackage: markov-chain-usage-model-0.0.0@sha256:1afa95faeb9213c4d960a669190078b41b89169462b8edd910472980671ba8c0,2112 - pantry-tree: - size: 432 - sha256: 6871bd9281acf589296d0998a3d62892b036040ab10e74e8a0f356f68c194f4f - original: - hackage: markov-chain-usage-model-0.0.0@sha256:1afa95faeb9213c4d960a669190078b41b89169462b8edd910472980671ba8c0,2112 -- completed: - hackage: hex-0.2.0@sha256:197d2561d2e216c4ead035b4911dabc6e678ac6257cb71b64e324c822f6f9f5a,726 - pantry-tree: - size: 197 - sha256: 1e5aba0165fb8ffa93d1516a87026a59c245750ca5f2ed42bd53b8328620f98e - original: - hackage: hex-0.2.0 - completed: name: redis-io version: 1.0.0 @@ -559,23 +549,26 @@ packages: git: https://gitlab.com/axeman/redis-io.git commit: a0f39b1c517df21ad284ff91ecb062cbe41a4ad1 - completed: - name: HaskellNet-SSL - version: 0.3.4.2 - git: https://github.com/dpwright/HaskellNet-SSL + hackage: ormolu-0.1.2.0@sha256:24e6512750576978b6f045c1e53a7aad28ab61960f738a3c74fb0bc2beaf4030,6237 pantry-tree: - size: 786 - sha256: c6a64c9e64bc834842756be28eaac2d842f0dde3753542bfa0cfd87ae5cf0bc5 - commit: ca84ef29a93eaef7673fa58056cdd8dae1568d2d + size: 71915 + sha256: 5a857d9bf0e9579ee4daacfb63b4665cdf9e0a0de31d8e0715a27836007e9c42 original: - git: https://github.com/dpwright/HaskellNet-SSL - commit: ca84ef29a93eaef7673fa58056cdd8dae1568d2d + hackage: ormolu-0.1.2.0 - completed: - hackage: quickcheck-state-machine-0.6.0@sha256:3e4f8df0f6b5d415e3c8840dc75034a63e37f56f5f8cfa1035ded16345235ac4,3825 + hackage: ghc-lib-parser-8.10.1.20200412@sha256:b0517bb150a02957d7180f131f5b94abd2a7f58a7d1532a012e71618282339c2,8751 pantry-tree: - size: 1926 - sha256: ae502fd7f4c6680294149bed482d1896904c1259d5ae614093da01e0731ec92e + size: 19497 + sha256: b11275740480138dd1fce4a22a2aa8835cddfecaa8da58a153f130b4575f9df5 original: - hackage: quickcheck-state-machine-0.6.0 + hackage: ghc-lib-parser-8.10.1.20200412@sha256:b0517bb150a02957d7180f131f5b94abd2a7f58a7d1532a012e71618282339c2,8751 +- completed: + hackage: headroom-0.2.1.0@sha256:084b72a071454516bff30c3f50e4f671fb12ee062602693ad5ffcafdea5fab99,8140 + pantry-tree: + size: 9195 + sha256: 11d2ac77cee54cc1f222e574e4126189fe5b60a47a1aedbafc2ab0de709b29c6 + original: + hackage: headroom-0.2.1.0 snapshots: - completed: size: 532382 From f18180f43ee30509625a96721561f0e14c45169c Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Thu, 24 Sep 2020 17:23:18 +0200 Subject: [PATCH 26/28] No need for 'allow-newer' anymore :fire: --- stack.yaml | 7 ------- tools/bonanza/bonanza.cabal | 4 ++-- tools/bonanza/package.yaml | 2 +- 3 files changed, 3 insertions(+), 10 deletions(-) diff --git a/stack.yaml b/stack.yaml index 7b8989bed0e..59360eb3b09 100644 --- a/stack.yaml +++ b/stack.yaml @@ -47,13 +47,6 @@ packages: nix: shell-file: stack-deps.nix - -# HaskellNet, HaskellNet-SSL, bloodhound, multihash and stm-hamt have bounds -# issues. We didn't catch those before because in snapshot files, allow-newer: -# true seems to be the default. We should fix these bound issues (we have a -# fork of multihash for this reason already) but for now we just ignore the bounds -allow-newer: true - extra-deps: # - swagger2-2.4 - git: https://github.com/fimad/prometheus-haskell diff --git a/tools/bonanza/bonanza.cabal b/tools/bonanza/bonanza.cabal index f893c97fb18..d504e7f8743 100644 --- a/tools/bonanza/bonanza.cabal +++ b/tools/bonanza/bonanza.cabal @@ -4,7 +4,7 @@ cabal-version: 1.12 -- -- see: https://github.com/sol/hpack -- --- hash: c393e7ad1fa91da04b5c2445faaa5c3b0a72153a9529d757776e97fc0c48d70b +-- hash: c65bea2c25598cbdee588334b4a36a838abbe0612536a104ef9be32b01c3078b name: bonanza version: 3.6.0 @@ -79,7 +79,7 @@ library , snappy , snappy-framing , text - , time >=1.5 && <1.9 + , time >=1.5 , types-common >=0.14.1 , unordered-containers , vector diff --git a/tools/bonanza/package.yaml b/tools/bonanza/package.yaml index 1abedb2ddfb..82d5320f845 100644 --- a/tools/bonanza/package.yaml +++ b/tools/bonanza/package.yaml @@ -46,7 +46,7 @@ library: - scientific - snappy - snappy-framing - - time >=1.5 && <1.9 + - time >=1.5 - types-common >=0.14.1 - unordered-containers - vector From afa92f949a6bbf39dbb7ffde412ea6cc68d5e770 Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Fri, 25 Sep 2020 09:21:35 +0200 Subject: [PATCH 27/28] Add allow-newer back, stack fooled me :broken_heart: --- stack.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/stack.yaml b/stack.yaml index 59360eb3b09..7b8989bed0e 100644 --- a/stack.yaml +++ b/stack.yaml @@ -47,6 +47,13 @@ packages: nix: shell-file: stack-deps.nix + +# HaskellNet, HaskellNet-SSL, bloodhound, multihash and stm-hamt have bounds +# issues. We didn't catch those before because in snapshot files, allow-newer: +# true seems to be the default. We should fix these bound issues (we have a +# fork of multihash for this reason already) but for now we just ignore the bounds +allow-newer: true + extra-deps: # - swagger2-2.4 - git: https://github.com/fimad/prometheus-haskell From b733f62465fe6865c8defaee3d627069db755336 Mon Sep 17 00:00:00 2001 From: Akshay Mankar Date: Mon, 28 Sep 2020 13:39:28 +0200 Subject: [PATCH 28/28] stack.yaml: Remove stale comments --- stack.yaml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/stack.yaml b/stack.yaml index 7b8989bed0e..1281ef0a8a4 100644 --- a/stack.yaml +++ b/stack.yaml @@ -55,7 +55,6 @@ nix: allow-newer: true extra-deps: -# - swagger2-2.4 - git: https://github.com/fimad/prometheus-haskell commit: 2e3282e5fb27ba8d989c271a0a989823fad7ec43 subdirs: @@ -75,10 +74,6 @@ extra-deps: - git: https://gitlab.com/twittner/wai-routing commit: 7e996a93fec5901767f845a50316b3c18e51a61d -# Includes the changes from -# - git: https://gitlab.com/twittner/cql-io.git -# commit: 8b91d053c469887a427e8c075cef43139fa189c4 - # Our fork of multihash with relaxed upper bounds - git: https://github.com/wireapp/haskell-multihash.git commit: 300a6f46384bfca33e545c8bab52ef3717452d12