Skip to content

Linter improvements#2473

Merged
h-vetinari merged 16 commits intoconda-forge:mainfrom
h-vetinari:no_dt
Feb 27, 2026
Merged

Linter improvements#2473
h-vetinari merged 16 commits intoconda-forge:mainfrom
h-vetinari:no_dt

Conversation

@h-vetinari
Copy link
Member

@h-vetinari h-vetinari commented Feb 26, 2026

What started out as just wanting to rip out the logic for MACOSX_DEPLOYMENT_TARGET became a deeper and deeper rabbit hole as various obvious follow-up clean-ups were blocked by the state of the code.

This PR:

  • changes the logic regarding OSX pins (c_stdlib_version / MACOSX_SDK_VERSION) to simply ignore MACOSX_DEPLOYMENT_TARGET; this showed that the merge logic contained some subtle bugs where our tests were misconfigured after reflect upcoming macos 11.0 baseline #2461, but didn't trigger (I don't expect this to affect many recipes, but strictly speaking we were missing some lints)
  • break out osx-specific lints from lint_stdlib to a separate lint that's conda-forge-specific
  • in that new check, also lint against presence of MACOSX_DEPLOYMENT_TARGET
  • separately, also lint the content of conda_build_config.yaml in v1 recipes (e.g. the state before Rebuild for aws-crt-cpp 0.37.3 aws-sdk-cpp-feedstock#993 didn't actually trigger a linter warning despite the outdated pins)
  • add lint if both conda_build_config.yaml as well as variants.yaml are in the recipe folder
  • consolidate and clean up a bunch of redundant logic in the main linter driver.
  • skip a linter test that fails on windows

All the commits have been individually tested and I highly recommend to review them one-by-one (consider each as a mini-PR; the overall diff is too messy).

@h-vetinari h-vetinari requested a review from a team as a code owner February 26, 2026 06:43
@h-vetinari
Copy link
Member Author

Any idea what's going on with coveralls here? 🤔

Run coverallsapp/github-action@master
Using lcov file: ./coverage.lcov
Error: Bad response: 530 error code: 1016

A restart didn't fix it...

CC @beckermr @jaimergp

Copy link
Member

@xhochy xhochy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Content-wise, this looks good; two minor nits that don't need to be fixed.

)

# 8. check for obsolete os_version
# 7. check for obsolete os_version
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unrelated nit: We're a bit inconsistent in the comments with "1." vs "1:" ;)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Personally, I'd be more inclined to just remove the numbering. It serves no purpose, and makes it harder to move lints (if it ever becomes desirable to group or otherwise reorder checks)

conda_build_config_keys = set()
forge_yaml = {}
# Interlude: load feedstock and recipe config
feedstock_config_keys = _get_feedstock_config(recipe_dir)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the reason you only load this here and not at the very top of the function?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR was already ballooning in size, so I tried to keep changes local where possible. Further cleanups are of course possible.

Copy link
Member Author

@h-vetinari h-vetinari left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the review!

)

# 8. check for obsolete os_version
# 7. check for obsolete os_version
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Personally, I'd be more inclined to just remove the numbering. It serves no purpose, and makes it harder to move lints (if it ever becomes desirable to group or otherwise reorder checks)

conda_build_config_keys = set()
forge_yaml = {}
# Interlude: load feedstock and recipe config
feedstock_config_keys = _get_feedstock_config(recipe_dir)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR was already ballooning in size, so I tried to keep changes local where possible. Further cleanups are of course possible.

@h-vetinari
Copy link
Member Author

Ah, the error finally has some more context now.

Error: Bad response: 503 <!DOCTYPE html>
<html lang="en">
<head>
  ...
</head>
<body>
  <div class="container">
    <h1>Please Hold</h1>
    <p>We're performing some unscheduled maintenance. Please check our status page for updates: <a href="https://status.coveralls.io/">Status Page</a> </p>
  </div>
</body>
</html>

"unscheduled maintenance" does not sound good. In fact, https://status.coveralls.io/ says

after two full days of working directly with our hosting provider’s account team, we still do not have an ETA for service restoration.

So I guess we can ignore this here, though we might want to break out the coverage stuff into a separate check, so that at least it becomes visible at first glance whether the tests passed or not.

@h-vetinari h-vetinari force-pushed the no_dt branch 2 times, most recently from fb8840c to ea1897f Compare February 27, 2026 03:13
@h-vetinari h-vetinari merged commit 5dd5767 into conda-forge:main Feb 27, 2026
2 checks passed
@h-vetinari
Copy link
Member Author

Thanks for the review @xhochy!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants