summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorBao Trinh2023-07-06 09:01:45 -0500
committerBao Trinh2023-07-06 09:02:02 -0500
commit355ce6e2794eeff565b7b8005e27cbc918a21f5d (patch)
treefaeb86996b6ec0cf9fa9ebd2f1f5f337ddfd409e
parentf838fba44438a12fc35d68a60467220d4941f626 (diff)
downloadaur-355ce6e2794eeff565b7b8005e27cbc918a21f5d.tar.gz
add changelog; misc docs
-rw-r--r--.SRCINFO3
-rw-r--r--CHANGELOG.md130
-rw-r--r--PKGBUILD5
3 files changed, 135 insertions, 3 deletions
diff --git a/.SRCINFO b/.SRCINFO
index a5e77684c7a6..2406232bf0f8 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,8 +1,9 @@
pkgbase = unmake
pkgdesc = a makefile linter
pkgver = 0.0.12
- pkgrel = 1
+ pkgrel = 2
url = https://github.com/mcandre/unmake
+ changelog = CHANGELOG.md
arch = x86_64
arch = aarch64
license = BSD
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 000000000000..ef972fb25eed
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,130 @@
+## v0.0.12 (2023-05-13) - #onward
+
+* 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
+
+
+## v0.0.11 (2023-05-04) - #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.
+
+
+## v0.0.10 (2023-05-03) - #docs-and-ports
+
+* Fix crate / API link integration.
+* Attach pre-compiled binary ports for many platforms.
+
+
+## v0.0.9 (2023-05-03) - #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.
+
+
+## v0.0.8 (2023-04-29) - #recursion
+
+* unmake now accepts a list of multiple file and/or directory paths.
+* unmake now recurses over directories.
+* `.git`, `node_modules`, and `vendor` are skipped.
+* Machine-generated makefiles are skipped.
+* Symlinks are skipped.
+* Implementation-specific filenames like `GNUmakefile` and `BSDmakefile` are skipped.
+* `-d` / `--debug` shows skipped file paths
+* `-i` / `--inspect` provides high level details about potential makefile paths
+* Error messages about accessing files now name the offending file path
+* Added more unit tests
+* Minor performance enhancement when generating parse error messages
+
+See #recursion
+
+
+## v0.0.7 (2023-04-27) - #messaging
+
+* Substantially clarify parse error messages
+* Improve documentation
+* Expand tests
+
+
+## v0.0.6 (2023-04-26) - #special-delivery
+
+Apply stricter parsing for special targets.
+
+For example, prohibit the degenerate reset form `.POSIX:;`.
+
+This reduces ambiguity / portability issues.
+
+
+## v0.0.5 (2023-04-26) - #quintus
+
+Major enhancements:
+
+* Target more modern POSIX Issue 8, Draft 3 make spec
+* Parse grammar substantially refined, for POSIX makefile syntax both new (`!=`) and old (`.PHONY`).
+* Reject more syntactical forms with undefined behavior, such as `:=`
+* Document illustrative examples for passing and failing makefile syntax
+* Test suite substantially improved
+
+Notable validation behaviors:
+
+* Multiline instructions appearing in fringe places, may be treated as parse errors. This keeps the grammar simple, and encourages more readable makefiles. Annotating AST nodes with locations of questionable escape newline sequences, would have greatly complicated both the parser grammar and post-parsing linter logic.
+* Late `.POSIX:` declarations are currently not checked. In the interest of expediency, we decided it was better to fix a larger issue with past releases, which incidentally prohibited use of the `.POSIX:` rule *anywhere* in the makefile.
+* Some syntactical forms like `-include` are currently tolerated, though may be slated for rejection later. Either at parse or linter message level.
+
+Each release of `unmake` aims to provide meaningful, iterative improvements. While also balancing strictness on the one hand, with flexibility on the other. Now that the AST is beginning to cure, we plan subsequent releases to roll out higher level warnings.
+
+
+## v0.0.4 (2023-04-14) - #rick-AST-ly
+
+* Clarify unmake's intention to target specifically the (upcoming) 2008 POSIX release, as opposed to older POSIX standards
+* Clarify more caveats in unmake capabilities and proper makefile authorship generally
+* Allow upcoming POSIX 2008 assignment operators `:=`, `?=`, and `+=`. Ensure `:=` is treated as a macro declaration, rather than a rule declaration.
+* Reject rules that have exactly zero prerequisites, zero inline commands, and zero indented commands, as make processing for such rules is undefined behavior.
+* Fix dev environment provisioning script for unmake itself, in the event that some cargo packages are already installed
+* Accelerate line counting update algorithm
+* Add unit tests for more standard POSIX make elements
+
+
+## v0.0.3 (2023-04-10) - #performance
+
+* Optimize memory usage of line counting algorithm
+* Improve CLI validation
+* CR and CRLF now treated as parse errors
+* Enrich AST with line numbers, in preparation for rendering linter warnings
+
+
+## v0.0.2 (2023-04-09) - #roc
+
+* Refined the grammar to more closely match the POSIX spec.
+* Drop explicit `-n` / `--dry-run` flags. The parsing check is now the default behavior.
+* Add more example scripts
+* Add more unit tests
+
+
+## v0.0.1 (2023-04-08) - #draft
+
+Early prototype of a strict POSIX makefile AST. Results may vary.
+
+Release archive includes ports for a wide variety of platforms.
diff --git a/PKGBUILD b/PKGBUILD
index 62f243537b33..182f2a9c7f8c 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -2,12 +2,13 @@
pkgname=unmake
pkgver=0.0.12
-pkgrel=1
+pkgrel=2
pkgdesc="a makefile linter"
arch=('x86_64' 'aarch64')
url="https://github.com/mcandre/unmake"
license=('BSD')
makedepends=('cargo')
+changelog=CHANGELOG.md
source=("${pkgname}-${pkgver}.tar.gz::${url}/archive/refs/tags/v${pkgver}.tar.gz")
sha256sums=('7f77e5b5f2a6c37e9bffca2e03b08c33c7f4cf4954e06806fa9fb3798d9d8eb0')
@@ -31,7 +32,7 @@ package() {
cd "${pkgname}-${pkgver}"
install -vDm755 -t "${pkgdir}/usr/bin" 'target/release/unmake'
install -vDm644 -t "${pkgdir}/usr/share/licenses/${pkgname}" 'LICENSE.md'
- install -vDm644 -t "${pkgdir}/usr/share/doc/${pkgname}" 'README.md'
+ install -vDm644 -t "${pkgdir}/usr/share/doc/${pkgname}" 'README.md' 'SYNTAX.md' 'WARNINGS.md'
install -vdm755 "${pkgdir}/usr/share/doc/${pkgname}/examples"
cp -vR -t "${pkgdir}/usr/share/doc/${pkgname}/examples" fixtures/*
}