X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=dh_movefiles;h=03957a03ef99a335ef783d8de86bb9cc5dac7d90;hb=577b5462c71cb7a451bd01b21f533acb8c7471a7;hp=18e46d4d8c9f3b85491f287a97e591b26cac5af8;hpb=23a8188b668fbbdd8e84260040e276a6ef3a879c;p=debhelper.git diff --git a/dh_movefiles b/dh_movefiles index 18e46d4..03957a0 100755 --- a/dh_movefiles +++ b/dh_movefiles @@ -11,7 +11,7 @@ use Debian::Debhelper::Dh_Lib; =head1 SYNOPSIS - dh_movefiles [debhelper options] [--sourcedir=dir] [file ...] +B [S>] [B<--sourcedir=>I] [B<-X>I] S>] =head1 DESCRIPTION @@ -20,11 +20,20 @@ out of debian/tmp or some other directory and into other package build directories. This may be useful if your package has a Makefile that installs everything into debian/tmp, and you need to break that up into subpackages. -Files named debian/package.files list the files to be moved, separated by -whitespace. The filenames listed should be relative to debian/tmp/. You can -also list directory names, and the whole directory will be moved. If you -prefer, you can list the files to move on the command line and this will -apply to the first package dh_movefiles is told to act on. +Note: dh_install is a much better program, and you are recommended to use +it instead of dh_movefiles. + +=head1 FILES + +=over 4 + +=item debian/I.files + +Lists the files to be moved into a package, separated by whitespace. The +filenames listed should be relative to debian/tmp/. You can also list +directory names, and the whole directory will be moved. + +=back =head1 OPTIONS @@ -34,10 +43,15 @@ apply to the first package dh_movefiles is told to act on. Instead of moving files out of debian/tmp (the default), this option makes it move files out of some other directory. Since the entire contents of -the sourcedir is moved, specifiying something like --sourcedir=/ is very +the sourcedir is moved, specifying something like --sourcedir=/ is very unsafe, so to prevent mistakes, the sourcedir must be a relative filename; it cannot begin with a `/'. +=item B<-Xitem>, B<--exclude=item> + +Exclude files that contain "item" anywhere in their filename from +being installed. + =item I Lists files to move. The filenames listed should be relative to @@ -59,7 +73,9 @@ deleted by dh_clean later. =cut -init(); +init(options => { + "sourcedir=s" => \$dh{SOURCEDIR}, +}); my $ret=0; @@ -91,7 +107,7 @@ foreach my $package (@{$dh{DOPACKAGES}}) { } if (@tomove && $tmp eq $sourcedir) { - error("I was asked to move files from $sourcedir to $sourcedir. Perhaps you should set DH_COMAPT=2?"); + error("I was asked to move files from $sourcedir to $sourcedir. Perhaps you should set DH_COMPAT=2?"); } # Now we need to expand wildcards in @tomove. @@ -118,14 +134,26 @@ foreach my $package (@{$dh{DOPACKAGES}}) { doit("rm","-f","debian/movelist"); foreach (@tomove) { my $file=$_; - if (! -e $file && ! -l $file) { + if (! -e $file && ! -l $file && ! $dh{NO_ACT}) { $ret=1; - warning("$file not found"); + warning("$file not found (supposed to put it in $package)"); + } + else { + $file=~s:^\Q$sourcedir\E/+::; + my $cmd="(cd $sourcedir >/dev/null ; find $file ! -type d "; + if ($dh{EXCLUDE_FIND}) { + $cmd.="-a ! \\( $dh{EXCLUDE_FIND} \\) "; + } + $cmd.="-print || true) >> debian/movelist"; + complex_doit($cmd); } - $file=~s:^\Q$sourcedir\E/+::; - complex_doit("(cd $sourcedir >/dev/null ; find $file ! -type d -print || true) >> debian/movelist"); } - complex_doit("(cd $sourcedir >/dev/null ; tar --create --remove-files --files-from=../movelist --file -) | (cd $tmp >/dev/null ;tar xpf -)"); + my $pwd=`pwd`; + chomp $pwd; + complex_doit("(cd $sourcedir >/dev/null ; tar --create --files-from=$pwd/debian/movelist --file -) | (cd $tmp >/dev/null ;tar xpf -)"); + # --remove-files is not used above because tar then doesn't + # preserve hard links + complex_doit("(cd $sourcedir >/dev/null ; tr '\\n' '\\0' < $pwd/debian/movelist | xargs -0 -i rm -f '{}')"); doit("rm","-f","debian/movelist"); } } @@ -141,7 +169,7 @@ exit $ret; =head1 SEE ALSO -L +L This program is a part of debhelper.