Lars Vogdt 2011-09-19 16:06:24 +00:00 committed by Git OBS Bridge
commit 1f52eb1137
6 changed files with 376 additions and 312 deletions

View File

@ -12,16 +12,15 @@ set -o errexit
source ${0%create-tlst-step2-create-gnome_gtp.sh}upstream-collect.conf source ${0%create-tlst-step2-create-gnome_gtp.sh}upstream-collect.conf
rm -f create-tlst-temp-osc-projects.lst
for REPOSITORY in ${OSC_REPOSITORIES[@]} ; do for REPOSITORY in ${OSC_REPOSITORIES[@]} ; do
osc ${OSC_APIURL:+--apiurl=$OSC_APIURL} list $REPOSITORY >create-tlst-temp-osc-projects.lst osc ${OSC_APIURL:+--apiurl=$OSC_APIURL} list $REPOSITORY
done done | sort -u >create-tlst-temp-osc-projects.lst
# branches tried for all apps: # branches tried for all apps:
KNOWN_BRANCHES="gnome-2-32" KNOWN_BRANCHES="gnome-3-0"
# branches tried apps with the same name base: # branches tried apps with the same name base:
# Do not forget hardcoded strings in the code below! # Do not forget hardcoded strings in the code below!
APP_BRANCHES="|gimp-2-6" APP_BRANCHES="|gimp-2-6|gtk-3-0|glib-2-28"
# FIXME: support for libgda:release-3-0-branch gnome-background:gnome-2-22 # FIXME: support for libgda:release-3-0-branch gnome-background:gnome-2-22
echo "# This file was generated $(LANG=C LC_ALL=C date) by create-tlst-step2-create-gnome_gtp.sh." >upstream-gnome_gtp.tlst echo "# This file was generated $(LANG=C LC_ALL=C date) by create-tlst-step2-create-gnome_gtp.sh." >upstream-gnome_gtp.tlst

View File

@ -1,6 +1,5 @@
# package domain method repository dir branch # package domain method repository dir branch
# PAM CVS is currently broken: pam Linux-PAM cvs pam.cvs.sourceforge.net:/cvsroot/pam Linux-PAM/po
#pam Linux-PAM cvs pam.cvs.sourceforge.net:/cvsroot/pam Linux-PAM/po
# No update available yet: # No update available yet:
#pidgin pidgin tbz http://downloads.sourceforge.net/pidgin/pidgin-2.7.10.tar.bz2 pidgin-2.7.10/po #pidgin pidgin tbz http://downloads.sourceforge.net/pidgin/pidgin-2.7.11.tar.bz2 pidgin-2.7.11/po
gtkspell gtkspell tgz http://downloads.sourceforge.net/gtkspell/gtkspell-2.0.16.tar.gz gtkspell-2.0.16/po gtkspell gtkspell tgz http://downloads.sourceforge.net/gtkspell/gtkspell-2.0.16.tar.gz gtkspell-2.0.16/po

View File

@ -1,6 +1,6 @@
--- translation-update-upstream-embedded.sh --- translation-update-upstream-embedded.sh
+++ translation-update-upstream-embedded.sh +++ translation-update-upstream-embedded.sh
@@ -34,6 +34,7 @@ @@ -44,6 +44,7 @@
fi fi
} }
@ -8,7 +8,7 @@
DIR=${1:-po} DIR=${1:-po}
DOMAIN=$2 DOMAIN=$2
@@ -91,7 +92,7 @@ @@ -144,7 +145,7 @@
echo "WARNING: Missing $DOMAIN in translation-update-upstream configuration! No updates available." echo "WARNING: Missing $DOMAIN in translation-update-upstream configuration! No updates available."
fi fi
else else

View File

@ -1,3 +1,12 @@
-------------------------------------------------------------------
Wed Sep 7 14:44:21 CEST 2011 - sbrabec@suse.cz
- Supplementary scripts improvements:
* Support for pot-only run (COLLECT_UPSTREAM=false).
* Implemented check for possible strings in patches.
* Support for import of strings from different gettext domain.
* Allow to skip time consuming update by setting SKIP_TUU=true.
------------------------------------------------------------------- -------------------------------------------------------------------
Thu Jul 7 20:57:26 CEST 2011 - sbrabec@suse.cz Thu Jul 7 20:57:26 CEST 2011 - sbrabec@suse.cz

View File

