diff options
Diffstat (limited to 'admin/cvs.sh')
-rw-r--r-- | admin/cvs.sh | 499 |
1 files changed, 499 insertions, 0 deletions
diff --git a/admin/cvs.sh b/admin/cvs.sh new file mode 100644 index 0000000..99569f4 --- /dev/null +++ b/admin/cvs.sh @@ -0,0 +1,499 @@ +#! /bin/sh +# +# cvs.sh +# +# This file contains support code from Makefile.common +# It defines a shell function for each known target +# and then does a case to call the correct function. + +call_and_fix_autoconf() +{ + $AUTOCONF || exit 1 + if test -r configure.in.in ; then + perl -pi -e "print \"if test \\\"x\\\$with_fast_perl\\\" = \\\"xyes\\\"; then\ + \\n perl -i.bak \\\$ac_aux_dir/conf.change.pl \\\$CONFIG_STATUS\ + \\\\\\n || mv \\\$CONFIG_STATUS.bak \\\$CONFIG_STATUS\ + \\n rm -f \\\$CONFIG_STATUS.bak\\nfi\ + \\n\" if /^\\s*chmod\\s+.*\\+x\\s+.*CONFIG_STATUS/;" configure + fi +} + +strip_makefile() +{ + if test -f $makefile_wo; then :; else + perl -e '$in=0; while ( <> ) { $in = 1 if ($_=~ m/^if /); print $_ unless ($in); $in = 0 if ($_ =~ m/^endif/); }' < Makefile.am.in > $makefile_wo + fi +} + +check_autotool_versions() +{ +AUTOCONF_VERSION=`$AUTOCONF --version | head -1` +case $AUTOCONF_VERSION in + Autoconf*2.5* | autoconf*2.5* ) : ;; + "" ) + echo "*** AUTOCONF NOT FOUND!." + echo "*** KDE requires autoconf 2.52, 2.53 or 2.54" + exit 1 + ;; + * ) + echo "*** YOU'RE USING $AUTOCONF_VERSION." + echo "*** KDE requires autoconf 2.52, 2.53 or 2.54" + exit 1 + ;; +esac + +AUTOHEADER_VERSION=`$AUTOHEADER --version | head -1` +case $AUTOHEADER_VERSION in + Autoconf*2.5* | autoheader*2.5* ) : ;; + "" ) + echo "*** AUTOHEADER NOT FOUND!." + echo "*** KDE requires autoheader 2.52 or 2.53 (part of autoconf)" + exit 1 + ;; + * ) + echo "*** YOU'RE USING $AUTOHEADER_VERSION." + echo "*** KDE requires autoheader 2.52 or 2.53 (part of autoconf)" + exit 1 + ;; +esac + +AUTOMAKE_STRING=`$AUTOMAKE --version | head -1` +case $AUTOMAKE_STRING in + automake*1.5d* ) + echo "*** YOU'RE USING $AUTOMAKE_STRING." + echo "*** KDE requires automake 1.5" + exit 1 + ;; + automake*1.5* | automake*1.5-* | automake*1.6.* | automake*1.7* ) : ;; + "" ) + echo "*** AUTOMAKE NOT FOUND!." + echo "*** KDE requires automake 1.5" + exit 1 + ;; + unsermake* ) : + echo "*** YOU'RE USING UNSERMAKE." + echo "*** GOOD LUCK!! :)" + ;; + * ) + echo "*** YOU'RE USING $AUTOMAKE_STRING." + echo "*** KDE requires automake 1.5" + exit 1 + ;; +esac +} + +cvs() +{ +check_autotool_versions + +### Produce acinclude.m4 +if grep '\$(top_srcdir)/acinclude.m4:' $makefile_am >/dev/null; then + echo "*** Creating acinclude.m4" + rm -f acinclude.m4 configure.files + + strip_makefile + $MAKE -f $makefile_wo top_srcdir=. ./acinclude.m4 +fi + +### Make new subdirs and configure.in. +### The make calls could be optimized away here, +### with a little thought. +if test -r configure.in.in; then + rm -f subdirs configure.in + echo "*** Creating list of subdirectories" + subdirs + echo "*** Creating configure.in" + configure_files + strip_makefile + $MAKE -f $makefile_wo top_srcdir=. ./configure.in || exit 1 +fi + +echo "*** Creating aclocal.m4" +$ACLOCAL || exit 1 +echo "*** Creating configure" +call_and_fix_autoconf + +if egrep "^AM_CONFIG_HEADER" configure.in >/dev/null 2>&1; then + echo "*** Creating config.h template" + $AUTOHEADER || exit 1 +fi + +echo "*** Creating Makefile templates" +$AUTOMAKE || exit 1 +if test -z "$UNSERMAKE"; then + echo "*** Postprocessing Makefile templates" + perl -w admin/am_edit || exit 1 +fi + +if egrep "^cvs-local:" $makefile_am >/dev/null; then \ + strip_makefile + $MAKE -f $makefile_wo cvs-local top_srcdir=. || exit 1 +fi + +echo "*** Creating date/time stamp" +touch stamp-h.in + +echo "*** Finished" +echo " Don't forget to run ./configure" +echo " If you haven't done so in a while, run ./configure --help" +} + +dist() +{ +check_autotool_versions + +### +### First build all of the files necessary to do just "make" +### +if grep '\$(top_srcdir)/acinclude.m4:' $makefile_am >/dev/null; then + strip_makefile + $MAKE -f $makefile_wo top_srcdir=. ./acinclude.m4 +fi +if test -r configure.in.in; then + subdirs + configure_files + strip_makefile + $MAKE -f $makefile_wo top_srcdir=. ./configure.in +fi +$ACLOCAL +$AUTOHEADER +$AUTOMAKE --foreign --include-deps +perl -w admin/am_edit +call_and_fix_autoconf +touch stamp-h.in +if grep "^cvs-local:" $makefile_am >/dev/null; then + strip_makefile + $MAKE -f $makefile_wo cvs-local top_srcdir=. +fi + +### +### Then make messages +### +if test -d po; then + LIST=`find ./po -name "*.po"` + for i in $LIST; do + file2=`echo $i | sed -e "s#\.po#\.gmo#"` + msgfmt -o $file2 $i || touch $file2 + done +fi +if grep "^cvs-dist-local:" $makefile_am >/dev/null; then + strip_makefile + $MAKE -f $makefile_wo cvs-dist-local top_srcdir=. +fi +} + +subdir_dist() +{ +$ACLOCAL +$AUTOHEADER +$AUTOMAKE --foreign --include-deps +perl -w ../admin/am_edit +call_and_fix_autoconf +} + +configure_in() +{ +rm -f configure.in configure.in.new +kde_use_qt_param= +test -f configure.files || { echo "need configure.files for configure.in"; exit 1; } +cat `egrep -v "configure.in.bot" < configure.files` > configure.in.new +echo "KDE_CREATE_SUBDIRSLIST" >> configure.in.new +if test -f Makefile.am.in; then + subdirs=`cat subdirs` + for dir in $subdirs; do + dir=`echo $dir | sed -e "s,[-+.],_,g"` + echo "AM_CONDITIONAL($dir""_SUBDIR_included, test \"x\$$dir""_SUBDIR_included\" = xyes)" >> configure.in.new + done +fi +# echo "AC_OUTPUT( \\" >> configure.in.new +mfs=`find . -type d -print | fgrep -v "/." | \ + sed -e "s#\./##" -e "/^debian/d" | sort` +for i in $mfs; do + topleveldir=`echo $i| sed -e "s#/.*##"` + if test -f $topleveldir/configure.in; then + continue + fi + if test -f $i/Makefile.am; then :; else + continue + fi + if test -s inst-apps; then + if grep "\"^$topleveldir\"" inst-apps > /dev/null 2>&1; then + continue + fi + fi + if test "$i" = "."; then + echo "AC_CONFIG_FILES([ Makefile ])" >> configure.in.new + else + echo "AC_CONFIG_FILES([ $i/Makefile ])" >> configure.in.new + fi + if test -n "$UNSERMAKE"; then + if test "$i" = "."; then + echo "AC_CONFIG_FILES([ Makefile.rules ])" >> configure.in.new + else + echo "AC_CONFIG_FILES([ $i/Makefile.rules ])" >> configure.in.new + fi + fi +done + +files=`cat configure.files` +list=`egrep '^dnl AC_OUTPUT\(.*\)' $files | sed -e "s#^.*dnl AC_OUTPUT(\(.*\))#\1#"` +for file in $list; do + echo "AC_CONFIG_FILES([ $file ])" >> configure.in.new +done + +if test -n "$UNSERMAKE"; then + echo "AC_CONFIG_FILES([ MakeVars ])" >> configure.in.new +fi +echo "AC_OUTPUT" >> configure.in.new +modulename= +if test -f configure.in.in; then + if head -2 configure.in.in | egrep "^#MIN_CONFIG\(.*\)$" > /dev/null; then + kde_use_qt_param=`cat configure.in.in | sed -n -e "s/#MIN_CONFIG(\(.*\))/\1/p"` + fi + if head -2 configure.in.in | egrep "^#MIN_CONFIG" > /dev/null; then + line=`grep "^AM_INIT_AUTOMAKE(" configure.in.in` + if test -n "$line"; then + modulename=`echo $line | sed -e "s#AM_INIT_AUTOMAKE(\([^,]*\),.*#\1#"` + VERSION=`echo $line | sed -e "s#AM_INIT_AUTOMAKE([^,]*, *\([^)]*\)).*#\1#"` + fi + sed -e "s#AM_INIT_AUTOMAKE([^@].*#dnl PACKAGE set before#" \ + configure.in.new > configure.in && mv configure.in configure.in.new + fi +fi +if test -z "$VERSION" || test "$VERSION" = "@VERSION@"; then + VERSION="\"3.1.1\"" +fi +if test -z "$modulename" || test "$modulename" = "@MODULENAME@"; then + modulename=`pwd`; + modulename=`basename $modulename` + esc_VERSION=`echo $VERSION | sed -e "s#[^.0-9a-zA-Z]##g"` + modulename=`echo $modulename | sed -e "s#-$esc_VERSION##"` + +fi +if test -n "$kde_use_qt_param"; then + sed -e "s#^dnl KDE_USE_QT#KDE_USE_QT($kde_use_qt_param)#" \ + configure.in.new > configure.in && mv configure.in configure.in.new +fi +sed -e "s#@MODULENAME@#$modulename#" configure.in.new | + sed -e "s#@VERSION@#$VERSION#" > configure.in +botfiles=`cat configure.files | egrep "configure.in.bot"` +test -n "$botfiles" && cat $botfiles >> configure.in +cat $admindir/configure.in.bot.end >> configure.in +rm -f configure.in.new +} + +configure_files() +{ +admindir=NO +for i in . .. ../.. ../../..; do + if test -x $i/admin; then admindir=$i/admin; break; fi +done +rm -f configure.files +touch configure.files +if test -f configure.in.in && head -2 configure.in.in | grep "^#MIN_CONFIG" > /dev/null; then + echo $admindir/configure.in.min >> configure.files +fi +test -f configure.in.in && echo configure.in.in >> configure.files +list=`find . -name "configure.in.in" -o -name "configure.in.bot" | sort` +for i in $list; do if test -f $i && test `dirname $i` != "." ; then + echo $i >> configure.files +fi; done +test -f configure.in.mid && echo configure.in.mid >> configure.files +test -f configure.in.bot && echo configure.in.bot >> configure.files +} + +subdirs() +{ +dirs= +compilefirst=`sed -ne 's#^COMPILE_FIRST[ ]*=[ ]*##p' $makefile_am | head -1` +compilelast=`sed -ne 's#^COMPILE_LAST[ ]*=[ ]*##p' $makefile_am | head -1` +for i in `ls -1`; do + if test -f $i/Makefile.am; then + case " $compilefirst $compilelast " in + *" $i "*) ;; + *) dirs="$dirs $i" + esac + fi +done + +: > ./_SUBDIRS + +for d in $compilefirst; do + echo $d >> ./_SUBDIRS +done + +(for d in $dirs; do + list=`sed -ne "s#^COMPILE_BEFORE_$d""[ ]*=[ ]*##p" $makefile_am | head -1` + for s in $list; do + echo $s $d + done + list=`sed -ne "s#^COMPILE_AFTER_$d""[ ]*=[ ]*##p" $makefile_am | head -1` + for s in $list; do + echo $d $s + done + echo $d $d +done ) | tsort >> ./_SUBDIRS + +for d in $compilelast; do + echo $d >> ./_SUBDIRS +done + +if test -f Makefile.am.in; then + cp Makefile.am.in Makefile.am + if test -n "$UNSERMAKE"; then + topsubdirs= + for i in $compilefirst $dirs $compilelast; do + vari=`echo $i | sed -e "s,[-+],_,g"` + echo "if $vari""_SUBDIR_included" >> Makefile.am + echo "$vari""_SUBDIR=$i" >> Makefile.am + echo "endif" >> Makefile.am + topsubdirs="$topsubdirs \$($vari""_SUBDIR)" + done + echo "SUBDIRS=$topsubdirs" >> Makefile.am + else + echo "SUBDIRS="'$(TOPSUBDIRS)' >> Makefile.am + fi +fi +if test -r subdirs && diff subdirs _SUBDIRS > /dev/null; then + rm -f _SUBDIRS +fi +test -r _SUBDIRS && mv _SUBDIRS subdirs || true +} + +cvs_clean() +{ +if test -d CVS; then :; else + echo "You don't have a toplevel CVS directory." + echo "You most certainly didn't use cvs to get these sources." + echo "But this function depends on cvs's information." + exit 1 +fi +perl $admindir/cvs-clean.pl +} + +package_merge() +{ +catalogs=$POFILES +for cat in $catalogs; do + msgmerge -o $cat.new $cat $PACKAGE.pot + if test -s $cat.new; then + grep -v "\"POT-Creation" $cat.new > $cat.new.2 + grep -v "\"POT-Creation" $cat >> $cat.new.1 + if diff $cat.new.1 $cat.new.2; then + rm $cat.new + else + mv $cat.new $cat + fi + rm -f $cat.new.1 $cat.new.2 + fi +done +} + +package_messages() +{ +rm -rf po.backup +mkdir po.backup + +for i in `ls -1 po/*.pot 2>/dev/null | sed -e "s#po/##"`; do + egrep -v '^#([^:]|$)' po/$i | egrep '^.*[^ ]+.*$' | grep -v "\"POT-Creation" > po.backup/$i + cp po/$i po.backup/backup_$i + touch -r po/$i po.backup/backup_$i + rm po/$i +done + +podir=${podir:-$PWD/po} +files=`find . -name Makefile.am | xargs egrep -l '^messages:' ` +dirs=`for i in $files; do echo \`dirname $i\`; done` +tmpname="$PWD/messages.log" +if test -z "$EXTRACTRC"; then EXTRACTRC=extractrc ; fi +if test -z "$PREPARETIPS"; then PREPARETIPS=preparetips ; fi +export EXTRACTRC PREPARETIPS + +for subdir in $dirs; do + test -z "$VERBOSE" || echo "Making messages in $subdir" + (cd $subdir + if test -n "`grep -e '^messages:.*rc.cpp' Makefile.am`"; then + $EXTRACTRC *.rc *.ui > rc.cpp + else + candidates=`ls -1 *.rc *.ui 2>/dev/null` + if test -n "$candidates"; then + echo "$subdir has *.rc or *.ui files, but not correct messages line" + fi + fi + if test -n "`grep -r KAboutData *.c* *.C* 2>/dev/null`"; then + echo -e 'i18n("_: NAME OF TRANSLATORS\\n"\n"Your names")\ni18n("_: EMAIL OF TRANSLATORS\\n"\n"Your emails")' > _translatorinfo.cpp + else echo " " > _translatorinfo.cpp + fi + perl -e '$mes=0; while (<STDIN>) { next if (/^(if|else|endif)\s/); if (/^messages:/) { $mes=1; print $_; next; } if ($mes) { if (/$\\(XGETTEXT\)/ && / -o/) { s/ -o \$\(podir\)/ _translatorinfo.cpp -o \$\(podir\)/ } print $_; } else { print $_; } }' < Makefile.am | egrep -v '^include ' > _transMakefile + + $MAKE -s -f _transMakefile podir=$podir EXTRACTRC="$EXTRACTRC" PREPARETIPS="$PREPARETIPS" \ + XGETTEXT="${XGETTEXT:-xgettext} -C -ki18n -ktr2i18n -kI18N_NOOP -ktranslate -kaliasLocale -x ${includedir:-$KDEDIR/include}/kde.pot" \ + messages + ) 2>&1 | grep -v '^make\[1\]' > $tmpname + test -s $tmpname && { echo $subdir ; cat "$tmpname"; } + test -f $subdir/rc.cpp && rm -f $subdir/rc.cpp + rm -f $subdir/_translatorinfo.cpp + rm -f $subdir/_transMakefile +done +rm -f $tmpname +for i in `ls -1 po.backup/*.pot 2>/dev/null | sed -e "s#po.backup/##" | egrep -v '^backup_'`; do + test -f po/$i || echo "disappeared: $i" +done +for i in `ls -1 po/*.pot 2>/dev/null | sed -e "s#po/##"`; do + msgmerge -q -o po/$i po/$i po/$i + egrep -v '^#([^:]|$)' po/$i | egrep '^.*[^ ]+.*$' | grep -v "\"POT-Creation" > temp.pot + if test -f po.backup/$i && test -n "`diff temp.pot po.backup/$i`"; then + echo "will update $i" + msgmerge -q po.backup/backup_$i po/$i > temp.pot + mv temp.pot po/$i + else + if test -f po.backup/backup_$i; then + test -z "$VERBOSE" || echo "I'm restoring $i" + mv po.backup/backup_$i po/$i + rm po.backup/$i + else + echo "will add $i" + fi + fi +done +rm -f temp.pot +rm -rf po.backup +} + +admindir=`echo "$0" | sed 's%[\\/][^\\/][^\\/]*$%%'` +test "x$admindir" = "x$0" && admindir=. + +test "x$MAKE" = x && MAKE=make +makefile_am=Makefile.am +makefile_wo=Makefile.am +if test -f Makefile.am.in; then + makefile_am=Makefile.am.in + makefile_wo=Makefile.am.in.wo +fi + +# Suck in the AUTOCONF detection code +. $admindir/detect-autoconf.sh + +### +### Main +### + +arg=`echo $1 | tr '\-.' __` +case $arg in + cvs | dist | subdir_dist | configure_in | configure_files | subdirs | \ + cvs_clean | package_merge | package_messages ) $arg ;; + * ) echo "Usage: cvs.sh <target>" + echo "Target can be one of:" + echo " cvs cvs-clean dist" + echo " configure.in configure.files" + echo " package-merge package-messages" + echo "" + echo "Usage: anything but $1" + exit 1 ;; +esac + +if test -f Makefile.am.in.wo; then + rm Makefile.am.in.wo +fi + +exit 0 |