1+ .SHELLFLAGS  := -eu -o pipefail -c
2+ .ONESHELL :
3+ 
4+ CRIU  ?= ../../../criu/criu
5+ BUILD_DIR  ?= build
6+ SOCKET_NAME  ?= criu_service.socket
7+ PIDFILE_NAME  ?= pidfile
8+ SERVICE_LOG  ?= service.log
9+ PYTHON  ?= python3
10+ 
11+ PIDFILE  := $(BUILD_DIR ) /$(PIDFILE_NAME ) 
12+ CRIU_SOCKET  := $(BUILD_DIR ) /$(SOCKET_NAME ) 
13+ STATUS_FIFO  := $(BUILD_DIR ) /startup.status
14+ STATUS_FD  := 200
15+ 
16+ run : start
17+ 	cleanup () { $( MAKE)   --no-print-directory stop ||  true ;  }
18+ 	trap  cleanup EXIT INT TERM
19+ 	" $( PYTHON) "   test_check.py
20+ 	" $( PYTHON) "   test_check_fail.py
21+ 	" $( PYTHON) "   test_check_images_dir.py
22+ 	" $( PYTHON) "   test_check_work_dir_fd.py
23+ 
24+ start :
25+ 	mkdir -p " $( BUILD_DIR) " 
26+ 	if  [ -s  " $( PIDFILE) "   ] &&  kill  -0 " $$ (cat " $( PIDFILE) " )"   2> /dev/null;  then 
27+ 		echo  " Service running (PID $$ (cat " $(PIDFILE ) " ))." 
28+ 		exit  0
29+ 	fi 
30+ 	if  !  command  -v " $( CRIU) "   > /dev/null 2>&1 ;  then 
31+ 		echo  " CRIU not found at $( CRIU) " 
32+ 		exit  1
33+ 	fi 
34+ 	mkfifo " $( STATUS_FIFO) " 
35+ 	exec  $(STATUS_FD ) <> " $( STATUS_FIFO) " 
36+ 	" $( CRIU) "   service \ 
37+ 		-v4 \ 
38+ 		-W " $( BUILD_DIR) "   \ 
39+ 		--address " $( SOCKET_NAME) "   \ 
40+ 		-d \ 
41+ 		--pidfile " $( PIDFILE_NAME) "   \ 
42+ 		-o " $( SERVICE_LOG) "   \ 
43+ 		--status-fd " $( STATUS_FD) " 
44+ 	" $( PYTHON) "   read.py " $( STATUS_FIFO) " 
45+ 
46+ stop :
47+ 	if  [ !  -s  " $( PIDFILE) "   ];  then 
48+ 		echo  " pidfile missing or empty" 
49+ 		exit  1
50+ 	fi 
51+ 	pid=$$(cat "$(PIDFILE ) " ) 
52+ 	if  kill  -0 " $$ pid"   2> /dev/null;  then 
53+ 		kill  -9 " $$ pid"   ||  true 
54+ 	fi 
55+ 	rm -f " $( PIDFILE) "   " $( CRIU_SOCKET) "   " $( STATUS_FIFO) " 
56+ 
57+ clean :
58+ 	if  [ -s  " $( PIDFILE) "   ] &&  kill  -0 " $$ (cat " $( PIDFILE) " )"   2> /dev/null;  then 
59+ 		kill  -9 " $$ (cat " $(PIDFILE ) " )"   ||  true 
60+ 	fi 
61+ 	rm -rf " $( BUILD_DIR) " 
62+ 
63+ .PHONY : start stop clean run
0 commit comments