2 # Build an RPM package of Webmin
4 if (-r "/usr/src/OpenLinux") {
5 $base_dir = "/usr/src/OpenLinux";
8 $base_dir = "/usr/src/redhat";
10 $spec_dir = "$base_dir/SPECS";
11 $source_dir = "$base_dir/SOURCES";
12 $rpms_dir = "$base_dir/RPMS/noarch";
13 $srpms_dir = "$base_dir/SRPMS";
15 $< && die "makerpm.pl must be run as root";
17 if ($ARGV[0] eq "--nosign" || $ARGV[0] eq "-nosign") {
21 $ver = $ARGV[0] || die "usage: makerpm.pl <version> [release]";
22 $rel = $ARGV[1] || "1";
25 if (-r "/etc/.issue") {
26 \$etc_issue = `cat /etc/.issue`;
28 elsif (-r "/etc/issue") {
29 \$etc_issue = `cat /etc/issue`;
33 open(OS, "os_list.txt");
36 if (/^([^\t]+)\t+([^\t]+)\t+([^\t]+)\t+([^\t]+)\t*(.*)$/ && $5) {
37 $if = $count++ == 0 ? "if" : "elsif";
38 $oscheck .= "$if ($5) {\n".
39 " print \"oscheck='$1'\\n\";\n".
44 $oscheck =~ s/\\/\\\\/g;
45 $oscheck =~ s/`/\\`/g;
46 $oscheck =~ s/\$/\\\$/g;
48 open(TEMP, "maketemp.pl");
53 $maketemp =~ s/\\/\\\\/g;
54 $maketemp =~ s/`/\\`/g;
55 $maketemp =~ s/\$/\\\$/g;
57 system("cp tarballs/webmin-$ver.tar.gz $source_dir");
58 open(SPEC, ">$spec_dir/webmin-$ver.spec");
60 #%define BuildRoot /tmp/%{name}-%{version}
61 %define __spec_install_post %{nil}
63 Summary: A web-based administration interface for Unix systems.
67 Provides: %{name}-%{version}
68 PreReq: /bin/sh /usr/bin/perl /bin/rm
69 Requires: /bin/sh /usr/bin/perl /bin/rm
73 Source: http://www.webmin.com/download/%{name}-%{version}.tar.gz
75 BuildRoot: /tmp/%{name}-%{version}
76 BuildArchitectures: noarch
78 A web-based administration interface for Unix systems. Using Webmin you can
79 configure DNS, Samba, NFS, local/remote filesystems and more using your
82 After installation, enter the URL http://localhost:10000/ into your
83 browser and login as root with your root password.
89 (find . -name '*.cgi' ; find . -name '*.pl') | perl perlpath.pl /usr/bin/perl -
90 rm -f mount/freebsd-mounts*
91 rm -f mount/openbsd-mounts*
92 rm -f mount/macos-mounts*
93 rm -f webmin-gentoo-init
94 rm -rf format bsdexports hpuxexports sgiexports zones rbac
98 mkdir -p %{buildroot}/usr/libexec/webmin
99 mkdir -p %{buildroot}/etc/sysconfig/daemons
100 mkdir -p %{buildroot}/etc/rc.d/{rc0.d,rc1.d,rc2.d,rc3.d,rc5.d,rc6.d}
101 mkdir -p %{buildroot}/etc/init.d
102 mkdir -p %{buildroot}/etc/pam.d
103 cp -rp * %{buildroot}/usr/libexec/webmin
104 cp webmin-daemon %{buildroot}/etc/sysconfig/daemons/webmin
105 cp webmin-init %{buildroot}/etc/init.d/webmin
106 cp webmin-pam %{buildroot}/etc/pam.d/webmin
107 ln -s /etc/init.d/webmin %{buildroot}/etc/rc.d/rc2.d/S99webmin
108 ln -s /etc/init.d/webmin %{buildroot}/etc/rc.d/rc3.d/S99webmin
109 ln -s /etc/init.d/webmin %{buildroot}/etc/rc.d/rc5.d/S99webmin
110 ln -s /etc/init.d/webmin %{buildroot}/etc/rc.d/rc0.d/K10webmin
111 ln -s /etc/init.d/webmin %{buildroot}/etc/rc.d/rc1.d/K10webmin
112 ln -s /etc/init.d/webmin %{buildroot}/etc/rc.d/rc6.d/K10webmin
113 echo rpm >%{buildroot}/usr/libexec/webmin/install-type
117 [ "%{buildroot}" != "/" ] && rm -rf %{buildroot}
120 %defattr(-,root,root)
122 %config /etc/sysconfig/daemons/webmin
124 /etc/rc.d/rc2.d/S99webmin
125 /etc/rc.d/rc3.d/S99webmin
126 /etc/rc.d/rc5.d/S99webmin
127 /etc/rc.d/rc0.d/K10webmin
128 /etc/rc.d/rc1.d/K10webmin
129 /etc/rc.d/rc6.d/K10webmin
130 %config /etc/pam.d/webmin
136 if [ "\$?" != "0" ]; then
137 echo "Failed to create or check temp files directory /tmp/.webmin"
140 if [ "\$tempdir" = "" ]; then
143 perl >$tempdir/\$\$.check <<EOD;
146 . $tempdir/\$\$.check
147 rm -f $tempdir/\$\$.check
148 if [ ! -r /etc/webmin/config ]; then
149 if [ "\$oscheck" = "" ]; then
150 echo Unable to identify operating system
153 echo Operating system is \$oscheck
154 if [ "\$WEBMIN_PORT\" != \"\" ]; then
159 perl -e 'use Socket; socket(FOO, PF_INET, SOCK_STREAM, getprotobyname("tcp")); setsockopt(FOO, SOL_SOCKET, SO_REUSEADDR, pack("l", 1)); bind(FOO, pack_sockaddr_in(\$ARGV[0], INADDR_ANY)) || exit(1); exit(0);' \$port
160 if [ "\$?" != "0" ]; then
161 echo Port \$port is already in use
165 # Save /etc/webmin in case the upgrade trashes it
166 if [ "\$1" != 1 ]; then
167 rm -rf /etc/.webmin-backup
168 cp -r /etc/webmin /etc/.webmin-backup
173 inetd=`grep "^inetd=" /etc/webmin/miniserv.conf 2>/dev/null | sed -e 's/inetd=//g'`
174 if [ "\$1" != 1 ]; then
175 # Upgrading the RPM, so stop the old webmin properly
176 if [ "\$inetd" != "1" ]; then
177 /etc/init.d/webmin stop >/dev/null 2>&1 </dev/null
180 cd /usr/libexec/webmin
181 config_dir=/etc/webmin
185 if [ "\$WEBMIN_PORT\" != \"\" ]; then
191 if [ -r /etc/shadow ]; then
192 #crypt=`grep "^root:" /etc/shadow | cut -f 2 -d :`
195 crypt=`grep "^root:" /etc/passwd | cut -f 2 -d :`
205 if [ "\$tempdir" = "" ]; then
208 export config_dir var_dir perl autoos port login crypt host ssl nochown autothird noperlpath nouninstall nostart allow atboot
209 ./setup.sh >\$tempdir/webmin-setup.out 2>&1
210 chmod 600 \$tempdir/webmin-setup.out
211 rm -f /var/lock/subsys/webmin
212 if [ "$inetd" != "1" ]; then
213 /etc/init.d/webmin start >/dev/null 2>&1 </dev/null
215 cat >/etc/webmin/uninstall.sh <<EOFF
217 printf "Are you sure you want to uninstall Webmin? (y/n) : "
220 if [ "\\\$answer" = "y" ]; then
221 echo "Removing webmin RPM .."
222 rpm -e --nodeps webmin
226 chmod +x /etc/webmin/uninstall.sh
227 port=`grep "^port=" /etc/webmin/miniserv.conf | sed -e 's/port=//g'`
228 perl -e 'use Net::SSLeay' >/dev/null 2>/dev/null
230 if [ "\$?" = "0" ]; then
231 grep ssl=1 /etc/webmin/miniserv.conf >/dev/null 2>/dev/null
232 if [ "\$?" = "0" ]; then
236 musthost=`grep musthost= /etc/webmin/miniserv.conf | sed -e 's/musthost=//'`
237 if [ "$musthost" != "" ]; then
240 if [ "\$sslmode" = "1" ]; then
241 echo "Webmin install complete. You can now login to https://\$host:\$port/"
243 echo "Webmin install complete. You can now login to http://\$host:\$port/"
245 echo "as root with your root password."
249 if [ "\$1" = 0 ]; then
250 grep root=/usr/libexec/webmin /etc/webmin/miniserv.conf >/dev/null 2>&1
251 if [ "\$?" = 0 ]; then
252 # RPM is being removed, and no new version of webmin
253 # has taken it's place. Run uninstalls and stop the server
254 echo "Running uninstall scripts .."
255 (cd /usr/libexec/webmin ; WEBMIN_CONFIG=/etc/webmin WEBMIN_VAR=/var/webmin LANG= /usr/libexec/webmin/run-uninstalls.pl)
256 /etc/init.d/webmin stop >/dev/null 2>&1 </dev/null
257 /etc/webmin/stop >/dev/null 2>&1 </dev/null
263 if [ "\$1" = 0 ]; then
264 grep root=/usr/libexec/webmin /etc/webmin/miniserv.conf >/dev/null 2>&1
265 if [ "\$?" = 0 ]; then
266 # RPM is being removed, and no new version of webmin
267 # has taken it's place. Delete the config files
268 rm -rf /etc/webmin /var/webmin
273 %triggerpostun -- webmin
274 if [ ! -d /var/webmin -a "\$1" = 2 ]; then
275 echo Re-creating /var/webmin directory
278 if [ ! -r /etc/webmin/miniserv.conf -a -d /etc/.webmin-backup -a "\$1" = 2 ]; then
279 echo Recovering /etc/webmin directory
280 rm -rf /etc/.webmin-broken
281 mv /etc/webmin /etc/.webmin-broken
282 mv /etc/.webmin-backup /etc/webmin
283 /etc/init.d/webmin stop >/dev/null 2>&1 </dev/null
284 /etc/init.d/webmin start >/dev/null 2>&1 </dev/null
286 rm -rf /etc/.webmin-backup
293 $cmd = -x "/usr/bin/rpmbuild" ? "rpmbuild" : "rpm";
294 system("$cmd -ba --target=noarch $spec_dir/webmin-$ver.spec") && exit;
296 system("mv $rpms_dir/webmin-$ver-$rel.noarch.rpm rpm/webmin-$ver-$rel.noarch.rpm");
297 print "Moved to rpm/webmin-$ver-$rel.noarch.rpm\n";
298 system("mv $srpms_dir/webmin-$ver-$rel.src.rpm rpm/webmin-$ver-$rel.src.rpm");
299 print "Moved to rpm/webmin-$ver-$rel.src.rpm\n";
300 system("chown jcameron: rpm/webmin-$ver-$rel.noarch.rpm rpm/webmin-$ver-$rel.src.rpm");
302 system("rpm --resign rpm/webmin-$ver-$rel.noarch.rpm rpm/webmin-$ver-$rel.src.rpm");
306 if (!$webmail && -d "/usr/local/webadmin/rpm/yum") {
307 # Add to our repository
308 system("cp rpm/webmin-$ver-$rel.noarch.rpm /usr/local/webadmin/rpm/yum");