{"id":18368619,"url":"https://github.com/openbmc/libcper","last_synced_at":"2026-03-14T12:45:39.867Z","repository":{"id":244846308,"uuid":"814322977","full_name":"openbmc/libcper","owner":"openbmc","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-31T04:23:30.000Z","size":3136,"stargazers_count":2,"open_issues_count":1,"forks_count":4,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-03-31T05:20:39.402Z","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":null,"contributing":null,"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}},"created_at":"2024-06-12T19:28:31.000Z","updated_at":"2025-03-31T04:08:29.000Z","dependencies_parsed_at":"2024-11-12T18:34:01.238Z","dependency_job_id":"6e0d7fc7-0e10-4fa6-918a-0498af2559e4","html_url":"https://github.com/openbmc/libcper","commit_stats":null,"previous_names":["openbmc/libcper"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openbmc%2Flibcper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openbmc%2Flibcper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openbmc%2Flibcper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openbmc%2Flibcper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openbmc","download_url":"https://codeload.github.com/openbmc/libcper/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247522367,"owners_count":20952533,"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-11-05T23:26:45.849Z","updated_at":"2026-03-14T12:45:39.862Z","avatar_url":"https://github.com/openbmc.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CPER JSON Representation \u0026 Conversion Library\n\nThis repository specifies a structure for representing UEFI CPER records (as\ndescribed in UEFI Specification Appendix N) in a human-readable JSON format, in\naddition to a library which can readily convert back and forth between the\nstandard CPER binary format and the specified structured JSON.\n\n## Prerequisites\n\nBefore building this library and its associated tools, you must have meson\n(\u003e=1.1.1)\n\n## Building\n\nThis project uses Meson (\u003e=1.1.1). To build for native architecture, simply run:\n\n```sh\nmeson setup build\nninja -C build\n```\n\n## Usage\n\nThis project comes with several binaries to help you deal with CPER binary and\nCPER-JSON. The first of these is `cper-convert`, which is a command line tool\nthat can be found in `build/`. With this, you can convert to and from CPER and\nCPER-JSON through the command line. An example usage scenario is below:\n\n```sh\nbuild/cper-convert to-cper examples/arm.json --out cper.dump\nbuild/cper-convert to-json cper.dump\n```\n\nAnother tool bundled with this repository is `cper-generate`, found in `build/`.\nThis allows you to generate pseudo-random valid CPER records with sections of\nspecified types for testing purposes. An example use of the program is below:\n\n```sh\nbuild/cper-generate --out cper.generated.dump --sections generic ia32x64\n```\n\nHelp for both of these tools can be accessed through using the `--help` flag in\nisolation.\n\nFinally, a static library containing symbols for converting CPER and CPER-JSON\nbetween an intermediate JSON format can be found generated at\n`lib/libcper-parse.a`. This contains the following useful library symbols:\n\n```sh\njson_object* cper_to_ir(FILE* cper_file);\nvoid ir_to_cper(json_object* ir, FILE* out);\n```\n\n## Specification\n\nThe specification for this project's CPER-JSON format can be found in\n`specification/`, defined in both JSON Schema format and also as a LaTeX\ndocument. Specification for the CPER binary format can be found in\n[UEFI Specification Appendix N](https://uefi.org/sites/default/files/resources/UEFI_Spec_2_9_2021_03_18.pdf)\n(2021/03/18).\n\n## Usage Examples\n\nThis library is utilised in a proof of concept displaying CPER communication\nbetween a SatMC and OpenBMC board, including a conversion into CPER JSON for\nlogging that utilises this library. You can find information on how to reproduce\nthe prototype at the\n[scripts repository](https://gitlab.arm.com/server_management/cper-poc-scripts),\nand example usage of the library itself at the\n[pldm](https://gitlab.arm.com/server_management/pldm) repository.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenbmc%2Flibcper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenbmc%2Flibcper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenbmc%2Flibcper/lists"}