#!/bin/bash # # --- ROCK-COPYRIGHT-NOTE-BEGIN --- # # This copyright note is auto-generated by ./scripts/Create-CopyPatch. # Please add additional copyright information _after_ the line containing # the ROCK-COPYRIGHT-NOTE-END tag. Otherwise it might get removed by # the ./scripts/Create-CopyPatch script. Do not edit this copyright text! # # ROCK Linux: rock-src/scripts/Internal # ROCK Linux is Copyright (C) 1998 - 2006 Clifford Wolf # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. A copy of the GNU General Public # License can be found at Documentation/COPYING. # # Many people helped and are helping developing ROCK Linux. Please # have a look at https://www.rocklinux.org/ and the Documentation/TEAM # file for details. # # --- ROCK-COPYRIGHT-NOTE-END --- # # Internal contains functionality for maintaining ROCK Linux sources # and development. # # # Helper scripts for core developers # if [ "$1" = "svn-add-remove" ] ; then rm -f files_svn.txt files_local.txt for dir in \ architecture misc scripts \ Documentation package target do tmp1=`mktemp` tmp2=`mktemp` echo $dir > $tmp1 while ! cmp -s $tmp1 $tmp2 do cat $tmp1 > $tmp2 find $( cat $tmp2 ) -maxdepth 1 -type d | \ egrep -v '/(\.svn|CVS)$' 2> /dev/null | sort -u > $tmp1 done find $( cat $tmp2 ) -mindepth 1 -maxdepth 1 -type d -name .svn | \ while read dirname ; do grep ' name="' $dirname/entries | cut -f2 -d'"' | \ grep -v ^svn: | sed "s,^,${dirname%/*}/," done | grep "/" | sort >> files_svn.txt find $( cat $tmp2 ) -mindepth 1 -maxdepth 1 | \ egrep -v '/(\.svn|CVS)' | grep -v '/\.$' | \ sort >> files_local.txt rm -f $tmp1 $tmp2 done if [ "$DO_SVN_REVERT" = 1 ] then diff -u0 files_svn.txt files_local.txt | \ grep '^[+][A-Za-z]' | \ egrep -xv '\+Documentation/(FAQ|LSM)' | \ sed 's,^+,rm -vf ,' elif egrep -q '#|/\.|~' files_local.txt then echo '#' echo '# Found dangerous files which must not go to SVN:' echo '#' egrep '#|/\.|~' files_local.txt | sed 's,^,rm -vf ,' else diff -u0 files_svn.txt files_local.txt | \ grep '^[-+][A-Za-z]' | \ egrep -xv '\+Documentation/(FAQ|LSM)' | \ sed 's,^-,svn remove ,; s,^+,svn add ,' fi rm -f files_svn.txt files_local.txt elif [ "$1" = "svn-commit" ] ; then ./scripts/Internal svn-add-remove | tee svn_add_remove.sh if [ -s svn_add_remove.sh ] then echo "Run 'sh svn_add_remove.sh' to execute these commands." else rm -f svn_add_remove.sh svn commit fi elif [ "$1" = "svn-revert" ] ; then svn revert -R . DO_SVN_REVERT=1 ./scripts/Internal svn-add-remove | tee svn_revert.sh if [ -s svn_revert.sh ] then echo "Run 'sh svn_revert.sh' to execute these commands." else rm -f svn_revert.sh fi elif [ "$1" = "cvs-add-remove" ] ; then rm -f files_cvs.txt files_local.txt for dir in \ architecture misc scripts \ Documentation package target do find $dir/. -type d -name CVS | \ while read dirname ; do dirname=${dirname/\/./} ; echo ${dirname%/*} awk -F "/" '$1 == "" && $3 !~ /^-/ { print "'"${dirname%/*}"'/" $2; }' < $dirname/Entries done | grep "/" | sort >> files_cvs.txt find $dir/. | grep -v '/CVS' | grep -v '/\.$' | \ sed 's,/./,/,' | sort >> files_local.txt done if egrep -q '#|/\.|~' files_local.txt then echo '#' echo '# Found dangerous files which must not go to CVS:' echo '#' egrep '#|/\.|~' files_local.txt | sed 's,^,rm -vf ,' else diff -u0 files_cvs.txt files_local.txt | \ grep '^[-+][A-Za-z]' | \ egrep -xv '\+Documentation/(FAQ|LSM)' | \ sed 's,^-,cvs remove ,; s,^+,cvs add ,' fi rm -f files_cvs.txt files_local.txt elif [ "$1" = "cvs-commit" ] ; then ./scripts/Internal cvs-add-remove | tee cvs_add_remove.sh if [ -s cvs_add_remove.sh ] then echo "Run 'sh cvs_add_remove.sh' to execute these commands." else rm -f cvs_add_remove.sh cvs commit fi elif [ "$1" = "cvs-update" ] ; then cvs -q update -d -P elif [ "$1" = "cvs-setroot" -a -n "$2" -a -n "$3" ] ; then find ./CVS ./architecture ./misc ./scripts ./target ./Documentation \ ./package -name Root | grep '/CVS/Root$' | while read fn do fn="${fn%/CVS/Root}"; fn="${fn#./}" echo "Writing $fn/CVS/{Root,Repository}.." echo "$2" > $fn/CVS/Root echo "$3/$fn" > $fn/CVS/Repository done elif [ "$1" = "ftp-cleanup" ] ; then echo "Writing to cleanups.sh ..." lastsnap=`mktemp`; echo -n > cleanups.sh wget -nv -O $lastsnap https://www.rocklinux.org/sources/download/INDEX while read filename; do if ! egrep -q " ${filename//bz2/(gz|bz2)} " $lastsnap; then echo "rm -vf $filename" >> cleanups.sh echo "rm -vf $filename" fi done < <( ./scripts/Download -list-unknown | cut -f3 -d' ' ) rm -f $lastsnap else cat << "EOT" This is an internal Script. It is only used by the core developers. ./scripts/Internal {mode} Where the following modes are availalbe: svn-add-remove .... print suggested 'svn add' and 'svn remove' calls svn-commit ........ make a svn-add-remove and and automatically run a 'svn commit' if svn-add-remove doesn't find anything to add or remove. svn-revert ........ run a 'svn revert' and then remove all files which are not known to svn. Useful before doing an 'svn up' to ver version containing a patch which is applied in the working directory. cvs-add-remove .... print suggested 'cvs add' and 'cvs remove' calls cvs-commit ........ make a cvs-add-remove and and automatically run a 'cvs commit' if cvs-add-remove doesn't find anything to add or remove. cvs-update ........ run 'cvs update -d -P' cvs-setroot x y ... write 'x' to all CVS/Root files and 'y' to all CVS/Repository files. ftp-cleanup ....... remove old files on ftp master EOT fi