Re: git: 16bde072b16d - main - bsd.sites.mk: Support tag names with USE_GITLAB
Date: Wed, 12 Jul 2023 22:15:13 UTC
Hello Felix, Nice work! Thats nice to see clean distnames with this change: -SHA256 (libinput-libei-xxx*_GL0*.tar.gz) = xxx +SHA256 (libei-1.0.0.tar.bz2) = yyy Isn't possible to have same result with USE_GITHUB? SHA256 (ib-xarchiver-0.5.4.21*_GH0*.tar.gz) = xxx like we have when github static tarballs are available and we use MASTER_SITES instead of USE_GITHUB: MASTER_SITES= https://github.com/juzzlin/Heimer/releases/download/${DISTVERSION}/ SHA256 (heimer-4.2.0.tar.gz) = xxx (without *_GH0*) Thanks, Felix Palmen <zirias@freebsd.org> escreveu no dia quarta, 12/07/2023 à(s) 19:58: > The branch main has been updated by zirias: > > URL: > https://cgit.FreeBSD.org/ports/commit/?id=16bde072b16daca1c886116e602c94b5fa99c20f > > commit 16bde072b16daca1c886116e602c94b5fa99c20f > Author: Felix Palmen <zirias@FreeBSD.org> > AuthorDate: 2022-10-21 07:10:41 +0000 > Commit: Felix Palmen <zirias@FreeBSD.org> > CommitDate: 2023-07-12 18:55:08 +0000 > > bsd.sites.mk: Support tag names with USE_GITLAB > > Since quite some time, it's possible to download generated tarballs > from > gitlab for a tag name without knowing the corresponding git hash. This > is preferable because you have a single source of truth about the > software version. > > Support this by replacing GL_COMMIT with GL_TAGNAME which also accepts > a > commit hash, similar to USE_GITHUB. Unfortunately, there's a catch, the > DISTFILE must be named exactly: ${GL_PROJECT}-${GL_TAGNAME}.tar.bz2, > otherwise it extracts in a directory that contains the commit hash. So, > we can't add the gitlab account or the revision suffix to make it work. > > Therefore, detect whether GL_TAGNAME contains a commit hash, and if it > does, use the old behavior of deriving DISTNAME and DISTFILES. > > Document in CHANGES, also add a DEV_WARNING similar to USE_GITHUB when > there's an URL in MASTER_SITES that looks like a gitlab URL. With > support for tags, there shouldn't be any reason left to hardcode such > an > URL in MASTER_SITES. > > PR: 248967 > Approved by: portmgr (tcberner, mentor) > Differential Revision: https://reviews.freebsd.org/D37077 > --- > CHANGES | 16 ++++++++++++++ > Mk/Uses/kde.mk | 2 +- > Mk/Uses/xorg-cat.mk | 2 +- > Mk/bsd.options.mk | 2 +- > Mk/bsd.port.mk | 8 +------ > Mk/bsd.sites.mk | 61 > +++++++++++++++++++++++++++++++++++++---------------- > 6 files changed, 63 insertions(+), 28 deletions(-) > > diff --git a/CHANGES b/CHANGES > index 5e98b3ee86a4..25c7d5fa12a9 100644 > --- a/CHANGES > +++ b/CHANGES > @@ -10,6 +10,22 @@ in the release notes and/or placed into UPDATING. > > All ports committers are allowed to commit to this file. > > +20230712: > +AUTHOR: zirias@FreeBSD.org > + > + USE_GITLAB has been changed to allow fetching by tag name. This was > done by > + removing the GL_COMMIT variable and introducing GL_TAGNAME instead. > + > + Similar to USE_GITHUB/GH_TAGNAME, you can still use a commit hash with > + GL_TAGNAME (the full 40-character hash is required for that). If not > + specified, GL_TAGNAME defaults to DISTVERSIONFULL. > + > + Note fetching by tag name might not work on gitlab installations running > + very old versions; in that case, you must still specify a commit hash. > + > + For now, GL_COMMIT is still recognized but deprecated, using it will > issue > + a warning in developer mode. > + > 20230712: > AUTHOR: 0mp@FreeBSD.org > > diff --git a/Mk/Uses/kde.mk b/Mk/Uses/kde.mk > index aa9e2f39fbc4..863fe85d0c17 100644 > --- a/Mk/Uses/kde.mk > +++ b/Mk/Uses/kde.mk > @@ -134,7 +134,7 @@ USE_GITLAB= yes > GL_SITE= https://invent.kde.org > GL_ACCOUNT= ${_invent_category} > GL_PROJECT= ${_invent_name} > -GL_COMMIT= ${_invent_hash} > +GL_TAGNAME= ${_invent_hash} > . endif > . endif > > diff --git a/Mk/Uses/xorg-cat.mk b/Mk/Uses/xorg-cat.mk > index 3b64eecad9ae..0853fd6b3e3c 100644 > --- a/Mk/Uses/xorg-cat.mk > +++ b/Mk/Uses/xorg-cat.mk > @@ -26,7 +26,7 @@ > # * meson (experimental) > # > # > -# By defining USE_GITLAB and GL_COMMIT, it is possible to pull code > straight > +# By defining USE_GITLAB and GL_TAGNAME, it is possible to pull code > straight > # from the freedesktop.org gitlab, instead of official release tarballs. > # > #.MAINTAINER: x11@FreeBSD.org > diff --git a/Mk/bsd.options.mk b/Mk/bsd.options.mk > index 90af39e1bed5..09656bb0e1e9 100644 > --- a/Mk/bsd.options.mk > +++ b/Mk/bsd.options.mk > @@ -184,7 +184,7 @@ _OPTIONS_FLAGS= ALL_TARGET BROKEN > CABAL_EXECUTABLES CATEGORIES CFLAGS CONFIGURE_ > CONFLICTS CONFLICTS_BUILD CONFLICTS_INSTALL CPPFLAGS > CXXFLAGS \ > DESKTOP_ENTRIES DISTFILES EXTRA_PATCHES EXTRACT_ONLY \ > GH_ACCOUNT GH_PROJECT GH_SUBDIR GH_TAGNAME GH_TUPLE \ > - GL_ACCOUNT GL_COMMIT GL_PROJECT GL_SITE GL_SUBDIR GL_TUPLE > \ > + GL_ACCOUNT GL_PROJECT GL_SITE GL_SUBDIR GL_TAGNAME > GL_TUPLE \ > IGNORE INFO INSTALL_TARGET LDFLAGS LIBS MAKE_ARGS MAKE_ENV > \ > MASTER_SITES PATCHFILES PATCH_SITES PLIST_DIRS PLIST_FILES > \ > PLIST_SUB PORTDOCS PORTEXAMPLES SUB_FILES SUB_LIST \ > diff --git a/Mk/bsd.port.mk b/Mk/bsd.port.mk > index 5e3c2e7fad2f..9f6dfb0452c1 100644 > --- a/Mk/bsd.port.mk > +++ b/Mk/bsd.port.mk > @@ -1725,7 +1725,7 @@ WRKSRC?= > ${WRKDIR}/${GH_PROJECT_DEFAULT}-${GH_TAGNAME_EXTRACT} > . if defined(WRKSRC) > DEV_WARNING+= "You are using USE_GITLAB and WRKSRC is set which is > wrong. Set GL_PROJECT, GL_ACCOUNT correctly, and/or set WRKSRC_SUBDIR and > remove WRKSRC entirely." > . endif > -WRKSRC?= ${WRKDIR}/${GL_PROJECT}-${GL_COMMIT} > +WRKSRC?= ${WRKDIR}/${GL_PROJECT}-${GL_TAGNAME} > . endif > > # If the distname is not extracting into a specific subdirectory, have the > @@ -2963,12 +2963,6 @@ DEPENDS_ARGS+= NOCLEANDEPENDS=yes > . endif > . endif > > -. if defined(USE_GITLAB) && !${USE_GITLAB:Mnodefault} && > empty(GL_COMMIT_DEFAULT) > -check-makevars:: > - @${ECHO_MSG} "GL_COMMIT is a required 40 character hash for use > USE_GITLAB" > - @${FALSE} > -. endif > - > ################################################################ > # > # Do preliminary work to detect if we need to run the config > diff --git a/Mk/bsd.sites.mk b/Mk/bsd.sites.mk > index 78cb71593c4f..c6bee3798d56 100644 > --- a/Mk/bsd.sites.mk > +++ b/Mk/bsd.sites.mk > @@ -268,10 +268,10 @@ IGNORE?= Using master as GH_TAGNAME is invalid. \ > . if defined(GH_TUPLE) > . for _tuple in ${GH_TUPLE} > _t_tmp=${_tuple} > -. if ${_t_tmp:C@^([^:]*):([^:]*):([^:]*)((:[^:/]*)?)((/.*)?)@\4@ > :S/://:C/[a-zA-Z0-9_]//g} > +. if ${_t_tmp:C@^([^:]*):([^:]*):([^:]*)((:[^:/]*)?)((/.*)?)@\4@ > :S/://:C/[a-zA-Z0-9_.+-]//g} > check-makevars:: > @${ECHO_MSG} "The ${_tuple} GH_TUPLE line has" > - @${ECHO_MSG} "a tag containing something else than [a-zA-Z0-9_]" > + @${ECHO_MSG} "a tag containing something else than [a-zA-Z0-9_.+-]" > @${FALSE} > . endif > . endfor > @@ -405,6 +405,11 @@ WWW?= > https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/ > . endif # defined(USE_GITHUB) > .endif # !defined(IGNORE_MASTER_SITE_GITHUB) > > +# Keep this before USE_GITLAB > +.if !empty(MASTER_SITES:M*//*/*/*/-/archive/${DISTVERSIONFULL}/) > +DEV_WARNING+= "MASTER_SITES contains > ${MASTER_SITES:M*//*/*/*/-/archive/${DISTVERSIONFULL}/}, please use > USE_GITLAB instead." > +.endif > + > .if !defined(IGNORE_MASTER_SITE_GITLAB) > # > # In order to use GitLab your port must define USE_GITLAB and the > following > @@ -419,34 +424,40 @@ WWW?= > https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/ > # GL_PROJECT - name of the project on GitLab > # default: ${PORTNAME} > # > -# GL_COMMIT - the commit hash of the repository, must be the full > hash and > -# is a required variable for GitLab. > +# GL_TAGNAME - name of the tag to download (2.0.1, hash, ...) > +# Using the name of a branch here is incorrect. It is > +# possible to do GL_TAGNAME= GIT_HASH to do a snapshot. > +# default: ${DISTVERSIONFULL} > # > # GL_SUBDIR - directory relative to WRKSRC where to move this > distfile's > # content after extracting. > # > -# GL_TUPLE - above shortened to > [site[:port][/webroot]:]account:project:commit:group[/subdir] > +# GL_TUPLE - above shortened to > [site[:port][/webroot]:]account:project:tagname:group[/subdir] > # > . if defined(USE_GITLAB) > +. if !defined(GL_TAGNAME) && defined(GL_COMMIT) > +GL_TAGNAME= ${GL_COMMIT} > +DEV_WARNING+= "GL_COMMIT is deprecated, please use GL_TAGNAME instead" > +. endif > . if defined(GL_TUPLE) > . for _tuple in ${GL_TUPLE} > -. if ${_tuple:C@ > ^(([^:]*://[^:/]*(:[0-9]{1,5})?(/[^:]*[^/])?:)?)([^:]*):([^:]*):([^:]*)(:[^:/]*)((/.*)?)@\7@ > :S/^://:C/[a-f0-9]{40}//g} > +. if ${_tuple:C@ > ^(([^:]*://[^:/]*(:[0-9]{1,5})?(/[^:]*[^/])?:)?)([^:]*):([^:]*):([^:]*)(:[^:/]*)((/.*)?)@\7@ > :S/^://:C/[a-zA-Z0-9_.+-]//g} > check-makevars:: > @${ECHO_MSG} "The ${_tuple}" > - @${ECHO_MSG} "GL_TUPLE is improperly formatted or, the commit" > - @${ECHO_MSG} "section contains something other than [a-f0-9]" > + @${ECHO_MSG} "GL_TUPLE is improperly formatted or, the tagname" > + @${ECHO_MSG} "section contains something other than > [a-zA-Z0-9_.+-]" > @${FALSE} > . endif > . endfor > GL_SITE+= ${GL_TUPLE:C@ > ^(([^:]*://[^:/]*(:[0-9]{1,5})?(/[^:]*[^/])?:)?)([^:]*):([^:]*):([^:]*)(:[^:/]*)((/.*)?)@\1\8@ > :S@::@:@} > GL_ACCOUNT+= ${GL_TUPLE:C@ > ^(([^:]*://[^:/]*(:[0-9]{1,5})?(/[^:]*[^/])?:)?)([^:]*):([^:]*):([^:]*)(:[^:/]*)((/.*)?)@\5\8@ > } > GL_PROJECT+= ${GL_TUPLE:C@ > ^(([^:]*://[^:/]*(:[0-9]{1,5})?(/[^:]*[^/])?:)?)([^:]*):([^:]*):([^:]*)(:[^:/]*)((/.*)?)@\6\8@ > } > -GL_COMMIT+= ${GL_TUPLE:C@ > ^(([^:]*://[^:/]*(:[0-9]{1,5})?(/[^:]*[^/])?:)?)([^:]*):([^:]*):([^:]*)(:[^:/]*)((/.*)?)@\7\8@ > } > +GL_TAGNAME+= ${GL_TUPLE:C@ > ^(([^:]*://[^:/]*(:[0-9]{1,5})?(/[^:]*[^/])?:)?)([^:]*):([^:]*):([^:]*)(:[^:/]*)((/.*)?)@\7\8@ > } > GL_SUBDIR+= ${GL_TUPLE:C@ > ^(([^:]*://[^:/]*(:[0-9]{1,5})?(/[^:]*[^/])?:)?)([^:]*):([^:]*):([^:]*)(:[^:/]*)((/.*)?)@\9\8@ > :M/*:S/^\///} > . endif > > . if empty(USE_GITLAB:Mnodefault) > -MASTER_SITES+= > ${GL_SITE}/${GL_ACCOUNT}/${GL_PROJECT}/-/archive/${GL_COMMIT}.tar.gz?dummy=/ > +MASTER_SITES+= > ${GL_SITE}/${GL_ACCOUNT}/${GL_PROJECT}/-/archive/${GL_TAGNAME:C@ > ^[a-f0-9]{40}$@\0.tar.gz?dummy=@}/ > . endif > GL_SITE_DEFAULT= https://gitlab.com > GL_SITE?= ${GL_SITE_DEFAULT} > @@ -454,8 +465,10 @@ GL_ACCOUNT_DEFAULT= ${PORTNAME} > GL_ACCOUNT?= ${GL_ACCOUNT_DEFAULT} > GL_PROJECT_DEFAULT= ${PORTNAME} > GL_PROJECT?= ${GL_PROJECT_DEFAULT} > +GL_TAGNAME_DEFAULT= ${DISTVERSIONFULL} > +GL_TAGNAME?= ${GL_TAGNAME_DEFAULT} > _GITLAB_GROUPS= DEFAULT > -. for _gl_v in GL_SITE GL_ACCOUNT GL_PROJECT GL_COMMIT GL_SUBDIR > +. for _gl_v in GL_SITE GL_ACCOUNT GL_PROJECT GL_TAGNAME GL_SUBDIR > . for _v_ex in ${${_gl_v}} > _GL_GROUPS= ${_v_ex:S/^${_v_ex:C@:[^/:]+$@@}//:S/^://} > . if !empty(_GL_GROUPS) > @@ -479,18 +492,24 @@ ${_gl_v}_DEFAULT= ${_v_ex:C@^(.*):[^/:]+$@\1@} > GL_SITE:= ${GL_SITE_DEFAULT} > GL_ACCOUNT:= ${GL_ACCOUNT_DEFAULT} > GL_PROJECT:= ${GL_PROJECT_DEFAULT} > -GL_COMMIT:= ${GL_COMMIT_DEFAULT} > +GL_TAGNAME:= ${GL_TAGNAME_DEFAULT} > GL_SUBDIR:= ${GL_SUBDIR_DEFAULT} > > _GITLAB_REV= 0 > > -_GITLAB_EXTRACT_SUFX= .tar.gz > +_GITLAB_EXTRACT_SUFX= .tar.gz > +_GITLAB_TAG_EXTRACT_SUFX= .tar.bz2 > > _GITLAB_CLONE_DIR?= ${WRKDIR}/git-clone > _PORTS_DIRECTORIES+= ${_GITLAB_CLONE_DIR} > . if !${USE_GITLAB:Mnodefault} > -DISTNAME:= ${GL_ACCOUNT}-${GL_PROJECT}-${GL_COMMIT}_GL${_GITLAB_REV} > +. if ${GL_TAGNAME:C/^[a-f0-9]{40}$//} > +DISTNAME:= ${GL_PROJECT}-${GL_TAGNAME} > +DISTFILES+= ${DISTNAME}${_GITLAB_TAG_EXTRACT_SUFX} > +. else > +DISTNAME:= ${GL_ACCOUNT}-${GL_PROJECT}-${GL_TAGNAME}_GL${_GITLAB_REV} > DISTFILES+= ${DISTNAME}${_GITLAB_EXTRACT_SUFX} > +. endif > git-clone: git-clone-DEFAULT > git-clone-DEFAULT: ${_GITLAB_CLONE_DIR} > @git clone > ${GL_SITE_DEFAULT}/${GL_ACCOUNT_DEFAULT}/${GL_PROJECT_DEFAULT}.git > ${_GITLAB_CLONE_DIR}/${GL_PROJECT_DEFAULT} > @@ -512,12 +531,18 @@ GL_SITE_${_group}= ${GL_SITE_DEFAULT} > GL_ACCOUNT_${_group}?= ${GL_ACCOUNT_DEFAULT} > GL_PROJECT_${_group}?= ${GL_PROJECT_DEFAULT} > > -_GL_TUPLE_OUT:= ${_GL_TUPLE_OUT} > ${GL_SITE_${_group}}:${GL_ACCOUNT_${_group}}:${GL_PROJECT_${_group}}:${GL_COMMIT_${_group}}:${_group}/${GL_SUBDIR_${_group}} > -DISTNAME_${_group}:= > ${GL_ACCOUNT_${_group}}-${GL_PROJECT_${_group}}-${GL_COMMIT_${_group}}_GL${_GITLAB_REV} > +_GL_TUPLE_OUT:= ${_GL_TUPLE_OUT} > ${GL_SITE_${_group}}:${GL_ACCOUNT_${_group}}:${GL_PROJECT_${_group}}:${GL_TAGNAME_${_group}}:${_group}/${GL_SUBDIR_${_group}} > +. if ${GL_TAGNAME_${_group}:C/^[a-f0-9]{40}$//} > +DISTNAME_${_group}:= ${GL_PROJECT_${_group}}-${GL_TAGNAME_${_group}} > +DISTFILE_${_group}:= ${DISTNAME_${_group}}${_GITLAB_TAG_EXTRACT_SUFX} > +MASTER_SITES:= ${MASTER_SITES} > ${GL_SITE_${_group}}/${GL_ACCOUNT_${_group}}/${GL_PROJECT_${_group}}/-/archive/${GL_TAGNAME_${_group}}/:${_group} > +. else > +DISTNAME_${_group}:= > ${GL_ACCOUNT_${_group}}-${GL_PROJECT_${_group}}-${GL_TAGNAME_${_group}}_GL${_GITLAB_REV} > DISTFILE_${_group}:= ${DISTNAME_${_group}}${_GITLAB_EXTRACT_SUFX} > +MASTER_SITES:= ${MASTER_SITES} > ${GL_SITE_${_group}}/${GL_ACCOUNT_${_group}}/${GL_PROJECT_${_group}}/-/archive/${GL_TAGNAME_${_group}}.tar.gz?dummy=/:${_group} > +. endif > DISTFILES:= ${DISTFILES} ${DISTFILE_${_group}}:${_group} > -MASTER_SITES:= ${MASTER_SITES} > ${GL_SITE_${_group}}/${GL_ACCOUNT_${_group}}/${GL_PROJECT_${_group}}/-/archive/${GL_COMMIT_${_group}}.tar.gz?dummy=/:${_group} > -WRKSRC_${_group}:= > ${WRKDIR}/${GL_PROJECT_${_group}}-${GL_COMMIT_${_group}} > +WRKSRC_${_group}:= > ${WRKDIR}/${GL_PROJECT_${_group}}-${GL_TAGNAME_${_group}} > . if !empty(GL_SUBDIR_${_group}) > _SITES_extract:= ${_SITES_extract} 690:post-extract-gl-${_group} > post-extract-gl-${_group}: > -- Nuno Teixeira FreeBSD Committer (ports)