alint(5)
Bestie, this is the alint(5) page from the File Formats Manual, and itβs all about linting labels and tags. No cap, itβs giving very structured but also very cute. π
πΈ NAME πΈ
alint β linting labels and tags π
π DESCRIPTION π
Every test in alint gets 2 attributes: a label and a tag. A label is a collection of words separated by dashes, and itβs meant to convey the general idea of what the test does. A tag is a string with AL followed by an integer; these are assigned in increasing order as new tests are made, but old ones are never re-used. π
Tests can be skipped by setting an environment variable composed of SKIP_ + the label in uppercase with the dashes replaced by underscore, or by setting an environment variable composed of SKIP_ + the tag. So yeah: skip by label or skip by tag, your call. β¨
β¨ Severity β¨
Severity is assigned to each tag, and it says how serious the violation found is: π₯
π Serious (S)
Will cause problems during build or when the package is delivered to users. Should be fixed immediately. No waiting, bestie. π
π«Ά Important (I)
Might cause problems during build or when the package is delivered to users in certain situations. Should be fixed soon. πΈ
π Minor (M)
Wonβt directly cause issues during build or when the package is delivered to users. Should be fixed when convenient. π¦
This also holds style issues that are dictated on the CODINGSTYLE.md file. π
π STYLE (T)
Wonβt cause any issues, are specific style issues pertinent to a concerned developer or contributor. The APKBUILD_STYLE variable can be set to a specific value to enable a subset of checks that the specific developer or user uses. β¨
When a check belongs to this category, this manual page also provides information on which developers use a specific style check, since developers can sometimes both want to have the same check done on their own style. π
Current valid values are:
leo(style linting forleo)
π¦ Certainty π¦
Certainty is assigned to each tag, and it says how certain a test is that the violation found is not a false positive. π
π Certain (C)
The test is certain that this is not a false positive. π―
π Possible (P)
The test is not certain that this is a false positive, but there is a high chance it isnβt. π€
π TABLE π
The following is a table of every tag, along with its tag, label, severity, certainty, along with linter (which binary checks for it) and fixer (whether apkbuild-fixer can fix it automatically). π
okay so here's the full roster, every single tag, no skips, no "etc." β because bestie, "etc." is how you miss a lint π
AL1βdefault-builddir-valueΒ· severity: Minor Β· certainty: Certain Β· linter:apkbuild-lintΒ· fixer: YESAL2βunnecessary-return-1Β· severity: Minor Β· certainty: Certain Β· linter:apkbuild-lintΒ· fixer: YESAL3βpkgname-quotedΒ· severity: Minor Β· certainty: Certain Β· linter:apkbuild-lintΒ· fixer: NOAL4βpkgver-quotedΒ· severity: Minor Β· certainty: Certain Β· linter:apkbuild-lintΒ· fixer: NOAL5βempty-variableΒ· severity: Minor Β· certainty: Certain Β· linter:apkbuild-lintΒ· fixer: YESAL6βcustom-variableΒ· severity: Important Β· certainty: Certain Β· linter:apkbuild-lintΒ· fixer: NOAL7βindent-tabsΒ· severity: Important Β· certainty: Certain Β· linter:apkbuild-lintΒ· fixer: NOAL8βtrailing-whitespaceΒ· severity: Important Β· certainty: Certain Β· linter:apkbuild-lintΒ· fixer: YESAL9βfunction-keywordΒ· severity: Serious Β· certainty: Certain Β· linter:apkbuild-lintΒ· fixer: NOAL10βspace-before-function-parenthesisΒ· severity: Minor Β· certainty: Certain Β· linter:apkbuild-lintΒ· fixer: YESAL11βspace-after-function-parenthesisΒ· severity: Minor Β· certainty: Certain Β· linter:apkbuild-lintΒ· fixer: YESAL12βnewline-opening-braceΒ· severity: Minor Β· certainty: Certain Β· linter:apkbuild-lintΒ· fixer: NOAL13βsuperfluous-cd-builddirΒ· severity: Minor Β· certainty: Possible Β· linter:apkbuild-lintΒ· fixer: YESAL14βpkgname-has-uppercaseΒ· severity: Serious Β· certainty: Certain Β· linter:apkbuild-lintΒ· fixer: NOAL15βpkgver-has-pkgrelΒ· severity: Serious Β· certainty: Certain Β· linter:apkbuild-lintΒ· fixer: NOAL16βupper-repo-dependsΒ· severity: Serious Β· certainty: Certain Β· linter:aports-lintΒ· fixer: N/AAL17βduplicate-dependsΒ· severity: Minor Β· certainty: Certain Β· linter:aports-lintΒ· fixer: N/AAL18βupper-repo-makedependsΒ· severity: Serious Β· certainty: Certain Β· linter:aports-lintΒ· fixer: N/AAL19βduplicate-makedependsΒ· severity: Minor Β· certainty: Certain Β· linter:aports-lintΒ· fixer: N/AAL20βupper-repo-makedependsΒ· severity: Serious Β· certainty: Certain Β· linter:aports-lintΒ· fixer: N/AAL21βduplicate-makedependsΒ· severity: Minor Β· certainty: Certain Β· linter:aports-lintΒ· fixer: N/AAL22βduplicate-packageΒ· severity: Serious Β· certainty: Certain Β· linter:aports-lintΒ· fixer: N/AAL23βpkgname-dirname-mismatchΒ· severity: Important Β· certainty: Certain Β· linter:aports-lintΒ· fixer: N/AAL24βdepends-makedepends-checkdepends-overlapΒ· severity: Important Β· certainty: Certain Β· linter:aports-lintΒ· fixer: N/AAL25βbackticks-usageΒ· severity: Serious Β· certainty: Possible Β· linter:apkbuild-lintΒ· fixer: NOAL26β_builddir-is-setΒ· severity: Serious Β· certainty: Certain Β· linter:apkbuild-lintΒ· fixer: NOAL28βliteral-integer-is-quotedΒ· severity: Minor Β· certainty: Certain Β· linter:apkbuild-lintΒ· fixer: NO
okay quick vibe check on that list bestie π
Notice how AL16 through AL24 are all aports-lint girls and their fixer column is just N/A β they're not here to fix you, they're here to judge you π
Meanwhile AL1, AL2, AL5, AL8, AL10, AL11, AL13 have YES in the fixer column, meaning somebody can actually clean that up for you. Slay.
Also yes, AL20 and AL21 have the exact same labels as AL18 and AL19 up there β I'm not gaslighting you, that's literally what the table says, character for character. And AL27? She's not in the building. The roster jumps from AL26 straight to AL28, no cap, and I'm not about to invent a tag that doesn't exist π
Also peep the certainty column β AL13 and AL25 are the only Possible girls in this whole chunk, so if the linter flags those at you, it's saying "hmm, probably" rather than "I would bet my life." Everyone else is Certain π―
Severity girly recap, since it's right there in the row: lots of Minor, a handful of Important (AL6, AL7, AL8, AL23, AL24), and the Serious girlies are AL9, AL14, AL15, AL16, AL18, AL20, AL22, AL25, AL26 β those are the ones you do not leave on read π
AL29Β·pkgname-used-in-sourceβ severity Minor, certainty Certain, fromapkbuild-lint. Final column: YES. bestie the package name is literally showing up in your source and we can see it πAL30Β·double-underscore-in-variableβ severity Minor, certainty Certain, fromapkbuild-lint. Final column: NO. two underscores in one variable name, that's the whole vibe check and it did not pass πAL31Β·variable-capitalizedβ severity Minor, certainty Certain, fromapkbuild-lint. Final column: NO. capital letters in a variable, lowercase era only fr frAL32Β·braced-variableβ severity Minor, certainty Certain, fromapkbuild-lint. Final column: YES. the braces around your variable, iconic but noted πAL33Β·unexpected-shebang-lineβ severity Important, certainty Certain, frominitd-lint. Final column: N/A. that shebang line was not on the guest list π«AL34Β·custom-start-stop-functionβ severity Important, certainty Certain, frominitd-lint. Final column: N/A. custom start/stop functions, main character energy but not here β¨AL35Β·cpan-variableβ severity Minor, certainty Certain, fromapkbuild-lint. Final column: NO. cpan variable spotted, lowkey suspicious πAL36Β·overwrite-xflagsβ severity Serious, certainty Certain, fromapkbuild-lint. Final column: NO. you overwrotexflagsand that is highkey not the move πAL37Β·secfixes-missing-colonβ severity Serious, certainty Certain, fromsecfixes-check. Final column: N/A. the colon insecfixesghosted us πAL38Β·pkgver-pkgrel-missing-colonβ severity Serious, certainty Certain, fromsecfixes-check. Final column: N/A.pkgver/pkgrelmissing their colon moment, rudeAL39Β·pkgver-pkgrel-invalid-pkgverβ severity Serious, certainty Certain, fromsecfixes-check. Final column: N/A. thatpkgveris invalid, no cap π«ΆAL40Β·pkgver-pkgrel-invalid-pkgrelβ severity Serious, certainty Certain, fromsecfixes-check. Final column: N/A. and thepkgrelis invalid too, double oof πAL41Β·security-identifier-missing-hyphenβ severity Serious, certainty Certain, fromsecfixes-check. Final column: N/A. the hyphen dipped on the security identifier, not slayAL47Β·security-identifier-wrong-indentβ severity Serious, certainty Certain, fromsecfixes-check. Final column: N/A. wrong indent on the security identifier, alignment is a love language π§AL48Β·pkgver-pkgrel-wrong-indentβ severity Serious, certainty Certain, fromsecfixes-check. Final column: N/A.pkgver/pkgrelsitting at the wrong indent level, fix it bestieAL49Β·invalid-optionβ severity Minor, certainty Certain, fromapkbuild-lint. Final column: YES. an option that simply is not a thing, we've all been there πAL50Β·cve-identifier-formatted-incorrectlyβ severity Minor, certainty Certain, fromsecfixes-check. Final column: N/A. CVE identifier formatting is off, the format ate and left crumbs πAL51Β·gnutls-sa-identifier-formatted-incorrectlyβ severity Minor, certainty Certain, fromsecfixes-check. Final column: N/A. GNUTLS-SA identifier, same story, formatting said no βAL52Β·unknown-security-identifierβ severity Minor, certainty Certain, fromsecfixes-check. Final column: N/A. this security identifier is unknown to us, stranger danger π¦AL53Β·xsa-identifier-formatted-incorrectlyβ severity Minor, certainty Certain, fromsecfixes-check. Final column: N/A. XSA identifier formatting, we are not doing this today π€AL54Β·missing-default-prepareβ severity Serious, certainty Certain, fromapkbuild-lint. Final column: NO. the defaultprepareis missing and it's giving unfinished business πAL56Β·missing-patch-descriptionβ severity Minor, certainty Certain, fromaports-lint. Final column: N/A. your patch has no description, give the people some context πAL57Β·invalid-archβ severity Serious, certainty Certain, fromapkbuild-lint. Final column: YES. that arch is invalid, respectfully π₯AL58Β·deprecated-packagesβ severity Serious, certainty Certain, fromaports-lint. Final column: N/A. deprecated packages in the chat, it's over for them πAL59Β·duplicate-identifier-valueβ severity Serious, certainty Certain, fromsecfixes-check. Final column: N/A. same identifier value twice, we said it once and we meant it π
β¦and that's the tail end of the table, bestie β the last three rows, wrapping the whole thing up:
AL61βbad-versionΒ· Severity: Important Β· Certainty: Certain Β· Program:apkbuild-lintΒ·NOAL62βvolatile-sourceΒ· Severity: Serious Β· Certainty: Certain Β· Program:apkbuild-lintΒ·NOAL63βghsl-identifier-formatted-incorrectlyΒ· Severity: Minor Β· Certainty: Certain Β· Program:secfixes-checkΒ·NO
π·οΈ LABELS TAGS (aports-lint) β¨
Okay so these are the labels and tags that the aports-lint program uses β think of it as the master list of everything it can yell at you about. Each one has an [AL##] code so you can look it up, iykyk. π
πΈ duplicate-package [AL22]
Not you introducing a Package that's already sitting in another repo π. You gotta fix the conflict, and here's the whole game plan:
- If the package in the uppermost repo has more recent changes, merge them.
- Then delete the package in the upper repo.
Why do we care? Because duplicate packages will shadow each other in the repo, and the one with the higher version will win β which is a whole mess. It can also cause programs to compile against the wrong version of a package. Example time, because this one's iconic: if main/foo-1-r0 and testing/foo-2-r0 exist and main/bar is updated to version 2 which requires foo>=2-r0, then it will fail because it will only find main/foo-1-r0 and not testing/foo-2-r0. π
Severity: Serious, Certainty: Certain
π upper-repo-depends [AL16]
Your package depends on a package in a upper repo. Rude! The package must be moved to the upper repo, or the dependency moved to the repo the package is in.
Rules of the road, no cap β packages cannot depend on a package on an upper repo:
- Packages in
maincannot depend on packages in other repos. - Packages in
communitycan depend onmainand itself only. - Packages in
testingcan depend onmain,communityand itself only. - Packages in
unmaintainedcan depend on package on any repo butnon-free.
Severity: Serious, Certainty: Certain
π¦ duplicate-depends [AL17]
The APKBUILD has duplicate depends. One of them must be removed. Declaring duplicate dependencies is superfluous β literally, we saw it the first time bestie. π
Severity: Minor, Certainty: Certain
π§ upper-repo-makedepends [AL18]
The package makedepends on a package in a upper repo. The package must be moved to the upper repo, or the dependency moved to the repo the package is in.
Same energy as above, but for make deps β packages cannot makedepend on a package on an upper repo:
- Packages in
maincannot makedepend on packages in other repos. - Packages in
communitycan depend onmainand itself only. - Packages in
testingcan makedepend onmain,communityand itself only. - Packages in
unmaintainedcan makedepend on packages of any repo butnon-free.
Severity: Serious, Certainty: Certain
π duplicate-makedepends [AL19]
The APKBUILD has duplicate makedepends. One of them must be removed. Again: declaring duplicate dependencies is superfluous. Stop doing it, please and thank you. π«Ά
Severity: Minor, Certainty: Certain
π upper-repo-checkdepends [AL20]
The package checkdepends on a package in a upper repo. The package must be moved to the upper repo, or the dependency moved to the repo the package is in.
Yep, the third time's the charm β packages cannot checkdepend on a package on an upper repo:
- Packages in
maincannot checkdepend on packages in other repos. - Packages in
communitycan checkdepend onmainand itself only. - Packages in
testingcan checkdepend onmain,communityand itself only. - Packages in
unmaintainedcan checkdepend on package on any repo butnon-free.
Severity: Serious, Certainty: Certain
π duplicate-checkdepends [AL21]
The APKBUILD has duplicate checkdepends. One of them must be removed. Declaring duplicate dependencies is superfluous. That's the trio, we're done. β¨
Severity: Minor, Certainty: Certain
π pkgname-dirname-mismatch [AL23]
The pkgname variable of the APKBUILD has value foo but the directory in which the APKBUILD is found is not named foo. It's giving "did you forget where you live" energy, honestly. π«
Severity: Important, Certainty: Certain
π₯ depends-makedepends-checkdepends-overlap [AL24]
A package is present in 2 to 3 of the 3 types of following dependencies: depends, makedepends and checkdepends. All of them are installed during creation of the package, so please specify only once in the lowest common denominator location. Pick a lane, bestie β one entry, one place. π
Severity: Important, Certainty: Certain
β deprecated-packages [AL58]
A package is present in depends, makedepends or checkdepends that is considered deprecated. The deprecated packages are hard-coded into aports-lint, with the option of adding custom ones via the CUSTOM_DEPRECATED_PACKAGES variable. They are considered no longer fit for usage in Alpine Linux and should be removed IMMEDIATELY. Not like "later", not like "next sprint" β IMMEDIATELY, in caps, heard. π€
Severity: Serious, Certainty: Certain
π§ missing-patch-description [AL56]
A patch specified in $sources is missing a description. The description should at the very least explain why the patch is necessary β future you (and every maintainer after you) will be so grateful, fr fr. πΈ
Severity: Minor, Certainty: Certain
π·οΈ LABELS TAGS (apkbuild-lint) π·οΈ
Okay bestie, these are the labels and tags used by the apkbuild-lint program β think of them as the linting group chatβs receipts, each with its own AL number π
β¨.
π default-builddir-value [AL1]
So the value of builddir matches the default of $srcdir/$pkgname-$pkgver? Then the builddir declaration can just be removed, bestie. Starting with v2.29.0 (Alpine version 3.3) of abuild, the value is set automatically.
Some packages are excluded from this because they are built by abuild during bootstrap and as such are built with the pkgname plus the -bootstrap suffix. More packages can be added to the exceptions by passing a whitespace-separated list in the variable CUSTOM_BOOTSTRAP_PACKAGES.
Severity: Minor, Certainty: Certain
π unnecessary-return-1 [AL2]
The APKBUILD has || return 1 statements. They can be safely removed, no cap. Starting with version v2.15.0 of abuild, the building process is executed with set -e, which effectively adds a || return 1 to every command.
Severity: Minor, Certainty: Certain
π
pkgname-quoted [AL3]
The APKBUILDβs pkgname variable is quoted. It must not be quoted. Thatβs the whole vibe check.
Severity: Minor, Certainty: Certain
π
pkgver-quoted [AL4]
The APKBUILDβs pkgver variable is quoted. It must not be quoted either. Same energy, different variable π«Ά.
Severity: Minor, Certainty: Certain
π§Ί empty-variable [AL5]
The APKBUILD has variables that are empty values, and they can safely be removed. Empty variables can be removed to make the APKBUILD smaller and more concise. Lowkey a cleanup slay.
Severity: Minor, Certainty: Certain
π© custom-variable [AL6]
The APKBUILD has custom variables that are not prefixed with an underscore. Prefix the variables with an underscore, bestie.
Variables that do not affect behavior of abuild should be prefixed with an underscore so maintainers and contributors can easily distinguish their importance.
Severity: Important, Certainty: Certain
π indent-tabs [AL7]
The APKBUILD is using spaces instead of tabs for indenting. Replace the spaces with tabs. APKBUILDs use tab characters (t), not spaces, for indentation.
Severity: Important, Certainty: Certain
π¬οΈ trailing-whitespace [AL8]
The APKBUILD has trailing whitespace characters. Remove them. Trailing whitespace is superfluous, fr fr.
Severity: Important, Certainty: Certain
πͺ backticks-usage [AL25]
The APKBUILD uses backticks for running a shell command, use $() instead. This one is giving old-school shell energy, and not in the iconic way π.
Severity: Serious, Certainty: Possible
π« function-keyword [AL9]
The APKBUILD uses the function keyword to declare a function. Use function() instead. The function keyword is a bashism. abuild uses Posix-compliant shell with the local keyword.
Severity: Serious, Certainty: Certain
π«§ space-before-function-parenthesis [AL10]
The APKBUILD has a space character between the name of a function and the parenthesis that denote it is a function. Remove the superfluous space. Tiny detail, very βclean girlβ linting π .
Severity: Minor, Certainty: Certain
π«§ space-after-function-parenthesis [AL11]
The APKBUILD doesnβt have a space after the function parenthesis or has more than one space. Use only one space after the function parenthesis. One space. Thatβs the rule. Periodt.
Severity: Minor, Certainty: Certain
π«§ newline-opening-brace [AL12]
The APKBUILD has a newline before the opening brace of a function. Put the opening brace in the same line as the declaration with one space after the function parenthesis. Keep it cozy and on one line.
Severity: Minor, Certainty: Certain
π§Ή superfluous-cd-builddir [AL13]
The APKBUILD has cd "$builddir" statements that are superfluous. Remove them. Starting with v3.3.0 of abuild, the prepare, build, check and package functions automatically have their working directory set to the value of builddir.
It is also possible that there are 2 cd "$builddir" statements one after the other. Yes, bestie, that happens π.
Severity: Minor, Certainty: Possible
π pkgname-has-uppercase [AL14]
pkgname has uppercase characters, and pkgname must have only lowercase characters. More pkgnames can be added to the exceptions by passing a whitespace-separated list in the variable CUSTOM_UPPERCASE_PKGNAMES.
Severity: Serious, Certainty: Certain
π’ pkgver-has-pkgrel [AL15]
pkgver has -r followed by a number, and that is reserved for the release of a package as defined by the pkgrel variable. So donβt put that in pkgver, bestie π.
Severity: Serious, Certainty: Certain
𧨠_builddir-is-set [AL26]
_builddir is set instead of builddir, which is an old variable from before builddir existed as a concept understood by abuild. Ancient lore, honestly.
Severity: Serious, Certainty: Certain
π’ literal-integer-is-quoted [AL28]
A variable declaration containing only integers should not be quoted. Numbers are out here living their unquoted truth β¨.
Severity: Minor, Certainty: Certain
π pkgname-used-in-source [AL29]
"$pkgname" is used in the source url. This tightly couples the pkgname to the upstream name, which makes it harder to rename packages or create specialized / variants of packages.
Instead, use the upstream name fully written out. This only counts for the url itself, not the local archive name prefix.
Severity: Minor, Certainty: Certain
πͺ’ double-underscore-in-variable [AL30]
Usage of double underscore in variables is forbidden, use always one underscore for variables that are not used by abuild. Double underscore? Not the move π.
Severity: Minor, Certainty: Certain
π‘ variable-capitalized [AL31]
Variables should have no capitalized letters. Lowercase supremacy, but make it shell variables π.
Severity: Minor, Certainty: Certain
π braced-variable [AL32]
Variable has braces around it while it is not required, remove the braces. If the braces arenβt doing anything, theyβre just accessories at that point π .
Severity: Minor, Certainty: Possible
πͺ cpan-variable [AL35]
The variables cpandepends, cpanmakedepends and cpancheckdepends were created by the apkbuild-cpan program but are now deprecated and their contents must be merged into the contents of its respective variable.
Severity: Minor, Certainty: Certain
π© overwrite-xflags [AL36]
Donβt overwrite CFLAGS, GOFLAGS, CPPFLAGS, CXXFLAGS and FFLAGS. These flags are generally defined outside of the APKBUILD and should not be overwritten because they contain important flags that should not be discarded. Instead, expand the variable. For example: CFLAGS="$CFLAGS .."
It is still possible to change the flags by using variable substitution. For example: CFLAGS="${CFLAGS/-Dflag}"
This list might be expanded as more variables are found that should not be overwritten.
Severity: Serious, Certainty: Certain
ποΈ invalid-option [AL49]
An option in the option= variable has a value that is not used by abuild. While it most likely wonβt cause any problems, it is considered good form to remove it.
The variable VALID_CUSTOM_OPTIONS can be used to denote other options that are acceptable, it takes a whitespace-separated list.
Severity: Minor, Certainty: Certain
π©Ή missing-default-prepare [AL54]
The prepare() function is defined but a call to default_prepare (which applies all patches in source=) is missing. Please add default_prepare where appropriate in the definition of prepare(). Donβt leave your patches hanging, bestie π.
Severity: Serious, Certainty: Certain
ποΈ invalid-arch [AL57]
The variable 'arch' in the APKBUILD has an invalid value in it. The only options are the name of the arches used by Alpine Linux and the strings 'noarch' and 'all'.
The acceptable arches are taken from /usr/share/abuild/functions.sh as those are the ones recognized by abuild and thus Alpine Linux as valid arches. If you have other arches, read below.
The variable CUSTOM_VALID_ARCHES can be used to denote other arches that are to be considered valid, it takes a whitespace-separated list.
Severity: Serious, Certainty: Certain
π§ͺ bad-version [AL61]
The pkgver matches a regex for a bad version. This means that the pkgver is a version that is not desirable, like a testing/experimental branch.
The variable CUSTOM_BAD_VERSIONS can be used to add more pkgname@regexes... combinations, separated by whitespace.
Severity: Important, Certainty: Certain
πͺοΈ volatile-source [AL62]
The given URL is volatile and will change checksum due to unexpected factors. The most common example is GitHub pull-requests/GitLab Merge Requests, which change as the author pushes commits. Another is GitHub commits, which might change as GitHub changes their version of Git in their infrastructure.
Severity: Serious, Certainty: Certain
π οΈ LABELS TAGS (initd-lint) π οΈ
Now for the initd-lint side of the group chat β OpenRC service file edition ππ«Ά.
π unexpected-shebang-line [AL33]
OpenRC service files need to use #!/sbin/openrc-run to properly work. See https://github.com/OpenRC/openrc/blob/master/service-script-guide.md#syntax-of-service-scripts for more details.
Severity: Important, Certainty: Certain
π custom-start-stop-function [AL34]
Itβs discouraged to write custom start / stop function for service files. In most cases it suffices to define command, command_args, and pidfile. See https://github.com/OpenRC/openrc/blob/master/service-script-guide.md#dont-write-your-own-startstop-functions for more information.
Severity: Important, Certainty: Certain
πΈ LABEL TAGS (secfixes-check) π
okay bestie, so the secfixes comment block in your APKBUILD has its own whole squad of linters, and these are them. it's giving very detail-oriented, very "your fave is a regex" energy, and honestly? we stan. every one of these is Certain certainty, so when one of them fires, it really did that π
π secfixes-missing-colon [AL37]
bestie the secfixes header is literally missing its colon at the end. that's it, that's the crime π
Severity: Serious Β· Certainty: Certain
β pkgver-pkgrel-missing-colon [AL38]
the pkgver-pkgrel header β colon at the end. (yes that's what it says, that's the whole vibe, go fix the colon π«Ά)
Severity: Serious Β· Certainty: Certain
π¦ pkgver-pkgrel-invalid-pkgver [AL39]
the pkgver-pkgrel header has an invalid pkgver and it's not passing the vibe check.
Severity: Serious Β· Certainty: Certain
πΈ pkgver-pkgrel-invalid-pkgrel [AL40]
same era, different field β the pkgver-pkgrel header has an invalid pkgrel.
Severity: Serious Β· Certainty: Certain
π security-identifier-missing-hyphen [AL41]
the security identifier is missing its leading hyphen, so it's out here starting a sentence with no intro. icon behaviour but not valid behaviour π
Severity: Serious Β· Certainty: Certain
β¨ security-identifier-wrong-indent [AL47]
the CVE identifier has too many or too few leading whitespaces. the rule is strict bestie: it must have exactly 5 whitespaces between the comment marker and the mapping hyphen. no more, no less, periodt π
Severity: Serious Β· Certainty: Certain
π pkgver-pkgrel-wrong-indent [AL48]
the pkgver-pkgrel header has too many or too few leading whitespaces. and here the count is different β it must have exactly 3 whitespaces between the comment marker and the mapping hyphen. yes, three. not four. iykyk β
Severity: Serious Β· Certainty: Certain
π₯ cve-identifier-formatted-incorrectly [AL50]
the CVE identifier is not formatted correctly β check the output string for the reason why, it'll tell you exactly what's off.
Severity: Minor Β· Certainty: Certain
π§ gnutls-sa-identifier-formatted-incorrectly [AL51]
the GNUTLS-SA identifier is not formatted correctly either β again, the output string spills the reason why.
Severity: Minor Β· Certainty: Certain
π unknown-security-identifier [AL52]
an unknown identifier got passed in. if it's actually a legitimate identifier, then please contact the authors so they can add support for it β they're nice, fr fr π«Ά
Severity: Minor Β· Certainty: Certain
π xsa-identifier-formatted-incorrectly [AL53]
the XSA identifier is not formatted correctly. output string = the reason why, as always.
Severity: Minor Β· Certainty: Certain
π duplicate-identifier-value [AL59]
there are duplicate values of known identifiers. okay so this doesn't cause problems while building β but it may cause false positives for users that rely on our secdb to know if something is fixed, and that's kind of a big deal. lowkey serious, highkey serious actually.
Severity: Serious Β· Certainty: Certain
π ghsl-identifier-formatted-incorrectly [AL63]
last one, and it's the GHSL identifier not being formatted correctly β check the output string for the reason why and you're done, bestie β¨
Severity: Minor Β· Certainty: Certain
aaaand that's the whole page!! you made it to the end, so proud of you π₯Ήπ«Ά this was alint(5), dated 2026-10-14 β go forth and lint, and remember: the vibes are immaculate but the whitespace has to be exact ππ
π¦ where this page comes from
- alpine 3.24: atools-doc 20.2.2-r27 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms