Page MenuHomeFreeBSD

Do not build lint(1) by default on stable-11, add WITH_LINT to enable building it.
ClosedPublic

Authored by ian on Jan 8 2018, 7:32 PM.
Tags
None
Referenced Files
Unknown Object (File)
May 16 2024, 7:42 AM
Unknown Object (File)
May 11 2024, 6:04 PM
Unknown Object (File)
Dec 21 2023, 5:33 PM
Unknown Object (File)
Dec 20 2023, 3:42 AM
Unknown Object (File)
Dec 17 2023, 4:09 AM
Unknown Object (File)
Dec 11 2023, 5:49 AM
Unknown Object (File)
Nov 28 2023, 5:02 PM
Unknown Object (File)
Nov 27 2023, 7:39 AM

Details

Summary

lint(1) is required on the host build system to build lint(1) libraries, and it is no longer available on FreeBSD 12. This prevents using a 12 or later host to build an 11 or earlier system, which causes problems for building jails and using poudriere. The problem could be fixed by treating lint as a bootstrap tool when building on 12+, but that just adds complexity and build time to build a tool that virtually nobody uses anymore.

This is a direct commit to 11-stable because lint no longer exists in later branches.

Test Plan

Tested by removing lint(1) on my build host and confirming that a build of 11-stable fails as reported by many people using 12-current build hosts, then confirming that the build succeeds after making WITHOUT_LINT the default.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

Isn't the basic problem that lint should really be built in two steps, one bootstrap step and one secondary step, where the '.ln' files are generated by the bootstrapped copy of lint? If that would be fixed, it could always build.

lint could be treated as a bootstrap tool to fix the build problem. What that provide, that this change doesn't, is a broken version of lint (it has been broken for 3 years) which can't really be used for anything other than making the build complete without errors.

In D13799#289417, @ian wrote:

lint could be treated as a bootstrap tool to fix the build problem. What that provide, that this change doesn't, is a broken version of lint (it has been broken for 3 years) which can't really be used for anything other than making the build complete without errors.

Honestly, since we're absolutely never ever going to fix lint to be working under any foreseeable scenario, I'd be tempted to simply disconnect it from the build unconditionally. But this solution is fine too.

usr.bin/Makefile
289–291 ↗(On Diff #37644)

If it were me, I'd just remove these three lines.
Failing that, I'd add it to the list of BROKEN options for aarch64. In most cases, this is the right way to document the breakage. But this is clearly a special case, so maybe that effort isn't worth it.

This revision is now accepted and ready to land.Jan 9 2018, 3:50 PM

It doesn't follow our normal deprecation policy but given that lint (when it builds) is not usable anyhow I think it's acceptable. We need to ensure that it is noted in the release notes though.

This revision was automatically updated to reflect the committed changes.