Index: Mk/Scripts/create-manifest.sh =================================================================== --- Mk/Scripts/create-manifest.sh +++ Mk/Scripts/create-manifest.sh @@ -104,6 +104,7 @@ output=${dp_METADIR}/+${prepost:+${prepost}_}${stage} for input in ${files}; do [ -f "${input}" ] && cat ${input} >> ${output} + [ -f "${input}.lua" ] && cp ${input}.lua ${dp_METADIR} done done done Index: Mk/Scripts/depends-list.sh =================================================================== --- Mk/Scripts/depends-list.sh +++ Mk/Scripts/depends-list.sh @@ -37,7 +37,7 @@ 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 @@ 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 Index: Mk/Scripts/do-depends.sh =================================================================== --- Mk/Scripts/do-depends.sh +++ Mk/Scripts/do-depends.sh @@ -11,7 +11,7 @@ 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 @@ 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 Index: Mk/bsd.port.mk =================================================================== --- Mk/bsd.port.mk +++ Mk/bsd.port.mk @@ -1029,6 +1029,7 @@ 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,8 +1451,18 @@ .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) . if ${FLAVORS:Mall} @@ -1962,8 +1973,18 @@ .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) .include "${PORTSDIR}/Mk/bsd.sanity.mk" @@ -3212,8 +3233,7 @@ .endif # Build -# XXX: ${MAKE_ARGS:N${DESTDIRNAME}=*} would be easier but it is not valid with the old fmake -DO_MAKE_BUILD?= ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${_MAKE_JOBS} ${MAKE_ARGS:C,^${DESTDIRNAME}=.*,,g} +DO_MAKE_BUILD?= ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${_MAKE_JOBS} ${MAKE_ARGS:N${DESTDIRNAME}=*} .if !target(do-build) do-build: @(cd ${BUILD_WRKSRC}; if ! ${DO_MAKE_BUILD} ${ALL_TARGET}; then \ @@ -3333,7 +3353,7 @@ # Test .if !target(do-test) && defined(TEST_TARGET) -DO_MAKE_TEST?= ${SETENV} ${TEST_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${TEST_ARGS:C,^${DESTDIRNAME}=.*,,g} +DO_MAKE_TEST?= ${SETENV} ${TEST_ENV} ${MAKE_CMD} ${MAKE_FLAGS} ${MAKEFILE} ${TEST_ARGS:N${DESTDIRNAME}=*} do-test: @(cd ${TEST_WRKSRC}; if ! ${DO_MAKE_TEST} ${TEST_TARGET}; then \ if [ -n "${TEST_FAIL_MESSAGE}" ] ; then \ @@ -3965,6 +3985,7 @@ dp_SH="${SH}" \ dp_SCRIPTSDIR="${SCRIPTSDIR}" \ PORTSDIR="${PORTSDIR}" \ + dp_OVERLAYS="${OVERLAYS}" \ dp_MAKE="${MAKE}" \ dp_MAKEFLAGS='${.MAKEFLAGS}' \ ${SH} ${SCRIPTSDIR}/do-depends.sh @@ -4019,6 +4040,7 @@ dp_PKGNAME="${PKGNAME}" \ dp_PKG_INFO="${PKG_INFO}" \ dp_SCRIPTSDIR="${SCRIPTSDIR}" \ + dp_OVERLAYS="${OVERLAYS}" \ ${SH} ${SCRIPTSDIR}/depends-list.sh \ ${DEPENDS_SHOW_FLAVOR:D-f} Index: Mk/bsd.sanity.mk =================================================================== --- Mk/bsd.sanity.mk +++ Mk/bsd.sanity.mk @@ -58,7 +58,7 @@ # 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