X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=Makefile;h=2752c9b3e48bf50453f9b14c53598ec174fdb6ea;hb=dcd1b07f1d6a300dd561d67d70bdbec3e6fa801a;hp=f40c1db57fc52373357074bba15df36f63c4b381;hpb=2f570c9fab30a41767b20607bb3e01d102f12fec;p=myslice.git diff --git a/Makefile b/Makefile index f40c1db5..2752c9b3 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,14 @@ +SHELL = /bin/bash + MAKE-SILENT = $(MAKE) --no-print-directory -### first purpose, build and install from the specfile -all: build +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: @@ -11,93 +18,88 @@ bindir := /usr/bin PWD := $(shell pwd) -build: static templates +# +build: static templates force python setup.py build install: python setup.py install \ - --install-purelib=$(DESTDIR)/$(datadir)/myslice \ - --install-scripts=$(DESTDIR)/$(datadir)/myslice \ - --install-data=$(DESTDIR)/$(datadir)/myslice + --install-purelib=$(DESTDIR)/$(datadir)/unfold \ + --install-scripts=$(DESTDIR)/$(datadir)/unfold \ + --install-data=$(DESTDIR)/$(datadir)/unfold +#################### third-party layout is managed as art of collectstatic +static: force + ./manage.py collectstatic --noinput -#################### 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/' +clean-static: + rm -rf static/ -# in general it's right to rely on the contents as reported by git -tags: force - $(MAKE-SILENT) myfiles | xargs etags +redo-static: clean-static static -# however sometimes we have stuff not yet added, so in this case -ftags: force - find . -type f | fgrep -v '/.git/' | xargs etags +#################### +# general stuff +DATE=$(shell date -u +"%a, %d %b %Y %T") -#################### 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 +# 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 -# having templates in a templates/ subdir is fine most of the time except for plugins -list-templates: force - @find plugins -type f -name '*.html' +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) -#################### 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 +debian.package: + debuild -uc -us -b -clean-static static-clean: force - rm -rf ./all-static +debian.clean: + $(MAKE) -f debian/rules clean + rm -rf build/ MANIFEST ../*.tar.gz ../*.dsc ../*.build + find . -name '*.pyc' -delete -all-static: clean-static run-static + +# 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$$'),ls -1 $(tmpl)/*;) + +list-templates: plugins-templates local-templates #################### 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 +templates: force + mkdir -p templates + ln -sf $(foreach x,$(shell $(MAKE-SILENT) list-templates),../$(x)) ./templates clean-templates templates-clean: force - rm -rf ./all-templates + rm -rf ./templates -all-templates: clean-templates run-templates +redo-templates: clean-templates templates #################### -list-all list-resources: list-templates list-js list-css list-img +### 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/|play/' + +# in general it's right to rely on the contents as reported by git +tags: force + $(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 #################### sync : push current code on a (devel) box running myslice SSHURL:=root@$(MYSLICEBOX):/ @@ -106,7 +108,7 @@ 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' +LOCAL_RSYNC_EXCLUDES := --exclude '*.pyc' --exclude config.py --exclude static --exclude templates --exclude '*.sqlite3' --exclude play/ # usual excludes RSYNC_EXCLUDES := --exclude .git --exclude '*~' --exclude TAGS --exclude .DS_Store $(LOCAL_RSYNC_EXCLUDES) # make -n will propagate as rsync -n @@ -114,6 +116,7 @@ RSYNC_COND_DRY_RUN := $(if $(findstring n,$(MAKEFLAGS)),--dry-run,) # putting it together RSYNC := rsync -a -v $(RSYNC_COND_DRY_RUN) $(RSYNC_EXCLUDES) +##### convenience for development only, push code on a specific test box # 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