diff --git a/make/dav.mk b/make/dav.mk index 40104cd0..896dbfa4 100644 --- a/make/dav.mk +++ b/make/dav.mk @@ -6,7 +6,7 @@ DAV_SERVER ?= cvs.jannet.de DAV_RSYNC_SERVER ?= $(DAV_SERVER) DAV_RSYNC_DIR ?= /srv/dav/pub/groups/$(DAV_GROUP)/$(DAV_GROUP_PROJECT) DAV_RSYNC_URL = $(DAV_RSYNC_SERVER):$(DAV_RSYNC_DIR) -DAV_RSYNC_EXCLUDE ?= $(shell bash $(MOD_SCRIPT_DIR)/list-vcs-files.sh) +DAV_RSYNC_EXCLUDE ?= $(shell bash $(MOD_SCRIPT_DIR)/scm.sh ls-files) DAV_RSYNC_EXCLUDE_OPTS = $(addprefix --exclude , $(DAV_RSYNC_EXCLUDE) '*.done') DAV_RSYNC_EXTRA_OPTS ?= DAV_RSYNC ?= rsync $(DAV_RSYNC_EXCLUDE_OPTS) diff --git a/make/defs.mk b/make/defs.mk index 479e7e1f..b76ea9f7 100644 --- a/make/defs.mk +++ b/make/defs.mk @@ -749,7 +749,7 @@ define install_local_cfg endef define cvs_files - sh $(MOD_SCRIPT_DIR)/list-vcs-files.sh -f + sh $(MOD_SCRIPT_DIR)/scm.sh ls-files -f endef define add_flavour_prefix diff --git a/make/projects-dir.mk b/make/projects-dir.mk index 158c8057..371bf0b3 100644 --- a/make/projects-dir.mk +++ b/make/projects-dir.mk @@ -102,7 +102,7 @@ PGIT_SH = /bin/bash $(MOD_SCRIPT_DIR)/pgit.sh PURGE_SH = /bin/bash $(firstword $(wildcard $(MOD_SCRIPT_DIR)/purge-stale-projects.sh /opt/jw-build/bin/purge-stale-projects.sh) purge-not-found) PKG_MANAGER_SH ?= /bin/bash $(firstword $(wildcard $(MOD_SCRIPT_DIR)/pkg-manager.sh /opt/jw-build/bin/pkg-manager.sh) pkg-manager-not-found) CREATE_PROJECT_SH ?= /bin/bash $(firstword $(wildcard $(MOD_SCRIPT_DIR)/jw-build-create-project.sh /opt/jw-build/bin/jw-build-create-project.sh) jw-build-create-project-not-found) -LIST_VCS_FILES_SH = /bin/bash $(firstword $(wildcard $(MOD_SCRIPT_DIR)/list-vcs-files.sh /opt/jw-build/bin/list-vcs-files.sh) list-vcs-files-not-found) +LIST_VCS_FILES_SH = /bin/bash $(firstword $(wildcard $(MOD_SCRIPT_DIR)/scm.sh ls-files /opt/jw-build/bin/scm.sh ls-files) list-vcs-files-not-found) JW_PKG = /bin/bash $(firstword $(wildcard $(MOD_SCRIPT_DIR)/jw-pkg /opt/jw-build/bin/jw-pkg) jw-pkg-not-found) GIT_SRV_ADMIN_SH = JW_BUILD_SSH_EXTRA_OPTS="$(JW_BUILD_SSH_EXTRA_OPTS)" $(GIT_SSH) $(JANWARE_USER)@git.janware.com /opt/jw-build/bin/git-srv-admin.sh CVS_ADMIN_SH = JW_BUILD_SSH_EXTRA_OPTS="$(JW_BUILD_SSH_EXTRA_OPTS)" $(GIT_SSH) $(JANWARE_USER)@git.janware.com /opt/jw-build/bin/cvs-admin.sh @@ -172,7 +172,7 @@ clean: clean.text-files-cache clean.text-files-cache: rm -f $(TEXT_FILES_CACHE) list-files: - @echo Makefile + @realpath Makefile @for p in $(PROJECTS); do \ $(LIST_VCS_FILES_SH) -znf $$p | sed -z "s/^/$$p\//" | \ xargs -0 realpath ;\ diff --git a/make/rpmdist.mk b/make/rpmdist.mk index 37150921..998fbc47 100644 --- a/make/rpmdist.mk +++ b/make/rpmdist.mk @@ -276,7 +276,7 @@ define increase_build_number echo -n "+ increasing build number to " ;\ echo $(MAJOR_MINOR_RELEASE)-$(shell expr $(BUILD_NUMBER) + 1)-dev | tee VERSION ;\ echo $(HASH) > HASH ;\ - if ! /bin/bash $(MOD_SCRIPT_DIR)/list-vcs-files.sh | grep -q '^HASH$$'; then \ + if ! /bin/bash $(MOD_SCRIPT_DIR)/scm.sh ls-files | grep -q '^HASH$$'; then \ $(SCM_ADD) HASH ;\ fi ;\ $(SCM_COMMIT) -m "$(MAJOR_MINOR_RELEASE)-$(shell expr $(BUILD_NUMBER) + 1)-dev" HASH VERSION diff --git a/make/rules.mk b/make/rules.mk index c4ecfee2..1a4ebb87 100644 --- a/make/rules.mk +++ b/make/rules.mk @@ -406,7 +406,7 @@ $(INSTALLED_PROFILE_PATH_SCRIPT): $(TOPDIR)/profiledir.done $(INSTALL) -p -o $(PROFILEOWNER) -g $(PROFILEGROUP) -m $(PROFILEMODE) path_script.sh $@ find: - @bash $(MOD_SCRIPT_DIR)/list-vcs-files.sh + @bash $(MOD_SCRIPT_DIR)/scm.sh ls-files collect: bash $(MOD_SCRIPT_DIR)/collect-installed-pkg-changes.sh -t $(TOPDIR) diff --git a/make/topdir.mk b/make/topdir.mk index 3516f833..f0b1e028 100644 --- a/make/topdir.mk +++ b/make/topdir.mk @@ -10,7 +10,7 @@ SUBDIRS ?= $(wildcard inst/pre make scripts contrib src libsrc \ images htdocs tmpl doc test inst/post) PROJECT_DESCR = $(TOPDIR)/make/project.conf GIT_DESCR = $(TOPDIR)/.git/description -LIST_VCS_FILES = /bin/bash $(MOD_SCRIPT_DIR)/list-vcs-files.sh +LIST_VCS_FILES = /bin/bash $(MOD_SCRIPT_DIR)/scm.sh ls-files OPT_JANWARE_PROJECT ?= -j diff --git a/scripts/list-vcs-files.sh b/scripts/list-vcs-files.sh deleted file mode 100644 index 67b27d41..00000000 --- a/scripts/list-vcs-files.sh +++ /dev/null @@ -1,97 +0,0 @@ -#!/bin/sh - -export LANG=POSIX - -filter_deleted() -{ - local rc_file="$1" - shift - local cand - for cand in "$@"; do - grep -q "^R ./$cand/" $rc_file && continue - echo $cand - done -} - -output() -{ - if [ "$zero_terminate" = 1 ]; then - echo -en "$*\x00" - else - echo "$*" - fi -} - -list_dirents_cvs() -{ - local dirs=`sed '/^D\// !d; s%^D/%%; s%/.*%%' $1/CVS/Entries` - dirs="`filter_deleted $1/CVS/Entries $dirs`" - local cands - if [ -f $1/CVS/Entries.Log ]; then - cands="`sed '/^A D\// !d; s%^A D/%%; s%/.*%%' $1/CVS/Entries.Log`" - dirs="$dirs `filter_deleted $1/CVS/Entries.Log $cands`" - fi - local files=`sed '/^\// !d; s%/%%; s%/.*%%; s%^%%' $1/CVS/Entries` - files="`filter_deleted $1/CVS/Entries $files`" - local d f - for f in $files; do - output "$1/$f" - done - for d in $dirs; do - [ "$opt_only_regular_files" = 1 ] || output $1/$d - list_dirents_cvs $1/$d - done -} - -list_dirents_git() -{ - local opts="$git_ls_files_opts" - [ "$opt_no_submodules" = 1 ] || opts="$opts --recurse-submodules" - git ls-files $opts $1 -} - -list_dirents() -{ - if [ -d $1/CVS ]; then - list_dirents_cvs $1 - return - fi - git status >/dev/null 2>&1 || { - echo "failed to list versioned files in $1: no VCS" >&2 - exit 1 - } - list_dirents_git $1 -} - -set -- `getopt fnzt "$@"` - -while [ "$1" != -- ]; do -case $1 in --f) - opt_only_regular_files=1 - ;; --n) - opt_no_submodules=1 - ;; --z) - zero_terminate=1 - git_ls_files_opts="$git_ls_files_opts -z" - opt_sort="$opt_sort -z" - ;; --t) - text_files=1 - ;; -esac -shift -done -shift - -proj_dir="$1" -[ "$proj_dir" ] && cd $proj_dir - -if [ "$text_files" ]; then - list_dirents . | sort $opt_sort | xargs file -N | grep ":.*text" | cut -d: -f1 -else - list_dirents . | sort $opt_sort -fi - diff --git a/scripts/pkg.sh b/scripts/pkg.sh index 5b17f792..01219310 100644 --- a/scripts/pkg.sh +++ b/scripts/pkg.sh @@ -90,7 +90,7 @@ scm_files() { ( cd $TOPDIR - /bin/bash $MOD_SCRIPT_DIR/list-vcs-files.sh -f $@ + /bin/bash $MOD_SCRIPT_DIR/scm.sh ls-files -f $@ ) } diff --git a/scripts/scm.sh b/scripts/scm.sh index 1b965358..49698a8d 100644 --- a/scripts/scm.sh +++ b/scripts/scm.sh @@ -63,9 +63,106 @@ cmd_clean() esac } +cmd_ls_files() +{ + filter_deleted() + { + local rc_file="$1" + shift + local cand + for cand in "$@"; do + grep -q "^R ./$cand/" $rc_file && continue + echo $cand + done + } + + output() + { + if [ "$zero_terminate" = 1 ]; then + echo -en "$*\x00" + else + echo "$*" + fi + } + + list_dirents_cvs() + { + local dirs=`sed '/^D\// !d; s%^D/%%; s%/.*%%' $1/CVS/Entries` + dirs="`filter_deleted $1/CVS/Entries $dirs`" + local cands + if [ -f $1/CVS/Entries.Log ]; then + cands="`sed '/^A D\// !d; s%^A D/%%; s%/.*%%' $1/CVS/Entries.Log`" + dirs="$dirs `filter_deleted $1/CVS/Entries.Log $cands`" + fi + local files=`sed '/^\// !d; s%/%%; s%/.*%%; s%^%%' $1/CVS/Entries` + files="`filter_deleted $1/CVS/Entries $files`" + local d f + for f in $files; do + output "$1/$f" + done + for d in $dirs; do + [ "$opt_only_regular_files" = 1 ] || output $1/$d + list_dirents_cvs $1/$d + done + } + + list_dirents_git() + { + local opts="$git_ls_files_opts" + [ "$opt_no_submodules" = 1 ] || opts="$opts --recurse-submodules" + git ls-files $opts $1 + } + + list_dirents() + { + if [ -d $1/CVS ]; then + list_dirents_cvs $1 + return + fi + git status >/dev/null 2>&1 || { + echo "failed to list versioned files in $1: no VCS" >&2 + exit 1 + } + list_dirents_git $1 + } + + set -- `getopt fnzt "$@"` + + while [ "$1" != -- ]; do + case $1 in + -f) + opt_only_regular_files=1 + ;; + -n) + opt_no_submodules=1 + ;; + -z) + zero_terminate=1 + git_ls_files_opts="$git_ls_files_opts -z" + opt_sort="$opt_sort -z" + ;; + -t) + text_files=1 + ;; + esac + shift + done + shift + + proj_dir="$1" + [ "$proj_dir" ] && cd $proj_dir + + if [ "$text_files" ]; then + list_dirents . | sort $opt_sort | xargs file -N | grep ":.*text" | cut -d: -f1 + else + list_dirents . | sort $opt_sort + fi +} + # ------- here we go +export LANG=POSIX myname=`basename $0` -cmd=cmd_$1 +cmd=cmd_${1//-/_} shift if [ -d "CVS" ]; then scm=cvs @@ -74,4 +171,3 @@ else fi $cmd "$@" -