{"id":18368734,"url":"https://github.com/openbmc/libpldm","last_synced_at":"2026-03-13T15:04:23.450Z","repository":{"id":74554695,"uuid":"517749621","full_name":"openbmc/libpldm","owner":"openbmc","description":null,"archived":false,"fork":false,"pushed_at":"2026-02-27T08:10:02.000Z","size":16372,"stargazers_count":15,"open_issues_count":12,"forks_count":30,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-02-27T09:08:52.067Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openbmc.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-07-25T16:57:06.000Z","updated_at":"2026-02-27T01:40:42.000Z","dependencies_parsed_at":"2024-02-07T01:46:10.980Z","dependency_job_id":"459af39b-9b73-4e17-ba28-47c619a06304","html_url":"https://github.com/openbmc/libpldm","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/openbmc/libpldm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openbmc%2Flibpldm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openbmc%2Flibpldm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openbmc%2Flibpldm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openbmc%2Flibpldm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openbmc","download_url":"https://codeload.github.com/openbmc/libpldm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openbmc%2Flibpldm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30469147,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-13T11:00:43.441Z","status":"ssl_error","status_checked_at":"2026-03-13T11:00:23.173Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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-11-05T23:27:11.807Z","updated_at":"2026-03-13T15:04:23.439Z","avatar_url":"https://github.com/openbmc.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# libpldm\n\nThis is a library which deals with the encoding and decoding of PLDM messages.\nIt should be possible to use this library by projects other than OpenBMC, and\nhence certain constraints apply to it:\n\n- keeping it light weight\n- implementation in C\n- minimal dynamic memory allocations\n- endian-safe\n- no OpenBMC specific dependencies\n\nSource files are named according to the PLDM Type, for eg base.[h/c], fru.[h/c],\netc.\n\nGiven a PLDM command \"foo\", the library will provide the following API: For the\nRequester function:\n\n```c\nencode_foo_req() - encode a foo request\ndecode_foo_resp() - decode a response to foo\n```\n\nFor the Responder function:\n\n```c\ndecode_foo_req() - decode a foo request\nencode_foo_resp() - encode a response to foo\n```\n\nThe library also provides API to pack and unpack PLDM headers.\n\n## To Build\n\n`libpldm` is configured and built using `meson`. Python's `pip` or\n[`pipx`][pipx] can be used to install a recent version on your machine:\n\n[pipx]: https://pipx.pypa.io/latest/\n\n```sh\npipx install meson\n```\n\nOnce `meson` is installed:\n\n```sh\nmeson setup build \u0026\u0026 meson compile -C build\n```\n\n## To run unit tests\n\n```sh\nmeson test -C build\n```\n\n## Working with `libpldm`\n\nComponents of the library ABI[^1] (loosely, functions) are separated into three\ncategories:\n\n[^1]: [\"library API + compiler ABI = library ABI\"][libstdc++-library-abi]\n\n[libstdc++-library-abi]:\n  https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html\n\n1. Stable\n2. Testing\n3. Deprecated\n\nApplications depending on `libpldm` should aim to only use functions from the\nstable category. However, this may not always be possible. What to do when\nrequired functions fall into the deprecated or testing categories is discussed\nin [CONTRIBUTING](CONTRIBUTING.md#Library-background).\n\n### Upgrading libpldm\n\nlibpldm is maintained with the expectation that users move between successive\nreleases when upgrading. This constraint allows the library to reintroduce types\nand functions of the same name in subsequent releases in the knowledge that\nthere are no remaining users of previous definitions. While strategies are\nemployed to avoid breaking existing APIs unnecessarily, the library is still to\nreach maturity, and we must allow for improvements to be made in the design.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenbmc%2Flibpldm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenbmc%2Flibpldm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenbmc%2Flibpldm/lists"}