{"id":18013027,"url":"https://github.com/sim642/odep","last_synced_at":"2025-03-26T16:31:48.908Z","repository":{"id":62662614,"uuid":"559531387","full_name":"sim642/odep","owner":"sim642","description":"Dependency graphs for OCaml modules, libraries and packages","archived":false,"fork":false,"pushed_at":"2024-07-16T09:16:26.000Z","size":299,"stargazers_count":38,"open_issues_count":4,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-22T03:02:43.238Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"OCaml","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sim642.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-30T12:12:36.000Z","updated_at":"2025-03-19T00:08:02.000Z","dependencies_parsed_at":"2023-02-13T19:02:43.094Z","dependency_job_id":"7b463114-ae25-426f-aaba-f43ce44dce22","html_url":"https://github.com/sim642/odep","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sim642%2Fodep","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sim642%2Fodep/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sim642%2Fodep/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sim642%2Fodep/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sim642","download_url":"https://codeload.github.com/sim642/odep/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245692718,"owners_count":20656994,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-30T03:19:41.073Z","updated_at":"2025-03-26T16:31:48.527Z","avatar_url":"https://github.com/sim642.png","language":"OCaml","funding_links":[],"categories":[],"sub_categories":[],"readme":"# odep\n\n[![ci workflow status](https://github.com/sim642/odep/actions/workflows/ci.yml/badge.svg)](https://github.com/sim642/odep/actions/workflows/ci.yml)\n[![GitHub release status](https://img.shields.io/github/v/release/sim642/odep)](https://github.com/sim642/odep/releases)\n[![opam package status](https://badgen.net/opam/v/odep)](https://opam.ocaml.org/packages/odep)\n\nDependency graphs for OCaml modules, libraries and packages.\n\n## Installation\n```console\nopam install odep\n```\n\n## Examples\n\n### dune\nDependency graphs for dune project modules and libraries, examples here for this repository.\nIncludes clusters for libraries and opam packages.\n\n#### xdot\n```console\nodep dune | xdot -\n```\nopens `xdot` for interactive dot graph viewing.\n\n#### dot\n```console\nodep dune | dot -Tsvg \u003e img/dune-odep.svg\n```\nproduces:\n[![Dune dependency graph for odep](img/dune-odep.svg)](https://raw.githubusercontent.com/sim642/odep/master/img/dune-odep.svg)\n\n#### Mermaid\n```console\nodep dune -t mermaid\n```\ncopied into a `mermaid` language block in GitHub Flavored Markdown produces:\n```mermaid\nflowchart TD\n  subgraph 1009034736 [\"fmt 0.9.0\"]\n    id614681436([\"fmt\"])\n    style id614681436 fill:#BBB\n  end\n  subgraph 1020731658 [\"re 1.10.4\"]\n    id817603210([\"re\"])\n    style id817603210 fill:#BBB\n  end\n  subgraph 104811802 [\"opam-format 2.1.5\"]\n    id178361781([\"opam-format\"])\n    style id178361781 fill:#BBB\n  end\n  subgraph 105050893 [\"ppx_derivers 1.2.1\"]\n    id944076602([\"ppx_derivers\"])\n    style id944076602 fill:#BBB\n  end\n  subgraph 11357312 [\"base v0.16.1\"]\n    id1001087518([\"base.shadow_stdlib\"])\n    style id1001087518 fill:#BBB\n    id631192440([\"base.caml\"])\n    style id631192440 fill:#BBB\n    id920833612([\"base.base_internalhash_types\"])\n    style id920833612 fill:#BBB\n    id615168812([\"base\"])\n    style id615168812 fill:#BBB\n  end\n  subgraph 129913994 [\"(compiler)\"]\n    id266426620([\"unix\"])\n    style id266426620 fill:#BBB\n    id255847688([\"compiler-libs.common\"])\n    style id255847688 fill:#BBB\n    id612096776([\"bigarray\"])\n    style id612096776 fill:#BBB\n  end\n  subgraph 136087330 [\"ocamlgraph 2.0.0\"]\n    id183162717([\"ocamlgraph\"])\n    style id183162717 fill:#BBB\n  end\n  subgraph 250659719 [\"parsexp v0.16.0\"]\n    id1067593255([\"parsexp\"])\n    style id1067593255 fill:#BBB\n  end\n  subgraph 292359173 [\"astring 0.8.5\"]\n    id727224986([\"astring\"])\n    style id727224986 fill:#BBB\n  end\n  subgraph 306932333 [\"opam-repository 2.1.5\"]\n    id979332654([\"opam-repository\"])\n    style id979332654 fill:#BBB\n  end\n  subgraph 353386239 [\"opam-state 2.1.5\"]\n    id261565931([\"opam-state\"])\n    style id261565931 fill:#BBB\n  end\n  subgraph 389527603 [\"result 1.5\"]\n    id577741237([\"result\"])\n    style id577741237 fill:#BBB\n  end\n  subgraph 431173517 [\"sexplib v0.16.0\"]\n    id85613087([\"sexplib\"])\n    style id85613087 fill:#BBB\n  end\n  subgraph 438175530 [\"fpath 0.7.3\"]\n    id560603002([\"fpath\"])\n    style id560603002 fill:#BBB\n  end\n  subgraph 458205106 [\"seq base\"]\n    id184246828([\"seq\"])\n    style id184246828 fill:#BBB\n  end\n  subgraph 477870478 [\"ppx_deriving 5.2.1\"]\n    id958091540([\"ppx_deriving.runtime\"])\n    style id958091540 fill:#BBB\n    id834058755([\"ppx_deriving.ord\"])\n    style id834058755 fill:#BBB\n    id263623291([\"ppx_deriving.eq\"])\n    style id263623291 fill:#BBB\n    id953408392([\"ppx_deriving.api\"])\n    style id953408392 fill:#BBB\n  end\n  subgraph 541823983 [\"ocamlfind 1.9.6\"]\n    id886416438([\"findlib.internal\"])\n    style id886416438 fill:#BBB\n    id11445160([\"findlib\"])\n    style id11445160 fill:#BBB\n  end\n  subgraph 556777479 [\"opam-file-format 2.1.6\"]\n    id863133190([\"opam-file-format\"])\n    style id863133190 fill:#BBB\n  end\n  subgraph 586824428 [\"opam-core 2.1.5\"]\n    id935524513([\"opam-core\"])\n    style id935524513 fill:#BBB\n  end\n  subgraph 591990434 [\"bos 0.2.1\"]\n    id745446969([\"bos\"])\n    style id745446969 fill:#BBB\n  end\n  subgraph 619828698 [\"sexplib0 v0.16.0\"]\n    id845842863([\"sexplib0\"])\n    style id845842863 fill:#BBB\n  end\n  subgraph 629932021 [\"cmdliner 1.2.0\"]\n    id500343217([\"cmdliner\"])\n    style id500343217 fill:#BBB\n  end\n  subgraph 747883779 [\"stdlib-shims 0.3.0\"]\n    id967083485([\"stdlib-shims\"])\n    style id967083485 fill:#BBB\n  end\n  subgraph 766362805 [\"rresult 0.7.0\"]\n    id104639968([\"rresult\"])\n    style id104639968 fill:#BBB\n  end\n  subgraph 814024879 [\"ppxlib 0.30.0\"]\n    id281869556([\"ppxlib.traverse_builtins\"])\n    style id281869556 fill:#BBB\n    id919310622([\"ppxlib.stdppx\"])\n    style id919310622 fill:#BBB\n    id131632995([\"ppxlib.print_diff\"])\n    style id131632995 fill:#BBB\n    id926788961([\"ppxlib.metaquot_lifters\"])\n    style id926788961 fill:#BBB\n    id360973787([\"ppxlib.astlib\"])\n    style id360973787 fill:#BBB\n    id562070456([\"ppxlib.ast\"])\n    style id562070456 fill:#BBB\n    id25427089([\"ppxlib\"])\n    style id25427089 fill:#BBB\n  end\n  subgraph 837386068 [\"ocaml-compiler-libs v0.12.4\"]\n    id1048368575([\"ocaml-compiler-libs.shadow\"])\n    style id1048368575 fill:#BBB\n    id502843752([\"ocaml-compiler-libs.common\"])\n    style id502843752 fill:#BBB\n  end\n  subgraph 894937073 [\"ppx_sexp_conv v0.16.0\"]\n    id456126552([\"ppx_sexp_conv.runtime-lib\"])\n    style id456126552 fill:#BBB\n    id567549061([\"ppx_sexp_conv.expander\"])\n    style id567549061 fill:#BBB\n    id370539618([\"ppx_sexp_conv\"])\n    style id370539618 fill:#BBB\n  end\n  subgraph 902546259 [\"(local)\"]\n    subgraph 122612022 [\"depgraph\"]\n      id439874552(Opam_installed_graph)\n      id882674132(Opam_findlib)\n      id890445863(Findlib_graph)\n      id130907115(Dune_describe_graph)\n      id658580835(Dot_graph)\n      id593996496(Depgraph)\n      id175675044(Common)\n      id122612022([\"depgraph\"])\n    end\n    subgraph 158492278 [\"std\"]\n      id1008512934(Std)\n      id916334710(Result_syntax)\n      id262221135(Option_syntax)\n      id768355202(Common_syntax)\n      id158492278([\"std\"])\n    end\n    subgraph 189591663 [\"main\"]\n      id591715563(Opam_installed)\n      id725600054(Main)\n      id1004882373(Findlib)\n      id8714191(Dune_describe_file)\n      id952370123(Dune)\n      id326418831(Common)\n      id189591663{\"main\"}\n    end\n    subgraph 305831830 [\"opam_state_compat_gen\"]\n      id323374370(Opam_state_compat_gen)\n      id305831830{\"opam_state_compat_gen\"}\n    end\n    subgraph 312718400 [\"ocamlgraph_extra\"]\n      id872997936(Ocamlgraph_extra)\n      id157893572(Mermaid)\n      id383119909(Graphviz)\n      id312718400([\"ocamlgraph_extra\"])\n    end\n    subgraph 433051691 [\"opam_state_compat\"]\n      id80388000(Opam_state_compat)\n      id433051691([\"opam_state_compat\"])\n    end\n    subgraph 557698697 [\"dune_describe\"]\n      id15495529(Dune_describe)\n      id557698697([\"dune_describe\"])\n    end\n  end\n  subgraph 903389259 [\"logs 0.7.0\"]\n    id45133392([\"logs\"])\n    style id45133392 fill:#BBB\n  end\n  189591663--\u003eid745446969\n  189591663--\u003eid500343217\n  189591663--\u003e122612022\n  id189591663--\u003eid725600054\n  305831830--\u003eid261565931\n  id305831830--\u003eid323374370\n  id615168812--\u003eid920833612\n  id615168812--\u003eid631192440\n  id615168812--\u003eid1001087518\n  id615168812--\u003eid845842863\n  id745446969--\u003eid614681436\n  id745446969--\u003eid560603002\n  id745446969--\u003eid45133392\n  id745446969--\u003eid104639968\n  id745446969--\u003eid266426620\n  id560603002--\u003eid727224986\n  id502843752--\u003eid255847688\n  id11445160--\u003eid886416438\n  id183162717--\u003eid967083485\n  id935524513--\u003eid183162717\n  id935524513--\u003eid817603210\n  id935524513--\u003eid612096776\n  id178361781--\u003eid935524513\n  id178361781--\u003eid863133190\n  id979332654--\u003eid178361781\n  id261565931--\u003eid979332654\n  id1067593255--\u003eid845842863\n  id953408392--\u003eid25427089\n  id953408392--\u003eid577741237\n  id263623291--\u003eid953408392\n  id834058755--\u003eid953408392\n  id958091540--\u003eid577741237\n  id370539618--\u003eid567549061\n  id567549061--\u003eid615168812\n  id567549061--\u003eid926788961\n  id456126552--\u003eid845842863\n  id25427089--\u003eid1048368575\n  id25427089--\u003eid944076602\n  id25427089--\u003eid562070456\n  id25427089--\u003eid131632995\n  id25427089--\u003eid919310622\n  id25427089--\u003eid281869556\n  id562070456--\u003eid360973787\n  id562070456--\u003eid967083485\n  id360973787--\u003eid502843752\n  id926788961--\u003eid25427089\n  id919310622--\u003eid845842863\n  id919310622--\u003eid967083485\n  id817603210--\u003eid184246828\n  id85613087--\u003eid1067593255\n  id85613087--\u003eid612096776\n  id612096776--\u003eid266426620\n  122612022--\u003eid11445160\n  122612022--\u003e557698697\n  122612022--\u003e312718400\n  122612022--\u003e433051691\n  122612022--\u003e158492278\n  id122612022--\u003eid593996496\n  557698697--\u003eid958091540\n  557698697--\u003eid456126552\n  557698697--\u003eid85613087\n  id557698697--\u003eid15495529\n  312718400--\u003eid183162717\n  id312718400--\u003eid872997936\n  433051691--\u003eid261565931\n  id433051691--\u003eid80388000\n  id158492278--\u003eid1008512934\n  id952370123--\u003eid326418831\n  id8714191--\u003eid326418831\n  id1004882373--\u003eid326418831\n  id725600054--\u003eid952370123\n  id725600054--\u003eid8714191\n  id725600054--\u003eid1004882373\n  id725600054--\u003eid591715563\n  id591715563--\u003eid326418831\n  id593996496--\u003eid658580835\n  id593996496--\u003eid130907115\n  id593996496--\u003eid890445863\n  id593996496--\u003eid439874552\n  id658580835--\u003eid175675044\n  id130907115--\u003eid882674132\n  id890445863--\u003eid882674132\n  id882674132--\u003eid175675044\n  id439874552--\u003eid175675044\n  id157893572--\u003eid383119909\n  id872997936--\u003eid157893572\n  id1008512934--\u003eid768355202\n  id1008512934--\u003eid262221135\n  id1008512934--\u003eid916334710\n```\n\n### findlib\nDependency graphs for _installed_ findlib libraries.\nIncludes clusters for opam packages.\n\n#### Dependencies\n```console\nodep findlib --depends=dune-release\n```\n[![Findlib dependency graph for dune-release](img/findlib-depends-dune-release.svg)](https://raw.githubusercontent.com/sim642/odep/master/img/findlib-depends-dune-release.svg)\n\n#### Reverse dependencies\n```console\nodep findlib --rdepends=fmt\n```\n[![Findlib reverse dependency graph for fmt](img/findlib-rdepends-fmt.svg)](https://raw.githubusercontent.com/sim642/odep/master/img/findlib-rdepends-fmt.svg)\n\n#### Intersection of dependencies and reverse dependencies\n```console\nodep findlib --depends=dune-release --rdepends=fmt\n```\n[![Findlib dependency and reverse dependency intersection graph for dune-release and fmt](img/findlib-depends-dune-release-rdepends-fmt.svg)](https://raw.githubusercontent.com/sim642/odep/master/img/findlib-depends-dune-release-rdepends-fmt.svg)\n\n### opam\nDependency graphs for _installed_ opam packages.\n\n#### Dependencies\n```console\nodep opam-installed --depends=dune-release\n```\n[![Opam dependency graph for dune-release](img/opam-depends-dune-release.svg)](https://raw.githubusercontent.com/sim642/odep/master/img/opam-depends-dune-release.svg)\n\n#### Reverse dependencies\n```console\nodep opam-installed --rdepends=fmt\n```\n[![Opam reverse dependency graph for fmt](img/opam-rdepends-fmt.svg)](https://raw.githubusercontent.com/sim642/odep/master/img/opam-rdepends-fmt.svg)\n\n#### Intersection of dependencies and reverse dependencies\n```console\nodep opam-installed --depends=dune-release --rdepends=fmt\n```\n[![Opam dependency and reverse dependency intersection graph for dune-release and fmt](img/opam-depends-dune-release-rdepends-fmt.svg)](https://raw.githubusercontent.com/sim642/odep/master/img/opam-depends-dune-release-rdepends-fmt.svg)\n\n## Other tools\n\n* [dune-deps](https://github.com/mjambon/dune-deps) — dune only, custom dune files parsing.\n* [not-ocamlfind](https://github.com/chetmurthy/not-ocamlfind) — findlib only.\n* [opam-dot](https://github.com/Drup/opam-dot) — opam only, outdated ([fork](https://github.com/sim642/opam-dot)).\n* [depgraph](https://github.com/rgrinberg/ocaml-depgraph) — modules only (via `ocamldep`), inactive.\n* [module-graph](https://github.com/ocamlpro/module-graph) — modules only, based on compiled object files.\n* [odoc-depgraph](https://github.com/zoggy/odoc_depgraph) — modules only (in `ocamldoc`), inactive.\n* [`ocamldoc -dot`](https://v2.ocaml.org/manual/ocamldoc.html) — modules only (in `ocamldoc`).\n* [codept](https://github.com/Octachron/codept) — `ocamldep` alternative, has `dot` output, no dune integration.\n* [opam-dune-lint](https://github.com/ocurrent/opam-dune-lint) — package-library mapping, no graphing.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsim642%2Fodep","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsim642%2Fodep","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsim642%2Fodep/lists"}