Building from source¶
Please also see Installation for information about pre-built executables.
You will need to first install Go version 1.15 or higher: please see https://go.dev.
Miller license¶
Two-clause BSD license https://github.com/johnkerl/miller/blob/master/LICENSE.txt.
From release tarball¶
- Obtain
mlr-i.j.k.tar.gzfrom https://github.com/johnkerl/miller/tags, replacingi.j.kwith the desired release, e.g.6.1.0. tar zxvf mlr-i.j.k.tar.gzcd mlr-i.j.kcd gomakecreates the./mlr(or.\mlr.exeon Windows) executable- Without
make:go build github.com/johnkerl/miller/cmd/mlr
- Without
make checkruns tests- Without
make:go test github.com/johnkerl/miller/internal/pkg/...andmlr regtest
- Without
make installinstalls themlrexecutable and themlrmanpage- Without make:
go install github.com/johnkerl/miller/cmd/mlrwill install to GOPATH/bin/mlr
- Without make:
From git clone¶
git clone https://github.com/johnkerl/millermake/go build github.com/johnkerl/miller/cmd/mlras above
In case of problems¶
If you have any build errors, feel free to open an issue with "New Issue" at https://github.com/johnkerl/miller/issues.
Dependencies¶
Required external dependencies¶
These are necessary to produce the mlr executable.
- Go version 1.15 or higher: please see https://go.dev
- Others packaged within
go.modandgo.sumwhich you don't need to deal with manually -- the Go build process handles them for us
Optional external dependencies¶
This documentation pageset is built using https://www.mkdocs.org/. Please see https://github.com/johnkerl/miller/blob/main/docs/README.md for details.
Creating a new release: for developers¶
This is my checklist for making new releases.
In this example I am using version 6.1.0 to 6.2.0; of course that will change for subsequent revisions.
-
Update version found in
mlr --versionandman mlr:- Edit
internal/pkg/version/version.gofrom6.1.0-devto6.2.0. - Edit
miller.spec:Version, andchangelogentry - Run
make devin the Miller repo base directory - The ordering in this makefile rule is important: the first build creates
mlr; the second runsmlrto createmanpage.txt; the third includesmanpage.txtinto one of its outputs. - Commit and push.
- Edit
-
Create the release tarball:
make release_tarball- This creates
miller-6.2.0.tar.gzwhich we'll upload to GitHub, the URL of which will be in ourmiller.spec - Prepare the source RPM following README-RPM.md.
-
Create the Github release tag:
- Don't forget the
vinv6.2.0 - Write the release notes
- Get binaries from latest successful build from https://github.com/johnkerl/miller/actions, or, build them on buildboxes. Note that thanks to PR 822 which introduces goreleaser there are versions for many platforms auto-built and auto-attached to the GitHub release (below). The only exception is for Windows: goreleaser makes a
.tar.gzfile but it's nice to attach a.zipfrom GitHub actions for the benefit of Windows users. - Attach the release tarball, Windows
.zip, and SRPM. Double-check assets were successfully uploaded. - Publish the release. Note that gorelease will create and attach the rest of the binaries.
- Don't forget the
-
Check the release-specific docs:
- Look at https://miller.readthedocs.io for new-version docs, after a few minutes' propagation time. Note this won't work until Miller 6 is released.
-
Notify:
- Submit
brewpull request; notify any other distros which don't appear to have autoupdated since the previous release (notes below) - Similarly for
macports: https://github.com/macports/macports-ports/blob/master/textproc/miller/Portfile - See also README-versions.md -- distros usually catch up over time but some contacts/pings never hurt to kick-start processes after owners move on from a project they started.
- Social-media updates.
- Submit
# brew notes: git remote add upstream https://github.com/Homebrew/homebrew-core # one-time setup only git fetch upstream git rebase upstream/master git checkout -b miller-6.1.0 shasum -a 256 /path/to/mlr-6.1.0.tar.gz edit Formula/miller.rb # Test the URL from the line like # url "https://github.com/johnkerl/miller/releases/download/v6.1.0/mlr-6.1.0.tar.gz" # in a browser for typos. # A '@BrewTestBot Test this please' comment within the homebrew-core pull request # will restart the homebrew travis build. git add Formula/miller.rb git commit -m 'miller 6.1.0' git push -u origin miller-6.1.0 (submit the pull request)
-
Afterwork:
- Edit
internal/pkg/version/version.goto change version from6.2.0to6.2.0-dev. make dev- Commit and push.
- Edit
Misc. development notes¶
I use terminal width 120 and tabwidth 4. Miller documents use the Oxford comma: not red, yellow and green, but rather red, yellow, and green.