Releases: mcandre/unmake
#granddaddy
Enhancements:
- Temporarily narrow the
PHONY_TARGET
recommendation warning to ignore more empty-command targets.
Make inferred rules rely on empty command lists, however unmake has not yet implemented inferred rules. This caused previous scanning logic to trigger false positives for some valid makefiles. Out of an abundance of caution, disabling most of these warnings except for a short list of conventional phony targets such as all
, clean
, test
, etc.
Planning to crack that inferred rule nut in the future. For now, applying the sage advice of wiser men like Simon Peyton Jones... It is better to accept some less than perfect programs than to reject too many valid programs.
A linter acts as a teacher, helping the user to adopt good habits. makefile authors are still encouraged to (manually) deeply analyze build systems for .PHONY
worthy targets.
One suggested workaround for large, overly elaborate makefile configurations is to make clean [<additional targets>]
, for example when building projects locally. Legacy CI/CD systems should take additional steps to wipe the environment prior to each pipeline execution. Modern, ephemeral CI/CD pipelines automatically do this.
#tarball
#null
#ux
#netbsd
#options
#onward
#enrichment
- Allow escaped newlines in more places, according to POSIX specifications. For example, make users may want to use multiline rule prerequisite lists, when managing long
.PHONY
or.IGNORE
sequences. - References to "policy" have been simplified to "check" for scanning operations and "message" for reported descriptions.
- Additional linter checks implemented.
- Existing checks refined. For example,
UB_LATE_POSIX_MARKER
now triggers when*.include.mk
files feature the.POSIX:
strict special target. - Minor consistency improvement to the rendered warning message format.
- Add further illustrative examples, clarification, and minor grammatical enhancements to documentation.
- Refactor code layout for maintainability.
#docs-and-ports
- Fix crate / API link integration.
- Attach pre-compiled binary ports for many platforms.
#lint-ahoy
Many bugfixes and enhancements in this release.
- Refine makefile grammar for robustness.
- Include lines now take precedence over macros. This assists when linting for
UB_AMBIGUOUS_INCLUDE
. - Fix inspect control flow for various kinds of files.
- Fix how machine generated makefiles are detected and skipped for linting.
- Detect gyp projects.
- Refine error handling and error message formatting.
- Preserve path casing in
inspect::Metadata
reports. - Add new attributes to
inspect::Metadata
reports. - Reduce some internal boilerplate in the unit test code.
- Add more tests.
- Refine documentation.
- Implemente our first set of standard makefile linter warnings.
Linter warning topics range from Undefined Behavior (UB) to hazards of global empty .INCLUDE
declarations, to wasteful No-OPerations (NOP's) to simplifying boilerplate, to basic .PHONY
semantics, to proper use of .POSIX
declarations, to minor makefile performance enhancements.
Skipping pre-compiled ports out of expediency. An upcoming hotfix will soon generate fresh ports.