X-Git-Url: http://git.onelab.eu/?p=myslice.git;a=blobdiff_plain;f=Makefile;h=6f557bae544f0079e28bfc58ee3dd64fe69d5015;hp=80fcc4f1f9e44f650c201dcf4b18c22a284ebfd7;hb=89af8babd28a7da90ffe59be3ce7b7e812734cd0;hpb=b2372aae0b1863950bc75e6fb82932485b1ef961 diff --git a/Makefile b/Makefile index 80fcc4f1..6f557bae 100644 --- a/Makefile +++ b/Makefile @@ -1,17 +1,180 @@ -all: tags +SHELL = /bin/bash + +MAKE-SILENT = $(MAKE) --no-print-directory + +all: static templates + +# clean up and recompute +redo: clean-oldies redo-static redo-templates + +clean-oldies: + rm -rf all-static all-templates django-static force: +DESTDIR := / +datadir := /usr/share +bindir := /usr/bin + +PWD := $(shell pwd) + +# +build: static templates force + python setup.py build + +install: + python setup.py install \ + --install-purelib=$(DESTDIR)/$(datadir)/unfold \ + --install-scripts=$(DESTDIR)/$(datadir)/unfold \ + --install-data=$(DESTDIR)/$(datadir)/unfold + +#################### third-party layout is managed as part of collectstatic +static: force + ./manage.py collectstatic --noinput + +clean-static: + rm -rf static/ + +redo-static: clean-static static + +#################### +# general stuff +DATE=$(shell date -u +"%a, %d %b %Y %T") + +# This is called from the build with the following variables set +# (see build/Makefile and target_debian) +# (.) RPMTARBALL +# (.) RPMVERSION +# (.) RPMRELEASE +# (.) RPMNAME +DEBVERSION=$(RPMVERSION).$(RPMRELEASE) +DEBTARBALL=../$(RPMNAME)_$(DEBVERSION).orig.tar.bz2 + +debian: static templates debian/changelog debian.source debian.package + +debian/changelog: debian/changelog.in + sed -e "s|@VERSION@|$(DEBVERSION)|" -e "s|@DATE@|$(DATE)|" debian/changelog.in > debian/changelog + +debian.source: force + rsync -a $(RPMTARBALL) $(DEBTARBALL) + +debian.package: + debuild --set-envvar PREFIX=/usr -uc -us -b + +debian.clean: + $(MAKE) -f debian/rules clean + rm -rf build/ MANIFEST ../*.tar.gz ../*.dsc ../*.build + find . -name '*.pyc' -delete + + +# having templates in a templates/ subdir is fine most of the time except for plugins +plugins-templates: force + @find plugins -type f -name '*.html' +local-templates: force + @$(foreach tmpl,$(shell find . -name templates | grep -v '^\./templates$$'),find $(tmpl) -maxdepth 2 -type f -name *.html;) +local-templates2: force + @$(foreach tmpl,$(shell find . -name templates | grep -v '^\./templates$$'),ls -1 $(tmpl)/*;) + + +list-templates: plugins-templates local-templates + +#################### manage templates for the plugin area +templates: force + @mkdir -p templates + ln -sf $(foreach x,$(shell $(MAKE-SILENT) list-templates),"../$(x)") ./templates + +clean-templates templates-clean: force + rm -rf ./templates + +redo-templates: clean-templates templates + +#################### +### list-all list-resources: list-templates list-js list-css list-img + +#################### compute emacs tags +# list files under git but exclude third-party stuff like bootstrap and jquery +myfiles: force + @git ls-files | egrep -v 'insert(_|-)above|third-party/|to-be-integrated/' + +pyfiles: force + @git ls-files | grep '\.py$$' + # in general it's right to rely on the contents as reported by git tags: force - git ls-files | xargs etags + $(MAKE-SILENT) myfiles | xargs etags # however sometimes we have stuff not yet added, so in this case ftags: force find . -type f | fgrep -v '/.git/' | xargs etags -static: force - ./manage.py collectstatic --noinput +######################################## +### devel-oriented +######################################## + +#################### sync : push current code on a box running myslice +# this for now targets deployments based on the debian packaging +SSHUSER ?= root +SSHURL := $(SSHUSER)@$(MYSLICEBOX): +SSHCOMMAND := ssh $(SSHUSER)@$(MYSLICEBOX) + +### rsync options +# the config file should probably not be overridden ?? +# --exclude settings.py +LOCAL_RSYNC_EXCLUDES := --exclude '*.pyc' +LOCAL_RSYNC_EXCLUDES += --exclude '*.sqlite3' --exclude myslice.ini +LOCAL_RSYNC_EXCLUDES += --exclude static --exclude templates --exclude build +LOCAL_RSYNC_EXCLUDES += --exclude to-be-integrated --exclude third-party +# usual excludes +RSYNC_EXCLUDES := --exclude .git --exclude '*~' --exclude TAGS --exclude .DS_Store $(LOCAL_RSYNC_EXCLUDES) +# make -n will propagate as rsync -n +RSYNC_COND_DRY_RUN := $(if $(findstring n,$(MAKEFLAGS)),--dry-run,) +# putting it together +RSYNC := rsync -a -v $(RSYNC_COND_DRY_RUN) $(RSYNC_EXCLUDES) + +#################### minimal convenience for pushing work-in-progress in an apache-based depl. +# xxx until we come up with a packaging this is going to be a wild guess +# on debian04 I have stuff in /usr/share/myslice and a symlink in /root/myslice +INSTALLED_MAIN =/usr/share/pyshared +# this is for a debian box +INSTALLED_APACHE =/etc/apache2/sites-available/ + +sync: sync-main sync-apache + +sync-main: +ifeq (,$(MYSLICEBOX)) + @echo "you need to set MYSLICEBOX, like in e.g." + @echo " $(MAKE) MYSLICEBOX=debian04.pl.sophia.inria.fr "$@"" + @exit 1 +else + +$(RSYNC) ./ $(SSHURL)/$(INSTALLED_MAIN)/ +endif + +sync-apache: +ifeq (,$(MYSLICEBOX)) + @echo "you need to set MYSLICEBOX, like in e.g." + @echo " $(MAKE) MYSLICEBOX=debian04.pl.sophia.inria.fr "$@"" + @exit 1 +else + +$(RSYNC) ./apache/unfold.conf $(SSHURL)/$(INSTALLED_APACHE)/ + +$(RSYNC) ./apache/unfold-init-ssl.sh $(SSHURL)/$(bindir)/ +endif + +restart: +ifeq (,$(MYSLICEBOX)) + @echo "you need to set MYSLICEBOX, like in e.g." + @echo " $(MAKE) MYSLICEBOX=debian04.pl.sophia.inria.fr "$@"" + @exit 1 +else + +$(SSHCOMMAND) apachectl restart +endif -clean-static: force - rm -rf ./all-static/ +#SSHUSER=tparment +#MYSLICEBOX=srv-diana.inria.fr +sync-devel: +ifeq (,$(MYSLICEBOX)) + @echo "you need to set MYSLICEBOX, like in e.g." + @echo " $(MAKE) MYSLICEBOX=srv-diana.inria.fr "$@"" + @exit 1 +else + +$(RSYNC) --relative $$(git ls-files) $(SSHURL)myslice/ +endif