@ -60,8 +60,9 @@ else
fi fi
POT_NOT_UNIQUE=false POT_NOT_UNIQUE=false
MISSING=true NO_POT=true
for POT in *.pot ; do for POT in *.pot ; do
MISSING=true
if $POT_NOT_UNIQUE ; then if $POT_NOT_UNIQUE ; then
echo "ERROR: Directory $DIR contains more than one .pot file." echo "ERROR: Directory $DIR contains more than one .pot file."
exit 1 exit 1
@ -82,7 +83,12 @@ for POT in *.pot ; do
PO=${PO_PATH##*/} PO=${PO_PATH##*/}
LNG=${PO%.po} LNG=${PO%.po}
if test -f $PO ; then if test -f $PO ; then
if test "$SKIP_TUU" = true ; then
echo "SKIP_TUU is set. Skipping update of $PO."
continue
fi
echo "Updating $PO using translation-update-upstream." echo "Updating $PO using translation-update-upstream."
echo "(You can skip update by setting environment variable SKIP_TUU=true.)"
# PO_PATH is first: Update any string, even if it was already translated. # PO_PATH is first: Update any string, even if it was already translated.
# Swap $PO_PATH and $PO to disable this behavior. # Swap $PO_PATH and $PO to disable this behavior.
msgcat --use-first $PO_PATH $PO -o $PO.new msgcat --use-first $PO_PATH $PO -o $PO.new
@ -109,7 +115,12 @@ for POT in *.pot ; do
PO=${PO_PATH##*/} PO=${PO_PATH##*/}
LNG=${PO%.po} LNG=${PO%.po}
if test -f $PO ; then if test -f $PO ; then
if test "$SKIP_TUU" = true ; then
echo "SKIP_TUU is set. Skipping update of $PO."
continue
fi
echo "Updating $PO using translation-update-upstream mandatory source." echo "Updating $PO using translation-update-upstream mandatory source."
echo "(You can skip update by setting environment variable SKIP_TUU=true.)"
# PO_PATH is first: Update any string, even if it was already translated. # PO_PATH is first: Update any string, even if it was already translated.
# Swap $PO_PATH and $PO to disable this behavior. # Swap $PO_PATH and $PO to disable this behavior.
msgcat --use-first $PO_PATH $PO -o $PO.new msgcat --use-first $PO_PATH $PO -o $PO.new
@ -137,4 +148,9 @@ for POT in *.pot ; do
exit 1 exit 1
fi fi
fi fi
NO_POT=false
done done
if $NO_POT ; then
echo "ERROR: Pot file was not created. Please fix or set command line arguments properly!"
exit 1
fi

View File

@ -8,6 +8,8 @@
# Debug mode. Set to true if you want to keep working directories. # Debug mode. Set to true if you want to keep working directories.
DEBUG=false DEBUG=false
# Set to false to generate only pot files, true to collect po files.
COLLECT_UPSTREAM=true
# Number of CPUs. When > 1, then parallel processing of more po files is possible. # Number of CPUs. When > 1, then parallel processing of more po files is possible.
CPUS=$(cat /proc/cpuinfo | grep processor | wc -l) CPUS=$(cat /proc/cpuinfo | grep processor | wc -l)
WORK_DIR=$PWD WORK_DIR=$PWD
@ -17,6 +19,13 @@ shopt -s nullglob
source ${0%.sh}.conf source ${0%.sh}.conf
function get_pot_name {
POT=
for POT in *.pot ; do
:
done
}
function rpmprep { function rpmprep {
RPMDIR=$HOME/.var.rpmpatch$$ RPMDIR=$HOME/.var.rpmpatch$$
rm -rf BUILD $HOME/.var.rpmpatch$$ rm -rf BUILD $HOME/.var.rpmpatch$$
@ -28,8 +37,20 @@ function rpmprep {
%_builddir $PWD/BUILD %_builddir $PWD/BUILD
EOF EOF
# remove <RELEASE> tag from Release and delete shell escape comments. sed -i '
sed -i '/^Release:/s/[<>]//g;/#%(bash/d' *.spec # Remove <RELEASE> tag from Release and delete shell escape comments.
/^Release:/s/[<>]//g
# Remove bash shell escape comments (gstreamer, calls autoreconf that can fail).
/#%(bash/d
# Remove negative expressions in BuildRequires.
:1
s/^\(BuildRequires:.*[[:space:]]\)-[^[:space:]]*/\1/
t1
/^BuildRequires:[[:space:]]*$/d
# Modify some requirements to work without relevant packages installed.
s/%{xulrunner_version}/dummy/g
s/%{mozilla_ver}/dummy/g
' *.spec
eval rpmbuild --macros=/usr/lib/rpm/macros:/usr/lib/rpm/suse_macros:/usr/lib/rpm/platform/$(uname -i)-linux/macros:/etc/rpm/\\\*:$RPMDIR/macros --nodeps -bp ${*:-*.spec} eval rpmbuild --macros=/usr/lib/rpm/macros:/usr/lib/rpm/suse_macros:/usr/lib/rpm/platform/$(uname -i)-linux/macros:/etc/rpm/\\\*:$RPMDIR/macros --nodeps -bp ${*:-*.spec}
rm -rf $RPMDIR rm -rf $RPMDIR
trap - 0 trap - 0
@ -56,7 +77,7 @@ esac
rm -rf UPSTREAM rm -rf UPSTREAM
mkdir UPSTREAM mkdir UPSTREAM
if ! test -d STAMPS ; then if ! test -d STAMPS ; then
mkdir -p pot mkdir -p pot pot-tuu pot-diff
mkdir OSC PACKAGES UPDATE STAMPS mkdir OSC PACKAGES UPDATE STAMPS
rm -f upstream-collect.log rm -f upstream-collect.log
fi fi
@ -66,7 +87,14 @@ mkdir -p ~/.upstream-collect.tmp
cat >~/.upstream-collect.tmp/translation-update-upstream <<EOF cat >~/.upstream-collect.tmp/translation-update-upstream <<EOF
#!/bin/sh #!/bin/sh
echo "Dummy translation-update-upstream for upstream-collect.sh. Skipping merge of old translations." echo "Dummy translation-update-upstream for upstream-collect.sh. Skipping merge of old translations."
echo \${3:-intltool-update --gettext-package=\${2:-\$T_U_U_DOMAIN} --pot} >\${1:-po}/.translation-update-upstream-implemented echo \${3:-intltool-update\${2+ --gettext-package=\$2} --pot} >\${1:-po}/.translation-update-upstream-implemented
cd \${1:-po}
# Generate and save a copy of the pot file now and compare later.
eval \${3:-intltool-update\${2+ --gettext-package=\$2} --pot}
mkdir -p tuu
for POT in *.pot ; do
mv \$POT tuu/
done
EOF EOF
chmod +x ~/.upstream-collect.tmp/translation-update-upstream chmod +x ~/.upstream-collect.tmp/translation-update-upstream
@ -79,8 +107,13 @@ chmod +x msgheadermerge msgheadermerge-compose msgheadermerge-parse upstream-col
for FILE in gnome-patch-translation-prepare gnome-patch-translation-update ; do for FILE in gnome-patch-translation-prepare gnome-patch-translation-update ; do
cat >~/.upstream-collect.tmp/$FILE <<EOF cat >~/.upstream-collect.tmp/$FILE <<EOF
#!/bin/sh #!/bin/sh
set -x
echo "Dummy $FILE for upstream-collect.sh. Skipping gnome-patch-translation." echo "Dummy $FILE for upstream-collect.sh. Skipping gnome-patch-translation."
mkdir -p gnome-patch-translation # gnome-patch-translation may be a symlink (libgweather), that is why we have to check even with mkdir -p.
if ! test -L gnome-patch-translation ; then
mkdir -p gnome-patch-translation
fi
touch po/.gnome-patch-translation-implemented
EOF EOF
chmod +x ~/.upstream-collect.tmp/$FILE chmod +x ~/.upstream-collect.tmp/$FILE
done done
@ -94,13 +127,13 @@ if ! $FULL_PROCESS ; then
for ARCHIVE_ in translation-update-upstream-*.tar.bz2 ; do for ARCHIVE_ in translation-update-upstream-*.tar.bz2 ; do
ARCHIVE=$ARCHIVE_ ARCHIVE=$ARCHIVE_
done done
if ! test -d UPDATE_OLD ; then if ! test -f STAMPS/UPDATE_old_tarball ; then
mkdir UPDATE_OLD cd UPDATE
cd UPDATE_OLD
tar -jxf ../$ARCHIVE tar -jxf ../$ARCHIVE
# If it is not a full process, increment only release # If it is not a full process, increment only release
# SNAPSHOT 20090213 -> 20090213.1, 20090213.1 -> 20090213.2 # SNAPSHOT 20090213 -> 20090213.1, 20090213.1 -> 20090213.2
cd .. cd ..
touch STAMPS/UPDATE_old_tarball
fi fi
SNAPSHOT=${ARCHIVE#translation-update-upstream-} SNAPSHOT=${ARCHIVE#translation-update-upstream-}
SNAPSHOT=${SNAPSHOT%.tar.bz2} SNAPSHOT=${SNAPSHOT%.tar.bz2}
@ -134,7 +167,7 @@ for TLST in *.tlst ; do
fi fi
echo echo
echo "$(tput setf 3)Processing: package=$PACKAGE gettext-package=$DOMAIN method=$METHOD repository=$REPO directory=$DIR branch=${BRANCH:-(default)} mandatory=$MANDATORY$(tput init)" echo "$(tput setf 3)Processing: package=$PACKAGE domain=$DOMAIN method=$METHOD repository=$REPO directory=$DIR branch=${BRANCH:-(default)} mandatory=$MANDATORY$(tput init)"
# NOTE: Force a limitation: tlst rules for one package must be placed on contiguous line sequence # NOTE: Force a limitation: tlst rules for one package must be placed on contiguous line sequence
if ! $DEBUG ; then if ! $DEBUG ; then
@ -160,31 +193,16 @@ for TLST in *.tlst ; do
fi fi
done done
if $SKIP_PACKAGE ; then if $SKIP_PACKAGE ; then
if test -d $WORK_DIR/UPDATE_OLD/po/$DOMAIN ; then echo " Not scheduled to process. Recycling old update..."
if test -d $WORK_DIR/UPDATE/po/$DOMAIN ; then #FIXME mkdir -p $WORK_DIR/STAMPS/$PACKAGE/$DOMAIN/$METHOD/${REPO//[\/:.]/_}/$DIR/${BRANCH:-__HEAD__}
echo "Should not happen. Internal error." # touch $WORK_DIR/STAMPS/$PACKAGE/.builddir_ok
exit 255
else
echo " Not scheduled to process. Recycling old update..."
mkdir -p $WORK_DIR/UPDATE/po
mv $WORK_DIR/UPDATE_OLD/po/$DOMAIN $WORK_DIR/UPDATE/po/
fi
else
if test -d $WORK_DIR/UPDATE/po/$DOMAIN ; then
echo " Already recycled old update..."
else
echo " Not scheduled to process. No update available..."
fi
fi
mkdir -p $WORK_DIR/STAMPS/$PACKAGE/$DOMAIN/$METHOD/${REPO//[\/:.]/_}/$DIR/${BRANCH:-__HEAD__}
touch $WORK_DIR/STAMPS/$PACKAGE/.builddir_ok
continue continue
fi fi
fi fi
cd $WORK_DIR/OSC cd $WORK_DIR/OSC
RPMPKGDIR=$(echo $WORK_DIR/PACKAGES/$PACKAGE) RPMPKGDIR=$WORK_DIR/PACKAGES/$PACKAGE
if ! test -f $WORK_DIR/STAMPS/$PACKAGE/.builddir_ok ; then if ! test -f $WORK_DIR/STAMPS/$PACKAGE/.builddir_ok ; then
if ! test -d "$RPMPKGDIR" ; then if ! test -d "$RPMPKGDIR" ; then
@ -211,9 +229,8 @@ for TLST in *.tlst ; do
echo "$(tput setf 4)Removed possibly incorrect temporary files from previous runs. Please re-run $0 now.$(tput init)" echo "$(tput setf 4)Removed possibly incorrect temporary files from previous runs. Please re-run $0 now.$(tput init)"
exit 1 exit 1
fi fi
RPMPKGDIR=$(echo $WORK_DIR/PACKAGES/$PACKAGE)
cd $RPMPKGDIR cd $RPMPKGDIR
T_U_U_DOMAIN=$DOMAIN rpmprep $PACKAGE.spec rpmprep $PACKAGE.spec
else else
# During processing, builddir may contain incomplete po files: # During processing, builddir may contain incomplete po files:
rm $WORK_DIR/STAMPS/$PACKAGE/.builddir_ok rm $WORK_DIR/STAMPS/$PACKAGE/.builddir_ok
@ -226,151 +243,172 @@ for TLST in *.tlst ; do
fi fi
cd $RPMPODIR cd $RPMPODIR
get_pot_name
REAL_DOMAIN=${POT%.pot}
if test -f .gnome-patch-translation-implemented ; then
echo $PACKAGE >>$WORK_DIR/gnome-patch-translation.lst
fi
if test -f .translation-update-upstream-implemented ; then if test -f .translation-update-upstream-implemented ; then
if bash ./.translation-update-upstream-implemented ; then if bash ./.translation-update-upstream-implemented ; then
cp -a $DOMAIN.pot $WORK_DIR/pot/ get_pot_name
REAL_DOMAIN=${POT%.pot}
cp -a $REAL_DOMAIN.pot $WORK_DIR/pot/
# pot-tuu DOMAIN is the external domain - LCN may use different domain
cp -a tuu/$REAL_DOMAIN.pot $WORK_DIR/pot-tuu/$DOMAIN.pot
# Verify that patches don't introduce new strings.
msgcomm --uniq $REAL_DOMAIN.pot tuu/$REAL_DOMAIN.pot -o $WORK_DIR/pot-diff/$DOMAIN.pot
if ! test -f .gnome-patch-translation-implemented ; then
if test -f $WORK_DIR/pot-diff/$DOMAIN.pot ; then
echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE domain=$DOMAIN gettext-package=$REAL_DOMAIN method=$METHOD repository=$REPO directory=$DIR branch=${BRANCH:(default)}: new pot file contains unique strings, please check gnome-patch-translation"
fi
fi
else else
# translation-update-upstream is implemented but fails: # translation-update-upstream is implemented but fails:
if test -f $DOMAIN.pot ; then get_pot_name
echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE gettext-package=$DOMAIN method=$METHOD repository=$REPO directory=$DIR branch=${BRANCH:(default)}: pot file update error, continuing with original $DOMAIN.pot" REAL_DOMAIN=${POT%.pot}
if test -f $REAL_DOMAIN.pot ; then
echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE domain=$DOMAIN method=$METHOD repository=$REPO directory=$DIR branch=${BRANCH:(default)}: pot file update error, continuing with original $DOMAIN.pot"
cp -a $DOMAIN.pot $WORK_DIR/pot/ cp -a $DOMAIN.pot $WORK_DIR/pot/
else else
echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE gettext-package=$DOMAIN method=$METHOD repository=$REPO directory=$DIR branch=${BRANCH:(default)}: pot file update error, no way to update" echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE domain=$DOMAIN method=$METHOD repository=$REPO directory=$DIR branch=${BRANCH:(default)}: pot file update error, no way to update"
mkdir -p $WORK_DIR/STAMPS/$PACKAGE/$DOMAIN/$METHOD/${REPO//[\/:.]/_}/$REPODIR/${BRANCH:-__HEAD__} mkdir -p $WORK_DIR/STAMPS/$PACKAGE/$DOMAIN/$METHOD/${REPO//[\/:.]/_}/$REPODIR/${BRANCH:-__HEAD__}
continue continue
fi fi
fi fi
else else
echo "$RPMPODIR: Missing or incorrect translation-update-upstream in the spec file." echo "$RPMPODIR: Missing or incorrect translation-update-upstream in the spec file."
# translation-update-upstream is implemented, try the default: # translation-update-upstream is implemented, try the default with the upstream domain:
if intltool-update --gettext-package=$DOMAIN --pot ; then if intltool-update --gettext-package=$DOMAIN --pot ; then
echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE gettext-package=$DOMAIN method=$METHOD repository=$REPO directory=$DIR branch=${BRANCH:(default)}: packaging error, package does not call translation-update-upstream properly" get_pot_name
REAL_DOMAIN=${POT%.pot}
echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE domain=$DOMAIN gettext-package=$REAL_DOMAIN method=$METHOD repository=$REPO directory=$DIR branch=${BRANCH:(default)}: packaging error, package does not call translation-update-upstream properly"
cp -a $DOMAIN.pot $WORK_DIR/pot/ cp -a $DOMAIN.pot $WORK_DIR/pot/
else else
echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE gettext-package=$DOMAIN method=$METHOD repository=$REPO directory=$DIR branch=${BRANCH:(default)}: packaging error, package does not call translation-update-upstream properly and intltool-update fails, no way to update" echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE domain=$DOMAIN method=$METHOD repository=$REPO directory=$DIR branch=${BRANCH:(default)}: packaging error, package does not call translation-update-upstream properly and intltool-update fails, no way to update"
mkdir -p $WORK_DIR/STAMPS/$PACKAGE/$DOMAIN/$METHOD/${REPO//[\/:.]/_}/$REPODIR/${BRANCH:-__HEAD__} mkdir -p $WORK_DIR/STAMPS/$PACKAGE/$DOMAIN/$METHOD/${REPO//[\/:.]/_}/$REPODIR/${BRANCH:-__HEAD__}
continue continue
fi fi
fi fi
cd $WORK_DIR/UPSTREAM if $COLLECT_UPSTREAM ; then
let SERIAL++ || : cd $WORK_DIR/UPSTREAM
mkdir $SERIAL let SERIAL++ || :
cd $SERIAL mkdir $SERIAL
cd $SERIAL
case "$METHOD" in case "$METHOD" in
cvs ) cvs )
cvs -z3 -d:pserver:anoncvs@$REPO co $REPODIR $BRANCH cvs -z3 -d:pserver:anoncvs@$REPO co $REPODIR $BRANCH
cd $REPODIR cd $REPODIR
;; ;;
svn ) svn )
if test -z "$BRANCH" ; then if test -z "$BRANCH" ; then
svn co $REPO/${REPODIR%%/*}/trunk/${REPODIR#*/} svn co $REPO/${REPODIR%%/*}/trunk/${REPODIR#*/}
else else
svn co $REPO/${REPODIR%%/*}/branches/$BRANCH/${REPODIR#*/} svn co $REPO/${REPODIR%%/*}/branches/$BRANCH/${REPODIR#*/}
fi fi
cd ${REPODIR##*/} cd ${REPODIR##*/}
;; ;;
git ) git )
if ! test -d $WORK_DIR/GIT/${REPO//[\/:.]/_} ; then if ! test -d $WORK_DIR/GIT/${REPO//[\/:.]/_} ; then
mkdir -p $WORK_DIR/GIT/${REPO//[\/:.]/_} mkdir -p $WORK_DIR/GIT/${REPO//[\/:.]/_}
cd $WORK_DIR/GIT/${REPO//[\/:.]/_} cd $WORK_DIR/GIT/${REPO//[\/:.]/_}
git clone $REPO git clone $REPO
cd $OLDPWD cd $OLDPWD
fi fi
cp -a $WORK_DIR/GIT/${REPO//[\/:.]/_}/* . cp -a $WORK_DIR/GIT/${REPO//[\/:.]/_}/* .
if test -n "$BRANCH" ; then if test -n "$BRANCH" ; then
cd * cd *
git checkout remotes/origin/$BRANCH git checkout remotes/origin/$BRANCH
cd $OLDPWD cd $OLDPWD
fi fi
cd $REPODIR cd $REPODIR
;; ;;
# Web-based Git repository viewer makes possible to download particular file. # Web-based Git repository viewer makes possible to download particular file.
cgit ) cgit )
# Some tricks to be able to recycle git:// URI # Some tricks to be able to recycle git:// URI
CGIT_URI=$REPO CGIT_URI=$REPO
CGIT_URI=${CGIT_URI/git:\/\/anongit./http://cgit.} CGIT_URI=${CGIT_URI/git:\/\/anongit./http://cgit.}
CGIT_URI=${CGIT_URI/git:\/\//http://} CGIT_URI=${CGIT_URI/git:\/\//http://}
CGIT_BRANCH=${BRANCH:+?id=$BRANCH} CGIT_BRANCH=${BRANCH:+?id=$BRANCH}
CGIT_SERVER=${CGIT_URI#http://} CGIT_SERVER=${CGIT_URI#http://}
CGIT_SERVER=${CGIT_SERVER%%/*} CGIT_SERVER=${CGIT_SERVER%%/*}
curl $CGIT_URI/tree/${REPODIR#*/}$CGIT_BRANCH | sed -n 's:^.*class='\''ls-blob[^'\'']*'\'' href='\''\([^'\'']*\)'\''.*$:\1:p' | curl $CGIT_URI/tree/${REPODIR#*/}$CGIT_BRANCH | sed -n 's:^.*class='\''ls-blob[^'\'']*'\'' href='\''\([^'\'']*\)'\''.*$:\1:p' |
while read ; do while read ; do
wget -N http://$CGIT_SERVER${REPLY/\/tree\///plain/} wget -N http://$CGIT_SERVER${REPLY/\/tree\///plain/}
done done
;; ;;
# standard http directory with po files (BRANCH is not supported) # standard http directory with po files (BRANCH is not supported)
http ) http )
wget -N -r --no-parent --level=1 http://$REPO/$REPODIR/$DIR wget -N -r --no-parent --level=1 http://$REPO/$REPODIR/$DIR
cd $REPO/$REPODIR/$DIR cd $REPO/$REPODIR/$DIR
;; ;;
# GNOME Translation project l10n directory # GNOME Translation project l10n directory
gtp ) gtp )
GTP_NAME_BASE=${REPODIR%%/*} GTP_NAME_BASE=${REPODIR%%/*}
# Projects with multiple domains have custom handling in GTP. # Projects with multiple domains have custom handling in GTP.
case $DOMAIN in case $DOMAIN in
gimp20-libgimp ) GTP_NAME_BASE=gimp-libgimp ;; gimp20-libgimp ) GTP_NAME_BASE=gimp-libgimp ;;
gimp20-python ) GTP_NAME_BASE=gimp-python ;; gimp20-python ) GTP_NAME_BASE=gimp-python ;;
gimp20-script-fu ) GTP_NAME_BASE=gimp-script-fu ;; gimp20-script-fu ) GTP_NAME_BASE=gimp-script-fu ;;
gimp20-std-plug-ins ) GTP_NAME_BASE=gimp-plug-ins ;; gimp20-std-plug-ins ) GTP_NAME_BASE=gimp-plug-ins ;;
gimp20-tags ) GTP_NAME_BASE=gimp-tags ;; gimp20-tags ) GTP_NAME_BASE=gimp-tags ;;
gimp20-tips ) GTP_NAME_BASE=gimp-tips ;; gimp20-tips ) GTP_NAME_BASE=gimp-tips ;;
gnumeric-functions ) GTP_NAME_BASE=gnumeric-functions ;; gnumeric-functions ) GTP_NAME_BASE=gnumeric-functions ;;
gtk20-properties ) GTP_NAME_BASE=gtk+-properties ;; gtk20-properties ) GTP_NAME_BASE=gtk+-properties ;;
libgweather-locations ) GTP_NAME_BASE=locations ;; libgweather-locations ) GTP_NAME_BASE=locations ;;
esac
curl http://$REPO/${REPODIR%%/*}.${BRANCH:-master}/ | sed -n 's:^.*href="\([^"]*\.po\)".*$:\1:p' |
while read ; do
case $REPLY in
*.reduced.po )
;;
$GTP_NAME_BASE.${BRANCH:-master}.*)
wget -N http://$REPO/${REPODIR%%/*}.${BRANCH:-master}/$REPLY
mv $REPLY ${REPLY#$GTP_NAME_BASE.${BRANCH:-master}.}
;;
esac esac
done curl http://$REPO/${REPODIR%%/*}.${BRANCH:-master}/ | sed -n 's:^.*href="\([^"]*\.po\)".*$:\1:p' |
;; while read ; do
tbz ) case $REPLY in
wget -N $REPO *.reduced.po )
tar -jxf ${REPO##*/} ;;
cd $REPODIR $GTP_NAME_BASE.${BRANCH:-master}.*)
;; wget -N http://$REPO/${REPODIR%%/*}.${BRANCH:-master}/$REPLY
tgz ) mv $REPLY ${REPLY#$GTP_NAME_BASE.${BRANCH:-master}.}
wget -N $REPO ;;
tar -zxf ${REPO##*/} esac
cd $REPODIR done
;; ;;
lcn ) tbz )
if ! test -d $WORK_DIR/LCN-${BRANCH:-trunk} ; then wget -N $REPO
mkdir $WORK_DIR/LCN-${BRANCH:-trunk} tar -jxf ${REPO##*/}
cd $WORK_DIR/LCN-${BRANCH:-trunk} cd $REPODIR
if test "${BRANCH:-trunk}" = "trunk" ; then ;;
BRANCH_PATH="${BRANCH:-trunk}" tgz )
else wget -N $REPO
BRANCH_PATH="branches/$BRANCH" tar -zxf ${REPO##*/}
fi cd $REPODIR
svn co https://svn.berlios.de/svnroot/repos/opensuse-i18n/$BRANCH_PATH/lcn ;;
for PO in lcn/*/po/*.po ; do lcn )
LCN_LANG=${PO%/*} if ! test -d $WORK_DIR/LCN-${BRANCH:-trunk} ; then
LCN_LANG=${LCN_LANG#lcn/} mkdir $WORK_DIR/LCN-${BRANCH:-trunk}
LCN_LANG=${LCN_LANG%%/*} cd $WORK_DIR/LCN-${BRANCH:-trunk}
LCN_DOMAIN=${PO##*/} if test "${BRANCH:-trunk}" = "trunk" ; then
LCN_DOMAIN=${LCN_DOMAIN%.$LCN_LANG.po} BRANCH_PATH="${BRANCH:-trunk}"
mkdir -p data/$LCN_DOMAIN else
ln $PO data/$LCN_DOMAIN/$LCN_LANG.po BRANCH_PATH="branches/$BRANCH"
done fi
cd - svn co https://svn.berlios.de/svnroot/repos/opensuse-i18n/$BRANCH_PATH/lcn
fi for PO in lcn/*/po/*.po ; do
cp -a $WORK_DIR/LCN-${BRANCH:-trunk}/data/${REPODIR%/po} . LCN_LANG=${PO%/*}
cd ${REPODIR%/po} LCN_LANG=${LCN_LANG#lcn/}
;; LCN_LANG=${LCN_LANG%%/*}
* ) LCN_DOMAIN=${PO##*/}
echo "$PACKAGE: Unknown update method $METHOD" LCN_DOMAIN=${LCN_DOMAIN%.$LCN_LANG.po}
exit 1 mkdir -p data/$LCN_DOMAIN
;; ln $PO data/$LCN_DOMAIN/$LCN_LANG.po
esac done
cd -
fi
cp -a $WORK_DIR/LCN-${BRANCH:-trunk}/data/${REPODIR%/po} .
cd ${REPODIR%/po}
;;
* )
echo "$PACKAGE: Unknown update method $METHOD"
exit 1
;;
esac
# #
# Files created in this section: # Files created in this section:
@ -391,167 +429,168 @@ for TLST in *.tlst ; do
# foo-updatesraw.po: fixes + additions in a single file, raw form # foo-updatesraw.po: fixes + additions in a single file, raw form
# foo-updates.po: fixes + additions in a single file, clean form with an useful header (this file will be copied to UPDATE/) # foo-updates.po: fixes + additions in a single file, clean form with an useful header (this file will be copied to UPDATE/)
# #
for PO in *.po ; do for PO in *.po ; do
( (
if $MANDATORY ; then if $MANDATORY ; then
# Mandatory sources: copy the whole source to the mandatory po directory. Strings must not be skipped. # Mandatory sources: copy the whole source to the mandatory po directory. Strings must not be skipped.
mkdir -p $WORK_DIR/UPDATE/po-mandatory/$DOMAIN mkdir -p $WORK_DIR/UPDATE/po-mandatory/$REAL_DOMAIN
if test -f $WORK_DIR/UPDATE/po-mandatory/$DOMAIN/$PO ; then if test -f $WORK_DIR/UPDATE/po-mandatory/$REAL_DOMAIN/$PO ; then
msgcat --use-first $PO $WORK_DIR/UPDATE/po-mandatory/$DOMAIN/$PO -o $WORK_DIR/UPDATE/po-mandatory/$DOMAIN/$PO~ msgcat --use-first $PO $WORK_DIR/UPDATE/po-mandatory/$REAL_DOMAIN/$PO -o $WORK_DIR/UPDATE/po-mandatory/$REAL_DOMAIN/$PO~
mv $WORK_DIR/UPDATE/po-mandatory/$DOMAIN/$PO~ $WORK_DIR/UPDATE/po-mandatory/$DOMAIN/$PO mv $WORK_DIR/UPDATE/po-mandatory/$REAL_DOMAIN/$PO~ $WORK_DIR/UPDATE/po-mandatory/$REAL_DOMAIN/$PO
else else
msgcat $PO -o $WORK_DIR/UPDATE/po-mandatory/$DOMAIN/$PO msgcat $PO -o $WORK_DIR/UPDATE/po-mandatory/$REAL_DOMAIN/$PO
fi
else
# step 0: Merge new po file into old project. Removes unused (too new) translations.
if ! msgmerge --no-fuzzy-matching $PO $RPMPODIR/$DOMAIN.pot -o ${PO%.po}-backport.po~ ; then
echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE gettext-package=$DOMAIN method=$METHOD repository=$REPO directory=$DIR branch=${BRANCH:(default)} po=$PO: msgmerge error"
continue
fi
if test -f $RPMPODIR/$PO ; then
# step 1: Clean the RPM po file to be safe.
if ! msgmerge --no-fuzzy-matching $RPMPODIR/$PO $RPMPODIR/$DOMAIN.pot -o $RPMPODIR/${PO%.po}-downstream.po ; then
echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE gettext-package=$DOMAIN repository=$REPO directory=$RPMPODIR branch=${BRANCH:(default)} po=$PO: package msgmerge error"
# Failed initial msgmerge is fatal. There is no way to update. Build may fail.
continue
fi
# Do the magic:
# step 2: Merge new upstream po and previous upstream updates to RPM po (if any).
OLD_UPDATE=false
if test -f $WORK_DIR/UPDATE/po/$DOMAIN/$PO ; then
if $WORK_DIR/msgheadermerge $WORK_DIR/UPDATE/po/$DOMAIN/$PO $PO ${PO%.po}-uheader.po --mergemode --continue ; then
echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE gettext-package=$DOMAIN repository=$REPO directory=$RPMPODIR branch=${BRANCH:(default)} po=$PO: old po file, skipping fixes"
OLD_UPDATE=true
fi fi
msgcat --force-po --use-first ${PO%.po}-uheader.po ${PO%.po}-backport.po~ $WORK_DIR/UPDATE/po/$DOMAIN/$PO -o ${PO%.po}-upstream.po
else else
cp -a ${PO%.po}-backport.po~ ${PO%.po}-upstream.po # step 0: Merge new po file into old project. Removes unused (too new) translations.
fi if ! msgmerge --no-fuzzy-matching $PO $RPMPODIR/$REAL_DOMAIN.pot -o ${PO%.po}-backport.po~ ; then
# step 3: Join both translations, without --use-first string changes will disappear as fuzzy. echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE domain=$DOMAIN gettext-package=$REAL_DOMAIN method=$METHOD repository=$REPO directory=$DIR branch=${BRANCH:(default)} po=$PO: msgmerge error"
msgcat --force-po ${PO%.po}-upstream.po $RPMPODIR/${PO%.po}-downstream.po -o ${PO%.po}-allfz.po
msgcat --use-first --force-po ${PO%.po}-upstream.po $RPMPODIR/${PO%.po}-downstream.po -o ${PO%.po}-all.po
# step 4: Find string fixes (existed before, now different).
msgcat --force-po --unique ${PO%.po}-all.po ${PO%.po}-allfz.po -o ${PO%.po}-fixes.po~
# step 5: Find newly translated strings (translation removal is not supported).
msgcat --force-po --unique $RPMPODIR/${PO%.po}-downstream.po ${PO%.po}-all.po -o ${PO%.po}-additions.po~
# step 6: Join both to collect all known fixes.
if $OLD_UPDATE ; then
# If the update has an old time stamp, don't include fixes. Use just additions.
msgcat ${PO%.po}-additions.po~ -o $RPMPODIR/${PO%.po}-updatesraw.po
else
msgcat ${PO%.po}-fixes.po~ ${PO%.po}-additions.po~ -o $RPMPODIR/${PO%.po}-updatesraw.po
fi
# Are there any updated? If no, game over.
if test -f $RPMPODIR/${PO%.po}-updatesraw.po ; then
# step 7: Compose the best po file header.
$WORK_DIR/msgheadermerge $RPMPODIR/$PO ${PO%.po}-upstream.po ${PO%.po}-header.po --newdate
# step 8: And yet another ugly game to get rid commented out garbage.
msgattrib --no-obsolete --force-po $RPMPODIR/${PO%.po}-updatesraw.po -o $RPMPODIR/${PO%.po}-updates.po~
# step 9: Merge correct header to the updates file.
msgcat --no-location --use-first ${PO%.po}-header.po $RPMPODIR/${PO%.po}-updates.po~ -o $RPMPODIR/${PO%.po}-updates.po
fi
# step 10: Prepare texts for review. We created them in previous steps, but files need cleanup.
if test -f ${PO%.po}-header.po ; then
if test -f ${PO%.po}-additions.po~ ; then
msgattrib --no-obsolete --force-po ${PO%.po}-additions.po~ -o ${PO%.po}-additions.po
mkdir -p $WORK_DIR/po-review/${PO%.po}/additions
msgcat --use-first ${PO%.po}-header.po ${PO%.po}-additions.po -o $WORK_DIR/po-review/${PO%.po}/additions/$DOMAIN.po
rmdir --ignore-fail-on-non-empty --parents $WORK_DIR/po-review/${PO%.po}/additions
fi
if test -f ${PO%.po}-fixes.po~ ; then
msgattrib --no-obsolete --force-po ${PO%.po}-fixes.po~ -o ${PO%.po}-fixes.po
msgcat --use-first ${PO%.po}-header.po ${PO%.po}-fixes.po -o ${PO%.po}-fixes-clean.po
fi
if test -f ${PO%.po}-fixes-clean.po ; then
msgmerge ${PO%.po}-allfz.po ${PO%.po}-fixes-clean.po -o ${PO%.po}-fixes-review.po~
msgattrib --no-obsolete --force-po ${PO%.po}-fixes-review.po~ -o ${PO%.po}-fixes-review.po~~
msgcat ${PO%.po}-fixes-review.po~~ -o ${PO%.po}-fixes-review.po
if $OLD_UPDATE ; then
mkdir -p $WORK_DIR/po-review/${PO%.po}/excluded-changes/${REPO//[\/:.]/_}/$REPODIR
cp -a ${PO%.po}-fixes-clean.po $WORK_DIR/po-review/${PO%.po}/excluded-changes/${REPO//[\/:.]/_}/$REPODIR/$DOMAIN.po
cp -a ${PO%.po}-fixes-review.po $WORK_DIR/po-review/${PO%.po}/excluded-changes/${REPO//[\/:.]/_}/$REPODIR/$DOMAIN-review.po
rmdir --ignore-fail-on-non-empty --parents $WORK_DIR/po-review/${PO%.po}/excluded-changes/${REPO//[\/:.]/_}/$REPODIR
if test -d $WORK_DIR/po-review/${PO%.po}/excluded-changes ; then
echo -e "Excluded changes contains changes introduced by upstream po files with\ntime stamp older than our package." >$WORK_DIR/po-review/${PO%.po}/excluded-changes/README
fi
else
mkdir -p $WORK_DIR/po-review/${PO%.po}/changes
cp -a ${PO%.po}-fixes-clean.po $WORK_DIR/po-review/${PO%.po}/changes/$DOMAIN.po
cp -a ${PO%.po}-fixes-review.po $WORK_DIR/po-review/${PO%.po}/changes/$DOMAIN-review.po
rmdir --ignore-fail-on-non-empty --parents $WORK_DIR/po-review/${PO%.po}/changes
fi
fi
fi
else
# Test is not needed in current msgmerge, file is generated even if there is nothing inside.
if test -f ${PO%.po}-backport.po~ ; then
# step 1: Merge new po and previous updates (if any).
msgattrib --no-obsolete --no-fuzzy --translated ${PO%.po}-backport.po~ -o ${PO%.po}-backport.po
if ! test -f ${PO%.po}-backport.po ; then
# backport file does not contain anything useful
continue continue
fi fi
if test -f $RPMPODIR/${PO%.po}-updates.po ; then if test -f $RPMPODIR/$PO ; then
if ! msgcat --force-po --use-first ${PO%.po}-backport.po $RPMPODIR/${PO%.po}-updates.po -o $RPMPODIR/${PO%.po}-updates.po~ ; then # step 1: Clean the RPM po file to be safe.
echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE gettext-package=$DOMAIN method=$METHOD repository=$REPO directory=$DIR branch=${BRANCH:(default)} po=$PO: msgcat error" if ! msgmerge --no-fuzzy-matching $RPMPODIR/$PO $RPMPODIR/$REAL_DOMAIN.pot -o $RPMPODIR/${PO%.po}-downstream.po ; then
echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE domain=$DOMAIN gettext-package=$REAL_DOMAIN repository=$REPO directory=$RPMPODIR branch=${BRANCH:(default)} po=$PO: package msgmerge error"
# Failed initial msgmerge is fatal. There is no way to update. Build may fail.
continue continue
fi fi
mv $RPMPODIR/${PO%.po}-updates.po~ $RPMPODIR/${PO%.po}-updates.po # Do the magic:
# step 2: Merge new upstream po and previous upstream updates to RPM po (if any).
OLD_UPDATE=false
if test -f $WORK_DIR/UPDATE/po/$REAL_DOMAIN/$PO ; then
if $WORK_DIR/msgheadermerge $WORK_DIR/UPDATE/po/$REAL_DOMAIN/$PO $PO ${PO%.po}-uheader.po --mergemode --continue ; then
echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE domain=$DOMAIN gettext-package=$REAL_DOMAIN repository=$REPO directory=$RPMPODIR branch=${BRANCH:(default)} po=$PO: old po file, skipping fixes"
OLD_UPDATE=true
fi
msgcat --force-po --use-first ${PO%.po}-uheader.po ${PO%.po}-backport.po~ $WORK_DIR/UPDATE/po/$REAL_DOMAIN/$PO -o ${PO%.po}-upstream.po
else
cp -a ${PO%.po}-backport.po~ ${PO%.po}-upstream.po
fi
# step 3: Join both translations, without --use-first string changes will disappear as fuzzy.
msgcat --force-po ${PO%.po}-upstream.po $RPMPODIR/${PO%.po}-downstream.po -o ${PO%.po}-allfz.po
msgcat --use-first --force-po ${PO%.po}-upstream.po $RPMPODIR/${PO%.po}-downstream.po -o ${PO%.po}-all.po
# step 4: Find string fixes (existed before, now different).
msgcat --force-po --unique ${PO%.po}-all.po ${PO%.po}-allfz.po -o ${PO%.po}-fixes.po~
# step 5: Find newly translated strings (translation removal is not supported).
msgcat --force-po --unique $RPMPODIR/${PO%.po}-downstream.po ${PO%.po}-all.po -o ${PO%.po}-additions.po~
# step 6: Join both to collect all known fixes.
if $OLD_UPDATE ; then
# If the update has an old time stamp, don't include fixes. Use just additions.
msgcat ${PO%.po}-additions.po~ -o $RPMPODIR/${PO%.po}-updatesraw.po
else
msgcat ${PO%.po}-fixes.po~ ${PO%.po}-additions.po~ -o $RPMPODIR/${PO%.po}-updatesraw.po
fi
# Are there any updated? If no, game over.
if test -f $RPMPODIR/${PO%.po}-updatesraw.po ; then
# step 7: Compose the best po file header.
$WORK_DIR/msgheadermerge $RPMPODIR/$PO ${PO%.po}-upstream.po ${PO%.po}-header.po --newdate
# step 8: And yet another ugly game to get rid commented out garbage.
msgattrib --no-obsolete --force-po $RPMPODIR/${PO%.po}-updatesraw.po -o $RPMPODIR/${PO%.po}-updates.po~
# step 9: Merge correct header to the updates file.
msgcat --no-location --use-first ${PO%.po}-header.po $RPMPODIR/${PO%.po}-updates.po~ -o $RPMPODIR/${PO%.po}-updates.po
fi
# step 10: Prepare texts for review. We created them in previous steps, but files need cleanup.
if test -f ${PO%.po}-header.po ; then
if test -f ${PO%.po}-additions.po~ ; then
msgattrib --no-obsolete --force-po ${PO%.po}-additions.po~ -o ${PO%.po}-additions.po
mkdir -p $WORK_DIR/po-review/${PO%.po}/additions
msgcat --use-first ${PO%.po}-header.po ${PO%.po}-additions.po -o $WORK_DIR/po-review/${PO%.po}/additions/$REAL_DOMAIN.po
rmdir --ignore-fail-on-non-empty --parents $WORK_DIR/po-review/${PO%.po}/additions
fi
if test -f ${PO%.po}-fixes.po~ ; then
msgattrib --no-obsolete --force-po ${PO%.po}-fixes.po~ -o ${PO%.po}-fixes.po
msgcat --use-first ${PO%.po}-header.po ${PO%.po}-fixes.po -o ${PO%.po}-fixes-clean.po
fi
if test -f ${PO%.po}-fixes-clean.po ; then
msgmerge ${PO%.po}-allfz.po ${PO%.po}-fixes-clean.po -o ${PO%.po}-fixes-review.po~
msgattrib --no-obsolete --force-po ${PO%.po}-fixes-review.po~ -o ${PO%.po}-fixes-review.po~~
msgcat ${PO%.po}-fixes-review.po~~ -o ${PO%.po}-fixes-review.po
if $OLD_UPDATE ; then
mkdir -p $WORK_DIR/po-review/${PO%.po}/excluded-changes/${REPO//[\/:.]/_}/$REPODIR
cp -a ${PO%.po}-fixes-clean.po $WORK_DIR/po-review/${PO%.po}/excluded-changes/${REPO//[\/:.]/_}/$REPODIR/$REAL_DOMAIN.po
cp -a ${PO%.po}-fixes-review.po $WORK_DIR/po-review/${PO%.po}/excluded-changes/${REPO//[\/:.]/_}/$REPODIR/$REAL_DOMAIN-review.po
rmdir --ignore-fail-on-non-empty --parents $WORK_DIR/po-review/${PO%.po}/excluded-changes/${REPO//[\/:.]/_}/$REPODIR
if test -d $WORK_DIR/po-review/${PO%.po}/excluded-changes ; then
echo -e "Excluded changes contains changes introduced by upstream po files with\ntime stamp older than our package." >$WORK_DIR/po-review/${PO%.po}/excluded-changes/README
fi
else
mkdir -p $WORK_DIR/po-review/${PO%.po}/changes
cp -a ${PO%.po}-fixes-clean.po $WORK_DIR/po-review/${PO%.po}/changes/$REAL_DOMAIN.po
cp -a ${PO%.po}-fixes-review.po $WORK_DIR/po-review/${PO%.po}/changes/$REAL_DOMAIN-review.po
rmdir --ignore-fail-on-non-empty --parents $WORK_DIR/po-review/${PO%.po}/changes
fi
fi
fi
else else
# To get surely a valid po file, use msgcat instead of cp. # Test is not needed in current msgmerge, file is generated even if there is nothing inside.
if ! msgcat ${PO%.po}-backport.po -o $RPMPODIR/${PO%.po}-updates.po ; then if test -f ${PO%.po}-backport.po~ ; then
echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE gettext-package=$DOMAIN method=$METHOD repository=$REPO directory=$DIR branch=${BRANCH:(default)} po=$PO: msgcat error" # step 1: Merge new po and previous updates (if any).
continue msgattrib --no-obsolete --no-fuzzy --translated ${PO%.po}-backport.po~ -o ${PO%.po}-backport.po
if ! test -f ${PO%.po}-backport.po ; then
# backport file does not contain anything useful
continue
fi
if test -f $RPMPODIR/${PO%.po}-updates.po ; then
if ! msgcat --force-po --use-first ${PO%.po}-backport.po $RPMPODIR/${PO%.po}-updates.po -o $RPMPODIR/${PO%.po}-updates.po~ ; then
echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE domain=$DOMAIN gettext-package=$REAL_DOMAIN method=$METHOD repository=$REPO directory=$DIR branch=${BRANCH:(default)} po=$PO: msgcat error"
continue
fi
mv $RPMPODIR/${PO%.po}-updates.po~ $RPMPODIR/${PO%.po}-updates.po
else
# To get surely a valid po file, use msgcat instead of cp.
if ! msgcat ${PO%.po}-backport.po -o $RPMPODIR/${PO%.po}-updates.po ; then
echo >>$WORK_DIR/upstream-collect.log "package=$PACKAGE domain=$DOMAIN gettext-package=$REAL_DOMAIN method=$METHOD repository=$REPO directory=$DIR branch=${BRANCH:(default)} po=$PO: msgcat error"
continue
fi
fi
# step 2: Prepare texts for review.
mkdir -p $WORK_DIR/po-review/${PO%.po}/new-files
cp -a $RPMPODIR/${PO%.po}-updates.po $WORK_DIR/po-review/${PO%.po}/new-files/$REAL_DOMAIN.po
rmdir --ignore-fail-on-non-empty --parents $WORK_DIR/po-review/${PO%.po}/new-files
fi fi
fi fi
# step 2: Prepare texts for review.
mkdir -p $WORK_DIR/po-review/${PO%.po}/new-files
cp -a $RPMPODIR/${PO%.po}-updates.po $WORK_DIR/po-review/${PO%.po}/new-files/$DOMAIN.po
rmdir --ignore-fail-on-non-empty --parents $WORK_DIR/po-review/${PO%.po}/new-files
fi fi
fi ) &
fi if test $CPUS -le 1 ; then
) & wait
if test $CPUS -le 1 ; then
wait
else
echo "JOBS: New job launched."
SHOWME=true
while test $(jobs -p | wc -l) -ge $CPUS ; do
if $SHOWME ; then
echo -n "JOBS: $CPUS jobs running. Will check later~"
SHOWME=false
else else
echo -n "~" echo "JOBS: New job launched."
SHOWME=true
while test $(jobs -p | wc -l) -ge $CPUS ; do
if $SHOWME ; then
echo -n "JOBS: $CPUS jobs running. Will check later~"
SHOWME=false
else
echo -n "~"
fi
sleep 3
done
fi
if ! $SHOWME ; then
echo "JOBS: Releasing."
fi fi
sleep 3
done done
fi if test $CPUS -gt 1 ; then
if ! $SHOWME ; then echo "JOBS: All tasks launched. Waiting for results."
echo "JOBS: Releasing." wait
fi fi
done
if test $CPUS -gt 1 ; then
echo "JOBS: All tasks launched. Waiting for results."
wait
fi
mkdir -p $WORK_DIR/UPDATE/po/$DOMAIN mkdir -p $WORK_DIR/UPDATE/po/$REAL_DOMAIN
cd $RPMPODIR cd $RPMPODIR
for POX in *-updates.po ; do for POX in *-updates.po ; do
PO=${POX/-updates/} PO=${POX/-updates/}
cp -a $POX $WORK_DIR/UPDATE/po/$DOMAIN/$PO cp -a $POX $WORK_DIR/UPDATE/po/$REAL_DOMAIN/$PO
done done
if ! $DEBUG ; then
rm -rf $WORK_DIR/UPSTREAM/$SERIAL
fi
fi
mkdir -p $WORK_DIR/STAMPS/$PACKAGE/$DOMAIN/$METHOD/${REPO//[\/:.]/_}/$DIR/${BRANCH:-__HEAD__} mkdir -p $WORK_DIR/STAMPS/$PACKAGE/$DOMAIN/$METHOD/${REPO//[\/:.]/_}/$DIR/${BRANCH:-__HEAD__}
touch $WORK_DIR/STAMPS/$PACKAGE/.builddir_ok touch $WORK_DIR/STAMPS/$PACKAGE/.builddir_ok
if ! $DEBUG ; then
rm -rf $WORK_DIR/UPSTREAM/$SERIAL
fi
done done
done done
if ! $DEBUG ; then if ! $DEBUG ; then
@ -560,12 +599,14 @@ if ! $DEBUG ; then
fi fi
fi fi
cd $WORK_DIR/UPDATE if $COLLECT_UPSTREAM ; then
if test -d po ; then cd $WORK_DIR/UPDATE
tar -j -c -f $WORK_DIR/translation-update-upstream-$SNAPSHOT.tar.bz2 po if test -d po ; then
fi tar -j -c -f $WORK_DIR/translation-update-upstream-$SNAPSHOT.tar.bz2 po
if test -d po-mandatory ; then fi
tar -j -c -f $WORK_DIR/translation-update-mandatory-$SNAPSHOT.tar.bz2 po-mandatory if test -d po-mandatory ; then
tar -j -c -f $WORK_DIR/translation-update-mandatory-$SNAPSHOT.tar.bz2 po-mandatory
fi
fi fi
cd $WORK_DIR cd $WORK_DIR