+synclib: synccheck
+ +$(RSYNC) --relative ./sfa/ --exclude migrations $(SSHURL)/usr/lib\*/python2.\*/site-packages/
+syncbin: synccheck
+ +$(RSYNC) $(BINS) $(SSHURL)/usr/bin/
+syncinit: synccheck
+ +$(RSYNC) ./init.d/sfa $(SSHURL)/etc/init.d/
+syncconfig:
+ +$(RSYNC) ./config/default_config.xml $(SSHURL)/etc/sfa/
+synctest: synccheck
+ +$(RSYNC) ./tests/ $(SSHURL)/root/tests-sfa
+syncrestart: synccheck
+ $(SSHCOMMAND) exec service sfa restart
+
+syncmig:
+ +$(RSYNC) ./sfa/storage/migrations $(SSHURL)/usr/share/sfa/
+
+
+# full-fledged
+sync: synclib syncbin syncinit syncconfig syncrestart
+# 99% of the time this is enough
+syncfast: synclib syncrestart
+
+.PHONY: synccheck synclib syncbin syncconfig synctest syncrestart sync syncfast
+
+syncrica: synccheck
+ +$(RSYNC) --relative ./sfa/federica ./sfa/generic/fd.py ./sfa/rspecs/versions/federica.py $(SSHURL)/usr/lib\*/python2.\*/site-packages/
+ $(SSHCOMMAND) exec service sfa restart
+
+.PHONY: syncrica
+
+##########
+CLIENTLIBFILES= \
+sfa/examples/miniclient.py \
+sfa/__init__.py \
+sfa/client/{sfaserverproxy,sfaclientlib,__init__}.py \
+sfa/trust/{certificate,__init__}.py \
+sfa/util/{sfalogging,faults,genicode,enumeration,__init__}.py
+
+clientlibsync:
+ @[ -d "$(CLIENTLIBTARGET)" ] || { echo "You need to set the make variable CLIENTLIBTARGET"; exit 1; }
+ rsync -av --relative $(CLIENTLIBFILES) $(CLIENTLIBTARGET)