X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=Makefile;h=f40c1db57fc52373357074bba15df36f63c4b381;hb=2f570c9fab30a41767b20607bb3e01d102f12fec;hp=99fb3210718e6064ed917efac5de57332ef0ec75;hpb=65d84452c2b58dd76f97e4c28e5ec401aff890c4;p=myslice.git diff --git a/Makefile b/Makefile index 99fb3210..f40c1db5 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,139 @@ +MAKE-SILENT = $(MAKE) --no-print-directory + +### first purpose, build and install from the specfile +all: build + +force: + +DESTDIR := / +datadir := /usr/share +bindir := /usr/bin + +PWD := $(shell pwd) + +build: static templates + python setup.py build + +install: + python setup.py install \ + --install-purelib=$(DESTDIR)/$(datadir)/myslice \ + --install-scripts=$(DESTDIR)/$(datadir)/myslice \ + --install-data=$(DESTDIR)/$(datadir)/myslice + + +#################### 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/|/play/' + # in general it's right to rely on the contents as reported by git -tags: - git ls-files | xargs etags +tags: force + $(MAKE-SILENT) myfiles | xargs etags # however sometimes we have stuff not yet added, so in this case -ftags: +ftags: force find . -type f | fgrep -v '/.git/' | xargs etags + +#################### third-party layout is kind of special +# because we have differents versions and all +THIRD-PARTY-RESOURCES = +# ignore variants, use the main symlink third-party/bootstrap +THIRD-PARTY-RESOURCES += $(shell ls third-party/bootstrap/*/*) +# just the single js as identified with a symlink +THIRD-PARTY-RESOURCES += $(shell ls third-party/datatables/js/dataTables.js) +# likewise +THIRD-PARTY-RESOURCES += $(shell ls third-party/jquery/js/jquery.js) +# spin comes in plain or min, + the jquery plugin, and our own settings +THIRD-PARTY-RESOURCES += $(shell ls third-party/spin/*.js) + +thirdparty-js: + @find $(THIRD-PARTY-RESOURCES) -name '*.js' +thirdparty-css: + @find $(THIRD-PARTY-RESOURCES) -name '*.css' +thirdparty-img: + @find $(THIRD-PARTY-RESOURCES) -name '*.png' + +# we might have any of these as templates - e.g. ./engine/templates/plugin-setenv.js +# so if there's a /templates/ in the path ignore the file +other-js: force + @find . -type f -name '*.js' | egrep -v '/all-(static|templates)/|/third-party/|/templates/' +other-css: force + @find . -type f -name '*.css' | egrep -v 'all-(static|templates)/|/third-party/|/templates/' +other-img: force + @find . -type f -name '*.png' | egrep -v 'all-(static|templates)/|/third-party/|/templates/' + +list-js: thirdparty-js other-js +list-css: thirdparty-css other-css +list-img: thirdparty-img other-img + +# having templates in a templates/ subdir is fine most of the time except for plugins +list-templates: force + @find plugins -type f -name '*.html' + +#################### manage static contents (extract from all the modules into the single all-static location) +static run-static static-run: force + mkdir -p ./all-static/js all-static/css all-static/img + ln -sf $(foreach x,$(shell $(MAKE-SILENT) list-js),../../$(x)) ./all-static/js + ln -sf $(foreach x,$(shell $(MAKE-SILENT) list-css),../../$(x)) ./all-static/css + ln -sf $(foreach x,$(shell $(MAKE-SILENT) list-img),../../$(x)) ./all-static/img +# rsync -av $(shell $(MAKE-SILENT) list-js) ./all-static/js +# rsync -av $(shell $(MAKE-SILENT) list-css) ./all-static/css +# rsync -av $(shell $(MAKE-SILENT) list-img) ./all-static/img + +clean-static static-clean: force + rm -rf ./all-static + +all-static: clean-static run-static + +#################### manage templates for the plugin area +templates run-templates templates-run: force + mkdir -p all-templates + ln -sf $(foreach x,$(shell $(MAKE-SILENT) list-templates),../$(x)) ./all-templates +# rsync -av $(shell $(MAKE-SILENT) list-templates) ./all-templates + +clean-templates templates-clean: force + rm -rf ./all-templates + +all-templates: clean-templates run-templates + +#################### +list-all list-resources: list-templates list-js list-css list-img + +#################### sync : push current code on a (devel) box running myslice +SSHURL:=root@$(MYSLICEBOX):/ +SSHCOMMAND:=ssh root@$(MYSLICEBOX) + +### rsync options +# the config file should probably not be overridden ?? +# --exclude settings.py +LOCAL_RSYNC_EXCLUDES := --exclude '*.pyc' --exclude config.py --exclude all-static --exclude all-templates --exclude '*.sqlite3' +# 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) + +# 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=/usr/share/myslice +INSTALLED=/root/myslice + +sync: +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)/ +endif + +# xxx likewise until we run this under apache it's probably hard to restart from here +restart: +ifeq (,$(MYSLICEBOX)) + @echo "you need to set MYSLICEBOX, like in e.g." + @echo " $(MAKE) MYSLICEBOX=debian04.pl.sophia.inria.fr "$@"" + @exit 1 +else + @echo "$@" target not yet implemented - for an apache based depl it would read ...; exit; @$(SSHCOMMAND) /etc/init.d/apache2 restart +endif