jw-pkg/make/upload.mk

115 lines
4 KiB
Makefile

# -- general, and important
LOCAL_PROJECT = $(PROJECT)
TARGET_HOST = cvs.jannet.de
UPLOAD_DOCUMENT_ROOT = /usr/local/httpd/htdocs
UPLOAD_VIRTUAL_SERVER_ROOT = www.jannet.de_443
TARGET_USER = root
TARGET_GROUP = root
TARGET_FILE_MODE = 755
TARGET_DIR_MODE = 755
DOWNLOAD_SERVER = https://www.jannet.de:443
URL_RELATIVE_PATH = $(CUSTOMER)/projects/$(LOCAL_PROJECT)/download
SSI_DOWNLOAD_TMPL = $(MODDIR)/doctmpl/html/ssi/ssi_download.html.tmpl
DOWNLOAD_REFERRER_DIRS = $(addprefix $(UPLOAD_DOCUMENT_ROOT)/, \
$(UPLOAD_VIRTUAL_SERVER_ROOT)/$(URL_RELATIVE_PATH) \
)
# -- general, and less important
DISTDIR = $(TOPDIR)/dist
TMPHTML=$(DISTDIR)/html
DOWNLOAD_URLDIR=$(DOWNLOAD_SERVER)/$(URL_RELATIVE_PATH)
TARGET_DIR = $(UPLOAD_DOCUMENT_ROOT)/$(UPLOAD_VIRTUAL_SERVER_ROOT)/$(URL_RELATIVE_PATH)
SSI_PREFIX = $(TMPHTML)/ssi_download_
SSI_FILES = $(addsuffix .html,$(addprefix $(SSI_PREFIX),$(notdir $(PCKG_FILES))))
PCKG_FILES = $(addprefix $(PCKG_DIR)/,$(DIST_FILES))
$(TMPHTML):
mkdir -p $(TMPHTML)
test -d $(TMPHTML) && rm -rf $(TMPHTML)/*
define generate_ssi
STEM=$(notdir $@) ;\
DIR=$(dir $@) ;\
if [ -n "`echo $(PROJECT_DESCR) | grep '\win'`" ]; then \
PLATF=" for Windows" ;\
elif [ -n "`echo $(PROJECT_DESCR) | grep '\lx'`" ]; then \
PLATF=" for Linux" ;\
fi; \
if [ -n "`echo $(PROJECT_DESCR) | grep '\-src'`" ]; then \
DISTTYPE=", Source Distribution" ;\
elif [ -n "`echo $(PROJECT_DESCR) | grep '\-bin'`" ]; then \
DISTTYPE=", Binary Distribution" ;\
fi; \
EXPLANATION="$(PROJECT_DESCR)$$PLATF$$DISTTYPE";\
SIZE=`ls -l $< | awk '{print $$5}'`;\
FILENAME=`basename $<` ;\
cat $(SSI_DOWNLOAD_TMPL) | sed -e "\
s/_VERSION_/$(LOCAL_DIST_VERSION)/g;\
s/_PROJECT_/$(LOCAL_PROJECT)/g;\
s/_TARGET_STEM_//g;\
s/_FILENAME_/$$FILENAME/g;\
s/_DATE_/$(shell date +"%Y-%m-%d")/g;\
s/_EXPLANATION_/$$EXPLANATION/g;\
s%_URLDIR_%$(DOWNLOAD_URLDIR)%g;\
s/_SIZE_/$$SIZE/g;\
" > $@
endef
# $(TMPHTML) $(SSI_DOWNLOAD_TMPL)
$(SSI_PREFIX)%.html: $(PCKG_DIR)/%
STEM=$(notdir $@) ;\
DIR=$(dir $@) ;\
mkdir -p $$DIR ;\
if [ -n "`echo $@ | grep 'win'`" ]; then \
PLATF=" for Windows" ;\
elif [ -n "`echo $@ | grep 'lx'`" ]; then \
PLATF=" for Linux" ;\
fi; \
if [ -n "`echo $@ | grep '\-src'`" ]; then \
DISTTYPE=", Source Distribution" ;\
elif [ -n "`echo $@ | grep '\-bin'`" ]; then \
DISTTYPE=", Binary Distribution" ;\
fi; \
EXPLANATION="$(PROJECT_DESCR)$$PLATF$$DISTTYPE";\
SIZE=`ls -l $< | awk '{print $$5}'`;\
FILENAME=$(notdir $<) ;\
cat $(SSI_DOWNLOAD_TMPL) | sed -e "\
s/_VERSION_/$(LOCAL_DIST_VERSION)/g;\
s/_PROJECT_/$(LOCAL_PROJECT)/g;\
s/_TARGET_STEM_//g;\
s/_FILENAME_/$$FILENAME/g;\
s/_DATE_/$(shell date +"%Y-%m-%d")/g;\
s/_EXPLANATION_/$$EXPLANATION/g;\
s%_URLDIR_%$(DOWNLOAD_URLDIR)%g;\
s/_SIZE_/$$SIZE/g;\
" > $@
#$(SSI_PREFIX)%.html: $(TMPHTML) $(SSI_DOWNLOAD_TMPL)
# $(generate_ssi)
#
#$(SSI_PREFIX)%.html: %-lx-src.tar.gz $(TMPHTML) $(SSI_DOWNLOAD_TMPL)
# $(generate_ssi)
ssi_build.dist:
make $(SSI_FILES)
# -- install.dist
install.dist: $(PCKG_FILES) ssi_build.dist
@echo "-- installing distribution files to $(TARGET_HOST):$(TARGET_DIR) as user $(TARGET_USER)"
ssh -l $(TARGET_USER) $(TARGET_HOST) -C "\
mkdir -p $(TARGET_DIR); chmod $(TARGET_DIR_MODE) $(TARGET_DIR)"
/usr/bin/rsync -az -v --links -e /usr/bin/ssh $(PCKG_FILES) $(TARGET_USER)@$(TARGET_HOST):$(TARGET_DIR)
ssh -l $(TARGET_USER) $(TARGET_HOST) -C "\
cd $(TARGET_DIR); find . -type d | xargs -r chmod $(TARGET_DIR_MODE); find . -type f | xargs -r chmod $(TARGET_FILE_MODE)"
@echo "-- installing referrer include files to $(TARGET_HOST) as user $(TARGET_USER)"
for DIR in $(DOWNLOAD_REFERRER_DIRS) ; do \
echo "to $$DIR" ;\
ssh -l $(TARGET_USER) $(TARGET_HOST) -C "\
mkdir -p $$DIR; chmod $(TARGET_DIR_MODE) $(TARGET_DIR)" ;\
/usr/bin/rsync -az -v --links -e /usr/bin/ssh $(TMPHTML)/ssi_download_*.html $(TARGET_USER)@$(TARGET_HOST):$$DIR ;\
ssh -l $(TARGET_USER) $(TARGET_HOST) -C "\
cd $$DIR; find . -type d | xargs -r chmod $(TARGET_DIR_MODE); find . -type f | xargs -r chmod $(TARGET_FILE_MODE)" ;\
done