aboutsummaryrefslogtreecommitdiffstats
path: root/Mk/bsd.sites.mk
diff options
context:
space:
mode:
authormat <mat@FreeBSD.org>2018-03-01 20:58:53 +0800
committermat <mat@FreeBSD.org>2018-03-01 20:58:53 +0800
commita58eea2893659459aaff7dde56bf819ec112eda4 (patch)
treed55eacd770eb9290b8acf684b805138ce7155ffe /Mk/bsd.sites.mk
parent91c10be6e18ee659b886b509f7907eb91a842ba3 (diff)
downloadfreebsd-ports-gnome-a58eea2893659459aaff7dde56bf819ec112eda4.tar.gz
freebsd-ports-gnome-a58eea2893659459aaff7dde56bf819ec112eda4.tar.zst
freebsd-ports-gnome-a58eea2893659459aaff7dde56bf819ec112eda4.zip
Fix a sub-submodule extraction problem with GH_SUBDIR.
The problem is that GH_SUBDIR are handled in a somewhat random manner. (The truth is that in the end of things, they end up being sorted by the group name being used in the GH_TUPLE.) So if you have a submodule in bar/foo, and a sub-submodule in bar/foo/baz, it may happen that foo/bar/baz is handled before foo/bar and then things are messed up. This makes it so the GH_SUBDIR target handling is sorted first by the number of / in the path. (So, bar/foo is always handled before bar/foo/baz.) PR: 226221 Reported by: ygy Sponsored by: Absolight Differential Revision: https://reviews.freebsd.org/D14532
Diffstat (limited to 'Mk/bsd.sites.mk')
-rw-r--r--Mk/bsd.sites.mk5
1 files changed, 4 insertions, 1 deletions
diff --git a/Mk/bsd.sites.mk b/Mk/bsd.sites.mk
index 6b1b18c75c38..d38a23b1845f 100644
--- a/Mk/bsd.sites.mk
+++ b/Mk/bsd.sites.mk
@@ -486,7 +486,10 @@ DISTFILES:= ${DISTFILES} ${DISTFILE_${_group}}:${_group}
MASTER_SITES:= ${MASTER_SITES} ${MASTER_SITE_GITHUB:S@%SUBDIR%@${GH_ACCOUNT_${_group}}/${GH_PROJECT_${_group}}/tar.gz/${GH_TAGNAME_${_group}}?dummy=/:${_group}@}
WRKSRC_${_group}:= ${WRKDIR}/${GH_PROJECT_${_group}}-${GH_TAGNAME_${_group}_EXTRACT}
. if !empty(GH_SUBDIR_${_group})
-_SITES_extract:= ${_SITES_extract} 690:post-extract-gh-${_group}
+# In order to sort the subdir extraction so that foo/bar is moved in before
+# foo/bar/baz, we count the number of / in the path and use it to order the
+# targets. This handles up to 9 levels. The max as of r463123 is 4.
+_SITES_extract:= ${_SITES_extract} 69${GH_SUBDIR_${_group}:C=[^/]+= =g:range:[-1]}:post-extract-gh-${_group}
post-extract-gh-${_group}:
@${RMDIR} ${WRKSRC}/${GH_SUBDIR_${_group}} 2>/dev/null || :
@${MKDIR} ${WRKSRC}/${GH_SUBDIR_${_group}:H} 2>/dev/null || :