Stuart Henderson wrote (2023-11-14 09:43 CET):
> On 2023/11/14 08:42, Stefan Hagen wrote:
> > Stuart Henderson wrote (2023-11-13 21:01 CET):
> > > On 2023/11/13 20:10, Stefan Hagen wrote:
> > > > Omar Polo wrote (2023-11-13 18:07 CET):
> > > > > On 2023/11/13 14:57:39 +0100, Stefan Hagen 
> > > > > <[email protected]> wrote:
> > > > > > Omar Polo wrote (2023-11-13 14:08 CET):
> > > > > 
> > > > > Here's what I had in mind.  it needs better wording but haven't come 
> > > > > up
> > > > > with something better yet.  Neither "forgename" nor "name" (nor 
> > > > > "forge")
> > > > > convey the meaning of "just put github/codeberg/gitlab/... here".
> > > > 
> > > > > +# For web forges (github, codeberg, ...) if there's a static tarball
> > > > > +# available (preferred) just use SITES and DISTNAME, otherwise
> > > > > +# DIST_TUPLE, in which case DISTNAME is not generally needed.
> > > > 
> > > > Are these sites called "forge"? It's the first time I hear "forgename".
> > > > It's clear from the context and I'm not against it. Intuitively I'd call
> > > > it sitename.
> > > > 
> > > > I like your wording. I'd either still reference dist-tupple.pattern
> > > > somewhere or include the full list.
> > > > 
> > > > > -# github:
> > > > > -# /releases/ -> preferred. ignore GH_*, just use SITES and DISTNAME.
> > > > > -# /archive/ ->  GH_ACCOUNT and GH_PROJECT, plus either GH_TAGNAME or 
> > > > > GH_COMMIT.
> > > > 
> > > 
> > > I think it's useful to show the /releases/ and /archive/ directories
> > > here, I think I would say something along these lines
> > 
> > The example works for github, gitlab and codeberg.
> > It does not apply to kde, gnome and sourcehut.
> > 
> > > > +# For web forges (codeberg, github, gitlab, kde, srht, gnome) if 
> > > > there's
> > > > +# a static tarball available (preferred) just use SITES and DISTNAME.
> > > > +# For autogenerated ones use DIST_TUPLE, in which case DISTNAME is not
> > > > +# generally needed.
> > > 
> > > I don't like the word "forge" here, I don't think it's all that well
> > > known and there's potential for confusion with sourceforge. Is it enough
> > > to just list the names?
> > 
> > What about calling them platforms?
> > 
> > > > +#DIST_TUPLE =  forgename account project tagname/commitid extractdir
> > > > +#DIST_TUPLE =  github vim vim v9.0.1677 .
> > > 
> > > perhaps showing an example here that uses a second DIST_TUPLE entry
> > > pointed at a subdir would be helpful.
> > 
> > I think I found a way to describe it in a way that reads good and is
> > understandable and contains all the information and is accurate.
> > 
> > Sorry to come up with a completely different version, but I think it's
> > better. And assuming that dist_tuple will be used a lot, it's probably
> > fine to give it a bit more space in the file.
> > 
> > Is it good?
> >  #
> > -# github:
> > -# /releases/ -> preferred. ignore GH_*, just use SITES and DISTNAME.
> > -# /archive/ ->  GH_ACCOUNT and GH_PROJECT, plus either GH_TAGNAME or 
> > GH_COMMIT.
> > +# On source code hosting platforms use static tarballs over generated ones.
> > +# It's easy to distinguish between them on github, gitlab and codeberg by
> > +# looking at the file URL:
> > +# /releases/ -> preferred. Use SITES and DISTNAME.
> > +# /archive/ -> use DIST_TUPLE (use only if there is no release version).
> >  #
> > -# set DISTNAME if using GH_COMMIT, or if using GH_TAGNAME and the tag is 
> > not in
> > -# the format "v1.00" or "1.00".
> > -#
> > -#GH_ACCOUNT =      username
> > -#GH_PROJECT =      project
> > -#GH_TAGNAME =      1.0
> > -#GH_COMMIT =       abab123456789abacafeabab123123b1e4ble4bl
> > +# platform: codeberg, github, gitlab, kde, srht, gnome
> > +# account: usually the account or organisation name
> > +# project: the project or repository name
> 
> All good up to here.
> 
> > +# tagname: source code tag like 1.0.1 or v1.0 (more creative tags require 
> > DISTNAME)
> > +# commitid: at least 10 charactes of the commit hash (requires DISTNAME)
> > +# subdir: usually ".", can be a subdir if the archive extracts to the root
> > +#DIST_TUPLE =      platform account project tagname/commitid subdir
> 
> This makes it seem like you have to use both e.g. "v1.23/ab5f63eb91".
> And actually you don't need to set DISTNAME with DIST_TUPLE and a commit
> id, though often you'd want to do so. For "more creative tags" you want
> to set PKGNAME but probably not DISTNAME.

