$(TOPDIR), make, scripts: Merged changes from V_1_2_3_33_YAPPLICATION_INIFILE_CTOR

Signed-off-by: Jan Lindemann <jan@jannet.de>
This commit is contained in:
Jan Lindemann 2012-09-02 16:06:47 +00:00 committed by Jan Lindemann
commit 78bd6215b4
12 changed files with 346 additions and 28 deletions

View file

@ -414,3 +414,7 @@ Version 1.2.3
-------------
o changed interfaces of YVariant and YStringTree
o joined V_1_2_3_20_CASAS_NOVAS
Version 1.2.4
-------------
o merged changes from V_1_2_3_33_YAPPLICATION_INIFILE_CTOR

View file

@ -1 +1 @@
1.2.3-34-dev
1.2.4-0-dev

View file

@ -26,7 +26,7 @@ else
endif
attach:
cgdb $(EXE_PATH) -p $(PID)
gdb $(EXE_PATH) -p $(PID)
attach-ddd:
ddd $(EXE_PATH) -p $(PID)

View file

@ -769,6 +769,7 @@ ifeq ($(USE_COMPILER_OPTIMIZATION_OPTS),true)
BUILD_CPPFLAGS += -funroll-loops -O2
else
NO_OPT_FLAGS = \
-g -fno-inline -fno-omit-frame-pointer -fno-builtin -fno-optimize-sibling-calls \
-fno-inline-functions-called-once \
-fno-tree-loop-optimize \
-fno-early-inlining
@ -929,18 +930,18 @@ PREREQ += DSPCD
endif
ifneq ($(filter dspcd-ec,$(PREREQ_BUILD)),)
DSPCD_DIR = $(firstword $(wildcard $(CVS_PROJ_DIR)/dspc/src/dspcd /opt/$(FLAVOUR_PATH_PREFIX)dspider/dspcd-ec))
DSPCD_EXE_PREFIX = $(firstword $(wildcard $(CVS_PROJ_DIR)/dspc/src/dspcd /opt/$(FLAVOUR_PATH_PREFIX)dspider))
DSPCD_EC_DIR = $(firstword $(wildcard $(CVS_PROJ_DIR)/dspc/src/dspcd-ec $(CVS_PROJ_DIR)/dspc/src/dspcd /opt/$(FLAVOUR_PATH_PREFIX)dspider/dspcd-ec))
DSPCD_EC_EXE_PREFIX = $(firstword $(wildcard $(CVS_PROJ_DIR)/dspc/src/dspcd-ec $(CVS_PROJ_DIR)/dspc/src/dspcd /opt/$(FLAVOUR_PATH_PREFIX)dspider))
# include $(DSPCD_DIR)/make/public.mk
DSPIDER_DSPCD_VERSION = $(call version,$(DSPCD_DIR))
DSPIDER_DSPCD_EC_VERSION = $(call version,$(DSPCD_EC_DIR))
RPM_REQUIRES_RUN += $(FLAVOUR_PREFIX)dspider-dspcd-ec-run = $(DSPIDER_DSPCD_VERSION)
RPM_REQUIRES_DEVEL += $(FLAVOUR_PREFIX)dspider-dspcd-ec-devel = $(DSPIDER_DSPCD_VERSION)
PREREQ_BUILD += ytools
PREREQ_BUILD += dspider-shared-ec
PREREQ_BUILD += userver
INCLUDE += -I$(DSPCD_DIR)/include
LIBFLAGS += -L$(DSPCD_EXE_PREFIX)/lib -ldspcd-ec
PREREQ += DSPCD
PREREQ_BUILD += userver xchange
INCLUDE += -I$(DSPCD_EC_DIR)/include
LIBFLAGS += -L$(DSPCD_EC_EXE_PREFIX)/lib -ldspcd-ec
PREREQ += DSPCD_EC
endif
ifneq ($(filter dsprout,$(PREREQ_BUILD)),)
@ -973,17 +974,17 @@ PREREQ += DSPIDER_SHARED
endif
ifneq ($(filter dspider-shared-ec,$(PREREQ_BUILD)),)
DSPIDER_SHARED_DIR = $(firstword $(wildcard $(CVS_PROJ_DIR)/dspc/src/shared /opt/$(FLAVOUR_PATH_PREFIX)dspider/shared-ec))
DSPIDER_SHARED_EXE_PREFIX = $(firstword $(wildcard $(CVS_PROJ_DIR)/dspc/src/shared /opt/$(FLAVOUR_PATH_PREFIX)dspider))
include $(DSPIDER_SHARED_DIR)/make/public.mk
DSPIDER_SHARED_VERSION = $(call version,$(DSPIDER_SHARED_DIR))
DSPIDER_SHARED_EC_DIR = $(firstword $(wildcard $(CVS_PROJ_DIR)/dspc/src/shared-ec $(CVS_PROJ_DIR)/dspc/src/shared /opt/$(FLAVOUR_PATH_PREFIX)dspider/shared-ec))
DSPIDER_SHARED_EC_EXE_PREFIX = $(firstword $(wildcard $(CVS_PROJ_DIR)/dspc/src/shared-ec $(CVS_PROJ_DIR)/dspc/src/shared /opt/$(FLAVOUR_PATH_PREFIX)dspider))
include $(DSPIDER_SHARED_EC_DIR)/make/public.mk
DSPIDER_SHARED_EC_VERSION = $(call version,$(DSPIDER_SHARED_EC_DIR))
RPM_REQUIRES_RUN += $(FLAVOUR_PREFIX)dspider-shared-ec-run = $(DSPIDER_SHARED_VERSION)
RPM_REQUIRES_DEVEL += $(FLAVOUR_PREFIX)dspider-shared-ec-devel = $(DSPIDER_SHARED_VERSION)
PREREQ_BUILD += ytools
INCLUDE += -I$(DSPIDER_SHARED_DIR)/include
LIBFLAGS += -L$(DSPIDER_SHARED_EXE_PREFIX)/lib -ldspider-shared-ec
EXE_SEARCH_PATH += $(DSPIDER_SHARED_DIR)/bin
PREREQ += DSPIDER_SHARED
INCLUDE += -I$(DSPIDER_SHARED_EC_DIR)/include
LIBFLAGS += -L$(DSPIDER_SHARED_EC_EXE_PREFIX)/lib -ldspider-shared-ec
EXE_SEARCH_PATH += $(DSPIDER_SHARED_EC_DIR)/bin
PREREQ += DSPIDER_EC_SHARED
endif
ifneq ($(filter feedfs-qt,$(PREREQ_BUILD)),)
@ -1024,13 +1025,24 @@ RPM_REQUIRES_DEVEL += $(FLAVOUR_PREFIX)feedfs-gui-devel = $(FEEDFS_GUI_VE
PREREQ_BUILD += feedfs-utils
PREREQ_BUILD += feedfs
PREREQ_BUILD += ytools
PREREQ_BUILD += feedfs-qt
INCLUDE += -I$(FEEDFS_GUI_DIR)/include
LIBFLAGS += -L$(FEEDFS_GUI_DIR)/lib -lfeedfs-gui
EXE_SEARCH_PATH += $(FEEDFS_GUI_DIR)/bin
PREREQ += FEEDFS_GUI
endif
ifneq ($(filter feedfs-bz,$(PREREQ_BUILD)),)
FEEDFS_BZ_DIR = $(firstword $(wildcard $(CVS_PROJ_DIR)/feedfs-bz /opt/$(FLAVOUR_PATH_PREFIX)feedfs-bz))
FEEDFS_BZ_VERSION = $(call version,$(FEEDFS_BZ_DIR))
RPM_REQUIRES_RUN += $(FLAVOUR_PREFIX)feedfs-bz-run = $(FEEDFS_BZ_VERSION)
RPM_REQUIRES_DEVEL += $(FLAVOUR_PREFIX)feedfs-bz-devel = $(FEEDFS_BZ_VERSION)
PREREQ_BUILD += feedfs-objects
INCLUDE += -I$(FEEDFS_BZ_DIR)/include
LIBFLAGS += -L$(FEEDFS_BZ_DIR)/lib -lfeedfs-bz
EXE_SEARCH_PATH += $(FEEDFS_BZ_DIR)/bin
PREREQ += FEEDFS_BZ
endif
ifneq ($(filter feedfsd,$(PREREQ_BUILD)),)
FEEDFSD_DIR = $(firstword $(wildcard $(CVS_PROJ_DIR)/feedfsd /opt/$(FLAVOUR_PATH_PREFIX)feedfsd))
FEEDFSD_VERSION = $(call version,$(FEEDFSD_DIR))
@ -1087,6 +1099,20 @@ EXE_SEARCH_PATH += $(FEEDFS_NET_DIR)/bin
PREREQ += FEEDFS_NET
endif
ifneq ($(filter feedfs-ini,$(PREREQ_BUILD)),)
FEEDFS_INI_DIR = $(firstword $(wildcard $(CVS_PROJ_DIR)/feedfs-ini /opt/$(FLAVOUR_PATH_PREFIX)feedfs-ini))
FEEDFS_INI_VERSION = $(call version,$(FEEDFS_INI_DIR))
RPM_REQUIRES_RUN += $(FLAVOUR_PREFIX)feedfs-ini-run = $(FEEDFS_INI_VERSION)
RPM_REQUIRES_DEVEL += $(FLAVOUR_PREFIX)feedfs-ini-devel = $(FEEDFS_INI_VERSION)
PREREQ_BUILD += feedfs-objects
PREREQ_BUILD += feedfs-utils
PREREQ_BUILD += ytools
INCLUDE += -I$(FEEDFS_INI_DIR)/include
LIBFLAGS += -L$(FEEDFS_INI_DIR)/lib -lfeedfs-ini
EXE_SEARCH_PATH += $(FEEDFS_INI_DIR)/bin
PREREQ += FEEDFS_INI
endif
ifneq ($(filter feedfs-local,$(PREREQ_BUILD)),)
FEEDFS_LOCAL_DIR = $(firstword $(wildcard $(CVS_PROJ_DIR)/feedfs-local /opt/$(FLAVOUR_PATH_PREFIX)feedfs-local))
FEEDFS_LOCAL_VERSION = $(call version,$(FEEDFS_LOCAL_DIR))
@ -1253,6 +1279,44 @@ EXE_SEARCH_PATH += $(ALSART_DIR)/bin
PREREQ += ALSART
endif
ifneq ($(filter jackmix,$(PREREQ_BUILD)),)
JACKMIX_DIR = $(firstword $(wildcard $(CVS_PROJ_DIR)/dspc/src/dspcd-plugins/jackmix /opt/$(FLAVOUR_PATH_PREFIX)dspider/jackmix))
JACKMIX_VERSION = $(call version,$(JACKMIX_DIR))
RPM_REQUIRES_RUN += $(FLAVOUR_PREFIX)dspider-jackmix-run = $(JACKMIX_VERSION)
RPM_REQUIRES_DEVEL += $(FLAVOUR_PREFIX)dspider-jackmix-devel = $(JACKMIX_VERSION)
PREREQ_BUILD += ytools btools
INCLUDE += -I$(JACKMIX_DIR)/include
LIBFLAGS += -L$(JACKMIX_DIR)/lib -ldspider-jackmix
LD_LIB_PATH += $(JACKMIX_DIR)/dsplib
EXE_SEARCH_PATH += $(JACKMIX_DIR)/bin
PREREQ += JACKMIX
endif
ifneq ($(filter scmjm,$(PREREQ_BUILD)),)
SCMJM_DIR = $(firstword $(wildcard $(CVS_PROJ_DIR)/dspc/src/dspcd-plugins/scmjm /opt/$(FLAVOUR_PATH_PREFIX)dspider/scmjm))
SCMJM_VERSION = $(call version,$(SCMJM_DIR))
RPM_REQUIRES_RUN += $(FLAVOUR_PREFIX)dspider-scmjm-run = $(SCMJM_VERSION)
RPM_REQUIRES_DEVEL += $(FLAVOUR_PREFIX)dspider-scmjm-devel = $(SCMJM_VERSION)
PREREQ_BUILD += ytools
INCLUDE += -I$(SCMJM_DIR)/include
LIBFLAGS += -L$(SCMJM_DIR)/lib -ldspider-scmjm
LD_LIB_PATH += $(SCMJM_DIR)/dsplib
EXE_SEARCH_PATH += $(SCMJM_DIR)/bin
PREREQ += SCMJM
endif
ifneq ($(filter scm,$(PREREQ_BUILD)),)
SCM_DIR = $(firstword $(wildcard $(CVS_PROJ_DIR)/dspc/src/dspcd-plugins/scm /opt/$(FLAVOUR_PATH_PREFIX)dspider/scm))
SCM_VERSION = $(call version,$(SCM_DIR))
RPM_REQUIRES_RUN += $(FLAVOUR_PREFIX)dspider-scm-run = $(SCM_VERSION)
RPM_REQUIRES_DEVEL += $(FLAVOUR_PREFIX)dspider-scm-devel = $(SCM_VERSION)
PREREQ_BUILD += ytools
INCLUDE += -I$(SCM_DIR)/include
LIBFLAGS += -L$(SCM_DIR)/lib -ldspider-scm
EXE_SEARCH_PATH += $(SCM_DIR)/bin
PREREQ += SCM
endif
ifneq ($(filter dspfs,$(PREREQ_BUILD)),)
DSPFS_DIR = $(firstword $(wildcard $(CVS_PROJ_DIR)/dspfs /opt/$(FLAVOUR_PATH_PREFIX)dspfs))
DSPFS_VERSION = $(call version,$(DSPFS_DIR))
@ -1369,8 +1433,12 @@ LIBFLAGS += -L$(SCOPE_CASMIX_DIR)/lib -lscope-casmix
EXE_SEARCH_PATH += $(SCOPE_CASMIX_DIR)/bin
endif
PREREQ_INSTALL ?= $(PREREQ_BUILD)
PREREQ_RUN ?= $(PREREQ_INSTALL)
#PREREQ_INSTALL ?= $(PREREQ_BUILD)
#PREREQ_RUN ?= $(PREREQ_INSTALL)
# TODO: remove this
PREREQ_BUILD += $(PREREQ_RUN)
PREREQ_BUILD += $(PREREQ_INSTALL)
ifeq ($(USE_SNDFILE),true)
LIBFLAGS += -lsndfile

View file

@ -26,7 +26,9 @@ else
SUBDIR_TARGETS = $(filter all install clean distclean,$(MAKECMDGOALS))
endif
ifneq ($(DONT_CHECK_PREREQ_DONE),true)
PREREQ_DIRS_DONE = $(addsuffix /dirs-all.done,$(filter-out $(TOPDIR) /opt/%,$(foreach p,$(PREREQ),$($(p)_DIR))))
endif
all: dirs-all.done
install: dirs-install.done
@ -40,20 +42,24 @@ distclean: dirs.clean dirs.distclean
# explicit duplication of pattern-rule is needed, otherwise .PHONY: dirs-all.done won't match
dirs-all.done:
set -e; for d in $(SUBDIRS) ; do make -wC $$d $*; done
ifneq ($(DONT_CHECK_PREREQ_DONE),true)
touch $@
endif
dirs-%.done:
set -e; for d in $(SUBDIRS) ; do make -wC $$d $*; done
ifneq ($(DONT_CHECK_PREREQ_DONE),true)
touch $@
endif
ifeq ($(DEVELOPMENT),true)
dirs-all.done: $(wildcard $(BUILD_HDRDIR))
ifeq ($(MAKECMDGOALS),all)
ifeq ($(SUBDIR_TARGETS),all)
dirs-all.done: $(PREREQ_DIRS_DONE)
endif
ifeq ($(MAKECMDGOALS),install)
ifeq ($(SUBDIR_TARGETS),install)
dirs-all.done: $(PREREQ_DIRS_DONE)
endif

View file

@ -165,6 +165,9 @@ echo-prereq:
echo-contrib:
echo-echo:
sed '/echo-[a-z]\+:$$/ !d; s/:$$//' $(MODDIR)/make/rules.mk
trace-marks:
for f in $(ALL_CPP); do \
$(SED) 's/^{$$/{_/' $$f > $$f.rep ;\
@ -214,7 +217,7 @@ $(SO_PREFIX)%.so: %.o
endif
$(VERSION_SCRIPT):
$(MOD_SCRIPT_DIR)/make_version_script.sh $(BINARY_VERSION) > $@
sh $(MOD_SCRIPT_DIR)/make_version_script.sh $(BINARY_VERSION) > $@
ifneq ($(TARGET),mingw)
$(LIB_SO): $(VERSION_SCRIPT) $(LIB_A) $(TOPDIR)/dir_build_LIB.done

View file

@ -91,6 +91,22 @@ callgrind:
rm -f $(CORE)
valgrind --tool=callgrind $(VALGRIND_OPTS) $(EXE_PATH) $(EXE_ARGS)
callgrind-noinst:
rm -f $(CORE)
valgrind --tool=callgrind $(VALGRIND_OPTS) --instr-atstart=no $(EXE_PATH) $(EXE_ARGS)
callgrind-startinst:
ps aux | grep callgrind | grep -v "grep\|make\|callgrind_control" | awk '{print $$2}' | xargs callgrind_control --instr=on
callgrind-stopinst:
ps aux | grep callgrind | grep -v "grep\|make\|callgrind_control" | awk '{print $$2}' | xargs callgrind_control --instr=off
callgrind-dump:
ps aux | grep callgrind | grep -v "grep\|make\|callgrind_control" | awk '{print $$2}' | xargs callgrind_control --dump
snap:
killall -SIGUSR1 $(notdir $(EXE_PATH))
endif
stop:

View file

@ -3,24 +3,31 @@
# contact@jannet.de
# $Id$
all: all.link
include $(MODDIR)/make/rules.mk
ifneq ($(strip $(SRC_ALL_CPP)),)
# mandatory targets
all: all.link
install: $(ALL)
# convenience targets
link: all.link
clean-link: clean.link
# rules
all.link: $(PROJECT)
$(PROJECT):
ln -s . $@
ifeq ($(SCOPE_PREFIX),)
all.link: $(BUILD_HDRDIR)/$(PROJECT)
$(BUILD_HDRDIR)/$(PROJECT):
cd $(BUILD_HDRDIR) && ln -s . $(PROJECT)
endif
$(LIB_SO): $(OBJ)
all.done: $(PREREQ_DONE) $(BUILD_HDR) $(BUILD_EXE_SH) $(MEMBERS) $(LIB_A) $(LIB_SO)

View file

@ -83,7 +83,7 @@ do-install-links:
}; \
done; \
git-init:
git-init-from-cvs:
@if [ -e .git ]; then \
echo $(TOPDIR)/.git exists, aborting ;\
exit 1 ;\
@ -92,6 +92,16 @@ git-init:
list-cvs-files.sh -f | xargs git add
git commit -m "initial checkin of $(RPM_VERSION)"
WHOAMI = $(shell whoami)
REMOTE_GIT_DIR = /srv/git/$(WHOAMI)/proj/$(PROJECT)
git-clone-to-remote:
ssh git.jannet.de "/opt/ytools/bin/git-srv-admin.sh create-personal-project $(PROJECT)"
git remote add origin ssh://$(WHOAMI)@git.jannet.de$(REMOTE_GIT_DIR)
git config --global user.name $(FULL_NAME)
git config --global user.email $(WHOAMI)@jannet.de
git push --all origin
projects-%:
python $(MOD_SCRIPT_DIR)/build.py $* $(PROJECT)

