Page MenuHomeFreeBSD

D12577.id34675.diff
No OneTemporary

D12577.id34675.diff

Index: Mk/Scripts/qa.sh
===================================================================
--- Mk/Scripts/qa.sh
+++ Mk/Scripts/qa.sh
@@ -841,9 +841,26 @@
return $rc
}
+flavors()
+{
+ local rc pkgnames uniques
+ rc=0
+ if [ -n "${FLAVOR}" ]; then
+ pkgnames=$(make -C "${CURDIR}" flavors-package-names|sort)
+ uniques=$(echo "${pkgnames}"|uniq)
+ if [ "$pkgnames" != "${uniques}" ]; then
+ err "Package names are not uniques with flavors:"
+ make -C "${CURDIR}" pretty-flavors-package-names >&2
+ err "maybe use <flavor>_PKGNAMEPREFIX/SUFFIX".
+ rc=1
+ fi
+ fi
+ return ${rc}
+}
+
checks="shebang symlinks paths stripped desktopfileutils sharedmimeinfo"
checks="$checks suidfiles libtool libperl prefixvar baselibs terminfo"
-checks="$checks proxydeps sonames perlcore no_arch gemdeps"
+checks="$checks proxydeps sonames perlcore no_arch gemdeps flavors"
ret=0
cd ${STAGEDIR}
Index: Mk/bsd.port.mk
===================================================================
--- Mk/bsd.port.mk
+++ Mk/bsd.port.mk
@@ -1065,8 +1065,7 @@
.if !defined(_FLAVOR)
_FLAVOR:= ${FLAVOR}
.endif
-# XXX: We have no real FLAVORS support in ports or tools yet.
-#PORTS_FEATURES+= FLAVORS
+PORTS_FEATURES+= FLAVORS
MINIMAL_PKG_VERSION= 1.6.0
_PORTS_DIRECTORIES+= ${PKG_DBDIR} ${PREFIX} ${WRKDIR} ${EXTRACT_WRKDIR} \
@@ -1082,18 +1081,6 @@
.include "${PORTSDIR}/Mk/bsd.commands.mk"
-.if !empty(FLAVOR)
-. if empty(FLAVORS)
-IGNORE= FLAVOR is defined while this port does not have FLAVORS.
-. elif ! ${FLAVORS:M${FLAVOR}}
-IGNORE= Unknown flavor '${FLAVOR}', possible flavors: ${FLAVORS}.
-. endif
-.endif
-
-.if !empty(FLAVORS) && empty(FLAVOR)
-FLAVOR= ${FLAVORS:[1]}
-.endif
-
# Do not leak flavors to childs make
.MAKEOVERRIDES:= ${MAKEOVERRIDES:NFLAVOR=*}
@@ -1470,6 +1457,29 @@
.include "${USESDIR}/${f:C/\:.*//}.mk"
.endfor
+.if !empty(FLAVORS)
+. for f in ${FLAVORS}
+. if ${f:C/[[:lower:][:digit:]_]//g}
+_BAD_FLAVOR_NAMES+= ${f}
+. endif
+. endfor
+. if !empty(_BAD_FLAVOR_NAMES)
+DEV_ERROR+= "FLAVORS contains flavors that are not all [a-z0-9_]: ${_BAD_FLAVOR_NAMES}"
+. endif
+.endif
+
+.if !empty(FLAVOR)
+. if empty(FLAVORS)
+IGNORE= FLAVOR is defined (to ${FLAVOR}) while this port does not have FLAVORS.
+. elif ! ${FLAVORS:M${FLAVOR}}
+IGNORE= Unknown flavor '${FLAVOR}', possible flavors: ${FLAVORS}.
+. endif
+.endif
+
+.if !empty(FLAVORS) && empty(FLAVOR)
+FLAVOR= ${FLAVORS:[1]}
+.endif
+
EXTRACT_SUFX?= .tar.gz
.if defined(USE_LINUX_PREFIX)
@@ -1562,6 +1572,9 @@
LOCALBASE=${LOCALBASE} \
"STRIP=${STRIP}" \
TMPPLIST=${TMPPLIST} \
+ CURDIR='${.CURDIR}' \
+ FLAVOR=${FLAVOR} \
+ FLAVORS='${FLAVORS}' \
BUNDLE_LIBS=${BUNDLE_LIBS} \
LDCONFIG_DIR="${LDCONFIG_DIR}" \
PKGORIGIN=${PKGORIGIN} \
@@ -4025,11 +4038,17 @@
fetch-specials:
@${ECHO_MSG} "===> Fetching all distfiles required by ${PKGNAME} for building"
@for dir in ${_DEPEND_SPECIALS}; do \
+ case $${dir} in \
+ *@*) \
+ flavor=$${dir#*@}; \
+ dir=$${dir%@*}; \
+ ;; \
+ esac; \
case $$dir in \
/*) ;; \
*) dir=${PORTSDIR}/$$dir ;; \
esac; \
- (cd $$dir; ${MAKE} fetch); \
+ (cd $$dir; ${MAKE} FLAVOR=$${flavor} fetch); \
done
.endif
@@ -4323,6 +4342,7 @@
INDEX_OUT=/dev/stdout
. endif
+. if empty(FLAVORS) || defined(DESCRIBE_FLAVORED)
describe:
@(${ECHO_CMD} -n "${PKGNAME}|${.CURDIR}|${PREFIX}|"; \
${ECHO_CMD} -n ${COMMENT:Q}; \
@@ -4337,6 +4357,13 @@
;; \
esac; \
done < ${DESCR}; ${ECHO_CMD}) >>${INDEX_OUT}
+. else # empty(FLAVORS)
+describe: ${FLAVORS:S/^/describe-/}
+. for f in ${FLAVORS}
+describe-${f}:
+ @cd ${.CURDIR} && ${MAKE} -B FLAVOR=${f} -DDESCRIBE_FLAVORED describe
+. endfor
+. endif # empty(FLAVORS)
. endif
www-site:
@@ -4618,6 +4645,25 @@
.endif
.endif
+pretty-flavors-package-names:
+.if empty(FLAVORS)
+ @${ECHO_CMD} "no flavor: ${PKGNAME}"
+.else
+.for f in ${FLAVORS}
+ @${ECHO_CMD} -n "${f}: "
+ @cd ${.CURDIR} && ${MAKE} -B FLAVOR=${f} -V PKGNAME
+.endfor
+.endif
+
+flavors-package-names:
+.if empty(FLAVORS)
+ @${ECHO_CMD} "${PKGNAME}"
+.else
+.for f in ${FLAVORS}
+ @cd ${.CURDIR} && ${MAKE} -B FLAVOR=${f} -V PKGNAME
+.endfor
+.endif
+
# Fake installation of package so that user can pkg delete it later.
.if !target(fake-pkg)
STAGE_ARGS= -i ${STAGEDIR}
Index: Tools/scripts/MOVEDlint.awk
===================================================================
--- Tools/scripts/MOVEDlint.awk
+++ Tools/scripts/MOVEDlint.awk
@@ -86,10 +86,22 @@
resurrected[$1] = NR
if ($2) {
+ flavor=""
+ if ($2 ~ "@") {
+ flavor=$2
+ sub("@.*", "", $2)
+ sub(".*@", "", flavor)
+ }
+
if (system("test -f " portsdir "/" $2 "/Makefile"))
missing[$2] = NR
-# else
-# delete resurrected[$2]
+ else
+ if (flavor != "") {
+ if (system("test \"" flavor "\" = \"`make -C " portsdir "/" $2 " -VFLAVORS:M" flavor "`\"")) {
+ printf "%5d: %s does not have the %s flavor\n", NR, $2, flavor | sort
+ error[NR] = 1
+ }
+ }
}
# Produces too many false positives

File Metadata

Mime Type
text/plain
Expires
Fri, Oct 24, 12:11 AM (3 h, 20 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
24108973
Default Alt Text
D12577.id34675.diff (5 KB)

Event Timeline