Download raw body.
misc/portroach, attempt to support DIST_TUPLE
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
misc/portroach, attempt to support DIST_TUPLE