On Thu, Sep 07, 2023 at 12:24:59PM +0200, Marc Espie wrote: > I've been perusing the results of the build, they aren't good, then > again portroach isn't quite grabbing the right stuff. > > - tweak the meter to use shorter xxxxx/xxxxx so that it fits again on the > line. > > - use fullpkgname instead of distname because that one is *always* defined. > (and strip v/p accordingly) > > - switch to roach_url/roach_sites > > - use the portsq cached table instead of the view (this goes MUCH faster > not surprisingly) > > this does require an up-to-date sqlports. > > Long term, it would be appropriate to create a temp view based on portsq > that contains all required fields with sensible names, so that it's > less painful to rename stuff in every individual query.
And here's the updated patch which does create the temp view. Index: Makefile =================================================================== RCS file: /cvs/ports/misc/portroach/Makefile,v retrieving revision 1.37 diff -u -p -r1.37 Makefile --- Makefile 21 Jul 2023 10:57:10 -0000 1.37 +++ Makefile 7 Sep 2023 13:31:42 -0000 @@ -3,7 +3,7 @@ COMMENT= OpenBSD ports distfile version GH_ACCOUNT= jasperla GH_PROJECT= portroach GH_TAGNAME= 2.0.11 -REVISION= 4 +REVISION= 5 CATEGORIES= misc Index: patches/patch-Portroach_DataSrc_Ports_pm =================================================================== RCS file: patches/patch-Portroach_DataSrc_Ports_pm diff -N patches/patch-Portroach_DataSrc_Ports_pm --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-Portroach_DataSrc_Ports_pm 7 Sep 2023 13:31:42 -0000 @@ -0,0 +1,40 @@ +Index: Portroach/DataSrc/Ports.pm +--- Portroach/DataSrc/Ports.pm.orig ++++ Portroach/DataSrc/Ports.pm +@@ -114,6 +114,8 @@ sub BuildDB + + $dbh = connect_db(); + ++ prepare_sql($sdbh, \%ssths, qw(create_view)); ++ $ssths{create_view}->execute or die DBI->errstr; + prepare_sql($sdbh, \%ssths, qw(sqlports_count_ports sqlports_fullpkgpaths_by_maintainer)); + + if ($settings{restrict_maintainer}) { +@@ -131,6 +133,7 @@ sub BuildDB + # Query SQLports for all the information we need. We don't care about + # restrictions for now as this step basically copies sqlports. Check() + # will handle any restrictions instead. ++ + $ssths{sqlports_count_ports}->execute or die DBI->errstr; + $num_ports = $ssths{sqlports_count_ports}->fetchrow_array(); + +@@ -217,6 +220,10 @@ sub BuildPort + $name = fullpkgpathtoport($fullpkgpath); + + $distname = $ports[2]; ++ # get rid of version/epoch markers ++ $distname =~ s/v[0-9]+$//; ++ $distname =~ s/p[0-9]+$//; ++ + foreach my $file (split /\s+/, $ports[3]) { + $file =~ s/:[A-Za-z0-9][A-Za-z0-9\,]*$//g; + push @distfiles, $file; +@@ -305,7 +312,7 @@ sub BuildPort + } + } + +- info(1, $fullpkgpath, "($n_port out of $total_ports)"); ++ info(1, $fullpkgpath, "($n_port/$total_ports)"); + + $ps->AddPort({ + 'name' => $name, Index: patches/patch-Portroach_SQL_pm =================================================================== RCS file: /cvs/ports/misc/portroach/patches/patch-Portroach_SQL_pm,v retrieving revision 1.4 diff -u -p -r1.4 patch-Portroach_SQL_pm --- patches/patch-Portroach_SQL_pm 11 Mar 2022 19:38:17 -0000 1.4 +++ patches/patch-Portroach_SQL_pm 7 Sep 2023 13:31:42 -0000 @@ -1,7 +1,93 @@ Index: Portroach/SQL.pm --- Portroach/SQL.pm.orig +++ Portroach/SQL.pm -@@ -311,7 +311,7 @@ $sql{portdata_fullpkgpaths} = +@@ -71,51 +71,62 @@ $sql{portdata_update} = + fullpkgpath = ? + WHERE basepkgpath = ?); + ++ + # Port.pm:BuildPort() ++ ++$sql{create_view} = ++ q(CREATE TEMP VIEW RoachData AS ++ SELECT fullpkgpath, categories, fullpkgname as distname, ++ roach_url as distfiles, ++ roach_sites as master_sites, ++ maintainer, comment, portroach, ++ portroach_comment, homepage ++ FROM portsq); ++ + $sql{ports_select} = + q(SELECT fullpkgpath, categories, distname, distfiles, + master_sites, maintainer, comment, portroach, + portroach_comment, homepage +- FROM ports); ++ FROM RoachData); + + $sql{ports_select_count} = + q(SELECT COUNT(fullpkgpath) +- FROM ports); ++ FROM RoachData); + + $sql{ports_restrict_maintainer} = + q(SELECT fullpkgpath, categories, distname, distfiles, + master_sites, maintainer, comment, portroach, + portroach_comment, homepage +- FROM ports ++ FROM RoachData + WHERE maintainer like ?); + + $sql{ports_restrict_maintainer_count} = + q(SELECT COUNT(fullpkgpath) +- FROM ports ++ FROM RoachData + WHERE maintainer like ?); + + $sql{ports_restrict_category} = +- q(SELECT fullpkgpath, categories, distname, distfiles, ++ q(SELECT fullpkgpath, categories, distname, distfiles + master_sites, maintainer, comment, portroach, + portroach_comment, homepage +- FROM ports ++ FROM RoachData + WHERE categories like ?); + + $sql{ports_restrict_category_count} = + q(SELECT COUNT(fullpkgpath) +- FROM ports ++ FROM RoachData + WHERE categories like ?); + + $sql{ports_restrict_port} = + q(SELECT fullpkgpath, categories, distname, distfiles, + master_sites, maintainer, comment, portroach, + portroach_comment, homepage +- FROM ports ++ FROM RoachData + WHERE fullpkgpath like ?); + + $sql{ports_restrict_port_count} = + q(SELECT COUNT(fullpkgpath) +- FROM ports ++ FROM RoachData + WHERE fullpkgpath like ?); + + $sql{portdata_insert} = +@@ -127,11 +138,11 @@ $sql{portdata_insert} = + + $sql{sqlports_fullpkgpaths_by_maintainer} = + q(SELECT fullpkgpath +- FROM Ports ++ FROM RoachData + WHERE MAINTAINER LIKE ?); + + $sql{sqlports_count_ports} = +- q(SELECT COUNT(FULLPKGPATH) FROM Ports); ++ q(SELECT COUNT(FULLPKGPATH) FROM RoachData); + + $sql{portconfig_update} = + q(UPDATE portdata +@@ -311,7 +322,7 @@ $sql{portdata_fullpkgpaths} = FROM portdata); $sql{sqlports_check_fullpkgpath} = Index: patches/patch-Portroach_Util_pm =================================================================== RCS file: patches/patch-Portroach_Util_pm diff -N patches/patch-Portroach_Util_pm --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-Portroach_Util_pm 7 Sep 2023 13:31:42 -0000 @@ -0,0 +1,12 @@ +Index: Portroach/Util.pm +--- Portroach/Util.pm.orig ++++ Portroach/Util.pm +@@ -652,7 +652,7 @@ sub info + my @items = (@_); + my ($str, $msg); + +- # 60 is chosen as 80 - length of "(xxxx out of xxxx)" (16)" - separators. ++ # 60 is chosen so that "(xxxxx/xxxxx)" will fit + my $width = 30; + $width *= 2 if $full; +