jw-pkg/make/rpmdist.mk

332 lines
9.9 KiB
Makefile
Raw Normal View History

ifneq ($(PROJECT_DESCR_FILE),)
ifeq ($(shell grep "^ *subpackages *=.*devel" $(PROJECT_DESCR_FILE)),)
CREATE_DEVEL = false
endif
endif
PKG_FORMAT ?= rpm
ifeq ($(PKG_FORMAT),debian)
RPM ?= /bin/bash $(MOD_SCRIPT_DIR)/dpm.sh
RPM_ARCH ?= $(shell dpkg --print-architecture)
RPM_SUFFIX ?= deb
else
RPM ?= /bin/rpm
RPM_ARCH ?= $(ARCH)
RPM_SUFFIX ?= rpm
endif
CREATE_DEVEL ?= true
UPLOAD_SH = $(MOD_SCRIPT_DIR)/upload.sh
RPM_PROJECT ?= $(FLAVOUR_PREFIX)$(PROJECT)
LOCAL_MKSPEC_SH ?= $(TOPDIR)/make/mkspec.sh
MKSPEC_SH ?= $(MOD_SCRIPT_DIR)/mkspec_wrapper.sh $(LOCAL_MKSPEC_SH)
FTP_SRC_GROUP ?= $(shell id -g)
FTP_SRC_USER ?= $(shell whoami)
FTP_RUN_GROUP ?= $(shell id -g)
FTP_RUN_USER ?= $(shell whoami)
FTP_DEV_GROUP ?= $(shell id -g)
FTP_DEV_USER ?= $(shell whoami)
FTP_HOST ?= ftp.jannet.de
FTP_FILE_MODE ?= 644
FTP_DIR_MODE ?= 755
FTP_HOST ?= ftp.jannet.de
FTP_HOST_LOGIN ?= root
RPM_PROJECT ?= $(PROJECT)
RPM_VERSION ?= $(DIST_VERSION)
LAST_RPM_VERSION_FILE = $(TOPDIR)/LAST_RPM_VERSION$(FLAVOUR_SUFFIX)
LAST_RPM_VERSION ?= $(shell sh $(MOD_SCRIPT_DIR)/platform-map-file.sh \
-p $(OS)/$(RPM_ARCH) $(LAST_RPM_VERSION_FILE) read | $(SED) 's/-dev//')
RPMBUILD ?= rpmbuild
CHECK_CVS_SYNC_BEFORE_RPM_RELEASE ?= true
HASH = $(shell $(cvs_files) | \
grep -v "CHANGES\|VERSION\|HASH\|MD5SUMS\|_RPM_RUN" | \
2012-02-04 10:59:02 +00:00
xargs md5sum | md5sum | $(SED) 's/ .*//')
LOCAL_REPO ?= /srv/ftp/pub/local/packages/suse/11.4
include $(MODDIR)/make/tag-defs.mk
2002-07-10 12:24:05 +00:00
DIST_DIR = dist
DIST_SRC_DIR = $(DIST_DIR)/src/$(RPM_PROJECT)-$(RPM_VERSION)
DIST_PCKG_DIR = $(DIST_DIR)/pckg
#DIST_FILE = $(DIST_PCKG_DIR)/$(PROJECT)-$(DIST_VERSION).tar.gz
2002-07-01 18:26:01 +00:00
PCKG_TAR ?= $(RPM_PROJECT)-$(RPM_VERSION).tar.gz
ifeq ($(PKG_FORMAT),debian)
PCKG_RPM_RUN_I386 ?= $(RPM_PROJECT)-run_$(RPM_VERSION)_$(RPM_ARCH).deb
ifeq ($(CREATE_DEVEL),true)
PCKG_RPM_DEVEL_I386 ?= $(RPM_PROJECT)-devel_$(RPM_VERSION)_$(RPM_ARCH).deb
endif
PCKG_RPM_SRC ?= $(RPM_PROJECT)-$(RPM_VERSION).src.deb.keinplan
else
PCKG_RPM_RUN_I386 ?= $(RPM_PROJECT)-run-$(RPM_VERSION).$(RPM_ARCH).rpm
ifeq ($(CREATE_DEVEL),true)
PCKG_RPM_DEVEL_I386 ?= $(RPM_PROJECT)-devel-$(RPM_VERSION).$(RPM_ARCH).rpm
endif
PCKG_RPM_SRC ?= $(RPM_PROJECT)-$(RPM_VERSION).src.rpm
endif
2010-07-03 16:20:28 +00:00
include $(MODDIR)/make/upload-defs-rpm.mk
2002-07-01 18:26:01 +00:00
2012-02-04 10:59:02 +00:00
DIST_FILES = $(shell echo $(REMOTE_TARGETS) | $(SED) 's/\b.*\///g; s/:.*\b//g')
GENERATED = $(sort $(shell find . -name '*.in' | \
2012-02-04 10:59:02 +00:00
$(SED) "s/\.in$$//; s%$(DIST_SRC_DIR)%%; s%^[./]*%%"))
ifeq ($(PKG_FORMAT),debian)
RPMS_DIR = $(TOPDIR)/dist/src
SRPMS_DIR = $(TOPDIR)/dist/src
else
RPMS_DIR = $(firstword $(wildcard $(HOME)/rpmbuild/RPMS/$(RPM_ARCH) /usr/src/packages/RPMS/$(RPM_ARCH)))
SRPMS_DIR = $(firstword $(wildcard $(HOME)/rpmbuild/SRPMS /usr/src/packages/SRPMS))
endif
2004-11-29 21:56:13 +00:00
DIST_DIRS = $(DIST_SRC_DIR) $(DIST_PCKG_DIR)
BINARY_RPM = $(DIST_PCKG_DIR)/$(PCKG_RPM_RUN_I386)
ifeq ($(CREATE_DEVEL),true)
BINARY_RPM += $(DIST_PCKG_DIR)/$(PCKG_RPM_DEVEL_I386)
endif
DIST_PCKG_SRPM = $(BINARY_RPM) $(DIST_PCKG_DIR)/$(PCKG_RPM_SRC)
# to be replaced by build-package.sh
RPM_REQUIRES_DEVEL += $(RPM_PROJECT)-run = __NEXT_VERSION__
unexport RPM_VERSION VERSION DIST_SRC_DIR
include $(MODDIR)/make/tag-rules.mk
include $(MODDIR)/make/upload-rules.mk
BUILD_PACKAGE_SH = /bin/bash $(MOD_SCRIPT_DIR)/build-package.sh \
-N $(RPM_PROJECT) \
-R "$(RPM_REQUIRES_RUN)" -D "$(RPM_REQUIRES_DEVEL)" -P $(PROJECT) \
-m $(MOD_SCRIPT_DIR) -a $(RPM_ARCH) -p $(DIST_PCKG_DIR) -F $(PKG_FORMAT)
# -t $(DIST_SRC_DIR) # wrong: contains $(RPM_PROJECT)-$(RPM_VERSION) but is expected differently
all:
install:
clean: rpm-clean
distclean: rpm-clean
tgz: $(DIST_PCKG_DIR)/$(PCKG_TAR)
ftag: ftag.dist
rpm-upload-stable: rpm-upload-STABLE.dist
rpm-upload-rc: rpm-upload-RC.dist
2007-08-23 17:55:13 +00:00
rpm-clean: clean.rpm
#rpm-clean: clean.mkspec
rpm-uninstall: config rpmuninstall.dist
rpm-build: rpm-build.dist
rpm-install: config rpm-build rpminstall.dist
2007-08-21 19:56:26 +00:00
rpm-reinstall: rpm-uninstall rpm-clean rpm-install
rpm-rebuild: rpm-clean rpm-build
2012-02-20 10:09:23 +00:00
rpm-update: rpmupdate.dist
rpm-upload-local: rpm-upload-local.dist
clean.rpm:
rm -rf $(DIST_DIR) *.dist CURRENT_RPM_SRC
#ifeq ($(PROJECT_DESCR_FILE),)
#
#clean.mkspec:
#
#else
#
#$(LOCAL_MKSPEC_SH): $(PROJECT_DESCR_FILE)
# sh $(MOD_SCRIPT_DIR)/create-mkspec.sh $< > $@.tmp
# mv $@.tmp $@
#
#clean.mkspec:
# rm -f $(LOCAL_MKSPEC_SH) $(LOCAL_MKSPEC_SH).tmp
#
#endif
rpm-build.dist:
$(BUILD_PACKAGE_SH) build
touch $@
rpm-update-local-repo:
for a in src i386 i586 i686 x86_64; do \
if ls dist/*/*.$$a.rpm >/dev/null 2>&1; then \
sudo install -m 644 dist/pckg/*.$$a.rpm $(LOCAL_REPO)/rpm/$$a/ ;\
fi ;\
done
sudo sh $(LOCAL_REPO)/update.sh
src-dir.dist:
2002-07-01 18:26:01 +00:00
mkdir -p $(DIST_SRC_DIR)
touch $@
#%.tar.gz: $(RPM_EXTRA_FILES) cpfiles.dist
# mkdir -p $(DIST_PCKG_DIR)
# tar --anchored $(addprefix --exclude=,$(GENERATED)) \
# -czvf $@ -C $(dir $(DIST_SRC_DIR)) $(notdir $(DIST_SRC_DIR))
#
#$(DIST_PCKG_SRPM): $(DIST_PCKG_DIR)/$(PCKG_TAR)
# $(RPMBUILD) -ts $<
# cp $(SRPMS_DIR)/$(PCKG_RPM_SRC) $(dir $@)/
#
#$(DIST_PCKG_RPM): $(DIST_PCKG_DIR)/$(PCKG_TAR)
# if [ $< -nt $(RPMS_DIR)/$(notdir $@) ]; then $(RPMBUILD) -tb $<; fi
# cp $(addprefix $(RPMS_DIR)/,$(notdir $(DIST_PCKG_RPM))) $(dir $@)/
#
#$(DIST_PCKG_DIR)/CURRENT_%: $(TOPDIR)/VERSION
# echo $(CURRENT_$*) > $@
#
2002-07-01 18:26:01 +00:00
rpmbuild.dist: $(DIST_PCKG_RPM) $(DIST_PCKG_SRPM) $(DIST_FILES)
touch $@
rpm-upload-local.dist: rpmbuild.dist
$(MOD_SCRIPT_DIR)/suse-local-repo.sh add $(DIST_PCKG_SRPM) $(DIST_PCKG_RPM)
2007-08-24 20:14:21 +00:00
touch $@
rpminstall.dist: rpm-build.dist
@set -e; for p in $(BINARY_RPM); do \
if ! $(RPM) -q `basename $$p | $(SED) "s/[._]$(RPM_ARCH)\.$(RPM_SUFFIX)//; s/_\([0-9.-]\+\)$$/-\1/"` > /dev/null 2>&1 ; then \
echo + installing $$p ;\
sudo $(RPM) -U $$p; \
fi; \
done
2004-11-29 21:56:13 +00:00
touch $@
#rpmupdate.dist: $(DIST_PCKG_RPM)
# @set -e; for p in $^; do \
# echo + updating $$p ;\
# sudo /bin/rpm -U --replacepkgs --replacefiles $$p; \
# done
# touch $@
2012-02-20 10:09:23 +00:00
rpmuninstall.dist:
@set -e; for s in devel run; do \
if $(RPM) -q $(RPM_PROJECT)-$$s > /dev/null 2>&1 ; then \
echo + removing $(RPM_PROJECT)-$$s ;\
sudo $(RPM) -e $(RPM_PROJECT)-$$s --nodeps --allmatches; \
fi; \
done
rm -f rpminstall.dist
upload-%.dist: %_$(PROJECT_CAPNAME)_RPM_RUN_I386
cvs commit $<
$(UPLOAD_SH) $< $(REMOTE_TARGET_PREFIX)$(PCKG_ROOT)/$<:640:750:$(FTP_RUN_USER).$(FTP_RUN_GROUP)
touch $@
update-repo.dist: upload.dist
2007-12-19 20:52:10 +00:00
$(CVS_RSH) -l root $(FTP_HOST) $(UPDATE_REPO_SH)
touch $@
# ------ hash stuff
ifeq ($(wildcard $(TOPDIR)/.git),)
SCM_COMMIT = cvs commit
SCM_ADD = cvs add
SCM_PUSH =
SCM_PULL = cvs update -dP
define check_scm_sync
echo + checking cvs ;\
$(SCM_PULL) ;\
cvs status > cvs_status.tmp 2>&1 ;\
if [ $$? != 0 ]; then \
2012-02-04 11:06:22 +00:00
$(CAT) cvs_status.tmp ;\
echo -e "\n======== cvs status failed, giving up." >&2 ;\
exit 1 ;\
fi ;\
if grep -qi "locally modified" cvs_status.tmp; then \
echo + cvs copy has locally modified files, giving up >&2 ;\
exit 1 ;\
fi ;\
if grep -qi "needs" cvs_status.tmp; then \
echo + cvs copy is out-of-date, giving up >&2 ;\
exit 1 ;\
fi
endef
else
SCM_COMMIT = git commit
SCM_ADD = git add
SCM_PUSH = git push
SCM_PULL = git pull
define check_scm_sync
echo + checking git ;\
$(SCM_PULL) || {\
echo "$(SCM_PULL) failed, giving up" ;\
exit 1 ;\
} ;\
git status -s > git_status.tmp 2>&1 ;\
if [ $$? != 0 ]; then \
$(CAT) git_status.tmp ;\
echo -e "\n======== git status failed, giving up." >&2 ;\
exit 1 ;\
fi ;\
if grep -qi "^ *M " git_status.tmp; then \
echo + git copy has locally modified files, giving up >&2 ;\
exit 1 ;\
fi
endef
endif
define increase_build_number
if [ "$(CHECK_CVS_SYNC_BEFORE_RPM_RELEASE)" = true ]; then \
$(check_scm_sync) ;\
fi ;\
if [ "$(LAST_RPM_VERSION)" != "$(RPM_VERSION)" ]; then \
echo "+ no need to increase build number of $(RPM_VERSION), last rpm has $(LAST_RPM_VERSION)" ;\
exit 0 ;\
fi ;\
2007-08-28 16:16:34 +00:00
echo -n "+ increasing build number to " ;\
echo $(MAJOR_MINOR_RELEASE)-$(shell expr $(BUILD_NUMBER) + 1)-dev | tee VERSION ;\
echo $(HASH) > HASH ;\
if ! /bin/bash $(MOD_SCRIPT_DIR)/list-cvs-files.sh | grep -q '^HASH$$'; then \
$(SCM_ADD) HASH ;\
fi ;\
$(SCM_COMMIT) -m "$(MAJOR_MINOR_RELEASE)-$(shell expr $(BUILD_NUMBER) + 1)-dev" HASH VERSION
$(SCM_PUSH)
endef
define check_reinstall_old
2011-07-01 10:51:41 +00:00
(true $(addprefix && test -f ,$(DIST_PCKG_RPM)) && make rpm-uninstall && make rpm-install)
endef
md5:
echo $(HASH) > HASH
rpm-next-build:
@$(increase_build_number)
try-reinstall:
$(check_reinstall_old)
rpm-update-release:
2012-02-04 11:06:22 +00:00
@if [ "`$(CAT) HASH`" != "$(HASH)" ]; then \
echo + source was modified ;\
$(increase_build_number) ;\
elif ! $(check_reinstall_old); then \
echo "+ old rpm is uninstallable" ;\
$(increase_build_number) ;\
fi
rpm-check-release:
2012-02-04 11:06:22 +00:00
@if [ "`$(CAT) HASH`" != "$(HASH)" ]; then \
echo + source was modified ;\
else \
echo + source is unmodified ;\
fi
rpm-release: rpm-release-reinstall
# doesn't work
# rpm-release-update: rpm-release rpm-update
rpm-release-reinstall: update
$(BUILD_PACKAGE_SH) release
ifneq ($(TARGET_HOST),)
rpm-remote-install:
scp $(addprefix dist/pckg/,$(PCKG_RPM_RUN_I386) $(PCKG_RPM_DEVEL_I386)) root@$(TARGET_HOST):/tmp/
ssh -l root $(TARGET_HOST) rpm -U --force $(addprefix /tmp/,$(PCKG_RPM_RUN_I386) $(PCKG_RPM_DEVEL_I386))
rpm-remote-install-run: rpm-install-remote.done
scp $(addprefix dist/pckg/,$(PCKG_RPM_RUN_I386)) root@$(TARGET_HOST):/tmp/
ssh -l root $(TARGET_HOST) rpm -U --force $(addprefix /tmp/,$(PCKG_RPM_RUN_I386))
endif