on extracted directory Reply-To: In-Reply-To: <ZQLhBiwtsYKqkZQa@local>
On Thu, Sep 14, 2023 at 12:31:34PM +0200, Sebastien Marie wrote: > Hi, > > When trying to add codeberg to DIST_TUPLE stuff, I had a problem with the > name > used to extract the downloaded tarball. > > codeberg.org is using the following scheme: > the downloaded file is at: > https://codeberg.org/<account>/<project>/archive/<id>.tar.gz > the tarball extracts at ${WRKDIR}/<project>/ (and not > ${WRKDIR}/<project>-<tag>/ as expected by DIST_TUPLE) > > So I customized a bit dist-tuple.port.mk to be able to use a template for > this name. > > The variable is named TEMPLATE_WRKSRC.x (using WRKSRC for the similarity with > a > port with only one distfile). But I am unsure about the name. > > The following patch adds the machinery (and the doc) for using > TEMPLATE_WRKSRC., > and adds also codeberg in templates. > > I tested several github ports which differents schemes, but more testing will > be > appreciate. > > Thanks. > -- > Sebastien Marie > > diff /home/semarie/repos/openbsd/ports > commit - d3b35887e0ba204a5916da1942dd81f98bfc2148 > path + /home/semarie/repos/openbsd/ports > blob - b4bf842539bf825f55e78520f17b026f654419bb > file + infrastructure/mk/dist-tuple.port.mk > --- infrastructure/mk/dist-tuple.port.mk > +++ infrastructure/mk/dist-tuple.port.mk > @@ -38,9 +38,10 @@ HOMEPAGE ?= > ${TEMPLATE_HOMEPAGE.${_template}:S/<accoun > > . if "${_targetdir}" != "." > MODDIST-TUPLE_post-extract += \ > + > s=${TEMPLATE_WRKSRC.${_template}:S/<account>/${_account}/g:S/<project>/${_project}/g:S/<id>/${_id:S/refs\/tags\///:S/^v//}/g:S/<subdir>/${_subdir}/g}; > \ > t=${WRKDIST}/${_targetdir}; [[ -d $$t ]] && rmdir $$t \ > || mkdir -p `dirname $$t` ; \ > - mv ${WRKDIR}/${_project}-${_id:S/refs\/tags\///:S/^v//} $$t; > + mv ${WRKDIR}/$$s $$t; > . endif > > . endfor > diff /home/semarie/repos/openbsd/ports > commit - d3b35887e0ba204a5916da1942dd81f98bfc2148 > path + /home/semarie/repos/openbsd/ports > blob - 3b11da9f1f4ef0be05caace3865d55f51d70d92c > file + infrastructure/db/dist-tuple.pattern > --- infrastructure/db/dist-tuple.pattern > +++ infrastructure/db/dist-tuple.pattern > @@ -1,9 +1,11 @@ > # known MASTER_SITES.x > +MASTER_SITES.codeberg ?= https://codeberg.org/ > MASTER_SITES.github ?= https://github.com/ > MASTER_SITES.gitlab ?= https://gitlab.com/ > MASTER_SITES.srht ?= https://git.sr.ht/ > > # EXTRACT_SUFX.x for each site > +EXTRACT_SUFX.codeberg ?= .tar.gz > EXTRACT_SUFX.github ?= .tar.gz > EXTRACT_SUFX.gitlab ?= .tar.gz > EXTRACT_SUFX.srht ?= .tar.gz > @@ -13,6 +15,9 @@ EXTRACT_SUFX.srht ?= .tar.gz > # - <project> > # - <id> > # - <subdir> - used automatically if <id> is in tag format > +TEMPLATE_DISTFILES.codeberg ?= \ > + > <account>-<project>-{<account>/<project>/archive/}<id>${EXTRACT_SUFX.codeberg} > + > TEMPLATE_DISTFILES.github ?= \ > > <account>-<project>-{<account>/<project>/archive/<subdir>}<id>${EXTRACT_SUFX.github} > > @@ -23,6 +28,13 @@ TEMPLATE_DISTFILES.srht ?= \ > > <account>-<project>-{~<account>/<project>/archive/}<id>${EXTRACT_SUFX.srht} > > # templates for HOMEPAGE; same substitutions as for DISTFILES.x > +TEMPLATE_HOMEPAGE.codeberg ?= https://codeberg.org/<account>/<project> > TEMPLATE_HOMEPAGE.github ?= https://github.com/<account>/<project> > TEMPLATE_HOMEPAGE.gitlab ?= https://gitlab.com/<account>/<project> > TEMPLATE_HOMEPAGE.srht ?= https://git.sr.ht/~<account>/<project> > + > +# templates for extraction; same substitutions as for DISTFILES.x > +TEMPLATE_WRKSRC.codeberg ?= <project> > +TEMPLATE_WRKSRC.github ?= <project>-<id> > +TEMPLATE_WRKSRC.gitlab ?= <project>-<id> > +TEMPLATE_WRKSRC.srht ?= <project>-<id> > diff /home/semarie/repos/openbsd/src > commit - 5f7ea7bc25406ceab417284d038129723f0423a2 > path + /home/semarie/repos/openbsd/src > blob - 099febdff4c5d7dba8b8aff137831c91abb57364 > file + share/man/man5/bsd.port.mk.5 > --- share/man/man5/bsd.port.mk.5 > +++ share/man/man5/bsd.port.mk.5 > @@ -1648,6 +1648,7 @@ List of distfile templates to use, each consisting of > The template > .Ar name > should be one of > +.Sq codeberg , > .Sq github , > .Sq gitlab , > or > @@ -1656,7 +1657,8 @@ at the moment > .Po see > .Pa ${PORTSDIR}/db/dist-tuple.pattern , > additional > -.Ev TEMPLATE_DISTFILES.<name> > +.Ev TEMPLATE_DISTFILES.<name> , > +.Ev TEMPLATE_WRKSRC.<name> > and > .Ev TEMPLATE_HOMEPAGE.<name> > entries can be added as needed > @@ -3452,6 +3454,12 @@ when using > .Ev DIST_TUPLE . > Very similar to > .Ev TEMPLATE_DISTFILES.<name> . > +.It Ev TEMPLATE_WRKSRC.<name> > +Template for automatically generated the name of the source > +directory extracted when using > +.Ev DIST_TUPLE . > +Very similar to > +.Ev TEMPLATE_DISTFILES.<name> . > .It Ev TEST_DEPENDS > See > .Ev BUILD_DEPENDS > the only reason I use t in the fragment is because it's used twice, and hence shorter in the result produced. You got to realize that fragments get potentially very long. Now, s only makes things longer. I'm also not a fan of the name "WRKSRC" for the value you propose. It would be way more consistent to start with +TEMPLATE_WRKSRC.codeberg ?= ${WRKDIR}/<project> instead, just so that people get lost a bit less. (eithe that, or use TEMPLATE_EXTRACT.codeberg ?= )
