BrewKit is build infrastructure for pkgx.
$ env +brewkit
$ pkg build nodeIf you are inside a pantry then BrewKit will figure out what packages you are editing and build them.
$ cd pantry
$ dev
$ pkg edit openssl
# make some edits…
$ pkg build
brewkit: building openssl.orgYou can build for Linux (via Docker) using -L, e.g.:
pkg -L build- The
pkg buildenvironment ensures you have a c/c++ compiler andmake- We do this to ensure builds on Mac and Linux have a consistent base layer of tooling
- We also provide shims so use of tools like
pkg-configjust work - We shim
sedsince Mac comes with BSD sed and Linux typically comes with GNU sed and they are subtly different
- The
pkg testenvironment automatically adds pkgs when called- We emit a warning for this since sometimes these deps should be explicit
Outside a pantry checkout we operate against your pkgx installation
(which defaults to ~/.pkgx). Builds occur in a temporary directory rather
than local to your pantry checkout.
env "$(pkgx +brewkit)" pkg build zlib.netThis repo is for tooling built on top of the pkgx primitives with the purpose
of generalized building and testing of open source packages.
If you have an idea for an addition open a discussion!
Getting the rpath out of a macOS binary:
lsrpath() {
otool -l "$@" |
awk '
/^[^ ]/ {f = 0}
$2 == "LC_RPATH" && $1 == "cmd" {f = 1}
f && gsub(/^ *path | \(offset [0-9]+\)$/, "") == 2
'
}This should be added to a pkg doctor type thing I reckon. E.g.
pkg doctor zlib.net -Q:rpath.
In a pantry clone, if you do ../brewkit/bin/pkg build for example your local
brewkit will be used rather than that which is installed.
Priority is one of major|minor|patch|prerelease|VERSION
Inputs: PRIORITY
./scripts/publish-release.sh $PRIORITYfor x in bin/*; do
if file $x | grep 'shell script'; then
pkgx shellcheck --shell=dash --severity=warning $x
fi
done
pkgx shellcheck --shell=dash --severity=warning **/*.sh