From 8c9a6e228eca8b83bea4239261c3ea747c39ad1a Mon Sep 17 00:00:00 2001 From: Adam Stephens Date: Tue, 29 Aug 2023 10:42:00 -0400 Subject: [PATCH] raft-cowsql: init at 0.17.2 --- .../disable-missing-dir-test.patch | 23 ++++++++ .../ra/raft-cowsql/disable-net-tests.patch | 16 ++++++ pkgs/by-name/ra/raft-cowsql/package.nix | 56 +++++++++++++++++++ 3 files changed, 95 insertions(+) create mode 100644 pkgs/by-name/ra/raft-cowsql/disable-missing-dir-test.patch create mode 100644 pkgs/by-name/ra/raft-cowsql/disable-net-tests.patch create mode 100644 pkgs/by-name/ra/raft-cowsql/package.nix diff --git a/pkgs/by-name/ra/raft-cowsql/disable-missing-dir-test.patch b/pkgs/by-name/ra/raft-cowsql/disable-missing-dir-test.patch new file mode 100644 index 000000000000..ddfec9b22e14 --- /dev/null +++ b/pkgs/by-name/ra/raft-cowsql/disable-missing-dir-test.patch @@ -0,0 +1,23 @@ +diff --git a/test/unit/test_uv_fs.c b/test/unit/test_uv_fs.c +index 638c39c..c8758d2 100644 +--- a/test/unit/test_uv_fs.c ++++ b/test/unit/test_uv_fs.c +@@ -40,18 +40,6 @@ TEST(UvFsCheckDir, exists, DirSetUp, DirTearDown, 0, NULL) + return MUNIT_OK; + } + +-/* If the directory doesn't exist, it an error is returned. */ +-TEST(UvFsCheckDir, doesNotExist, DirSetUp, DirTearDown, 0, NULL) +-{ +- const char *parent = data; +- char errmsg[RAFT_ERRMSG_BUF_SIZE]; +- char dir[128]; +- sprintf(errmsg, "%s/sub", parent); +- sprintf(errmsg, "directory '%s' does not exist", dir); +- CHECK_DIR_ERROR(dir, RAFT_NOTFOUND, errmsg); +- return MUNIT_OK; +-} +- + /* If the process can't access the directory, an error is returned. */ + TEST(UvFsCheckDir, permissionDenied, NULL, NULL, 0, NULL) + { diff --git a/pkgs/by-name/ra/raft-cowsql/disable-net-tests.patch b/pkgs/by-name/ra/raft-cowsql/disable-net-tests.patch new file mode 100644 index 000000000000..7c8be29feafd --- /dev/null +++ b/pkgs/by-name/ra/raft-cowsql/disable-net-tests.patch @@ -0,0 +1,16 @@ +diff --git a/Makefile.am b/Makefile.am +index 2137932..93abdb6 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -198,11 +198,7 @@ test_integration_uv_SOURCES = \ + test/integration/test_uv_bootstrap.c \ + test/integration/test_uv_load.c \ + test/integration/test_uv_recover.c \ +- test/integration/test_uv_recv.c \ +- test/integration/test_uv_send.c \ + test/integration/test_uv_set_term.c \ +- test/integration/test_uv_tcp_connect.c \ +- test/integration/test_uv_tcp_listen.c \ + test/integration/test_uv_snapshot_put.c \ + test/integration/test_uv_truncate.c \ + test/integration/test_uv_work.c diff --git a/pkgs/by-name/ra/raft-cowsql/package.nix b/pkgs/by-name/ra/raft-cowsql/package.nix new file mode 100644 index 000000000000..34c7d72726d7 --- /dev/null +++ b/pkgs/by-name/ra/raft-cowsql/package.nix @@ -0,0 +1,56 @@ +{ lib +, stdenv +, fetchFromGitHub +, autoreconfHook +, libuv +, lz4 +, pkg-config +, incus +, gitUpdater +}: + +stdenv.mkDerivation rec { + pname = "raft-cowsql"; + version = "0.17.3"; + + src = fetchFromGitHub { + owner = "cowsql"; + repo = "raft"; + rev = "refs/tags/v${version}"; + hash = "sha256-Ad09giGVsAVtm/0GRU/OaZx7BGjL5TlU8BrzFaFlE9k="; + }; + + nativeBuildInputs = [ autoreconfHook pkg-config ]; + buildInputs = [ libuv lz4 ]; + + enableParallelBuilding = true; + + patches = [ + # network tests either hang indefinitely, or fail outright + ./disable-net-tests.patch + + # missing dir check is flaky + ./disable-missing-dir-test.patch + ]; + + preConfigure = '' + substituteInPlace configure --replace /usr/bin/ " " + ''; + + doCheck = true; + + outputs = [ "dev" "out" ]; + + passthru.tests = { + inherit incus; + updateScript = gitUpdater { }; + }; + + meta = with lib; { + description = "Asynchronous C implementation of the Raft consensus protocol"; + homepage = "https://github.com/cowsql/raft"; + license = licenses.lgpl3Only; + platforms = platforms.linux; + maintainers = with maintainers; [ adamcstephens ]; + }; +}