mirror of
https://git.FreeBSD.org/ports.git
synced 2025-01-29 10:18:30 +00:00
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
This commit is contained in:
parent
7427b14c29
commit
16bde072b1
16
CHANGES
16
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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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 \
|
||||
|
@ -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
|
||||
|
@ -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}:
|
||||
|
Loading…
Reference in New Issue
Block a user