jw-pkg/make/linux-rpm.mk

156 lines
5.3 KiB
Makefile
Raw Normal View History

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_PKG_BASE = /home/samba/dat/share/exe/linux/os/$(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')
2004-02-11 19:24:35 +00:00
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))
2004-02-11 19:24:35 +00:00
# exports
export KERNEL_VERSION
export KERNEL_INSTALL_PREFIX
# first target
all: rpm
clean: thisclean
2004-02-11 19:24:35 +00:00
# file rules
$(KERNEL_PKG):
2004-07-29 11:38:49 +00:00
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)) $@
2004-02-11 19:24:35 +00:00
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
2004-02-11 19:24:35 +00:00
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') $@
2004-02-11 19:24:35 +00:00
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", release, oldextra \
} 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 $< $@
2004-02-11 19:24:35 +00:00
unpack.done: $(KERNEL_PKG)
rm -rf linux-$(KERNEL_VERSION)
ifeq ($(suffix $(KERNEL_PKG)),.gz)
2004-02-11 19:24:35 +00:00
tar -xzf $(KERNEL_PKG)
endif
ifeq ($(suffix $(KERNEL_PKG)),.bz2)
tar -xjf $(KERNEL_PKG)
endif
ln -s linux-$(KERNEL_VERSION) linux
2004-02-11 19:24:35 +00:00
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-%:
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 $@
%.patch:
cp $(filter %/$@,$(PATCHES)) $@
2004-02-11 19:24:35 +00:00
unpack: unpack.done
2004-09-04 14:00:26 +00:00
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 BOOT_LABEL PATCHES KERNEL_MAJOR KERNEL_MINOR \
KERNEL_RELEASE WD