backport to buster
[hcoop/debian/openafs.git] / src / mkdest.pl
1 #!/usr/bin/perl
2
3 # mkdest: make AFS platform directory for build
4
5 if ($#ARGV >= 0) {
6 $srcdir = $ARGV[0];
7 }
8 else {
9 $srcdir = "/tmp/src";
10 }
11 $dir = $ENV{PWD};
12
13 print "Create build tree from the AFS source tree $srcdir\n";
14 print "Create links in platform tree $dir\n";
15
16 print "continue (y/n) ? ";
17
18 chop ($ans = <STDIN>);
19 exit if ($ans ne "y");
20
21 mkdir "dest", 0755 || die "Can't create directory dest\n";
22 mkdir "obj", 0755 || die "Can't create directory obj\n";
23 chdir "obj" || die "Can't change to directory obj\n";
24
25 &dodir($srcdir, "..");
26
27 sub dodir {
28 local($dir,$destpath) = @_;
29 print "$dir\n";
30 local($a);
31 local($i);
32
33 #if (-e "$dir/RCS") {
34 ## Make RCS link and check out all files in this directory
35 #system("ln -sf $dir/RCS");
36 #system("co RCS/*");
37 #}
38
39 opendir(DIR,$dir) || die "Can't open directory $dir\n";
40 local(@allfiles) = readdir(DIR);
41 closedir(DIR);
42
43 $thisdir = &lastcomp($dir);
44 system("ln -s $destpath/dest DEST");
45 system("ln -s $destpath/../src/$thisdir SRC");
46
47 foreach $a (@allfiles) {
48 #print "$a\n";
49 if (! -d "$dir/$a") {
50 system("ln -s SRC/$a");
51 next;
52 }
53 next if $a eq '.';
54 next if $a eq '..';
55 next if $a eq 'RCS';
56
57 # Make this subdirectory on local copy
58 mkdir $a, 0755 || die "Can't create directory $dir/$a\n";
59 chdir $a || die "Can't change to directory $dir/$a\n";
60
61 # Recursively process this directory
62 &dodir("$dir/$a", "$destpath/..");
63 chdir '..';
64 }
65 }
66
67 sub lastcomp {
68 local($dir) = @_;
69
70 $_ = $dir;
71 if (/$srcdir\/(\S+)/) {
72 $dir = $1;
73 }
74 else {
75 $dir = $_;
76 }
77 return $dir;
78 }