mirror of
ssh://git.janware.com/srv/git/janware/proj/jw-pkg
synced 2026-01-15 12:03:31 +01:00
linux-rpm.mk: Split up into two makefiles (this and linux-rpm-build.mk
This commit is contained in:
parent
3d21f5dc9a
commit
f8a5eece7c
1 changed files with 53 additions and 198 deletions
|
|
@ -1,96 +1,37 @@
|
|||
# generic utility modules
|
||||
# (c) 2004 jannet it services
|
||||
# contact@jannet.de
|
||||
# $Id$
|
||||
|
||||
# config
|
||||
#KERNEL_VERSION = 2.4.24
|
||||
#HOST = zwischenhuber
|
||||
#CUSTOMER = jannet
|
||||
#KERNEL_PKG = /home/samba/dat/share/exe/linux/os/$(basename $(KERNEL_VERSION))/linux-$(KERNEL_VERSION).tar.gz
|
||||
#KERNEL_BASE = linux-$(CUSTOMER)-$(HOST)
|
||||
#UPLOAD_HOST = ftp.jannet.de
|
||||
#UPLOAD_PATH = /home/ftp/dat/pub/packages/$(CUSTOMER)/linux/$(HOST)
|
||||
#UPLOAD_OWNER = $(shell whoami)
|
||||
|
||||
# abbreviations
|
||||
define EXTRAVERSION
|
||||
$(shell sed '/^ *EXTRAVERSION *=/ !d; s/^ *EXTRAVERSION *= *-*//; s/ *$$//' linux-$(KERNEL_VERSION)/Makefile 2>/dev/null)
|
||||
$(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).gz),)
|
||||
KERNEL_PKG = $(KERNEL_PKG_BASE).gz
|
||||
KERNEL_SRC_DIR = $(shell tar -tzf $(KERNEL_DIR)/$(KERNEL_PKG) | 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) | head -1)
|
||||
endif
|
||||
#HOST = $(shell cd ../..; pwd | xargs basename)
|
||||
WD := $(shell pwd)
|
||||
ifeq ($(shell echo $(KERNEL_VERSION) | sed '/[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*/ !d'),)
|
||||
COMPLETE_VERSION = $(KERNEL_VERSION)-$(EXTRAVERSION)
|
||||
|
||||
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) | 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) | head -1)
|
||||
endif
|
||||
else
|
||||
COMPLETE_VERSION = $(KERNEL_MAJOR).$(KERNEL_MINOR).$(KERNEL_RELEASE)$(EXTRAVERSION)
|
||||
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')
|
||||
|
||||
RPMBUILD = $(shell which rpmbuild 2>/dev/null)
|
||||
ifeq ($(RPMBUILD),)
|
||||
RPMBUILD = $(shell which rpm 2>/dev/null)
|
||||
endif
|
||||
|
||||
#ifeq ($(wildcard RELEASE-$(KERNEL_VERSION)),)
|
||||
#RPM_RELEASE := $(shell make newrelease; exit 1)
|
||||
#else
|
||||
#RPM_RELEASE_NUM := $(strip $(shell grep Id: RELEASE-$(KERNEL_VERSION) | sed "s/.*RELEASE-$(KERNEL_VERSION),v[ ]*[0-9]*\.\([0-9]*\)[^0-9]*.*/\1/"))
|
||||
#ifeq ($(UNAME_SUFFIX),)
|
||||
#RPM_RELEASE = $(RPM_RELEASE_NUM)
|
||||
#else
|
||||
#RPM_RELEASE = $(UNAME_SUFFIX)$(RPM_RELEASE_NUM)
|
||||
#endif
|
||||
#endif
|
||||
BASE = $(KERNEL_BASE)-$(COMPLETE_VERSION)
|
||||
TMP_INSTALL = $(KERNEL_BASE)-$(COMPLETE_VERSION)
|
||||
BASE_RUN = $(KERNEL_BASE)-run-$(COMPLETE_VERSION)
|
||||
BASE_DEVEL = $(KERNEL_BASE)-devel-$(COMPLETE_VERSION)
|
||||
|
||||
ifeq ($(BOOT_LABEL),)
|
||||
BOOT_LABEL = lx-$(COMPLETE_VERSION)
|
||||
endif
|
||||
|
||||
KERNEL_TGZ = $(notdir $(KERNEL_PKG))
|
||||
F_SPEC = $(BASE).spec
|
||||
F_TGZ = $(BASE).tar.gz
|
||||
F_SPM = $(BASE).src.rpm
|
||||
F_RPM_RUN = $(BASE_RUN).$(ARCH).rpm
|
||||
F_RPM_DEVEL = $(BASE_DEVEL).$(ARCH).rpm
|
||||
F_RPMS = $(F_RPM_RUN) $(F_RPM_DEVEL)
|
||||
F_BOOTFILES = $(addsuffix -$(COMPLETE_VERSION),$(addprefix $(TMP_INSTALL)/boot/,vmlinuz config System.map))
|
||||
F_CURRENT = $(addprefix CURRENT_, SRC RPM_SRC RPM_RUN_I386 RPM_DEVEL_I386)
|
||||
F_ULDONE = $(addsuffix .uldone,$(F_RPMS) $(F_TGZ) $(F_SPM) current)
|
||||
# note that order matters for F_ULDONE and F_RPMS (remote directory attributes)
|
||||
KERNEL_INSTALL_PREFIX= $(shell pwd)/$(TMP_INSTALL)
|
||||
|
||||
BUILD = build_linux.sh \
|
||||
-c config-$(KERNEL_VERSION) \
|
||||
-t $(HOST) \
|
||||
-b $(WD) \
|
||||
-a i386 \
|
||||
-s $(KERNEL_SRC_DIR) \
|
||||
-i $(TMP_INSTALL)
|
||||
MKSPEC := $(shell which mkspec-linux.sh)
|
||||
|
||||
PATCHES += $(wildcard $(LINUX_KERNEL_PATCH_DIR)/*-$(KERNEL_VERSION).patch) \
|
||||
$(wildcard $(LINUX_KERNEL_PATCH_DIR)/*-$(KERNEL_VERSION).diff)
|
||||
LOCAL_PATCHES = $(notdir $(PATCHES))
|
||||
|
||||
LOCAL_PRE_BUILD += patches.done
|
||||
SUBMAKEFILE = $(MODDIR)/make/linux-rpm-build.mk
|
||||
|
||||
# exports
|
||||
export KERNEL_VERSION
|
||||
|
|
@ -98,6 +39,7 @@ export KERNEL_INSTALL_PREFIX
|
|||
|
||||
# first target
|
||||
all: rpm
|
||||
clean: thisclean
|
||||
|
||||
# file rules
|
||||
$(KERNEL_PKG):
|
||||
|
|
@ -105,14 +47,22 @@ $(KERNEL_PKG):
|
|||
ftp -a ftp.kernel.org:/pub/linux/kernel/v$(basename $(KERNEL_VERSION))/$(KERNEL_TGZ)
|
||||
install -m 664 $(KERNEL_TGZ) $@
|
||||
|
||||
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 $@
|
||||
|
||||
# if ($$0 ~ "^ *EXTRAVERSION *= [0-9]*.[0-9]*.[0-9]") { \
|
||||
|
||||
toplevel-makefile: patches.done
|
||||
toplevel-makefile: unpack.done patches.done
|
||||
awk -v release=$(RPM_RELEASE) '{ \
|
||||
if ($$0 ~ /EXTRAVERSION *= *-/) { \
|
||||
oldextra=$$3; \
|
||||
|
|
@ -123,14 +73,16 @@ toplevel-makefile: patches.done
|
|||
gsub(/-/,_,oldextra); \
|
||||
printf "EXTRAVERSION = %s-%s\n",oldextra, release \
|
||||
} else if ($$0 ~ /EXTRAVERSION *= *$$/) { \
|
||||
printf "EXTRAVERSION = -%s\n",release \
|
||||
if (release ~ "^ *$$") { \
|
||||
printf "EXTRAVERSION =\n" \
|
||||
} else { \
|
||||
printf "EXTRAVERSION = -%s\n",release \
|
||||
} \
|
||||
} else { \
|
||||
print $$0 \
|
||||
} \
|
||||
}' linux-$(KERNEL_VERSION)/Makefile >$@
|
||||
|
||||
# sed "s/\(^ *EXTRAVERSION *= *[^ ]*\) *$$/\\1$(shell echo _$(RPM_RELEASE) | sed 's/^_/-/')/" \
|
||||
|
||||
linux-$(KERNEL_VERSION)/Makefile: toplevel-makefile
|
||||
cp $< $@
|
||||
|
||||
|
|
@ -142,99 +94,19 @@ endif
|
|||
ifeq ($(suffix $(KERNEL_PKG)),.bz2)
|
||||
tar -xjf $(KERNEL_PKG)
|
||||
endif
|
||||
ln -s linux-$(KERNEL_VERSION) linux
|
||||
touch $@
|
||||
|
||||
%.lxdone: unpack.done config-$(KERNEL_VERSION) $(LOCAL_PRE_BUILD) linux-$(KERNEL_VERSION)/Makefile
|
||||
$(BUILD) $(basename $@)
|
||||
touch $@
|
||||
|
||||
$(TMP_INSTALL)/$(F_SPEC): linux-$(KERNEL_VERSION)/Makefile $(MKSPEC) Makefile
|
||||
$(MKSPEC) -d $(TMP_INSTALL) -b $(KERNEL_BASE) -v $(KERNEL_VERSION) -r $(RPM_RELEASE) -a $(ARCH) -l $(BOOT_LABEL) > $@
|
||||
|
||||
$(TMP_INSTALL)/boot/%-$(KERNEL_VERSION)-$(RPM_RELEASE): build.lxdone $(LOCAL_AFTER_KERNEL_BUILD)
|
||||
@echo -n
|
||||
|
||||
.PRECIOUS: $(TMP_INSTALL)/boot/%-$(KERNEL_VERSION)
|
||||
|
||||
$(TMP_INSTALL)/boot/%-$(KERNEL_VERSION)-$(RPM_RELEASE): $(TMP_INSTALL)/boot/%-$(KERNEL_VERSION)
|
||||
cp $< $@
|
||||
|
||||
$(F_TGZ): Makefile build.lxdone $(F_BOOTFILES) $(TMP_INSTALL)/$(F_SPEC)
|
||||
tar -czf $@ \
|
||||
$(F_BOOTFILES) \
|
||||
$(addprefix $(TMP_INSTALL)/, \
|
||||
lib \
|
||||
$(F_SPEC) \
|
||||
)
|
||||
|
||||
%.src.rpm: %.tar.gz
|
||||
$(RPMBUILD) -ts $<
|
||||
cp /usr/src/packages/SRPMS/$@ .
|
||||
|
||||
rpm.done: $(F_SPM)
|
||||
$(RPMBUILD) --rebuild $(F_SPM)
|
||||
touch $@
|
||||
|
||||
%.$(ARCH).rpm: rpm.done
|
||||
cp /usr/src/packages/RPMS/$(ARCH)/$@ .
|
||||
|
||||
CURRENT_RPM_RUN_I386: $(F_RPM_RUN)
|
||||
echo $(UPLOAD_PATH)/rpm/run/$(F_RPM_RUN) > $@
|
||||
|
||||
CURRENT_RPM_DEVEL_I386: $(F_RPM_RUN)
|
||||
echo $(UPLOAD_PATH)/rpm/devel/$(F_RPM_DEVEL) > $@
|
||||
|
||||
CURRENT_RPM_SRC: $(F_RPM_RUN)
|
||||
echo $(UPLOAD_PATH)/rpm/src/$(F_RPM_SRC) > $@
|
||||
|
||||
CURRENT_SRC: $(F_RPM_RUN)
|
||||
echo $(UPLOAD_PATH)/src/$(F_TGZ) > $@
|
||||
|
||||
update.done:
|
||||
cvs update -dP
|
||||
make rpm
|
||||
touch $@
|
||||
|
||||
upload.done: $(F_RPMS)
|
||||
touch $@
|
||||
|
||||
%.tar.gz.uldone: %.tar.gz
|
||||
upload.sh $< rsync_ssh://$(UPLOAD_HOST):$(UPLOAD_PATH)/src/$<:640:750:$(UPLOAD_OWNER).$(CUSTOMER)
|
||||
touch $@
|
||||
|
||||
%.src.rpm.uldone: %.src.rpm
|
||||
upload.sh $< rsync_ssh://$(UPLOAD_HOST):$(UPLOAD_PATH)/rpm/src/$<:640:750:$(UPLOAD_OWNER).$(CUSTOMER)
|
||||
touch $@
|
||||
|
||||
%.rpm.uldone: %.rpm
|
||||
upload.sh $< rsync_ssh://$(UPLOAD_HOST):$(UPLOAD_PATH)/rpm/$(shell echo $@ | sed 's/.*\(run\|devel\).*/\1/')/$<:640:750:$(UPLOAD_OWNER).$(CUSTOMER)
|
||||
touch $@
|
||||
|
||||
current.uldone: $(F_CURRENT)
|
||||
upload.sh $^ rsync_ssh://$(UPLOAD_HOST):$(UPLOAD_PATH)/:640:750:$(UPLOAD_OWNER).$(CUSTOMER)
|
||||
touch $@
|
||||
|
||||
tag.done:
|
||||
cvs tag $(TAG)
|
||||
touch $@
|
||||
|
||||
version:
|
||||
date >> RELEASE-$(KERNEL_VERSION)
|
||||
cvs commit -m "$(KERNEL_VERSION)" RELEASE-$(KERNEL_VERSION)
|
||||
exit 1
|
||||
|
||||
copy-run.done: $(F_RPM_RUN)
|
||||
scp $< root@$(HOST):/root/rpm/
|
||||
touch $@
|
||||
copy-devel.done: $(F_RPM_DEVEL)
|
||||
scp $< root@$(HOST):/root/rpm/
|
||||
touch $@
|
||||
|
||||
ping:
|
||||
ping $(HOST)
|
||||
ssh:
|
||||
ssh -l root $(HOST)
|
||||
|
||||
patches.done: unpack.done $(addsuffix .done,$(notdir $(PATCHES)))
|
||||
touch $@
|
||||
|
||||
|
|
@ -245,40 +117,23 @@ patches.done: unpack.done $(addsuffix .done,$(notdir $(PATCHES)))
|
|||
%.patch:
|
||||
cp $(filter %/$@,$(PATCHES)) $@
|
||||
|
||||
# user targets
|
||||
unpack: unpack.done
|
||||
build: build.lxdone
|
||||
driver: driver.done
|
||||
tgz: $(F_TGZ)
|
||||
spm: $(F_SPM)
|
||||
rpm: $(F_RPMS)
|
||||
upload: update.done rpm $(F_ULDONE)
|
||||
tag: tag.done
|
||||
install: build.lxdone driver.done install.lxdone
|
||||
copy-run: copy-run.done
|
||||
copy-devel: copy-devel.done
|
||||
copy: copy-run copy-devel
|
||||
patch: patches.done
|
||||
shutdown:
|
||||
ssh -l root $(HOST) "shutdown -h now"
|
||||
reboot:
|
||||
ssh -l root $(HOST) "reboot"
|
||||
update-rpm: copy
|
||||
ssh -l root $(HOST) rpm -U $(addprefix rpm/,$(F_RPMS))
|
||||
erase-rpm:
|
||||
ssh -l root $(HOST) rpm -e $(KERNEL_BASE)-run $(KERNEL_BASE)-devel
|
||||
dist: clean
|
||||
cd ..;\
|
||||
tar -czf kernel.tar.gz `find kernel -type f -maxdepth 1 | grep -ve "setup\|trash\|CVS"`
|
||||
mv ../kernel.tar.gz .
|
||||
clean:
|
||||
rm -rf $(TMP_INSTALL)
|
||||
rm -rf install/* reiser.patch *~ *.done *.lxdone *.uldone *.patch *.rpm *.tar.gz *.tar $(SCOPE_DRIVER_BASE)
|
||||
rm -rf linux linux-$(KERNEL_VERSION) CURRENT_*
|
||||
rm -f toplevel-makefile
|
||||
prepare: unpack patch EXTRAVERSION COMPLETE_VERSION
|
||||
|
||||
#newrelease:
|
||||
# echo '# $$Id$$' > RELEASE-$(KERNEL_VERSION); \
|
||||
# cvs add RELEASE-$(KERNEL_VERSION); \
|
||||
# cvs commit -m "initial checkin" RELEASE-$(KERNEL_VERSION)
|
||||
DEFERRED_TARGETS = \
|
||||
all current.uldone ping ssh build \
|
||||
tgz spm rpm upload tag install 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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue