UPLOAD_SH = $(MOD_SCRIPT_DIR)/upload.sh ifeq ($(RPM_PROJECT),) RPM_PROJECT = $(PROJECT) endif ifndef FTP_FILE_MODE FTP_FILE_MODE = 640 endif ifndef FTP_DIR_MODE FTP_DIR_MODE = 750 endif RPM_VERSION = $(VERSION) TAG_VERSION = V_$(shell echo $(VERSION) | sed 's/[\.-]/_/g') CLEAN += $(wildcard *.spec *.rpm *~ *.rpmrc *.dist .*.swp) DIST_SRC_DIR = dist/src/$(RPM_PROJECT)-$(RPM_VERSION) DIST_PCKG_DIR = dist/pckg PCKG_TAR = $(RPM_PROJECT)-$(RPM_VERSION).tar.gz PCKG_RPM_RUN_I386 = $(RPM_PROJECT)-run-$(RPM_VERSION).i386.rpm PCKG_RPM_DEVEL_I386 = $(RPM_PROJECT)-devel-$(RPM_VERSION).i386.rpm PCKG_RPM_SRC = $(RPM_PROJECT)-$(RPM_VERSION).src.rpm PCKG_ROOT = $(FTP_PCKG_DIR)/$(RPM_PROJECT) CURRENT_SRC = $(PCKG_ROOT)/src/$(PCKG_TAR) CURRENT_RPM_RUN_I386 = $(PCKG_ROOT)/rpm/run/$(PCKG_RPM_RUN_I386) CURRENT_RPM_DEVEL_I386 = $(PCKG_ROOT)/rpm/devel/$(PCKG_RPM_DEVEL_I386) CURRENT_RPM_SRC = $(PCKG_ROOT)/rpm/src/$(PCKG_RPM_SRC) REMOTE_TARGET_PREFIX = rsync_ssh://$(FTP_HOST_LOGIN)@$(FTP_HOST):/home/ftp/dat REMOTE_TARGETS = \ $(REMOTE_TARGET_PREFIX)$(CURRENT_SRC):$(FTP_FILE_MODE):$(FTP_DIR_MODE):$(FTP_SRC_USER).$(FTP_SRC_GROUP) \ $(REMOTE_TARGET_PREFIX)$(PCKG_ROOT)/CURRENT_SRC:$(FTP_FILE_MODE):$(FTP_DIR_MODE):$(FTP_SRC_USER).$(FTP_SRC_GROUP) \ $(REMOTE_TARGET_PREFIX)$(CURRENT_RPM_RUN_I386):$(FTP_FILE_MODE):$(FTP_DIR_MODE):$(FTP_RUN_USER).$(FTP_RUN_GROUP)\ $(REMOTE_TARGET_PREFIX)$(PCKG_ROOT)/CURRENT_RPM_RUN_I386:$(FTP_FILE_MODE):$(FTP_DIR_MODE):$(FTP_RUN_USER).$(FTP_RUN_GROUP) \ $(REMOTE_TARGET_PREFIX)$(CURRENT_RPM_DEVEL_I386):$(FTP_FILE_MODE):$(FTP_DIR_MODE):$(FTP_DEV_USER).$(FTP_DEV_GROUP) \ $(REMOTE_TARGET_PREFIX)$(PCKG_ROOT)/CURRENT_RPM_DEVEL_I386:$(FTP_FILE_MODE):$(FTP_DIR_MODE):$(FTP_DEV_USER).$(FTP_DEV_GROUP) \ $(REMOTE_TARGET_PREFIX)$(CURRENT_RPM_SRC):$(FTP_FILE_MODE):$(FTP_DIR_MODE):$(FTP_SRC_USER).$(FTP_SRC_GROUP) \ $(REMOTE_TARGET_PREFIX)$(PCKG_ROOT)/CURRENT_RPM_SRC:$(FTP_FILE_MODE):$(FTP_DIR_MODE):$(FTP_SRC_USER).$(FTP_SRC_GROUP) DIST_FILES = $(shell echo $(REMOTE_TARGETS) | sed 's/\b.*\///g; s/:.*\b//g') RPMS_DIR = /usr/src/packages/RPMS/i386 SRPMS_DIR = /usr/src/packages/SRPMS DIST_DIRS = $(DIST_SRC_DIR) $(DIST_PCKG_DIR) DIST_PCKG_RPM = $(DIST_PCKG_DIR)/$(PCKG_RPM_RUN_I386) $(DIST_PCKG_DIR)/$(PCKG_RPM_DEVEL_I386) rpmclean: rm -rf $(DIST_SRC_DIR) $(PCKG_TAR) *.dist rsync_ssh\://% ftp\://% scp\://%: make $(shell echo $(addprefix $(DIST_PCKG_DIR)/,$(notdir $@)) | sed 's/:.*//g') $(UPLOAD_SH) $(shell echo $(addprefix $(DIST_PCKG_DIR)/,$(notdir $@)) $@ | sed 's/:.*//g') $@ cpmod.dist: for mod in $(SUBDIRS); do \ make -C $$mod distclean ;\ mkdir -p $(DIST_SRC_DIR)/$$mod ;\ tar -C $$mod \ --exclude=dist \ --exclude=pckg \ --exclude=Debug \ --exclude=CVS \ --exclude=old \ --exclude=v1.1 \ --exclude='*.o' \ --exclude='*~' \ --exclude=xml-flat \ --exclude=contrib \ -cf - . | tar -C $(DIST_SRC_DIR)/$$mod -xf - ;\ done touch $@ cpfiles.dist: mkdir -p $(DIST_SRC_DIR) cp Makefile $(DIST_SRC_DIR) cp configure.ac.tmpl $(DIST_SRC_DIR) sh $(MKSPEC_SH) -V $(RPM_VERSION) -S $(notdir $(PCKG_TAR)) -N $(RPM_PROJECT) -R "$(RPM_REQUIRED)" \ -P $(PROJECT) \ > $(DIST_SRC_DIR)/$(RPM_PROJECT)-$(RPM_VERSION).spec echo $(RPM_VERSION) > $(DIST_SRC_DIR)/VERSION touch $@ %.tar.gz: cpfiles.dist cpmod.dist mkdir -p $(DIST_PCKG_DIR) tar -czvf $@ -C $(dir $(DIST_SRC_DIR)) $(notdir $(DIST_SRC_DIR)) \ $(addprefix --exclude=,$(patsubst %,"%",$(basename $(shell find . -name *.in | sed 's%\./%*/%; s%\(.*\)%\1%g')))) %.src.rpm: %.tar.gz rpm -ts $< cp $(SRPMS_DIR)/$(notdir $@) $@ $(DIST_PCKG_RPM): $(DIST_PCKG_DIR)/$(PCKG_TAR) if [ $< -nt $(RPMS_DIR)/$(notdir $@) ]; then rpm -tb $<; fi cp $(RPMS_DIR)/$(notdir $@) $@ $(DIST_PCKG_DIR)/CURRENT_%: $(TOPDIR)/VERSION echo $(CURRENT_$*) > $@ build.dist: $(DIST_FILES) upload.dist: if [ -f configure -o -f configure.ac -o -f configure.ac.tmpl ]; then make config; fi make $(REMOTE_TARGETS) touch $@.done rpminstall.dist: $(DIST_PCKG_RPM) sudo /bin/rpm -U $< touch $@ yupdate.%.dist: sudo -u root /opt/ytools/bin/yupdate.sh -f $(HOME)/.yupdaterc -s $* touch $@ tag.dist: cvs tag $(TAG_VERSION) ftag.dist: cvs tag -F $(TAG_VERSION) tgz: $(PCKG_TAR) distclean: rpmclean clean: rpmclean ftag: ftag.dist