Makefile für ein einfaches Debian-Repo

Makefile für ein einfaches Debian-Repo

Ich erstelle ein sehr einfaches Debian-Repo für einen Kunden. Begonnen habe ich mit einem Bash-Skript, aber entschieden, dass ein Makefile doppelte Arbeit vermeiden würde. Ich habe ein funktionierendes Makefile erstellt, aber es funktioniert nur, wenn ich make all… Aus irgendeinem Grund erstellt ein direktes makenur das erste Deb. make clean… nichts. Was mache ich falsch?

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)

Dies setzt voraus, dass die Pakete als Ordner mit dem Namen MyCoolEmployer- vorhanden sind.PAKETNAMEN_1,0-1000

Antwort1

Ihre Frage enthält eine eigene Antwort. Standardmäßig makeverarbeitet nur der erste Eintrag in der Makefile. Sie müssen den Eintrag „alle“ an den Anfang setzen.

Antwort2

„make clean“ bewirkt nichts, da $(TARGETS) keine Variable ist und Sie es nie auf einen Wert gesetzt haben.

verwandte Informationen