jw-pkg/make/linux-rpm.mk
Markus Bentrup bedb1836a1 linux-rpm.mk: Fix extraversion handling
- Backup commit
  - Make exraversion processing cope with missing blank in linux-<version>/Makefile
  - Change processing of extraversion so that the rpm release
    is always appended to the end, regardles of whether the former extraversion
    starts with '-' or '.' . I *think* the is good, but I still ran into problems
    in rpmbuild
2007-07-09 09:08:59 +00:00

164 lines
5.4 KiB
Makefile

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
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$(basename $(KERNEL_VERSION))/linux-$(KERNEL_VERSION).tar.bz2
KERNEL_TGZ = $(notdir $(KERNEL_URL))
# exports
export KERNEL_VERSION
export KERNEL_INSTALL_PREFIX
# first target
all: rpm
clean: thisclean
# file rules
$(KERNEL_PKG):
mkdir -p $(dir $(KERNEL_PKG))
ftp -a ftp.kernel.org:/pub/linux/kernel/v$(basename $(KERNEL_VERSION))/linux-$(KERNEL_VERSION).tar.bz2
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 -F = -v release=$(RPM_RELEASE) '{ \
if ($$0 ~ /EXTRAVERSION[ ]*=[ ]*$$/) { \
if (release ~ "^ *$$") { \
printf "EXTRAVERSION =\n" \
} else { \
printf "EXTRAVERSION = -%s\n",release \
} \
} else if ($$0 ~ /EXTRAVERSION[ ]*=[ ]*[^ ]+/) { \
oldextra=$$2; \
gsub(/ */,"",oldextra); \
printf "EXTRAVERSION = %s-%s\n", oldextra, 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: 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
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 PATCHES KERNEL_MAJOR KERNEL_MINOR \
KERNEL_RELEASE WD