diff --git a/fhem/CHANGED b/fhem/CHANGED index 8e8da6427..871746d83 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -31,6 +31,8 @@ - change: updatefhem modifications to support a clean install of fhem and pgm2 installation, see commandref.html (M. Fischer) - change: FHEMWEB support for the new www/pgm2 directroy added (M. Fischer) + - change: Makefile support for for the new www/pgm2 directroy and new targets + backup and uninstall added. More verbose output. (M. Fischer) - 2011-12-31 (5.2) - bugfix: applying smallscreen attributes to firefox/opera diff --git a/fhem/Makefile b/fhem/Makefile index 77f61ecd0..a7f440057 100644 --- a/fhem/Makefile +++ b/fhem/Makefile @@ -13,80 +13,185 @@ RDOCDIR=$(ROOT)$(DOCDIR) RMANDIR=$(ROOT)$(MANDIR) RETCDIR=$(ROOT)$(ETCDIR) +# Destination Directories +DEST=$(RETCDIR) $(RBINDIR) $(RDOCDIR) $(RMODDIR) $(RMANDIR) $(RVARDIR) + VERS=5.2 DATE=2011-12-31 DESTDIR=fhem-$(VERS) all: - @echo Nothing to do for all. - @echo To install, check the Makefile, and then \'make install\' - @echo or \'make install-pgm2\' to install a web frontend too. + @echo "fhem $(VERS) - $(DATE)" + @echo + @echo "Use 'make ', where is" + @echo " install - to install base files for fhem" + @echo " install-pgm2 - to install base files and webgui pgm2 for fhem" + @echo " dist - to create a compressed archivfile of fhem" + @echo " deb - to create a .deb file of fhem" + @echo " fb7390 - to create an imagefile for AVM Fritz!Box 7390" + @echo " fb7270 - to create an imagefile for AVM Fritz!Box 7270" + @echo " backup - to backup current installation of fhem" + @echo " uninstall - to uninstall an existing fhem installation (with backup)" + @echo + @echo "Examples:" + @echo " make install-pgm2" + @echo " make deb" + @echo + @echo "Check Makefile for default installation paths!" + @echo -install:install-pgm2 +prepare: + @echo "Preparing installation for fhem..." + @echo "- create directories" + @-$(foreach DIR,$(DEST), if [ ! -e $(DIR) ]; then mkdir -p $(DIR); fi; ) + @echo "- fix permissions" + @find ./FHEM -type f -print | xargs chmod 644 + @find ./docs -type f -print | xargs chmod 644 + @find ./examples -type f -print | xargs chmod 644 + @echo "- modify examples" + @rm -rf examples_changed + @cp -r examples examples_changed + @perl -pi -e 's,modpath \.,modpath $(MODDIR),' examples_changed/[a-z]* + @perl -pi -e 's,([^h]) /tmp,$$1 $(VARDIR),' examples_changed/[a-z]* + @-if [ -e $(RETCDIR)/fhem.cfg ]; then \ + echo "- move existing configuration to fhem.cfg.`date "+%Y-%m-%d_%H:%M:%S"`"; \ + mv $(RETCDIR)/fhem.cfg $(RETCDIR)/fhem.cfg.`date "+%Y-%m-%d_%H:%M:%S"`; fi; + @echo -install-pgm2:install-base - cp -r webfrontend/pgm2/* $(RMODDIR)/FHEM - cp docs/commandref.html docs/faq.html docs/HOWTO.html $(RMODDIR)/FHEM - cp docs/*.png docs/*.jpg $(RMODDIR)/FHEM - cd examples_changed; for i in *; do cp -r $$i $(RMODDIR)/FHEM/example.$$i; done - cp examples_changed/sample_pgm2 $(RETCDIR)/fhem.cfg +install:prepare install-base install-note + +install-pgm2:prepare install-base pgm2 install-note install-base: - @echo After installation start fhem with - @echo perl $(BINDIR)/fhem.pl $(ETCDIR)/fhem.cfg - @echo - @echo - mkdir -p $(RBINDIR) $(RMODDIR) $(RVARDIR) - mkdir -p $(RDOCDIR) $(RETCDIR) $(RMANDIR) + @echo "Install base files of fhem..." + cp examples_changed/sample_fhem $(RETCDIR)/fhem.cfg cp fhem.pl $(RBINDIR) cp -r FHEM $(RMODDIR) - rm -rf examples_changed - cp -r examples examples_changed - perl -pi -e 's,modpath \.,modpath $(MODDIR),' examples_changed/[a-z]* - perl -pi -e 's,([^h]) /tmp,$$1 $(VARDIR),' examples_changed/[a-z]* - -mv $(RETCDIR)/fhem.cfg $(RETCDIR)/fhem.cfg.`date "+%Y-%m-%d_%H:%M:%S"` - cp examples_changed/sample_fhem $(RETCDIR)/fhem.cfg cp -rp contrib $(RMODDIR) cp -rp docs/* $(RDOCDIR) cp docs/fhem.man $(RMANDIR)/fhem.pl.1 gzip -f -9 $(RMANDIR)/fhem.pl.1 +install-note: + @echo + @echo "Housekeeping..." + @rm -rf examples_changed + @echo "- remove .svn stuff" + find $(RMODDIR) -name .svn -print | xargs rm -rf + find $(RDOCDIR) -name .svn -print | xargs rm -rf + @echo + @echo "Installation of fhem completed!" + @echo + @echo "To start fhem use" + @echo "" + @echo + +backup: + @echo + @echo "Backup current installation of fhem to .backup directory.." + @-if [ ! -e .backup ]; then mkdir .backup; fi; + @tar czf .backup/fhem-backup_`date +%y%m%d%H%M`.tar.gz \ + $(RETCDIR)/fhem* $(RBINDIR)/fhem* $(RDOCDIR) $(RMODDIR) $(RMANDIR)/fhem* $(RVARDIR) + +uninstall:backup + @echo + @echo "Remove fhem installation..." + rm -rf $(RETCDIR)/fhem.cfg + rm -rf $(RBINDIR)/fhem.pl + rm -rf $(RDOCDIR) + rm -rf $(RMODDIR) + rm -rf $(RMANDIR)/fhem.pl.* + rm -rf $(RVARDIR) + @echo done + @echo + +pgm2: + @echo + @echo "Install files of fhem webfrontend pgm2..." + @-if [ ! -e $(RMODDIR)/www/pgm2 ]; then mkdir -p $(RMODDIR)/www/pgm2; fi; + @echo "- fix permissions" + @find ./webfrontend/pgm2/* -type f -print | xargs chmod 644 + cp -r webfrontend/pgm2/*.pm $(RMODDIR)/FHEM + cp -r webfrontend/pgm2/*?[!pm] $(RMODDIR)/www/pgm2 + cp docs/commandref.html docs/faq.html docs/HOWTO.html $(RMODDIR)/www/pgm2 + cp docs/*.png docs/*.jpg $(RMODDIR)/www/pgm2 + cp examples_changed/sample_pgm2 $(RETCDIR)/fhem.cfg + dist: - @echo Version is $(VERS), Date is $(DATE) - mkdir .f - cp -r CHANGED FHEM HISTORY Makefile README.SVN\ + @echo "fhem $(VERS) - $(DATE)" + @echo + @echo "Make distribution..." + @echo "- copy files" + @mkdir .f + @cp -r CHANGED FHEM HISTORY Makefile README.SVN\ TODO contrib docs examples fhem.pl webfrontend .f - find .f -name .svn -print | xargs rm -rf - find .f -name \*.orig -print | xargs rm -f - find .f -name .#\* -print | xargs rm -f - find .f -type f -print | grep -v Makefile |\ + @echo + @echo "Housekeeping..." + @echo "- remove misc developing stuff" + @find .f -name .svn -print | xargs rm -rf + @find .f -name \*.orig -print | xargs rm -f + @find .f -name .#\* -print | xargs rm -f + @find .f -type f -print | grep -v Makefile |\ xargs perl -pi -e 's/=VERS=/$(VERS)/g;s/=DATE=/$(DATE)/g' - mv .f $(DESTDIR) - tar cf - $(DESTDIR) | gzip > $(DESTDIR).tar.gz - mv $(DESTDIR)/docs/*.html . - rm -rf $(DESTDIR) + @mv .f $(DESTDIR) + @echo + @echo "Distribution..." + @echo "- create archiv" + @tar cf - $(DESTDIR) | gzip > $(DESTDIR).tar.gz + @echo "- copy main documentation files" + @mv $(DESTDIR)/docs/*.html . + @echo "- Housekeeping" + @rm -rf $(DESTDIR) + @echo + @echo "Done. Provided files: $(DESTDIR).tar.gz *.html" + @echo + +dist-clean: + @echo + @echo "Housekeeping..." + @echo "- remove distribution files" + @rm -rf *.html $(DESTDIR).tar.gz + @echo done + @echo deb: - echo $(PWD) - rm -rf .f + @echo + @echo "Make debian package..." + @echo $(PWD) + @rm -rf .f + @echo make ROOT=`pwd`/.f install - cp -r contrib/DEBIAN .f - rm -rf .f/$(MODDIR)/contrib/FB7*/var - rm -rf .f/$(MODDIR)/contrib/FB7*/*.image - rm -rf .f/$(MODDIR)/contrib/FB7*/*.zip - find .f -name .svn -print | xargs rm -rf - find .f -name \*.orig -print | xargs rm -f - find .f -name .#\* -print | xargs rm -f - find .f -type f -print | grep -v Makefile |\ + @echo + @echo "- copy files" + @cp -r contrib/DEBIAN .f + @echo "- housekeeping" + @rm -rf .f/$(MODDIR)/contrib/FB7*/var + @rm -rf .f/$(MODDIR)/contrib/FB7*/*.image + @rm -rf .f/$(MODDIR)/contrib/FB7*/*.zip + @find .f -name .svn -print | xargs rm -rf + @find .f -name \*.orig -print | xargs rm -f + @find .f -name .#\* -print | xargs rm -f + @echo "- modify fhem version and date" + @find .f -type f -print | grep -v Makefile |\ xargs perl -pi -e 's/=VERS=/$(VERS)/g;s/=DATE=/$(DATE)/g' - find .f -type f | xargs chmod 644 - find .f -type d | xargs chmod 755 - chmod 755 `cat contrib/executables` - gzip -9 .f/$(DOCDIR)/changelog - chown -R root:root .f - mv .f $(DESTDIR) - dpkg-deb --build $(DESTDIR) - rm -rf $(DESTDIR) + @echo "- fix permissions" + @find .f -type f | xargs chmod 644 + @find .f -type d | xargs chmod 755 + @chmod 755 `cat contrib/executables` + @gzip -9 .f/$(DOCDIR)/changelog + @echo "- fix ownership" + @chown -R root:root .f + @echo "- housekeeping" + @mv .f $(DESTDIR) + @echo + @echo "Build package..." + @dpkg-deb --build $(DESTDIR) + @echo + @echo "Housekeeping..." + @rm -rf $(DESTDIR) + @echo + @echo "Done. Provided file: $(DESTDIR).deb" + @echo fb7390: cd contrib/FB7390 && ./makeimage $(DESTDIR)