{"id":28061927,"url":"https://github.com/swesterfeld/lv2lint","last_synced_at":"2025-05-12T10:31:15.948Z","repository":{"id":245348003,"uuid":"817983232","full_name":"swesterfeld/lv2lint","owner":"swesterfeld","description":"Patched version of lv2lint","archived":false,"fork":false,"pushed_at":"2024-06-20T21:45:21.000Z","size":406,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-06-21T16:28:53.092Z","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":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/swesterfeld.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","contributing":null,"funding":null,"license":"LICENSES/Artistic-2.0.txt","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-20T21:28:59.000Z","updated_at":"2024-06-21T16:29:45.135Z","dependencies_parsed_at":"2024-06-21T16:29:44.750Z","dependency_job_id":"efae620c-67aa-4d65-b233-88b6c54f0658","html_url":"https://github.com/swesterfeld/lv2lint","commit_stats":null,"previous_names":["swesterfeld/lv2lint"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swesterfeld%2Flv2lint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swesterfeld%2Flv2lint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swesterfeld%2Flv2lint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swesterfeld%2Flv2lint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/swesterfeld","download_url":"https://codeload.github.com/swesterfeld/lv2lint/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253719894,"owners_count":21952907,"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":"2025-05-12T10:31:15.116Z","updated_at":"2025-05-12T10:31:15.878Z","avatar_url":"https://github.com/swesterfeld.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\n  -- SPDX-FileCopyrightText: Hanspeter Portner \u003cdev@open-music-kontrollers.ch\u003e\n  -- SPDX-License-Identifier: CC0-1.0\n  --\u003e\n## lv2lint\n\n### Check whether a given LV2 plugin is up to the specification\n\n[![builds.sr.ht status](https://builds.open-music-kontrollers.ch/~hp/lv2lint.svg)](https://builds.open-music-kontrollers.ch/~hp/lv2lint?)\n\nAn LV2 lint-like tool that checks whether a given plugin and its UI(s) match up\nwith the provided metadata and adhere to well-known best practices.\n\nRun it as part of your continuous integration pipeline together with\nlv2/sord\\_validate to reduce the likelihood of shipping plugins with major flaws\nin order to prevent unsatisfied users.\n\n*Note: This is an early release, if you happen to find false-positive warnings\nwhen using this tool, please report back, so it can be fixed.*\n\n### Packages\n\n* [ArchLinux](https://www.archlinux.org/packages/community/x86_64/lv2lint/)\n\n### Dependencies\n\n#### Mandatory\n\n* [LV2](http://lv2plug.in/) (LV2 Plugin Standard)\n* [lilv](https://drobilla.net/software/lilv/) (LV2 plugin host library)\n\n#### Optional\n\n* [libcurl](https://curl.haxx.se/libcurl/) (The multiprotocol file transfer library)\n* [libelf](https://sourceware.org/elfutils/) (ELF object file access library)\n* [libX11](https://www.xorg) (X Window System)\n\nlv2lint can optionally test your plugin URIs for existence. If you want that,\nyou need to enable it at compile time (-Donline-tests=enabled) and link to libcurl.\nYou will also need to enable it at run-time (-o), e.g. double-opt-in.\n\nlv2lint can optionally test your plugin symbol visibility and link dependencies.\nIf you want that, you need to enable it at compile time (-Delf-tests=enabled) and\nlink to libelf.\n\nlv2lint can optionally test your plugin X11 UI instantiation.\nIf you want that, you need to enable it at compile time (-Dx11-tests=enabled) and\nlink to libX11.\n\n### Build / install\n\n\tgit clone https://git.open-music-kontrollers.ch/~hp/lv2lint\n\tcd lv2lint\n\tmeson -Donline-tests=enabled -Delf-tests=enabled -Dx11-tests=enabled build\n\tcd build\n\tninja\n\tsudo ninja install\n\n#### Compile options\n\n* online-tests (check URIs via libcurl, default=off)\n* elf-tests (check shared object link symbols and dependencies, default=off)\n\n### Usage\n\nInformation about the command line arguments are described in the man page:\n\n\tman 1 lv2lint\n\nAn __acceptable plugin__ *SHOULD* pass without triggering any fails, this is\nalso the default configuration:\n\n\tlv2lint -I ${MY_BUNDLE_DIR} http://lv2plug.in/plugins/eg-scope#Stereo\n\nA __good plugin__ *SHOULD* pass without triggering any warnings:\n\n\tlv2lint -I ${MY_BUNDLE_DIR} -E warn http://lv2plug.in/plugins/eg-scope#Stereo\n\nA __perfect plugin__ *SHOULD* pass without triggering any warnings or notes:\n\n\tlv2lint -I ${MY_BUNDLE_DIR} -E warn -E note http://lv2plug.in/plugins/eg-scope#Stereo\n\nIf you get any warnings or notes, you can enable debugging output to help you\nfix the problems:\n\n\tlv2lint -d -I ${MY_BUNDLE_DIR} -E warn -E note http://lv2plug.in/plugins/eg-scope#Stereo\n\nBy default, lv2lint runs in packager mode and skips some tests. The latter are\nimportant only for plugins that are distributed in binary form by the developer directly.\nTo activate those tests, run in (nopack)ager mode:\n\n\tlv2lint -I ${MY_BUNDLE_DIR} -M nopack http://lv2plug.in/plugins/eg-scope#Stereo\n\nIf you want to skip some tests (because you know that they fail), you can do\nso by specifying patterns for tests and plugin/and or ui URI on the command line.\n\nE.g. to skip tests about missing version information:\n\n\tlv2lint -I ${MY_BUNDLE_DIR} -t '*version*' urn:example:myplug#mono\n\nE.g. to skip all tests that are dsp-related (and only honor ui-related ones):\n\n\tlv2lint -I ${MY_BUNDLE_DIR} -u urn:example:myplug#mono -t '*' urn:example:myplug#mono\n\nE.g. to skip all tests that are ui-related (and only honor dsp-related ones):\n\n\tlv2lint -I ${MY_BUNDLE_DIR} -u urn:example:myplug#ui -t '*' urn:example:myplug#mono\n\nE.g. to skip tests about extension data only on the ui:\n\n\tlv2lint -I ${MY_BUNDLE_DIR} -u urn:example:myplug#ui -t '*extension*data*' urn:example:myplug#mono\n\n\n### Issues/Patches\n\nPlease report issues to [https://todo.open-music-kontrollers.ch/~hp/issues](https://todo.open-music-kontrollers.ch/~hp/issues)\n\nPlease submit patches to [https://lists.open-music-kontrollers.ch/~hp/patches](https://lists.open-music-kontrollers.ch/~hp/patches)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fswesterfeld%2Flv2lint","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fswesterfeld%2Flv2lint","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fswesterfeld%2Flv2lint/lists"}