Everywhere: Merge V_1_1_29_40_POST_ACCEPTANCE

This commit is contained in:
Jan Lindemann 2011-02-20 14:15:22 +00:00 committed by Jan Lindemann
commit 2939f8e3a8
29 changed files with 743 additions and 125 deletions

View file

@ -9,7 +9,11 @@ SUBDIRS = deps.d defs.d
include $(TOPDIR)/make/proj.mk
include $(MODDIR)/make/make.mk
ifneq ($(MAKECMDGOALS),install-links)
ifneq ($(MAKECMDGOALS),do-install-links)
include $(MODDIR)/make/dirs.mk
endif
endif
ifeq ($(TARGET),mingw)
install: $(INSTALL_MAKEDIR)/winres.rc.tmpl

23
make/crontab.mk Normal file
View file

@ -0,0 +1,23 @@
include $(MODDIR)/make/defs.mk
include $(MODDIR)/make/rules.mk
all:
clean: clean.conf
install: install_CFG install_SYSCFG install_LOGROT $(CONF_D)
clean.conf:
rm -rf *.h *~ .*.swp *.done
ifneq ($(CONFIG_SUBDIR),)
$(INSTALLED_CFG): $(INSTALL_CFGDIR)
$(INSTALL_CFGDIR):
install -d -m $(CFGDIRMODE) -d $(CFGDIROWNER) -g $(CFGDIRGROUP) $@
endif
ifneq ($(CONF_D),)
INSTALLED_CONF_D = $(addprefix $(INSTALL_CFGDIR)/,$(CONF_D))
$(INSTALL_CFGDIR)/$(CONF_D):
install -d -m $(CFGDIRMODE) -d $(CFGDIROWNER) -g $(CFGDIRGROUP) $@
install: $(INSTALLED_CONF_D)
endif

14
make/debugger.mk Normal file
View file

@ -0,0 +1,14 @@
CORE_DUMPER = $(shell echo -e "quit" | gdb --core=$(CORE) 2>&1 | \
sed '/Core was generated/ !d; s/Core was generated by `//; s/ .*//' | xargs -r which)
ifeq ($(CORE_DUMPER),)
CORE_DUMPER = $(EXE)
endif
all:
kdbg gdb ddd:
$@ $(CORE_DUMPER) $(firstword $(CORE))
attach:
kdbg ./$(EXE) -p `ps aux | sed "/$(EXE)/ !d; /sed/ d" | awk '{print $$2}'`

View file

@ -10,7 +10,7 @@ VAR_PREFIX ?= $(PREFIX)/var
DOC_PREFIX ?= $(PREFIX)/doc/$(PROJECT)
EXE_PREFIX ?= $(PREFIX)
INIT_PREFIX ?= $(EXE_PREFIX)
CGI_DIR ?= $(PREFIX)/cgi-bin
HTDOCS_PREFIX ?= $(ENV_PREFIX)$(HOME)/srv/www/htdocs
SYSCFG_DIR ?= $(PREFIX)/sysconfig
CONFIG_DIR ?= $(ENV_PREFIX)$(HOME)/etc/$(FLAVOUR_PATH_PREFIX)$(PROJECT)
LD_CONF_DIR ?= $(ENV_PREFIX)$(HOME)/etc/ld.so.conf.d
@ -19,6 +19,7 @@ RSYSLOG_DIR ?= $(ENV_PREFIX)$(HOME)/etc/rsyslog.d
IMG_PREFIX ?= $(PREFIX)
LOG_PREFIX ?= $(PREFIX)/log
JAVA_PREFIX ?= $(PREFIX)
HDR_SCOPE_PREFIX ?=
IMAGEDIR ?= $(MODDIR)/../../images
CTRLDIR ?= $(ENV_PREFIX)$(HOME)/bin$(FLAVOUR_PATH_SUFFIX)
@ -30,6 +31,8 @@ DOWNLOADDIRS ?= root@cvs.jannet.de:/usr/local/httpd/htdocs/www.jannet.de_443
WORKING_DIR ?= $(ENV_PREFIX)$(HOME)
WORKING_DIR ?= $(VAR_PREFIX)/lock
JAVADIR ?= $(JAVA_PREFIX)/share/java
PROJECT_HTMLDIR ?= $(HTDOCS_PREFIX)/proj/$(PROJECT)
CGI_DIR ?= $(HTDOCS_PREFIX)/cgi-bin
# -- misc
LOGID ?= $(shell id -un)-$(PROJECT)
@ -86,6 +89,12 @@ CGIMODE ?= $(EXEMODE)
CGIDIROWNER ?= $(EXEDIROWNER)
CGIDIRGROUP ?= $(EXEDIRGROUP)
CGIDIRMODE ?= $(EXEDIRMODE)
HTMLOWNER ?= $(shell id -un)
HTMLGROUP ?= $(shell id -gn)
HTMLMODE ?= 644
HTMLDIROWNER ?= $(shell id -un)
HTMLDIRGROUP ?= $(shell id -gn)
HTMLDIRMODE ?= 755
LIBOWNER ?= $(EXEOWNER)
LIBGROUP ?= $(EXEGROUP)
LIBMODE ?= $(EXEMODE)

View file

@ -10,7 +10,7 @@ VAR_PREFIX ?= $(ENV_PREFIX)/var/$(FLAVOUR_PATH_PREFIX)opt
DOC_PREFIX ?= $(ENV_PREFIX)/usr/share/doc/packages/$(FLAVOUR_PREFIX)$(PROJECT)
EXE_PREFIX ?= $(PREFIX)
INIT_PREFIX ?= $(ENV_PREFIX)/etc$(FLAVOUR_PATH_SUFFIX)
CGI_DIR ?= $(ENV_PREFIX)/home/wwwrun/local/cgi-bin
HTDOCS_PREFIX ?= $(ENV_PREFIX)/srv/www/htdocs
SYSCFG_DIR ?= $(ENV_PREFIX)/etc/$(FLAVOUR_PATH_PREFIX)sysconfig
CONFIG_DIR ?= $(ENV_PREFIX)/etc/opt/$(FLAVOUR_PATH_PREFIX)$(PROJECT)
LD_CONF_DIR ?= $(ENV_PREFIX)/etc/ld.so.conf.d
@ -19,6 +19,7 @@ RSYSLOG_DIR ?= $(ENV_PREFIX)/etc/rsyslog.d
IMG_PREFIX ?= $(PREFIX)
LOG_PREFIX ?= $(ENV_PREFIX)/var/log
JAVA_PREFIX ?= $(PREFIX)
HDR_SCOPE_PREFIX ?=
IMAGEDIR ?= $(FLAVOUR_PATH_PREFIX)$(PREFIX)/images
CTRLDIR ?= $(ENV_PREFIX)/etc/$(FLAVOUR_PATH_PREFIX)init.d
@ -30,6 +31,8 @@ DOWNLOADDIRS ?= root@cvs.jannet.de:/usr/local/httpd/htdocs/www.jannet.de_443
WORKING_DIR ?= $(VAR_PREFIX)/coredumps
WORKING_DIR ?= $(VAR_PREFIX)/lock
JAVADIR ?= $(JAVA_PREFIX)/share/java
PROJECT_HTMLDIR ?= $(HTDOCS_PREFIX)/proj/$(PROJECT)
CGI_DIR ?= $(HTDOCS_PREFIX)/cgi-bin
# -- misc
LOGID ?= $(PROJECT)
@ -87,6 +90,12 @@ CGIMODE ?= $(EXEMODE)
CGIDIROWNER ?= $(EXEDIROWNER)
CGIDIRGROUP ?= $(EXEDIRGROUP)
CGIDIRMODE ?= $(EXEDIRMODE)
HTMLOWNER ?= root
HTMLGROUP ?= root
HTMLMODE ?= 644
HTMLDIROWNER ?= root
HTMLDIRGROUP ?= root
HTMLDIRMODE ?= 755
LIBOWNER ?= $(EXEOWNER)
LIBGROUP ?= $(EXEGROUP)
LIBMODE ?= $(EXEMODE)

