{"id":15565559,"url":"https://github.com/jelmer/lintian-brush","last_synced_at":"2025-07-04T13:02:22.270Z","repository":{"id":44173420,"uuid":"160117809","full_name":"jelmer/lintian-brush","owner":"jelmer","description":"Mirror of https://salsa.debian.org/jelmer/lintian-brush","archived":false,"fork":false,"pushed_at":"2024-11-25T19:03:18.000Z","size":6033,"stargazers_count":6,"open_issues_count":2,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-12T18:50:37.477Z","etag":null,"topics":["debian","lintian"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jelmer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"jelmer"}},"created_at":"2018-12-03T01:54:57.000Z","updated_at":"2024-11-25T19:03:14.000Z","dependencies_parsed_at":"2024-05-03T18:09:02.433Z","dependency_job_id":"3fbb3c26-fb9e-46a6-b65f-70bf35f3599d","html_url":"https://github.com/jelmer/lintian-brush","commit_stats":null,"previous_names":[],"tags_count":116,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jelmer%2Flintian-brush","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jelmer%2Flintian-brush/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jelmer%2Flintian-brush/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jelmer%2Flintian-brush/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jelmer","download_url":"https://codeload.github.com/jelmer/lintian-brush/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235049011,"owners_count":18927715,"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":["debian","lintian"],"created_at":"2024-10-02T16:59:09.656Z","updated_at":"2025-07-04T13:02:22.255Z","avatar_url":"https://github.com/jelmer.png","language":"Rust","funding_links":["https://github.com/sponsors/jelmer"],"categories":[],"sub_categories":[],"readme":"lintian-brush\n=============\n\nThis package contains a set of scripts to automatically fix some common issues in\nDebian packages.\n\nRunning lintian-brush\n---------------------\n\nSimply run::\n\n```shell\nlintian-brush\n```\n\nin the top-level of your (version controlled) Debian package.\n\n.. _supported-tags:\n\nSupported tags\n--------------\n\nThe current set of lintian tags for which a fixer is available that can fix a\nsubset of the issues:\n\n* adopted-extended-field\n* ancient-python-version-field\n* ancient-standards-version\n* autotools-pkg-config-macro-not-cross-compilation-safe\n* build-depends-on-build-essential\n* build-depends-on-obsolete-package\n* built-using-field-on-arch-all-package\n* carriage-return-line-feed\n* comma-separated-files-in-dep5-copyright\n* copyright-does-not-refer-to-common-license-file\n* copyright-file-contains-full-apache-2-license\n* copyright-file-contains-full-gfdl-license\n* copyright-file-contains-full-gpl-license\n* copyright-has-crs\n* copyright-not-using-common-license-for-apache2\n* copyright-not-using-common-license-for-gfdl\n* copyright-not-using-common-license-for-gpl\n* copyright-not-using-common-license-for-lgpl\n* copyright-refers-to-symlink-license\n* copyright-refers-to-versionless-license-file\n* custom-compression-in-debian-source-options\n* cute-field\n* debhelper-but-no-misc-depends\n* debhelper-tools-from-autotools-dev-are-deprecated\n* debian-changelog-file-contains-obsolete-user-emacs-settings\n* debian-changelog-has-wrong-day-of-week\n* debian-changelog-line-too-long\n* debian-control-has-empty-field\n* debian-control-has-obsolete-dbg-package\n* debian-control-has-unusual-field-spacing\n* debian-pycompat-is-obsolete\n* debian-pyversions-is-obsolete\n* debian-rules-calls-pwd\n* debian-rules-contains-unnecessary-get-orig-source-target\n* debian-rules-missing-recommended-target\n* debian-rules-not-executable\n* debian-rules-parses-dpkg-parsechangelog\n* debian-rules-sets-dpkg-architecture-variable\n* debian-rules-uses-as-needed-linker-flag\n* debian-rules-uses-special-shell-variable\n* debian-rules-uses-unnecessary-dh-argument\n* debian-tests-control-and-control-autodep8\n* debian-tests-control-autodep8-is-obsolete\n* debian-upstream-obsolete-path\n* debian-watch-contains-dh_make-template\n* debian-watch-does-not-check-openpgp-signature\n* debian-watch-file-is-missing\n* debian-watch-file-pubkey-file-is-missing\n* debian-watch-file-uses-deprecated-githubredir\n* debian-watch-uses-insecure-uri\n* debug-symbol-migration-possibly-complete\n* declares-possibly-conflicting-debhelper-compat-versions\n* dep3-format-patch-author-or-from-is-better\n* dep5-file-paragraph-references-header-paragraph\n* desktop-entry-contains-encoding-key\n* desktop-entry-file-has-crs\n* dh-clean-k-is-deprecated\n* dh-quilt-addon-but-quilt-source-format\n* dm-upload-allowed-is-obsolete\n* empty-debian-tests-control\n* excessive-priority-for-library-package\n* executable-desktop-file\n* extended-description-contains-empty-paragraph\n* extended-description-is-empty\n* faulty-debian-qa-group-phrase\n* field-name-typo-in-dep5-copyright\n* font-package-not-multi-arch-foreign\n* global-files-wildcard-not-first-paragraph-in-dep5-copyright\n* homepage-field-uses-insecure-uri\n* homepage-in-binary-package\n* initial-upload-closes-no-bugs\n* insecure-copyright-format-uri\n* installable-field-mirrors-source\n* invalid-short-name-in-dep5-copyright\n* invalid-standards-version\n* libmodule-build-perl-needs-to-be-in-build-depends\n* license-file-listed-in-debian-copyright\n* maintainer-also-in-uploaders\n* maintainer-script-empty\n* maintainer-script-without-set-e\n* malformed-dm-upload-allowed\n* malformed-override\n* mismatched-override\n* missing-build-dependency-for-dh-addon\n* missing-build-dependency-for-dh_-command\n* missing-built-using-field-for-golang-package\n* missing-debian-source-format\n* missing-prerequisite-for-pyproject-backend\n* missing-vcs-browser-field\n* misspelled-closes-bug\n* new-package-uses-date-based-version-number\n* no-copyright-file\n* no-homepage-field\n* no-versioned-debhelper-prerequisite\n* obsolete-debian-watch-file-standard\n* obsolete-field-in-dep5-copyright\n* obsolete-runtime-tests-restriction\n* obsolete-url-in-packaging\n* obsolete-vim-addon-manager\n* old-dpmt-vcs\n* old-fsf-address-in-copyright-file\n* old-papt-vcs\n* old-source-override-location\n* older-debian-watch-file-standard\n* older-source-format\n* out-of-date-copyright-format-uri\n* out-of-date-standards-version\n* package-contains-linda-override\n* package-uses-deprecated-debhelper-compat-version\n* package-uses-old-debhelper-compat-version\n* patch-file-present-but-not-mentioned-in-series\n* pkg-js-tools-test-is-missing\n* possible-missing-colon-in-closes\n* priority-extra-is-replaced-by-priority-optional\n* public-upstream-key-in-native-package\n* public-upstream-key-not-minimal\n* public-upstream-keys-in-multiple-locations\n* pypi-homepage\n* python-teams-merged\n* quilt-series-but-no-build-dep\n* quilt-series-without-trailing-newline\n* recommended-field\n* renamed-tag\n* required-field\n* rubygem-homepage\n* silent-on-rules-requiring-root\n* space-in-std-shortname-in-dep5-copyright\n* systemd-service-alias-without-extension\n* systemd-service-file-refers-to-obsolete-bindto\n* systemd-service-file-refers-to-obsolete-target\n* systemd-service-file-refers-to-var-run\n* systemd-service-file-shutdown-problems\n* tab-in-license-text\n* team/pkg-perl/testsuite/no-testsuite-header\n* team/pkg-perl/vcs/no-git\n* team/pkg-perl/vcs/no-team-url\n* trailing-whitespace\n* transitional-package-not-oldlibs-optional\n* typo-in-debhelper-override-target\n* unnecessary-team-upload\n* unnecessary-testsuite-autopkgtest-field\n* unused-build-dependency-on-cdbs\n* unused-license-paragraph-in-dep5-copyright\n* unused-override\n* unversioned-copyright-format-uri\n* uploaders-in-orphan\n* upstream-metadata-file-is-missing\n* upstream-metadata-in-native-source\n* upstream-metadata-missing-bug-tracking\n* upstream-metadata-missing-repository\n* upstream-metadata-not-yaml-mapping\n* upstream-metadata-yaml-invalid\n* useless-autoreconf-build-depends\n* uses-debhelper-compat-file\n* uses-deprecated-adttmp\n* vcs-field-bitrotted\n* vcs-field-mismatch\n* vcs-field-not-canonical\n* vcs-field-uses-insecure-uri\n* vcs-field-uses-not-recommended-uri-format\n* vcs-obsolete-in-debian-infrastructure\n* wrong-section-according-to-package-name\n\n.. _writing-fixers:\n\nWriting new fixers\n------------------\n\nFor a more extensive write-up, see the\n[guide on writing fixers](doc/fixer-writing-guide.rst).\n\nIdeally, fixers target a particular set of lintian tags. This is not strictly\nrequired, but makes it possible to easily find all packages that a particular\nfixer can be used on.\n\nEach fixer is a simple script that lives under ``fixers``. Scripts should\nbe registered in the ``index.desc`` file in the same directory.\n\nA fixer is run in the root directory of a package, where it can make changes\nit deems necessary. If a fixer can not provide any improvements, it can simply\nleave the working tree untouched - lintian-brush will not create any commits for it\nor update the changelog. If exits with a non-zero return code, whatever changes\nit has made will be discarded and the fixer will be reported as having failed.\n\nThe following additional environment variables are set:\n\n * ``DEB_SOURCE``: The name of the source package that is being edited.\n * ``CURRENT_VERSION``: Package version that is being edited.\n * ``COMPAT_RELEASE``: Debian release to be compatible with. Usually ``sid``\n   when --modern was specified and the name of the current stable release otherwise.\n * ``NET_ACCESS``: Whether the fixer is allowed to make network connections\n   (e.g. sending HTTP requests). Used by --disable-net-access and the testsuite.\n   Set to either ``allow`` or ``disallow``.\n * ``OPINIONATED``: Set to ``yes`` or ``no``. If ``no``, fixers are not expected\n   to make changes in which there is no obvious single correct fix.\n\nFor fixer written in python, the ``lintian_brush.fixer`` module can be used for\nconvenient access to these variables.\n\nA fixer should write a short description of the changes it has made to standard\nout; this will be used for the commit message.\n\nIt can include optional metadata in its output::\n\n * ``Fixed-Lintian-Tags:`` followed by a comma-separated list of lintian tags\n   that it claims to have fixed. This will make lintian-brush include\n   links to documentation about the fixed lintian tags. In the future,\n   it may also support building the package to verify the lintian tag\n   is actually resolved.\n\n * ``Certainty:`` followed by ``certain``, ``confident``, ``likely`` or\n   ``possible``, indicating how certain the fixer is that the fix was the right\n   one.\n\nThe default minimum certainty level is \"certain\"; any incorrect change made\nwith certainty \"certain\" is considered *at least* a normal-severity bug.\n\nThe easiest way to test fixers is to create a skeleton *in* and *out* source\ntree under ``tests/FIXER-NAME/TEST-NAME``. The ``in`` directory should contain\nthe tree to run the fixer on, and ``out`` contains the directory after it has\nrun. It's fine to create directories with only one or two control files, if the\nfixer only needs those. To run the tests for a single fixer, you can use \"make\ncheck-fixer-$NAME\".\n\nGitHub Action\n-------------\n\nIf you're hosting a Git repository on GitHub, you can use the [lintian-brush\nGitHub action](https://github.com/gizmoguy/action-lintian-brush) to\nautomatically run lintian-brush.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjelmer%2Flintian-brush","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjelmer%2Flintian-brush","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjelmer%2Flintian-brush/lists"}