summaryrefslogtreecommitdiffstats
path: root/pkg/solaris/solpkg
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/solaris/solpkg')
-rwxr-xr-xpkg/solaris/solpkg15
1 files changed, 12 insertions, 3 deletions
diff --git a/pkg/solaris/solpkg b/pkg/solaris/solpkg
index 41d8e177..a21176e4 100755
--- a/pkg/solaris/solpkg
+++ b/pkg/solaris/solpkg
@@ -8,6 +8,7 @@ $pkgmk = "/usr/bin/pkgmk";
8$pkgtrans = "/usr/bin/pkgtrans"; 8$pkgtrans = "/usr/bin/pkgtrans";
9$prototype = "prototype"; 9$prototype = "prototype";
10$pkginfo = "pkginfo"; 10$pkginfo = "pkginfo";
11$preinstall = "preinstall";
11$egrep = "/usr/bin/egrep"; 12$egrep = "/usr/bin/egrep";
12 13
13# Sanity check 14# Sanity check
@@ -24,17 +25,24 @@ open (PREPROTO,"$find . -print |$egrep -v \"^\.(/usr(/local)?|/opt)?\$\" | $pkgp
24open (PROTO,">$prototype") || 25open (PROTO,">$prototype") ||
25 die "Unable to write file prototype ($!)\n"; 26 die "Unable to write file prototype ($!)\n";
26print PROTO "i pkginfo=./$pkginfo\n"; 27print PROTO "i pkginfo=./$pkginfo\n";
28print PROTO "i preinstall=./$preinstall\n";
27while (<PREPROTO>) { 29while (<PREPROTO>) {
28 # Read in the prototype information 30 # Read in the prototype information
29 chomp; 31 chomp;
30 $thisline = $_; 32 $thisline = $_;
31 if ($thisline =~ " prototype " 33 if ($thisline =~ " prototype "
32 or $thisline =~ " pkginfo ") { 34 or $thisline =~ " pkginfo "
35 or $thisline =~ " preinstall ") {
33 # Don't do anything as they aren't important 36 # Don't do anything as they aren't important
37 } elsif ($thisline =~ "pst3") {
38 # Needs to be installed SUID root
39 ($dir, $none, $file, $mode, $user, $group) = split / /,$thisline;
40 print PROTO "$dir $none $file 4755 root bin\n";
41
34 } elsif ($thisline =~ "^[fd] ") { 42 } elsif ($thisline =~ "^[fd] ") {
35 # Change the ownership of files and directories 43 # Change the ownership of files and directories
36 ($dir, $none, $file, $mode, $user, $group) = split / /,$thisline; 44 ($dir, $none, $file, $mode, $user, $group) = split / /,$thisline;
37 print PROTO "$dir $none $file $mode bin bin\n"; 45 print PROTO "$dir $none $file $mode $user bin\n";
38 } else { 46 } else {
39 # Symlinks and other stuff should be printed also 47 # Symlinks and other stuff should be printed also
40 print PROTO "$thisline\n"; 48 print PROTO "$thisline\n";
@@ -58,6 +66,7 @@ while (<PKGINFO>) {
58 $thisline = $_; 66 $thisline = $_;
59 ($var,$value) = split /=/,$thisline; 67 ($var,$value) = split /=/,$thisline;
60 if ("$var" eq "NAME" 68 if ("$var" eq "NAME"
69 or "$var" eq "PKG"
61 or "$var" eq "VERSION" 70 or "$var" eq "VERSION"
62 or "$var" eq "ARCH") { 71 or "$var" eq "ARCH") {
63 $tmp = lc($var); 72 $tmp = lc($var);
@@ -77,5 +86,5 @@ $packagename = "$name-$version-$os-$arch-local";
77 86
78print "Building package\n"; 87print "Building package\n";
79system ("$pkgmk -o -r `pwd` -d $pkgdevice"); 88system ("$pkgmk -o -r `pwd` -d $pkgdevice");
80system ("(cd $pkgdevice && $pkgtrans -s `pwd` ../$packagename)"); 89system ("(cd $pkgdevice && $pkgtrans -s `pwd` ../$packagename $pkg)");
81print "Done. ($packagename)\n"; 90print "Done. ($packagename)\n";