|
1 #! /usr/local/bin/perl |
|
2 # |
|
3 # This Source Code Form is subject to the terms of the Mozilla Public |
|
4 # License, v. 2.0. If a copy of the MPL was not distributed with this |
|
5 # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
|
6 |
|
7 |
|
8 require('coreconf.pl'); |
|
9 |
|
10 #######-- read in variables on command line into %var |
|
11 |
|
12 $use_jar = 1; |
|
13 $ZIP = "$ENV{JAVA_HOME}/bin/jar"; |
|
14 |
|
15 if ( $ENV{JAVA_HOME} eq "" ) { |
|
16 $ZIP = "zip"; |
|
17 $use_jar = 0; |
|
18 } |
|
19 |
|
20 |
|
21 &parse_argv; |
|
22 |
|
23 |
|
24 ######-- Do the packaging of jars. |
|
25 |
|
26 foreach $jarfile (split(/ /,$var{FILES}) ) { |
|
27 print STDERR "---------------------------------------------\n"; |
|
28 print STDERR "Packaging jar file $jarfile....\n"; |
|
29 |
|
30 $jarinfo = $var{$jarfile}; |
|
31 |
|
32 ($jardir,$jaropts) = split(/\|/,$jarinfo); |
|
33 |
|
34 if ( $use_jar ) { |
|
35 $zipoptions = "-cvf"; |
|
36 } else { |
|
37 $zipoptions = "-T -r"; |
|
38 if ($jaropts =~ /a/) { |
|
39 if ($var{OS_ARCH} eq 'WINNT') { |
|
40 $zipoptions .= ' -ll'; |
|
41 } |
|
42 } |
|
43 } |
|
44 |
|
45 # just in case the directory ends in a /, remove it |
|
46 if ($jardir =~ /\/$/) { |
|
47 chop $jardir; |
|
48 } |
|
49 |
|
50 $dirdepth --; |
|
51 |
|
52 print STDERR "jardir = $jardir\n"; |
|
53 system("ls $jardir"); |
|
54 |
|
55 if (-d $jardir) { |
|
56 |
|
57 |
|
58 # count the number of slashes |
|
59 |
|
60 $slashes =0; |
|
61 |
|
62 foreach $i (split(//,$jardir)) { |
|
63 if ($i =~ /\//) { |
|
64 $slashes++; |
|
65 } |
|
66 } |
|
67 |
|
68 $dotdots =0; |
|
69 |
|
70 foreach $i (split(m|/|,$jardir)) { |
|
71 if ($i eq '..') { |
|
72 $dotdots ++; |
|
73 } |
|
74 } |
|
75 |
|
76 $dirdepth = ($slashes +1) - (2*$dotdots); |
|
77 |
|
78 print STDERR "changing dir $jardir\n"; |
|
79 chdir($jardir); |
|
80 print STDERR "making dir META-INF\n"; |
|
81 mkdir("META-INF",0755); |
|
82 |
|
83 $filelist = ""; |
|
84 opendir(DIR,"."); |
|
85 while ($_ = readdir(DIR)) { |
|
86 if (! ( ($_ eq '.') || ($_ eq '..'))) { |
|
87 if ( $jaropts =~ /i/) { |
|
88 if (! /^include$/) { |
|
89 $filelist .= "$_ "; |
|
90 } |
|
91 } |
|
92 else { |
|
93 $filelist .= "$_ "; |
|
94 } |
|
95 } |
|
96 } |
|
97 closedir(DIR); |
|
98 |
|
99 print STDERR "$ZIP $zipoptions $jarfile $filelist\n"; |
|
100 system("$ZIP $zipoptions $jarfile $filelist"); |
|
101 rmdir("META-INF"); |
|
102 for $i (1 .. $dirdepth) { |
|
103 chdir(".."); |
|
104 print STDERR "chdir ..\n"; |
|
105 } |
|
106 } |
|
107 else { |
|
108 print STDERR "Directory $jardir doesn't exist\n"; |
|
109 } |
|
110 |
|
111 } |
|
112 |