# Copyright 1999-2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 CRATES="adler32@1.2.0 aho-corasick@1.1.4 allocator-api2@0.2.21 android_system_properties@0.1.5 anstream@1.0.0 anstyle-parse@1.0.0 anstyle-query@1.1.5 anstyle-wincon@3.0.11 anstyle@1.0.14 anyhow@1.0.102 atomic-waker@1.1.2 autocfg@1.5.1 aws-lc-rs@1.17.0 aws-lc-sys@0.41.0 base64@0.22.1 bitflags@2.13.0 block2@0.6.2 bumpalo@3.20.3 bytes@1.11.1 cc@1.2.63 cfg-if@1.0.4 cfg_aliases@0.2.1 chrono@0.4.45 clap-verbosity-flag@3.0.4 clap@4.6.1 clap_builder@4.6.0 clap_derive@4.6.1 clap_lex@1.1.0 cmake@0.1.58 colorchoice@1.0.5 combine@4.6.7 core-foundation-sys@0.8.7 core-foundation@0.10.1 crc32fast@1.5.0 ctrlc@3.5.2 cty@0.2.2 dary_heap@0.3.9 dispatch2@0.3.1 displaydoc@0.2.6 dunce@1.0.5 either@1.16.0 env_logger@0.10.2 equivalent@1.0.2 find-msvc-tools@0.1.9 foldhash@0.1.5 foldhash@0.2.0 form_urlencoded@1.2.2 fs_extra@1.3.0 fuchsia-cprng@0.1.1 futures-channel@0.3.32 futures-core@0.3.32 futures-io@0.3.32 futures-sink@0.3.32 futures-task@0.3.32 futures-util@0.3.32 getrandom@0.2.17 getrandom@0.3.4 getrandom@0.4.2 hashbrown@0.15.5 hashbrown@0.16.1 hashbrown@0.17.1 heck@0.5.0 hermit-abi@0.5.2 http-body-util@0.1.3 http-body@1.0.1 http@1.4.2 httparse@1.10.1 humantime@2.3.0 hyper-rustls@0.27.9 hyper-util@0.1.20 hyper@1.10.1 iana-time-zone-haiku@0.1.2 iana-time-zone@0.1.65 icu_collections@2.2.0 icu_locale_core@2.2.0 icu_normalizer@2.2.0 icu_normalizer_data@2.2.0 icu_properties@2.2.0 icu_properties_data@2.2.0 icu_provider@2.2.0 id-arena@2.3.0 idna@1.1.0 idna_adapter@1.2.2 indexmap@2.14.0 ipnet@2.12.0 is-terminal@0.4.17 is_terminal_polyfill@1.70.2 itertools@0.14.0 itoa@1.0.18 jni-macros@0.22.4 jni-sys-macros@0.4.1 jni-sys@0.4.1 jni@0.22.4 jobserver@0.1.34 js-sys@0.3.100 lazy_static@1.5.0 leb128fmt@0.1.0 libc@0.2.186 libflate@2.3.0 libflate_lz77@2.3.0 litemap@0.8.2 log@0.4.32 lru-slab@0.1.2 memchr@2.8.1 mio@1.2.1 nix@0.30.1 nix@0.31.3 no_std_io2@0.9.4 num-traits@0.2.19 objc2-encode@4.1.0 objc2@0.6.4 ocaml-boxroot-sys@0.4.0 ocaml-derive@1.0.0 ocaml-sys@0.26.0 ocaml@1.3.0 once_cell@1.21.4 once_cell_polyfill@1.70.2 openssl-probe@0.2.1 percent-encoding@2.3.2 pin-project-lite@0.2.17 potential_utf@0.1.5 ppv-lite86@0.2.21 pretty_env_logger@0.5.0 prettyplease@0.2.37 proc-macro2@1.0.106 prost-derive@0.14.4 prost@0.14.4 quinn-proto@0.11.14 quinn-udp@0.5.14 quinn@0.11.9 quote@1.0.45 r-efi@5.3.0 r-efi@6.0.0 rand@0.4.6 rand@0.9.4 rand_chacha@0.9.0 rand_core@0.3.1 rand_core@0.4.2 rand_core@0.9.5 rdrand@0.4.0 regex-automata@0.4.14 regex-syntax@0.8.11 regex@1.12.4 remove_dir_all@0.5.3 reqwest@0.13.4 ring@0.17.14 rle-decode-fast@1.0.3 rustc-hash@2.1.2 rustc_version@0.4.1 rustls-native-certs@0.8.4 rustls-pki-types@1.14.1 rustls-platform-verifier-android@0.1.1 rustls-platform-verifier@0.7.0 rustls-webpki@0.103.13 rustls@0.23.40 rustversion@1.0.22 ryu@1.0.23 same-file@1.0.6 schannel@0.1.29 security-framework-sys@2.17.0 security-framework@3.7.0 semver@1.0.28 serde@1.0.228 serde_core@1.0.228 serde_derive@1.0.228 serde_json@1.0.150 serde_urlencoded@0.7.1 shlex@2.0.1 simd_cesu8@1.1.1 simdutf8@0.1.5 slab@0.4.12 smallvec@1.15.1 socket2@0.6.4 stable_deref_trait@1.2.1 strsim@0.11.1 subtle@2.6.1 syn@2.0.117 sync_wrapper@1.0.2 synstructure@0.13.2 tempdir@0.3.7 termcolor@1.4.1 thiserror-impl@2.0.18 thiserror@2.0.18 tinystr@0.8.3 tinyvec@1.11.0 tinyvec_macros@0.1.1 tokio-rustls@0.26.4 tokio@1.52.3 tower-http@0.6.11 tower-layer@0.3.3 tower-service@0.3.3 tower@0.5.3 tracing-core@0.1.36 tracing@0.1.44 try-lock@0.2.5 unicode-ident@1.0.24 unicode-xid@0.2.6 untrusted@0.9.0 url@2.5.8 utf8_iter@1.0.4 utf8parse@0.2.2 uuid@1.23.3 walkdir@2.5.0 want@0.3.1 wasi@0.11.1+wasi-snapshot-preview1 wasip2@1.0.3+wasi-0.2.9 wasip3@0.4.0+wasi-0.3.0-rc-2026-01-06 wasm-bindgen-futures@0.4.73 wasm-bindgen-macro-support@0.2.123 wasm-bindgen-macro@0.2.123 wasm-bindgen-shared@0.2.123 wasm-bindgen@0.2.123 wasm-encoder@0.244.0 wasm-metadata@0.244.0 wasmparser@0.244.0 web-sys@0.3.100 web-time@1.1.0 webpki-root-certs@1.0.7 winapi-i686-pc-windows-gnu@0.4.0 winapi-util@0.1.11 winapi-x86_64-pc-windows-gnu@0.4.0 winapi@0.3.9 windows-core@0.62.2 windows-implement@0.60.2 windows-interface@0.59.3 windows-link@0.2.1 windows-result@0.4.1 windows-strings@0.5.1 windows-sys@0.52.0 windows-sys@0.60.2 windows-sys@0.61.2 windows-targets@0.52.6 windows-targets@0.53.5 windows_aarch64_gnullvm@0.52.6 windows_aarch64_gnullvm@0.53.1 windows_aarch64_msvc@0.52.6 windows_aarch64_msvc@0.53.1 windows_i686_gnu@0.52.6 windows_i686_gnu@0.53.1 windows_i686_gnullvm@0.52.6 windows_i686_gnullvm@0.53.1 windows_i686_msvc@0.52.6 windows_i686_msvc@0.53.1 windows_x86_64_gnu@0.52.6 windows_x86_64_gnu@0.53.1 windows_x86_64_gnullvm@0.52.6 windows_x86_64_gnullvm@0.53.1 windows_x86_64_msvc@0.52.6 windows_x86_64_msvc@0.53.1 wit-bindgen-core@0.51.0 wit-bindgen-rust-macro@0.51.0 wit-bindgen-rust@0.51.0 wit-bindgen@0.51.0 wit-bindgen@0.57.1 wit-component@0.244.0 wit-parser@0.244.0 writeable@0.6.3 yoke-derive@0.8.2 yoke@0.8.3 zerocopy-derive@0.8.50 zerocopy@0.8.50 zerofrom-derive@0.1.7 zerofrom@0.1.8 zeroize@1.8.2 zerotrie@0.2.4 zerovec-derive@0.11.3 zerovec@0.11.6 zmij@1.0.21" declare -A GIT_CRATES=( [pyroscope]='https://github.com/semgrep/pyroscope-rs;0235912a5eb5fd87d47d9c0d386c47b03c29e7ff;pyroscope-rs-%commit%' ) DUNE_PKG_NAME="pyro-caml pyro-caml-instruments pyro-caml-ppx" RUST_MIN_VER="1.87.0" inherit cargo dune COMMIT="d6941d16419a7d73d60126a70400fdb4d207e2ab" DESCRIPTION="A statistical continuous profiler for OCaml" HOMEPAGE="https://github.com/semgrep/pyro-caml" SRC_URI="https://github.com/semgrep/${PN}/archive/${COMMIT}.tar.gz -> ${P}.tar.gz ${CARGO_CRATE_URIS}" S="${WORKDIR}/${PN}-${COMMIT}" LICENSE="Apache-2.0 BSD CDLA-Permissive-2.0 ISC MIT Unicode-3.0 ZLIB" SLOT="0/${PV}" KEYWORDS="~amd64" IUSE="+ocamlopt" RDEPEND="dev-ml/logs:0=[ocamlopt?] dev-ml/ppx_deriving:0=[ocamlopt?] >=dev-ml/ppxlib-0.36.0:0=[ocamlopt?] || ( dev-lang/rust dev-lang/rust-bin )" src_prepare() { default sed -i "/pyroscope = {/s|git = .*|path = \"${WORKDIR}/pyroscope-rs-0235912a5eb5fd87d47d9c0d386c47b03c29e7ff\" }|" \ Cargo.toml || die "sed failed for Cargo.toml" } src_compile() { cargo_src_compile dune-compile ${DUNE_PKG_NAME} } src_test() { cargo_src_test dune-test ${DUNE_PKG_NAME} } src_install() { cargo_src_install dune_src_install }