View file

@ -16,8 +16,7 @@ dep_tree = {}
glob_order = []
proj_base=pwd.getpwuid(os.getuid()).pw_dir + "/local/src/cvs.stable/proj"
search_path=[".", "dspc/src", "dspc/src/dspcd-plugins", "dspc/src/io" ]
#glob_prereq_type="BUILD"
glob_prereq_type="RUN"
glob_prereq_type="BUILD"
def find_proj_path(name):
name=name.replace("dspider-", "")
@ -31,6 +30,9 @@ def read_deps(cur, prereq_type):
path = find_proj_path(cur)
os.chdir(path)
p = subprocess.Popen("LD_LIBRARY_PATH= make echo-prereq | sed '/PREREQ_" + prereq_type + " *=/ !d; s/.*=//'", shell=True, stdout=subprocess.PIPE)
p.wait()
if p.returncode: # FIXME: doesn't work, because sed kills make's return code
raise Exception("failed to get " + prereq_type + " prerequisites from " + path)
r = Set()
for d in p.stdout.read().split():
r.add(d)

102
scripts/git-srv-admin.sh Normal file
View file

@ -0,0 +1,102 @@
#!/bin/sh
myname=`basename $0`
usage()
{
cat << EOT | sed 's/^ |//'
|
| $myname cmd [cmd-arguments] ...
|
| commands are:
|
| create-personal-project name
| list-personal-projects
|
EOT
[ "$1" ] && exit $1
}
log()
{
echo $@
}
err()
{
echo $@ >&2
}
fatal()
{
err $@
exit 1
}
md()
{
local dir=$1
local mode=$2
local owner=$3
local group=$4
[ -d $dir ] || {
log "creating $dir as $owner.$group with mode $mode"
/usr/bin/install -m $mode -o $owner -g $group -d $dir || {
fatal "failed to create directory $dir"
}
}
}
# ----------------- commands
create_personal_project()
{
[ -e $dir ] && fatal "$dir already exists"
if [ "$UID" = 0 ]; then
md /srv/git 750 root jannet
md /srv/git/$id 750 root jannet
md /srv/git/$id/proj 750 root jannet
md /srv/git/$id/proj/$p 770 root $id
exit 0
fi
/usr/bin/sudo $0 create-personal-project $p || fatal "failed to set root uid"
cd $dir || fatal "failed to change to $dir"
git init --bare || fatal "git init failed"
}
list_personal_projects()
{
cd $pdir
ls */HEAD | sed 's%/HEAD%%' 2>/dev/null
}
# ----------------- here we go
cmd=$1
shift
id=`whoami`
[ "$SUDO_UID" ] && {
id=`/opt/ytools/bin/getpwuid $SUDO_UID | sed '/^name *=/ !d; s/^name *= *//'`
[ "$id" ] || fatal "failed to find uid $SUDO_UID in user database"
}
p=$1
pdir=/srv/git/$id/proj
dir=$pdir/$p
case $cmd in
create-personal-project)
create_personal_project "$@"
exit 1
;;
list-personal-projects)
list_personal_projects "$@"
;;
*)
usage 1
;;
esac

