1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
#!/usr/bin/perl -w
#
# Move files out of debian/tmp, into subpackages.
use Debian::Debhelper::Dh_Lib;
init();
$ret=0;
foreach $PACKAGE (@{$dh{DOPACKAGES}}) {
$TMP=tmpdir($PACKAGE);
$files=pkgfile($PACKAGE,"files");
if ($dh{SOURCEDIR}) {
if ($dh{SOURCEDIR}=~m:^/:) {
error("The sourcedir must be a relative filename, not starting with `/'.");
}
$sourcedir=$dh{SOURCEDIR};
}
else {
$sourcedir="debian/tmp";
}
if (! -d $sourcedir) {
error("$sourcedir does not exist.");
}
@tomove=();
# debian/files has a different purpose, so ignore it.
if ( $files && $files ne "debian/files" ) {
@tomove=filearray($files);
}
if (($PACKAGE eq $dh{FIRSTPACKAGE} || $dh{PARAMS_ALL}) && @ARGV) {
push @tomove, @ARGV;
}
if (@tomove && $TMP eq $sourcedir) {
error("I was asked to move files from $sourcedir to $sourcedir.");
}
if (@tomove) {
if (! -d $TMP) {
doit("install","-d",$TMP);
}
# Now we need to expand wildcards in @tomove.
@filelist=();
foreach (@tomove) {
push @filelist, glob("$sourcedir/$_");
}
# If the globs expended to nothing, we are done.
next unless @filelist;
# Order the files. First all real files, then symlinks.
# Putting symlinks last is a nice thing to do for library
# packages and doesn't affect much of anything else.
doit("rm","-f","movelist");
foreach (@filelist) {
$file=$_;
$ret=1 if (! -e $file && ! -l $file);
$file=~s:^$sourcedir/+::;
complex_doit("(cd $sourcedir >/dev/null ; find $file ! -type d -and ! -type l -print || true) >> movelist");
}
foreach (@filelist) {
$file=$_;
$ret=1 if (! -e $file && ! -l $file);
$file=~s:^$sourcedir/+::;
complex_doit("(cd $sourcedir >/dev/null ; find $file ! -type d -and -type l -print || true) >> movelist");
}
complex_doit("(cd $sourcedir >/dev/null ; tar --create --remove-files --files-from=../../movelist --file -) | (cd $TMP >/dev/null ;tar xpf -)");
doit("rm","-f","movelist");
}
}
# If $ret is set, we wern't actually able to find some
# files that were specified to be moved, and we should
# exit with the code in $ret. This program puts off
# exiting with an error until all files have been tried
# to be moved, because this makes it easier for some
# packages that arn't always sure exactly which files need
# to be moved.
exit $ret;
|