# Copyright 2022 The Go Authors. All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.

# Makefile for the sandbox package.
# `make` will build and install binaries needed for the test, run the test as root,
# then clean up.

default: test clean

test: /usr/local/bin/runsc testbundle
	sudo RUN_FROM_MAKE=1 $(shell which go) test -v


# Release version must match the one in cmd/worker/Dockerfile.
RUNSC_URL := https://storage.googleapis.com/gvisor/releases/release/20221107.0/$(shell uname -m)

# This is an edited version of the commands at https://gvisor.dev/docs/user_guide/install.
/usr/local/bin/runsc:
	wget $(RUNSC_URL)/runsc $(RUNSC_URL)/runsc.sha512
	sha512sum -c runsc.sha512
	rm -f *.sha512
	chmod a+rx runsc
	sudo mv runsc /usr/local/bin

testbundle: testdata/bundle/rootfs/runner testdata/bundle/rootfs/printargs
	chmod o+rx testdata/bundle/rootfs

testdata/bundle/rootfs/runner: runner.go
	go build -o $@ $<
	chmod o+rx $@

testdata/bundle/rootfs/printargs: testdata/printargs.go
	go build -o $@ $<
	chmod o+rx $@

clean:
	rm testdata/bundle/rootfs/runner
	rm testdata/bundle/rootfs/printargs

.PHONY: clean testbundle

