2 # makepackage.pl <version>
3 # Copy files from some directory to /opt/webmin and build a package
5 @ARGV || die "usage: makepackage.pl <version> [directory]";
6 $dir = $ARGV[1] || "/usr/local/webadmin/tarballs/webmin-$ARGV[0]";
7 $> == 0 || die "makepackage.pl must be run as root";
8 -r "$dir/version" || die "$dir does not look like a webmin directory";
9 chop($v = `cat $dir/version`);
11 print "Copying $dir to /opt/webmin ..\n";
12 system("rm -rf /opt/webmin");
13 mkdir("/opt/webmin", 0755);
14 system("cd $dir ; tar cf - . | (cd /opt/webmin ; tar xf -)");
15 open(MODE, ">/opt/webmin/install-type");
16 print MODE "solaris-pkg\n";
18 system("chown -R root /opt/webmin");
19 system("chgrp -R bin /opt/webmin");
20 system("chmod -R og-rxw /opt/webmin");
23 print "Deleting non-Solaris modules ..\n";
24 system("cd /opt/webmin ; rm -rf /opt/webmin/{adsl-client,exports,fdisk,firewall,frox,grub,heartbeat,idmapd,ipsec,krb5,lilo,lvm,ppp-client,pptp-client,pptp-server,raid,shorewall,smart-status,vgetty,ldap-client}");
27 print "Setting Perl path to /usr/bin/perl ..\n";
28 system("(find /opt/webmin -name '*.cgi' -print ; find /opt/webmin -name '*.pl' -print) | perl /opt/webmin/perlpath.pl /usr/bin/perl -");
31 print "Making prototype file ..\n";
33 open(PROTO, "> prototype");
34 print PROTO "i pkginfo=/opt/webmin/pkginfo\n";
36 system("find . -print | grep -v \"^prototype\" | pkgproto >>prototype");
37 open(PROTO, ">> prototype");
38 print PROTO "i postinstall=./postinstall\n";
39 print PROTO "i preremove=./preremove\n";
40 print PROTO "f none /etc/init.d/webmin=webmin-init 0755 root sys\n";
41 print PROTO "l none /etc/rc3.d/S99webmin=/etc/init.d/webmin\n";
42 print PROTO "l none /etc/rc0.d/K10webmin=/etc/init.d/webmin\n";
43 print PROTO "l none /etc/rc1.d/K10webmin=/etc/init.d/webmin\n";
44 print PROTO "l none /etc/rc2.d/K10webmin=/etc/init.d/webmin\n";
45 print PROTO "l none /etc/rcS.d/K10webmin=/etc/init.d/webmin\n";
49 print "Making postinstall file ..\n";
50 open(POST, "> postinstall");
52 echo "Executing postinstall script .."
54 config_dir=/etc/webmin
67 export config_dir var_dir perl autoos port login crypt ssl atboot nochown autothird noperlpath nouninstall
73 print "Making preremove file ..\n";
74 open(PRE, "> preremove");
76 echo "In preremove script.."
78 grep root=/opt/webmin /etc/webmin/miniserv.conf >/dev/null 2>&1
79 if [ "\$?" = 0 -a "\$KEEP_ETC_WEBMIN" = "" ]; then
80 # Package is being removed, and no new version of webmin
81 # has taken it's place. Delete the config files
82 echo "Running uninstall scripts .."
83 (cd /opt/webmin ; WEBMIN_CONFIG=/etc/webmin WEBMIN_VAR=/var/webmin /opt/webmin/run-uninstalls.pl)
84 rm -rf /etc/webmin /var/webmin
90 print "Making pkginfo file ..\n";
91 @tm = localtime(time());
92 $pstamp = sprintf("%4.4d%2.2%2.2d%2.2d%2.2d%2.2d",
93 $tm[5]+1900, $tm[4]+1, $tm[3], $tm[2], $tm[1], $tm[0]);
94 open(INFO, "> pkginfo");
97 NAME="Webmin - Web-based system administration"
100 CATEGORY="application"
101 VENDOR="Webmin Software"
102 EMAIL="jcameron\@webmin.com"
103 PSTAMP="Jamie Cameron"
104 BASEDIR="/opt/webmin"
112 print "Running pkgmk ..\n";
113 system("pkgmk -o -r /opt/webmin");
116 print "Running pkgtrans ..\n";
117 system("pkgtrans -s /var/spool/pkg webmin-$v.pkg WSwebmin");
120 print "Delete files in /opt/webmin ..\n";
122 system("rm -rf /opt/webmin");
125 print "Delete files in /var/spool/pkg ..\n";
126 system("rm -rf /var/spool/pkg/WSwebmin");
129 if (-d "/usr/local/webadmin/solaris-pkg") {
130 $dest = "/usr/local/webadmin/solaris-pkg/webmin-$v.pkg.gz";
131 print "Moving package to $dest ..\n";
132 system("gzip -c /var/spool/pkg/webmin-$v.pkg >$dest");
133 unlink("/var/spool/pkg/webmin-$v.pkg");