POKI_PUT_TOC_HERE
mlr
executable available in your platform’s
package manager on NetBSD, Debian Linux, Ubuntu Xenial and upward, Arch Linux, or perhaps other distributions.
For example, on various Linux distributions you might do one of the following:
POKI_CARDIFY(sudo apt-get install miller)HERE
POKI_CARDIFY(sudo apt install miller)HERE
POKI_CARDIFY(sudo yum install miller)HERE
autoconfigure
to build portably.
Grateful acknowledgement: Miller’s GNU autoconfig work was done by
the generous and expert efforts of Thomas
Klausner.
mlr-i.j.k.tar.gz
from https://github.com/johnkerl/miller/tags,
replacing i.j.k
with the desired release, e.g. 2.2.1
.
tar zxvf mlr-i.j.k.tar.gz
cd mlr-i.j.k
Install the following packages using your system’s package manager
(apt-get
, yum install
, etc.):
flex
./configure
./configure --prefix=/usr/local
./configure --prefix=$HOME/pkgs
./configure CC=clang
./configure --disable-shared
(to make a statically linked executable)
./configure 'CFLAGS=-Wall -std=gnu99 -O3'
etc.
make
creates the c/mlr
executable
make check
make install
copies the c/mlr
executable to your prefix’s bin
subdirectory.
git clone https://github.com/johnkerl/miller
cd miller
Install the following packages using your system’s package manager
(apt-get
, yum install
, etc.):
automake autoconf libtool flex
Run autoreconf -fiv
. (This is necessary when building from head as discussed in
https://github.com/johnkerl/miller/issues/131.)
Then continue from “Install the following ... ” as above.
./configure && make
output can be exceedingly difficult to decipher. And this also can be a
turn-off for using open-source software: if you can’t figure out the
build errors, you may just keep walking. For this reason I’m happy that
Miller allows you to build without autoconfig. (Of course, if you have any
build errors, feel free to contact me at
kerl.john.r+miller@gmail.com,
— or, better, open an issue with “New Issue” at
https://github.com/johnkerl/miller/issues.)
Steps:
cd
into the c
subdirectory.
Edit the INSTALLDIR
in Makefile.no-autoconfig
.
To change the C compiler, edit the CC=
lines in
Makefile.no-autoconfig
and dsls/Makefile.no-autoconfig
.
make -f Makefile.no-autoconfig
creates the mlr
executable and runs unit/regression tests (i.e. the equivalent of both
make
and make check
using autoconfig).
make install
copies the mlr
executable to your install directory.
Makefile.no-autoconfig
is simple: little more than gcc
*.c
. Customzing is less automatic than autoconfig, but more transparent.
I expect this makefile to work with few modifications on a large fraction of
modern Linux/BSD-like systems: I’m aware of successful use with
gcc
and clang
, on Ubuntu 12.04 LTS, SELinux, Darwin (MacOS
Yosemite), and FreeBSD.
C:\msys2\
) run C:\msys2\mingw64.exe
. Within the MSYS2 shell,
you can run the following to install dependent packages:
pacman -Syu pacman -Su pacman -S base-devel pacman -S msys2-devel pacman -S mingw-w64-x86_64-toolchain pacman -S mingw-w64-x86_64-pcre pacman -S msys2-runtime
./configure && make
which accommodates certain Windows/MSYS2
idiosyncracies.
There is a unit-test false-negative issue involving the semantics of the
mkstemp
library routine but a make -k
in the c
subdirectory has been producing a mlr.exe
for me.
Within MSYS2 you can run mlr
: simply copy it from the c
subdirectory to your desired location somewhere within your MSYS2
$PATH
. To run mlr
outside of MSYS2, just as with precompiled
binaries as described above, you’ll need msys-2.0.dll
. One way
to do this is to augment your path:
C:\> set PATH=%PATH%;\msys64\mingw64\bin
C:\> mkdir \mbin C:\> copy \msys64\mingw64\bin\msys-2.0.dll \mbin C:\> copy \msys64\wherever\you\installed\miller\c\mlr.exe \mbin C:\> set PATH=%PATH%;\mbin
mlr
executable.
gcc
, clang
, etc. (or presumably other compilers; please
open an issue or send me a pull request if you have information for me about
other 21st-century compilers)
The standard C library
flex
automake
, autoconf
, and libtool
, if you build with autoconfig
doc
directory served up by a web server.
You’ll need poki
if you modify documents, or if you modify the code in a way that affects the documents
(there are auto-run snippets inserted into the doc).
The best way to discover this is to run make install
as above, then run poki
in Miller’s
doc
subdirectory, then run git diff
to see if docs were affected
by the code mod. (If so, commit and push them.)
strptime
(needed for the Windows/MSYS2 port since MSYS2 lacks this), with BSD license.
mlr --version
and man mlr
:
configure.ac
, c/mlrvers.h
, and miller.spec
from 3.3.2-dev
to 3.4.0
.
Do a fresh autoreconf -fiv
and commit the output.
make -C c -f Makefile.no-autoconfig installhome &&
make -C doc -f Makefile.no-autoconfig all installhome
Commit and push.
ISP upload so http://johnkerl.org/miller/doc/index.html
will have updated head-docs.
./configure && make distcheck
On buildbox: make SRPM as in
https://github.com/johnkerl/miller/blob/master/README-RPM.md
On all buildboxes: cd c
and make -f Makefile.no-autoconfig mlr.static
. Then copy
mlr.static
to ../mlr.{arch}
. (This may require as prerequisite sudo yum install glibc-static
or the like.)
ldd mlr.static
and make sure it says not a dynamic executable
.mv mlr.static ../mlr.linux_x86_64
mlr-3.4.0.tar.gz
and SRPM miller-3.4.0-1.el6.src.rpm
from buildbox,
and mlr.{arch}
binaries from whatever buildboxes.
Download mlr.exe
and msys-2.0.dll
from
https://ci.appveyor.com/project/johnkerl/miller/build/artifacts.
v
in v3.4.0
Write the release notes
Attach the release tarball, SRPM, and binaries. Double-check assets were successfully uploaded.
Publish the release
.tgz
from Github to ISP
miller-releases directory and unpack and cd
into it.
cd
into doc
subdir. Edit template.html
’s titleinbody
tag from
Miller
to Miller 3.4.0
and poki-build.
ISP upload
At the ISP site, update the latest-revision symlink
ln -s pub_http_internet/miller-releases/miller-3.4.0 pub_http_internet/miller
.
(This is the main doc URL linked to from the top of the Github repo so it
must point to this newly published revision.)
Back in the Github repo, edit doc/content-for-release-docs.html
to include new release, poki-build,
push/commit, and ISP upload.
brew
pull request; notify any other distros which don’t appear to have autoupdated
since the previous release.
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-3.4.0 shasum -a 256 /path/to/mlr-3.4.0.tar.gz edit Formula/miller.rb # Test the URL from the line like # url "https://github.com/johnkerl/miller/releases/download/v3.4.0/mlr-3.4.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 3.4.0' git push -u origin miller-3.4.0 (submit the pull request)Similarly for macports: https://github.com/macports/macports-ports/blob/master/textproc/miller/Portfile. Social-media updates. Afterwork:
configure.ac
and c/mlrvers.h
to change version from 3.4.0
to
3.4.0-dev
.
make -C c -f Makefile.no-autoconfig installhome &&
make -C doc -f Makefile.no-autoconfig all installhome