jw-pkg/make/projects-dir.mk

142 lines
3.3 KiB
Makefile
Raw Normal View History

define CVSDIR_MIME =
QlpoOTFBWSZTWSqR0W8AALh/ks+QASBAAf/yb9JbRH9/32AMACAICEhAAjxQBTCUkmTEZGh6
gAAAAA0AGgHMAmAmRgBGJiYTCYIaYmmBzAJgJkYARiYmEwmCGmJpgFURNE2k1NGlPT1NJmoH
qDRtBPSY0I9TR6n6p8j3nf86/pWteXvN7hPE0JUJ5YTMwTtERHTg8nDZ0+T+jE0KkjIqYGLY
j68pmazwxI0CJEWvZzd3Xhgtn9ms8+kQrl216NSKHhymW4MJOHhtxqk83C6M+7jCRlKVA7Df
cvI+EtcgH0UyCAsieckg3yQUPRw8/p9vb2/xsP1JIXJN0ih1fV6N8RKTFNHLz5E+WlejKqqY
uMqecnZPYRJtmvih5oUUMDStS9ojVghha1bbdCfGv+Q/43GyGhbYV1msRrKmYwK81tDV1MsY
vfKFMq3Iuknk3aVdmV4mtG3PsX2ozRgRqMyMqYItEYzFCJU1vuLIrEUiio5Ga2JgzuWL4riY
Mr1WyjFSxU2M7kXLmO3DGq1LZ3VK9V8/v+7Ajs3ePwceOyrpxxcKeomsJk7hNPaJQ2nw9MQ3
DH9rncZeypb3eb5H0/zuoE7B2i0DQRFcTJBKgPSwTie7gOeQW6t9tQJQKw5ESj6OT/d7c8F2
915wWWwLJccyauIwKMqOvoHe8qZtFKU3uZxFnOWM9XWDYXckU4UJAqkdFvA==
endef
define newline
endef
ifneq ($(PROJECTS),)
export PGIT_CLONE_PROJECTS = $(PROJECTS)
endif
ifneq ($(CLONE_FROM_USER),)
export PGIT_CLONE_FROM_USER = $(CLONE_FROM_USER)
endif
ifneq ($(wildcard projects.txt),)
PROJECTS = $(shell cat projects.txt | sed '/^ *\#/ d')
# TODO: this could be nicer
CVS_PROJECTS = $(PROJECTS)
else
PROJECTS ?= $(shell ls -d */CVS */.git 2>/dev/null | sed 's%/[^/]*%%')
CVS_PROJECTS = $(filter $(dir $(wildcard */CVS)),$(PROJECTS))
endif
ifeq ($(JANWARE_USER),)
WHOAMI = $(shell id -un)
else
WHOAMI = $(JANWARE_USER)
endif
ifeq ($(CVSROOT),)
CVSROOT = :ext:$(WHOAMI)@cvs.jannet.de:/home/jannet/arc/cvs
export CVSROOT
endif
ifeq ($(CVS_RSH),)
CVS_RSH = ssh
export CVS_RSH
endif
PGIT = CLONE_PROJECTS="$(PROJECTS)" CLONE_FROM_USER="$(shell whoami)" /bin/bash $(firstword $(wildcard ./ytools/devutil/scripts/pgit.sh /opt/ytools/bin/pgit.sh))
EXCLUDE_FROM_BUILD = \
dspider-btools \
dspider-shared \
feedfs-dspcd \
casview \
dspfs \
feedfs-qt \
jux3
all: links.done clone.done cvs-update.done
all clean: config.done
python ./ytools/devutil/scripts/build.py -b $(shell pwd) $@ $(filter-out $(EXCLUDE_FROM_BUILD),$(PROJECTS))
clean: done.clean
clean-dirs:
ls */dirs-all.done 2>/dev/null | sed 's%/.*%%' | xargs -r build.py -b $(shell pwd) clean
cpp:
@find $(PROJECTS) -name '*.cpp' | grep /worker/ | grep -ve "old\|tmp\|nomake\|new" | \
while read f; do d=`dirname $$f`; if [ $$d/generate_code.sh ]; then echo $$f; fi ;\
done
update pull: cvs-update
$(PGIT) pull
status:
for p in $(CVS_PROJECTS); do test -f $$d/CVS || echo $$p; done
cvs status $(addsuffix VERSION,$(CVS_PROJECTS))
$(PGIT) status
cvs-update: cvsdir.done
cvs update -dP $(CVS_PROJECTS)
git-push:
$(PGIT) push
git-diff:
$(PGIT) diff
git-pull:
$(PGIT) pull
clone diff commit push:
$(PGIT) $@
git-conv-%:
[ -e $*/.git ] || { \
mv $* old/ ;\
if PROJECTS="$*" make clone; then \
sed -i "/^D\/$*\// d" CVS/Entries ;\
else \
mv old/$* . ;\
fi \
}
check-conv:
for p in `ssh git.jannet.de /opt/ytools/bin/git-srv-admin.sh -u jan -j list-personal-projects`; do \
make git-conv-$$p ;\
done
projects.txt:
echo $(PROJECTS) | sed 's/ /\n/g; s%/%%g' > $@
done.clean:
rm -f *.done
config.done: cvs-update.done
make -C ytools config
touch $@
links.done:
ln -sf btools dspider-btools
ln -sf dspc/src/shared dspider-shared
touch $@
cvsdir.done:
if [ ! -d CVS ]; then \
echo -e '$(subst $(newline),\n,${CVSDIR_MIME})' | tee /tmp/test.mime | mimencode -u | tar -xjf - ;\
fi
if grep -q "^jan@cvs.jannet.de/" CVS/Root; then \
echo $(CVSROOT) > CVS/Root ;\
fi
touch $@
%.done: %
touch $@