diff --git a/Makefile b/Makefile index 123fe25c..b48e2623 100644 --- a/Makefile +++ b/Makefile @@ -1,40 +1,13 @@ MODDIR=. -SUBDIRS = $(shell find . -type d -maxdepth 1 | grep -ve "include\|CVS\|lib\|nomake\|dist\|old" | grep /) include $(MODDIR)/make/defs.mk +SUBDIRS = $(REQUIRED) include $(MODDIR)/make/rules.mk -include $(MODDIR)/make/libdist.mk - -TEMP_BUILD_DIR = $(shell find $(TEMP_DIR) -name Makefile -maxdepth 2 | tail -1 | xargs dirname) +include $(MODDIR)/make/rpmdist.mk all: $(make_subdirs_target) - make $(LIB_SO) -libstat: - $(make_subdirs) clean distclean: $(make_subdirs_target) -install: all $(INSTALL_LIBDIR) - make -C lib install -install-devel: install - make -C include install - -libshared: libstat $(LIB_SO) - -distclean: clean.dist - -rpm.untar-build: rpm.untar - make -C $(TEMP_BUILD_DIR) rpm.build - -rpm.untar: build.dist - rm -rf $(TEMP_DIR) - mkdir -p $(TEMP_DIR) - tar -xzf $(DIST_FILE) -C $(TEMP_DIR) - -rpm.build-devel: - sudo -u root "make install" -rpm.build-user: - sudo -u root "make install" - -rpm.build: rpm.build-devel rpm.build-user - +install: all + $(make_subdirs_target) diff --git a/VERSION b/VERSION index af2ee1e0..7824e432 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.0.0.0-dev +1.0.0-0-dev diff --git a/make/cfg_dev.mk b/make/cfg_dev.mk index 86ddb464..de618a3a 100644 --- a/make/cfg_dev.mk +++ b/make/cfg_dev.mk @@ -6,6 +6,7 @@ #CONTRIBDIR = $(TOPDIR)/contrib PREFIX = $(HOME)/dat/test/$(PROJECT)-$(shell cat $(TOPDIR)/VERSION) VAR_PREFIX = $(PREFIX)/var +DOC_PREFIX = $(PREFIX)/doc/$(PROJECT) EXEGROUP = $(shell id -g) EXEOWNER = $(shell whoami) EXEMODE = 770 diff --git a/make/cfg_dist.mk b/make/cfg_dist.mk index e3d33fbc..3f76db29 100644 --- a/make/cfg_dist.mk +++ b/make/cfg_dist.mk @@ -4,8 +4,9 @@ # $Id$ #CONTRIBDIR = $(TOPDIR)/contrib -PREFIX = /opt/$(PROJECT) -VAR_PREFIX = $(PREFIX)/var +PREFIX = $(ENV_PREFIX)/opt/$(PROJECT) +VAR_PREFIX = $(ENV_PREFIX)/var/opt +DOC_PREFIX = $(ENV_PREFIX)/usr/share/doc/packages/$(PROJECT) EXEGROUP = root EXEOWNER = root EXEMODE = 755 diff --git a/make/defs-orig.mk b/make/defs-orig.mk index 1dbd293f..e2094cfe 100644 --- a/make/defs-orig.mk +++ b/make/defs-orig.mk @@ -1,11 +1,13 @@ -# generic utility modules + # (c) 2001 jannet it services # contact@jannet.de # $Id$ ifndef PROJECT PROJECT := ytools - REQUIRED = make misc slog platform \ + REQUIRED = make \ + doc \ + misc slog platform \ devutil \ hash \ hexdump \ @@ -35,6 +37,7 @@ DIST_WINVERSION = $(shell echo $(WINVERSION) | sed -e "s/-dev//") LOCAL_DIST_VERSION = $(shell echo $(LOCAL_VERSION) | sed -e "s/-dev//") LOCAL_DIST_WINVERSION = $(shell echo $(LOCAL_WINVERSION) | sed -e "s/-dev//") DEVELOPMENT = $(shell cat $(TOPDIR)/VERSION | grep 'dev' >/dev/null && echo true) +PROJECT_STEM = $(PROJECT)-$(DIST_VERSION) ifeq ($(DEVELOPMENT),true) include $(TOPDIR)/make/cfg_dev.mk @@ -99,11 +102,20 @@ INCLUDE = -I. -I$(TOPDIR)/include -I$(MODDIR)/include $(PROJECT_INCLUDE) $(L INSTALL_LIBDIR = $(PREFIX)/lib INSTALL_HDRDIR = $(PREFIX)/include INSTALL_BINDIR = $(PREFIX)/bin +INSTALL_DOCDIR_DIST = $(DOC_PREFIX) +INSTALL_DOCDIR_DEVEL = $(DOC_PREFIX)-devel +DOCS = $(wildcard README CHANGES TODO LICENSE AUTHORS CREDITS *.pdf *.txt *.html) +DOCSUBDIRS = $(wildcard html tex info examples src) -SO_SUFFIX = so.$(VERSION) +INSTALLED_DOCS_DIST = $(addprefix $(INSTALL_DOCDIR_DIST)/,$(DOCS)) +INSTALLED_DOCS_DEVEL = $(addprefix $(INSTALL_DOCDIR_DEVEL)/,$(DOCS)) + +SO_SUFFIX = so.$(shell echo $(VERSION) | cut -d- -f1) LIB_A = $(LIBDIR)/lib$(LIBNAME).a LIB_SO = $(LIBDIR)/lib$(LIBNAME).$(SO_SUFFIX) INSTALLED_LIB_SO = $(INSTALL_LIBDIR)/lib$(LIBNAME).$(SO_SUFFIX) +INSTALLED_LINKS_SO = $(shell echo $(INSTALLED_LIB_SO) | sed -e "s/\.so\..*$$/.so/" | grep -v $(INSTALLED_LIB_SO)) +LINKS_SO = $(shell echo $(LIB_SO) | sed -e "s/\.so\..*$$/.so/" | grep -v $(LIB_SO)) INSTALLED_LIB_A = $(INSTALL_LIBDIR)/lib$(LIBNAME).a INSTALLED_EXE = $(INSTALL_BINDIR)/$(EXE) diff --git a/make/doc.mk b/make/doc.mk index 7c9ca0f0..844d6d7c 100644 --- a/make/doc.mk +++ b/make/doc.mk @@ -7,7 +7,11 @@ include $(MODDIR)/make/defs.mk include $(MODDIR)/make/rules.mk all: +ifeq ($(shell pwd | xargs basename),devel) install: $(INSTALLED_DOCS_DEVEL) +else +install: $(INSTALLED_DOCS_DIST) +endif clean distclean: rm -rf *~ .*.swp diff --git a/make/mkspec.sh b/make/mkspec.sh index e400ffb9..5d1bfafe 100644 --- a/make/mkspec.sh +++ b/make/mkspec.sh @@ -37,15 +37,15 @@ shift if [ -z "$V" ]; then if [ -f $TOPDIR/VERSION ]; then - VERSION="`cat $TOPDIR/VERSION | cut -d. -f-3`" - RELEASE="`cat $TOPDIR/VERSION | cut -d. -f4-`" + VERSION="`cat $TOPDIR/VERSION | cut -d- -f1`" + RELEASE="`cat $TOPDIR/VERSION | cut -d- -f2-`" else VERSION=noversion RELEASE=norelease fi else - VERSION="`echo $V | cut -d. -f-3`" - RELEASE="`echo $V | cut -d. -f4-`" + VERSION="`echo $V | cut -d- -f1`" + RELEASE="`echo $V | cut -d- -f2-`" fi if [ -z "$NAME" ]; then @@ -61,12 +61,24 @@ echo "Group: System Environment/Libraries" [ -n "$SOURCE" ] && echo "Source: $SOURCE" echo "Vendor: Jannet IT Services, Berlin" echo "URL: http://www.jannet.de" +echo "BuildRoot: /var/tmp/%{name}-buildroot" echo "%define post /sbin/ldconfig" #echo "%define __spec_install_post /sbin/ldconfig" echo "" echo "%description" -echo "Tool collection containing various programming and networking tools and" -echo "a lightweight middleware suite." +echo "This is a library providing easy-to-use interfaces for:" +echo "" +echo "+ platform independent logging" +echo "+ platform independent locking" +echo "+ platform independent threads" +echo "+ platform independent profiling" +echo "+ a platform independent config file reader" +echo "+ shared memory" +echo "+ a lightweight middleware suite" +echo "" +echo "It was originally designed to be a versatile pool of" +echo "programming tools to be used in my projects as a freelancing" +echo "software developer." echo "" echo "%prep" #echo "echo hallo" @@ -93,14 +105,15 @@ echo "" #echo "%post /sbin/ldconfig" echo "" echo "%clean" -echo 'rm -rf $RPM_BUILD_ROOT/usr/' -echo 'rm -rf $RPM_BUILD_ROOT/opt/ytools/' +echo 'rm -rf $RPM_BUILD_ROOT' echo "" echo "%files" echo '%defattr (-, root, root)' -echo "%dir /opt/ytools/lib" -find /opt/ytools/lib -type f -echo "%dir /usr/share/doc/packages/ytools" -find /usr/share/doc/packages/ytools -type f +#echo "%dir /opt/ytools/lib" +echo "/opt/ytools/lib" +#find /opt/ytools/lib -type f +#echo "%dir /usr/share/doc/packages/ytools" +echo "/usr/share/doc/packages/ytools" +#find /usr/share/doc/packages/ytools -type f echo "" diff --git a/make/rpmdist.mk b/make/rpmdist.mk new file mode 100644 index 00000000..8b76ddec --- /dev/null +++ b/make/rpmdist.mk @@ -0,0 +1,82 @@ +include $(MODDIR)/make/defs.mk + +CLEAN = $(wildcard *.spec *.rpm *~ *.rpmrc) +DIST_SRC_DIR = dist/src/$(PROJECT_STEM) +DIST_PCKG_DIR = dist/pckg +PCKG_TAR = $(PROJECT_STEM).tar.gz +PCKG_RPM_I386 = $(PROJECT_STEM).i386.rpm +PCKG_RPM_SRC = $(PROJECT_STEM).src.rpm +BUILD_ROOT = /usr/src/packages/BUILD +RPMS_DIR = /usr/src/packages/RPMS/i386 +SRPMS_DIR = /usr/src/packages/SRPMS +TARGET_HOST = dspcd.jannet.de +TARGET_DIR_TAR = $(FTP_PUB_DIR_ABS)/$(PROJECT)/tar +TARGET_DIR_RPM_I386 = $(FTP_PUB_DIR_ABS)/$(PROJECT)/rpm/i386 +TARGET_DIR_RPM_SRC = $(FTP_PUB_DIR_ABS)/$(PROJECT)/rpm/src +TARGET_USER = jan +TARGET_GROUP = jannet +TARGET_FILE_MODE = 755 +TARGET_DIR_MODE = 755 +TARGET_DIR = $(TARGET_DIR_RPM)/$(PROJECT) +REMOTE_TARGETS = \ + $(TARGET_DIR_RPM_SRC)/$(PCKG_RPM_SRC) \ + $(TARGET_DIR_RPM_I386)/$(PCKG_RPM_I386) \ + $(TARGET_DIR_TAR)/$(PCKG_TAR) + +DIST_DIRS = $(DIST_SRC_DIR) $(DIST_PCKG_DIR) + +$(DIST_DIRS): + mkdir -p $@ + +clean.dist: + rm -rf $(DIST_SRC_DIR) $(DIST_FILE_TAR) + +cpmod.dist: clean.dist + for mod in $(REQUIRED); do \ + make -C $$mod distclean ;\ + mkdir -p $(DIST_SRC_DIR)/$$mod ;\ + tar -C $$mod \ + --exclude=dist \ + --exclude=pckg \ + --exclude=Debug \ + --exclude=CVS \ + --exclude=old \ + --exclude=v1.1 \ + --exclude='*.o' \ + --exclude='*~' \ + --exclude=xml-flat \ + -cf - . | tar -C $(DIST_SRC_DIR)/$$mod -xf - ;\ + done + +$(REMOTE_TARGETS): + make $(addprefix $(DIST_PCKG_DIR)/,$(notdir $@)) + $(UPLOAD_SH) $(addprefix $(DIST_PCKG_DIR)/,$(notdir $@)) $@ + +test: $(REMOTE_TARGETS) + +cpfiles.dist: clean.dist + cp Makefile $(DIST_SRC_DIR) + . make/mkspec.sh -V $(DIST_VERSION) -S $(notdir $(DIST_FILE_TAR)) -N $(PROJECT) > $(DIST_SRC_DIR)/$(PROJECT_STEM).spec + echo $(DIST_VERSION) > $(DIST_SRC_DIR)/VERSION + +$(DIST_FILE_TAR): $(DIST_SRC_DIR) $(DIST_PCKG_DIR) cpmod.dist cpfiles.dist + tar -czvf $@ -C $(dir $(DIST_SRC_DIR)) $(notdir $(DIST_SRC_DIR)) + +#$(PROJECT).rpmrc: Makefile +# echo "%define _topdir $(shell cd $(TODPIR); pwd)" > $@ + +$(DIST_FILES_RPM): $(DIST_FILE_TAR) + set -e; \ + su - -m -c "cd `pwd`; rpm -ta --clean $<" + cp $(RPMS_DIR)/$(notdir $@) $@ + +# --buildroot $(BUILD_ROOT) $<" +# --define _rpmdir$(PCKGDIR) \ +# --define _builddir$(shell pwd) + +build.dist: $(DIST_DIRS) cpmod.dist cpfiles.dist $(DIST_FILE_TAR) +rpm.dist: $(DIST_FILE_TAR) $(DIST_FILES_RPM) + +# -- install.dist +upload.dist: build.dist rpm.dist + /usr/bin/rsync -az -v --links -e /usr/bin/ssh $(DIST_FILES_RPM) $(TARGET_USER)@$(TARGET_HOST):$(TARGET_DIR_RPM) diff --git a/make/rules.mk b/make/rules.mk index 2b3fd106..8e37c4c2 100644 --- a/make/rules.mk +++ b/make/rules.mk @@ -74,6 +74,9 @@ $(INSTALL_HDRDIR) $(INSTALL_BINDIR) $(INSTALL_LIBDIR): $(INSTALLED_LIB_SO) $(INSTALLED_LIB_A): $(INSTALL_LIBDIR) +$(INSTALLED_LINKS_SO) $(LINKS_SO): + cd $(dir $@); ln -sf $(notdir $(shell echo $@ | sed -e 's/\.so$$\|\.so.*$$//').$(SO_SUFFIX)) $(notdir $@) + #$(INSTALL_BINDIR)/%.bin: %.bin # $(INSTALL) -o $(EXEOWNER) -g $(EXEGROUP) -m $(EXEMODE) $< $@ @@ -92,7 +95,10 @@ $(INSTALL_LIBDIR)/%.$(SO_SUFFIX): %.$(SO_SUFFIX) $(INSTALL_HDRDIR)/%.h: %.h install -o $(HDROWNER) -g $(HDRGROUP) -m $(HDRMODE) $< $@ - +$(INSTALL_DOCDIR_DIST)/% $(INSTALL_DOCDIR_DEVEL)/%: % + mkdir -p $(dir $@) + install -o $(HDROWNER) -g $(HDRGROUP) -m $(HDRMODE) $< $@ + checkroot: @if [ "$(CHECK_ROOT)" = true -o "$(CHECK_ROOT)" = TRUE ] ; then \ echo "Error: You can only do this if either" ;\