Ah, true. I didn't see that "/" could be taken literarely here.

> That's not what subdir is for - it is when you need to move the
> files after extracting.
> 
> Truncated hashes don't work properly yet, WRKDIST isn't set correctly
> and subdir renaming doesn't work, so let's not suggest those yet.
> Can be changed later when they do.
> 
> Maybe this?
>
> # id: either a tag name or commit hash.
> #   tag names with standard tag formats, like 1.0.1 or v1.0, set an
> #   appropriate PKGNAME automatically. otherwise, set it yourself.
> #   "make show=PKGNAMES" will help identify if that's needed.
> #   for a commit hash, use the full hash (not shortened), and set PKGNAME.
> # subdir: usually ".", otherwise the extracted files are moved to another
> #   directory under WRKDIST. mostly useful for git submodules.
> 
> #DIST_TUPLE = platform account project id subdir

That's perfect. I took your text verbatim and just capitalized the start
of some sentences.

More comments or ok to commit?

Index: infrastructure/templates/Makefile.template
===================================================================
RCS file: /cvs/ports/infrastructure/templates/Makefile.template,v
diff -u -p -u -p -r1.99 Makefile.template
--- infrastructure/templates/Makefile.template  15 Oct 2023 11:22:01 -0000      
1.99
+++ infrastructure/templates/Makefile.template  14 Nov 2023 08:54:13 -0000
@@ -36,17 +36,23 @@ DISTNAME =  ???
 #PKGNAME-foo = ???     for multi packages
 
 #
-# github:
-# /releases/ -> preferred. ignore GH_*, just use SITES and DISTNAME.
-# /archive/ ->  GH_ACCOUNT and GH_PROJECT, plus either GH_TAGNAME or GH_COMMIT.
+# On source code hosting platforms use static tarballs over generated ones.
+# It's easy to distinguish between them on github, gitlab and codeberg by
+# looking at the file URL:
+# /releases/ -> preferred. Use SITES and DISTNAME.
+# /archive/ -> use DIST_TUPLE (use only if there is no release version).
 #
-# set DISTNAME if using GH_COMMIT, or if using GH_TAGNAME and the tag is not in
-# the format "v1.00" or "1.00".
-#
-#GH_ACCOUNT =  username
-#GH_PROJECT =  project
-#GH_TAGNAME =  1.0
-#GH_COMMIT =   abab123456789abacafeabab123123b1e4ble4bl
+# platform: codeberg, github, gitlab, kde, srht, gnome
+# account: usually the account or organisation name
+# project: the project or repository name
+# id: either a tag name or commit hash.
+#   Tag names with standard tag formats, like 1.0.1 or v1.0, set an
+#   appropriate PKGNAME automatically. Otherwise, set it yourself.
+#   "make show=PKGNAMES" will help identify if that's needed.
+#   For a commit hash, use the full hash (not shortened), and set PKGNAME.
+# subdir: usually ".", otherwise the extracted files are moved to another
+#   directory under WRKDIST. Mostly useful for git submodules.
+#DIST_TUPLE =  platform account project id subdir
 
 # for any port that creates shared libraries.
 # both libtool and cmake automatically set filenames based on this variable.

Reply via email to