# # Common Makefile for building RPMs # NAME := kernel SPECFILE := kernel.spec WORKDIR := $(shell pwd) SPECDIR ?= $(WORKDIR) SRCRPMDIR ?= $(WORKDIR)/srpm BUILDDIR ?= $(WORKDIR) RPMDIR ?= $(WORKDIR)/rpm SOURCEDIR := $(WORKDIR) VERSION := $(shell cat version) NO_OF_CPUS := $(shell grep -c ^processor /proc/cpuinfo) RPM_DEFINES := --define "_sourcedir $(SOURCEDIR)" \ --define "_specdir $(SPECDIR)" \ --define "_builddir $(BUILDDIR)" \ --define "_srcrpmdir $(SRCRPMDIR)" \ --define "_rpmdir $(RPMDIR)" \ --define "version $(VERSION)" \ --define "jobs $(NO_OF_CPUS)" VER_REL := $(shell rpm $(RPM_DEFINES) -q --qf "%{VERSION} %{RELEASE}\n" --specfile $(SPECFILE)| head -1) ifndef NAME $(error "You can not run this Makefile without having NAME defined") endif ifndef VERSION $(error "You can not run this Makefile without having VERSION defined") endif ifndef RELEASE RELEASE := $(word 2, $(VER_REL)) endif all: help SRC_BASEURL := http://www.kernel.org/pub/linux/kernel/v2.6/ SRC_FILE := linux-${VERSION}.tar.bz2 SIGN_FILE := linux-${VERSION}.tar.bz2.sign URL := $(SRC_BASEURL)/$(SRC_FILE) URL_SIGN := $(SRC_BASEURL)/$(SIGN_FILE) get-sources: $(SRC_FILE) $(SRC_FILE): @echo -n "Downloading $(URL)... " @wget -q $(URL) @wget -q $(URL_SIGN) @echo "OK." verify-sources: @gpg --verify $(SIGN_FILE) $(SRC_FILE) .PHONY: clean-sources clean-sources: ifneq ($(SRC_FILE), None) -rm $(SRC_FILE) endif #RPM := rpmbuild --buildroot=/dev/shm/buildroot/ RPM := rpmbuild RPM_WITH_DIRS = $(RPM) $(RPM_DEFINES) rpms: get-sources $(SPECFILE) $(RPM_WITH_DIRS) -bb $(SPECFILE) rpm --addsign $(RPMDIR)/x86_64/*.rpm rpms-nobuild: $(RPM_WITH_DIRS) --nobuild -bb $(SPECFILE) rpms-just-build: $(RPM_WITH_DIRS) --short-circuit -bc $(SPECFILE) rpms-install: $(RPM_WITH_DIRS) -bi $(SPECFILE) prep: get-sources $(SPECFILE) $(RPM_WITH_DIRS) -bp $(SPECFILE) srpm: get-sources $(SPECFILE) $(RPM_WITH_DIRS) -bs $(SPECFILE) verrel: @echo $(NAME)-$(VERSION)-$(RELEASE) # mop up, printing out exactly what was mopped. .PHONY : clean clean :: @echo "Running the %clean script of the rpmbuild..." $(RPM_WITH_DIRS) --clean --nodeps $(SPECFILE) help: @echo "Usage: make " @echo @echo "get-sources Download kernel sources from kernel.org" @echo "verify-sources" @echo @echo "prep Just do the prep" @echo "rpms Build rpms" @echo "rpms-nobuild Skip the build stage (for testing)" @echo "rpms-just-build Skip packaging (just test compilation)" @echo "srpm Create an srpm" @echo