Martin Roth | cbaab7e | 2016-08-31 21:26:17 -0600 | [diff] [blame] | 1 | ## |
Patrick Georgi | 7333a11 | 2020-05-08 20:48:04 +0200 | [diff] [blame] | 2 | ## SPDX-License-Identifier: GPL-2.0-only |
| 3 | |
Martin Roth | cbaab7e | 2016-08-31 21:26:17 -0600 | [diff] [blame] | 4 | export top=$(abspath $(CURDIR)/../..) |
| 5 | export crossgcc_version=$(shell $(top)/util/crossgcc/buildgcc --version | grep 'cross toolchain' | sed 's/^.*\sv//' | sed 's/\s.*$$//') |
Martin Roth | 561f368 | 2016-12-30 17:00:19 -0700 | [diff] [blame] | 6 | export DOCKER:=$(shell $(SHELL) -c "command -v docker") |
| 7 | |
Martin Roth | 85782b2 | 2016-12-31 14:59:29 -0700 | [diff] [blame] | 8 | # Local port to forward to the jenkins image for the test server |
| 9 | export COREBOOT_JENKINS_PORT?=49151 |
| 10 | |
| 11 | # Local cache directory - for storing files shared with the docker image |
| 12 | export COREBOOT_JENKINS_CACHE_DIR?=/srv/docker/coreboot-builder/cache |
| 13 | |
Martin Roth | 85782b2 | 2016-12-31 14:59:29 -0700 | [diff] [blame] | 14 | # Name of the jenkins container |
| 15 | export COREBOOT_JENKINS_CONTAINER?=coreboot_jenkins |
| 16 | |
Martin Roth | 561f368 | 2016-12-30 17:00:19 -0700 | [diff] [blame] | 17 | # Version of the jenkins / sdk container |
Nico Huber | 9b1cbe0 | 2018-11-04 19:20:41 +0100 | [diff] [blame] | 18 | export COREBOOT_IMAGE_TAG?=$(crossgcc_version) |
Martin Roth | 561f368 | 2016-12-30 17:00:19 -0700 | [diff] [blame] | 19 | |
| 20 | # Commit id to build from |
| 21 | export DOCKER_COMMIT?=$(shell git log -n 1 --pretty=%h) |
Martin Roth | cbaab7e | 2016-08-31 21:26:17 -0600 | [diff] [blame] | 22 | |
Nico Huber | 9b731b5 | 2018-11-04 17:44:14 +0100 | [diff] [blame] | 23 | # .ccache dir to use |
| 24 | export DOCKER_CCACHE?=$(HOME)/.ccache |
| 25 | |
Piotr Król | 64f87f3 | 2017-10-20 12:17:34 +0200 | [diff] [blame] | 26 | # SDK architecture |
| 27 | export COREBOOT_CROSSGCC_PARAM?=all_without_gdb |
| 28 | |
Martin Roth | f8307c3 | 2018-05-27 14:53:02 -0600 | [diff] [blame] | 29 | UID ?= $(shell id -u) |
| 30 | GID ?= $(shell id -g) |
| 31 | |
Martin Roth | 9ee70ce | 2016-12-30 16:26:13 -0700 | [diff] [blame] | 32 | test-docker: |
Martin Roth | cbaab7e | 2016-08-31 21:26:17 -0600 | [diff] [blame] | 33 | $(if $(DOCKER),,\ |
Martin Roth | 44cfde0 | 2020-11-07 15:52:56 -0700 | [diff] [blame] | 34 | $(warning Error: Docker command not found. Please install docker) \ |
| 35 | $(warning Instructions: https://docs.docker.com/engine/install/ ) \ |
Martin Roth | cbaab7e | 2016-08-31 21:26:17 -0600 | [diff] [blame] | 36 | $(error halting)) |
| 37 | |
Martin Roth | 9ee70ce | 2016-12-30 16:26:13 -0700 | [diff] [blame] | 38 | test-docker-login: test-docker |
Martin Roth | cbaab7e | 2016-08-31 21:26:17 -0600 | [diff] [blame] | 39 | $(if $(shell if [ ! -f ~/.docker/config.json ]; then \ |
| 40 | echo "docker authentication file not found"; fi), \ |
| 41 | $(error Docker authentication file not found. Run 'docker login')) |
| 42 | |
Martin Roth | 9ee70ce | 2016-12-30 16:26:13 -0700 | [diff] [blame] | 43 | coreboot-sdk: test-docker |
Martin Roth | 561f368 | 2016-12-30 17:00:19 -0700 | [diff] [blame] | 44 | @echo "Building coreboot SDK $(crossgcc_version) from commit $(DOCKER_COMMIT)" |
| 45 | cat coreboot-sdk/Dockerfile | \ |
| 46 | sed "s/{{DOCKER_COMMIT}}/$(DOCKER_COMMIT)/" | \ |
Nico Huber | 9b1cbe0 | 2018-11-04 19:20:41 +0100 | [diff] [blame] | 47 | sed "s/{{SDK_VERSION}}/$(COREBOOT_IMAGE_TAG)/" | \ |
Piotr Król | 64f87f3 | 2017-10-20 12:17:34 +0200 | [diff] [blame] | 48 | sed "s/{{CROSSGCC_PARAM}}/$(COREBOOT_CROSSGCC_PARAM)/" | \ |
Nico Huber | 9b1cbe0 | 2018-11-04 19:20:41 +0100 | [diff] [blame] | 49 | $(DOCKER) build -t coreboot/coreboot-sdk:$(COREBOOT_IMAGE_TAG) - |
Martin Roth | cbaab7e | 2016-08-31 21:26:17 -0600 | [diff] [blame] | 50 | |
Martin Roth | 9ee70ce | 2016-12-30 16:26:13 -0700 | [diff] [blame] | 51 | upload-coreboot-sdk: test-docker-login |
Nico Huber | 9b1cbe0 | 2018-11-04 19:20:41 +0100 | [diff] [blame] | 52 | $(DOCKER) push coreboot/coreboot-sdk:$(COREBOOT_IMAGE_TAG) |
Martin Roth | cbaab7e | 2016-08-31 21:26:17 -0600 | [diff] [blame] | 53 | |
Martin Roth | 9ee70ce | 2016-12-30 16:26:13 -0700 | [diff] [blame] | 54 | coreboot-jenkins-node: test-docker |
Martin Roth | 561f368 | 2016-12-30 17:00:19 -0700 | [diff] [blame] | 55 | cat coreboot-jenkins-node/Dockerfile | \ |
Nico Huber | 9b1cbe0 | 2018-11-04 19:20:41 +0100 | [diff] [blame] | 56 | sed "s/{{SDK_VERSION}}/$(COREBOOT_IMAGE_TAG)/" | \ |
Martin Roth | 561f368 | 2016-12-30 17:00:19 -0700 | [diff] [blame] | 57 | sed "s|{{SSH_KEY}}|$$(cat coreboot-jenkins-node/authorized_keys)|" | \ |
Nico Huber | 9b1cbe0 | 2018-11-04 19:20:41 +0100 | [diff] [blame] | 58 | $(DOCKER) build -t coreboot/coreboot-jenkins-node:$(COREBOOT_IMAGE_TAG) - |
Martin Roth | cbaab7e | 2016-08-31 21:26:17 -0600 | [diff] [blame] | 59 | |
Martin Roth | 9ee70ce | 2016-12-30 16:26:13 -0700 | [diff] [blame] | 60 | upload-coreboot-jenkins-node: test-docker-login |
Nico Huber | 9b1cbe0 | 2018-11-04 19:20:41 +0100 | [diff] [blame] | 61 | $(DOCKER) push coreboot/coreboot-jenkins-node:$(COREBOOT_IMAGE_TAG) |
Martin Roth | cbaab7e | 2016-08-31 21:26:17 -0600 | [diff] [blame] | 62 | |
Arthur Heymans | 593172c | 2019-10-17 22:10:59 +0200 | [diff] [blame] | 63 | doc.coreboot.org: test-docker |
| 64 | $(DOCKER) build --force-rm -t doc.coreboot.org \ |
| 65 | $(top)/util/docker/doc.coreboot.org/ |
| 66 | |
Martin Roth | 9ee70ce | 2016-12-30 16:26:13 -0700 | [diff] [blame] | 67 | docker-killall: test-docker |
Martin Roth | af25fd7 | 2016-12-30 16:12:30 -0700 | [diff] [blame] | 68 | @if [ -n "$$($(DOCKER) ps | grep 'coreboot')" ]; then \ |
| 69 | $(DOCKER) kill $$($(DOCKER) ps | grep 'coreboot' | cut -f1 -d ' '); \ |
| 70 | fi |
| 71 | |
Martin Roth | 9ee70ce | 2016-12-30 16:26:13 -0700 | [diff] [blame] | 72 | clean-coreboot-containers: docker-killall |
Martin Roth | 85782b2 | 2016-12-31 14:59:29 -0700 | [diff] [blame] | 73 | @if [ -n "$$($(DOCKER) ps -a | grep 'coreboot')" ]; then \ |
| 74 | $(DOCKER) rm $$($(DOCKER) ps -a | grep 'coreboot' | sed 's|\s.*$$||'); \ |
| 75 | fi |
Martin Roth | cbaab7e | 2016-08-31 21:26:17 -0600 | [diff] [blame] | 76 | |
Martin Roth | 9ee70ce | 2016-12-30 16:26:13 -0700 | [diff] [blame] | 77 | clean-coreboot-images: docker-killall |
Martin Roth | 85782b2 | 2016-12-31 14:59:29 -0700 | [diff] [blame] | 78 | @if [ -n "$$($(DOCKER) images | grep 'coreboot')" ]; then \ |
| 79 | $(DOCKER) rmi $$($(DOCKER) images | grep coreboot | sed 's|^\S\+\s\+\S\+\s\+||' | sed 's|\s.*$$||'); \ |
| 80 | fi |
| 81 | |
| 82 | docker-clean: clean-coreboot-containers |
| 83 | @$(MAKE) clean-coreboot-images |
| 84 | |
Martin Roth | 44cfde0 | 2020-11-07 15:52:56 -0700 | [diff] [blame] | 85 | docker-cleanall: test-docker |
Frans Hendriks | f900562 | 2020-11-25 12:19:51 +0100 | [diff] [blame] | 86 | ifeq ($(Y),1) |
Martin Roth | 85782b2 | 2016-12-31 14:59:29 -0700 | [diff] [blame] | 87 | @if [ -n "$$($(DOCKER) ps -a | grep -v "CONTAINER")" ]; then \ |
Martin Roth | 44cfde0 | 2020-11-07 15:52:56 -0700 | [diff] [blame] | 88 | $(DOCKER) kill $$($(DOCKER) ps | grep -v "CONTAINER" | sed 's|\s.*$$||') ; \ |
Martin Roth | 85782b2 | 2016-12-31 14:59:29 -0700 | [diff] [blame] | 89 | $(DOCKER) rm $$($(DOCKER) ps -a | grep -v "CONTAINER" | sed 's|\s.*$$||'); \ |
| 90 | fi |
| 91 | @if [ -n "$$($(DOCKER) images | grep -v "REPOSITORY")" ]; then \ |
| 92 | $(DOCKER) rmi $$($(DOCKER) images | grep -v "REPOSITORY" | tr -s ' ' | cut -f3 -d ' '); \ |
| 93 | fi |
Martin Roth | 44cfde0 | 2020-11-07 15:52:56 -0700 | [diff] [blame] | 94 | else |
| 95 | echo "This will remove *ALL* docker containers from your machine." |
| 96 | echo "If this is what you want, run 'make docker-cleanall Y=1'" |
| 97 | endif |
Martin Roth | cbaab7e | 2016-08-31 21:26:17 -0600 | [diff] [blame] | 98 | |
Nico Huber | 9b731b5 | 2018-11-04 17:44:14 +0100 | [diff] [blame] | 99 | $(DOCKER_CCACHE): |
| 100 | @mkdir -p $@ |
| 101 | |
| 102 | docker-run-local: test-docker $(DOCKER_CCACHE) |
| 103 | $(DOCKER) run -it --rm \ |
| 104 | --volume $(DOCKER_CCACHE):/home/coreboot/.ccache \ |
| 105 | --volume $(top):/home/coreboot/coreboot \ |
| 106 | --env HOME=/home/coreboot \ |
Martin Roth | f8307c3 | 2018-05-27 14:53:02 -0600 | [diff] [blame] | 107 | --user $(UID):$(GID) \ |
Nico Huber | 9b1cbe0 | 2018-11-04 19:20:41 +0100 | [diff] [blame] | 108 | coreboot/coreboot-sdk:$(COREBOOT_IMAGE_TAG) \ |
Nico Huber | 9b731b5 | 2018-11-04 17:44:14 +0100 | [diff] [blame] | 109 | /bin/bash -c 'cd $${HOME}/coreboot && $(DOCKER_RUN_LOCAL)' |
Martin Roth | cbaab7e | 2016-08-31 21:26:17 -0600 | [diff] [blame] | 110 | |
Nico Huber | 674ed24 | 2018-11-04 17:26:14 +0100 | [diff] [blame] | 111 | docker-build-coreboot: docker-run-local |
| 112 | docker-build-coreboot: override DOCKER_RUN_LOCAL := \ |
| 113 | make clean && make $(BUILD_CMD); rm -f .xcompile |
Martin Roth | cbaab7e | 2016-08-31 21:26:17 -0600 | [diff] [blame] | 114 | |
Nico Huber | 674ed24 | 2018-11-04 17:26:14 +0100 | [diff] [blame] | 115 | docker-abuild: docker-run-local |
| 116 | docker-abuild: override DOCKER_RUN_LOCAL := \ |
| 117 | make clean && util/abuild/abuild $(ABUILD_ARGS); rm -f .xcompile |
| 118 | |
| 119 | docker-what-jenkins-does: docker-run-local |
| 120 | docker-what-jenkins-does: override DOCKER_RUN_LOCAL := \ |
| 121 | make clean && make what-jenkins-does CPUS=$(CPUS) |
Martin Roth | 85782b2 | 2016-12-31 14:59:29 -0700 | [diff] [blame] | 122 | |
| 123 | docker-jenkins-server: test-docker |
| 124 | @if [ ! -d "$(COREBOOT_JENKINS_CACHE_DIR)" ]; then \ |
| 125 | printf "\nError: %s does not exist.\n" "$(COREBOOT_JENKINS_CACHE_DIR)"; \ |
| 126 | printf "Please run:\nsudo mkdir -p %s\n\n" "$(COREBOOT_JENKINS_CACHE_DIR)"; \ |
| 127 | false; \ |
| 128 | fi |
| 129 | @if ! touch "$(COREBOOT_JENKINS_CACHE_DIR)/testfile" 2>/dev/null; then \ |
| 130 | printf "\nError: Cannot create file in %s." "$(COREBOOT_JENKINS_CACHE_DIR)"; \ |
| 131 | printf "Please run:\nsudo chown -R $(whoami):$(whoami) %s\n\n" "$(COREBOOT_JENKINS_CACHE_DIR)"; \ |
| 132 | else \ |
| 133 | rm -f "$(COREBOOT_JENKINS_CACHE_DIR)/testfile"; \ |
| 134 | fi |
Martin Roth | 85782b2 | 2016-12-31 14:59:29 -0700 | [diff] [blame] | 135 | $(DOCKER) run -d --privileged --restart=always \ |
| 136 | -p $(COREBOOT_JENKINS_PORT):49151 \ |
| 137 | -v $(COREBOOT_JENKINS_CACHE_DIR):/data/cache \ |
Martin Roth | 85782b2 | 2016-12-31 14:59:29 -0700 | [diff] [blame] | 138 | --name=$(COREBOOT_JENKINS_CONTAINER) \ |
Nico Huber | 9b1cbe0 | 2018-11-04 19:20:41 +0100 | [diff] [blame] | 139 | coreboot/coreboot-jenkins-node:$(COREBOOT_IMAGE_TAG) |
Martin Roth | 85782b2 | 2016-12-31 14:59:29 -0700 | [diff] [blame] | 140 | |
| 141 | docker-jenkins-shell: test-docker |
| 142 | @if [ ! -d $(COREBOOT_JENKINS_CACHE_DIR) ]; then printf "\nError: %s does not exist.\nPlease run:\nsudo mkdir -p %s\n\n" "$(COREBOOT_JENKINS_CACHE_DIR)" "$(COREBOOT_JENKINS_CACHE_DIR)"; false; fi |
Martin Roth | 85782b2 | 2016-12-31 14:59:29 -0700 | [diff] [blame] | 143 | $(DOCKER) run -u root -it --privileged \ |
| 144 | --entrypoint="/bin/bash" \ |
| 145 | -p $(COREBOOT_JENKINS_PORT):49151 \ |
| 146 | -v $(top):/home/coreboot/coreboot \ |
| 147 | -v $(COREBOOT_JENKINS_CACHE_DIR):/data/cache \ |
Martin Roth | 85782b2 | 2016-12-31 14:59:29 -0700 | [diff] [blame] | 148 | --name=$(COREBOOT_JENKINS_CONTAINER) \ |
Nico Huber | 9b1cbe0 | 2018-11-04 19:20:41 +0100 | [diff] [blame] | 149 | --rm coreboot/coreboot-jenkins-node:$(COREBOOT_IMAGE_TAG) |
Martin Roth | 85782b2 | 2016-12-31 14:59:29 -0700 | [diff] [blame] | 150 | |
| 151 | docker-shell: USER=coreboot |
| 152 | docker-shell: test-docker |
| 153 | $(DOCKER) run -u $(USER) -it \ |
Martin Roth | fbc87b6 | 2018-07-15 20:10:44 -0600 | [diff] [blame] | 154 | -e COLUMNS=$(shell tput cols) -e LINES=$(shell tput lines) -e TERM=$(TERM) \ |
Martin Roth | 85782b2 | 2016-12-31 14:59:29 -0700 | [diff] [blame] | 155 | -w /home/coreboot/coreboot \ |
| 156 | -v $(top):/home/coreboot/coreboot \ |
Nico Huber | 9b1cbe0 | 2018-11-04 19:20:41 +0100 | [diff] [blame] | 157 | --rm coreboot/coreboot-sdk:$(COREBOOT_IMAGE_TAG) \ |
Martin Roth | 85782b2 | 2016-12-31 14:59:29 -0700 | [diff] [blame] | 158 | /bin/bash -l |
| 159 | |
Martin Roth | fbc87b6 | 2018-07-15 20:10:44 -0600 | [diff] [blame] | 160 | docker-jenkins-attach: USER=root |
Martin Roth | 44cfde0 | 2020-11-07 15:52:56 -0700 | [diff] [blame] | 161 | docker-jenkins-attach: test-docker |
| 162 | $(DOCKER) exec --user $(USER) \ |
Martin Roth | fbc87b6 | 2018-07-15 20:10:44 -0600 | [diff] [blame] | 163 | -e COLUMNS=$(shell tput cols) -e LINES=$(shell tput lines) -e TERM=$(TERM) \ |
| 164 | -it "$$(docker ps | grep coreboot-jenkins-node | cut -f1 -d' ')" \ |
| 165 | /bin/bash -l |
| 166 | |
Arthur Heymans | 593172c | 2019-10-17 22:10:59 +0200 | [diff] [blame] | 167 | docker-build-docs: test-docker |
| 168 | docker-build-docs: |
| 169 | $(DOCKER) run -it --rm \ |
Martin Roth | 44cfde0 | 2020-11-07 15:52:56 -0700 | [diff] [blame] | 170 | --user $(UID):$(GID) \ |
| 171 | -v "$(top)/:/data-in/:ro" \ |
| 172 | -v "$(top)/Documentation/_build/:/data-out/" \ |
| 173 | doc.coreboot.org |
Arthur Heymans | 593172c | 2019-10-17 22:10:59 +0200 | [diff] [blame] | 174 | |
| 175 | docker-livehtml-docs: test-docker |
| 176 | docker-livehtml-docs: |
| 177 | $(DOCKER) run -it --rm \ |
Martin Roth | 44cfde0 | 2020-11-07 15:52:56 -0700 | [diff] [blame] | 178 | --net=host -v "$(top)/:/data-in/:ro" \ |
| 179 | doc.coreboot.org livehtml |
Arthur Heymans | 593172c | 2019-10-17 22:10:59 +0200 | [diff] [blame] | 180 | |
Martin Roth | cbaab7e | 2016-08-31 21:26:17 -0600 | [diff] [blame] | 181 | help: |
| 182 | @echo "Commands for working with docker images:" |
Martin Roth | 9ee70ce | 2016-12-30 16:26:13 -0700 | [diff] [blame] | 183 | @echo " coreboot-sdk - Build coreboot-sdk container" |
Martin Roth | cbaab7e | 2016-08-31 21:26:17 -0600 | [diff] [blame] | 184 | @echo " upload-coreboot-sdk - Upload coreboot-sdk to hub.docker.com" |
Martin Roth | 9ee70ce | 2016-12-30 16:26:13 -0700 | [diff] [blame] | 185 | @echo " coreboot-jenkins-node - Build coreboot-jenkins-node container" |
Martin Roth | cbaab7e | 2016-08-31 21:26:17 -0600 | [diff] [blame] | 186 | @echo " upload-coreboot-jenkins-node - Upload coreboot-jenkins-node to hub.docker.com" |
Arthur Heymans | 593172c | 2019-10-17 22:10:59 +0200 | [diff] [blame] | 187 | @echo " doc.coreboot.org - Build doc.coreboot.org container" |
Martin Roth | 85782b2 | 2016-12-31 14:59:29 -0700 | [diff] [blame] | 188 | @echo " clean-coreboot-containers - Remove all docker coreboot containers" |
| 189 | @echo " clean-coreboot-images - Remove all docker coreboot images" |
Wim Vervoorn | 6051073 | 2020-01-30 11:43:14 +0100 | [diff] [blame] | 190 | @echo " docker-clean - Remove docker coreboot containers & images" |
Martin Roth | cbaab7e | 2016-08-31 21:26:17 -0600 | [diff] [blame] | 191 | @echo |
| 192 | @echo "Commands for using docker images" |
Martin Roth | 85782b2 | 2016-12-31 14:59:29 -0700 | [diff] [blame] | 193 | @echo " docker-build-coreboot - Build coreboot under coreboot-sdk" |
| 194 | @echo " <BUILD_CMD=target> " |
| 195 | @echo " docker-abuild - Run abuild under coreboot-sdk" |
| 196 | @echo " <ABUILD_ARGS='-a -B'>" |
| 197 | @echo " docker-what-jenkins-does - Run 'what-jenkins-does' target" |
| 198 | @echo " docker-shell - Bash prompt in coreboot-jenkins-node" |
| 199 | @echo " <USER=root or USER=coreboot>" |
| 200 | @echo " docker-jenkins-server - Run coreboot-jenkins-node image (for server)" |
Martin Roth | fbc87b6 | 2018-07-15 20:10:44 -0600 | [diff] [blame] | 201 | @echo " docker-jenkins-attach - Open shell in running jenkins server" |
Arthur Heymans | 593172c | 2019-10-17 22:10:59 +0200 | [diff] [blame] | 202 | @echo " docker-build-docs - Build the documentation" |
| 203 | @echo " docker-livehtml-docs - Run sphinx-autobuild" |
Martin Roth | 561f368 | 2016-12-30 17:00:19 -0700 | [diff] [blame] | 204 | @echo |
| 205 | @echo "Variables:" |
Martin Roth | 85782b2 | 2016-12-31 14:59:29 -0700 | [diff] [blame] | 206 | @echo " COREBOOT_JENKINS_PORT=$(COREBOOT_JENKINS_PORT)" |
| 207 | @echo " COREBOOT_JENKINS_CACHE_DIR=$(COREBOOT_JENKINS_CACHE_DIR)" |
Martin Roth | 85782b2 | 2016-12-31 14:59:29 -0700 | [diff] [blame] | 208 | @echo " COREBOOT_JENKINS_CONTAINER=$(COREBOOT_JENKINS_CONTAINER)" |
Nico Huber | 9b1cbe0 | 2018-11-04 19:20:41 +0100 | [diff] [blame] | 209 | @echo " COREBOOT_IMAGE_TAG=$(COREBOOT_IMAGE_TAG)" |
Martin Roth | 85782b2 | 2016-12-31 14:59:29 -0700 | [diff] [blame] | 210 | @echo " DOCKER_COMMIT=$(DOCKER_COMMIT)" |
Martin Roth | cbaab7e | 2016-08-31 21:26:17 -0600 | [diff] [blame] | 211 | |
Martin Roth | 9ee70ce | 2016-12-30 16:26:13 -0700 | [diff] [blame] | 212 | .PHONY: test-docker test-docker-login |
| 213 | .PHONY: coreboot-jenkins-node upload-coreboot-jenkins-node |
| 214 | .PHONY: coreboot-sdk upload-coreboot-sdk |
Arthur Heymans | 593172c | 2019-10-17 22:10:59 +0200 | [diff] [blame] | 215 | .PHONY: doc.coreboot.org |
Martin Roth | 9ee70ce | 2016-12-30 16:26:13 -0700 | [diff] [blame] | 216 | .PHONY: clean-coreboot-containers clean-coreboot-images |
| 217 | .PHONY: docker-abuild |
Martin Roth | fbc87b6 | 2018-07-15 20:10:44 -0600 | [diff] [blame] | 218 | .PHONY: docker-what-jenkins-does docker-shell docker-jenkins-server docker-jenkins-attach |
Arthur Heymans | 593172c | 2019-10-17 22:10:59 +0200 | [diff] [blame] | 219 | .PHONY: docker-build-docs docker-livehtml-docs |
Martin Roth | 9ee70ce | 2016-12-30 16:26:13 -0700 | [diff] [blame] | 220 | .PHONY: help |