Skip to content

Releases: mcandre/unmake

#granddaddy

17 Aug 05:21
Compare
Choose a tag to compare

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

15 Jan 06:05
Compare
Choose a tag to compare

Replace zip archive with tarball for ease of Docker container injection.

#null

08 Jan 01:15
Compare
Choose a tag to compare
  • Add --print0 option to integrate with the common GNU/BSD | xargs -0 convention.

#ux

06 Jan 03:50
Compare
Choose a tag to compare
#ux

Clarify scanner logic. Register debug message when skipping include makefiles during dry run analysis.

#netbsd

05 Jan 07:18
Compare
Choose a tag to compare
  • Fix port generation
  • Add target x86_64-unknown-netbsd to precompiled binary archive

#options

04 Jan 06:59
Compare
Choose a tag to compare
  • Add -n / --dry-run passthrough option to external make implementation tools
  • Add -l / --list option for integration with external linters
  • Add more test cases
  • Update Rust

#onward

13 May 06:11
Compare
Choose a tag to compare
  • Refine grammar to handle commands like \curl
  • Add new warning RESERVED_TARGET for use of non-special, reserved targets and prerequisites
  • Sort warnings by line number (roughly), for easier navigation

#enrichment

04 May 19:17
Compare
Choose a tag to compare
  • 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

03 May 01:06
Compare
Choose a tag to compare
  • Fix crate / API link integration.
  • Attach pre-compiled binary ports for many platforms.

#lint-ahoy

03 May 01:02
Compare
Choose a tag to compare

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.