From 8a613c5ec0e3017f0e80a09d40aac09374ea98e7 Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Mon, 30 Sep 2024 18:27:28 +0200 Subject: [PATCH 01/18] dependabot: remove misnamed script We still have `.github/dependabot.yml`. --- .github/dependabut.yml | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 .github/dependabut.yml diff --git a/.github/dependabut.yml b/.github/dependabut.yml deleted file mode 100644 index 23c1e85e95b..00000000000 --- a/.github/dependabut.yml +++ /dev/null @@ -1,11 +0,0 @@ -# Set update schedule for GitHub Actions - -version: 2 -updates: - - - package-ecosystem: "github-actions" - directory: "/" - schedule: - # Check for updates to GitHub Actions every weekday - interval: "daily" - From 7d82887e7d1d44188f7fe14546919a3c61abbc66 Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Fri, 27 Sep 2024 21:01:37 +0200 Subject: [PATCH 02/18] nix: refactored how shell & tools are provided --- flake.nix | 45 ++++++++++++--------- nix/network-docs.nix | 84 ++++++++++++++++++--------------------- nix/ouroboros-network.nix | 29 +++----------- nix/shell.nix | 42 ++++++++++++++++++++ nix/tools.nix | 21 ++++++++++ 5 files changed, 134 insertions(+), 87 deletions(-) create mode 100644 nix/shell.nix create mode 100644 nix/tools.nix diff --git a/flake.nix b/flake.nix index bf1d7c183fe..f0fd86795c7 100644 --- a/flake.nix +++ b/flake.nix @@ -45,14 +45,35 @@ overlays = [ # haskellNix.overlay can be configured by later overlays, so need to come before them. inputs.haskellNix.overlay + (import ./nix/tools.nix inputs) (import ./nix/ouroboros-network.nix inputs) + (import ./nix/network-docs.nix inputs) ]; }; - inherit (pkgs) lib; flake = pkgs.ouroboros-network.flake {}; - network-docs = pkgs.callPackage ./nix/network-docs.nix { }; check-stylish = pkgs.callPackage ./nix/check-stylish.nix { }; + inherit (pkgs) lib network-docs; + + # shells accessible through `nix develop`, + # `nix develop .\#devShells.x86_64-linux.ghc810`, etc. + devShells = rec { + default = import ./nix/shell.nix { hls = true; + inherit inputs pkgs; + ouroboros-network = pkgs.ouroboros-network; }; + profiled = import ./nix/shell.nix { hls = true; + inherit inputs pkgs; + ouroboros-network = pkgs.ouroboros-network.projectVariants.profiled; }; + ghc810 = import ./nix/shell.nix { hls = false; # hls-2.7.0.0 cannot be compiled for `ghc-8.10` + inherit inputs pkgs; + ouroboros-network = pkgs.ouroboros-network.projectVariants.ghc810; }; + ghc810-profiled + = import ./nix/shell.nix { hls = false; + inherit inputs pkgs; + ouroboros-network = pkgs.ouroboros-network.projectVariants.ghc810-profiled; }; + }; + + # jobs executed on hydra hydraJobs = pkgs.callPackages inputs.iohkNix.utils.ciJobsAggregates { @@ -62,34 +83,22 @@ # This ensure hydra send a status for the required job (even if no change other than commit hash) revision = pkgs.writeText "revision" (inputs.self.rev or "dirty"); inherit network-docs check-stylish; + devShell = devShells.default; }; } # add network-docs & check-stylish to support # `nix build .\#hydraJobs.x86_64-linux.network-docs` and # `nix build .\#hydraJobs.x86_64-linux.check-stylis`. // { inherit network-docs check-stylish; }; - # also provide hydraJobs through legacyPackages to allow building without system prefix, e.g. + + # Provide hydraJobs through legacyPackages to allow building without system prefix, e.g. # `nix build .\#network-mux:lib:network-mux` # `nix build .\#network-docs` legacyPackages = { inherit hydraJobs network-docs check-stylish; }; in lib.recursiveUpdate flake rec { project = pkgs.ouroboros-network; - inherit hydraJobs; - inherit legacyPackages; - devShells = let - profillingShell = p: { - # `nix develop .#profiling` - profiling = (p.appendModule {modules = [{enableLibraryProfiling = true;}];}).shell; - }; - in - profillingShell pkgs.ouroboros-network - # Additional shells for every GHC version supported by haskell.nix, eg. `nix develop .#ghc927` - // lib.mapAttrs (compiler-nix-name: _: let - p = pkgs.ouroboros-network.appendModule {inherit compiler-nix-name;}; - in - p.shell // (profillingShell p)) - pkgs.haskell-nix.compiler; + inherit hydraJobs legacyPackages devShells; # formatter used by nix fmt formatter = pkgs.alejandra; } diff --git a/nix/network-docs.nix b/nix/network-docs.nix index f62545cfba4..8f8ce42a006 100644 --- a/nix/network-docs.nix +++ b/nix/network-docs.nix @@ -1,53 +1,47 @@ -{ pkgs }: -with pkgs; -let - src = haskell-nix.haskellLib.cleanGit { +inputs: final: prev: { + network-docs = final.stdenvNoCC.mkDerivation { name = "network-docs"; src = ../.; - subDir = "docs"; - }; - cddl-specs = ../ouroboros-network-protocols/test-cddl/specs; -in pkgs.runCommand "network-docs" { - meta.platforms = with pkgs.lib.platforms; [ linux darwin ]; - nativeBuildInputs = [ imagemagick ]; - buildInputs = [ - (texlive.combine { - inherit (texlive) - cleveref framed scheme-small collection-fontsrecommended stmaryrd - kpfonts geometry hyperref todonotes amsmath mathtools colortbl polytable - lazylist fancyvrb - #graphicx - pstricks wrapfig - # build tools - latexmk; - }) - ]; -} '' - for d in network-design network-spec; do - mkdir -p docs/$d - ln -s ${src}/$d/* docs/$d/ - done + nativeBuildInputs = [ + (final.texlive.combine { + inherit (final.texlive) + collection-latexextra + collection-latexrecommended + collection-mathscience + latexmk; + }) + ]; + buildPhase = + let src = ../.; + cddl-specs = ../ouroboros-network-protocols/test-cddl/specs; in + '' + for d in network-design network-spec; do + mkdir -p docs/$d + ln -s ${src}/$d/* docs/$d/ + done - mkdir -p ouroboros-network-protocols/test-cddl/specs - cp ${cddl-specs}/*.cddl ouroboros-network-protocols/test-cddl/specs + mkdir -p ouroboros-network-protocols/test-cddl/specs + cp ${cddl-specs}/*.cddl ouroboros-network-protocols/test-cddl/specs - mkdir -p $out + mkdir -p $out - ( - cd docs/network-design - latexmk -pdf -pdflatex="pdflatex -interaction=nonstopmode" - cp -a *.pdf $out/ - ) + ( + cd docs/network-design + latexmk -pdf -pdflatex="pdflatex -interaction=nonstopmode" + cp -a *.pdf $out/ + ) - ( - cd docs/network-spec - make all - cp -a *.pdf $out/ - ) + ( + cd docs/network-spec + make all + cp -a *.pdf $out/ + ) - mkdir -p $out/nix-support + mkdir -p $out/nix-support - for pdf in $out/*.pdf; do - echo "file binary-dist $pdf" >> $out/nix-support/hydra-build-products - done -'' + for pdf in $out/*.pdf; do + echo "file binary-dist $pdf" >> $out/nix-support/hydra-build-products + done + ''; + }; +} diff --git a/nix/ouroboros-network.nix b/nix/ouroboros-network.nix index da85009ebb2..848ace0ed0d 100644 --- a/nix/ouroboros-network.nix +++ b/nix/ouroboros-network.nix @@ -54,8 +54,11 @@ let # -------- # using different compilers - flake.variants = (lib.genAttrs otherCompilers - (compiler-nix-name: { inherit compiler-nix-name; })); + flake.variants = + # otherCompilers + (lib.genAttrs otherCompilers + (compiler-nix-name: { inherit compiler-nix-name; })); + # # CHaP # ---- @@ -69,28 +72,6 @@ let "https://chap.intersectmbo.org/" = inputs.CHaP; }; - # - # SHELL - # ----- - - # tools we want in our shell, from hackage - shell.tools = - { - cabal = "3.12.1.0"; - ghcid = "0.8.9"; - } - // lib.optionalAttrs (config.compiler-nix-name == defaultCompiler) { - # tools that work only with default compiler - stylish-haskell = "0.14.6.0"; - haskell-language-server = "2.7.0.0"; - }; - # and from nixpkgs or other inputs - shell.nativeBuildInputs = []; - # disable Hoogle until someone request it - shell.withHoogle = false; - # Skip cross compilers for the shell - shell.crossPlatforms = _: []; - # # MODULES # ------- diff --git a/nix/shell.nix b/nix/shell.nix new file mode 100644 index 00000000000..1867fc742c8 --- /dev/null +++ b/nix/shell.nix @@ -0,0 +1,42 @@ +{ hls, inputs, pkgs, ouroboros-network }: + +let + inherit (pkgs) lib; +in +ouroboros-network.shellFor { + nativeBuildInputs = [ + pkgs.cabal + pkgs.fd + pkgs.nixpkgs-fmt + pkgs.stylish-haskell + pkgs.ghcid + (pkgs.texlive.combine { + inherit (pkgs.texlive) + collection-latexextra + collection-latexrecommended + collection-mathscience + latexmk; + }) + ]; + + # This is the place for tools that are required to be built with the same GHC + # version as used in ouroboros-network. + tools = + lib.optionalAttrs hls + { + haskell-language-server = { + src = inputs.haskellNix.inputs."hls-2.7"; + configureArgs = "--disable-benchmarks --disable-tests"; + }; + }; + + shellHook = '' + export LANG="en_US.UTF-8" + '' + lib.optionalString + (pkgs.glibcLocales != null && pkgs.stdenv.hostPlatform.libc == "glibc") '' + export LOCALE_ARCHIVE="${pkgs.glibcLocales}/lib/locale/locale-archive" + ''; + + withHoogle = true; +} + diff --git a/nix/tools.nix b/nix/tools.nix new file mode 100644 index 00000000000..a7e32cbc47c --- /dev/null +++ b/nix/tools.nix @@ -0,0 +1,21 @@ +inputs: final: prev: + +let + inherit (final) lib; + tool-index-state = "2024-07-04T00:00:00Z"; + tool = name: version: other: + final.haskell-nix.tool final.ouroboros-network.args.compiler-nix-name name ({ + version = version; + index-state = tool-index-state; + } // other); +in +{ + inherit tool-index-state; + cabal = tool "cabal" "3.12.1.0" { }; + stylish-haskell = tool "stylish-haskell" "0.14.6.0" { }; + haskellBuildUtils = prev.haskellBuildUtils.override { + inherit (final.ouroboros-network.args) compiler-nix-name; + index-state = tool-index-state; + }; +} + From 1c745fa7bb52d580ef1996151fc0ed3ee6209de9 Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Sat, 28 Sep 2024 15:58:57 +0200 Subject: [PATCH 03/18] ouroboros-network-framework: removed unused extensions --- .../io-tests/Test/Ouroboros/Network/Server2/IO.hs | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/ouroboros-network-framework/io-tests/Test/Ouroboros/Network/Server2/IO.hs b/ouroboros-network-framework/io-tests/Test/Ouroboros/Network/Server2/IO.hs index 95cb49f920c..08fd46db8ae 100644 --- a/ouroboros-network-framework/io-tests/Test/Ouroboros/Network/Server2/IO.hs +++ b/ouroboros-network-framework/io-tests/Test/Ouroboros/Network/Server2/IO.hs @@ -1,18 +1,11 @@ {-# LANGUAGE CPP #-} {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveFunctor #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GADTs #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE RankNTypes #-} -{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE ScopedTypeVariables #-} -{-# LANGUAGE TupleSections #-} -{-# LANGUAGE TypeApplications #-} -{-# LANGUAGE TypeOperators #-} #if __GLASGOW_HASKELL__ >= 908 {-# OPTIONS_GHC -Wno-x-partial #-} @@ -42,8 +35,8 @@ tests :: TestTree tests = testGroup "Ouroboros.Network" [ testGroup "Server2" - [ testProperty "unidirectional IO" prop_unidirectional_IO - , testProperty "bidirectional IO" prop_bidirectional_IO + [ testProperty "unidirectional IO" prop_unidirectional_IO + , testProperty "bidirectional IO" prop_bidirectional_IO ] ] @@ -72,7 +65,7 @@ prop_unidirectional_IO (Fixed rnd) clientAndServerData = ioTimeouts (socketSnocket iomgr) Mux.makeSocketBearer - (flip configureSocket Nothing) + (`configureSocket` Nothing) socket clientAndServerData @@ -116,7 +109,7 @@ prop_bidirectional_IO (Fixed rnd) data0 data1 = ioTimeouts (socketSnocket iomgr) Mux.makeSocketBearer - (flip configureSocket Nothing) + (`configureSocket` Nothing) socket0 socket1 addr0' From 867a86f4b6fa91e9847ab59d8243ee5d820b4909 Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Sat, 28 Sep 2024 21:40:41 +0200 Subject: [PATCH 04/18] nix: stylish-haskell formatting --- flake.nix | 12 +++++--- nix/formatting.nix | 30 +++++++++++++++++++ ...heck-stylish.sh => run-stylish-haskell.sh} | 0 3 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 nix/formatting.nix rename scripts/ci/{check-stylish.sh => run-stylish-haskell.sh} (100%) diff --git a/flake.nix b/flake.nix index f0fd86795c7..780ea030ee0 100644 --- a/flake.nix +++ b/flake.nix @@ -52,7 +52,7 @@ }; flake = pkgs.ouroboros-network.flake {}; - check-stylish = pkgs.callPackage ./nix/check-stylish.nix { }; + format = pkgs.callPackage ./nix/formatting.nix pkgs; inherit (pkgs) lib network-docs; # shells accessible through `nix develop`, @@ -82,19 +82,23 @@ // { # This ensure hydra send a status for the required job (even if no change other than commit hash) revision = pkgs.writeText "revision" (inputs.self.rev or "dirty"); - inherit network-docs check-stylish; + inherit network-docs; devShell = devShells.default; + inherit format network-docs; }; } # add network-docs & check-stylish to support # `nix build .\#hydraJobs.x86_64-linux.network-docs` and # `nix build .\#hydraJobs.x86_64-linux.check-stylis`. - // { inherit network-docs check-stylish; }; + // { inherit network-docs; + # check formatting but only on a `x86_64-linux` system + format = lib.optionalAttrs (pkgs.buildPlatform.system == "x86_64-linux") format; + }; # Provide hydraJobs through legacyPackages to allow building without system prefix, e.g. # `nix build .\#network-mux:lib:network-mux` # `nix build .\#network-docs` - legacyPackages = { inherit hydraJobs network-docs check-stylish; }; + legacyPackages = { inherit hydraJobs network-docs format; }; in lib.recursiveUpdate flake rec { project = pkgs.ouroboros-network; diff --git a/nix/formatting.nix b/nix/formatting.nix new file mode 100644 index 00000000000..7324c10310b --- /dev/null +++ b/nix/formatting.nix @@ -0,0 +1,30 @@ +pkgs: + +let + inherit (pkgs) lib; + checkFormatting = tool: script: opts: pkgs.runCommand + "check-${lib.getName tool}" + { + buildInputs = [ pkgs.fd pkgs.which tool ]; + src = ../.; + } '' + unpackPhase + cd $sourceRoot + + bash ${script} ${opts} + + EXIT_CODE=0 + diff -ru $src . || EXIT_CODE=$? + + if [[ $EXIT_CODE != 0 ]] + then + echo "*** ${tool.name} found changes that need addressed first" + exit $EXIT_CODE + else + echo $EXIT_CODE >> $out + fi + ''; +in +{ + stylish-haskell = checkFormatting pkgs.stylish-haskell ../scripts/ci/run-stylish-haskell.sh "-g"; +} diff --git a/scripts/ci/check-stylish.sh b/scripts/ci/run-stylish-haskell.sh similarity index 100% rename from scripts/ci/check-stylish.sh rename to scripts/ci/run-stylish-haskell.sh From 218cb0912f233760c60beca8a85e3b9b50023c2f Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Sat, 28 Sep 2024 22:00:17 +0200 Subject: [PATCH 05/18] nix: format nix files with nixpkgs-fmt --- nix/formatting.nix | 1 + scripts/ci/{check-nixfmt.sh => run-nixpkgs-fmt.sh} | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) rename scripts/ci/{check-nixfmt.sh => run-nixpkgs-fmt.sh} (61%) diff --git a/nix/formatting.nix b/nix/formatting.nix index 7324c10310b..6a076152d82 100644 --- a/nix/formatting.nix +++ b/nix/formatting.nix @@ -27,4 +27,5 @@ let in { stylish-haskell = checkFormatting pkgs.stylish-haskell ../scripts/ci/run-stylish-haskell.sh "-g"; + nixpkgs-fmt = checkFormatting pkgs.nixpkgs-fmt ../scripts/ci/run-nixpkgs-fmt.sh ""; } diff --git a/scripts/ci/check-nixfmt.sh b/scripts/ci/run-nixpkgs-fmt.sh similarity index 61% rename from scripts/ci/check-nixfmt.sh rename to scripts/ci/run-nixpkgs-fmt.sh index 514eaaa5415..a4cf8f3ea82 100755 --- a/scripts/ci/check-nixfmt.sh +++ b/scripts/ci/run-nixpkgs-fmt.sh @@ -2,4 +2,4 @@ set -euo pipefail -fd -e nix -X nixfmt +fd -e nix -X nixpkgs-fmt From 750ac2376184131e226d2a097917d9665fc7f6dd Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Sat, 28 Sep 2024 22:00:57 +0200 Subject: [PATCH 06/18] formatted nix files with nixpkg-fmt --- flake.nix | 40 +++++++++++++----------------- nix/check-stylish.nix | 3 ++- nix/network-docs.nix | 52 ++++++++++++++++++++------------------- nix/ouroboros-network.nix | 45 ++++++++++++++++----------------- nix/shell.nix | 10 ++++---- 5 files changed, 74 insertions(+), 76 deletions(-) diff --git a/flake.nix b/flake.nix index 780ea030ee0..56b8d392ece 100644 --- a/flake.nix +++ b/flake.nix @@ -28,11 +28,11 @@ outputs = inputs: let # all platforms on which we build - supportedSystems = [ - "x86_64-linux" - "x86_64-darwin" - "aarch64-darwin" - ]; + supportedSystems = [ + "x86_64-linux" + "x86_64-darwin" + "aarch64-darwin" + ]; in inputs.flake-utils.lib.eachSystem supportedSystems ( system: @@ -51,26 +51,19 @@ ]; }; - flake = pkgs.ouroboros-network.flake {}; + buildSystem = pkgs.buildPlatform.system; + flake = pkgs.ouroboros-network.flake { }; format = pkgs.callPackage ./nix/formatting.nix pkgs; inherit (pkgs) lib network-docs; # shells accessible through `nix develop`, # `nix develop .\#devShells.x86_64-linux.ghc810`, etc. devShells = rec { - default = import ./nix/shell.nix { hls = true; - inherit inputs pkgs; - ouroboros-network = pkgs.ouroboros-network; }; - profiled = import ./nix/shell.nix { hls = true; - inherit inputs pkgs; - ouroboros-network = pkgs.ouroboros-network.projectVariants.profiled; }; - ghc810 = import ./nix/shell.nix { hls = false; # hls-2.7.0.0 cannot be compiled for `ghc-8.10` - inherit inputs pkgs; - ouroboros-network = pkgs.ouroboros-network.projectVariants.ghc810; }; - ghc810-profiled - = import ./nix/shell.nix { hls = false; - inherit inputs pkgs; - ouroboros-network = pkgs.ouroboros-network.projectVariants.ghc810-profiled; }; + default = import ./nix/shell.nix { + hls = true; + inherit inputs pkgs; + ouroboros-network = pkgs.ouroboros-network; + }; }; # jobs executed on hydra @@ -90,10 +83,11 @@ # add network-docs & check-stylish to support # `nix build .\#hydraJobs.x86_64-linux.network-docs` and # `nix build .\#hydraJobs.x86_64-linux.check-stylis`. - // { inherit network-docs; - # check formatting but only on a `x86_64-linux` system - format = lib.optionalAttrs (pkgs.buildPlatform.system == "x86_64-linux") format; - }; + // { + inherit network-docs; + # check formatting but only on a `x86_64-linux` system + format = lib.optionalAttrs (pkgs.buildPlatform.system == "x86_64-linux") format; + }; # Provide hydraJobs through legacyPackages to allow building without system prefix, e.g. # `nix build .\#network-mux:lib:network-mux` diff --git a/nix/check-stylish.nix b/nix/check-stylish.nix index 6d430f75bce..377a0d012fb 100644 --- a/nix/check-stylish.nix +++ b/nix/check-stylish.nix @@ -1,6 +1,7 @@ { runCommand, fd, lib, stylish-haskell, haskell-nix }: -runCommand "check-stylish" { +runCommand "check-stylish" +{ meta.platforms = with lib.platforms; [ linux ]; buildInputs = [ fd stylish-haskell ]; src = haskell-nix.haskellLib.cleanGit { diff --git a/nix/network-docs.nix b/nix/network-docs.nix index 8f8ce42a006..96d0dcc6d7a 100644 --- a/nix/network-docs.nix +++ b/nix/network-docs.nix @@ -12,36 +12,38 @@ inputs: final: prev: { }) ]; buildPhase = - let src = ../.; - cddl-specs = ../ouroboros-network-protocols/test-cddl/specs; in - '' - for d in network-design network-spec; do - mkdir -p docs/$d - ln -s ${src}/$d/* docs/$d/ - done + let + src = ../.; + cddl-specs = ../ouroboros-network-protocols/test-cddl/specs; + in + '' + for d in network-design network-spec; do + mkdir -p docs/$d + ln -s ${src}/$d/* docs/$d/ + done - mkdir -p ouroboros-network-protocols/test-cddl/specs - cp ${cddl-specs}/*.cddl ouroboros-network-protocols/test-cddl/specs + mkdir -p ouroboros-network-protocols/test-cddl/specs + cp ${cddl-specs}/*.cddl ouroboros-network-protocols/test-cddl/specs - mkdir -p $out + mkdir -p $out - ( - cd docs/network-design - latexmk -pdf -pdflatex="pdflatex -interaction=nonstopmode" - cp -a *.pdf $out/ - ) + ( + cd docs/network-design + latexmk -pdf -pdflatex="pdflatex -interaction=nonstopmode" + cp -a *.pdf $out/ + ) - ( - cd docs/network-spec - make all - cp -a *.pdf $out/ - ) + ( + cd docs/network-spec + make all + cp -a *.pdf $out/ + ) - mkdir -p $out/nix-support + mkdir -p $out/nix-support - for pdf in $out/*.pdf; do - echo "file binary-dist $pdf" >> $out/nix-support/hydra-build-products - done - ''; + for pdf in $out/*.pdf; do + echo "file binary-dist $pdf" >> $out/nix-support/hydra-build-products + done + ''; }; } diff --git a/nix/ouroboros-network.nix b/nix/ouroboros-network.nix index 848ace0ed0d..72af021971d 100644 --- a/nix/ouroboros-network.nix +++ b/nix/ouroboros-network.nix @@ -18,7 +18,7 @@ let crossGHCVersion = "ghc8107"; # alternative compilers - otherCompilers = ["ghc810"]; + otherCompilers = [ "ghc810" ]; # from https://github.com/input-output-hk/haskell.nix/issues/298#issuecomment-767936405 forAllProjectPackages = cfg: args@{ lib, ... }: { @@ -31,15 +31,16 @@ let # We use cabalProject' to ensure we don't build the plan for # all systems. - ouroboros-network = haskell-nix.cabalProject' ({config, pkgs, ...}: { + ouroboros-network = haskell-nix.cabalProject' ({ config, pkgs, ... }: { # pkgs - nixpkgs instatiated for cross compilation, so # stdenv.hostPlatform.isWindows will work as expected src = ./..; name = "ouroboros-network"; compiler-nix-name = lib.mkDefault defaultCompiler; - cabalProjectLocal = if pkgs.stdenv.hostPlatform.isWindows - then lib.readFile ../scripts/ci/cabal.project.local.Windows - else lib.readFile ../scripts/ci/cabal.project.local.Linux; + cabalProjectLocal = + if pkgs.stdenv.hostPlatform.isWindows + then lib.readFile ../scripts/ci/cabal.project.local.Windows + else lib.readFile ../scripts/ci/cabal.project.local.Linux; # # CROSS COMPILATION @@ -47,7 +48,7 @@ let # we also want cross compilation to windows on linux (and only with default compiler). crossPlatforms = - p: lib.optionals (pkgs.stdenv.hostPlatform.isLinux && config.compiler-nix-name == crossGHCVersion) [p.mingwW64]; + p: lib.optionals (pkgs.stdenv.hostPlatform.isLinux && config.compiler-nix-name == crossGHCVersion) [ p.mingwW64 ]; # # VARIANTS @@ -82,33 +83,33 @@ let (forAllProjectPackages ({ ... }: { ghcOptions = [ "-Werror" ]; })) - ({pkgs, ...}: { + ({ pkgs, ... }: { # We impose limit heap size limit when running some of the tests # to discover space leaks Once #4698 and #4699 are done we can # further constrain the heap size. preCheck = lib.mkForce '' - export GHCRTS=-M250M + export GHCRTS=-M250M ''; # pkgs are instantiated for the host platform packages.ouroboros-network-protocols.components.tests.cddl.build-tools = [ pkgs.cddl pkgs.cbor-diag ]; - packages.ouroboros-network-protocols.components.tests.cddl.preCheck = "export HOME=`pwd`"; + packages.ouroboros-network-protocols.components.tests.cddl.preCheck = "export HOME=`pwd`"; # don't run checks using Wine when cross compiling - packages.quickcheck-monoids.components.tests.test.doCheck = !pkgs.stdenv.hostPlatform.isWindows; - packages.ntp-client.components.tests.test.doCheck = !pkgs.stdenv.hostPlatform.isWindows; - packages.network-mux.components.tests.test.doCheck = !pkgs.stdenv.hostPlatform.isWindows; - packages.network-mux.components.tests.test.preCheck = "export GHCRTS=-M500M"; - packages.ouroboros-network-api.components.tests.test.doCheck = !pkgs.stdenv.hostPlatform.isWindows; - packages.ouroboros-network-protocols.components.tests.test.doCheck = !pkgs.stdenv.hostPlatform.isWindows; + packages.quickcheck-monoids.components.tests.test.doCheck = !pkgs.stdenv.hostPlatform.isWindows; + packages.ntp-client.components.tests.test.doCheck = !pkgs.stdenv.hostPlatform.isWindows; + packages.network-mux.components.tests.test.doCheck = !pkgs.stdenv.hostPlatform.isWindows; + packages.network-mux.components.tests.test.preCheck = "export GHCRTS=-M500M"; + packages.ouroboros-network-api.components.tests.test.doCheck = !pkgs.stdenv.hostPlatform.isWindows; + packages.ouroboros-network-protocols.components.tests.test.doCheck = !pkgs.stdenv.hostPlatform.isWindows; packages.ouroboros-network-framework.components.tests.sim-tests.doCheck = !pkgs.stdenv.hostPlatform.isWindows; - packages.ouroboros-network-framework.components.tests.io-tests.doCheck = !pkgs.stdenv.hostPlatform.isWindows; - packages.ouroboros-network-framework.components.tests.bench.doCheck = !pkgs.stdenv.hostPlatform.isWindows; - packages.ouroboros-network.components.tests.sim-tests.doCheck = !pkgs.stdenv.hostPlatform.isWindows; - packages.ouroboros-network.components.tests.io-tests.doCheck = !pkgs.stdenv.hostPlatform.isWindows; - packages.cardano-client.components.tests.test.doCheck = !pkgs.stdenv.hostPlatform.isWindows; + packages.ouroboros-network-framework.components.tests.io-tests.doCheck = !pkgs.stdenv.hostPlatform.isWindows; + packages.ouroboros-network-framework.components.tests.bench.doCheck = !pkgs.stdenv.hostPlatform.isWindows; + packages.ouroboros-network.components.tests.sim-tests.doCheck = !pkgs.stdenv.hostPlatform.isWindows; + packages.ouroboros-network.components.tests.io-tests.doCheck = !pkgs.stdenv.hostPlatform.isWindows; + packages.cardano-client.components.tests.test.doCheck = !pkgs.stdenv.hostPlatform.isWindows; }) ]; }); - in - { inherit ouroboros-network; } +in +{ inherit ouroboros-network; } diff --git a/nix/shell.nix b/nix/shell.nix index 1867fc742c8..a1a93306c5d 100644 --- a/nix/shell.nix +++ b/nix/shell.nix @@ -23,12 +23,12 @@ ouroboros-network.shellFor { # version as used in ouroboros-network. tools = lib.optionalAttrs hls - { - haskell-language-server = { - src = inputs.haskellNix.inputs."hls-2.7"; - configureArgs = "--disable-benchmarks --disable-tests"; + { + haskell-language-server = { + src = inputs.haskellNix.inputs."hls-2.7"; + configureArgs = "--disable-benchmarks --disable-tests"; + }; }; - }; shellHook = '' export LANG="en_US.UTF-8" From 683b4a054fffaa11e900969b1cde4efedd71ce5c Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Sat, 28 Sep 2024 16:38:41 +0200 Subject: [PATCH 07/18] nix: format cabal files with cabal-gild --- nix/formatting.nix | 1 + nix/shell.nix | 1 + nix/tools.nix | 1 + scripts/ci/run-cabal-gild.sh | 8 ++++++++ 4 files changed, 11 insertions(+) create mode 100755 scripts/ci/run-cabal-gild.sh diff --git a/nix/formatting.nix b/nix/formatting.nix index 6a076152d82..0ac0a213699 100644 --- a/nix/formatting.nix +++ b/nix/formatting.nix @@ -28,4 +28,5 @@ in { stylish-haskell = checkFormatting pkgs.stylish-haskell ../scripts/ci/run-stylish-haskell.sh "-g"; nixpkgs-fmt = checkFormatting pkgs.nixpkgs-fmt ../scripts/ci/run-nixpkgs-fmt.sh ""; + cabal-gild = checkFormatting pkgs.cabal-gild ../scripts/ci/run-cabal-gild.sh ""; } diff --git a/nix/shell.nix b/nix/shell.nix index a1a93306c5d..0f2855ce4f0 100644 --- a/nix/shell.nix +++ b/nix/shell.nix @@ -6,6 +6,7 @@ in ouroboros-network.shellFor { nativeBuildInputs = [ pkgs.cabal + pkgs.cabal-gild pkgs.fd pkgs.nixpkgs-fmt pkgs.stylish-haskell diff --git a/nix/tools.nix b/nix/tools.nix index a7e32cbc47c..bda7f81c4ea 100644 --- a/nix/tools.nix +++ b/nix/tools.nix @@ -12,6 +12,7 @@ in { inherit tool-index-state; cabal = tool "cabal" "3.12.1.0" { }; + cabal-gild = tool "cabal-gild" "1.5.0.1" { }; stylish-haskell = tool "stylish-haskell" "0.14.6.0" { }; haskellBuildUtils = prev.haskellBuildUtils.override { inherit (final.ouroboros-network.args) compiler-nix-name; diff --git a/scripts/ci/run-cabal-gild.sh b/scripts/ci/run-cabal-gild.sh new file mode 100755 index 00000000000..58bec70b67f --- /dev/null +++ b/scripts/ci/run-cabal-gild.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +set -euo pipefail + +# First, try to find the 'fd' command +FD="$(which fdfind 2>/dev/null || which fd 2>/dev/null)" + +$FD --full-path "$(pwd)" -e cabal -x cabal-gild -i {} -o {} From 9f8b7825673ce4ee4faf97b5fd3ca7a8463d8ee5 Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Sat, 28 Sep 2024 21:37:37 +0200 Subject: [PATCH 08/18] formated cabal files with cabal-gild --- cardano-client/cardano-client.cabal | 69 +- cardano-ping/cardano-ping.cabal | 107 +-- .../monoidal-synchronisation.cabal | 93 +-- network-mux/network-mux.cabal | 327 ++++----- ntp-client/ntp-client.cabal | 148 ++-- .../ouroboros-network-api.cabal | 170 ++--- .../ouroboros-network-framework.cabal | 657 +++++++++--------- .../ouroboros-network-mock.cabal | 97 +-- .../ouroboros-network-protocols.cabal | 553 +++++++-------- .../ouroboros-network-testing.cabal | 205 +++--- ouroboros-network/ouroboros-network.cabal | 655 ++++++++--------- quickcheck-monoids/quickcheck-monoids.cabal | 93 +-- 12 files changed, 1622 insertions(+), 1552 deletions(-) diff --git a/cardano-client/cardano-client.cabal b/cardano-client/cardano-client.cabal index de9e44b6497..3ffad65c293 100644 --- a/cardano-client/cardano-client.cabal +++ b/cardano-client/cardano-client.cabal @@ -1,38 +1,41 @@ cabal-version: 3.0 +name: cardano-client +version: 0.3.1.5 +synopsis: An API for ouroboros-network +description: An API for ouroboros-network. +license: Apache-2.0 +license-files: + LICENSE + NOTICE -name: cardano-client -version: 0.3.1.5 -synopsis: An API for ouroboros-network -description: An API for ouroboros-network. -license: Apache-2.0 -license-files: LICENSE - NOTICE -copyright: 2019-2023 Input Output Global Inc (IOG), 2023-2024 Intersect -author: IOHK Engineering Team -maintainer: marcin.szamotulski@iohk.io -category: Network -build-type: Simple -extra-doc-files: CHANGELOG.md +copyright: 2019-2023 Input Output Global Inc (IOG), 2023-2024 Intersect +author: IOHK Engineering Team +maintainer: marcin.szamotulski@iohk.io +category: Network +build-type: Simple +extra-doc-files: CHANGELOG.md library - hs-source-dirs: src - exposed-modules: Cardano.Client.Subscription - default-language: Haskell2010 - default-extensions: ImportQualifiedPost - build-depends: base >=4.14 && <4.21, - bytestring >=0.10 && <0.13, - containers, - ouroboros-network-api >= 0.5.2 && < 0.10, - ouroboros-network >= 0.9 && < 0.18, - ouroboros-network-framework >= 0.8 && < 0.14, - network-mux ^>= 0.4.5, + hs-source-dirs: src + exposed-modules: Cardano.Client.Subscription + default-language: Haskell2010 + default-extensions: ImportQualifiedPost + build-depends: + base >=4.14 && <4.21, + bytestring >=0.10 && <0.13, + containers, + network-mux ^>=0.4.5, + ouroboros-network >=0.9 && <0.18, + ouroboros-network-api >=0.5.2 && <0.10, + ouroboros-network-framework >=0.8 && <0.14, - ghc-options: -Wall - -Wno-unticked-promoted-constructors - -Wcompat - -Wincomplete-uni-patterns - -Wincomplete-record-updates - -Wpartial-fields - -Widentities - -Wredundant-constraints - -Wunused-packages + ghc-options: + -Wall + -Wno-unticked-promoted-constructors + -Wcompat + -Wincomplete-uni-patterns + -Wincomplete-record-updates + -Wpartial-fields + -Widentities + -Wredundant-constraints + -Wunused-packages diff --git a/cardano-ping/cardano-ping.cabal b/cardano-ping/cardano-ping.cabal index f029a95cd69..49b6876b3b8 100644 --- a/cardano-ping/cardano-ping.cabal +++ b/cardano-ping/cardano-ping.cabal @@ -1,59 +1,60 @@ -cabal-version: 3.0 -name: cardano-ping -version: 0.4.0.2 -synopsis: Utility for pinging cardano nodes -description: Utility for pinging cardano nodes. -license: Apache-2.0 -license-files: LICENSE - NOTICE -copyright: 2019-2023 Input Output Global Inc (IOG), 2023-2024 Intersect -author: Karl Knutsson -maintainer: karl.knutsson-ext@cardanofoundation.org marcin.szamotulski@iohk.io -category: Network -build-type: Simple -extra-doc-files: README.md - CHANGELOG.md +cabal-version: 3.0 +name: cardano-ping +version: 0.4.0.2 +synopsis: Utility for pinging cardano nodes +description: Utility for pinging cardano nodes. +license: Apache-2.0 +license-files: + LICENSE + NOTICE + +copyright: 2019-2023 Input Output Global Inc (IOG), 2023-2024 Intersect +author: Karl Knutsson +maintainer: karl.knutsson-ext@cardanofoundation.org marcin.szamotulski@iohk.io +category: Network +build-type: Simple +extra-doc-files: + CHANGELOG.md + README.md flag asserts - description: Enable assertions - manual: False - default: False + description: Enable assertions + manual: False + default: False library - hs-source-dirs: src - exposed-modules: Cardano.Network.Ping - build-depends: base >=4.14 && <4.21, - aeson >=2.1.1.0 && <3, - cborg >=0.2.8 && <0.3, - bytestring >=0.10 && <0.13, - contra-tracer >=0.1 && <0.3, - iproute, - time, - - si-timers ^>=1.5, - strict-stm, - - network-mux ^>=0.4.5, - tdigest ^>=0.3, - text >=1.2.4 && <2.2, - transformers >=0.5 && <0.7, - - -- The Windows version of network-3.1.2 is missing - -- functions, see - -- https://github.com/haskell/network/issues/484 - network >= 3.1.2.2 && < 3.2, + hs-source-dirs: src + exposed-modules: Cardano.Network.Ping + build-depends: + -- The Windows version of network-3.1.2 is missing + -- functions, see + -- https://github.com/haskell/network/issues/484 + aeson >=2.1.1.0 && <3, + base >=4.14 && <4.21, + bytestring >=0.10 && <0.13, + cborg >=0.2.8 && <0.3, + contra-tracer >=0.1 && <0.3, + iproute, + network >=3.1.2.2 && <3.2, + network-mux ^>=0.4.5, + si-timers ^>=1.5, + strict-stm, + tdigest ^>=0.3, + text >=1.2.4 && <2.2, + time, + transformers >=0.5 && <0.7, if flag(asserts) - ghc-options: -fno-ignore-asserts - - default-language: Haskell2010 - default-extensions: ImportQualifiedPost - ghc-options: -Wall - -Wcompat - -Widentities - -Wincomplete-record-updates - -Wincomplete-uni-patterns - -Wno-unticked-promoted-constructors - -Wpartial-fields - -Wredundant-constraints - -Wunused-packages + ghc-options: -fno-ignore-asserts + default-language: Haskell2010 + default-extensions: ImportQualifiedPost + ghc-options: + -Wall + -Wcompat + -Widentities + -Wincomplete-record-updates + -Wincomplete-uni-patterns + -Wno-unticked-promoted-constructors + -Wpartial-fields + -Wredundant-constraints + -Wunused-packages diff --git a/monoidal-synchronisation/monoidal-synchronisation.cabal b/monoidal-synchronisation/monoidal-synchronisation.cabal index 615d1ab4198..35825f21284 100644 --- a/monoidal-synchronisation/monoidal-synchronisation.cabal +++ b/monoidal-synchronisation/monoidal-synchronisation.cabal @@ -1,55 +1,58 @@ cabal-version: 3.0 +name: monoidal-synchronisation +version: 0.1.0.6 +synopsis: Monoidal synchronisation +description: Monoidal synchronisation. +license: Apache-2.0 +license-files: + LICENSE + NOTICE -name: monoidal-synchronisation -version: 0.1.0.6 -synopsis: Monoidal synchronisation -description: Monoidal synchronisation. -license: Apache-2.0 -license-files: LICENSE - NOTICE -author: Marcin Szamotulski -maintainer: coot@coot.me -category: Network -copyright: 2021-2023 Input Output Global Inc (IOG), 2023-2024 Intersect -extra-doc-files: CHANGELOG.md +author: Marcin Szamotulski +maintainer: coot@coot.me +category: Network +copyright: 2021-2023 Input Output Global Inc (IOG), 2023-2024 Intersect +extra-doc-files: CHANGELOG.md library - exposed-modules: Data.Monoid.Synchronisation - build-depends: base >=4.14 && <4.21 - hs-source-dirs: src + exposed-modules: Data.Monoid.Synchronisation + build-depends: base >=4.14 && <4.21 + hs-source-dirs: src default-language: Haskell2010 default-extensions: ImportQualifiedPost - ghc-options: -Wall - -Wcompat - -Wincomplete-uni-patterns - -Wincomplete-record-updates - -Wpartial-fields - -Widentities - -Wredundant-constraints - -Wno-unticked-promoted-constructors + ghc-options: + -Wall + -Wcompat + -Wincomplete-uni-patterns + -Wincomplete-record-updates + -Wpartial-fields + -Widentities + -Wredundant-constraints + -Wno-unticked-promoted-constructors test-suite test - type: exitcode-stdio-1.0 - main-is: Main.hs - hs-source-dirs: test - other-modules: Test.Data.Monoid.Synchronisation - build-depends: base >=4.14 && <4.21 + type: exitcode-stdio-1.0 + main-is: Main.hs + hs-source-dirs: test + other-modules: Test.Data.Monoid.Synchronisation + build-depends: + QuickCheck, + base >=4.14 && <4.21, + io-classes, + io-sim, + monoidal-synchronisation, + tasty, + tasty-quickcheck, - , QuickCheck - , tasty - , tasty-quickcheck - - , io-classes - , io-sim - , monoidal-synchronisation default-language: Haskell2010 - ghc-options: -rtsopts - -threaded - -Wall - -Wcompat - -Wincomplete-uni-patterns - -Wincomplete-record-updates - -Wpartial-fields - -Widentities - -Wredundant-constraints - -Wno-unticked-promoted-constructors + ghc-options: + -rtsopts + -threaded + -Wall + -Wcompat + -Wincomplete-uni-patterns + -Wincomplete-record-updates + -Wpartial-fields + -Widentities + -Wredundant-constraints + -Wno-unticked-promoted-constructors diff --git a/network-mux/network-mux.cabal b/network-mux/network-mux.cabal index 5907682d5d7..e8cd2031aa8 100644 --- a/network-mux/network-mux.cabal +++ b/network-mux/network-mux.cabal @@ -1,183 +1,198 @@ cabal-version: 3.0 +name: network-mux +version: 0.4.5.3 +synopsis: Multiplexing library +description: Multiplexing library. +license: Apache-2.0 +license-files: + LICENSE + NOTICE -name: network-mux -version: 0.4.5.3 -synopsis: Multiplexing library -description: Multiplexing library. -license: Apache-2.0 -license-files: LICENSE - NOTICE -copyright: 2019-2023 Input Output Global Inc (IOG), 2023-2024 Intersect -author: Duncan Coutts, Marc Fontaine, Karl Knutsson, Marcin Szamotulski, Alexander Vieth, Neil Davies -maintainer: marcin.szamotulski@iohk.io -category: Network -build-type: Simple -extra-doc-files: README.md - CHANGELOG.md - -Flag ipv6 - Description: Enable IPv6 test cases - Manual: True +copyright: 2019-2023 Input Output Global Inc (IOG), 2023-2024 Intersect +author: Duncan Coutts, Marc Fontaine, Karl Knutsson, Marcin Szamotulski, Alexander Vieth, Neil Davies +maintainer: marcin.szamotulski@iohk.io +category: Network +build-type: Simple +extra-doc-files: + CHANGELOG.md + README.md + +flag ipv6 + description: Enable IPv6 test cases + manual: True -- Default to False since travis lacks IPv6 support - Default: False + default: False -Flag tracetcpinfo - Description: Enable costly Linux only tracing of the kernel's tcpinfo - Manual: True - Default: False +flag tracetcpinfo + description: Enable costly Linux only tracing of the kernel's tcpinfo + manual: True + default: False common demo-deps - default-language: Haskell2010 - default-extensions: ImportQualifiedPost - ghc-options: -threaded - -Wall - -fno-ignore-asserts - -Wcompat - -Wincomplete-uni-patterns - -Wincomplete-record-updates - -Wpartial-fields - -Widentities - -Wredundant-constraints - -Wunused-packages + default-language: Haskell2010 + default-extensions: ImportQualifiedPost + ghc-options: + -threaded + -Wall + -fno-ignore-asserts + -Wcompat + -Wincomplete-uni-patterns + -Wincomplete-record-updates + -Wpartial-fields + -Widentities + -Wredundant-constraints + -Wunused-packages library - build-depends: base >=4.14 && <4.21, - io-classes ^>=1.5.0, - strict-stm, - si-timers, - contra-tracer >=0.1 && <0.2, - monoidal-synchronisation - >=0.1 && <0.2, - - array >=0.5 && <0.6, - binary >=0.8 && <0.11, - bytestring >=0.10 && <0.13, - containers >=0.5 && <0.8, - -- The Windows version of network-3.1.2 is missing - -- functions, see - -- https://github.com/haskell/network/issues/484 - network ^>=3.1.4, - process ^>=1.6, - statistics-linreg - >=0.3 && <0.4, - vector >=0.12 && <0.14, - time >=1.9.1 && <1.14, - quiet + build-depends: + -- The Windows version of network-3.1.2 is missing + -- functions, see + -- https://github.com/haskell/network/issues/484 + array >=0.5 && <0.6, + base >=4.14 && <4.21, + binary >=0.8 && <0.11, + bytestring >=0.10 && <0.13, + containers >=0.5 && <0.8, + contra-tracer >=0.1 && <0.2, + io-classes ^>=1.5.0, + monoidal-synchronisation >=0.1 && <0.2, + network ^>=3.1.4, + process ^>=1.6, + quiet, + si-timers, + statistics-linreg >=0.3 && <0.4, + strict-stm, + time >=1.9.1 && <1.14, + vector >=0.12 && <0.14, if os(windows) - build-depends: Win32 >= 2.5.4.1 && <3.0, - Win32-network >=0.2 && <0.3 + build-depends: + Win32 >=2.5.4.1 && <3.0, + Win32-network >=0.2 && <0.3, if flag(tracetcpinfo) - cpp-options: -DMUX_TRACE_TCPINFO - hs-source-dirs: src - exposed-modules: Network.Mux - Network.Mux.Channel - Network.Mux.Codec - Network.Mux.Compat - Network.Mux.Egress - Network.Mux.Ingress - Network.Mux.Time - Network.Mux.Timeout - Network.Mux.Types - Network.Mux.Trace - Network.Mux.Bearer - Network.Mux.Bearer.AttenuatedChannel - Network.Mux.Bearer.Pipe - Network.Mux.Bearer.Queues - Network.Mux.Bearer.Socket - Network.Mux.DeltaQ.TraceStats - Network.Mux.DeltaQ.TraceStatsSupport - Network.Mux.DeltaQ.TraceTransformer - Network.Mux.DeltaQ.TraceTypes - Network.Mux.TCPInfo - Control.Concurrent.JobPool + cpp-options: -DMUX_TRACE_TCPINFO + hs-source-dirs: src + exposed-modules: + Control.Concurrent.JobPool + Network.Mux + Network.Mux.Bearer + Network.Mux.Bearer.AttenuatedChannel + Network.Mux.Bearer.Pipe + Network.Mux.Bearer.Queues + Network.Mux.Bearer.Socket + Network.Mux.Channel + Network.Mux.Codec + Network.Mux.Compat + Network.Mux.DeltaQ.TraceStats + Network.Mux.DeltaQ.TraceStatsSupport + Network.Mux.DeltaQ.TraceTransformer + Network.Mux.DeltaQ.TraceTypes + Network.Mux.Egress + Network.Mux.Ingress + Network.Mux.TCPInfo + Network.Mux.Time + Network.Mux.Timeout + Network.Mux.Trace + Network.Mux.Types if os(linux) - other-modules: Network.Mux.TCPInfo.Linux + other-modules: Network.Mux.TCPInfo.Linux if os(windows) exposed-modules: - Network.Mux.Bearer.NamedPipe - default-language: Haskell2010 - default-extensions: ImportQualifiedPost - ghc-options: -Wall - -Wcompat - -Widentities - -Wincomplete-record-updates - -Wincomplete-uni-patterns - -Wno-unticked-promoted-constructors - -Wpartial-fields - -Wredundant-constraints - -Wunused-packages + Network.Mux.Bearer.NamedPipe + default-language: Haskell2010 + default-extensions: ImportQualifiedPost + ghc-options: + -Wall + -Wcompat + -Widentities + -Wincomplete-record-updates + -Wincomplete-uni-patterns + -Wno-unticked-promoted-constructors + -Wpartial-fields + -Wredundant-constraints + -Wunused-packages test-suite test - type: exitcode-stdio-1.0 - hs-source-dirs: test - main-is: Main.hs - other-modules: Test.Mux - Test.Mux.ReqResp - Test.Mux.Timeout - default-language: Haskell2010 - default-extensions: ImportQualifiedPost - build-depends: base >=4.14 && <4.21, - io-classes, - si-timers, - strict-stm, - io-sim, - contra-tracer, - network-mux, - Win32-network, - - binary, - bytestring, - cborg, - containers, - network, - QuickCheck, - splitmix, - serialise, - tasty, - tasty-quickcheck, - primitive, + type: exitcode-stdio-1.0 + hs-source-dirs: test + main-is: Main.hs + other-modules: + Test.Mux + Test.Mux.ReqResp + Test.Mux.Timeout + + default-language: Haskell2010 + default-extensions: ImportQualifiedPost + build-depends: + QuickCheck, + Win32-network, + base >=4.14 && <4.21, + binary, + bytestring, + cborg, + containers, + contra-tracer, + io-classes, + io-sim, + network, + network-mux, + primitive, + serialise, + si-timers, + splitmix, + strict-stm, + tasty, + tasty-quickcheck, if os(windows) - build-depends: Win32 >= 2.5.4.1 && <3.0, + build-depends: Win32 >=2.5.4.1 && <3.0 else - build-depends: process - ghc-options: -threaded - -rtsopts - -Wall - -fno-ignore-asserts - -Wcompat - -Wincomplete-uni-patterns - -Wincomplete-record-updates - -Wpartial-fields - -Widentities - -Wredundant-constraints - -Wno-unticked-promoted-constructors - -Wunused-packages + build-depends: process + + ghc-options: + -threaded + -rtsopts + -Wall + -fno-ignore-asserts + -Wcompat + -Wincomplete-uni-patterns + -Wincomplete-record-updates + -Wpartial-fields + -Widentities + -Wredundant-constraints + -Wno-unticked-promoted-constructors + -Wunused-packages + if flag(ipv6) - cpp-options: -DOUROBOROS_NETWORK_IPV6 + cpp-options: -DOUROBOROS_NETWORK_IPV6 executable mux-demo - import: demo-deps - hs-source-dirs: demo, test - main-is: mux-demo.hs - other-modules: Test.Mux.ReqResp - build-depends: base >=4.14 && <4.21, - network-mux, - io-classes, - contra-tracer, - stm, - - bytestring, - cborg, - serialise, - primitive + import: demo-deps + hs-source-dirs: + demo + test + + main-is: mux-demo.hs + other-modules: Test.Mux.ReqResp + build-depends: + base >=4.14 && <4.21, + bytestring, + cborg, + contra-tracer, + io-classes, + network-mux, + primitive, + serialise, + stm, + if os(windows) - build-depends: Win32, - Win32-network + build-depends: + Win32, + Win32-network, else - build-depends: directory, - network + build-depends: + directory, + network, diff --git a/ntp-client/ntp-client.cabal b/ntp-client/ntp-client.cabal index 95effb5402d..4885c0c573b 100644 --- a/ntp-client/ntp-client.cabal +++ b/ntp-client/ntp-client.cabal @@ -1,18 +1,20 @@ cabal-version: 3.0 +name: ntp-client +version: 0.0.1.6 +synopsis: NTP client +description: NTP client. +license: Apache-2.0 +license-files: + LICENSE + NOTICE -name: ntp-client -version: 0.0.1.6 -synopsis: NTP client -description: NTP client. -license: Apache-2.0 -license-files: LICENSE - NOTICE -copyright: 2019-2023 Input Output Global Inc (IOG), 2023-2024 Intersect -maintainer: operations@iohk.io -category: Network -build-type: Simple -extra-doc-files: README.md - CHANGELOG.md +copyright: 2019-2023 Input Output Global Inc (IOG), 2023-2024 Intersect +maintainer: operations@iohk.io +category: Network +build-type: Simple +extra-doc-files: + CHANGELOG.md + README.md flag demo description: Build a demo application @@ -20,64 +22,80 @@ flag demo manual: True library - exposed-modules: Network.NTP.Client - other-modules: Network.NTP.Client.Packet - Network.NTP.Client.Query - build-depends: async >=2.2 && <2.3 - , base >=4.14 && <4.21 - , binary >=0.8 && <0.11 - , bytestring >=0.10 && <0.13 - , contra-tracer >=0.1 && <0.2 - , network >= 3.1.2 && <3.2 - , stm >=2.4 && <2.6 - , time >=1.9.1 && <1.14 - , Win32-network >=0.1 && <0.3 + exposed-modules: Network.NTP.Client + other-modules: + Network.NTP.Client.Packet + Network.NTP.Client.Query - hs-source-dirs: src - default-language: Haskell2010 - default-extensions: ImportQualifiedPost - ghc-options: -Wall - -Wcompat - -Wincomplete-uni-patterns - -Wincomplete-record-updates - -Wpartial-fields - -Widentities - -Wredundant-constraints - -Wunused-packages - default-extensions: GeneralizedNewtypeDeriving + build-depends: + Win32-network >=0.1 && <0.3, + async >=2.2 && <2.3, + base >=4.14 && <4.21, + binary >=0.8 && <0.11, + bytestring >=0.10 && <0.13, + contra-tracer >=0.1 && <0.2, + network >=3.1.2 && <3.2, + stm >=2.4 && <2.6, + time >=1.9.1 && <1.14, + + hs-source-dirs: src + default-language: Haskell2010 + default-extensions: ImportQualifiedPost + ghc-options: + -Wall + -Wcompat + -Wincomplete-uni-patterns + -Wincomplete-record-updates + -Wpartial-fields + -Widentities + -Wredundant-constraints + -Wunused-packages + + default-extensions: GeneralizedNewtypeDeriving test-suite test - hs-source-dirs: test, src - main-is: Test.hs - other-modules: Network.NTP.Client.Packet - type: exitcode-stdio-1.0 - build-depends: base >=4.14 && <4.21 - , binary >=0.8 && <0.11 - , time >=1.9.1 && <1.14 - , QuickCheck - , tasty - , tasty-quickcheck - default-language: Haskell2010 + hs-source-dirs: + test + src + + main-is: Test.hs + other-modules: Network.NTP.Client.Packet + type: exitcode-stdio-1.0 + build-depends: + QuickCheck, + base >=4.14 && <4.21, + binary >=0.8 && <0.11, + tasty, + tasty-quickcheck, + time >=1.9.1 && <1.14, + + default-language: Haskell2010 default-extensions: ImportQualifiedPost - ghc-options: -Wall - -Wunused-packages - -threaded - -rtsopts + ghc-options: + -Wall + -Wunused-packages + -threaded + -rtsopts executable demo-ntp-client - hs-source-dirs: demo - main-is: Main.hs + hs-source-dirs: demo + main-is: Main.hs + if flag(demo) - buildable: True + buildable: True else - buildable: False - build-depends: async >=2.2 && <2.3 - , base >=4.14 && <4.21 - , contra-tracer >=0.1 && <0.2 - , Win32-network >=0.1 && <0.3 - , ntp-client - default-language: Haskell2010 + buildable: False + + build-depends: + Win32-network >=0.1 && <0.3, + async >=2.2 && <2.3, + base >=4.14 && <4.21, + contra-tracer >=0.1 && <0.2, + ntp-client, + + default-language: Haskell2010 default-extensions: ImportQualifiedPost - ghc-options: -Wall - -threaded - -Wunused-packages + ghc-options: + -Wall + -threaded + -Wunused-packages diff --git a/ouroboros-network-api/ouroboros-network-api.cabal b/ouroboros-network-api/ouroboros-network-api.cabal index 2da6ec4326b..ce19009d56c 100644 --- a/ouroboros-network-api/ouroboros-network-api.cabal +++ b/ouroboros-network-api/ouroboros-network-api.cabal @@ -1,94 +1,94 @@ -cabal-version: 3.0 -name: ouroboros-network-api -version: 0.9.0.1 -synopsis: A networking api shared with ouroboros-consensus -description: A networking api shared with ouroboros-consensus. -license: Apache-2.0 -license-files: LICENSE - NOTICE -copyright: 2019-2023 Input Output Global Inc (IOG), 2023-2024 Intersect -author: Alexander Vieth, Marcin Szamotulski, Duncan Coutts, Karl Knutsson -maintainer: marcin.szamotulski@iohk.io -category: Network -build-type: Simple -extra-doc-files: CHANGELOG.md +cabal-version: 3.0 +name: ouroboros-network-api +version: 0.9.0.1 +synopsis: A networking api shared with ouroboros-consensus +description: A networking api shared with ouroboros-consensus. +license: Apache-2.0 +license-files: + LICENSE + NOTICE + +copyright: 2019-2023 Input Output Global Inc (IOG), 2023-2024 Intersect +author: Alexander Vieth, Marcin Szamotulski, Duncan Coutts, Karl Knutsson +maintainer: marcin.szamotulski@iohk.io +category: Network +build-type: Simple +extra-doc-files: CHANGELOG.md flag asserts description: Enable assertions - manual: False - default: False - + manual: False + default: False library - hs-source-dirs: src - exposed-modules: Ouroboros.Network.AnchoredFragment - Ouroboros.Network.AnchoredSeq - Ouroboros.Network.Block - Ouroboros.Network.Point - - Ouroboros.Network.BlockFetch.ConsensusInterface - - Ouroboros.Network.CodecCBORTerm - Ouroboros.Network.ConsensusMode - Ouroboros.Network.ControlMessage - Ouroboros.Network.Handshake - Ouroboros.Network.Handshake.Acceptable - Ouroboros.Network.Handshake.Queryable - Ouroboros.Network.Magic - Ouroboros.Network.NodeToClient.Version - Ouroboros.Network.NodeToNode.Version - Ouroboros.Network.SizeInBytes - Ouroboros.Network.Util.ShowProxy - - Ouroboros.Network.Protocol.Limits - - Ouroboros.Network.PeerSelection.Bootstrap - Ouroboros.Network.PeerSelection.LedgerPeers.Type - Ouroboros.Network.PeerSelection.LedgerPeers.Utils - Ouroboros.Network.PeerSelection.LocalRootPeers - Ouroboros.Network.PeerSelection.PeerMetric.Type - Ouroboros.Network.PeerSelection.PeerAdvertise - Ouroboros.Network.PeerSelection.PeerTrustable - Ouroboros.Network.PeerSelection.PeerSharing - Ouroboros.Network.PeerSelection.PeerSharing.Codec - Ouroboros.Network.PeerSelection.RelayAccessPoint - default-language: Haskell2010 - default-extensions: ImportQualifiedPost - build-depends: base >=4.14 && <4.21, - aeson, - base16-bytestring, - bytestring >=0.10 && <0.13, - cborg >=0.2.1 && <0.3, - containers, - deepseq, - dns, - iproute, - measures, - network >=3.1.2 && <3.2, - nothunks, - serialise >=0.2 && <0.3, - text >=1.2 && <2.2, - quiet, + hs-source-dirs: src + exposed-modules: + Ouroboros.Network.AnchoredFragment + Ouroboros.Network.AnchoredSeq + Ouroboros.Network.Block + Ouroboros.Network.BlockFetch.ConsensusInterface + Ouroboros.Network.CodecCBORTerm + Ouroboros.Network.ConsensusMode + Ouroboros.Network.ControlMessage + Ouroboros.Network.Handshake + Ouroboros.Network.Handshake.Acceptable + Ouroboros.Network.Handshake.Queryable + Ouroboros.Network.Magic + Ouroboros.Network.NodeToClient.Version + Ouroboros.Network.NodeToNode.Version + Ouroboros.Network.PeerSelection.Bootstrap + Ouroboros.Network.PeerSelection.LedgerPeers.Type + Ouroboros.Network.PeerSelection.LedgerPeers.Utils + Ouroboros.Network.PeerSelection.LocalRootPeers + Ouroboros.Network.PeerSelection.PeerAdvertise + Ouroboros.Network.PeerSelection.PeerMetric.Type + Ouroboros.Network.PeerSelection.PeerSharing + Ouroboros.Network.PeerSelection.PeerSharing.Codec + Ouroboros.Network.PeerSelection.PeerTrustable + Ouroboros.Network.PeerSelection.RelayAccessPoint + Ouroboros.Network.Point + Ouroboros.Network.Protocol.Limits + Ouroboros.Network.SizeInBytes + Ouroboros.Network.Util.ShowProxy - cardano-binary, - cardano-slotting, - cardano-strict-containers, - contra-tracer, + default-language: Haskell2010 + default-extensions: ImportQualifiedPost + build-depends: + aeson, + base >=4.14 && <4.21, + base16-bytestring, + bytestring >=0.10 && <0.13, + cardano-binary, + cardano-slotting, + cardano-strict-containers, + cborg >=0.2.1 && <0.3, + containers, + contra-tracer, + deepseq, + dns, + io-classes ^>=1.5.0, + iproute, + measures, + network >=3.1.2 && <3.2, + network-mux ^>=0.4.5, + nothunks, + quiet, + serialise >=0.2 && <0.3, + si-timers, + strict-stm, + text >=1.2 && <2.2, + typed-protocols ^>=0.3, - io-classes ^>=1.5.0, - network-mux ^>=0.4.5, - strict-stm, - si-timers, - typed-protocols ^>=0.3, + ghc-options: + -Wall + -Wno-unticked-promoted-constructors + -Wcompat + -Wincomplete-uni-patterns + -Wincomplete-record-updates + -Wpartial-fields + -Widentities + -Wredundant-constraints + -Wunused-packages - ghc-options: -Wall - -Wno-unticked-promoted-constructors - -Wcompat - -Wincomplete-uni-patterns - -Wincomplete-record-updates - -Wpartial-fields - -Widentities - -Wredundant-constraints - -Wunused-packages if flag(asserts) - ghc-options: -fno-ignore-asserts + ghc-options: -fno-ignore-asserts diff --git a/ouroboros-network-framework/ouroboros-network-framework.cabal b/ouroboros-network-framework/ouroboros-network-framework.cabal index 39b9a8bf7d4..b092fd38c4e 100644 --- a/ouroboros-network-framework/ouroboros-network-framework.cabal +++ b/ouroboros-network-framework/ouroboros-network-framework.cabal @@ -1,361 +1,350 @@ -cabal-version: 3.0 -name: ouroboros-network-framework -version: 0.13.2.4 -synopsis: Ouroboros network framework -description: Ouroboros network framework. -license: Apache-2.0 -license-files: LICENSE - NOTICE -copyright: 2019-2023 Input Output Global Inc (IOG), 2023-2024 Intersect -author: Alexander Vieth, Duncan Coutts, Marcin Szamotulski -maintainer: marcin.szamotulski@iohk.io -category: Network -build-type: Simple -extra-doc-files: CHANGELOG.md - -Flag ipv6 - Description: Enable IPv6 test cases - Manual: True +cabal-version: 3.0 +name: ouroboros-network-framework +version: 0.13.2.4 +synopsis: Ouroboros network framework +description: Ouroboros network framework. +license: Apache-2.0 +license-files: + LICENSE + NOTICE + +copyright: 2019-2023 Input Output Global Inc (IOG), 2023-2024 Intersect +author: Alexander Vieth, Duncan Coutts, Marcin Szamotulski +maintainer: marcin.szamotulski@iohk.io +category: Network +build-type: Simple +extra-doc-files: CHANGELOG.md + +flag ipv6 + description: Enable IPv6 test cases + manual: True -- Default to False since travis lacks IPv6 support - Default: False + default: False library - exposed-modules: Data.Cache - Data.Wedge - NoThunks.Class.Orphans - Ouroboros.Network.Channel - Ouroboros.Network.Driver - Ouroboros.Network.Driver.Simple - Ouroboros.Network.Driver.Limits - Ouroboros.Network.Driver.Stateful - Ouroboros.Network.ErrorPolicy - Ouroboros.Network.IOManager - Ouroboros.Network.Mux - Ouroboros.Network.MuxMode - - Ouroboros.Network.Protocol.Handshake - Ouroboros.Network.Protocol.Handshake.Type - Ouroboros.Network.Protocol.Handshake.Codec - Ouroboros.Network.Protocol.Handshake.Client - Ouroboros.Network.Protocol.Handshake.Server - Ouroboros.Network.Protocol.Handshake.Version - Ouroboros.Network.Protocol.Handshake.Unversioned - - Ouroboros.Network.ConnectionHandler - Ouroboros.Network.ConnectionId - Ouroboros.Network.ConnectionManager.Core - Ouroboros.Network.ConnectionManager.InformationChannel - Ouroboros.Network.ConnectionManager.Types - Ouroboros.Network.Context - Ouroboros.Network.InboundGovernor - Ouroboros.Network.InboundGovernor.Event - Ouroboros.Network.InboundGovernor.State - Ouroboros.Network.RethrowPolicy - Ouroboros.Network.Server.ConnectionTable - Ouroboros.Network.Server.Socket - Ouroboros.Network.Server.RateLimiting - Ouroboros.Network.Server2 - Ouroboros.Network.Snocket - Ouroboros.Network.Socket - - Ouroboros.Network.Subscription - Ouroboros.Network.Subscription.Client - Ouroboros.Network.Subscription.Dns - Ouroboros.Network.Subscription.Ip - Ouroboros.Network.Subscription.PeerState - Ouroboros.Network.Subscription.Subscriber - Ouroboros.Network.Subscription.Worker - - Simulation.Network.Snocket + exposed-modules: + Data.Cache + Data.Wedge + NoThunks.Class.Orphans + Ouroboros.Network.Channel + Ouroboros.Network.ConnectionHandler + Ouroboros.Network.ConnectionId + Ouroboros.Network.ConnectionManager.Core + Ouroboros.Network.ConnectionManager.InformationChannel + Ouroboros.Network.ConnectionManager.Types + Ouroboros.Network.Context + Ouroboros.Network.Driver + Ouroboros.Network.Driver.Limits + Ouroboros.Network.Driver.Simple + Ouroboros.Network.Driver.Stateful + Ouroboros.Network.ErrorPolicy + Ouroboros.Network.IOManager + Ouroboros.Network.InboundGovernor + Ouroboros.Network.InboundGovernor.Event + Ouroboros.Network.InboundGovernor.State + Ouroboros.Network.Mux + Ouroboros.Network.MuxMode + Ouroboros.Network.Protocol.Handshake + Ouroboros.Network.Protocol.Handshake.Client + Ouroboros.Network.Protocol.Handshake.Codec + Ouroboros.Network.Protocol.Handshake.Server + Ouroboros.Network.Protocol.Handshake.Type + Ouroboros.Network.Protocol.Handshake.Unversioned + Ouroboros.Network.Protocol.Handshake.Version + Ouroboros.Network.RethrowPolicy + Ouroboros.Network.Server.ConnectionTable + Ouroboros.Network.Server.RateLimiting + Ouroboros.Network.Server.Socket + Ouroboros.Network.Server2 + Ouroboros.Network.Snocket + Ouroboros.Network.Socket + Ouroboros.Network.Subscription + Ouroboros.Network.Subscription.Client + Ouroboros.Network.Subscription.Dns + Ouroboros.Network.Subscription.Ip + Ouroboros.Network.Subscription.PeerState + Ouroboros.Network.Subscription.Subscriber + Ouroboros.Network.Subscription.Worker + Simulation.Network.Snocket -- other-extensions: - build-depends: base >=4.12 && <4.21 - , async >=2.1 && <2.3 - , bytestring >=0.10 && <0.13 - , cborg >=0.2.1 && <0.3 - , containers >=0.5 && <0.8 - , deepseq - , dns < 4.3 - , iproute >=1.7 && < 1.8 - , hashable - , mtl - , nothunks - , random - , stm - , text - , quiet - - , cardano-prelude - , contra-tracer - - , io-classes ^>=1.5.0 - , si-timers - , strict-stm - - , nothunks ^>=0.1.4 || ^>=0.2 - , psqueues - -- ^ only to derive nothunk instances - - , monoidal-synchronisation - ^>=0.1.0.5 - , network ^>=3.1.4 - , network-mux ^>=0.4.5 - , ouroboros-network-api - ^>=0.9.0 - , ouroboros-network-testing - , typed-protocols ^>=0.3 - , typed-protocols-stateful - ^>=0.3 - , typed-protocols-cborg - ^>=0.3 - , Win32-network ^>=0.2 + build-depends: + -- ^ only to derive nothunk instances + Win32-network ^>=0.2, + async >=2.1 && <2.3, + base >=4.12 && <4.21, + bytestring >=0.10 && <0.13, + cardano-prelude, + cborg >=0.2.1 && <0.3, + containers >=0.5 && <0.8, + contra-tracer, + deepseq, + dns <4.3, + hashable, + io-classes ^>=1.5.0, + iproute >=1.7 && <1.8, + monoidal-synchronisation ^>=0.1.0.5, + mtl, + network ^>=3.1.4, + network-mux ^>=0.4.5, + nothunks, + nothunks ^>=0.1.4 || ^>=0.2, + ouroboros-network-api ^>=0.9.0, + ouroboros-network-testing, + psqueues, + quiet, + random, + si-timers, + stm, + strict-stm, + text, + typed-protocols ^>=0.3, + typed-protocols-cborg ^>=0.3, + typed-protocols-stateful ^>=0.3, if os(windows) - build-depends: Win32 >= 2.5.4.1 && <3.0 - - hs-source-dirs: src - default-language: Haskell2010 - default-extensions: ImportQualifiedPost - ghc-options: -Wall - -Wcompat - -Wincomplete-uni-patterns - -Wincomplete-record-updates - -Wpartial-fields - -Widentities - -Wredundant-constraints - -Wno-unticked-promoted-constructors - -Wunused-packages + build-depends: Win32 >=2.5.4.1 && <3.0 + hs-source-dirs: src + default-language: Haskell2010 + default-extensions: ImportQualifiedPost + ghc-options: + -Wall + -Wcompat + -Wincomplete-uni-patterns + -Wincomplete-record-updates + -Wpartial-fields + -Widentities + -Wredundant-constraints + -Wno-unticked-promoted-constructors + -Wunused-packages library testlib - visibility: public - hs-source-dirs: testlib - - exposed-modules: Ouroboros.Network.ConnectionManager.Test.Experiments - Ouroboros.Network.ConnectionManager.Test.Timeouts - Ouroboros.Network.ConnectionManager.Test.Utils - Ouroboros.Network.InboundGovernor.Test.Utils - Ouroboros.Network.Test.Orphans - - other-modules: - - build-depends: base >=4.14 && <4.21 - , bytestring - , cborg - , containers - , random - , serialise + visibility: public + hs-source-dirs: testlib + exposed-modules: + Ouroboros.Network.ConnectionManager.Test.Experiments + Ouroboros.Network.ConnectionManager.Test.Timeouts + Ouroboros.Network.ConnectionManager.Test.Utils + Ouroboros.Network.InboundGovernor.Test.Utils + Ouroboros.Network.Test.Orphans - , QuickCheck - , quickcheck-monoids - - , contra-tracer - , io-sim - , io-classes - , network-mux - , si-timers - , strict-stm - , typed-protocols - , typed-protocols-examples - , ouroboros-network-api - , ouroboros-network-framework - , ouroboros-network-testing - - default-language: Haskell2010 - default-extensions:ImportQualifiedPost - ghc-options: -Wall - -Wcompat - -Wincomplete-uni-patterns - -Wincomplete-record-updates - -Wpartial-fields - -Widentities - -Wredundant-constraints - -Wno-unticked-promoted-constructors - -Wunused-packages + other-modules: + build-depends: + QuickCheck, + base >=4.14 && <4.21, + bytestring, + cborg, + containers, + contra-tracer, + io-classes, + io-sim, + network-mux, + ouroboros-network-api, + ouroboros-network-framework, + ouroboros-network-testing, + quickcheck-monoids, + random, + serialise, + si-timers, + strict-stm, + typed-protocols, + typed-protocols-examples, + + default-language: Haskell2010 + default-extensions: ImportQualifiedPost + ghc-options: + -Wall + -Wcompat + -Wincomplete-uni-patterns + -Wincomplete-record-updates + -Wpartial-fields + -Widentities + -Wredundant-constraints + -Wno-unticked-promoted-constructors + -Wunused-packages test-suite sim-tests - type: exitcode-stdio-1.0 - main-is: Main.hs - hs-source-dirs: sim-tests - other-modules: Test.Ouroboros.Network.ConnectionManager - Test.Ouroboros.Network.Server2.Sim - Test.Ouroboros.Network.Socket - Test.Ouroboros.Network.Subscription - Test.Ouroboros.Network.RateLimiting - Test.Simulation.Network.Snocket - - build-depends: base >=4.14 && <4.21 - , bytestring - , cborg - , containers - , dns - , iproute - , network - , pretty-simple - , psqueues - , random - , serialise - , text - , time - , quiet - , with-utf8 - - , QuickCheck - , quickcheck-instances - , quickcheck-monoids - , tasty - , tasty-quickcheck - - , contra-tracer - - , io-sim - , io-classes - , si-timers - , strict-stm - , network-mux - , monoidal-synchronisation - , ouroboros-network-framework - , ouroboros-network-framework:testlib - , ouroboros-network-testing - , typed-protocols - , typed-protocols-cborg - , typed-protocols-examples + type: exitcode-stdio-1.0 + main-is: Main.hs + hs-source-dirs: sim-tests + other-modules: + Test.Ouroboros.Network.ConnectionManager + Test.Ouroboros.Network.RateLimiting + Test.Ouroboros.Network.Server2.Sim + Test.Ouroboros.Network.Socket + Test.Ouroboros.Network.Subscription + Test.Simulation.Network.Snocket + + build-depends: + QuickCheck, + base >=4.14 && <4.21, + bytestring, + cborg, + containers, + contra-tracer, + dns, + io-classes, + io-sim, + iproute, + monoidal-synchronisation, + network, + network-mux, + ouroboros-network-framework, + ouroboros-network-framework:testlib, + ouroboros-network-testing, + pretty-simple, + psqueues, + quickcheck-instances, + quickcheck-monoids, + quiet, + random, + serialise, + si-timers, + strict-stm, + tasty, + tasty-quickcheck, + text, + time, + typed-protocols, + typed-protocols-cborg, + typed-protocols-examples, + with-utf8, if os(windows) - build-depends: Win32-network <0.3 + build-depends: Win32-network <0.3 else - build-depends: directory - - default-language: Haskell2010 - default-extensions: ImportQualifiedPost - ghc-options: -rtsopts - -threaded - -Wall - -Wcompat - -Wincomplete-uni-patterns - -Wincomplete-record-updates - -Wpartial-fields - -Widentities - -Wredundant-constraints - -Wno-unticked-promoted-constructors - -Wunused-packages + build-depends: directory + + default-language: Haskell2010 + default-extensions: ImportQualifiedPost + ghc-options: + -rtsopts + -threaded + -Wall + -Wcompat + -Wincomplete-uni-patterns + -Wincomplete-record-updates + -Wpartial-fields + -Widentities + -Wredundant-constraints + -Wno-unticked-promoted-constructors + -Wunused-packages if flag(ipv6) - cpp-options: -DOUROBOROS_NETWORK_IPV6 + cpp-options: -DOUROBOROS_NETWORK_IPV6 test-suite io-tests - type: exitcode-stdio-1.0 - main-is: Main.hs - hs-source-dirs: io-tests + type: exitcode-stdio-1.0 + main-is: Main.hs + hs-source-dirs: io-tests other-modules: - Test.Ouroboros.Network.Driver - Test.Ouroboros.Network.Server2.IO - Test.Ouroboros.Network.Socket - Test.Ouroboros.Network.Subscription - - build-depends: base >=4.14 && <4.21 - , bytestring - , containers - , dns - , iproute - , network - , random - , time - , with-utf8 - - , QuickCheck - , tasty - , tasty-quickcheck - - , contra-tracer - - , io-sim - , io-classes - , si-timers - , strict-stm - , network-mux - , ouroboros-network-api - , ouroboros-network-framework - , ouroboros-network-framework:testlib - , typed-protocols - , typed-protocols-stateful - , typed-protocols-examples >= 0.5 + Test.Ouroboros.Network.Driver + Test.Ouroboros.Network.Server2.IO + Test.Ouroboros.Network.Socket + Test.Ouroboros.Network.Subscription + + build-depends: + QuickCheck, + base >=4.14 && <4.21, + bytestring, + containers, + contra-tracer, + dns, + io-classes, + io-sim, + iproute, + network, + network-mux, + ouroboros-network-api, + ouroboros-network-framework, + ouroboros-network-framework:testlib, + random, + si-timers, + strict-stm, + tasty, + tasty-quickcheck, + time, + typed-protocols, + typed-protocols-examples >=0.5, + typed-protocols-stateful, + with-utf8, if os(windows) - build-depends: Win32-network <0.3 + build-depends: Win32-network <0.3 else - build-depends: directory - - default-language: Haskell2010 - default-extensions: ImportQualifiedPost - ghc-options: -rtsopts - -threaded - -Wall - -Wcompat - -Wincomplete-uni-patterns - -Wincomplete-record-updates - -Wpartial-fields - -Widentities - -Wredundant-constraints - -Wno-unticked-promoted-constructors - -Wunused-packages - + build-depends: directory + + default-language: Haskell2010 + default-extensions: ImportQualifiedPost + ghc-options: + -rtsopts + -threaded + -Wall + -Wcompat + -Wincomplete-uni-patterns + -Wincomplete-record-updates + -Wpartial-fields + -Widentities + -Wredundant-constraints + -Wno-unticked-promoted-constructors + -Wunused-packages executable demo-ping-pong - hs-source-dirs: demo - main-is: ping-pong.hs - build-depends: base >=4.14 && <4.21, - async, - bytestring, - directory, - - contra-tracer, - - ouroboros-network-api, - ouroboros-network-framework, - typed-protocols-examples - - default-language: Haskell2010 - default-extensions: ImportQualifiedPost - ghc-options: -Wall - -threaded - -Wcompat - -Wincomplete-uni-patterns - -Wincomplete-record-updates - -Wpartial-fields - -Widentities - -Wredundant-constraints - -Wno-unticked-promoted-constructors - -Wunused-packages + hs-source-dirs: demo + main-is: ping-pong.hs + build-depends: + async, + base >=4.14 && <4.21, + bytestring, + contra-tracer, + directory, + ouroboros-network-api, + ouroboros-network-framework, + typed-protocols-examples, + + default-language: Haskell2010 + default-extensions: ImportQualifiedPost + ghc-options: + -Wall + -threaded + -Wcompat + -Wincomplete-uni-patterns + -Wincomplete-record-updates + -Wpartial-fields + -Widentities + -Wredundant-constraints + -Wno-unticked-promoted-constructors + -Wunused-packages executable demo-connection-manager - hs-source-dirs: demo - main-is: connection-manager.hs - build-depends: base >=4.14 && <4.21, - bytestring, - network, - optparse-applicative, - random, - - contra-tracer, - - io-classes, - network-mux, - si-timers, - ouroboros-network-api, - ouroboros-network-framework, - strict-stm, - typed-protocols, - typed-protocols-examples - - default-language: Haskell2010 - default-extensions: ImportQualifiedPost - ghc-options: -Wall - -threaded - -Wcompat - -Wincomplete-uni-patterns - -Wincomplete-record-updates - -Wpartial-fields - -Widentities - -Wredundant-constraints - -Wno-unticked-promoted-constructors - -Wunused-packages + hs-source-dirs: demo + main-is: connection-manager.hs + build-depends: + base >=4.14 && <4.21, + bytestring, + contra-tracer, + io-classes, + network, + network-mux, + optparse-applicative, + ouroboros-network-api, + ouroboros-network-framework, + random, + si-timers, + strict-stm, + typed-protocols, + typed-protocols-examples, + + default-language: Haskell2010 + default-extensions: ImportQualifiedPost + ghc-options: + -Wall + -threaded + -Wcompat + -Wincomplete-uni-patterns + -Wincomplete-record-updates + -Wpartial-fields + -Widentities + -Wredundant-constraints + -Wno-unticked-promoted-constructors + -Wunused-packages diff --git a/ouroboros-network-mock/ouroboros-network-mock.cabal b/ouroboros-network-mock/ouroboros-network-mock.cabal index 2a0af84ff4c..c4754e3793d 100644 --- a/ouroboros-network-mock/ouroboros-network-mock.cabal +++ b/ouroboros-network-mock/ouroboros-network-mock.cabal @@ -1,58 +1,59 @@ -cabal-version: 3.0 - -name: ouroboros-network-mock -version: 0.1.1.2 -synopsis: Ouroboros Network Chain for testing purposes -description: Ouroboros Network Chain for testing purposes. -license: Apache-2.0 -license-files: LICENSE - NOTICE -copyright: 2019-2023 Input Output Global Inc (IOG), 2023-2024 Intersect -author: Alexander Vieth, Marcin Szamotulski, Duncan Coutts -maintainer: marcin.szamotulski@iohk.io -category: Network -build-type: Simple -extra-doc-files: CHANGELOG.md +cabal-version: 3.0 +name: ouroboros-network-mock +version: 0.1.1.2 +synopsis: Ouroboros Network Chain for testing purposes +description: Ouroboros Network Chain for testing purposes. +license: Apache-2.0 +license-files: + LICENSE + NOTICE + +copyright: 2019-2023 Input Output Global Inc (IOG), 2023-2024 Intersect +author: Alexander Vieth, Marcin Szamotulski, Duncan Coutts +maintainer: marcin.szamotulski@iohk.io +category: Network +build-type: Simple +extra-doc-files: CHANGELOG.md flag asserts description: Enable assertions - manual: False - default: False + manual: False + default: False source-repository head - type: git + type: git location: https://github.com/intersectmbo/ouroboros-network library - hs-source-dirs: src - - exposed-modules: Ouroboros.Network.Mock.ConcreteBlock - Ouroboros.Network.Mock.Chain - Ouroboros.Network.Mock.ProducerState - - default-language: Haskell2010 - default-extensions: ImportQualifiedPost - - build-depends: base >=4.14 && <4.21, - bytestring, - containers, - cborg, - serialise, - hashable, - time, - - nothunks, - - ouroboros-network-api + hs-source-dirs: src + exposed-modules: + Ouroboros.Network.Mock.Chain + Ouroboros.Network.Mock.ConcreteBlock + Ouroboros.Network.Mock.ProducerState + + default-language: Haskell2010 + default-extensions: ImportQualifiedPost + build-depends: + base >=4.14 && <4.21, + bytestring, + cborg, + containers, + hashable, + nothunks, + ouroboros-network-api, + serialise, + time, + + ghc-options: + -Wall + -Wno-unticked-promoted-constructors + -Wcompat + -Wincomplete-uni-patterns + -Wincomplete-record-updates + -Wpartial-fields + -Widentities + -Wredundant-constraints + -Wunused-packages - ghc-options: -Wall - -Wno-unticked-promoted-constructors - -Wcompat - -Wincomplete-uni-patterns - -Wincomplete-record-updates - -Wpartial-fields - -Widentities - -Wredundant-constraints - -Wunused-packages if flag(asserts) - ghc-options: -fno-ignore-asserts + ghc-options: -fno-ignore-asserts diff --git a/ouroboros-network-protocols/ouroboros-network-protocols.cabal b/ouroboros-network-protocols/ouroboros-network-protocols.cabal index 07f2d015f18..34da18afc30 100644 --- a/ouroboros-network-protocols/ouroboros-network-protocols.cabal +++ b/ouroboros-network-protocols/ouroboros-network-protocols.cabal @@ -1,317 +1,324 @@ -cabal-version: 3.0 -name: ouroboros-network-protocols -version: 0.10.0.2 -synopsis: Ouroboros Network Protocols -description: Ouroboros Network Protocols. -license: Apache-2.0 -license-files: LICENSE - NOTICE -copyright: 2019-2023 Input Output Global Inc (IOG), 2023-2024 Intersect -author: Alexander Vieth, Marcin Szamotulski, Duncan Coutts -maintainer: marcin.szamotulski@iohk.io -category: Network -build-type: Simple -extra-doc-files: CHANGELOG.md +cabal-version: 3.0 +name: ouroboros-network-protocols +version: 0.10.0.2 +synopsis: Ouroboros Network Protocols +description: Ouroboros Network Protocols. +license: Apache-2.0 +license-files: + LICENSE + NOTICE + +copyright: 2019-2023 Input Output Global Inc (IOG), 2023-2024 Intersect +author: Alexander Vieth, Marcin Szamotulski, Duncan Coutts +maintainer: marcin.szamotulski@iohk.io +category: Network +build-type: Simple +extra-doc-files: CHANGELOG.md flag asserts description: Enable assertions - manual: False - default: False + manual: False + default: False flag cddl - Description: Enable CDDL based tests of the CBOR encoding - Manual: True + description: Enable CDDL based tests of the CBOR encoding + manual: True -- These tests need the cddl and the cbor-diag Ruby-package - Default: True + default: True source-repository head - type: git + type: git location: https://github.com/intersectmbo/ouroboros-network library - hs-source-dirs: src - + hs-source-dirs: src -- At this experiment/prototype stage everything is exposed. -- This has to be tidied up once the design becomes clear. exposed-modules: - Ouroboros.Network.Protocol.ChainSync.Client - Ouroboros.Network.Protocol.ChainSync.ClientPipelined - Ouroboros.Network.Protocol.ChainSync.Codec - Ouroboros.Network.Protocol.ChainSync.Server - Ouroboros.Network.Protocol.ChainSync.Type - Ouroboros.Network.Protocol.ChainSync.PipelineDecision - Ouroboros.Network.Protocol.BlockFetch.Type - Ouroboros.Network.Protocol.BlockFetch.Client - Ouroboros.Network.Protocol.BlockFetch.Server - Ouroboros.Network.Protocol.BlockFetch.Codec - Ouroboros.Network.Protocol.LocalStateQuery.Client - Ouroboros.Network.Protocol.LocalStateQuery.Codec - Ouroboros.Network.Protocol.LocalStateQuery.Server - Ouroboros.Network.Protocol.LocalStateQuery.Type - Ouroboros.Network.Protocol.LocalTxMonitor.Type - Ouroboros.Network.Protocol.LocalTxMonitor.Client - Ouroboros.Network.Protocol.LocalTxMonitor.Server - Ouroboros.Network.Protocol.LocalTxMonitor.Codec - Ouroboros.Network.Protocol.TxSubmission2.Type - Ouroboros.Network.Protocol.TxSubmission2.Codec - Ouroboros.Network.Protocol.TxSubmission2.Client - Ouroboros.Network.Protocol.TxSubmission2.Server - Ouroboros.Network.Protocol.LocalTxSubmission.Type - Ouroboros.Network.Protocol.LocalTxSubmission.Client - Ouroboros.Network.Protocol.LocalTxSubmission.Server - Ouroboros.Network.Protocol.LocalTxSubmission.Codec - Ouroboros.Network.Protocol.KeepAlive.Type - Ouroboros.Network.Protocol.KeepAlive.Client - Ouroboros.Network.Protocol.KeepAlive.Server - Ouroboros.Network.Protocol.KeepAlive.Codec - Ouroboros.Network.Protocol.PeerSharing.Type - Ouroboros.Network.Protocol.PeerSharing.Client - Ouroboros.Network.Protocol.PeerSharing.Server - Ouroboros.Network.Protocol.PeerSharing.Codec + Ouroboros.Network.Protocol.BlockFetch.Client + Ouroboros.Network.Protocol.BlockFetch.Codec + Ouroboros.Network.Protocol.BlockFetch.Server + Ouroboros.Network.Protocol.BlockFetch.Type + Ouroboros.Network.Protocol.ChainSync.Client + Ouroboros.Network.Protocol.ChainSync.ClientPipelined + Ouroboros.Network.Protocol.ChainSync.Codec + Ouroboros.Network.Protocol.ChainSync.PipelineDecision + Ouroboros.Network.Protocol.ChainSync.Server + Ouroboros.Network.Protocol.ChainSync.Type + Ouroboros.Network.Protocol.KeepAlive.Client + Ouroboros.Network.Protocol.KeepAlive.Codec + Ouroboros.Network.Protocol.KeepAlive.Server + Ouroboros.Network.Protocol.KeepAlive.Type + Ouroboros.Network.Protocol.LocalStateQuery.Client + Ouroboros.Network.Protocol.LocalStateQuery.Codec + Ouroboros.Network.Protocol.LocalStateQuery.Server + Ouroboros.Network.Protocol.LocalStateQuery.Type + Ouroboros.Network.Protocol.LocalTxMonitor.Client + Ouroboros.Network.Protocol.LocalTxMonitor.Codec + Ouroboros.Network.Protocol.LocalTxMonitor.Server + Ouroboros.Network.Protocol.LocalTxMonitor.Type + Ouroboros.Network.Protocol.LocalTxSubmission.Client + Ouroboros.Network.Protocol.LocalTxSubmission.Codec + Ouroboros.Network.Protocol.LocalTxSubmission.Server + Ouroboros.Network.Protocol.LocalTxSubmission.Type + Ouroboros.Network.Protocol.PeerSharing.Client + Ouroboros.Network.Protocol.PeerSharing.Codec + Ouroboros.Network.Protocol.PeerSharing.Server + Ouroboros.Network.Protocol.PeerSharing.Type + Ouroboros.Network.Protocol.TxSubmission2.Client + Ouroboros.Network.Protocol.TxSubmission2.Codec + Ouroboros.Network.Protocol.TxSubmission2.Server + Ouroboros.Network.Protocol.TxSubmission2.Type - default-language: Haskell2010 - default-extensions: ImportQualifiedPost - other-extensions: BangPatterns, - DataKinds, - EmptyCase, - ExistentialQuantification, - FlexibleContexts, - FlexibleInstances, - FunctionalDependencies, - GADTs, - GADTSyntax, - GeneralizedNewtypeDeriving, - MultiParamTypeClasses, - NamedFieldPuns, - OverloadedStrings, - PolyKinds, - RankNTypes, - RecordWildCards, - ScopedTypeVariables, - TemplateHaskell, - TupleSections, - TypeApplications, - TypeFamilies, - TypeInType + default-language: Haskell2010 + default-extensions: ImportQualifiedPost + other-extensions: + BangPatterns + DataKinds + EmptyCase + ExistentialQuantification + FlexibleContexts + FlexibleInstances + FunctionalDependencies + GADTSyntax + GADTs + GeneralizedNewtypeDeriving + MultiParamTypeClasses + NamedFieldPuns + OverloadedStrings + PolyKinds + RankNTypes + RecordWildCards + ScopedTypeVariables + TemplateHaskell + TupleSections + TypeApplications + TypeFamilies + TypeInType - build-depends: base >=4.14 && <4.21, - bytestring >=0.10 && <0.13, - cborg >=0.2.1 && <0.3, - deepseq, - quiet, - singletons, + build-depends: + base >=4.14 && <4.21, + bytestring >=0.10 && <0.13, + cborg >=0.2.1 && <0.3, + deepseq, + io-classes ^>=1.5.0, + nothunks, + ouroboros-network-api ^>=0.9.0, + quiet, + serialise, + si-timers, + singletons, + typed-protocols ^>=0.3, + typed-protocols-cborg ^>=0.3, + typed-protocols-stateful, + typed-protocols-stateful-cborg, - io-classes ^>=1.5.0, - nothunks, - si-timers, + ghc-options: + -Wall + -Wno-unticked-promoted-constructors + -Wcompat + -Wincomplete-uni-patterns + -Wincomplete-record-updates + -Wpartial-fields + -Widentities + -Wredundant-constraints + -Wunused-packages - ouroboros-network-api - ^>=0.9.0, - serialise, - typed-protocols ^>=0.3, - typed-protocols-cborg - ^>=0.3, - typed-protocols-stateful, - typed-protocols-stateful-cborg - - ghc-options: -Wall - -Wno-unticked-promoted-constructors - -Wcompat - -Wincomplete-uni-patterns - -Wincomplete-record-updates - -Wpartial-fields - -Widentities - -Wredundant-constraints - -Wunused-packages if flag(asserts) - ghc-options: -fno-ignore-asserts + ghc-options: -fno-ignore-asserts library testlib - visibility: public - hs-source-dirs: testlib - default-language: Haskell2010 - default-extensions: ImportQualifiedPost + visibility: public + hs-source-dirs: testlib + default-language: Haskell2010 + default-extensions: ImportQualifiedPost exposed-modules: - Test.Data.PipeliningDepth - Ouroboros.Network.Protocol.BlockFetch.Direct - Ouroboros.Network.Protocol.BlockFetch.Examples - Ouroboros.Network.Protocol.BlockFetch.Test - Ouroboros.Network.Protocol.BlockFetch.Codec.CDDL - Ouroboros.Network.Protocol.ChainSync.Direct - Ouroboros.Network.Protocol.ChainSync.DirectPipelined - Ouroboros.Network.Protocol.ChainSync.Examples - Ouroboros.Network.Protocol.ChainSync.ExamplesPipelined - Ouroboros.Network.Protocol.ChainSync.Test - Ouroboros.Network.Protocol.ChainSync.Codec.CDDL - Ouroboros.Network.Protocol.Handshake.Direct - Ouroboros.Network.Protocol.Handshake.Test - Ouroboros.Network.Protocol.LocalStateQuery.Direct - Ouroboros.Network.Protocol.LocalStateQuery.Examples - Ouroboros.Network.Protocol.LocalStateQuery.Test - Ouroboros.Network.Protocol.LocalStateQuery.Codec.CDDL - Ouroboros.Network.Protocol.LocalTxSubmission.Direct - Ouroboros.Network.Protocol.LocalTxSubmission.Examples - Ouroboros.Network.Protocol.LocalTxSubmission.Test - Ouroboros.Network.Protocol.LocalTxSubmission.Codec.CDDL - Ouroboros.Network.Protocol.LocalTxMonitor.Direct - Ouroboros.Network.Protocol.LocalTxMonitor.Examples - Ouroboros.Network.Protocol.LocalTxMonitor.Test - Ouroboros.Network.Protocol.LocalTxMonitor.Codec.CDDL - Ouroboros.Network.Protocol.TxSubmission2.Direct - Ouroboros.Network.Protocol.TxSubmission2.Test - Ouroboros.Network.Protocol.TxSubmission2.Examples - Ouroboros.Network.Protocol.TxSubmission2.Codec.CDDL - Ouroboros.Network.Protocol.KeepAlive.Direct - Ouroboros.Network.Protocol.KeepAlive.Examples - Ouroboros.Network.Protocol.KeepAlive.Test - Ouroboros.Network.Protocol.PeerSharing.Direct - Ouroboros.Network.Protocol.PeerSharing.Examples - Ouroboros.Network.Protocol.PeerSharing.Test - Ouroboros.Network.Protocol.PeerSharing.Codec.CDDL - - Test.Data.CDDL - Test.ChainGenerators - Test.ChainProducerState - Test.Ouroboros.Network.Testing.Utils - build-depends: base >=4.14 && <4.21, - bytestring, - cborg, - containers, - pipes, - QuickCheck, - quickcheck-instances, - serialise, - cardano-slotting:{testlib} ^>=0.2.0, - cardano-strict-containers, - tasty, - tasty-quickcheck, - text, - network, - deepseq, + Ouroboros.Network.Protocol.BlockFetch.Codec.CDDL + Ouroboros.Network.Protocol.BlockFetch.Direct + Ouroboros.Network.Protocol.BlockFetch.Examples + Ouroboros.Network.Protocol.BlockFetch.Test + Ouroboros.Network.Protocol.ChainSync.Codec.CDDL + Ouroboros.Network.Protocol.ChainSync.Direct + Ouroboros.Network.Protocol.ChainSync.DirectPipelined + Ouroboros.Network.Protocol.ChainSync.Examples + Ouroboros.Network.Protocol.ChainSync.ExamplesPipelined + Ouroboros.Network.Protocol.ChainSync.Test + Ouroboros.Network.Protocol.Handshake.Direct + Ouroboros.Network.Protocol.Handshake.Test + Ouroboros.Network.Protocol.KeepAlive.Direct + Ouroboros.Network.Protocol.KeepAlive.Examples + Ouroboros.Network.Protocol.KeepAlive.Test + Ouroboros.Network.Protocol.LocalStateQuery.Codec.CDDL + Ouroboros.Network.Protocol.LocalStateQuery.Direct + Ouroboros.Network.Protocol.LocalStateQuery.Examples + Ouroboros.Network.Protocol.LocalStateQuery.Test + Ouroboros.Network.Protocol.LocalTxMonitor.Codec.CDDL + Ouroboros.Network.Protocol.LocalTxMonitor.Direct + Ouroboros.Network.Protocol.LocalTxMonitor.Examples + Ouroboros.Network.Protocol.LocalTxMonitor.Test + Ouroboros.Network.Protocol.LocalTxSubmission.Codec.CDDL + Ouroboros.Network.Protocol.LocalTxSubmission.Direct + Ouroboros.Network.Protocol.LocalTxSubmission.Examples + Ouroboros.Network.Protocol.LocalTxSubmission.Test + Ouroboros.Network.Protocol.PeerSharing.Codec.CDDL + Ouroboros.Network.Protocol.PeerSharing.Direct + Ouroboros.Network.Protocol.PeerSharing.Examples + Ouroboros.Network.Protocol.PeerSharing.Test + Ouroboros.Network.Protocol.TxSubmission2.Codec.CDDL + Ouroboros.Network.Protocol.TxSubmission2.Direct + Ouroboros.Network.Protocol.TxSubmission2.Examples + Ouroboros.Network.Protocol.TxSubmission2.Test + Test.ChainGenerators + Test.ChainProducerState + Test.Data.CDDL + Test.Data.PipeliningDepth + Test.Ouroboros.Network.Testing.Utils - contra-tracer, + build-depends: + QuickCheck, + base >=4.14 && <4.21, + bytestring, + cardano-slotting:testlib ^>=0.2.0, + cardano-strict-containers, + cborg, + containers, + contra-tracer, + deepseq, + io-classes, + io-sim, + network, + network-mux, + ouroboros-network-api, + ouroboros-network-framework, + ouroboros-network-mock, + ouroboros-network-protocols, + pipes, + quickcheck-instances, + serialise, + si-timers, + strict-stm, + tasty, + tasty-quickcheck, + text, + typed-protocols, + typed-protocols-stateful, - io-classes, - io-sim, - network-mux, - ouroboros-network-api, - ouroboros-network-framework, - ouroboros-network-mock, - ouroboros-network-protocols, - si-timers, - strict-stm, - typed-protocols, - typed-protocols-stateful - - ghc-options: -Wall - -Wno-unticked-promoted-constructors - -Wunused-packages + ghc-options: + -Wall + -Wno-unticked-promoted-constructors + -Wunused-packages test-suite test - type: exitcode-stdio-1.0 - hs-source-dirs: test - main-is: Main.hs + type: exitcode-stdio-1.0 + hs-source-dirs: test + main-is: Main.hs -- TODO: these two tests should be moved to `ouroboros-network-mock` - other-modules: Test.AnchoredFragment - Test.Chain - default-language: Haskell2010 - default-extensions: ImportQualifiedPost - build-depends: base >=4.14 && <4.21, - QuickCheck ^>= 2.14, - -- ^ QuickCheck 2.15 has a - -- regression that makes - -- codec 3-splits tests take too - -- long and too much memory. - -- Possibly due to ByteString - -- generator changes. - tasty, - tasty-quickcheck, + other-modules: + Test.AnchoredFragment + Test.Chain - ouroboros-network-api, - ouroboros-network-mock, - ouroboros-network-protocols:testlib, - ouroboros-network-testing ^>= 0.7.0 + default-language: Haskell2010 + default-extensions: ImportQualifiedPost + build-depends: + -- ^ QuickCheck 2.15 has a + -- regression that makes + -- codec 3-splits tests take too + -- long and too much memory. + -- Possibly due to ByteString + -- generator changes. + QuickCheck ^>=2.14, + base >=4.14 && <4.21, + ouroboros-network-api, + ouroboros-network-mock, + ouroboros-network-protocols:testlib, + ouroboros-network-testing ^>=0.7.0, + tasty, + tasty-quickcheck, - ghc-options: -threaded - -Wall - -Wunused-packages - -rtsopts + ghc-options: + -threaded + -Wall + -Wunused-packages + -rtsopts test-suite cddl - type: exitcode-stdio-1.0 - hs-source-dirs: test-cddl - main-is: Main.hs + type: exitcode-stdio-1.0 + hs-source-dirs: test-cddl + main-is: Main.hs + if flag(cddl) buildable: True else buildable: False - default-language: Haskell2010 - default-extensions: ImportQualifiedPost - build-depends: base >=4.14 && <4.21, - bytestring, - cborg, - containers, - directory, - filepath, - mtl, - process-extras, - serialise, - text, - temporary, - network, - QuickCheck, - quickcheck-instances, - tasty, - tasty-hunit, - tasty-quickcheck, + default-language: Haskell2010 + default-extensions: ImportQualifiedPost + build-depends: + QuickCheck, + base >=4.14 && <4.21, + bytestring, + cborg, + containers, + directory, + filepath, + mtl, + network, + ouroboros-network-api, + ouroboros-network-framework, + ouroboros-network-mock, + ouroboros-network-protocols, + ouroboros-network-protocols:testlib, + process-extras, + quickcheck-instances, + serialise, + tasty, + tasty-hunit, + tasty-quickcheck, + temporary, + text, + typed-protocols, + typed-protocols-stateful, - typed-protocols, - typed-protocols-stateful, - ouroboros-network-api, - ouroboros-network-framework, - ouroboros-network-mock, - ouroboros-network-protocols, - ouroboros-network-protocols:testlib - - ghc-options: -threaded - -Wall - -Wno-unticked-promoted-constructors - -Wcompat - -Wunused-packages - -rtsopts - -with-rtsopts=-M400m + ghc-options: + -threaded + -Wall + -Wno-unticked-promoted-constructors + -Wcompat + -Wunused-packages + -rtsopts + -with-rtsopts=-M400m test-suite bench - type: exitcode-stdio-1.0 - default-extensions: ImportQualifiedPost - hs-source-dirs: bench-cddl - main-is: Main.hs - default-language: Haskell2010 - build-depends: base >=4.14 && <4.21, - bytestring, - cborg, - containers, - deepseq, - network, - - tasty-bench, + type: exitcode-stdio-1.0 + default-extensions: ImportQualifiedPost + hs-source-dirs: bench-cddl + main-is: Main.hs + default-language: Haskell2010 + build-depends: + base >=4.14 && <4.21, + bytestring, + cborg, + containers, + deepseq, + network, + ouroboros-network-api, + ouroboros-network-framework, + ouroboros-network-protocols, + ouroboros-network-protocols:testlib, + tasty-bench, + typed-protocols, + typed-protocols-stateful, - typed-protocols, - typed-protocols-stateful, - ouroboros-network-api, - ouroboros-network-framework, - ouroboros-network-protocols, - ouroboros-network-protocols:testlib + ghc-options: + -Wall + -Wno-unticked-promoted-constructors + -Wcompat + -Wunused-packages + -rtsopts + -with-rtsopts=-A32m + -with-rtsopts=-T - ghc-options: -Wall - -Wno-unticked-promoted-constructors - -Wcompat - -Wunused-packages - -rtsopts - -with-rtsopts=-A32m - -with-rtsopts=-T -- Important for comparing benchmarks results against a baseline run. -- Read: https://hackage.haskell.org/package/tasty-bench for details - if impl(ghc >= 8.6) + if impl(ghc >=8.6) ghc-options: -fproc-alignment=64 diff --git a/ouroboros-network-testing/ouroboros-network-testing.cabal b/ouroboros-network-testing/ouroboros-network-testing.cabal index 95e077782a8..d0787693197 100644 --- a/ouroboros-network-testing/ouroboros-network-testing.cabal +++ b/ouroboros-network-testing/ouroboros-network-testing.cabal @@ -1,119 +1,122 @@ -cabal-version: 3.0 +cabal-version: 3.0 +name: ouroboros-network-testing +version: 0.7.0.0 +synopsis: Common modules used for testing in ouroboros-network and ouroboros-consensus +description: Common modules used for testing in ouroboros-network and ouroboros-consensus. +license: Apache-2.0 +license-files: + LICENSE + NOTICE -name: ouroboros-network-testing -version: 0.7.0.0 -synopsis: Common modules used for testing in ouroboros-network and ouroboros-consensus -description: Common modules used for testing in ouroboros-network and ouroboros-consensus. -license: Apache-2.0 -license-files: LICENSE - NOTICE -copyright: 2019-2023 Input Output Global Inc (IOG), 2023-2024 Intersect -author: Alexander Vieth, Marcin Szamotulski, Duncan Coutts, Karl Knuttson -maintainer: marcin.szamotulski@iohk.io -category: Network -build-type: Simple -extra-doc-files: CHANGELOG.md +copyright: 2019-2023 Input Output Global Inc (IOG), 2023-2024 Intersect +author: Alexander Vieth, Marcin Szamotulski, Duncan Coutts, Karl Knuttson +maintainer: marcin.szamotulski@iohk.io +category: Network +build-type: Simple +extra-doc-files: CHANGELOG.md source-repository head - type: git + type: git location: https://github.com/intersectmbo/ouroboros-network flag nightly - Description: Enable nightly tests - Manual: False - Default: False + description: Enable nightly tests + manual: False + default: False library - hs-source-dirs: src - + hs-source-dirs: src -- At this experiment/prototype stage everything is exposed. -- This has to be tidied up once the design becomes clear. exposed-modules: - Ouroboros.Network.Testing.Serialise - Ouroboros.Network.Testing.QuickCheck - Ouroboros.Network.Testing.Utils - Ouroboros.Network.Testing.Data.Signal - Ouroboros.Network.Testing.Data.Script - Ouroboros.Network.Testing.Data.AbsBearerInfo - default-language: Haskell2010 - default-extensions: ImportQualifiedPost - other-extensions: BangPatterns, - DataKinds, - EmptyCase, - ExistentialQuantification, - FlexibleContexts, - FlexibleInstances, - FunctionalDependencies, - GADTs, - GADTSyntax, - GeneralizedNewtypeDeriving, - MultiParamTypeClasses, - NamedFieldPuns, - OverloadedStrings, - PolyKinds, - RankNTypes, - RecordWildCards, - ScopedTypeVariables, - TemplateHaskell, - TupleSections, - TypeApplications, - TypeFamilies, - TypeInType - build-depends: base >=4.14 && <4.21, - containers, - contra-tracer, - deque ^>=0.4, - io-classes ^>=1.5.0, - io-sim, - pretty-simple, - strict-stm, - psqueues >=0.2.3 && <0.3, - si-timers, - tasty, - tasty-expected-failure, + Ouroboros.Network.Testing.Data.AbsBearerInfo + Ouroboros.Network.Testing.Data.Script + Ouroboros.Network.Testing.Data.Signal + Ouroboros.Network.Testing.QuickCheck + Ouroboros.Network.Testing.Serialise + Ouroboros.Network.Testing.Utils + + default-language: Haskell2010 + default-extensions: ImportQualifiedPost + other-extensions: + BangPatterns + DataKinds + EmptyCase + ExistentialQuantification + FlexibleContexts + FlexibleInstances + FunctionalDependencies + GADTSyntax + GADTs + GeneralizedNewtypeDeriving + MultiParamTypeClasses + NamedFieldPuns + OverloadedStrings + PolyKinds + RankNTypes + RecordWildCards + ScopedTypeVariables + TemplateHaskell + TupleSections + TypeApplications + TypeFamilies + TypeInType - cborg >=0.2.1 && <0.3, - serialise >=0.2 && <0.3, - network-mux, - QuickCheck + build-depends: + QuickCheck, + base >=4.14 && <4.21, + cborg >=0.2.1 && <0.3, + containers, + contra-tracer, + deque ^>=0.4, + io-classes ^>=1.5.0, + io-sim, + network-mux, + pretty-simple, + psqueues >=0.2.3 && <0.3, + serialise >=0.2 && <0.3, + si-timers, + strict-stm, + tasty, + tasty-expected-failure, - ghc-options: -Wall - -Wno-unticked-promoted-constructors - -fno-ignore-asserts - -Wcompat - -Wincomplete-uni-patterns - -Wincomplete-record-updates - -Wpartial-fields - -Widentities - -Wredundant-constraints + ghc-options: + -Wall + -Wno-unticked-promoted-constructors + -fno-ignore-asserts + -Wcompat + -Wincomplete-uni-patterns + -Wincomplete-record-updates + -Wpartial-fields + -Widentities + -Wredundant-constraints if flag(nightly) - cpp-options: -DNIGHTLY + cpp-options: -DNIGHTLY test-suite test - type: exitcode-stdio-1.0 - main-is: Main.hs - hs-source-dirs: test - other-modules: Test.Ouroboros.Network.Testing.Data.AbsBearerInfo - - build-depends: base >=4.14 && <4.21 - - , QuickCheck - , tasty - , tasty-quickcheck - - , ouroboros-network-testing + type: exitcode-stdio-1.0 + main-is: Main.hs + hs-source-dirs: test + other-modules: Test.Ouroboros.Network.Testing.Data.AbsBearerInfo + build-depends: + QuickCheck, + base >=4.14 && <4.21, + ouroboros-network-testing, + tasty, + tasty-quickcheck, - default-language: Haskell2010 - default-extensions: ImportQualifiedPost - ghc-options: -rtsopts - -threaded - -Wall - -Wcompat - -Wincomplete-uni-patterns - -Wincomplete-record-updates - -Wpartial-fields - -Widentities - -Wredundant-constraints - -Wno-unticked-promoted-constructors - -Wunused-packages + default-language: Haskell2010 + default-extensions: ImportQualifiedPost + ghc-options: + -rtsopts + -threaded + -Wall + -Wcompat + -Wincomplete-uni-patterns + -Wincomplete-record-updates + -Wpartial-fields + -Widentities + -Wredundant-constraints + -Wno-unticked-promoted-constructors + -Wunused-packages diff --git a/ouroboros-network/ouroboros-network.cabal b/ouroboros-network/ouroboros-network.cabal index 3f3fb71def2..6d097c65629 100644 --- a/ouroboros-network/ouroboros-network.cabal +++ b/ouroboros-network/ouroboros-network.cabal @@ -1,374 +1,397 @@ -cabal-version: 3.0 -name: ouroboros-network -version: 0.17.1.1 -synopsis: A networking layer for the Ouroboros blockchain protocol -description: A networking layer for the Ouroboros blockchain protocol. -license: Apache-2.0 -license-files: LICENSE - NOTICE -copyright: 2019-2023 Input Output Global Inc (IOG), 2023-2024 Intersect -author: Alexander Vieth, Marcin Szamotulski, Duncan Coutts -maintainer: marcin.szamotulski@iohk.io -category: Network -build-type: Simple -extra-doc-files: CHANGELOG.md +cabal-version: 3.0 +name: ouroboros-network +version: 0.17.1.1 +synopsis: A networking layer for the Ouroboros blockchain protocol +description: A networking layer for the Ouroboros blockchain protocol. +license: Apache-2.0 +license-files: + LICENSE + NOTICE + +copyright: 2019-2023 Input Output Global Inc (IOG), 2023-2024 Intersect +author: Alexander Vieth, Marcin Szamotulski, Duncan Coutts +maintainer: marcin.szamotulski@iohk.io +category: Network +build-type: Simple +extra-doc-files: CHANGELOG.md flag asserts description: Enable assertions - manual: False - default: False + manual: False + default: False flag txsubmission-delay description: Delay initial request for transactions from outbound/client peer - manual: True - default: True + manual: True + default: True source-repository head - type: git + type: git location: https://github.com/intersectmbo/ouroboros-network common ghc-options - ghc-options: -Wall - -Wno-unticked-promoted-constructors - -Wcompat - -Wincomplete-uni-patterns - -Wincomplete-record-updates - -Wpartial-fields - -Widentities - -Wredundant-constraints - -Wunused-packages + ghc-options: + -Wall + -Wno-unticked-promoted-constructors + -Wcompat + -Wincomplete-uni-patterns + -Wincomplete-record-updates + -Wpartial-fields + -Widentities + -Wredundant-constraints + -Wunused-packages -- in tests librararies redundant constraints are sometimes useful (e.g. -- by default truned off debug tracing might require extra constraints like -- `Show` or `MonadSay`). common ghc-options-tests - import: ghc-options - ghc-options: -Wno-redundant-constraints + import: ghc-options + ghc-options: -Wno-redundant-constraints library - import: ghc-options - hs-source-dirs: src - + import: ghc-options + hs-source-dirs: src -- At this experiment/prototype stage everything is exposed. -- This has to be tidied up once the design becomes clear. exposed-modules: - Control.Concurrent.Class.MonadSTM.Strict.TMergeVar - Ouroboros.Network.BlockFetch - Ouroboros.Network.BlockFetch.Client - Ouroboros.Network.BlockFetch.ClientRegistry - Ouroboros.Network.BlockFetch.ClientState - Ouroboros.Network.BlockFetch.Decision - Ouroboros.Network.BlockFetch.DeltaQ - Ouroboros.Network.BlockFetch.State - Ouroboros.Network.DeltaQ - Ouroboros.Network.Diffusion - Ouroboros.Network.Diffusion.Configuration - Ouroboros.Network.Diffusion.P2P - Ouroboros.Network.Diffusion.NonP2P - Ouroboros.Network.Diffusion.Policies - Ouroboros.Network.ExitPolicy - Ouroboros.Network.KeepAlive - Ouroboros.Network.NodeToNode - Ouroboros.Network.NodeToClient - Ouroboros.Network.Tracers - Ouroboros.Network.PeerSelection.Types - Ouroboros.Network.PeerSelection.LedgerPeers - Ouroboros.Network.PeerSelection.PublicRootPeers - Ouroboros.Network.PeerSelection.PeerMetric - Ouroboros.Network.PeerSelection.PeerSelectionActions - Ouroboros.Network.PeerSelection.PeerStateActions - Ouroboros.Network.PeerSelection.Governor - Ouroboros.Network.PeerSelection.State.EstablishedPeers - Ouroboros.Network.PeerSelection.State.KnownPeers - Ouroboros.Network.PeerSelection.State.LocalRootPeers - Ouroboros.Network.PeerSelection.RootPeersDNS - Ouroboros.Network.PeerSelection.RootPeersDNS.DNSActions - Ouroboros.Network.PeerSelection.RootPeersDNS.DNSSemaphore - Ouroboros.Network.PeerSelection.RootPeersDNS.LocalRootPeers - Ouroboros.Network.PeerSelection.RootPeersDNS.PublicRootPeers - Ouroboros.Network.PeerSharing - Ouroboros.Network.TxSubmission.Inbound - Ouroboros.Network.TxSubmission.Mempool.Reader - Ouroboros.Network.TxSubmission.Outbound - other-modules: Ouroboros.Network.Diffusion.Common - Ouroboros.Network.PeerSelection.Governor.ActivePeers - Ouroboros.Network.PeerSelection.Governor.EstablishedPeers - Ouroboros.Network.PeerSelection.Governor.KnownPeers - Ouroboros.Network.PeerSelection.Governor.BigLedgerPeers - Ouroboros.Network.PeerSelection.Governor.Monitor - Ouroboros.Network.PeerSelection.Governor.RootPeers - Ouroboros.Network.PeerSelection.Governor.Types - Ouroboros.Network.PeerSelection.LedgerPeers.Common - Ouroboros.Network.PeerSelection.RootPeersDNS.LedgerPeers - Ouroboros.Network.PeerSelection.Churn - Ouroboros.Network.Diffusion.Utils - reexported-modules: Ouroboros.Network.AnchoredFragment, - Ouroboros.Network.AnchoredSeq, - Ouroboros.Network.Magic, - Ouroboros.Network.NodeToClient.Version, - Ouroboros.Network.NodeToNode.Version + Control.Concurrent.Class.MonadSTM.Strict.TMergeVar + Ouroboros.Network.BlockFetch + Ouroboros.Network.BlockFetch.Client + Ouroboros.Network.BlockFetch.ClientRegistry + Ouroboros.Network.BlockFetch.ClientState + Ouroboros.Network.BlockFetch.Decision + Ouroboros.Network.BlockFetch.DeltaQ + Ouroboros.Network.BlockFetch.State + Ouroboros.Network.DeltaQ + Ouroboros.Network.Diffusion + Ouroboros.Network.Diffusion.Configuration + Ouroboros.Network.Diffusion.NonP2P + Ouroboros.Network.Diffusion.P2P + Ouroboros.Network.Diffusion.Policies + Ouroboros.Network.ExitPolicy + Ouroboros.Network.KeepAlive + Ouroboros.Network.NodeToClient + Ouroboros.Network.NodeToNode + Ouroboros.Network.PeerSelection.Governor + Ouroboros.Network.PeerSelection.LedgerPeers + Ouroboros.Network.PeerSelection.PeerMetric + Ouroboros.Network.PeerSelection.PeerSelectionActions + Ouroboros.Network.PeerSelection.PeerStateActions + Ouroboros.Network.PeerSelection.PublicRootPeers + Ouroboros.Network.PeerSelection.RootPeersDNS + Ouroboros.Network.PeerSelection.RootPeersDNS.DNSActions + Ouroboros.Network.PeerSelection.RootPeersDNS.DNSSemaphore + Ouroboros.Network.PeerSelection.RootPeersDNS.LocalRootPeers + Ouroboros.Network.PeerSelection.RootPeersDNS.PublicRootPeers + Ouroboros.Network.PeerSelection.State.EstablishedPeers + Ouroboros.Network.PeerSelection.State.KnownPeers + Ouroboros.Network.PeerSelection.State.LocalRootPeers + Ouroboros.Network.PeerSelection.Types + Ouroboros.Network.PeerSharing + Ouroboros.Network.Tracers + Ouroboros.Network.TxSubmission.Inbound + Ouroboros.Network.TxSubmission.Mempool.Reader + Ouroboros.Network.TxSubmission.Outbound + + other-modules: + Ouroboros.Network.Diffusion.Common + Ouroboros.Network.Diffusion.Utils + Ouroboros.Network.PeerSelection.Churn + Ouroboros.Network.PeerSelection.Governor.ActivePeers + Ouroboros.Network.PeerSelection.Governor.BigLedgerPeers + Ouroboros.Network.PeerSelection.Governor.EstablishedPeers + Ouroboros.Network.PeerSelection.Governor.KnownPeers + Ouroboros.Network.PeerSelection.Governor.Monitor + Ouroboros.Network.PeerSelection.Governor.RootPeers + Ouroboros.Network.PeerSelection.Governor.Types + Ouroboros.Network.PeerSelection.LedgerPeers.Common + Ouroboros.Network.PeerSelection.RootPeersDNS.LedgerPeers - default-language: Haskell2010 - default-extensions: ImportQualifiedPost - other-extensions: BangPatterns, - DataKinds, - EmptyCase, - ExistentialQuantification, - FlexibleContexts, - FlexibleInstances, - FunctionalDependencies, - GADTs, - GADTSyntax, - GeneralizedNewtypeDeriving, - MultiParamTypeClasses, - NamedFieldPuns, - OverloadedStrings, - PolyKinds, - RankNTypes, - RecordWildCards, - ScopedTypeVariables, - TemplateHaskell, - TupleSections, - TypeApplications, - TypeFamilies, - TypeInType - build-depends: base >=4.14 && <4.21, - async >=2.2 && <2.3, - bytestring >=0.10 && <0.13, - cborg >=0.2.1 && <0.3, - containers, - deepseq, - dns, - hashable, - iproute, - mtl, - network ^>=3.1.4, - nothunks, - psqueues >=0.2.3 && <0.3, - random, + reexported-modules: + Ouroboros.Network.AnchoredFragment, + Ouroboros.Network.AnchoredSeq, + Ouroboros.Network.Magic, + Ouroboros.Network.NodeToClient.Version, + Ouroboros.Network.NodeToNode.Version, - cardano-prelude, - cardano-slotting, - cardano-strict-containers, - contra-tracer, - monoidal-synchronisation, - strict-checked-vars ^>= 0.2, + default-language: Haskell2010 + default-extensions: ImportQualifiedPost + other-extensions: + BangPatterns + DataKinds + EmptyCase + ExistentialQuantification + FlexibleContexts + FlexibleInstances + FunctionalDependencies + GADTSyntax + GADTs + GeneralizedNewtypeDeriving + MultiParamTypeClasses + NamedFieldPuns + OverloadedStrings + PolyKinds + RankNTypes + RecordWildCards + ScopedTypeVariables + TemplateHaskell + TupleSections + TypeApplications + TypeFamilies + TypeInType + + build-depends: + async >=2.2 && <2.3, + base >=4.14 && <4.21, + bytestring >=0.10 && <0.13, + cardano-prelude, + cardano-slotting, + cardano-strict-containers, + cborg >=0.2.1 && <0.3, + containers, + contra-tracer, + deepseq, + dns, + hashable, + io-classes ^>=1.5.0, + io-classes-mtl ^>=0.1, + iproute, + monoidal-synchronisation, + mtl, + network ^>=3.1.4, + network-mux, + nothunks, + ouroboros-network-api ^>=0.9.0, + ouroboros-network-framework ^>=0.13.2.2, + ouroboros-network-protocols ^>=0.10, + psqueues >=0.2.3 && <0.3, + random, + si-timers, + strict-checked-vars ^>=0.2, + strict-stm, + typed-protocols ^>=0.3, + typed-protocols-stateful, - io-classes ^>=1.5.0, - io-classes-mtl ^>=0.1, - network-mux, - si-timers, - ouroboros-network-api ^>=0.9.0, - ouroboros-network-framework ^>=0.13.2.2, - ouroboros-network-protocols ^>=0.10, - strict-stm, - typed-protocols ^>=0.3, - typed-protocols-stateful if !os(windows) - build-depends: directory, - unix + build-depends: + directory, + unix, + if flag(asserts) - ghc-options: -fno-ignore-asserts + ghc-options: -fno-ignore-asserts if flag(txsubmission-delay) - cpp-options: -DTXSUBMISSION_DELAY - + cpp-options: -DTXSUBMISSION_DELAY -- Simulation Test Library library sim-tests-lib - import: ghc-options-tests - default-language: Haskell2010 - default-extensions: ImportQualifiedPost - visibility: public - hs-source-dirs: sim-tests-lib - build-depends: base >=4.14 && <4.21, - bytestring, - QuickCheck, - quickcheck-monoids, - aeson, - array, - cardano-binary, - cborg, - containers, - deepseq, - dns, - hashable, - iproute, - mtl, - network, - pipes, - pretty-simple, - psqueues, - random, - serialise, - tasty, - tasty-hunit, - tasty-quickcheck, - text, - time, + import: ghc-options-tests + default-language: Haskell2010 + default-extensions: ImportQualifiedPost + visibility: public + hs-source-dirs: sim-tests-lib + build-depends: + QuickCheck, + aeson, + array, + base >=4.14 && <4.21, + bytestring, + cardano-binary, + cardano-prelude, + cardano-slotting, + cborg, + containers, + contra-tracer, + deepseq, + dns, + hashable, + io-classes, + io-sim, + iproute, + monoidal-synchronisation, + mtl, + network, + network-mux, + nothunks, + ouroboros-network, + ouroboros-network-api, + ouroboros-network-framework, + ouroboros-network-framework:testlib, + ouroboros-network-mock, + ouroboros-network-protocols, + ouroboros-network-protocols:testlib, + ouroboros-network-testing ^>=0.7.0, + pipes, + pretty-simple, + psqueues, + quickcheck-monoids, + random, + serialise, + si-timers, + strict-stm, + tasty, + tasty-hunit, + tasty-quickcheck, + text, + time, + typed-protocols, + typed-protocols-examples, - cardano-prelude, - cardano-slotting, - contra-tracer, - nothunks, - - io-classes, - io-sim, - monoidal-synchronisation, - network-mux, - ouroboros-network, - ouroboros-network-api, - ouroboros-network-framework, - ouroboros-network-mock, - ouroboros-network-protocols, - ouroboros-network-protocols:testlib, - ouroboros-network-framework:testlib, - ouroboros-network-testing ^>= 0.7.0, - si-timers, - strict-stm, - typed-protocols, - typed-protocols-examples, - exposed-modules: Ouroboros.Network.BlockFetch.Examples - Ouroboros.Network.MockNode - Test.Ouroboros.Network.BlockFetch - Test.Ouroboros.Network.Diffusion.Node - Test.Ouroboros.Network.Diffusion.Node.ChainDB - Test.Ouroboros.Network.Diffusion.Node.MiniProtocols - Test.Ouroboros.Network.Diffusion.Node.NodeKernel - Test.Ouroboros.Network.Diffusion.Policies - Test.Ouroboros.Network.KeepAlive - Test.Ouroboros.Network.LedgerPeers - Test.Ouroboros.Network.MockNode - Test.Ouroboros.Network.Mux - Test.Ouroboros.Network.NodeToClient.Version - Test.Ouroboros.Network.NodeToNode.Version - Test.Ouroboros.Network.Orphans - Test.Ouroboros.Network.PeerSelection - Test.Ouroboros.Network.PeerSelection.Instances - Test.Ouroboros.Network.PeerSelection.Json - Test.Ouroboros.Network.PeerSelection.KnownPeers - Test.Ouroboros.Network.PeerSelection.LocalRootPeers - Test.Ouroboros.Network.PeerSelection.MockEnvironment - Test.Ouroboros.Network.PeerSelection.PeerGraph - Test.Ouroboros.Network.PeerSelection.PeerMetric - Test.Ouroboros.Network.PeerSelection.RootPeersDNS - Test.Ouroboros.Network.PeerSelection.PublicRootPeers - Test.Ouroboros.Network.PeerState - Test.Ouroboros.Network.Testnet - Test.Ouroboros.Network.Testnet.Simulation.Node - Test.Ouroboros.Network.TxSubmission - Test.Ouroboros.Network.Version + exposed-modules: + Ouroboros.Network.BlockFetch.Examples + Ouroboros.Network.MockNode + Test.Ouroboros.Network.BlockFetch + Test.Ouroboros.Network.Diffusion.Node + Test.Ouroboros.Network.Diffusion.Node.ChainDB + Test.Ouroboros.Network.Diffusion.Node.MiniProtocols + Test.Ouroboros.Network.Diffusion.Node.NodeKernel + Test.Ouroboros.Network.Diffusion.Policies + Test.Ouroboros.Network.KeepAlive + Test.Ouroboros.Network.LedgerPeers + Test.Ouroboros.Network.MockNode + Test.Ouroboros.Network.Mux + Test.Ouroboros.Network.NodeToClient.Version + Test.Ouroboros.Network.NodeToNode.Version + Test.Ouroboros.Network.Orphans + Test.Ouroboros.Network.PeerSelection + Test.Ouroboros.Network.PeerSelection.Instances + Test.Ouroboros.Network.PeerSelection.Json + Test.Ouroboros.Network.PeerSelection.KnownPeers + Test.Ouroboros.Network.PeerSelection.LocalRootPeers + Test.Ouroboros.Network.PeerSelection.MockEnvironment + Test.Ouroboros.Network.PeerSelection.PeerGraph + Test.Ouroboros.Network.PeerSelection.PeerMetric + Test.Ouroboros.Network.PeerSelection.PublicRootPeers + Test.Ouroboros.Network.PeerSelection.RootPeersDNS + Test.Ouroboros.Network.PeerState + Test.Ouroboros.Network.Testnet + Test.Ouroboros.Network.Testnet.Simulation.Node + Test.Ouroboros.Network.TxSubmission + Test.Ouroboros.Network.Version -- Simulation tests, and IO tests which don't require native system calls. -- (i.e. they don't require system call API provided by `Win32-network` or -- `network` dependency). test-suite sim-tests test-suite sim-tests - import: ghc-options-tests - default-language: Haskell2010 - default-extensions: ImportQualifiedPost - type: exitcode-stdio-1.0 - hs-source-dirs: sim-tests - main-is: Main.hs - build-depends: base >=4.14 && <4.21, - tasty, - with-utf8, + import: ghc-options-tests + default-language: Haskell2010 + default-extensions: ImportQualifiedPost + type: exitcode-stdio-1.0 + hs-source-dirs: sim-tests + main-is: Main.hs + build-depends: + base >=4.14 && <4.21, + ouroboros-network:sim-tests-lib, + ouroboros-network-protocols:testlib, + tasty, + with-utf8, - ouroboros-network-protocols:testlib, - ouroboros-network:sim-tests-lib - ghc-options: -fno-ignore-asserts - -threaded - -rtsopts - +RTS -T -RTS + ghc-options: + -fno-ignore-asserts + -threaded + -rtsopts + +RTS + -T + -RTS -- Tests which require system calls provided by `Win32-network` or `network` -- library. These tests are compiled natively & run on all supported -- platforms: x86_64-w64-mingw32 (Windows), x86_64-linux, x86-64-darwin and -- aarch64-darwin. test-suite io-tests - import: ghc-options-tests - type: exitcode-stdio-1.0 - hs-source-dirs: io-tests - main-is: Main.hs - other-modules: Test.Ouroboros.Network.Pipe - Test.Ouroboros.Network.Socket - default-language: Haskell2010 - default-extensions: ImportQualifiedPost - build-depends: base >=4.14 && <4.21, - bytestring, - QuickCheck, - network, - serialise, - tasty, - tasty-quickcheck, + import: ghc-options-tests + type: exitcode-stdio-1.0 + hs-source-dirs: io-tests + main-is: Main.hs + other-modules: + Test.Ouroboros.Network.Pipe + Test.Ouroboros.Network.Socket - contra-tracer, + default-language: Haskell2010 + default-extensions: ImportQualifiedPost + build-depends: + QuickCheck, + base >=4.14 && <4.21, + bytestring, + contra-tracer, + io-classes, + network, + network-mux, + ouroboros-network, + ouroboros-network-api, + ouroboros-network-framework, + ouroboros-network-mock, + ouroboros-network-protocols, + ouroboros-network-protocols:testlib, + ouroboros-network-testing ^>=0.7.0.0, + serialise, + si-timers, + strict-stm, + tasty, + tasty-quickcheck, + with-utf8, - io-classes, - network-mux, - ouroboros-network, - ouroboros-network-api, - ouroboros-network-framework, - ouroboros-network-mock, - ouroboros-network-protocols, - ouroboros-network-protocols:testlib, - ouroboros-network-testing ^>= 0.7.0.0, - si-timers, - strict-stm, - with-utf8, if os(windows) - build-depends: Win32-network <0.3.0.0, - Win32 >= 2.5.4.1 && <3.0 + build-depends: + Win32 >=2.5.4.1 && <3.0, + Win32-network <0.3.0.0, else - build-depends: process + build-depends: process - ghc-options: -threaded - -rtsopts - +RTS -T -RTS + ghc-options: + -threaded + -rtsopts + +RTS + -T + -RTS executable demo-chain-sync - import: ghc-options - hs-source-dirs: demo - main-is: chain-sync.hs - build-depends: base >=4.14 && <4.21, - async, - bytestring, - containers, - directory, - infinite-list, - optparse-applicative, - random, - serialise, - - contra-tracer, + import: ghc-options + hs-source-dirs: demo + main-is: chain-sync.hs + build-depends: + async, + base >=4.14 && <4.21, + bytestring, + containers, + contra-tracer, + directory, + infinite-list, + optparse-applicative, + ouroboros-network, + ouroboros-network-api, + ouroboros-network-framework, + ouroboros-network-mock, + ouroboros-network-protocols, + random, + serialise, + strict-stm, + typed-protocols, - typed-protocols, - strict-stm, - ouroboros-network-api, - ouroboros-network-framework, - ouroboros-network-mock, - ouroboros-network-protocols, - ouroboros-network - - default-language: Haskell2010 - default-extensions: ImportQualifiedPost - ghc-options: -threaded - -rtsopts + default-language: Haskell2010 + default-extensions: ImportQualifiedPost + ghc-options: + -threaded + -rtsopts benchmark sim-benchmarks - import: ghc-options-tests - default-language: Haskell2010 - default-extensions: ImportQualifiedPost - type: exitcode-stdio-1.0 - hs-source-dirs: bench - main-is: Main.hs - build-depends: base, - tasty-bench >=0.3.5, - - ouroboros-network:sim-tests-lib + import: ghc-options-tests + default-language: Haskell2010 + default-extensions: ImportQualifiedPost + type: exitcode-stdio-1.0 + hs-source-dirs: bench + main-is: Main.hs + build-depends: + base, + ouroboros-network:sim-tests-lib, + tasty-bench >=0.3.5, - ghc-options: -fno-ignore-asserts - -with-rtsopts=-A32m - +RTS -T -RTS + ghc-options: + -fno-ignore-asserts + -with-rtsopts=-A32m + +RTS + -T + -RTS -- We use this option to avoid skewed results due to changes in cache-line -- alignment. See diff --git a/quickcheck-monoids/quickcheck-monoids.cabal b/quickcheck-monoids/quickcheck-monoids.cabal index 38a68e5fd2b..4bb94f471a7 100644 --- a/quickcheck-monoids/quickcheck-monoids.cabal +++ b/quickcheck-monoids/quickcheck-monoids.cabal @@ -1,50 +1,57 @@ -cabal-version: 3.0 -name: quickcheck-monoids -version: 0.1.0.1 -synopsis: QuickCheck monoids -description: All and Any monoids for `Testable` instances based on `.&&.` and `.||.`. -license: Apache-2.0 -license-files: LICENSE - NOTICE -author: Marcin Szamotulski -maintainer: coot@coot.me -category: Testing -copyright: 2024 Input Output Global Inc (IOG) -build-type: Simple -extra-doc-files: CHANGELOG.md +cabal-version: 3.0 +name: quickcheck-monoids +version: 0.1.0.1 +synopsis: QuickCheck monoids +description: All and Any monoids for `Testable` instances based on `.&&.` and `.||.`. +license: Apache-2.0 +license-files: + LICENSE + NOTICE + +author: Marcin Szamotulski +maintainer: coot@coot.me +category: Testing +copyright: 2024 Input Output Global Inc (IOG) +build-type: Simple +extra-doc-files: CHANGELOG.md extra-source-files: README.md common warnings - ghc-options: -Wall + ghc-options: -Wall library - import: warnings - exposed-modules: Test.QuickCheck.Monoids - build-depends: base < 4.21, - QuickCheck - hs-source-dirs: src - default-language: Haskell2010 - ghc-options: -Wall - -Wno-unticked-promoted-constructors - -Wcompat - -Wincomplete-uni-patterns - -Wincomplete-record-updates - -Wpartial-fields - -Widentities - -Wredundant-constraints - -Wunused-packages + import: warnings + exposed-modules: Test.QuickCheck.Monoids + build-depends: + QuickCheck, + base <4.21, + + hs-source-dirs: src + default-language: Haskell2010 + ghc-options: + -Wall + -Wno-unticked-promoted-constructors + -Wcompat + -Wincomplete-uni-patterns + -Wincomplete-record-updates + -Wpartial-fields + -Widentities + -Wredundant-constraints + -Wunused-packages test-suite quickcheck-monoids-test - import: warnings - default-language: Haskell2010 - type: exitcode-stdio-1.0 - hs-source-dirs: test - main-is: Main.hs - build-depends: - base, - QuickCheck, - quickcheck-monoids, - tasty, - tasty-quickcheck, - ghc-options: -Wall - -rtsopts + import: warnings + default-language: Haskell2010 + type: exitcode-stdio-1.0 + hs-source-dirs: test + main-is: Main.hs + build-depends: + QuickCheck, + base, + quickcheck-monoids, + tasty, + tasty-quickcheck, + + ghc-options: + -Wall + -rtsopts From da94e5d1c18dd5a6a67a1342097901af407e514a Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Sat, 28 Sep 2024 17:09:40 +0200 Subject: [PATCH 09/18] GHA: removed check-git-dependencies We no longer use `srp` for dependency management, thus the script is no longer needed. --- .github/workflows/checks.yml | 12 ----- scripts/ci/check-git-dependencies.sh | 77 ---------------------------- 2 files changed, 89 deletions(-) delete mode 100755 scripts/ci/check-git-dependencies.sh diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 1ca7525cab1..5bb6c1ff20b 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -9,18 +9,6 @@ on: merge_group: jobs: - check-git-dependencies: - name: Check git dependencies - runs-on: ubuntu-latest - defaults: - run: - shell: bash - - steps: - - uses: actions/checkout@v4 - - name: Check Dependencies - run: ./scripts/ci/check-git-dependencies.sh - check-changelogs: name: Check changelogs runs-on: ubuntu-latest diff --git a/scripts/ci/check-git-dependencies.sh b/scripts/ci/check-git-dependencies.sh deleted file mode 100755 index 967a5b6f1a8..00000000000 --- a/scripts/ci/check-git-dependencies.sh +++ /dev/null @@ -1,77 +0,0 @@ -#!/usr/bin/env bash - -set -e - -case "$(uname -s)" in - Darwin) GREP=ggrep ;; - *) GREP=grep ;; -esac - - -RED='\033[0;31m' -YELLOW='\033[0;33m' -NC='\033[0m' # No Color - -mkdir -p tmp - -rm -rf tmp/dep-repo-result - -# Convert source-repository-package stanzas to lines 'location: $url tag: $hash' -cat cabal.project \ - | "$GREP" -v -E -e '^ *--' \ - | "$GREP" -E -w -e '^source-repository-package' -e '^ *location:' -e '^ *tag:' \ - | tr '\n\r' ' ' \ - | sed 's/source-repository-package/\n/g' \ - > tmp/repositories.txt - -basedir="$(pwd)" - -# Check each repository -cat tmp/repositories.txt | while read -r line; do - # re-read the line into an array of words - read -r -a words <<< "$line" - - # skip whitespace-only lines - [ "${#words[@]}" -eq 0 ] && continue - - # parse the line as "location: $url tag: $hash" - [ "${#words[@]}" -eq 4 ] && [ "${words[0]}" = "location:" ] && [ "${words[2]}" = "tag:" ] \ - || { echo "Could not parse as '^ *location: +\$url +tag: +\$hash *$': $line" - false - } - url="${words[1]}" - hash="${words[3]}" - - rm -f tmp/tmp-dep-repo-result - rm -rf tmp/dep-repo - echo "Checking $url" - - # clone, but don't download any files (ie no trees, so no blobs either) - git clone --filter=tree:0 --no-checkout "$url" tmp/dep-repo - ( cd tmp/dep-repo - - { git branch -r --contains "$hash" - git tag --contains "$hash" - } \ - | "$GREP" -q -E -w \ - -e '^ *origin/master' \ - -e '^ *origin/develop' \ - -e '^ *origin/main' \ - -e '^ *origin/[^ ]*release' \ - -e '*v[0-9]+' \ - || { echo "Commit $hash from $url is not on the main branch or any release branches" \ - | tee -a "$basedir/tmp/dep-repo-result" - false - } - ) - - rm -rf tmp/dep-repo -done - -if [ -s tmp/dep-repo-result ]; then - printf "${RED}Commits not on the main branch or any release branches detected in dependencies${NC}\n" - printf "${YELLOW}" - cat tmp/dep-repo-result - printf "${NC}" - exit 1 -fi From b2fe30ff208ebf6041280abeda5bed6a419899df Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Sat, 28 Sep 2024 17:37:16 +0200 Subject: [PATCH 10/18] nix: run `cabal check` --- .github/workflows/checks.yml | 23 ------------------- nix/formatting.nix | 1 + ...heck-cabal-files.sh => run-cabal-check.sh} | 4 ++-- 3 files changed, 3 insertions(+), 25 deletions(-) rename scripts/ci/{check-cabal-files.sh => run-cabal-check.sh} (100%) mode change 100755 => 100644 diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 5bb6c1ff20b..1ad021bb1bb 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -27,26 +27,3 @@ jobs: - name: Check changelogs run: ./scripts/ci/check-changelogs.sh - - check-cabal-files: - name: Check cabal files - runs-on: ubuntu-latest - defaults: - run: - shell: bash - - steps: - - name: Install dependencies - run: sudo apt install -y fd-find - - - name: Install Haskell - uses: input-output-hk/actions/haskell@latest - id: setup-haskell - with: - cabal-version: "3.10.1.0" - - - uses: actions/checkout@v4 - - - name: Check cabal files - run: ./scripts/ci/check-cabal-files.sh - diff --git a/nix/formatting.nix b/nix/formatting.nix index 0ac0a213699..54057315263 100644 --- a/nix/formatting.nix +++ b/nix/formatting.nix @@ -29,4 +29,5 @@ in stylish-haskell = checkFormatting pkgs.stylish-haskell ../scripts/ci/run-stylish-haskell.sh "-g"; nixpkgs-fmt = checkFormatting pkgs.nixpkgs-fmt ../scripts/ci/run-nixpkgs-fmt.sh ""; cabal-gild = checkFormatting pkgs.cabal-gild ../scripts/ci/run-cabal-gild.sh ""; + cabal-check = checkFormatting pkgs.cabal ../scripts/ci/run-cabal-check.sh ""; } diff --git a/scripts/ci/check-cabal-files.sh b/scripts/ci/run-cabal-check.sh old mode 100755 new mode 100644 similarity index 100% rename from scripts/ci/check-cabal-files.sh rename to scripts/ci/run-cabal-check.sh index de5f53938c9..5c242e6307c --- a/scripts/ci/check-cabal-files.sh +++ b/scripts/ci/run-cabal-check.sh @@ -1,9 +1,9 @@ #!/usr/bin/env bash -FD="$(which fdfind 2>/dev/null || which fd 2>/dev/null)" - set -eo pipefail +FD="$(which fdfind 2>/dev/null || which fd 2>/dev/null)" + for x in $($FD -e cabal); do ( d=$(dirname $x) From 09f757517cac6f5fa2afa572a39be1ce31f48210 Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Sat, 28 Sep 2024 17:39:04 +0200 Subject: [PATCH 11/18] nix: removed formatter field --- flake.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/flake.nix b/flake.nix index 56b8d392ece..916a631a7d0 100644 --- a/flake.nix +++ b/flake.nix @@ -97,8 +97,6 @@ lib.recursiveUpdate flake rec { project = pkgs.ouroboros-network; inherit hydraJobs legacyPackages devShells; - # formatter used by nix fmt - formatter = pkgs.alejandra; } ); } From b5a470dea43f1b8f043c3813a03630d4a449c977 Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Sun, 29 Sep 2024 08:12:52 +0200 Subject: [PATCH 12/18] tx-submission: fixed a nothunk violation in a test I made the `getTxSize` field of `Tx` strict. Ref: https://ci.iog.io/build/5515353/nixlog/1 --- .../sim-tests-lib/Test/Ouroboros/Network/TxSubmission.hs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/TxSubmission.hs b/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/TxSubmission.hs index 8047ebcc714..3495d148ac6 100644 --- a/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/TxSubmission.hs +++ b/ouroboros-network/sim-tests-lib/Test/Ouroboros/Network/TxSubmission.hs @@ -68,12 +68,13 @@ import Text.Printf tests :: TestTree tests = testGroup "TxSubmission" [ testProperty "txSubmission" prop_txSubmission + , testProperty "x" prop_x ] data Tx txid = Tx { getTxId :: txid, - getTxSize :: SizeInBytes, + getTxSize :: !SizeInBytes, -- | If false this means that when this tx will be submitted to a remote -- mempool it will not be valid. The outbound mempool might contain -- invalid tx's in this sense. @@ -329,6 +330,11 @@ prop_txSubmission (Positive maxUnacked) (NonEmpty outboundTxs) delay = -- without error. -> return $ property True +prop_x :: Property +prop_x = prop_txSubmission + Positive {getPositive = 3} + NonEmpty {getNonEmpty = [Tx {getTxId = -83, getTxSize = SizeInBytes 62352, getTxValid = True},Tx {getTxId = 66, getTxSize = SizeInBytes 37084, getTxValid = True},Tx {getTxId = 55, getTxSize = SizeInBytes 54825, getTxValid = False},Tx {getTxId = -94, getTxSize = SizeInBytes 54298, getTxValid = True},Tx {getTxId = -83, getTxSize = SizeInBytes 30932, getTxValid = True},Tx {getTxId = 33, getTxSize = SizeInBytes 40377, getTxValid = True},Tx {getTxId = 87, getTxSize = SizeInBytes 42883, getTxValid = False},Tx {getTxId = -87, getTxSize = SizeInBytes 21529, getTxValid = True},Tx {getTxId = 85, getTxSize = SizeInBytes 15222, getTxValid = True},Tx {getTxId = -13, getTxSize = SizeInBytes 529, getTxValid = True},Tx {getTxId = -21, getTxSize = SizeInBytes 14755, getTxValid = True},Tx {getTxId = 37, getTxSize = SizeInBytes 3921, getTxValid = True},Tx {getTxId = -44, getTxSize = SizeInBytes 42390, getTxValid = True},Tx {getTxId = 47, getTxSize = SizeInBytes 27061, getTxValid = False},Tx {getTxId = 64, getTxSize = SizeInBytes 8540, getTxValid = True},Tx {getTxId = -85, getTxSize = SizeInBytes 15138, getTxValid = False},Tx {getTxId = -23, getTxSize = SizeInBytes 16317, getTxValid = False},Tx {getTxId = -35, getTxSize = SizeInBytes 4372, getTxValid = True},Tx {getTxId = -11, getTxSize = SizeInBytes 13524, getTxValid = True},Tx {getTxId = 98, getTxSize = SizeInBytes 62024, getTxValid = True},Tx {getTxId = -42, getTxSize = SizeInBytes 63227, getTxValid = False},Tx {getTxId = 74, getTxSize = SizeInBytes 31476, getTxValid = True},Tx {getTxId = 72, getTxSize = SizeInBytes 42959, getTxValid = True},Tx {getTxId = 72, getTxSize = SizeInBytes 53084, getTxValid = True},Tx {getTxId = 6, getTxSize = SizeInBytes 5013, getTxValid = True},Tx {getTxId = -62, getTxSize = SizeInBytes 52590, getTxValid = True},Tx {getTxId = -18, getTxSize = SizeInBytes 59325, getTxValid = False},Tx {getTxId = 70, getTxSize = SizeInBytes 40956, getTxValid = True},Tx {getTxId = -82, getTxSize = SizeInBytes 33213, getTxValid = True},Tx {getTxId = -73, getTxSize = SizeInBytes 31026, getTxValid = True},Tx {getTxId = -4, getTxSize = SizeInBytes 19421, getTxValid = True},Tx {getTxId = 68, getTxSize = SizeInBytes 37501, getTxValid = False},Tx {getTxId = 47, getTxSize = SizeInBytes 25707, getTxValid = False},Tx {getTxId = -99, getTxSize = SizeInBytes 58538, getTxValid = False},Tx {getTxId = 86, getTxSize = SizeInBytes 63432, getTxValid = False},Tx {getTxId = -73, getTxSize = SizeInBytes 32185, getTxValid = True},Tx {getTxId = 52, getTxSize = SizeInBytes 55174, getTxValid = False},Tx {getTxId = 52, getTxSize = SizeInBytes 20715, getTxValid = False},Tx {getTxId = -21, getTxSize = SizeInBytes 37063, getTxValid = False},Tx {getTxId = 15, getTxSize = SizeInBytes 63172, getTxValid = True},Tx {getTxId = -26, getTxSize = SizeInBytes 51314, getTxValid = True},Tx {getTxId = 19, getTxSize = SizeInBytes 5042, getTxValid = True},Tx {getTxId = 36, getTxSize = SizeInBytes 40532, getTxValid = True},Tx {getTxId = -30, getTxSize = SizeInBytes 18812, getTxValid = True},Tx {getTxId = 22, getTxSize = SizeInBytes 61634, getTxValid = True},Tx {getTxId = 89, getTxSize = SizeInBytes 44309, getTxValid = True},Tx {getTxId = -98, getTxSize = SizeInBytes 61700, getTxValid = True},Tx {getTxId = -17, getTxSize = SizeInBytes 46606, getTxValid = True},Tx {getTxId = -37, getTxSize = SizeInBytes 25004, getTxValid = False},Tx {getTxId = -53, getTxSize = SizeInBytes 51991, getTxValid = False},Tx {getTxId = -88, getTxSize = SizeInBytes 17941, getTxValid = True},Tx {getTxId = 24, getTxSize = SizeInBytes 19866, getTxValid = True},Tx {getTxId = -99, getTxSize = SizeInBytes 52082, getTxValid = True},Tx {getTxId = 50, getTxSize = SizeInBytes 48715, getTxValid = True},Tx {getTxId = -8, getTxSize = SizeInBytes 24522, getTxValid = True},Tx {getTxId = 92, getTxSize = SizeInBytes 53516, getTxValid = True},Tx {getTxId = 59, getTxSize = SizeInBytes 16151, getTxValid = False},Tx {getTxId = -85, getTxSize = SizeInBytes 57386, getTxValid = True},Tx {getTxId = 23, getTxSize = SizeInBytes 36444, getTxValid = False},Tx {getTxId = -59, getTxSize = SizeInBytes 63727, getTxValid = False},Tx {getTxId = -59, getTxSize = SizeInBytes 12656, getTxValid = True},Tx {getTxId = 13, getTxSize = SizeInBytes 19160, getTxValid = False},Tx {getTxId = -35, getTxSize = SizeInBytes 1681, getTxValid = True},Tx {getTxId = -13, getTxSize = SizeInBytes 46705, getTxValid = False}]} + (Just (Positive {getPositive = SmallDelay {getSmallDelay = 4.3}})) -- TODO: Belongs in iosim. data SimResult a = SimReturn a [String] From 46dd404825a414ce6f0736900a793952d0bbccc5 Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Sun, 29 Sep 2024 08:53:06 +0200 Subject: [PATCH 13/18] nix: ouroboros-network * Added explicit cabal.project * Removed `-Werror` flags in nix, they are set in `cabal.project.local` files. * Used `doCheckCross` instead of setting `doCheck` flag per package. --- nix/ouroboros-network.nix | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/nix/ouroboros-network.nix b/nix/ouroboros-network.nix index 72af021971d..a9e3a96b968 100644 --- a/nix/ouroboros-network.nix +++ b/nix/ouroboros-network.nix @@ -5,7 +5,7 @@ let inherit (prev) lib; inherit (prev) pkgs; inherit (final) haskell-nix; - # inherit (final) pkgs; + buildSystem = pkgs.buildPlatform.system; # default compiler used on all systems, also provided within the shell defaultCompiler = "ghc982"; @@ -80,34 +80,24 @@ let # package customizations as needed. Where cabal.project is not # specific enough, or doesn't allow setting these. modules = [ - (forAllProjectPackages ({ ... }: { - ghcOptions = [ "-Werror" ]; - })) ({ pkgs, ... }: { # We impose limit heap size limit when running some of the tests # to discover space leaks Once #4698 and #4699 are done we can # further constrain the heap size. - preCheck = lib.mkForce '' - export GHCRTS=-M250M - ''; + preCheck = + lib.mkForce + (if buildSystem == "x86_64-linux" + then "export GHCRTS=-M200M" + else ""); + doCheck = !pkgs.stdenv.hostPlatform.isWindows; # pkgs are instantiated for the host platform packages.ouroboros-network-protocols.components.tests.cddl.build-tools = [ pkgs.cddl pkgs.cbor-diag ]; packages.ouroboros-network-protocols.components.tests.cddl.preCheck = "export HOME=`pwd`"; # don't run checks using Wine when cross compiling - packages.quickcheck-monoids.components.tests.test.doCheck = !pkgs.stdenv.hostPlatform.isWindows; - packages.ntp-client.components.tests.test.doCheck = !pkgs.stdenv.hostPlatform.isWindows; - packages.network-mux.components.tests.test.doCheck = !pkgs.stdenv.hostPlatform.isWindows; - packages.network-mux.components.tests.test.preCheck = "export GHCRTS=-M500M"; - packages.ouroboros-network-api.components.tests.test.doCheck = !pkgs.stdenv.hostPlatform.isWindows; - packages.ouroboros-network-protocols.components.tests.test.doCheck = !pkgs.stdenv.hostPlatform.isWindows; - packages.ouroboros-network-framework.components.tests.sim-tests.doCheck = !pkgs.stdenv.hostPlatform.isWindows; - packages.ouroboros-network-framework.components.tests.io-tests.doCheck = !pkgs.stdenv.hostPlatform.isWindows; - packages.ouroboros-network-framework.components.tests.bench.doCheck = !pkgs.stdenv.hostPlatform.isWindows; - packages.ouroboros-network.components.tests.sim-tests.doCheck = !pkgs.stdenv.hostPlatform.isWindows; - packages.ouroboros-network.components.tests.io-tests.doCheck = !pkgs.stdenv.hostPlatform.isWindows; - packages.cardano-client.components.tests.test.doCheck = !pkgs.stdenv.hostPlatform.isWindows; + packages.network-mux.components.tests.test.preCheck = + if buildSystem == "x86_64-linux" then "export GHCRTS=-M500M" else ""; }) ]; }); From 23179b324efff8baaf227a8aa7c3eb0249a2191a Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Mon, 30 Sep 2024 14:13:41 +0200 Subject: [PATCH 14/18] nix: added profiling shell ``` nix develop .\#profiling ``` It will enter a nix shell with profiling environment for `ghc-9.8`. --- flake.nix | 7 +++++++ nix/shell.nix | 19 +++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/flake.nix b/flake.nix index 916a631a7d0..667046979b8 100644 --- a/flake.nix +++ b/flake.nix @@ -61,6 +61,13 @@ devShells = rec { default = import ./nix/shell.nix { hls = true; + profiling = false; + inherit inputs pkgs; + ouroboros-network = pkgs.ouroboros-network; + }; + profiling = import ./nix/shell.nix { + hls = true; + profiling = true; inherit inputs pkgs; ouroboros-network = pkgs.ouroboros-network; }; diff --git a/nix/shell.nix b/nix/shell.nix index 0f2855ce4f0..6bd87485cf6 100644 --- a/nix/shell.nix +++ b/nix/shell.nix @@ -1,9 +1,24 @@ -{ hls, inputs, pkgs, ouroboros-network }: +{ hls, profiling, inputs, pkgs, ouroboros-network }: let inherit (pkgs) lib; + mkProfiling = pkg: + pkg.appendModule { + modules = [{ + enableProfiling = true; + enableLibraryProfiling = true; + # https://well-typed.com/blog/2023/03/prof-late/ + # note 'late' profiling is only available since `GHC-9.2` + profilingDetail = "late"; + }]; + }; + + hsPkgs = + if profiling + then mkProfiling ouroboros-network + else ouroboros-network; in -ouroboros-network.shellFor { +hsPkgs.shellFor { nativeBuildInputs = [ pkgs.cabal pkgs.cabal-gild From 04b11b171a9057996df90bc8aacea70e302ef033 Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Mon, 30 Sep 2024 14:53:02 +0200 Subject: [PATCH 15/18] nix: build documentation, formats & shell only on `x86_64-linux` --- flake.nix | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/flake.nix b/flake.nix index 667046979b8..34b20462e62 100644 --- a/flake.nix +++ b/flake.nix @@ -80,21 +80,15 @@ ciJobs = flake.hydraJobs // { - # This ensure hydra send a status for the required job (even if no change other than commit hash) + # This ensure hydra send a status for the required job (even + # if no change other than commit hash) revision = pkgs.writeText "revision" (inputs.self.rev or "dirty"); - inherit network-docs; + } + // lib.optionalAttrs (buildSystem == "x86_64-linux") { devShell = devShells.default; inherit format network-docs; }; - } - # add network-docs & check-stylish to support - # `nix build .\#hydraJobs.x86_64-linux.network-docs` and - # `nix build .\#hydraJobs.x86_64-linux.check-stylis`. - // { - inherit network-docs; - # check formatting but only on a `x86_64-linux` system - format = lib.optionalAttrs (pkgs.buildPlatform.system == "x86_64-linux") format; - }; + }; # Provide hydraJobs through legacyPackages to allow building without system prefix, e.g. # `nix build .\#network-mux:lib:network-mux` From c67d393d02a12c88d5d2b0166f08307cc004ba37 Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Mon, 30 Sep 2024 19:40:47 +0200 Subject: [PATCH 16/18] nix: removed nsh.sh script --- nsh.sh | 5 ----- 1 file changed, 5 deletions(-) delete mode 100755 nsh.sh diff --git a/nsh.sh b/nsh.sh deleted file mode 100755 index 925e52afa35..00000000000 --- a/nsh.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -set -x - -nixopts="--cores 0 -j4 --no-build-output" -nix-shell ${nixopts} "$@" From 8c3733868ab345f98384971218fa7e151846403e Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Mon, 30 Sep 2024 19:43:41 +0200 Subject: [PATCH 17/18] nix: removed shell.nix file The only supported way to start one of the provides shells is by using `nix develop`. --- shell.nix | 1 - 1 file changed, 1 deletion(-) delete mode 100644 shell.nix diff --git a/shell.nix b/shell.nix deleted file mode 100644 index 3f207b19ca8..00000000000 --- a/shell.nix +++ /dev/null @@ -1 +0,0 @@ -(import ./.).devShells.${builtins.currentSystem}.default From f27bb39ad18d869d26630f470f2f44a3f4dc698e Mon Sep 17 00:00:00 2001 From: Sean D Gillespie Date: Mon, 30 Sep 2024 14:39:14 -0400 Subject: [PATCH 18/18] REBASEME: Ignore buildSystem (I _think_ system should be the same) --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 34b20462e62..15c7eec0486 100644 --- a/flake.nix +++ b/flake.nix @@ -84,7 +84,7 @@ # if no change other than commit hash) revision = pkgs.writeText "revision" (inputs.self.rev or "dirty"); } - // lib.optionalAttrs (buildSystem == "x86_64-linux") { + // lib.optionalAttrs (system == "x86_64-linux") { devShell = devShells.default; inherit format network-docs; };