summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Gruenbacher <agruen@suse.de>2003-01-30 13:06:45 +0000
committerAndreas Gruenbacher <agruen@suse.de>2003-01-30 13:06:45 +0000
commite495df195b361f59b6fc43e280c2f6f14b6d8e7b (patch)
tree312010beebcc36b6a316bd056a64b47f040d18de
parentd21546c2def2a91838704eec183d04ea8b692b18 (diff)
downloadquilt-e495df195b361f59b6fc43e280c2f6f14b6d8e7b.tar.gz
Clean up
-rwxr-xr-xbin/guards246
-rwxr-xr-xlib/parse-patch129
-rwxr-xr-xlib/spec2series223
3 files changed, 0 insertions, 598 deletions
diff --git a/bin/guards b/bin/guards
deleted file mode 100755
index 9681186..0000000
--- a/bin/guards
+++ /dev/null
@@ -1,246 +0,0 @@
-#!/usr/bin/perl -w
-
-# 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.
-#
-# See the COPYING and AUTHORS files for more details.
-
-use FileHandle;
-use Getopt::Long;
-use strict;
-
-# Prototypes
-sub files_in($$);
-sub parse($$);
-sub help();
-
-sub slashme($) {
- my ($dir) = @_;
- $dir =~ s#([^/])$#$&/#; # append a slash if necessary
- if ($dir eq './') {
- return '';
- } else {
- return $dir;
- }
-}
-
-# Generate a list of files in a directory
-#
-sub files_in($$) {
- my ($dir, $path) = @_;
- my $dh = new FileHandle;
- my (@files, $file);
-
-
- opendir $dh, length("$dir$path") ? "$dir$path" : '.'
- or die "$dir$path: $!\n";
- while ($file = readdir($dh)) {
- next if $file =~ /^(\.|\.\.|\.#.*|CVS)$/;
- if (-d "$dir$path$file") {
- @files = (@files, files_in($dir, "$path$file/"));
- } else {
- #print "[$path$file]\n";
- push @files, "$path$file";
- }
- }
- closedir $dh;
- return @files;
-}
-
-# Parse a configuration file
-# Callback called with ($patch, @guards) arguments
-#
-sub parse($$) {
- my ($fh, $callback) = @_;
-
- my $mode = 0;
-
- while (<$fh>) {
- my @guards = ();
- s/(^|\s+)#.*//;
- foreach my $token (split) {
- if ($token =~ /^[-+]/) {
- if ($mode == 1) {
- @guards = ();
- $mode = 0;
- }
- push @guards, $token;
- } else {
- $mode = 1;
- #print "[" . join(",", @guards) . "] $patch\n";
- &$callback($token, @guards);
- }
- }
- }
-}
-
-# Command line options
-#
-my ($dir, $config, $default, $check) = ('', '-', 1, 0);
-my @path;
-
-# Help text
-#
-sub help() {
- print "$0 - select from a list of files guarded by conditions\n";
- print "SYNOPSIS: $0 [--prefix=dir] [--path=dir1:dir2:...]\n" .
- " [--default=0|1] [--check] [--config=file] symbol ...\n\n" .
- " (Default values: --path='" . join(':', @path) . "', " .
- "--default=$default)\n";
- exit 0;
-}
-
-# Parse command line options
-#
-Getopt::Long::Configure ("bundling");
-eval {
- unless (GetOptions (
- 'd|prefix=s' => \$dir,
- 'c|config=s' => \$config,
- 'C|check' => \$check,
- 'p|path=s' => \@path,
- 'D|default=i' => \$default,
- 'h|help' => sub { help(); exit 0; })) {
- help();
- exit 1;
- }
-};
-if ($@) {
- print "$@";
- help();
- exit 1;
-}
-
-@path = ('.')
- unless (@path);
-@path = split(/:/, join(':', @path));
-
-my $fh = ($config eq '-') ? \*STDIN : new FileHandle($config)
- or die "$config: $!\n";
-
-$dir = slashme($dir);
-
-if ($check) {
- # Check for duplicate files, or for files that are not referenced by
- # the specification.
-
- my $problems = 0;
- my @files;
-
- foreach (@path) {
- @files = (@files, files_in($dir, slashme($_)));
- }
- my %files = map { $_ => 0 } @files;
-
- parse($fh, sub {
- my ($patch, @guards) = @_;
- if (exists $files{$patch}) {
- $files{$patch}++;
- } else {
- print "Not found: $dir$patch\n";
- $problems++;
- }});
-
- $fh->close();
-
- my ($file, $ref);
- while (($file, $ref) = each %files) {
- next if $ref == 1;
-
- print "Unused: $file\n" if $ref == 0;
- print "Multiple uses: $file\n" if $ref > 1;
- $problems++;
- }
- exit $problems ? 1 : 0;
-
-} else {
- # Generate a list of patches to apply.
-
- my %symbols = map { $_ => 1 } @ARGV;
-
- parse($fh, sub {
- my ($patch, @guards) = @_;
-
- my $selected;
- if (@guards) {
- # If the first guard is -xxx, the patch is included by default;
- # if it is -xxx, the patch is excluded by default.
- $selected = ($guards[0] =~ /^-/);
-
- foreach (@guards) {
- /^([-+])(!?)(.*)?/
- or die "Bad guard '$_'\n";
-
- # Check if the guard matches
- if (($2 eq '!' && !exists $symbols{$3}) ||
- ($2 eq '' && ( $3 eq '' || exists $symbols{$3}))) {
- # Include or exclude
- $selected = ($1 eq '+');
- }
- }
- } else {
- # If there are no guards, use the specified default result.
- $selected = $default;
- }
-
- print "$dir$patch\n"
- if $selected;
- });
-
- $fh->close();
-
- exit 0;
-}
-
-__END__
-
-=head1 NAME
-
-guards - select from a list of files guarded by conditions
-
-=head1 SYNOPSIS
-
-F<guards> [--prefix=F<dir>] [--path=F<dir2:dir2:...>]
- [--default=I<0>|I<1>] [--check] [--config=F<file>]
- I<symbol> ...
-
-=head1 DESCRIPTION
-
-The script reads a configuration file that may contain so-called guards, file
-names, and comments, and writes those file names that satisfy all guards to
-standard output. The script takes a list of symbols as its arguments. Each line
-in the ocnfiguration file is processed separately. Lines may start with a
-number of guards. The following guards are defined:
-
-=over
-
-+I<xxx> Include the file(s) on this line if the symbol I<xxx> is defined.
-
--I<xxx> Exclude the file(s) on this line if the symbol I<xxx> is defined.
-
-+!I<xxx> Include the file(s) on this line if the symbol I<xxx> is not defined.
-
--!I<xxx> Exclude the file(s) on this line if the symbol I<xxx> is not defined.
-
-- Exclude this file. Used to avoid spurious I<--check> messages.
-
-=back
-
-The guards are processed left to right. The last guard that matches determines
-if the file is included. If no guard is specified, the I<--default>
-setting determines if the file is included.
-
-If no configuration file is specified, the script reads from standard input.
-
-The I<--check> option is used to compare the specification file against the
-file system. If files are referenced in the specification that do not exist, or
-if files are not enlisted in the specification file warnings are printed. The
-I<--path> option can be used to specify which directory or directories to scan.
-Multiple directories are eparated by a colon (C<:>) character. The
-I<--prefix> option specifies the location of the files.
-
-=head1 AUTHOR
-
-Andreas Gruenbacher <agruen@suse.de> (SuSE Linux AG)
-
diff --git a/lib/parse-patch b/lib/parse-patch
deleted file mode 100755
index 9d38e36..0000000
--- a/lib/parse-patch
+++ /dev/null
@@ -1,129 +0,0 @@
-#!/usr/bin/perl -w
-
-# 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.
-#
-# See the COPYING and AUTHORS files for more details.
-
-# Extract or update a section from a combined patch + documentation +
-# meta information file.
-
-use FileHandle;
-use Getopt::Long;
-use File::Temp qw(tempfile);
-use strict;
-
-my $select;
-my $update;
-
-if (!GetOptions("s|select=s" => \$select,
- "u|update=s" => \$update) ||
- (!defined $select && !defined $update)) {
- print STDERR "USAGE: $0 {-s|-u} section file [< replacement]\n";
- exit 1;
-}
-
-foreach my $arg (@ARGV) {
- my $fh;
-
- if (! -e $arg) {
- $fh = new FileHandle("/dev/null");
- } elsif ($arg =~ /\.gz$/) {
- $fh = new FileHandle("gzip -cd $arg |");
- } elsif ($arg =~ /\.bz2$/) {
- $fh = new FileHandle("bzip2 -cd $arg |");
- } else {
- $fh = new FileHandle("< $arg");
- }
-
- unless ($fh) {
- print STDERR "$arg: $!\n";
- next;
- }
-
- if (defined $select) {
- my $section = "head";
- my $newline = "";
- while (<$fh>) {
- if (/^%(.*)/) {
- last if $section eq $select;
- $section = $1;
- next;
- }
- if ($section eq $select) {
- print $newline;
- if ($_ eq "\n") {
- $newline = $_;
- } else {
- $newline="";
- print;
- }
- }
- }
- } elsif (defined $update) {
- my ($fh2, $tempname) = tempfile("$arg.XXXXXX");
- if ($arg =~ /\.gz$/) {
- $fh2->close();
- if (! -e $tempname) {
- die "File $tempname disappeared!\n";
- }
- $fh2 = new FileHandle("| gzip -c > $tempname");
- } elsif ($arg =~ /\.bz2$/) {
- $fh2->close();
- if (! -e $tempname) {
- die "File $tempname disappeared!\n";
- }
- $fh2 = new FileHandle("| bzip2 -c > $tempname");
- }
- unless ($fh2) {
- die "$tempname: $!\n";
- }
-
- # Copy things before updated section
- my $last_was_newline=1; # start first section in first line
- while (<$fh>) {
- if (/^%(.*)/ && $1 eq $update) {
- last;
- }
- $last_was_newline = ($_ eq "\n");
- print $fh2 $_;
- }
- print $fh2 "\n"
- unless ($last_was_newline);
-
- # Create/replace updated section
- print $fh2 "%$update\n";
- while (<STDIN>) {
- print $fh2 $_;
- }
- print $fh2 "\n";
-
- # Skip obsolete section
- while (<$fh>) {
- if (/^%(.*)/) {
- print $fh2 $_;
- last;
- }
- }
- # Copy things after updated section
- while (<$fh>) {
- print $fh2 $_;
- }
- unless (close $fh2) {
- die "$arg.patch: $!\n";
- }
-
- if (-e $arg) {
- unlink "$arg~";
- unless (rename $arg, "$arg~") {
- die "Failed to rename $arg to $arg~: $!\n";
- }
- }
- unless (rename $tempname, $arg) {
- rename("$arg~", $arg);
- die "Failed to rename $arg.parse to $arg: $!\n";
- }
- }
- close $fh;
-}
diff --git a/lib/spec2series b/lib/spec2series
deleted file mode 100755
index 685f8e0..0000000
--- a/lib/spec2series
+++ /dev/null
@@ -1,223 +0,0 @@
-#!/bin/bash
-
-# 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.
-#
-# See the COPYING and AUTHORS files for more details.
-
-# defaults
-debug=0
-specfile=""
-outfile=""
-
-function usage() {
-cat <<EOF
-Usage: quilt spec2series [ options ] specfile
-
--h print this text
--d debug mode (prints lots additional info
- as comments into the output file)
--o <file>
- specify output file, stdout if unspecified
-
-EOF
-}
-
-# parse args
-while test "$1" != ""; do
- case "$1" in
- -h | --help)
- usage; exit 0
- ;;
- -d | --debug)
- debug=1; shift
- ;;
- -o | --outfile)
- outfile="$2"; shift; shift
- ;;
- *)
- specfile="$1"
- break;
- ;;
- esac
-done
-
-if test ! -f "$specfile"; then
- usage
- exit 1
-fi
-
-# get absolute patch for specfile location
-specdir=`dirname $specfile`
-specfile=`basename $specfile`
-case "$specdir" in
- .) specdir="`pwd`"
- ;;
- /*) # nothing
- ;;
- *) specdir="`pwd`/$specdir"
- ;;
-esac
-
-# create tmp work dir
-WORK="${TMPDIR-/tmp}/rpmlog-$$"
-mkdir -p "$WORK" || exit 1
-trap 'rm -rf "$WORK"' EXIT
-mkdir -p "$WORK/build"
-mkdir -p "$WORK/bin"
-
-# create md5 sums, also for uncompressed files
-echo -n "### md5: " >&2
-(cd $specdir; for file in /dev/null *; do
- case "$file" in
- ready | bigpack | MD5SUMS | MD5SUMS.meta | *.spec | *.changes)
- continue
- ;;
- esac
- type="`file -b $file | cut -d" " -f1`"
- case "$type" in
- compress*)
- echo -n "z" >&2
- set -- `zcat $file | md5sum`
- echo "$1 zcat ${file}"
- ;;
- gzip)
- echo -n "g" >&2
- set -- `zcat $file | md5sum`
- echo "$1 zcat ${file}"
- ;;
- bzip2)
- echo -n "b" >&2
- set -- `bzcat $file | md5sum`
- echo "$1 bzcat ${file}"
- ;;
- esac
- echo -n "." >&2
- set -- `md5sum < $file`
- echo "$1 cat ${file}"
-done) > $WORK/md5sum
-echo " done" >&2
-
-# prepare rpm dir fixups and hooks
-RPM="rpm --rcfile=/usr/lib/rpm/rpmrc:$WORK/rpmrc"
-PATH="$WORK/bin:$PATH"
-grep ^macrofiles /usr/lib/rpm/rpmrc \
- | sed -e "/macrofiles/s|$|:$WORK/rpmmacros|" \
- > $WORK/rpmrc
-cat <<-EOF > "$WORK/rpmmacros"
- %_sourcedir $specdir
- %_specdir $specdir
- %_builddir $WORK/build
-EOF
-
-# wrapper script for patch and tar
-cat <<-'EOF' > "$WORK/bin/patch"
- #!/bin/sh
-
- # save stuff for log
- unpackcmd=`basename $0`
- unpackdir=`pwd`
- unpackargs="$*"
- uncompress="false"
- unpackfile="[oops]"
-
- # sort of progress bar
- case $unpackcmd in
- tar) echo -n "t" >&2;;
- patch) echo -n "p" >&2;;
- *) echo -n "?" >&2;;
- esac
-
- # find real binary
- realcmd=""
- test -x "/bin/$unpackcmd" && realcmd="/bin/$unpackcmd"
- test -x "/usr/bin/$unpackcmd" && realcmd="/usr/bin/$unpackcmd"
- test "$realcmd" = "" && exit 1
-
- # put data into tmpfile, exec real cmd, return on failure
- WORK=`dirname $RPM_BUILD_DIR`
- cat > "$WORK/data"
- if test -x /bin/$unpackcmd; then
- cmddir="/bin"
- fi
- $realcmd $* < "$WORK/data"
- retval="$?"
- test "$retval" != "0" && exit $retval
-
- # find original data file by md5sum
- set -- `md5sum < "$WORK/data"`
- unpackfile="[$1]"
- set -- `cat "$WORK/md5sum"`
- while test "$1" != ""; do
- if test "[$1]" = "$unpackfile"; then
- uncompress="$2"
- unpackfile="$3"
- break
- fi
- shift
- done
-
- # print results
- unpackdir=`echo $unpackdir | sed -e "s|$RPM_BUILD_DIR|BUILD|"`
- echo -n "# log: [$unpackdir] $uncompress $unpackfile" >>$WORK/cmdlog
- echo " | $unpackcmd $unpackargs" >>$WORK/cmdlog
- if test "$unpackcmd" = "patch" -a \
- -f "$RPM_SOURCE_DIR/$unpackfile"; then
- patchdir="${unpackdir#BUILD/}"
- if test ! -f "$WORK/patchdir"; then
- echo -n $patchdir > $WORK/patchdir
- fi
- if test "`cat $WORK/patchdir`" = "$patchdir"; then
- level=`echo $unpackargs | tr " " "\n" | grep ^-p`
- echo "$unpackfile $level" >> $WORK/patchlog
- fi
- fi
- if test "$unpackcmd" = "tar" -a \
- -f "$RPM_SOURCE_DIR/$unpackfile"; then
- echo -n "# Source: $unpackfile" >>$WORK/tarlog
- if test "$unpackdir" != "BUILD"; then
- echo -n " -C ${unpackdir#BUILD/}" >>$WORK/tarlog
- fi
- echo "" >>$WORK/tarlog
- fi
-EOF
-chmod 755 "$WORK/bin/patch"
-ln -s patch "$WORK/bin/tar"
-
-# let rpm do all the dirty specfile stuff ...
-echo -n "### rpm: " >&2
-touch $WORK/patchlog
-$RPM --nodeps --quiet -bp "$specdir/$specfile" </dev/null
-echo " done" >&2
-
-# print results saved by the wrapper script
-(
- # header
- echo "# Patch series file for quilt, created by $0"
- echo "#"
- echo "# Sourcedir: $specdir"
- echo "# Specfile: $specfile"
- if test -f $WORK/patchdir; then
- echo "# Patchdir: `cat $WORK/patchdir`"
- fi
- echo "#"
-
- # additional info for trouble shooting
- if test "$debug" = "1"; then
- cat $WORK/md5sum | sed -e 's/^/# md5: /'
- echo "#"
-
- test -f $WORK/cmdlog && cat $WORK/cmdlog && echo "#"
- fi
-
- # list tarballs + patches
- test -f $WORK/tarlog && cat $WORK/tarlog && echo "#"
- test -f $WORK/patchlog && cat $WORK/patchlog
-)|(
- if test "$outfile" != ""; then
- cat > "$outfile"
- else
- cat
- fi
-)