define EXTRAVERSION $(shell $(CAT) EXTRAVERSION) endef define COMPLETE_VERSION $(shell $(CAT) COMPLETE_VERSION) endef KERNEL_MAJOR = $(shell echo $(KERNEL_VERSION) | cut -d\. -f1) KERNEL_MINOR = $(shell echo $(KERNEL_VERSION) | cut -d\. -f2) KERNEL_RELEASE = $(shell echo $(KERNEL_VERSION) | cut -d\. -f3) KERNEL_DLOAD_DIR ?= /home/samba/dat/share/exe/linux/os KERNEL_PKG_BASE = $(KERNEL_DLOAD_DIR)/$(KERNEL_MAJOR).$(KERNEL_MINOR)/linux-$(KERNEL_VERSION).tar LINUX_KERNEL_PATCH_DIR ?= $(CVS_ROOT_DIR)/conf/jannet.de/all/lx-patches HOST ?= $(HOSTNAME) ifneq ($(wildcard $(KERNEL_PKG_BASE).*),) ifneq ($(wildcard $(KERNEL_PKG_BASE).gz),) KERNEL_PKG = $(KERNEL_PKG_BASE).gz KERNEL_SRC_DIR = $(shell tar -tzf $(KERNEL_DIR)/$(KERNEL_PKG) | grep -v pax_global_header | head -1) endif ifneq ($(wildcard $(KERNEL_PKG_BASE).bz2),) KERNEL_PKG = $(KERNEL_PKG_BASE).bz2 KERNEL_SRC_DIR = $(shell tar -tjf $(KERNEL_DIR)/$(KERNEL_PKG) | grep -v pax_global_header | head -1) endif else KERNEL_PKG = $(KERNEL_PKG_BASE).bz2 KERNEL_SRC_DIR = linux-$(KERNEL_VERSION) endif WD := $(shell $(PWD)) TAG = $(shell echo V_$(KERNEL_VERSION)_$(RPM_RELEASE) | $(SED) 's/\./_/g') ARCH = $(shell $(RPMBUILD) --showrc | $(SED) '/build arch / !d; s/.*build arch *://; s/ //g') PATCHES += $(wildcard $(LINUX_KERNEL_PATCH_DIR)/*-$(KERNEL_VERSION).patch) \ $(wildcard $(LINUX_KERNEL_PATCH_DIR)/*-$(KERNEL_VERSION).diff) LOCAL_PATCHES = $(notdir $(PATCHES)) SUBMAKEFILE = $(MODDIR)/make/linux-rpm-build.mk KERNEL_URL = ftp.kernel.org:/pub/linux/kernel/v$(KERNEL_MAJOR).$(KERNEL_MINOR)/linux-$(KERNEL_VERSION).tar.bz2 KERNEL_TGZ = $(notdir $(KERNEL_URL)) # exports export KERNEL_VERSION export KERNEL_INSTALL_PREFIX # first target all: rpm install: install.this clean: thisclean distclean: clean # file rules $(KERNEL_PKG): mkdir -p $(dir $(KERNEL_PKG)) ftp -a $(KERNEL_URL) install -m 664 $(notdir $(KERNEL_PKG)) $@ EXTRAVERSION: linux-$(KERNEL_VERSION)/Makefile $(SED) '/^ *EXTRAVERSION *=/ !d; s/^ *EXTRAVERSION *= *-*//; s/ *$$//' $< >$@ COMPLETE_VERSION: EXTRAVERSION #ifeq ($(shell echo $(KERNEL_VERSION) | $(SED) '/[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*/ !d'),) # echo -n $(KERNEL_VERSION)-$(EXTRAVERSION) | $(SED) 's/- *$$//' > $@ #else echo -n $(KERNEL_MAJOR).$(KERNEL_MINOR).$(KERNEL_RELEASE)$(EXTRAVERSION) > $@ #endif config-$(KERNEL_VERSION): cp $(shell ls config-$(KERNEL_MAJOR).$(KERNEL_MINOR).* | $(SED) 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]\)[.$$]./\1.\2.0\3/; s/\.\([0-9]\)$$/.0\1/' | sort -g | $(SED) 's/\.0/./g; $$ !d') $@ cvs add $@ cvs commit $@ toplevel-makefile: unpack.done patches.done awk -v release=$(RPM_RELEASE) '{ \ if ($$0 ~ /EXTRAVERSION *= *-/) { \ oldextra=$$3; \ gsub(/-/,_,oldextra); \ printf "EXTRAVERSION = _%s-%s\n", oldextra, release \ } else if ($$0 ~ /EXTRAVERSION *= *\./) { \ oldextra=$$3; \ gsub(/-/,_,oldextra); \ printf "EXTRAVERSION = %s-%s\n",oldextra, release \ } else if ($$0 ~ /EXTRAVERSION *= *$$/) { \ if (release ~ "^ *$$") { \ printf "EXTRAVERSION =\n" \ } else { \ printf "EXTRAVERSION = -%s\n",release \ } \ } else { \ print $$0 \ } \ }' linux-$(KERNEL_VERSION)/Makefile >$@ linux-$(KERNEL_VERSION)/Makefile: toplevel-makefile cp $< $@ unpack.done: $(KERNEL_PKG) $(RM) -rf linux-$(KERNEL_VERSION) ifeq ($(suffix $(KERNEL_PKG)),.gz) tar -xzf $(KERNEL_PKG) endif ifeq ($(suffix $(KERNEL_PKG)),.bz2) tar -xjf $(KERNEL_PKG) endif ln -s linux-$(KERNEL_VERSION) linux touch $@ update.done: cvs update -dP make rpm touch $@ version: date >> RELEASE-$(KERNEL_VERSION) cvs commit -m "$(KERNEL_VERSION)" RELEASE-$(KERNEL_VERSION) exit 1 patch-%: mkdir -p patches make patches/$*-$(KERNEL_VERSION).patch clean-patch-%: $(RM) -f patches/$*-$(KERNEL_VERSION).patch make patches/$*-$(KERNEL_VERSION).patch patches/%-$(KERNEL_VERSION).patch: make unpack.done export LANG=en_US ;\ diff --exclude=CVS --unidirectional-new-file -aur \ linux-$(KERNEL_VERSION) linux-$(KERNEL_VERSION)-$* | \ grep -vie "^Nur in \|Only in " > $@.part; exit 0 mv $@.part $@ patches.done: unpack.done $(addsuffix .done,$(notdir $(PATCHES))) touch $@ %.patch.done: %.patch patch -d linux-$(KERNEL_VERSION) -p1 < $< touch $@ %.diff.done: %.diff patch -d linux-$(KERNEL_VERSION) -p1 < $< touch $@ %.patch: make $(filter %/$@,$(PATCHES)) cp $(filter %/$@,$(PATCHES)) $@ %.diff: make $(filter %/$@,$(PATCHES)) cp $(filter %/$@,$(PATCHES)) $@ unpack: unpack.done patch: patches.done prepare: unpack patch EXTRAVERSION COMPLETE_VERSION install: all DEFERRED_TARGETS = \ current.uldone ping ssh build \ tgz spm rpm upload tag copy-run copy-devel copy \ shutdown reboot update-rpm erase-rpm $(DEFERRED_TARGETS): prepare make -f $(MODDIR)/make/linux-rpm-build.mk $@ thisclean: touch EXTRAVERSION COMPLETE_VERSION make -f $(SUBMAKEFILE) clean install.this: make -f $(SUBMAKEFILE) install export \ TOPDIR MODDIR KERNEL_VERSION RPM_RELEASE HOST KERNEL_PKG_SUFFIX CUSTOMER \ KERNEL_BASE_DIR KERNEL_PKG KERNEL_BASE UPLOAD_HOST UPLOAD_PATH \ UPLOAD_OWNER BOOT_LABEL BOOT_LABEL PATCHES KERNEL_MAJOR KERNEL_MINOR \ KERNEL_RELEASE WD