[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#395189: marked as done (Running commands from cdbs-edit-patch)



Your message dated Sat, 8 Mar 2025 15:29:14 +0100
with message-id <CADsTwjKRYbO_4Azs7pd5W1FQmTRmEduVckUEYKG8h+F04dUs7w@mail.gmail.com>
and subject line obsolete cdbs-edit-patch tool is not shipped anymore
has caused the Debian Bug report #395189,
regarding Running commands from cdbs-edit-patch
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
395189: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=395189
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: cdbs
Version: 0.4.46
Severity: wishlist
Tags: patch

        Hi,

 This might seem completely superfluous, but I'm sure you're going to
 enjoy it.

 The proposed patch to cdbs-edit-patch adds support for running commands
 instead of a shell; the default is still to run a shell.

 Here's why I find it useful: I wrote my own "relibtoolize" shell
 snippet which will run libtoolize, aclocal, autoconf appropriately and
 cleanup.  Ultimately, I'm chaining commands like this:
    svn-do cdbs-edit-patch 70_relibtoolize relibtoolize
 to merge the SVN debian/ with the tarball (svn-do) edit a new patch (or
 existing patch) named 70_relibtoolize, run the relibtoolizing script,
 update the patch (cdbs-edit-patch), merge back to SVN (svn-do).
   Obviously, there are many possibilities, such as:
    cdbs-edit-patch 40_missing-macros cp /usr/share/aclocal/pkg.m4 macros
    cdbs-edit-patch 80_frobinate sed 's///g' Makefile
    cdbs-edit-patch 99_autoreconf autoreconf

 The attached patch is between a cdbs-edit-patch with fixed return code
 (#389929) and patch level order (#395180) and one supporting passing a
 command on the command-line.

   Bye,

-- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.18-1-686
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)

cdbs depends on no packages.

Versions of packages cdbs recommends:
ii  autotools-dev                 20060920.1 Update infrastructure for config.{
ii  debhelper                     5.0.40     helper programs for debian/rules

-- no debconf information

-- 
Loïc Minier <lool@dooz.org>
--- /usr/bin/cdbs-edit-patch	2006-10-25 15:00:06.000000000 +0200
+++ /home/lool/bin/cdbs-edit-patch	2006-10-25 15:02:04.000000000 +0200
@@ -25,12 +25,20 @@
 dh_testdir
 
 if [ -z "$1" ] || [ "$1" = "--help" ]; then
-    echo "Usage: $0 <patch name>"
+    echo "Usage: $0 <patch name> [command]"
     exit 0
 fi
 
+getshell() {
+    SH=$(getent passwd $USER | cut -f 7 -d:)
+    [ "$SH" ] || SH=/bin/sh
+    echo "$SH"
+}
+
 SRCDIR=$(pwd)
 PATCHNAME=${1%.patch}.patch
+shift
+COMMAND="${@:-$(getshell)}"
 TMP=$(mktemp -t -d cdbs-new-patch.XXXXXX)
 TMP2=$(mktemp -t cdbs-old-patch-header.XXXXXX)
 trap "rm -rf $TMP $TMP2" 0 1 2 3 9 11 13 15
@@ -81,16 +89,20 @@
     }
 fi
 
-echo "
+if [ "$COMMAND" = "$SHELL" ]; then
+    echo "
 You are now in a subshell in a cleaned copy of your source package.
 Please make the changes necessary for the patch $PATCHNAME
 in this directory and exit with status 0 to create/update the patch.
 Exiting with a non-zero value will cancel the patch modification."
+else
+    echo "Running command: $COMMAND"
+fi
 
-SH=$(getent passwd $USER | cut -f 7 -d:)
-[ "$SH" ] || SH=/bin/sh
+($COMMAND)
+err="$?"
 
-if $SH; then
+if [ $err = 0 ]; then
     if [ -f $SRCDIR/debian/patches/$PATCHNAME ]; then
         cat $SRCDIR/debian/patches/$PATCHNAME | patch_header > $TMP2
         cat $TMP2 > $SRCDIR/debian/patches/$PATCHNAME
@@ -98,3 +110,5 @@
     cd $TMP
     diff -Nur $ORIGDIR $NEWDIR >> $SRCDIR/debian/patches/$PATCHNAME || true
 fi
+
+exit $err
#!/bin/sh -e
# create or edit a cdbs simple-patchsys.mk patch
#
# (C) 2005 Martin Pitt <mpitt@debian.org>
#
#  This script is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License version 2 as
#  published by the Free Software Foundation.


# Stolen from quilt
patch_header()
{
    awk '
        $1 == "***" || $1 == "---" \
                { exit }
        /^Index:[ \t]|^diff[ \t]|^==*$|^RCS file: |^retrieving revision [0-9]+(\.[0-9]+)*$/ \
                { eat = eat $0 "\n"
                  next }
                { print eat $0
                  eat = "" }
        '
}

dh_testdir

if [ -z "$1" ] || [ "$1" = "--help" ]; then
    echo "Usage: $0 <patch name> [command]"
    exit 0
fi

getshell() {
    SH=$(getent passwd $USER | cut -f 7 -d:)
    [ "$SH" ] || SH=/bin/sh
    echo "$SH"
}

SRCDIR=$(pwd)
PATCHNAME=${1%.patch}.patch
shift
COMMAND="${@:-$(getshell)}"
TMP=$(mktemp -t -d cdbs-new-patch.XXXXXX)
TMP2=$(mktemp -t cdbs-old-patch-header.XXXXXX)
trap "rm -rf $TMP $TMP2" 0 1 2 3 9 11 13 15

ORIGDIR=$(basename $(pwd))
NEWDIR=$ORIGDIR.new

mkdir -p debian/patches

# create clean source package in temporary dir
cp -a . $TMP/$ORIGDIR
cd $TMP/$ORIGDIR
debclean

# create an empty patch if necessary so that the following loop stops at the
# lexicographic patch position
[ -e "debian/patches/$PATCHNAME" ] || touch "debian/patches/$PATCHNAME" 

# remove all patches later than the one to edit
for p in $(find debian/patches -type f -name "*.patch" | LC_COLLATE=C sort -r); do
    rm -f "$p"
    pname=$(basename "$p")
    [ "$pname" != "$PATCHNAME" ] || break
done

debian/rules apply-patches

# create new source dir
cp -a . $TMP/$NEWDIR
cd $TMP/$NEWDIR

# if we edit a patch, apply the already existing one to the new directory
if [ -e "$SRCDIR/debian/patches/$PATCHNAME" ]; then
    echo -n "Applying already existing patch to edit directory at level"
    for level in 1 0 2; do
        echo -n " $level"
        if patch --dry-run -E -p$level < "$SRCDIR/debian/patches/$PATCHNAME" > /dev/null 2>&1; then
            if patch --no-backup-if-mismatch -V never -p$level < "$SRCDIR/debian/patches/$PATCHNAME" > /dev/null 2>&1; then
                echo " success"
                success=1
                break;
            fi
        fi
    done
    [ "$success" ] || {
        echo " failure"
        exit 1
    }
fi

if [ "$COMMAND" = "$SHELL" ]; then
    echo "
You are now in a subshell in a cleaned copy of your source package.
Please make the changes necessary for the patch $PATCHNAME
in this directory and exit with status 0 to create/update the patch.
Exiting with a non-zero value will cancel the patch modification."
else
    echo "Running command: $COMMAND"
fi

($COMMAND)
err="$?"

if [ $err = 0 ]; then
    if [ -f $SRCDIR/debian/patches/$PATCHNAME ]; then
        cat $SRCDIR/debian/patches/$PATCHNAME | patch_header > $TMP2
        cat $TMP2 > $SRCDIR/debian/patches/$PATCHNAME
    fi
    cd $TMP
    diff -Nur $ORIGDIR $NEWDIR >> $SRCDIR/debian/patches/$PATCHNAME || true
fi

exit $err

--- End Message ---
--- Begin Message ---
version: 0.4.168

obsolete cdbs-edit-patch tool is not shipped anymore

--- End Message ---

Reply to: