From 2939f8e3a8d862828999489ba854374dc91c332e Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Sun, 20 Feb 2011 14:15:22 +0000 Subject: [PATCH] Everywhere: Merge V_1_1_29_40_POST_ACCEPTANCE --- make/Makefile | 4 + make/crontab.mk | 23 +++ make/debugger.mk | 14 ++ make/defs-dev.mk | 11 +- make/defs-dist.mk | 11 +- make/defs.d/Makefile | 2 + make/defs.mk | 141 +++++++++++++---- make/deps.d/Makefile | 2 + make/dirs.mk | 6 +- make/doxygen.mk | 14 +- make/exe.mk | 2 - make/htdocs.mk | 13 ++ make/include.mk | 20 ++- make/lib.mk | 5 + make/make.mk | 6 + make/plugin.mk | 6 +- make/rpmdist.mk | 23 ++- make/rules.mk | 71 ++++----- make/run.mk | 7 +- make/scripts-targets.mk | 4 +- make/so.mk | 11 +- make/standalone-exe.mk | 2 - make/topdir.mk | 21 +++ make/wt-defs.mk | 20 +++ make/yapp.mk | 4 +- scripts/create-mkspec.sh | 108 +++++++++++++ scripts/jannet | 16 +- scripts/jw-build-functions.sh | 281 +++++++++++++++++++++++++++++++--- scripts/list-cvs-files.sh | 20 +++ 29 files changed, 743 insertions(+), 125 deletions(-) create mode 100644 make/crontab.mk create mode 100644 make/debugger.mk create mode 100644 make/htdocs.mk create mode 100644 make/wt-defs.mk create mode 100644 scripts/create-mkspec.sh create mode 100644 scripts/list-cvs-files.sh diff --git a/make/Makefile b/make/Makefile index acbd468b..cb0b7a12 100644 --- a/make/Makefile +++ b/make/Makefile @@ -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 diff --git a/make/crontab.mk b/make/crontab.mk new file mode 100644 index 00000000..f7297f50 --- /dev/null +++ b/make/crontab.mk @@ -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 diff --git a/make/debugger.mk b/make/debugger.mk new file mode 100644 index 00000000..ec1bf46f --- /dev/null +++ b/make/debugger.mk @@ -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}'` + diff --git a/make/defs-dev.mk b/make/defs-dev.mk index e41d37eb..66e84971 100644 --- a/make/defs-dev.mk +++ b/make/defs-dev.mk @@ -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) diff --git a/make/defs-dist.mk b/make/defs-dist.mk index a41bd253..37c9f6b5 100644 --- a/make/defs-dist.mk +++ b/make/defs-dist.mk @@ -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) diff --git a/make/defs.d/Makefile b/make/defs.d/Makefile index 7c0c3c63..a8826e47 100644 --- a/make/defs.d/Makefile +++ b/make/defs.d/Makefile @@ -14,3 +14,5 @@ install-dir.done: done.clean: rm -f *.done + +install-links: diff --git a/make/defs.mk b/make/defs.mk index b79ec6bf..9e8771f5 100644 --- a/make/defs.mk +++ b/make/defs.mk @@ -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)) diff --git a/make/deps.d/Makefile b/make/deps.d/Makefile index 66f89c6a..1eaf0c59 100644 --- a/make/deps.d/Makefile +++ b/make/deps.d/Makefile @@ -14,3 +14,5 @@ install-dir.done: done.clean: rm -f *.done + +install-links: diff --git a/make/dirs.mk b/make/dirs.mk index 57c7ab27..3f279b92 100644 --- a/make/dirs.mk +++ b/make/dirs.mk @@ -20,8 +20,10 @@ install: else .PHONY: $(SUBDIRS_TO_ITERATE) -#all subdirs: -# $(make_subdirs) +ifeq ($(MAKECMDGOALS),) +all: + $(make_subdirs) +endif $(MAKECMDGOALS): $(make_subdirs_target) diff --git a/make/doxygen.mk b/make/doxygen.mk index 486f72fe..84c89dad 100644 --- a/make/doxygen.mk +++ b/make/doxygen.mk @@ -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) diff --git a/make/exe.mk b/make/exe.mk index 6e286097..8cb2ed4f 100644 --- a/make/exe.mk +++ b/make/exe.mk @@ -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 diff --git a/make/htdocs.mk b/make/htdocs.mk new file mode 100644 index 00000000..bf8df1a1 --- /dev/null +++ b/make/htdocs.mk @@ -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: + diff --git a/make/include.mk b/make/include.mk index 08a2b66b..c14a2d95 100644 --- a/make/include.mk +++ b/make/include.mk @@ -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 diff --git a/make/lib.mk b/make/lib.mk index df5dc4bc..28b0632a 100644 --- a/make/lib.mk +++ b/make/lib.mk @@ -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 + diff --git a/make/make.mk b/make/make.mk index 04c8bed9..8ac1684c 100644 --- a/make/make.mk +++ b/make/make.mk @@ -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) + diff --git a/make/plugin.mk b/make/plugin.mk index aa58a801..4d283b37 100644 --- a/make/plugin.mk +++ b/make/plugin.mk @@ -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 diff --git a/make/rpmdist.mk b/make/rpmdist.mk index a5c199ba..6e43337a 100644 --- a/make/rpmdist.mk +++ b/make/rpmdist.mk @@ -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) \ diff --git a/make/rules.mk b/make/rules.mk index ca8e0e86..59f41531 100644 --- a/make/rules.mk +++ b/make/rules.mk @@ -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 $@) diff --git a/make/run.mk b/make/run.mk index 7f884195..c0cf1bdf 100644 --- a/make/run.mk +++ b/make/run.mk @@ -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: diff --git a/make/scripts-targets.mk b/make/scripts-targets.mk index 94bd813b..ae4b6b9b 100644 --- a/make/scripts-targets.mk +++ b/make/scripts-targets.mk @@ -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: diff --git a/make/so.mk b/make/so.mk index e457e237..082bf28f 100644 --- a/make/so.mk +++ b/make/so.mk @@ -3,11 +3,16 @@ # contact@jannet.de # $Id$ -LDFLAGS += -shared -BUILD_SHOBJS = $(addprefix $(BUILD_LIBDIR)/, $(SHOBJS)) - 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/ldlibpath.mk +include $(MODDIR)/make/debugger.mk include $(MODDIR)/make/rules.mk all: $(SHOBJS) $(BUILD_SHOBJS) diff --git a/make/standalone-exe.mk b/make/standalone-exe.mk index 9f31a442..ea5f23ab 100644 --- a/make/standalone-exe.mk +++ b/make/standalone-exe.mk @@ -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) diff --git a/make/topdir.mk b/make/topdir.mk index ccd70ca5..3a00e1ba 100644 --- a/make/topdir.mk +++ b/make/topdir.mk @@ -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 diff --git a/make/wt-defs.mk b/make/wt-defs.mk new file mode 100644 index 00000000..6222db68 --- /dev/null +++ b/make/wt-defs.mk @@ -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 + diff --git a/make/yapp.mk b/make/yapp.mk index 8f6004ab..4ae6de5d 100644 --- a/make/yapp.mk +++ b/make/yapp.mk @@ -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 \n#include \"$<\"\nyapp_main($(YAPP_CLASS))" > $@ + echo -e "#include \"$<\"\n#include \nyapp_main($(YAPP_CLASS))" > $@ diff --git a/scripts/create-mkspec.sh b/scripts/create-mkspec.sh new file mode 100644 index 00000000..704d8258 --- /dev/null +++ b/scripts/create-mkspec.sh @@ -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 diff --git a/scripts/jannet b/scripts/jannet index dc6496d3..56523bb6 100644 --- a/scripts/jannet +++ b/scripts/jannet @@ -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) diff --git a/scripts/jw-build-functions.sh b/scripts/jw-build-functions.sh index ae3bd3d4..dff19914 100644 --- a/scripts/jw-build-functions.sh +++ b/scripts/jw-build-functions.sh @@ -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/^[ ]*|//' diff --git a/scripts/list-cvs-files.sh b/scripts/list-cvs-files.sh new file mode 100644 index 00000000..5ad26d9a --- /dev/null +++ b/scripts/list-cvs-files.sh @@ -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 .