On 3/27/07, Giovanni Scafora <linuxmania@gmail.com> wrote:
Hi guys,
I send my initial work on makepkg with gettext support. I guess that it's not still perfect, but I would appreciate a lot the contribution of all the translators and the pacman developers. All the suggestions are appreciated.
I've inlined it so I can comment on it. Comments are near whatever I have a comment on. :) +. gettext.sh + +TEXTDOMAIN=makepkg ... Can you smash this stuff into one block with a nice comment like "# gettext initialization"? And it might be more clear to use 'source' instead of '.' for consistency with the rest of makepkg. @@ -98,6 +105,7 @@ error() { if [ ! "$USE_COLOR" = "n" -a "$(check_buildenv color)" = "y" ]; then echo -e "\033[1;31m==> ERROR:\033[1;0m \033[1;1m$1\033[1;0m" >&2 else + error=$1 echo "==> ERROR: $1" >&2 What is this for? It is the only function that got changed, is it debug code? @@ -177,6 +185,9 @@ in_array() { } checkdeps() { + local missdep="" + local deplist="" + I think this is old code, along with a few of the things below. Try to sync with the latest in CVS or GIT. @@ -193,31 +204,24 @@ checkdeps() { handledeps() { local missingdeps=0 local deplist="$*" - local depstrip="" - local striplist="" local haveperm=0 if [ \( "$EUID" = "0" -a "$INFAKEROOT" != "1" \) -o "$SUDO" = 1 ]; then haveperm=1 fi - for dep in $deplist; do - depstrip=$(echo $dep | sed 's|=.*$||' | sed 's|>.*$||' | sed 's|<.*$||') - striplist="$striplist $depstrip" - done - if [ "$deplist" != "" -a $haveperm -eq 1 ]; then if [ "$DEP_BIN" = "1" -a "$SUDO" = "1" ]; then # install missing deps from binary packages (using pacman -S and sudo) - msg "Installing missing dependencies..." + msg "$(gettext "Installing missing dependencies...")" if [ "$INFAKEROOT" = "1" ]; then # kinda hacky, but we need to make pacman think that we're NOT # in fakeroot so it will go ahead and install the dependencies. FAKEROOTKEY2=$FAKEROOTKEY unset FAKEROOTKEY fi - sudo pacman $PACMAN_OPTS -S $striplist + sudo pacman $PACMAN_OPTS -S $deplist if [ $? -eq 1 ]; then - error "Pacman failed to install missing dependencies." + error "$(gettext "Failed to install missing dependencies.")" exit 1 fi if [ "$INFAKEROOT" = "1" ]; then @@ -226,25 +230,25 @@ handledeps() { fi elif [ "$DEP_BIN" = "1" ]; then # install missing deps from binary packages (using pacman -S) - msg "Installing missing dependencies..." - pacman $PACMAN_OPTS -S $striplist + msg "$(gettext "Installing missing dependencies...")" + pacman $PACMAN_OPTS -S $deplist if [ $? -eq 1 ]; then - error "Pacman failed to install missing dependencies." + error "$(gettext "Failed to install missing dependencies.")" exit 1 fi elif [ "$DEP_SRC" = "1" ]; then # install missing deps by building them from source. # we look for each package name in $SRCROOT and build it. if [ "$SRCROOT" = "" ]; then - error "Source root cannot be found - please make sure it is specified in /etc/makepkg.conf" + error "$(gettext "Source root cannot be found - please make sure it is specified in /etc/makepkg.conf")" exit 1 fi # TODO: handle version comparators (eg, glibc>=2.2.5) - msg "Building missing dependencies..." - for dep in $striplist; do + msg "$(gettext "Building missing dependencies...")" + for dep in $deplist; do candidates=$(find $SRCROOT -type d -name "$dep") if [ "$candidates" = "" ]; then - error "Could not find \"$dep\" under $SRCROOT" + error "$(eval_gettext "Could not find \"\$dep\" under \$SRCROOT")" exit 1 fi success=0 @@ -252,9 +256,9 @@ handledeps() { if [ -f "$pkgdir/$BUILDSCRIPT" ]; then cd "$pkgdir" if [ "$RMDEPS" = "1" ]; then - PKGDEST="$PKGDEST" makepkg -i -c -b -r + makepkg -i -c -b -r -w $PKGDEST else - PKGDEST="$PKGDEST" makepkg -i -c -b + makepkg -i -c -b -w $PKGDEST fi if [ $? -eq 0 ]; then success=1 @@ -263,7 +267,7 @@ handledeps() { fi done if [ "$success" = "0" ]; then - error "Failed to build \"$dep\"" + error "$(eval_gettext "Failed to build \"\$dep\"")" exit 1 fi done @@ -290,27 +294,21 @@ handledeps() { } resolvedeps() { - deplist="" - newdeplist="" - deplist=$(checkdeps $*) if [ -n "${deplist}" ]; then handledeps $deplist if [ $? -eq 0 ]; then # check deps again to make sure they were resolved - newdeplist=$(checkdeps $*) - if [ -n "${newdeplist}" ]; then - error "Failed to install all missing dependencies." + deplist=$(checkdeps ${depends[@]}) + if [ -n "${deplist}" ]; then + error "$(gettext "Failed to install missing dependencies.")" fi - else - newdeplist="$deplist" fi fi - # if new dep list is not empty, print the list - if [ -n "${newdeplist}" ]; then - msg "Missing Dependencies:" - for dep in ${newdeplist}; do + if [ -n "${deplist}" ]; then + msg "$(gettext "Missing Dependencies:")" + for dep in ${deplist}; do msg2 "${dep}" done return 1 @@ -321,36 +319,26 @@ resolvedeps() { # fix flyspray bug #5923 removedeps() { - # runtimedeps and buildtimedeps are set when resolving deps - local deplist="$runtimedeps $buildtimedeps" - local depstrip="" - local striplist="" - - for dep in $deplist; do - depstrip=$(echo $dep | sed 's|=.*$||' | sed 's|>.*$||' | sed 's|<.*$||') - striplist="$striplist $depstrip" - done - - if [ "$RMDEPS" = "1" -a "$SUDO" = "1" -a -n "$deplist" ]; then - msg "Removing installed dependencies..." + if [ "$RMDEPS" = "1" -a "$SUDO" = "1" -a \( ! -z "$deplist" -o ! -z "$makedeplist" \) ]; then + msg "$(gettext "Removing installed dependencies...")" if [ "$INFAKEROOT" = "1" ]; then export FAKEROOTKEY2=$FAKEROOTKEY unset FAKEROOTKEY fi - sudo pacman $PACMAN_OPTS -Rs $striplist + sudo pacman $PACMAN_OPTS -Rs $makedeplist $deplist if [ "$INFAKEROOT" = "1" ]; then export FAKEROOTKEY=$FAKEROOTKEY2 unset FAKEROOTKEY2 fi - elif [ "$RMDEPS" = "1" -a "$EUID" = "0" -a "$INFAKEROOT" != "1" -a -n "$deplist" ]; then - msg "Removing installed dependencies..." - pacman $PACMAN_OPTS -Rs $striplist + elif [ "$RMDEPS" = "1" -a "$EUID" = "0" -a "$INFAKEROOT" != "1" -a \( ! -z "$deplist" -o ! -z "$makedeplist" \) ]; then + msg "$(gettext "Removing installed dependencies...")" + pacman $PACMAN_OPTS -Rs $makedeplist $deplist fi } @@ -500,36 +489,36 @@ done # check for sudo if [ "$SUDO" = "1" -a ! "$(type -p sudo)" ]; then - error "Cannot find the sudo binary! Is sudo installed?" + error "$(gettext "Cannot find the sudo binary! Is sudo installed?")" exit 1 fi if [ "$CLEANCACHE" = "1" ]; then #fix flyspray feature request #5223 if [ -n "$SRCDEST" -a "$SRCDEST" != "$startdir" ]; then - msg "Cleaning up ALL files from $SRCDEST." - echo -n " Are you sure you wish to do this? [Y/n] " + msg "$(eval_gettext "Cleaning up ALL files from \$SRCDEST.")" + echo -n "$(gettext " Are you sure you wish to do this? [Y/n] ")" read answer answer=$(echo $answer | tr [:upper:] [:lower:]) if [ "$answer" = "yes" -o "$answer" = "y" ]; then If you translate the question, you have to translate the "yes" and "y" strings as well. @@ -599,111 +588,106 @@ fi if [ "$EUID" != "0" ]; then if [ "$(check_buildenv fakeroot)" = "y" ]; then if [ $(type -p fakeroot) ]; then - msg "Entering fakeroot environment" + msg "$(gettext "Entering fakeroot environment")" fakeroot -- $0 -F $ARGLIST exit $? else - warning "Fakeroot is not installed. Building as an unprivileged user" - plain "will result in non-root ownership of the packaged files. Install" - plain "the fakeroot package to correctly build as a non-root user." + warning "$(gettext "Fakeroot is not installed. Building as an unprivileged user")" + plain "$(gettext "will result in non-root ownership of the packaged files. Install")" + plain "$(gettext "the fakeroot package to correctly build as a non-root user.")" Note- we should figure out a better way of doing this and getting it all in one string, but that may have to wait until we get different message functions that can handle it. +unset deplist makedeplist More holdover code. It comes up below in a - part of the patch. # fix flyspray bug #5973 if [ "$NODEPS" = "1" -o "$GENINTEG" = "1" -o "$NOBUILD" = "1" -o "$REPKG" = "1" ]; then if [ "$NODEPS" = "1" ]; then - warning "skipping dependency checks" + warning "$(gettext "skipping dependency checks")" fi # skip printing a warning message for the others: geninteg, nobuild, repkg elif [ $(type -p pacman) ]; then deperr=0 - # these two variables are needed later by removedeps - unset runtimedeps buildtimedeps - msg "Checking Runtime Dependencies..." + msg "$(gettext "Checking Runtime Dependencies...")" resolvedeps ${depends[@]} - ret=$? - # deplist is a global variable set by resolvedeps - runtimedeps="$deplist" - if [ "$ret" != "0" ]; then + if [ $? -ne 0 ]; then deperr=1 fi - msg "Checking Buildtime Dependencies..." + msg "$(gettext "Checking Buildtime Dependencies...")" resolvedeps ${makedepends[@]} - ret=$? - # deplist is a global variable set by resolvedeps - buildtimedeps="$deplist" - if [ "$ret" != "0" ]; then + if [ $? -ne 0 ]; then deperr=1 fi if [ $deperr -eq 1 ]; then - error "could not resolve all dependencies." + error "$(gettext "could not resolve all dependencies.")" exit 1 fi else - warning "pacman was not found in PATH. skipping dependency checks." + warning "$(gettext "pacman was not found in PATH. skipping dependency checks.")" fi cd "$startdir" @@ -883,7 +867,6 @@ else echo $SHELLOPTS | grep errexit 2>&1 >/dev/null set_e=$? - ret=0 if [ "$LOGGING" = "1" ]; then BUILDLOG="${startdir}/${pkgname}-${pkgver}-${pkgrel}-${CARCH}.log" if [ -f "$BUILDLOG" ]; then @@ -900,24 +883,30 @@ else #use 'errexit' to bail on syntax error [ $set_e -eq 1 ] && set -e - build 2>&1 | tee "$BUILDLOG"; ret=${PIPESTATUS[0]} + build 2>&1 | tee "$BUILDLOG" [ $set_e -eq 1 ] && set +e + + if [ ${PIPESTATUS[0]} -gt 0 ]; then + error "$(gettext "Build Failed. Aborting...")" + removedeps + exit 2 + fi else #use 'errexit' to bail on syntax error [ $set_e -eq 1 ] && set -e - build 2>&1 || ret=$? + build 2>&1 [ $set_e -eq 1 ] && set +e - fi - if [ $ret -gt 0 ]; then - error "Build Failed. Aborting..." - removedeps - exit 2 + if [ $? -gt 0 ]; then + error "$(gettext "Build Failed. Aborting...")" + removedeps + exit 2 + fi fi fi Old code. # write the .PKGINFO file -msg "Generating .PKGINFO file..." +msg "$(gettext "Generating .PKGINFO file...")" cd "$startdir/pkg" -echo "# Generated by makepkg $myver" >.PKGINFO +echo "$(eval_gettext "# Generated by makepkg \$myver")" >.PKGINFO Leave this one out of gettext- its a debug message and goes into the package itself. -Dan