Commit 22f9a591 authored by Martin Joerg's avatar Martin Joerg
Browse files

nunicode: init at 1.11

parent a5c84766
Loading
Loading
Loading
Loading
+76 −0
Original line number Diff line number Diff line
{
  lib,
  stdenv,
  fetchFromBitbucket,
  cmake,
  sqlite,
  nix-update-script,
}:

stdenv.mkDerivation (finalAttrs: {
  pname = "nunicode";
  version = "1.11";

  outputs = [
    "out"
    "sqlite"
  ];

  src = fetchFromBitbucket {
    owner = "alekseyt";
    repo = "nunicode";
    rev = "refs/tags/${finalAttrs.version}";
    hash = "sha256-6255YdX7eYSAj0EAE4RgX1m4XDNIF/Nc4ZCvXzTxpag=";
  };

  postPatch = ''
    # load correct SQLite extension on all platforms
    substituteInPlace sqlite3/testsuite --replace-fail \
      "NU='./libnusqlite3.so'" \
      "NU='./libnusqlite3'"

    # fix expressions using like .. escape (https://sqlite.org/lang_expr.html#like)
    substituteInPlace sqlite3/tests.sql --replace-fail '\\' '\'

    # install SQLite extension in a separate output
    echo >>sqlite3/CMakeLists.txt \
      'install(TARGETS nusqlite3 DESTINATION "${placeholder "sqlite"}/lib")'
  '';

  nativeBuildInputs = [
    cmake
    sqlite
  ];

  # avoid name-clash on case-insensitive filesystems
  cmakeBuildDir = "build-dir";

  doCheck = true;

  checkPhase = ''
    runHook preCheck

    (
    echo running SQLite testsuite

    cd sqlite3
    RESULT=$(../../sqlite3/testsuite < ../../sqlite3/tests.sql | sqlite3)
    grep <<<$RESULT FAILED && echo SQLite testsuite failed && false

    echo SQLite testsuite succeeded
    )

    runHook postCheck
  '';

  passthru.updateScript = nix-update-script { };

  meta = {
    description = "Fast, small and portable Unicode library with SQLite extension";
    homepage = "https://bitbucket.org/alekseyt/nunicode";
    changelog = "https://bitbucket.org/alekseyt/nunicode/src/${finalAttrs.version}/CHANGELOG";
    license = lib.licenses.mit;
    maintainers = [ lib.maintainers.mjoerg ];
    platforms = lib.platforms.unix;
  };
})