diff --git a/software/lang/en b/software/lang/en index 9b94ec9c8..6a21b1c65 100644 --- a/software/lang/en +++ b/software/lang/en @@ -393,4 +393,10 @@ hpux_enforce_scripts=Enforce scripts? hpux_enforce_dsa=Enforce disk space analysis? hpux_root=Root directory +ports_install=Installing FreeBSD ports $1 .. +ports_failed=.. some ports failed +ports_ok=.. install complete +ports_input=Package from ports +ports_find=Search Ports + __norefs=1 diff --git a/software/ports-lib.pl b/software/ports-lib.pl index 02522f4fe..1e2cbabbc 100644 --- a/software/ports-lib.pl +++ b/software/ports-lib.pl @@ -17,19 +17,32 @@ print "",&text('ports_install', "$update"),"
\n"; print "
";
my $err = 0;
foreach my $w (@want) {
- my $cmd = "cd /usr/ports/$w && make package";
+ # Build the packages
+ my ($dir) = grep { !/\/distfiles\// } glob("/usr/ports/*/$w");
+ my $cmd = "cd $dir && make package";
&additional_log('exec', undef, $cmd);
$ENV{'BATCH'} = 1;
+ my @newrv;
&open_execute_command(CMD, "$cmd ) {
s/\r|\n//g;
if (/Building\s+package\s+(\S+)/) {
- push(@rv, $2);
+ push(@newrv, $2);
}
+ print &html_escape($_."\n");
}
- print &html_escape($_."\n");
close(CMD);
+ if (@newrv) {
+ # Install the packages
+ &open_execute_command(CMD, "cd $dir && pkg_add ".join(" ", @newrv), 2);
+ while() {
+ s/\r|\n//g;
+ print &html_escape($_."\n");
+ }
+ close(CMD);
+ }
$err++ if ($?);
+ push(@rv, @newrv);
}
print " \n";
if ($err) {
@@ -55,9 +68,10 @@ if ($out =~ /make\s+fetchindex/) {
$out = &backquote_command("$cmd 2>&1 $1 };
- push(@rv, $1);
+ if ($line =~ /Path:\s+\/usr\/ports\/(\S+\/(\S+))/) {
+ my $p = { 'name' => $2,
+ 'fullname' => $1 };
+ push(@rv, $p);
}
elsif ($line =~ /Info:\s+(.*)/ && @rv) {
$rv[$#rv]->{'desc'} = $1;
@@ -67,6 +81,41 @@ foreach my $line (split(/\r?\n/, $out)) {
return @rv;
}
+# update_system_resolve(name)
+# Converts a standard package name like apache, sendmail or squid into
+# the name used by ports.
+sub update_system_resolve
+{
+local ($name) = @_;
+return $name eq "apache" ? "apache22 ap22-mod_.*" :
+ $name eq "dhcpd" ? "isc-dhcp-42-server" :
+ $name eq "mysql" ? "mysql-server" :
+ $name eq "openssh" ? "openssh-portable" :
+ $name eq "postgresql" ? "postgresql-server" :
+ $name eq "openldap" ? "openldap-server openldap-client" :
+ $name;
+}
+# update_system_available()
+# Returns a list of package names and versions that are available from ports
+sub update_system_available
+{
+local @rv;
+&execute_command("cd /usr/ports && make fetchindex");
+&open_execute_command(PKG, "cd /usr/ports && make search 'key=*'", 2, 1);
+my @rv;
+while(my $line =