View file

@ -14,3 +14,5 @@ install-dir.done:
done.clean:
rm -f *.done
install-links:

View file

@ -30,6 +30,7 @@ FLAVOUR_PATH_PREFIX ?= win32/
FLAVOUR_PATH_SUFFIX ?= /win32
endif
PROJECT_DESCR_FILE ?= $(wildcard $(TOPDIR)/doc/share/project.txt)
PROJECT ?= $(patsubst $(FLAVOUR_PREFIX)%,%,$(notdir $(shell cd $(TOPDIR); pwd | sed 's/.*\///; s/-[0-9].*//')))
PROJECT_SHORT_NAME ?= $(PROJECT)
PROJECT_CAPNAME = $(shell echo $(PROJECT) | tr [a-z] [A-Z] | sed 's/-/_/g')
@ -177,7 +178,10 @@ SRC_HEADERED += $(shell if [ "$(LOCAL_SRC)" ]; then grep -ic "it servic
SRC_UNHEADERED += $(filter-out $(SRC_HEADERED),$(LOCAL_SRC))
LOCAL_C += $(wildcard *.c)
LOCAL_CPP += $(wildcard *.cc *.cpp *.C)
LOCAL_H += $(wildcard *.h *.H)
SFILES += $(wildcard *.S)
PREREQ_H += $(foreach dir,$(PREREQ_DIR),$(wildcard $(dir)/*.h))
ALL_H += $(LOCAL_H) $(PREREQ_H)
SRC_ALL_CPP += $(LOCAL_C) $(LOCAL_CPP) $(LOCAL_H)
SRC_C += $(filter %.c, $(SRC_ALL_CPP))
SRC_CPP += $(filter %.cc %.cpp %.C, $(SRC_ALL_CPP))
@ -226,7 +230,8 @@ INSTALL_CFGDIR ?= $(CONFIG_DIR)
else
INSTALL_CFGDIR ?= $(CONFIG_DIR)/$(CONFIG_SUBDIR)
endif
INSTALLED_CFG ?= $(addprefix $(INSTALL_CFGDIR)/,$(wildcard *.conf))
LOCAL_CFG ?= $(wildcard *.conf *.xml)
INSTALLED_CFG ?= $(addprefix $(INSTALL_CFGDIR)/,$(LOCAL_CFG))
# -- SYSCFG
SYSCFG_FILES += $(basename $(wildcard *.sysconf))
@ -236,14 +241,10 @@ INSTALL_SYSCFGDIR ?= $(SYSCFG_DIR)
INSTALLED_SYSCFG ?= $(addprefix $(INSTALL_SYSCFGDIR)/,$(SYSCFG_FILES))
# -- HDR
# why both SRC_H <-> LOCAL_H?
BUILD_HDRDIR ?= $(TOPDIR)/include
LOCAL_H += $(wildcard *.h *.H)
BUILD_HDRDIR ?= $(TOPDIR)/include/$(HDRDIR_SCOPE_SUFFIX)
SRC_H += $(filter %.h %.H, $(SRC_ALL_CPP))
BUILD_H = $(addprefix $(BUILD_HDRDIR)/,$(SRC_H))
BUILD_HDR = $(addprefix $(BUILD_HDRDIR)/,$(SRC_H))
PREREQ_H += $(foreach dir,$(PREREQ_DIR),$(wildcard $(dir)/*.h))
ALL_H += $(LOCAL_H) $(PREREQ_H)
INSTALL_HDRDIR ?= $(PREFIX)/include
INSTALLED_HDR += $(addprefix $(INSTALL_HDRDIR)/,$(SRC_H))
@ -259,22 +260,28 @@ INSTALL_DOCDIR ?= $(PREFIX)
INSTALLED_DOC ?= $(addprefix $(INSTALL_DOCDIR)/,$(DOCS))
# -- LIB
#BUILD_PIDIR = $(BUILD_LIBDIR)
#BUILD_PI = $(addprefix $(BUILD_PIDIR)/,$(PLUGIN))
#INSTALL_PIDIR = $(INSTALL_LIBDIR)
#INSTALLED_PI = $(addprefix $(INSTALL_PIDIR)/,$(PLUGIN))
BUILD_LIBDIR = $(TOPDIR)/lib
LOCAL_LIBS += $(CONTRIB_LIBS)
LOCAL_LIBS += $(CONTRIB_LIBS) $(PLUGIN)
ifeq ($(TARGET),mingw)
CONTRIB_LIBS_PATH += $(CROSS_TOOL_DIR)/bin
endif
LIBNAME ?= $(PROJECT)
LIBTYPE ?= shared
MEMBERS += $(LIB_A)($(OBJ))
INSTALL_LIBDIR ?= $(EXE_PREFIX)/lib
ifeq ($(USE_PROJECT_LIB),true)
LIBNAME ?= $(PROJECT)
MEMBERS += $(LIB_A)($(OBJ))
VERSION_SCRIPT = $(BUILD_LIBDIR)/version.ldscript
# TODO: use something like this as unifying variable, there are far too many
# lib-related variables
LOCAL_LIBS +=
ifneq ($(TARGET),mingw)
SHOBJS += $(patsubst %.cpp,$(SO_PREFIX)%.so,$(patsubst %.cc,$(SO_PREFIX)%.so,$(patsubst %.c,$(SO_PREFIX)%.so,$(SRC_ALL_CPP))))
LIB_A = $(BUILD_LIBDIR)/lib$(LIBNAME).a
SO_SUFFIX = so.$(shell echo $(VERSION) | cut -d- -f1)
SO_PREFIX ?= lib
@ -294,42 +301,43 @@ LIB_DEF = $(BUILD_LIBDIR)/$(LIBNAME).def
MSVCPP_IMPLIB = $(BUILD_LIBDIR)/$(LIBNAME).lib
LIB_SO = $(BUILD_LIBDIR)/$(LIBNAME).dll
INSTALLED_LIB_A = $(INSTALL_LIBDIR)/lib$(LIBNAME).a
endif
endif # mingw
endif # USE_PROJECT_LIB
INSTALLED_LIB_SO = $(addprefix $(INSTALL_LIBDIR)/,$(notdir $(LIB_SO)))
INSTALLED_DEF = $(addprefix $(INSTALL_LIBDIR)/,$(wildcard *.lib *.exp))
INSTALLED_LIB += $(addprefix $(INSTALL_LIBDIR)/,$(LOCAL_LIBS))
BUILD_LIB += $(addprefix $(BUILD_LIBDIR)/,$(LOCAL_LIBS))
INSTALLED_SHOBJS += $(addprefix $(INSTALL_LIBDIR)/,$(SHOBJS))
INSTALLED_ALL_LIBS = $(addprefix $(INSTALL_LIBDIR)/,$(wildcard *.a))
INSTALLED_LIB += $(INSTALLED_LIB_SO) $(INSTALLED_SHOBJS) \
$(INSTALLED_LINKS_SO) $(sort $(INSTALLED_LIB_A) $(INSTALLED_ALL_LIBS)) \
$(INSTALLED_DEF)
BUILD_LIB += $(LIB_SO)
# -- PI
BUILD_PIDIR = $(BUILD_LIBDIR)
BUILD_PI = $(addprefix $(BUILD_PIDIR)/,$(PLUGIN))
INSTALL_PIDIR = $(INSTALL_LIBDIR)
INSTALLED_PI = $(addprefix $(INSTALL_PIDIR)/,$(PLUGIN))
## -- PI
#BUILD_PIDIR = $(BUILD_LIBDIR)
#BUILD_PI = $(addprefix $(BUILD_PIDIR)/,$(PLUGIN))
#INSTALL_PIDIR = $(INSTALL_LIBDIR)
#INSTALLED_PI = $(addprefix $(INSTALL_PIDIR)/,$(PLUGIN))
# -- EXE
EXE_ALL += $(EXE) $(wildcard *.a *.dll *.so *.so.*)
BUILD_EXE_BIN += $(addprefix $(BUILD_EXEDIR)/,$(EXE))
EXE_SH += $(wildcard *.sh *.pl *.pm *.py *.bat)
EXE_SH += $(patsubst %.sh.tmpl,%.sh,$(wildcard *.sh.tmpl))
#EXE_ALL += $(EXE) $(wildcard *.a *.dll *.so *.so.*)
BUILD_EXE_BIN += $(addprefix $(BUILD_EXEDIR)/,$(EXE) $(EXE_SH))
INSTALLED_EXE_BIN += $(addprefix $(INSTALL_EXEDIR)/,$(EXE_BIN))
BUILD_EXEDIR = $(TOPDIR)/bin
INSTALL_EXEDIR ?= $(EXE_PREFIX)/bin
BUILD_EXE += $(BUILD_EXE_BIN)
INSTALLED_EXE += $(INSTALL_EXEDIR)/$(EXE) $(INSTALLED_EXE_BIN)
INSTALLED_EXE += $(addprefix $(INSTALL_EXEDIR)/,$(EXE) $(EXE_SH)) $(INSTALLED_EXE_BIN)
# -- SCRIPT
EXE_SH += $(wildcard *.sh *.pl *.pm *.py *.bat)
EXE_SH += $(patsubst %.sh.tmpl,%.sh,$(wildcard *.sh.tmpl))
BUILD_SCRIPTDIR = $(TOPDIR)/bin
INSTALL_SCRIPTDIR ?= $(EXE_PREFIX)/bin
BUILD_SCRIPT += $(addprefix $(BUILD_SCRIPTDIR)/,$(EXE_SH))
INSTALLED_SCRIPT += $(addprefix $(INSTALL_SCRIPTDIR)/,$(EXE_SH))
#BUILD_SCRIPTDIR = $(TOPDIR)/bin
#INSTALL_SCRIPTDIR ?= $(EXE_PREFIX)/bin
#BUILD_SCRIPT += $(addprefix $(BUILD_SCRIPTDIR)/,$(EXE_SH))
#INSTALLED_SCRIPT += $(addprefix $(INSTALL_SCRIPTDIR)/,$(EXE_SH))
# -- CGI
EXE_CGI += $(wildcard *.cgi)
@ -340,6 +348,17 @@ INSTALL_CGIDIR = $(CGI_DIR)
BUILD_CGI += $(addprefix $(BUILD_CGIDIR)/,$(EXE_CGI))
INSTALLED_CGI += $(addprefix $(INSTALL_CGIDIR)/,$(EXE_CGI))
# -- HTML
BUILD_HTMLDIR = $(TOPDIR)/htdocs
LOCAL_HTML += $(wildcard *.html *.css *.php) $(IMAGES)
HTML_SUBDIR ?= $(shell pwd | sed 's%.*/htdocs/%%')
ifeq ($(HTML_SUBDIR),)
INSTALL_HTMLDIR = $(PROJECT_HTMLDIR)
else
INSTALL_HTMLDIR = $(PROJECT_HTMLDIR)/$(HTML_SUBDIR)
endif
INSTALLED_HTML += $(addprefix $(INSTALL_HTMLDIR)/,$(LOCAL_HTML))
# -- INIT
BUILD_INITDIR = $(TOPDIR)/bin
INSTALL_INITDIR = $(INIT_PREFIX)/init.d
@ -504,9 +523,7 @@ define install_local_cfg
endef
define cvs_files
for d in `find . | sed '/CVS\/Entries$$/ !d; s%CVS/Entries%%'`; do \
sed "/^\// !d; s%^/%%; s%/.*%%; s%^%$$d%" $$d/CVS/Entries ;\
done | sort
sh $(MOD_SCRIPT_DIR)/list-cvs-files.sh
endef
define add_flavour_prefix
@ -526,6 +543,16 @@ define version
$(shell cat $1/VERSION | sed 's/-.*//')
endef
define install_links
cwd=`pwd`; \
echo "o in $(INSTALL_$(1)DIR):" ;\
for f in $(notdir $(INSTALLED_$(1))); do \
cd $(INSTALL_$(1)DIR); \
echo " sudo ln -sf $$cwd/$$f" ; \
sudo ln -sf $$cwd/$$f; \
done;
endef
# ----- local.mk
ifneq ($(wildcard $(MODDIR)/make/local.mk),)
@ -554,8 +581,10 @@ endif
CC = $(GCC)
CPP = $(GPP)
PROJECTLIB_LDFLAGS += -L$(TOPDIR)/lib
ifeq ($(USE_PROJECT_LIB),true)
PROJECTLIB_LDFLAGS += -l$(LIBNAME) -L$(TOPDIR)/lib
PROJECTLIB_LDFLAGS += -l$(LIBNAME)
endif
ifeq ($(USE_YTOOLS),true)
@ -671,6 +700,21 @@ endif
ifeq ($(USE_COMPILER_OPTIMIZATION_OPTS),true)
CFLAGS += -funroll-loops -O2
CPPFLAGS += -funroll-loops -O2
else
_NO_OPT_FLAGS = \
-O0 \
-fno-implicit-inline-templates \
-fno-implement-inlines \
-fno-default-inline \
-fno-inline \
-finline-limit=0 \
-fkeep-inline-functions \
-fno-inline-functions-called-once \
-fno-inline-functions \
-fno-early-inlining
CFLAGS += $(NO_OPT_FLAGS)
CPPFLAGS += $(NO_OPT_FLAGS)
LDFLAGS += $(NO_OPT_FLAGS)
endif
ifeq ($(USE_EXCEPTIONS_IN_C),true)
@ -836,6 +880,18 @@ LD_LIB_PATH += $(FEEDFS_LOCAL_DIR)/lib
EXE_SEARCH_PATH += $(FEEDFS_LOCAL_DIR)/bin
endif
ifeq ($(USE_FEEDFS_REWRITE),true)
FEEDFS_REWRITE_DIR = $(firstword $(wildcard $(CVS_PROJ_DIR)/feedfs-rewrite /opt/$(FLAVOUR_PATH_PREFIX)feedfs-rewrite))
FEEDFS_REWRITE_VERSION = $(call version,$(FEEDFS_REWRITE_DIR))
RPM_REQUIRES_RUN += $(FLAVOUR_PREFIX)feedfs-rewrite-run = $(FEEDFS_REWRITE_VERSION)
RPM_REQUIRES_DEVEL += $(FLAVOUR_PREFIX)feedfs-rewrite-devel = $(FEEDFS_REWRITE_VERSION)
USE_FEEDFS = true
# no build-time linkage necessary, no headers exported
LD_LIB_PATH += $(FEEDFS_REWRITE_DIR)/lib
EXE_SEARCH_PATH += $(FEEDFS_REWRITE_DIR)/bin
LIBFLAGS += -lboost_regex
endif
ifeq ($(USE_FEEDFS_FMEMFS),true)
FEEDFS_FMEMFS_DIR = $(firstword $(wildcard $(CVS_PROJ_DIR)/feedfs-fmemfs /opt/$(FLAVOUR_PATH_PREFIX)feedfs-fmemfs))
FEEDFS_FMEMFS_VERSION = $(call version,$(FEEDFS_FMEMFS_DIR))
@ -1000,6 +1056,31 @@ USE_YTOOLS = true
EXE_SEARCH_PATH += $(VALDI_DIR)/bin
endif
ifeq ($(USE_WT_JANNET),true)
USE_WT = true
include $(MODDIR)/make/wt-defs.mk
WT_JANNET_DIR = $(firstword $(wildcard $(CVS_PROJ_DIR)/wt-jannet /opt/$(FLAVOUR_PATH_PREFIX)wt-jannet))
WT_JANNET_VERSION = $(call version,$(WT_JANNET_DIR))
RPM_REQUIRES_RUN += $(FLAVOUR_PREFIX)wt-jannet-run = $(WT_JANNET_VERSION)
RPM_REQUIRES_DEVEL += $(FLAVOUR_PREFIX)wt-jannet-devel = $(WT_JANNET_VERSION)
USE_FEEDFS = true
INCLUDE += -I$(WT_JANNET_DIR)/include
LIBFLAGS += -L$(WT_JANNET_DIR)/lib -lwt-jannet
LD_LIB_PATH += $(WT_JANNET_DIR)/lib
EXE_SEARCH_PATH += $(WT_JANNET_DIR)/bin
endif
ifeq ($(USE_APACHE2_JANNET),true)
APACHE2_JANNET_DIR = $(firstword $(wildcard $(CVS_PROJ_DIR)/apache2-jannet /opt/$(FLAVOUR_PATH_PREFIX)apache2-jannet))
APACHE2_JANNET_VERSION = $(call version,$(APACHE2_JANNET_DIR))
RPM_REQUIRES_RUN += $(FLAVOUR_PREFIX)apache2-jannet-run = $(APACHE2_JANNET_VERSION)
RPM_REQUIRES_DEVEL += $(FLAVOUR_PREFIX)apache2-jannet-devel = $(APACHE2_JANNET_VERSION)
USE_FEEDFS = true
# no build-time linkage necessary, no headers exported
LD_LIB_PATH += $(APACHE2_JANNET_DIR)/lib
EXE_SEARCH_PATH += $(APACHE2_JANNET_DIR)/bin
endif
ifeq ($(USE_FPTEST),true)
FPTEST_DIR = $(firstword $(wildcard $(CVS_PROJ_DIR)/fptest /opt/$(FLAVOUR_PATH_PREFIX)fptest))
FPTEST_VERSION = $(call version,$(FPTEST_DIR))

View file

@ -14,3 +14,5 @@ install-dir.done:
done.clean:
rm -f *.done
install-links:

View file

@ -20,8 +20,10 @@ install:
else
.PHONY: $(SUBDIRS_TO_ITERATE)
#all subdirs:
# $(make_subdirs)
ifeq ($(MAKECMDGOALS),)
all:
$(make_subdirs)
endif
$(MAKECMDGOALS):
$(make_subdirs_target)

View file

@ -22,6 +22,13 @@ INSTALL_DOXYGEN_DIR ?= $(DOC_PREFIX)/devel
DOC_FILES = $(IMAGEDIR)/jannet_08.png
DOXYGEN_CONF ?= doxygen.conf
# replaced pattern defaults
DOC_FILE_PATTERNS ?= *.h
DOC_INPUT_DIRS ?= $(TOPDIR)/include
DOC_SRC_IS_JAVA ?= NO
DOC_EXCLUDE_FILES ?=
DOC_INCLUDE_PATH ?=
all: html
install: install.done
distclean: clean
@ -34,11 +41,16 @@ html: doxygen.done cpfiles.done
%: %.tmpl
cat $< \
| sed "s/__VERSION__/$(VERSION)/" \
| sed "s/__VERSION__/$(DIST_VERSION)/" \
| sed "s/__PROJECT__/$(PROJECT)/" \
| sed "s/__PROJECT_CAPNAME__/$(PROJECT_CAPNAME)/" \
| sed "s/__OUTPUT_DIR__/$(OUTPUT_DIR)/" \
| sed "s%__PROJECT_TOPDIR__%$(TOPDIR)%" \
| sed "s%__FILE_PATTERNS__%$(DOC_FILE_PATTERNS)%" \
| sed "s%__INPUT_DIRS__%$(DOC_INPUT_DIRS)%" \
| sed "s%__SRC_IS_JAVA__%$(DOC_SRC_IS_JAVA)%" \
| sed "s%__EXCLUDE_FILES__%$(DOC_EXCLUDE_FILES)%" \
| sed "s%__INCLUDE_PATH__%$(DOC_INCLUDE_PATH)%" \
> $@
doxygen.done: $(UNTEMPLATED)

View file

@ -10,8 +10,6 @@ all: $(EXE) $(BUILD_EXE_BIN) $(STRIP_DONE)
install: $(INSTALLED_EXE) $(INSTALLED_EXE_BIN)
run test: all.dirs $(EXE) $(EXE_BIN)
strace: $(EXE) $(EXE_BIN)
kdbg gdb ddd:
debug: gdb
clean: execlean localclean profclean

13
make/htdocs.mk Normal file
View file

@ -0,0 +1,13 @@
# generic utility modules
# (c) 2001 jannet it services
# contact@jannet.de
# $Id$
include $(MODDIR)/make/defs.mk
include $(MODDIR)/make/rules.mk
all:
install: install_HTML
clean: textclean localclean doneclean
test:

View file

@ -1,15 +1,22 @@
include $(MODDIR)/make/defs.mk
include $(MODDIR)/make/rules.mk
# variables
#PROJ_H ?= $(PROJECT).h
SRC_H += $(PROJ_H)
SRC_H += $(PROJ_H) $(wildcard $(HDRDIR_SCOPE_SUFFIX)/*.h)
# mandatory targets
all: $(PROJ_H)
clean: clean.include
install: install_HDR
# not wäry naaice
ifneq ($(HDRDIR_SCOPE_SUFFIX),)
install_HDR: dir_install_hdr_suffix.done
dir_install_hdr_suffix.done:
$(INSTALL) -d -o $(HDRDIROWNER) -g $(HDRDIRGROUP) -m $(HDRDIRMODE) $(INSTALL_HDRDIR)/$(HDRDIR_SCOPE_SUFFIX)
touch $@
endif
# convenience targets
project-header: $(PROJ_H)
@ -26,3 +33,10 @@ $(PROJ_H): $(filter-out $(PROJ_H) $(PROJECT)/$(PROJ_H),$(wildcard *.h $(PROJECT)
echo "#endif /* #ifndef _$(PROJECT_CAPNAME)_H */" >> $@.tmp
mv $@.tmp $@
install-links:
DEVELOPMENT=false make do-install-links
do-install-links:
@$(call install_links,HDR)
include $(MODDIR)/make/rules.mk

View file

@ -48,6 +48,10 @@ echo.libs:
@echo INSTALLED_LIB_SO = $(INSTALLED_LIB_SO)
@echo INSTALLED_LIB = $(INSTALLED_LIB)
install-links:
l=$(shell pwd)/$(notdir $(INSTALLED_LIB_SO)) ;\
cd $(dir $(INSTALLED_LIB_SO)) &&\
sudo ln -sf $$l
# ------------------------------------------ contrib libraries
# deps on mandatory targets
all: $(CONTRIB_LIBS)
@ -79,3 +83,4 @@ clean: clean.winres
#%.o : %.rc
# $(WINDRES) $^ -o $@
endif

View file

@ -29,3 +29,9 @@ $(INSTALL_PCKG_DEFS_DIR)/$(PROJECT).mk: pckg-defs.mk
mkdir -p $(dir $@)
$(INSTALL) -m $(MAKEMODE) -o $(MAKEOWNER) -g $(MAKEGROUP) $< $@
install-links:
DEVELOPMENT=false make do-install-links
do-install-links:
@$(call install_links,MAKE)

View file

@ -4,6 +4,8 @@
# $Id$
include $(MODDIR)/make/defs.mk
include $(MODDIR)/make/debugger.mk
include $(MODDIR)/make/ldlibpath.mk
include $(MODDIR)/make/plugin-defs.mk
include $(MODDIR)/make/rules.mk
include $(MODDIR)/make/depend.mk
@ -12,7 +14,7 @@ include $(MODDIR)/make/backup.mk
LOCAL_CPPFLAGS += -D_PLUGIN
LOCAL_CFLAGS += -D_PLUGIN
all: build_PI
install: install_PI
all: build_LIB
install: install_LIB
clean: execlean localclean profclean
distclean: clean

View file

@ -1,7 +1,8 @@
CREATE_DEVEL ?= true
UPLOAD_SH = $(MOD_SCRIPT_DIR)/upload.sh
RPM_PROJECT ?= $(FLAVOUR_PREFIX)$(PROJECT)
MKSPEC_SH ?= $(MOD_SCRIPT_DIR)/mkspec_wrapper.sh $(TOPDIR)/make/mkspec.sh
LOCAL_MKSPEC_SH ?= $(TOPDIR)/make/mkspec.sh
MKSPEC_SH ?= $(MOD_SCRIPT_DIR)/mkspec_wrapper.sh $(LOCAL_MKSPEC_SH)
FTP_SRC_GROUP ?= $(shell id -g)
FTP_SRC_USER ?= $(shell whoami)
FTP_RUN_GROUP ?= $(shell id -g)
@ -69,20 +70,36 @@ ftag: ftag.dist
rpm-upload-stable: rpm-upload-STABLE.dist
rpm-upload-rc: rpm-upload-RC.dist
rpm-clean: clean.rpm
rpm-clean: clean.rpm clean.mkspec
rpm-uninstall: config rpmuninstall.dist
rpm-build: config rpmbuild.dist
rpm-install: config rpminstall.dist
rpm-reinstall: rpm-uninstall rpm-clean rpm-install
rpm-rebuild: rpm-clean rpm-build
clean.rpm:
rm -rf $(DIST_DIR) *.dist CURRENT_RPM_SRC
ifeq ($(PROJECT_DESCR_FILE),)
clean.mkspec:
else
$(LOCAL_MKSPEC_SH): $(PROJECT_DESCR_FILE)
sh $(MOD_SCRIPT_DIR)/create-mkspec.sh $< > $@.tmp
mv $@.tmp $@
clean.mkspec:
rm -f $(LOCAL_MKSPEC_SH) $(LOCAL_MKSPEC_SH).tmp
endif
src-dir.dist:
mkdir -p $(DIST_SRC_DIR)
touch $@
cpfiles.dist: src-dir.dist
cpfiles.dist: src-dir.dist $(LOCAL_MKSPEC_SH)
rm -rf $(DIST_SRC_DIR)/*
$(cvs_files) | grep -v VERSION | cpio -o -H newc | ( cd $(DIST_SRC_DIR); cpio --make-directories -i)
sh $(MKSPEC_SH) -V $(RPM_VERSION) -S $(notdir $(PCKG_TAR)) -N $(RPM_PROJECT) \

View file

@ -162,10 +162,6 @@ trace-marks:
ifneq ($(TARGET),mingw)
ldd:
ifneq ($(wildcard *.o),)
@echo "======= objects:"
@for o in *.o; do echo "------- $$o"; ldd $$o; done
endif
ifneq ($(wildcard *.so),)
@echo "======= libraries:"
@for o in *.so; do echo "------- $$o"; ldd $$o; done
@ -279,12 +275,36 @@ check_not_empty_$(1):
fi
endef
INSTALLATION_FILE_TYPES += LIB PI HDR EXE SCRIPT INIT DOC PROFILE MAKE CFG \
SYSCFG IMG LOG JAVA LD_CONF CGI LOGROT RSYSLOG CRONTAB
INSTALLATION_FILE_TYPES += LIB HDR EXE INIT DOC PROFILE MAKE CFG \
SYSCFG IMG LOG JAVA LD_CONF CGI LOGROT RSYSLOG CRONTAB HTML
#$(foreach attr,OWNER GROUP MODE,$(foreach type, $(INSTALLATION_FILE_TYPES),\
# $(eval $(call std_install_rules,$(type)$(attr)))))
# --- special installation rules, that the general rules below dont catch
# for whatever reason >
%: %.init
cp $< $@
# don't know why %: %.init from above doesn't remake %
$(INSTALL_INITDIR)/%: %.init | $(INSTALL_INITDIR)
$(INSTALL) -o $(INITOWNER) -g $(INITGROUP) -m $(INITMODE) $< $@
$(INSTALL_LOGROTDIR)/%: %.logrotate | $(INSTALL_LOGROTDIR)
$(INSTALL) -o $(LOGROTOWNER) -g $(LOGROTGROUP) -m $(LOGROTMODE) $< $@
$(INSTALL_RSYSLOGDIR)/%.conf: %.rsyslog | $(INSTALL_RSYSLOGDIR)
$(INSTALL) -o $(RSYSLOGOWNER) -g $(RSYSLOGGROUP) -m $(RSYSLOGMODE) $< $@
%: %.sysconf
cp $< $@
# don't know why %: %.sysconf from above doesn't remake %
$(INSTALL_SYSCFGDIR)/%: %.sysconf | $(INSTALL_SYSCFGDIR)
$(INSTALL) -o $(INITOWNER) -g $(INITGROUP) -m $(INITMODE) $< $@
# --- special installation rules <
define std_install_rules
#build_dir_$(1): $$(TOPDIR)/dir_build_$(1).done
@ -304,43 +324,24 @@ $$(BUILD_$(1)DIR)/%: % $$(TOPDIR)/dir_build_$(1).done
fi
$$(TOPDIR)/dir_install_$(1).done:
@if [ -n "$$(INSTALL_$(1)DIR)" ]; then \
$$(INSTALL) -d -o $$($(1)DIROWNER) -g $$($(1)DIRGROUP) -m $$($(1)DIRMODE) $$(INSTALL_$(1)DIR) ;\
echo $$(INSTALL) -d -o $$($(1)DIROWNER) -g $$($(1)DIRGROUP) -m $$($(1)DIRMODE) $$(INSTALL_$(1)DIR) ;\
fi
#@if [ -n "$$(INSTALL_$(1)DIR)" ]; then \
# $$(INSTALL) -d -o $$($(1)DIROWNER) -g $$($(1)DIRGROUP) -m $$($(1)DIRMODE) $$< ;\
# echo $$(INSTALL) -d -o $$($(1)DIROWNER) -g $$($(1)DIRGROUP) -m $$($(1)DIRMODE) $$< ;\
#fi
touch $$@
$$(INSTALL_$(1)DIR)/%: % $$(TOPDIR)/dir_install_$(1).done
$$(INSTALL_$(1)DIR):
$$(INSTALL) -d -o $$($(1)DIROWNER) -g $$($(1)DIRGROUP) -m $$($(1)DIRMODE) $$@
# old prereq $$(TOPDIR)/dir_install_$(1).done
$$(INSTALL_$(1)DIR)/%: % | $$(INSTALL_$(1)DIR)
$$(INSTALL) -o $$($(1)OWNER) -g $$($(1)GROUP) -m $$($(1)MODE) $$< $$@
endef
$(foreach type, $(INSTALLATION_FILE_TYPES), $(eval $(call std_install_rules,$(type))))
# ---
# doesn't work, dunno why
%: %.init
cp $< $@
# don't know why %: %.init from above doesn't remake %
$(INSTALL_INITDIR)/%: %.init
$(INSTALL) -o $(INITOWNER) -g $(INITGROUP) -m $(INITMODE) $< $@
$(INSTALL_LOGROTDIR)/%: %.logrotate
$(INSTALL) -o $(LOGROTOWNER) -g $(LOGROTGROUP) -m $(LOGROTMODE) $< $@
$(INSTALL_RSYSLOGDIR)/%.conf: %.rsyslog
$(INSTALL) -o $(RSYSLOGOWNER) -g $(RSYSLOGGROUP) -m $(RSYSLOGMODE) $< $@
%: %.sysconf
cp $< $@
# don't know why %: %.sysconf from above doesn't remake %
$(INSTALL_SYSCFGDIR)/%: %.sysconf
$(INSTALL) -o $(INITOWNER) -g $(INITGROUP) -m $(INITMODE) $< $@
# ---
$(sort $(LINKS_SO)):
cd $(dir $@); ln -sf $(shell echo $@ | sed -e 's/\.so$$\|\.so.*$$//').$(SO_SUFFIX) $(notdir $@)

View file

@ -17,6 +17,7 @@ include $(MODDIR)/make/defs.mk
BUILD_HDR =
include $(MODDIR)/make/rules.mk
include $(MODDIR)/make/ldlibpath.mk
include $(MODDIR)/make/debugger.mk
all:
install:
@ -54,16 +55,10 @@ abort:
strace: $(EXE) $(EXE_BIN)
strace -f ./$(EXE) $(EXE_ARGS)
kdbg gdb ddd:
$@ $(EXE) $(firstword $(CORE))
attach:
kdbg ./$(EXE) -p `ps aux | sed "/$(EXE)/ !d; /sed/ d" | awk '{print $$2}'`
kcg:
kcachegrind callgrind.*
debug: gdb
clean: runclean localclean
start.bat:

View file

@ -1,6 +1,6 @@
all.done: $(BUILD_SCRIPT)
all: build_SCRIPT build_CGI
install: install_INIT install_SCRIPT install_CGI
all: build_EXE build_CGI
install: install_INIT install_EXE install_CGI
clean:allclean localclean doneclean textclean clean.init
test:

View file

@ -3,11 +3,16 @@
# contact@jannet.de
# $Id$
include $(MODDIR)/make/defs.mk
LDFLAGS += -shared
BUILD_SHOBJS = $(addprefix $(BUILD_LIBDIR)/, $(SHOBJS))
SHOBJS = $(patsubst %.cpp,$(SO_PREFIX)%.so,$(patsubst %.cc,$(SO_PREFIX)%.so,$(patsubst %.c,$(SO_PREFIX)%.so,$(SRC_ALL_CPP))))
INSTALLED_SHOBJS += $(addprefix $(INSTALL_LIBDIR)/,$(SHOBJS))
INSTALLED_ALL_LIBS += $(INSTALLED_SHOBJS)
include $(MODDIR)/make/defs.mk
include $(MODDIR)/make/ldlibpath.mk
include $(MODDIR)/make/debugger.mk
include $(MODDIR)/make/rules.mk
all: $(SHOBJS) $(BUILD_SHOBJS)

View file

@ -25,8 +25,6 @@ all: $(EXE)
install: $(INSTALLED_EXE) $(INSTALLED_EXE_BIN)
run: all.dirs $(EXE) $(EXE_BIN)
strace: $(EXE) $(EXE_BIN)
kdbg gdb ddd:
debug: gdb
#$(LIB_SO): $(LIB_A)
#$(EXE): $(LIB_SO)

View file

@ -41,3 +41,24 @@ prefix.done:
mkdir -p $(PREFIX)
touch $@
install-links:
DEVELOPMENT=false make do-install-links
do-install-links:
@@cwd=`pwd`; \
echo "o in $(INSTALL_LIBDIR):" ;\
find lib -name '*.so' -o -name '*.so.*' -o -name '*.a' -o -name '*.dll' | \
sed 's%^\./%%' | \
while read f; do \
cd $(INSTALL_LIBDIR); \
echo " sudo ln -sf $$cwd/$$f" ; \
sudo ln -sf $$cwd/$$f; \
done; \
echo "o in $(INSTALL_EXEDIR):" ;\
find bin -type f -a -perm -u+x | \
sed 's%^\./%%' | \
while read f; do \
cd $(INSTALL_EXEDIR); \
echo " sudo ln -sf $$cwd/$$f" ; \
sudo ln -sf $$cwd/$$f; \
done

20
make/wt-defs.mk Normal file
View file

@ -0,0 +1,20 @@
ifeq ($(USE_WT),true)
ifeq ($(USE_WT_FASTCGI),true)
PROJECT_LDFLAGS += -lwtfcgi
endif
ifeq ($(USE_WT_HTTPD),true)
PROJECT_LDFLAGS += -lwthttp
PROJECT_CFLAGS += -DCONNECTOR_HTTP=YES
PROJECT_CPPFLAGS+= -DCONNECTOR_HTTP=YES
endif
ifeq ($(USE_WT_DBO),true)
PROJECT_LDFLAGS += -lwtdbopostgres -lwtdbosqlite3 -lwtdbo
endif
PROJECT_LDFLAGS += -lwtext -lwt
endif

View file

@ -1,6 +1,6 @@
LOCAL_CPP += main.cpp
YAPP_CLASS ?= $(firstword $(basename $(wildcard YApp*.h Y*.h *.h)))
YAPP_CLASS_H = $(firstword $(wildcard $(addsuffix /$(YAPP_CLASS).h,\
YAPP_CLASS_H ?= $(firstword $(wildcard $(addsuffix /$(YAPP_CLASS).h,\
$(subst -I,,$(INCLUDE)))) $(YAPP_CLASS).h)
LOCAL_CFLAGS += -DVERSION_STR=\"$(VERSION)\"
LOCAL_CPPFLAGS += -DVERSION_STR=\"$(VERSION)\"
@ -20,5 +20,5 @@ clean.yapp:
rm -f main.cpp
main.cpp: $(YAPP_CLASS_H)
echo -e "#include <YAppRunner.h>\n#include \"$<\"\nyapp_main($(YAPP_CLASS))" > $@
echo -e "#include \"$<\"\n#include <YAppRunner.h>\nyapp_main($(YAPP_CLASS))" > $@

108
scripts/create-mkspec.sh Normal file
View file

@ -0,0 +1,108 @@
#!/bin/sh
descr=$1
section()
{
local sec="$1"
cat "$descr" |
cut -d\# -f1 |
tr -s '\n' '\n' |
sed -n "/\[$sec\]/,/\[/ p" |
grep -v '\['
}
value()
{
local path=$1
local sec=`echo $1 | sed 's/\.[^.]\+$//'`
local key=`echo $1 | sed 's/.*\.//'`
# echo "path=>$path<"
# echo "sec=>$sec<"
# echo "key=>$key<"
if [ "$key" = "$path" ]; then
section $path
return 0
fi
section $sec | sed "
/^ *$key *=/ !d
s/^ *$key *= *//
s/ *$//
"
}
#t()
#{
# echo '--------------'
# echo $1: `value $1`
#}
#
#t global.group
#t summary
#t description
#exit 0
cat << EOT
echo "Name: \$NAME"
echo "Summary: `value summary`"
echo "Version: \$VERSION"
echo "Release: \$RELEASE"
echo "License: Jannet IT Services proprietary license"
echo "Group: System/Libraries"
[ -n "\$SOURCE" ] && echo "Source: \$SOURCE"
echo "Vendor: Jannet IT Services"
echo "URL: http://www.jannet.de"
echo "BuildRoot: /var/tmp/%{name}-buildroot"
echo ""
echo "%description"
echo "`value description`"
echo ""
# ---------------------------------------
echo "%package -n \$NAME-run"
echo "Summary: `value summary`"
echo "Group: `value global.group`"
echo "Requires: \$REQUIRES_RUN"
echo "%description -n \$NAME-run"
echo "Runtime package"
echo ""
# ---------------------------------------
echo "%package -n \$NAME-devel"
echo "Summary: `value summary`, development package"
echo "Group: `value global.group`"
echo "Requires: \$REQUIRES_DEVEL"
echo "%description -n \$NAME-devel"
echo "Development package"
echo ""
# ---------------------------------------
echo "%prep -n \$NAME-run"
echo ""
echo "%setup -q -n \$NAME-\$V"
echo ""
echo "%build"
echo 'pwd'
echo 'make config'
echo 'make'
echo ""
echo "%install"
echo 'rm -rf \$RPM_BUILD_ROOT'
echo "export ENV_PREFIX=\\\$RPM_BUILD_ROOT"
echo "export INSTALL_LOG=\$INSTALL_LOG"
echo "mkdir -p \`dirname \$INSTALL_LOG\`"
echo "> \$INSTALL_LOG"
echo "make install"
echo "cat \$INSTALL_LOG | sed \"s% \\\$RPM_BUILD_ROOT% %\" | "
echo " grep -ve '/include/.*.h\$\|devel\|/lib.*\.a\$\|make' | sort -u > \$INSTALL_LOG.\$NAME-run"
echo "cat \$INSTALL_LOG | sed \"s% \\\$RPM_BUILD_ROOT% %\" | "
echo " grep -e '/include/.*.h\$\|devel\|/lib.*\.a\$\|make' | sort -u > \$INSTALL_LOG.\$NAME-devel"
echo ""
echo "%post -n \$NAME-run"
echo ""
echo "%clean"
#echo 'rm -rf \$RPM_BUILD_ROOT'
echo "%files -n \$NAME-run -f \$INSTALL_LOG.\$NAME-run"
echo "%files -n \$NAME-devel -f \$INSTALL_LOG.\$NAME-devel"
echo '%defattr (-, root, root)'
EOT

View file

@ -71,6 +71,14 @@ check_ldconfig()
echo "done."
}
list_all_packages()
{
rpm -qa --queryformat '%{NAME}: %{VENDOR}\n' | \
grep -i '^[^ ]\+:.*\(jannet\|c-mexx\)' | \
sed 's/\(^[^ ]\+\) *:.*/\1/' |\
sort -u
}
cmd="$1"
shift
get_opts $*
@ -120,13 +128,9 @@ checklog)
;;
info)
if [ "$opt_verbose" = true ]; then
rpm -qai | grep -iB 7 "jannet.de\|c-mexx.com"
list_all_packages | xargs rpm -qi
else
rpm -qai | \
grep -iB 7 "jannet.de\|c-mexx.com" | \
sed '/Name/ !d; s/Name *: //; s/ *.*//' | \
xargs rpm -q | \
sort -u
list_all_packages | xargs rpm -q
fi
;;
cpp-glib)

