Building from source¶
Please also see Installation for information about pre-built executables.
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 go./buildcreates thego/mlrexecutable and runs regression testsgo build mlr.gocreates thego/mlrexecutable without running regression tests
From git clone¶
git clone https://github.com/johnkerl/millercd miller/go./buildcreates thego/mlrexecutable and runs regression testsgo build mlr.gocreates thego/mlrexecutable without running regression tests
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.16 or higher
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 Sphinx. Please see https://github.com/johnkerl/miller/blob/main/docs6/README.md for details.
Creating a new release: for developers¶
At present I’m the primary developer so this is just 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
go/src/version/version.gofrom6.1.0-devto6.2.0.Likewise
docs6/conf.pycd ../docs6export PATH=../go:$PATHmake htmlThe ordering is important: the first build creates
mlr; the second runsmlrto createmanpage.txt; the third includesmanpage.txtinto one of its outputs.Commit and push.
Create the release tarball and SRPM:
TBD for the Go port …
Linux/MacOS/Windows binaries from GitHub Actions …
Pull back release tarball
mlr-6.2.0.tar.gzfrom buildbox, andmlr.{arch}binaries from whatever buildboxes.
Create the Github release tag:
Don’t forget the
vinv6.2.0Write the release notes
Attach the release tarball and binaries. Double-check assets were successfully uploaded.
Publish the release
Check the release-specific docs:
Look at https://miller.readthedocs.io for new-version docs, after a few minutes’ propagation time.
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.Social-media updates.
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
go/src/version/version.goanddocs6/conf.pyto change version from6.2.0to6.2.0-dev.cd go./buildCommit and push.
Misc. development notes¶
I use terminal width 120 and tabwidth 4.