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

Reply via email to