diff options
author | Andreas Gruenbacher <agruen@suse.de> | 2003-10-22 21:37:37 +0000 |
---|---|---|
committer | Andreas Gruenbacher <agruen@suse.de> | 2003-10-22 21:37:37 +0000 |
commit | 815520d0deef50a9dc30bd8367c3a1c794b2f688 (patch) | |
tree | c34d6c8d60acf6f2222d5af0461bd2123574bd58 | |
parent | 0e2747064dcaa71467ebd5cba8df56b1102d1e9c (diff) | |
download | quilt-815520d0deef50a9dc30bd8367c3a1c794b2f688.tar.gz |
Add `-l' option to `quilt setup' command: This creates symlinks for
the patches directory and the series file. Also works when a spec
file is specified, but then there obviously is no series file to
link to.
-rw-r--r-- | quilt/setup.in | 73 |
1 files changed, 64 insertions, 9 deletions
diff --git a/quilt/setup.in b/quilt/setup.in index 1b960c1..0b07dad 100644 --- a/quilt/setup.in +++ b/quilt/setup.in @@ -28,6 +28,11 @@ Initializes a source tree from a patch series file. The patch series file must contain the name of the relevant tar archive, in addition to the list of patches. +-d The directory that contains the archives and patches. Defaults + to the directory of the series/spec file. + +-l Make the patches directory a symbolic link. If a series file is + specified, also create a symlink to the series file. " exit 0 else @@ -55,7 +60,7 @@ parse_series() echo "SERIES $series" } -options=`getopt -o d:h -- "$@"` +options=`getopt -o d:lh -- "$@"` if [ $? -ne 0 ] then @@ -70,6 +75,9 @@ do -d) opt_source=$2 shift 2 ;; + -l) + opt_link=1 + shift ;; -h) usage -h ;; --) @@ -115,8 +123,7 @@ fi status=0 packagedir=. -while read cmd arg arg2 && \ - [ $status -eq 0 ] +while read cmd arg arg2 do case $cmd in SOURCEDIR) @@ -149,20 +156,68 @@ do fi ;; PATCH) - echo $"Copying patch $source/$arg" - mkdir -p "$packagedir/patches/" && \ - cp "$source/$arg" "$packagedir/patches/" \ + if [ -n "$opt_link" ] + then + if ! [ -e "$packagedir/patches" ] + then + arg="$source" + if [ "${arg:0:1}" != "/" ] + then + arg="$PWD/$arg" + fi + echo $"Creating link to patches directory $arg" + ln -s "$arg" "$packagedir/patches" + fi + else + echo $"Copying patch $source/$arg" + mkdir -p "$packagedir/patches/" && \ + cp "$source/$arg" "$packagedir/patches/" + fi ;; SERIES) - echo $"Copying series file" - cp "$arg" "$packagedir/patches/series" + if [ -n "$opt_link" ] + then + # The patches dir is a symlink to the directory + # containing the patches. Don't write the series + # file into that directory. + if [ -e "$packagedir/series" ] + then + echo $"File $packagedir/series exists; will not override." >&2 + status=1 + elif [ -n "$spec_file" ] + then + # There is no series file to link to; the + # series file we are reading from is a + # temporary file. + echo $"Copying series file" + cp "$arg" "$packagedir/series" + else + # Create a symlink to the series file. We don't + # want to mess with changing relative symlink + # targets... + if [ "${arg:0:1}" != "/" ] + then + arg="$PWD/$arg" + fi + echo $"Creatig link to series file $arg" + ln -s "$arg" "$packagedir/series" + fi + else + echo $"Copying series file" + cp "$arg" "$packagedir/patches/series" + fi ;; *) status=1 break ;; esac - status=$? + s=$? + if [ $status -eq 0 ] + then + status=$s + [ $status != 0 ] && break + fi done \ < <(parse_series "$series_file") |