diff --git a/CHANGES b/CHANGES --- a/CHANGES +++ b/CHANGES @@ -10,6 +10,22 @@ 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 --- a/Mk/Uses/kde.mk +++ b/Mk/Uses/kde.mk @@ -134,7 +134,7 @@ 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 --- 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 --- a/Mk/bsd.options.mk +++ b/Mk/bsd.options.mk @@ -184,7 +184,7 @@ 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 --- a/Mk/bsd.port.mk +++ b/Mk/bsd.port.mk @@ -1725,7 +1725,7 @@ . 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 @@ . 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 --- a/Mk/bsd.sites.mk +++ b/Mk/bsd.sites.mk @@ -268,10 +268,10 @@ . 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 @@ . 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 @@ # 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?= ${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_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_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}: