Index | Thread | Search

From:
Andrew Hewus Fresh <andrew@afresh1.com>
Subject:
Re: misc/portroach, attempt to support DIST_TUPLE
To:
Thomas Frohwein <tfrohwein@fastmail.com>
Cc:
Fabien ROMANO <fabienromano@gmail.com>, ports@openbsd.org, jasper@openbsd.org, Theo Buehler <tb@theobuehler.org>, Antoine Jacoutot <ajacoutot@openbsd.org>
Date:
Mon, 21 Sep 2026 17:06:48 -0700

Download raw body.

Thread
On Mon, Sep 21, 2026 at 02:25:56PM -0700, Thomas Frohwein wrote:
> On Thu, 6 Jun 2024 18:16:54 +0100
> Fabien ROMANO <fabienromano@gmail.com> wrote:
> 
> > As example I took archivers/blosc2 (GH_*) & archives/zpaqfranz
> > (DIST_TUPLE). Main difference are mastersites & distfiles from
> > portroach.db :
> > 
> > archivers/blosc2 =
> > https://github.com/Blosc/c-blosc2/archive/refs/tags/v2.14.3/ +
> > c-blosc2-2.14.3.tar.gz archives/zpaqfranz = https://github.com/ +
> > fcorbelli/zpaqfranz/archive/refs/tags/59.5.tar.gz
> > 
> > Portroach use the first one (mastersites) which does not contain
> > project/name on DIST_TUPLE. If we append distfiles to mastersites
> > before GetFiles then SiteHandler can find new version of zpaqfranz.
> > For me it's not clear yet if this should be changed somewhere
> > downside (mk implementation, sqlports, portroach build).
> 
> Based on some conversations in hackroom, I'd like to revisit this diff
> from Fabien. It seems the back and forth between DIST_TUPLE=github...
> and GH_* variables is whiplash-inducing, and the only reason that GH_*
> has been seeing more adoption again is portroach.
> 
> Can someone more knowledgeable about portroach give an opinion on this,
> or advise how to test that the output is valid?
> 
> Slightly adjusted diff (REVISION to 9 now) below.

I am very not knowledgeable about portroach, not even sure how to
actually test it.  However, looking at the example ROACH_SITES/ROACH_URL
in the example zpaqfranz port, I think this bodge should work.

It seems like we should be building `$site` with:

$site = URI->new($ROACH_URL)->abs($ROACH_SITES);

which, afaict, would do what is desired here.

$ perl -MURI -E 'say URI->new(`make show=ROACH_URL`)->abs(`make show=ROACH_SITES`)'
https://github.com/fcorbelli/zpaqfranz/archive/refs/tags/64.8.tar.gz

I didn't look at where we get `$site` in this context though.

 
> 
> > 
> > I checked quickly how SiteHandler use url and, except Mozilla.pm (but
> > does it match any port ?), including distfile into url should not be
> > a problem. But to be safe, I choose to implement a fallback, first
> > try with only mastersite and if GetFiles failed then try harder with
> > distfiles.
> > 
> > I do not run portroach in prod and I just discovered it (& perl),
> > this diff was only lightly tested on this small example. I will
> > experiment further but maybe this small diff is enough, sry if I
> > screw up something.
> > 
> > [zpaqfranz                     ] VersionCheck()
> > [zpaqfranz                     ] Checking site: https://github.com/
> > [zpaqfranz                     ] [https://github.com/           ]
> > Using dedicated site handler for site. [zpaqfranz
> > ] [https://github.com/           ] UPDATE 59.5 -> 59.7 [zpaqfranz
> >                 ] Done [blosc2                        ] VersionCheck()
> > [blosc2                        ] Checking site:
> > https://github.com/Blosc/c-blosc2/archive/refs/tags/v2.14.3/ [blosc2
> >                       ] [https://gith...s/tags/v2.14.3/] Using
> > dedicated site handler for site. [blosc2                        ]
> > [https://gith...s/tags/v2.14.3/] UPDATE 2.14.3 -> 2.14.4 [blosc2
> >                   ] Done
> > 
> > 
> > Index: Makefile
> > ===================================================================
> > RCS file: /cvs/ports/misc/portroach/Makefile,v
> > diff -u -p -r1.40 Makefile
> > --- Makefile	11 Sep 2023 14:45:35 -0000	1.40
> > +++ Makefile	6 Jun 2024 17:07:13 -0000
> > @@ -3,7 +3,7 @@ COMMENT=		OpenBSD ports distfile version
> >  GH_ACCOUNT=		jasperla
> >  GH_PROJECT=		portroach
> >  GH_TAGNAME=		2.0.11
> > -REVISION=		7
> > +REVISION=		8
> >  
> >  CATEGORIES=		misc
> >  
> > Index: patches/patch-portroach_pl
> > ===================================================================
> > RCS file: patches/patch-portroach_pl
> > diff -N patches/patch-portroach_pl
> > --- /dev/null	1 Jan 1970 00:00:00 -0000
> > +++ patches/patch-portroach_pl	6 Jun 2024 17:07:13 -0000
> > @@ -0,0 +1,30 @@
> > +Index: portroach.pl
> > +--- portroach.pl.orig
> > ++++ portroach.pl
> > +@@ -503,12 +503,21 @@ sub VersionCheck
> > + 		if (my $sh =
> > Portroach::SiteHandler->FindHandler($site))
> > + 		{
> > + 			info(0, $k, $site, 'Using dedicated site
> > handler for site.'); +-
> > +-			if (!$sh->GetFiles($site, $port, \@files)) {
> > +-				info(0, $k, $site,
> > 'SiteHandler::GetFiles() failed for ' . $site); +-
> > 		next; +-			} else {
> > ++			if ($sh->GetFiles($site, $port, \@files)) {
> > + 				$method = METHOD_HANDLER;
> > ++			} else {
> > ++				foreach my $distfile (split ' ',
> > $port->{distfiles}) ++				{
> > ++					my $uri =
> > URI->new($distfile)->abs($site); ++
> > 	if ($sh->GetFiles($uri, $port, \@files)) { ++
> > 				$method = METHOD_HANDLER; ++
> > 					last; ++
> > 			} ++				}
> > ++			}
> > ++			if ($method != METHOD_HANDLER) {
> > ++				info(0, $k, $site,
> > 'SiteHandler::GetFiles() failed for ' . $port->{distfiles});
> > ++				next;
> > + 			}
> > + 		}
> > + 		elsif ($site->scheme eq 'ftp')
> > 
> 
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/misc/portroach/Makefile,v
> diff -u -p -r1.40 Makefile
> --- Makefile	11 Sep 2023 14:45:35 -0000	1.40
> +++ Makefile	6 Jun 2024 17:07:13 -0000
> @@ -3,7 +3,7 @@ COMMENT=		OpenBSD ports distfile version
>  GH_ACCOUNT=		jasperla
>  GH_PROJECT=		portroach
>  GH_TAGNAME=		2.0.11
> -REVISION=		8
> +REVISION=		9
>  
>  CATEGORIES=		misc
>  
> Index: patches/patch-portroach_pl
> ===================================================================
> RCS file: patches/patch-portroach_pl
> diff -N patches/patch-portroach_pl
> --- /dev/null	1 Jan 1970 00:00:00 -0000
> +++ patches/patch-portroach_pl	6 Jun 2024 17:07:13 -0000
> @@ -0,0 +1,30 @@
> +Index: portroach.pl
> +--- portroach.pl.orig
> ++++ portroach.pl
> +@@ -503,12 +503,21 @@ sub VersionCheck
> + 		if (my $sh = Portroach::SiteHandler->FindHandler($site))
> + 		{
> + 			info(0, $k, $site, 'Using dedicated site handler for site.');
> +-
> +-			if (!$sh->GetFiles($site, $port, \@files)) {
> +-				info(0, $k, $site, 'SiteHandler::GetFiles() failed for ' . $site);
> +-				next;
> +-			} else {
> ++			if ($sh->GetFiles($site, $port, \@files)) {
> + 				$method = METHOD_HANDLER;
> ++			} else {
> ++				foreach my $distfile (split ' ', $port->{distfiles})
> ++				{
> ++					my $uri = URI->new($distfile)->abs($site);
> ++					if ($sh->GetFiles($uri, $port, \@files)) {
> ++						$method = METHOD_HANDLER;
> ++						last;
> ++					}
> ++				}
> ++			}
> ++			if ($method != METHOD_HANDLER) {
> ++				info(0, $k, $site, 'SiteHandler::GetFiles() failed for ' . $port->{distfiles});
> ++				next;
> + 			}
> + 		}
> + 		elsif ($site->scheme eq 'ftp')
> 

-- 
andrew

"Programming today is a race between software engineers striving to
build bigger and better idiot-proof programs, and the Universe
trying to produce bigger and better idiots. So far, the Universe is
winning."             -- Rich Cook