On Sat, Aug 05, 2023 at 11:27:24PM +0200, Marc Espie wrote: > Some comments already. I haven't looked very closely.
> On Sat, Aug 05, 2023 at 03:12:18PM -0400, Thomas Frohwein wrote: > > The current draft hijacks post-extract target, but it would be easy to > > add this to _post-extract-finalize in bsd.port.mk similar to how the > > post-extract commands from modules are handled, if this is of interest. > > Please do that. Thanks, I updated the draft. Realized that including it with MODULES=github is easiest and then this can just use MODGITHUB_post-extract and doesn't need any custom code in bsd.port.mk. I had a thinko in post-extract (needs to be '||', not '&&') which is also corrected. > > # where submodule distfiles will be stored > > GHSM_DIST_SUBDIR ?= gh-submodules > > Please keep to the GH_* subspace. > > Already, modules usually use MOD* variable names, but in the GH case, that > would be a bit long. I renamed GHSM_* to GH_*. I wouldn't mind using MODGH_* if that's an option, but MODGITHUB_* would be pretty unwieldy, especially if we were to make the existing GH_{ACCOUNT,PROJECT,TAGNAME} etc. part of this. [...] > Please do a single loop. That's slightly more readable for me. yes, done. [...] > Also please draft a diff for port-modules(5) I'm attaching a diff for port-modules.5, along with the updated github.port.mk. > I'm also wondering if keeping the main GH_* stuff in bsd.port.mk makes a lot > of sense, instead of grouping everything in github.port.mk I'm for it, maybe as a second step after the module for just the submodule handling is done because there would be a lot of ports churn with moving the main GH_* stuff out of bsd.port.mk.
# List of static dependencies. The format is: # account project tag_or_commit target_dir # license # Example: # GH_SUBMODULES += moonlight-stream moonlight-common-c \ # c9426a6a71c4162e65dde8c0c71a25f1dbca46ba \ # third-party/moonlight-common-c # GPL-v3.0+ GH_SUBMODULES ?= # Master site for github tarballs GH_MASTER_SITES ?= https://github.com/ # where submodule distfiles will be stored GH_DIST_SUBDIR ?= gh-submodules # where submodules will be extracted to GH_WRKSRC ?= ${WRKSRC} # Grab submodules by default with MASTER_SITES8. (Don't use 9 to avoid collision # with language-specific mechanisms, like devel/cargo or lang/go.) GH_MASTER_SITESN ?= 8 MASTER_SITES${GH_MASTER_SITESN} ?= ${GH_MASTER_SITES} # Default GitHub distfile suffix GH_SUFX ?= .tar.gz .if defined(DISTNAME) DISTFILES ?= ${DISTNAME}${EXTRACT_SUFX} .elif !empty(GH_ACCOUNT) && !empty(GH_PROJECT) DISTFILES ?= ${GH_DISTFILE} .endif # post-extract target for moving the submodules to GH_WRKSRC MODGITHUB_post-extract = \ @${ECHO_MSG} "moving GitHub submodules to ${GH_WRKSRC}" ; \ mkdir -p ${GH_WRKSRC} ; .for _ghaccount _ghproject _ghtagcommit _targetdir in ${GH_SUBMODULES} DISTFILES += ${GH_DIST_SUBDIR}/{}${_ghaccount}/${_ghproject}/archive/${_ghtagcommit}${GH_SUFX}:${GH_MASTER_SITESN} MODGITHUB_post-extract += \ test -d ${GH_WRKSRC}/${_targetdir} && \ rm -rf ${GH_WRKSRC}/${_targetdir} ; \ mv ${WRKDIR}/${_ghproject}-${_ghtagcommit} ${GH_WRKSRC}/${_targetdir} ; .endfor
Index: port-modules.5 =================================================================== RCS file: /cvs/src/share/man/man5/port-modules.5,v retrieving revision 1.264 diff -u -p -r1.264 port-modules.5 --- port-modules.5 9 May 2023 19:44:06 -0000 1.264 +++ port-modules.5 6 Aug 2023 01:48:22 -0000 @@ -744,6 +744,15 @@ contains c++, this module provides .Ev MODGCC4_CPPLIBDEP and .Ev MODGCC4_CPPWANTLIB . +.It github +Set +.Li GH_SUBMODULES += w x y z +for each GitHub submodule to be used in the port, specifying GitHub account, project, commit hash, and the target directory relative to +.Ev GH_WRKSRC +.Po +defaults to +.Ev WRKSRC +.Pc . .It gnu This module is documented in the main .Xr bsd.port.mk 5