At least on Bash 4.4, the -V form writes a missing-command message to
stderr:
$ echo $BASH_VERSION
4.4.23(1)-release
$ command -v does-not-exist >/dev/null
$ command -V does-not-exist >/dev/null
-bash: command: does-not-exist: not found
Because we're not redirecting command's stderr in the script, it will
fall through to the caller's stderr and make it easier for them to
figure out what went wrong.
Also write a "Missing required dependencies" string to stderr. We'd
had a "Dependencies not installed." string literal from 82bdd9fe
(installer/scripts: AWS tag and delete scripts, 2017-06-28,
coreos/tectonic-installer#1239), but it hadn't been written anywhere
so it was effectively an internal comment.
Openshift Installer
The CoreOS and OpenShift teams are now working together to integrate Tectonic and OpenShift into a converged platform. See the CoreOS blog for any additional details: https://coreos.com/blog/coreos-tech-to-combine-with-red-hat-openshift
Hacking
These instructions can be used for AWS:
-
Build the project
bazel build tarballNote: the project can optionally be built without installing Bazel, provided Docker is installed:
docker run --rm -v $PWD:$PWD:Z -w $PWD quay.io/coreos/tectonic-builder:bazel-v0.3 bazel --output_base=.cache build tarball -
Extract the tarball
tar -zxf bazel-bin/tectonic-dev.tar.gz cd tectonic-dev -
Add binaries to $PATH
export PATH=$(pwd)/installer:$PATH -
Edit Tectonic configuration file including the $CLUSTER_NAME
$EDITOR examples/tectonic.aws.yaml -
Init Tectonic CLI
tectonic init --config=examples/tectonic.aws.yaml -
Install Tectonic cluster
tectonic install --dir=$CLUSTER_NAME -
Teardown Tectonic cluster
tectonic destroy --dir=$CLUSTER_NAME
Managing Dependencies
Go
We follow a hard flattening approach; i.e. direct and inherited dependencies are installed in the base vendor/.
Dependencies are managed with glide but committed directly to the repository. If you don't have glide, install the latest release from https://glide.sh/. We require version 0.12 at a minimum.
The vendor directory is pruned using glide-vc. Follow the installation instructions in the project's README.
To add a new dependency:
- Edit the
glide.yamlfile to add your dependency. - Ensure you add a
versionfield for the sha or tag you want to pin to. - Revendor the dependencies:
rm glide.lock
glide install --strip-vendor
glide-vc --use-lock-file --no-tests --only-code
bazel run //:gazelle
If it worked correctly it should:
- Clone your new dep to the
/vendordir and check out the ref you specified. - Update
glide.lockto include your new package, add any transitive dependencies and update its hash. - Regenerate BUILD.bazel files.
For the sake of your fellow reviewers, commit vendored code separately from any other changes.
Tests
See tests/README.md.