aboutsummaryrefslogtreecommitdiff
path: root/Mk
diff options
context:
space:
mode:
authorBaptiste Daroussin <bapt@FreeBSD.org>2019-09-03 14:36:00 +0000
committerBaptiste Daroussin <bapt@FreeBSD.org>2019-09-03 14:36:00 +0000
commit7610a280b57ed2313f506799bf8afe39d74482a2 (patch)
tree74477210536a9532c246622b0b4fabbb456310d8 /Mk
parentb425021f226d8509a5261cfa28460626d6c17399 (diff)
downloadports-7610a280b57ed2313f506799bf8afe39d74482a2.tar.gz
ports-7610a280b57ed2313f506799bf8afe39d74482a2.zip
Notes
Diffstat (limited to 'Mk')
-rw-r--r--Mk/Scripts/depends-list.sh27
-rw-r--r--Mk/Scripts/do-depends.sh12
-rw-r--r--Mk/bsd.port.mk27
-rw-r--r--Mk/bsd.sanity.mk2
4 files changed, 54 insertions, 14 deletions
diff --git a/Mk/Scripts/depends-list.sh b/Mk/Scripts/depends-list.sh
index ce4f4b75a094..843bedd03958 100644
--- a/Mk/Scripts/depends-list.sh
+++ b/Mk/Scripts/depends-list.sh
@@ -37,7 +37,7 @@ while getopts "fmrw" FLAG; do
done
shift $((OPTIND-1))
-validate_env PORTSDIR dp_PKGNAME
+validate_env PORTSDIR dp_OVERLAYS dp_PKGNAME
if [ ${recursive} -eq 1 -o ${requires_wrkdir} -eq 1 ]; then
validate_env dp_MAKE
# Cache command executions to avoid looking them up again in every
@@ -65,16 +65,25 @@ check_dep() {
case "${2}" in
/*) d=${2} ;;
- *) d=${PORTSDIR}/${2} ;;
+ *) for overlay in ${dp_OVERLAYS} ${PORTSDIR}; do
+ d=${overlay}/${2}
+ f=
+ case "${d}" in
+ *@*/*) ;; # Ignore @ in the path which would not be a flavor
+ *@*)
+ f=${d##*@}
+ d=${d%@*}
+ ;;
+ esac
+ if [ -f ${d}/Makefile ]; then
+ if [ -n $f ]; then
+ export FLAVOR=$f
+ fi
+ break
+ fi
+ done
esac
- case "${d}" in
- *@*/*) ;; # Ignore @ in the path which would not be a flavor
- *@*)
- export FLAVOR=${d##*@}
- d=${d%@*}
- ;;
- esac
if [ ${flavors} -eq 1 -a -n "${FLAVOR:-}" ]; then
port_display="${d}@${FLAVOR}"
else
diff --git a/Mk/Scripts/do-depends.sh b/Mk/Scripts/do-depends.sh
index 163570052a54..af93ec646a74 100644
--- a/Mk/Scripts/do-depends.sh
+++ b/Mk/Scripts/do-depends.sh
@@ -11,7 +11,7 @@ validate_env dp_RAWDEPENDS dp_DEPTYPE dp_DEPENDS_TARGET dp_DEPENDS_PRECLEAN \
dp_DEPENDS_CLEAN dp_DEPENDS_ARGS dp_USE_PACKAGE_DEPENDS \
dp_USE_PACKAGE_DEPENDS_ONLY dp_PKG_ADD dp_PKG_INFO dp_WRKDIR \
dp_PKGNAME dp_STRICT_DEPENDS dp_LOCALBASE dp_LIB_DIRS dp_SH \
- dp_SCRIPTSDIR PORTSDIR dp_MAKE dp_MAKEFLAGS
+ dp_SCRIPTSDIR PORTSDIR dp_MAKE dp_MAKEFLAGS dp_OVERLAYS
[ -n "${DEBUG_MK_SCRIPTS}" -o -n "${DEBUG_MK_SCRIPTS_DO_DEPENDS}" ] && set -x
@@ -125,7 +125,15 @@ for _line in ${dp_RAWDEPENDS} ; do
case "${origin}" in
/*) ;;
- *) origin="${PORTSDIR}/${origin}" ;;
+ *)
+ for overlay in ${dp_OVERLAYS} ${PORTSDIR}; do
+ orig="${overlay}/${origin}"
+ if [ -f "${orig}/Makefile" ]; then
+ break
+ fi
+ done
+ origin="${orig}"
+ ;;
esac
case "${origin}" in
*@*/*) ;; # Ignore @ in the path which would not be a flavor
diff --git a/Mk/bsd.port.mk b/Mk/bsd.port.mk
index b6d630ead0b5..fb88ab5614d4 100644
--- a/Mk/bsd.port.mk
+++ b/Mk/bsd.port.mk
@@ -1029,6 +1029,7 @@ STAGEDIR?= ${WRKDIR}/stage
NOTPHONY?=
FLAVORS?=
FLAVOR?=
+OVERLAYS?=
# Disallow forced FLAVOR as make argument since we cannot change it to the
# proper default.
.if empty(FLAVOR) && !empty(.MAKEOVERRIDES:MFLAVOR)
@@ -1450,7 +1451,17 @@ ${_f}_ARGS:= ${f:C/^[^\:]*(\:|\$)//:S/,/ /g}
.endif
.endfor
.for f in ${USES}
-.include "${USESDIR}/${f:C/\:.*//}.mk"
+.undef _usefound
+.for udir in ${OVERLAYS:C,$,/Mk/Uses,} ${USESDIR}
+_usefile= ${udir}/${f:C/\:.*//}.mk
+.if exists(${_usefile}) && !defined(_usefound)
+_usefound=
+.include "${_usefile}"
+.endif
+.endfor
+.if !defined(_usefound)
+ERROR+= "Unkonwn USES=${f:C/\:.*//}"
+.endif
.endfor
.if !empty(FLAVORS)
@@ -1962,7 +1973,17 @@ ${_f}_ARGS:= ${f:C/^[^\:]*(\:|\$)//:S/,/ /g}
.endif
.endfor
.for f in ${_USES_POST}
-.include "${USESDIR}/${f:C/\:.*//}.mk"
+.undef _usefound
+.for udir in ${OVERLAYS:C,$,/Mk/Uses,} ${USESDIR}
+_usefile= ${udir}/${f:C/\:.*//}.mk
+.if exists(${_usefile}) && !defined(_usefound)
+_usefound=
+.include "${_usefile}"
+.endif
+.endfor
+.if !defined(_usefound)
+ERROR+= "Unkonwn USES=${f:C/\:.*//}"
+.endif
.endfor
.if defined(PORTNAME)
@@ -3964,6 +3985,7 @@ ${deptype:tl}-depends:
dp_SH="${SH}" \
dp_SCRIPTSDIR="${SCRIPTSDIR}" \
PORTSDIR="${PORTSDIR}" \
+ dp_OVERLAYS="${OVERLAYS}" \
dp_MAKE="${MAKE}" \
dp_MAKEFLAGS='${.MAKEFLAGS}' \
${SH} ${SCRIPTSDIR}/do-depends.sh
@@ -4018,6 +4040,7 @@ DEPENDS-LIST= \
dp_PKGNAME="${PKGNAME}" \
dp_PKG_INFO="${PKG_INFO}" \
dp_SCRIPTSDIR="${SCRIPTSDIR}" \
+ dp_OVERLAYS="${OVERLAYS}" \
${SH} ${SCRIPTSDIR}/depends-list.sh \
${DEPENDS_SHOW_FLAVOR:D-f}
diff --git a/Mk/bsd.sanity.mk b/Mk/bsd.sanity.mk
index 04542537d798..c3490ea1bab9 100644
--- a/Mk/bsd.sanity.mk
+++ b/Mk/bsd.sanity.mk
@@ -58,7 +58,7 @@ ERROR+= "${a} is unsupported, please use ${${a}_ALT}"
# Warnings only when DEVELOPER=yes
-.if exists(${.CURDIR}/../../Mk/bsd.port.mk)
+.if exists(${.CURDIR}/../../Mk/bsd.port.mk) || ${OVERLAYS:tA:M${.CURDIR:H:H}} == ${.CURDIR:H:H}
.if ${.CURDIR:H:T} != ${PKGCATEGORY}
DEV_ERROR+= "The first entry in CATEGORIES should be the directory where the port lives"
.endif