View file

@ -1,25 +1,188 @@
export PATH=$PATH:/opt/ytools/bin
# -- private stuff not intended for use outside of this script
_ytools_check_config_present()
{
if [ -z "$ytools_config_files" ]; then
if [ "$1" = true ]; then
ytools_log "warning: $0 tries to access configuration witout having a config file"
fi
return 1;
fi
return 0;
}
_ytools_probe_default_config_paths()
{
[ "$ytools_config_files" ] && return 0
local f
for f in \
/etc/opt/$ytools_project/$ytools_basename.conf \
$HOME/.$ytools_project/$ytools_basename.conf \
$HOME/.$ytools_project/$rc \
$HOME/.$ytools_basename/$ytools_basename.conf \
$HOME/.$ytools_basename/$rc \
$HOME/.$rc \
; do
[ -r "$f" ] && ytools_config_file="$ytools_config_files $f"
done
}
_ytools_cat_section()
{
if [ "$2" ]; then
sed -n "/\[$2\]/,/[^ ]*\[/ p" $1 | sed '/[^ ]*\[/ d'
return
fi
sed -n '0,/[^ ]*\[/ p' | sed '/[^ ]*\[/ d; s/=.*/=/' $1
}
_ytools_format_config()
{
sed '/^$/d; s/$/;/'
}
_ytools_format_section()
{
_ytools_cat_section $* | _ytools_format_config
}
_ytools_source_section()
{
eval `_ytools_cat_section $* | _ytools_format_config`
}
# -- exported variables
[ -z "$ytools_basename" ] && ytools_basename=`basename $0 | sed 's/\.sh$//'`
[ -z "$ytools_project" ] && ytools_project="ytools"
[ -z "$ytools_rc" ] && ytools_rc="$ytools_basename"rc
[ -z "$ytools_config_files" ] && _ytools_probe_default_config_paths
[ -z "$ytools_loggers" ] && ytools_loggers="stdout"
# -- exported utilities
ytools_log_err()
{
echo "# $@" >&2
}
ytools_log_stdout()
{
echo "# $@"
}
ytools_log_stderr()
{
echo "# $@" >&2
}
ytools_log_syslog()
{
logger -t $ytools_basename "$*"
}
ytools_log()
{
echo $@
local logger
for logger in $ytools_loggers; do
eval ytools_log_$logger "$@"
done
}
ytools_log_err()
ytools_empty_config()
{
echo $@ >&2
local o_verbose=""
local o_section
set -- `getopt 'vs:' $*`
while [ "$1" != -- ]; do
case $1 in
-v)
o_verbose=true;;
-s)
o_section=$2; shift;;
*)
ytools_log_err unknown option $1
exit 1;;
esac
shift
done
shift
_ytools_check_config_present $o_verbose || return 1
[ ! -r "$1" ] && return
[ "$o_verbose" ] && ytools_log o resetting config "\"$1\""
if [ "$o_section" ]; then
[ "$o_verbose" ] && ytools_log o resetting section "[$o_section]" of config "\"$1\""
fi
eval `_ytools_format_section $1 $o_section | sed 's/=[^;]*;/=;/g'`
}
ytools_empty_configs()
{
local section
local c
local o_verbose=""
local o_section
local opts=""
set -- `getopt 'vs:' $*`
while [ "$1" != -- ]; do
case $1 in
-v)
o_verbose=true
opts="$opts -v"
;;
-s)
o_section="-s $2"; shift;;
*)
ytools_log_err unknown option $1
exit 1;;
esac
shift
done
shift
_ytools_check_config_present $o_verbose || return 1
for section in "" `ytools_config_sections`; do
for c in $ytools_config_files; do
ytools_empty_config -s "$section" section $opts $c
if [ -d $c.d ]; then
local dirconfs=`find $c.d -maxdepth 1 -type f`
local f
for f in $dirconfs; do
ytools_empty_config -s "$section" $opts $f
done
fi
done
done
return 0
}
ytools_source_config()
{
local o_verbose=""
local o_section
set -- `getopt 'v' $*`
set -- `getopt 'vs:' $*`
while [ "$1" != -- ]; do
case $1 in
-v)
o_verbose=true;;
o_verbose=true
;;
-s)
o_section=$2; shift;;
*)
ytools_log_err unknown option $1
exit 1;;
@ -28,25 +191,38 @@ ytools_source_config()
done
shift
[ ! -r "$1" ] && return
[ "$o_verbose" ] && ytools_log o reading config "<$1>"
. $1
_ytools_check_config_present $o_verbose || return 1
if [ "$o_verbose" = true ]; then
if [ "$o_section" ]; then
ytools_log o sourcing section "[$o_section]" from config file "\"$1\""
else
ytools_log o sourcing config "\"$1\""
fi
_ytools_cat_section $1 $o_section
fi
_ytools_source_section $1 $o_section
}
ytools_source_configs()
{
local c
local basename=${myname/.*/}
local rc="$basename"rc
local project=ytools
local source_opts=""
local o_verbose=""
set -- `getopt 'v' $*`
set -- `getopt 'vs:' $*`
while [ "$1" != -- ]; do
case $1 in
-v)
o_verbose=true;;
o_verbose=true
source_opts="$source_opts -v"
;;
-s)
source_opts="$source_opts -s $2"
shift;;
*)
ytools_log_err unknown option $1
exit 1;;
@ -55,27 +231,84 @@ ytools_source_configs()
done
shift
config_files="
/etc/opt/$project/$basename.conf
$HOME/.$project/$basename.conf
$HOME/.$project/$rc
$HOME/.$basename/$basename.conf
$HOME/.$basename/$rc
$HOME/.$rc
"
_ytools_check_config_present $o_verbose || return 1
for c in $config_files; do
ytools_source_config $c
for c in $ytools_config_files; do
ytools_source_config $source_opts $c
if [ -d $c.d ]; then
local dirconfs=`find $c.d -maxdepth 1 -type f`
local f
for f in $dirconfs; do
ytools_source_config $f
ytools_source_config $source_opts $f
done
fi
done
}
ytools_config_sections()
{
local o_verbose=""
local o_section
local o_file
local o_exact=false
OPTIND=1
while getopts ves:f: flag; do
case $flag in
v)
o_verbose=true;;
s)
o_section="$OPTARG";;
f)
o_file="$OPTARG";;
e)
o_exact=true;;
*)
ytools_log_err "unknown option -$flag"
exit 1;;
esac
done
shift $(($OPTIND - 1))
_ytools_check_config_present $o_verbose || return 1
[ "$o_file" ] || o_file="$ytools_config_files"
if [ "$o_exact" = false ]; then
if [ "$o_section" ]; then
sed "
/^[ ]*\[$o_section\.\(.*\)\]/ !d
s/^[ ]*\[$o_section\.\(.*\)\].*/\1/
" $o_file 2>/dev/null | sort -u
else
sed "
/^[ ]*\[\(.*\)\]/ !d
s/^[ ]*\[\(.*\)\].*/\1/
" $o_file 2>/dev/null | sort -u
fi
else
if [ "$o_section" ]; then
sed "
/^[ ]*\[$o_section\.\([^.]*\)\]/ !d
s/^[ ]*\[$o_section\.\([^.]*\)\].*/\1/
" $o_file 2>/dev/null | sort -u
else
sed "
/^[ ]*\[\([^.]*\)\]/ !d
s/^[ ]*\[\([^.]*\)\].*/\1/
" $o_file 2>/dev/null | sort -u
fi
fi
return
}
ytools_cat()
{
cat | sed 's/^[ ]*|//'

20
scripts/list-cvs-files.sh Normal file
View file

@ -0,0 +1,20 @@
#!/bin/sh
list_dirents()
{
local dirs=`sed '/^D\// !d; s%^D/%%; s%/.*%%' $1/CVS/Entries`
if [ -f $1/CVS/Entries.Log ]; then
dirs="$dirs `sed '/^A D\// !d; s%^A D/%%; s%/.*%%' $1/CVS/Entries.Log`"
fi
local files=`sed '/^\// !d; s%/%%; s%/.*%%; s%^%%' $1/CVS/Entries`
local d f
for f in $files; do
echo $1/$f
done
for d in $dirs; do
echo $1/$d
list_dirents $1/$d
done
}
list_dirents .