[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
What's the best way to do this?
From: |
subnet |
Subject: |
What's the best way to do this? |
Date: |
Wed, 9 Jun 2004 00:30:31 +0200 |
User-agent: |
KMail/1.6.2 |
I have a set of programs to start/stop, with certain dependencies among each
other. I would want to use make to start and stop them, since it handles
dependencies autmatically.
I thought of separating all the deps in a separate include file, and put in
the main makefile only the commands for starting/stopping/restarting them.
I use timestamp files to record start/stop events.
Example of the include file:
program1.start:
program2.start: program1.start
program1.stop: program2.stop
program2.stop:
etc (this is customizable).
In another part of the makefile, I put the commands to start and stop the
programs:
%.start:
<script that starts the program and creates file .start>
%.stop:
<script that stops the program, removes file .start and creates
file .stop>
So, "make program2.start" does what one wants, taking care of the deps
starting program1 first. The same holds for "make program1.stop".
On the other hand, restarting a program requires stopping all the programs
that depend on it, restarting the program, and restarting the deps stopped
before. To implement this, I was thinking to do the following (%.start not
modified):
%.stop:
<script that stops the program, removes file .start and creates
the file .stop; if RESTART = 1, also creates .stopped_dep file
for the stopped program>
.PHONY: %.restart %.restartdeps
%.restart: RESTART = 1 # pattern-specific variable: if my understanding is
# correct, this should only affect this target and
# all its dependencies
%.restart: %.stop %.start %.restartdeps
%.restartdeps: $(patsubst %.stopped_dep, %.start, $(wildcard *.stopped_dep))
The idea is: %.restart sets RESTART=1, so all stopped services also get
their .stopped_dep file, that %.restartdeps sees and can invoke %.start on
each of them.
But I'm not sure at all about the correctness of my solution, since I suspect
there's a simpler way to do a restart. Furthermore, doing a "make
program1.restart" aborts with the message
make: *** No rule to make target `program1.restart'. Stop.
Any help will be greatly appreciated.
Thanks
D
- What's the best way to do this?,
subnet <=