I may miss something very obvious with this Makefile:
convert: devel/bar touch convert init: devel/foo echo \'init\' devel/foo: mkdir -p devel touc
There probably is no file named init? So it tries to update devel/bar (since it depends on init).
init
devel/bar
Consider using .PHONY
.PHONY
You're not creating a file called init, so init is always out-of-date. Therefore everything that depends on it is always out-of-date.