Skip to content

Commit

Permalink
ada-url: init at 2.7.7
Browse files Browse the repository at this point in the history
Based on #227030

The patch is included since I ran into a roadblock due to how ada
implemented cpm (cmake package manager). There are other packages in
nixpkgs which work around it (e.g., poac) but those package upstreams
gate their downloads on a conditional:

```
if(NOT (EXISTS ${CPM_DOWNLOAD_LOCATION}))
  file(DOWNLOAD
    ...
```

I patched ada to reproduce this behavior so it can build in the sandbox.
  • Loading branch information
genevieve-me committed Apr 2, 2024
1 parent 666bb4e commit 1e09d4e
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 0 deletions.
20 changes: 20 additions & 0 deletions pkgs/by-name/ad/ada-url/conditional-dl.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
diff --git a/cmake/CPM.cmake b/cmake/CPM.cmake
index ad6b74a8..079eed46 100644
--- a/cmake/CPM.cmake
+++ b/cmake/CPM.cmake
@@ -16,9 +16,11 @@ endif()
# Expand relative path. This is important if the provided path contains a tilde (~)
get_filename_component(CPM_DOWNLOAD_LOCATION ${CPM_DOWNLOAD_LOCATION} ABSOLUTE)

-file(DOWNLOAD
- https://github.com/cpm-cmake/CPM.cmake/releases/download/v${CPM_DOWNLOAD_VERSION}/CPM.cmake
- ${CPM_DOWNLOAD_LOCATION} EXPECTED_HASH SHA256=${CPM_HASH_SUM}
-)
+if(NOT (EXISTS ${CPM_DOWNLOAD_LOCATION}))
+ file(DOWNLOAD
+ https://github.com/cpm-cmake/CPM.cmake/releases/download/v${CPM_DOWNLOAD_VERSION}/CPM.cmake
+ ${CPM_DOWNLOAD_LOCATION} EXPECTED_HASH SHA256=${CPM_HASH_SUM}
+ )
+endif()

include(${CPM_DOWNLOAD_LOCATION})
61 changes: 61 additions & 0 deletions pkgs/by-name/ad/ada-url/package.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
{
lib,
fetchFromGitHub,
stdenv,
cpm-cmake,
simdjson,
cmake,
cxxopts,
}:

let
googletest = fetchFromGitHub {
owner = "google";
repo = "googletest";
rev = "v1.14.0";
hash = "sha256-t0RchAHTJbuI5YW4uyBPykTvcjy90JW9AOPNjIhwh6U=";
};
googlebenchmark = fetchFromGitHub {
owner = "google";
repo = "benchmark";
rev = "v1.6.0";
hash = "sha256-EAJk3JhLdkuGKRMtspTLejck8doWPd7Z0Lv/Mvf3KFY=";
};
pname = "ada";
version = "2.7.7";
in
stdenv.mkDerivation rec {
inherit pname version;
src = fetchFromGitHub {
owner = "ada-url";
repo = pname;
rev = "v${version}";
hash = "sha256-eh/tOwU+sU/8FYYuRE7DL1v1Fp6bNFWneLtGG0wsWgA=";
};

patches = [ ./conditional-dl.patch ];

preConfigure = ''
mkdir -p ${placeholder "out"}/share/cpm
cp ${cpm-cmake}/share/cpm/CPM.cmake ${placeholder "out"}/share/cpm/CPM_0.38.6.cmake
'';

cmakeFlags = [
"-DCPM_SOURCE_CACHE=${placeholder "out"}/share"
"-DFETCHCONTENT_SOURCE_DIR_SIMDJSON=${simdjson.src}"
"-DFETCHCONTENT_SOURCE_DIR_GTEST=${googletest}"
"-DFETCHCONTENT_SOURCE_DIR_BENCHMARK=${googlebenchmark}"
"-DBUILD_SHARED_LIBS=ON"
];

nativeBuildInputs = [ cmake ];

buildInputs = [ cxxopts ];
meta = with lib; {
homepage = "https://www.ada-url.com/";
description = "WHATWG-compliant and fast URL parser written in modern C++";
license = licenses.asl20;
platforms = [ "x86_64-linux" ];
maintainers = with maintainers; [ genevieve-me ];
};
}

0 comments on commit 1e09d4e

Please sign in to comment.