make: Allow to specify bazel startup options.

And don't parse binary paths for the build target.

Signed-off-by: Andrei Vagin <avagin@gmail.com>
This commit is contained in:
Andrei Vagin 2020-06-02 11:30:26 -07:00
parent 16100d18cb
commit 5e4d7072a6
3 changed files with 14 additions and 7 deletions

View File

@ -13,7 +13,10 @@ jobs:
- os: linux
arch: arm64
script:
- uname -a && make smoke-test
# On arm64, we need to create our own pipes for stderr and stdout,
# otherwise we will not be able to open /dev/stderr. This is probably
# due to AppArmor rules.
- uname -a && make smoke-test 2>&1 | cat
branches:
except:
# Skip copybara branches.

View File

@ -16,6 +16,7 @@
# Described below.
OPTIONS :=
STARTUP_OPTIONS :=
TARGETS := //runsc
ARGS :=
@ -24,7 +25,7 @@ default: runsc
## usage: make <target>
## or
## make <build|test|copy|run|sudo> OPTIONS="..." TARGETS="..." ARGS="..."
## make <build|test|copy|run|sudo> STARTUP_OPTIONS="..." OPTIONS="..." TARGETS="..." ARGS="..."
##
## Basic targets.
##
@ -33,6 +34,7 @@ default: runsc
## requirements.
##
## There are common arguments that may be passed to targets. These are:
## STARTUP_OPTIONS - Bazel startup options.
## OPTIONS - Build or test options.
## TARGETS - The bazel targets.
## ARGS - Arguments for run or sudo.

View File

@ -93,14 +93,16 @@ bazel-server: ## Ensures that the server exists. Used as an internal target.
@docker exec $(DOCKER_NAME) true || $(MAKE) bazel-server-start
.PHONY: bazel-server
build_paths = docker exec --user $(UID):$(GID) -i $(DOCKER_NAME) sh -o pipefail -c 'bazel build $(OPTIONS) $(TARGETS) 2>&1 \
| tee /dev/fd/2 \
build_cmd = docker exec --user $(UID):$(GID) -i $(DOCKER_NAME) sh -o pipefail -c 'bazel $(STARTUP_OPTIONS) build $(OPTIONS) $(TARGETS)'
build_paths = $(build_cmd) 2>&1 \
| tee /proc/self/fd/2 \
| grep -E "^ bazel-bin/" \
| awk "{print $$1;}"' \
| awk "{print $$1;}" \
| xargs -n 1 -I {} sh -c "$(1)"
build: bazel-server
@$(call build_paths,echo {})
@$(call build_cmd)
.PHONY: build
copy: bazel-server
@ -118,5 +120,5 @@ sudo: bazel-server
.PHONY: sudo
test: bazel-server
@docker exec --user $(UID):$(GID) -i $(DOCKER_NAME) bazel test $(OPTIONS) $(TARGETS)
@docker exec --user $(UID):$(GID) -i $(DOCKER_NAME) bazel $(STARTUP_OPTIONS) test $(OPTIONS) $(TARGETS)
.PHONY: test