100
scripts/pgit.sh Normal file
View file

@ -0,0 +1,100 @@
#!/bin/sh
log()
{
echo $@
}
err()
{
log $@
}
fatal()
{
err $@
exit 1
}
marker()
{
log "# ============= $@"
}
config()
{
pdir=`pwd`
while [ `basename $pdir` != proj ]; do
[ "$pdir" = / ] && fatal "didn't find \"proj\" in directory components"
pdir=`dirname $pdir`
done
pdirs=`(cd $pdir; ls -d */.git | sed 's%/.git%%')`
}
# ------------- commands
clone()
{(
local p
config
cd $pdir
local id=`whoami`
local projects=`ssh git.jannet.de /opt/ytools/bin/git-srv-admin.sh list-personal-projects`
for p in $projects; do
[ -d $p ] && {
marker "skipping existing $p"
continue
}
marker "cloning $p"
git clone ssh://$id@git.jannet.de/srv/git/$id/proj/$p
done
)}
pull()
{(
local d
config
cd $pdir
for d in $pdirs; do
marker "$d"
($d; git pull origin master)
done
)}
diff()
{(
local d
config
cd $pdir
for d in $pdirs; do
marker $d
(cd $d; git diff --src-prefix=a/$d/ --dst-prefix=b/$d/ "$@")
done
)}
commit()
{(
local d
config
cd $pdir
for d in $pdirs; do
marker $d
(cd $d; git commit "$@")
done
)}
push()
{(
local d
config
cd $pdir
for d in $pdirs; do
marker $d
(cd $d; git push origin master)
done
)}
cmd=$1
shift
$cmd "$@"