jw-pkg/make/linux-rpm-build.mk

215 lines
6.9 KiB
Makefile
Raw Normal View History

2005-05-16 14:42:32 +00:00
# abbreviations
define EXTRAVERSION
2012-02-04 11:06:22 +00:00
$(shell $(CAT) EXTRAVERSION)
2005-05-16 14:42:32 +00:00
endef
define COMPLETE_VERSION
2012-02-04 11:06:22 +00:00
$(shell $(CAT) COMPLETE_VERSION)
2005-05-16 14:42:32 +00:00
endef
HOST ?= $(HOSTNAME)
KERNEL_BASE ?= lx-$(HOST)
BOOT_LABEL ?= lx-$(KERNEL_VERSION)-$(RPM_RELEASE)
KERNEL_PKG_SUFFIX ?= .tar.gz
CUSTOMER ?= jannet
KERNEL_DLOAD_DIR ?= /home/samba/dat/exe/linux/os
2012-02-04 10:59:02 +00:00
KERNEL_PKG ?= $(KERNEL_DLOAD_DIR)/$(shell echo $(KERNEL_VERSION) | $(SED) 's/\([0-9]\.[0-9]*\)\..*/\1/')/linux-$(shell echo $(KERNEL_VERSION) | $(SED) 's/\(2\.6\.[0-9]+\)-..*/\1/')$(KERNEL_PKG_SUFFIX)
UPLOAD_HOST ?= ftp.jannet.de
UPLOAD_PATH ?= /srv/ftp/pub/packages/$(CUSTOMER)/$(KERNEL_BASE)
UPLOAD_OWNER ?= $(shell whoami)
2005-05-16 14:42:32 +00:00
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 = $(KERNEL_DLOAD_DIR)/$(KERNEL_MAJOR).$(KERNEL_MINOR)/linux-$(KERNEL_VERSION).tar
2005-05-16 14:42:32 +00:00
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)
2005-05-16 14:42:32 +00:00
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)
2005-05-16 14:42:32 +00:00
endif
else
KERNEL_PKG = $(KERNEL_PKG_BASE).bz2
KERNEL_SRC_DIR = linux-$(KERNEL_VERSION)
endif
#HOST = $(shell cd ../..; $(PWD) | xargs basename)
WD := $(shell $(PWD))
2012-02-04 10:59:02 +00:00
TAG = $(shell echo V_$(KERNEL_VERSION)_$(RPM_RELEASE) | $(SED) 's/\./_/g')
ARCH = $(shell $(RPMBUILD) --showrc | $(SED) '/build arch / !d; s/.*build arch *://; s/ //g')
2005-05-16 14:42:32 +00:00
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
2012-02-04 10:59:02 +00:00
#RPM_RELEASE_NUM := $(strip $(shell grep Id: RELEASE-$(KERNEL_VERSION) | $(SED) "s/.*RELEASE-$(KERNEL_VERSION),v[ ]*[0-9]*\.\([0-9]*\)[^0-9]*.*/\1/"))
2005-05-16 14:42:32 +00:00
#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 = sh $(MODDIR)/devutil/jcs/build_linux.sh \
-c config-$(KERNEL_VERSION) \
-t $(HOST) \
-b $(WD) \
-a i386 \
-s $(KERNEL_SRC_DIR) \
-i $(TMP_INSTALL)
MKSPEC := $(MODDIR)/devutil/jcs/mkspec-linux.sh
2005-05-16 14:42:32 +00:00
# exports
export KERNEL_VERSION
export KERNEL_INSTALL_PREFIX
# first target
all: rpm
# file rules
%.lxdone: config-$(KERNEL_VERSION) $(LOCAL_PRE_BUILD) linux-$(KERNEL_VERSION)/Makefile
$(BUILD) $(basename $@)
touch $@
$(TMP_INSTALL)/$(F_SPEC): linux-$(KERNEL_VERSION)/Makefile $(MKSPEC) Makefile
2012-02-04 10:59:02 +00:00
sh $(MKSPEC) -d $(TMP_INSTALL) -b $(KERNEL_BASE) -v $(shell echo $(COMPLETE_VERSION) | $(SED) 's/-[0-9][0-9]*.*//') -r $(RPM_RELEASE) -a $(ARCH) -l $(BOOT_LABEL) > $@
2005-05-16 14:42:32 +00:00
$(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
2012-02-04 10:59:02 +00:00
upload.sh $< rsync_ssh://$(UPLOAD_HOST):$(UPLOAD_PATH)/rpm/$(shell echo $@ | $(SED) 's/.*\(run\|devel\).*/\1/')/$<:640:750:$(UPLOAD_OWNER).$(CUSTOMER)
2005-05-16 14:42:32 +00:00
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 $@
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:
$(CVS_RSH) -l root $(HOST)
2005-05-16 14:42:32 +00:00
# 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 install.lxdone
2005-05-16 14:42:32 +00:00
copy-run: copy-run.done
copy-devel: copy-devel.done
copy: copy-run copy-devel
patch: patches.done
shutdown:
$(CVS_RSH) -l root $(HOST) "shutdown -h now"
2005-05-16 14:42:32 +00:00
reboot:
-l root $(HOST) "reboot"
2005-05-16 14:42:32 +00:00
update-rpm: copy
$(CVS_RSH) -l root $(HOST) rpm -U $(addprefix rpm/,$(F_RPMS))
2005-05-16 14:42:32 +00:00
erase-rpm:
$(CVS_RSH) -l root $(HOST) rpm -e $(KERNEL_BASE)-run $(KERNEL_BASE)-devel
2005-05-16 14:42:32 +00:00
dist: clean
cd ..;\
tar -czf kernel.tar.gz `find kernel -maxdepth 1 -type f | grep -ve "setup\|trash\|CVS"`
2005-05-16 14:42:32 +00:00
mv ../kernel.tar.gz .
clean:
$(RM) -rf $(KERNEL_BASE)-*
$(RM) -rf install/* reiser.patch *~ *.done *.lxdone *.uldone *.patch *.diff *.rpm *.tar.gz *.tar \
$(SCOPE_DRIVER_BASE)
$(RM) -rf linux linux-$(KERNEL_VERSION) CURRENT_* pax_global_header
$(RM) -f toplevel-makefile EXTRAVERSION COMPLETE_VERSION
distclean: clean