Makefile para un repositorio de Debian simple

Makefile para un repositorio de Debian simple

Estoy creando un repositorio de Debian muy básico para un cliente. Comenzó con un script bash, pero decidió que un Makefile eliminaría el trabajo duplicado. He creado un Makefile que funciona, pero solo funciona si make all. Por alguna razón, una escalera makesólo construye la primera deuda. make cleanno hace nada. ¿Qué estoy haciendo mal?

MFGR:=MyCoolEmployer
MAJOR:=1
MINOR:=0
REVISION:=1000
VERSION:=$(MAJOR).$(MINOR)-$(REVISION)
MODELS:=SpiffyModel1 SpiffyModel2
COMMON:=common
SOFT_TARGETS:=$(COMMON) $(MODELS)
SOFT_TARGET_FOLDERS:=$(patsubst %, $(MFGR)-%_$(VERSION), $(SOFT_TARGETS))
DEBs := $(patsubst %, %.deb, $(SOFT_TARGET_FOLDERS))
REPO_DEBs :=$(patsubst %, Repo/binary/%, $(DEBs))
REPO=repo.zip
PACKAGES_GZ := Repo/binary/Packages.gz

%.deb: %
    dpkg-deb --build $<

$(REPO_DEBs): $(DEBs)
    cp $^ Repo/binary/

$(PACKAGES_GZ): $(REPO_DEBs)
    dpkg-scanpackages Repo/binary /dev/null | gzip -9c > $@

$(REPO): $(REPO_DEBs) $(PACKAGES_GZ)
    cd Repo; zip -r -v -0 ../$@ . ; cd ..

TARGETS: $(REPO) $(PACKAGES_GZ) $(REPO_DEBs) $(DEBs)

all:    TARGETS

clean:
    rm -f $(TARGETS)

Esto supone que los paquetes existen como carpetas denominadas MyCoolEmployer-NOMBRE DEL PAQUETE_1.0-1000

Respuesta1

Tu pregunta contiene su propia respuesta. De forma predeterminada, makeprocesa solo la primera entrada del archivo Makefile. Primero debe colocar la entrada "todos".

Respuesta2

El "make clean" no hace nada porque $(TARGETS) no es una variable, nunca la has establecido en ningún valor.

información relacionada