View | Details | Raw Unified | Return to bug 209803
Collapse All | Expand All

(-)/home/masked/bsd.port.mk (-176 / +486 lines)
Lines 1-7 Link Here
1
#-*- tab-width: 4; -*-
1
#-*- tab-width: 4; -*-
2
# ex:ts=4
2
# ex:ts=4
3
#
3
#
4
# $FreeBSD: head/Mk/bsd.port.mk 415851 2016-05-25 18:41:21Z bapt $
4
# $FreeBSD$
5
#	$NetBSD: $
5
#	$NetBSD: $
6
#
6
#
7
#	bsd.port.mk - 940820 Jordan K. Hubbard.
7
#	bsd.port.mk - 940820 Jordan K. Hubbard.
Lines 1064-1070 Link Here
1064
SRC_BASE?=		/usr/src
1064
SRC_BASE?=		/usr/src
1065
USESDIR?=		${PORTSDIR}/Mk/Uses
1065
USESDIR?=		${PORTSDIR}/Mk/Uses
1066
SCRIPTSDIR?=	${PORTSDIR}/Mk/Scripts
1066
SCRIPTSDIR?=	${PORTSDIR}/Mk/Scripts
1067
LIB_DIRS?=		/lib /usr/lib ${LOCALBASE}/lib
1067
LIB_DIRS?=		${X_SYSROOT}/lib ${X_SYSROOT}/usr/lib ${X_SYSROOT}/${LOCALBASE}/lib
1068
STAGEDIR?=	${WRKDIR}/stage
1068
STAGEDIR?=	${WRKDIR}/stage
1069
NOTPHONY?=
1069
NOTPHONY?=
1070
MINIMAL_PKG_VERSION=	1.6.0
1070
MINIMAL_PKG_VERSION=	1.6.0
Lines 1083-1095 Link Here
1083
HOSTCC:=	${CC}
1083
HOSTCC:=	${CC}
1084
HOSTCXX:=	${CXX}
1084
HOSTCXX:=	${CXX}
1085
.endif
1085
.endif
1086
1087
.if !defined(X_BUILD_FOR && DESTDIR)
1088
.error "You must define DESTDIR when using X_BUILD_FOR or your installed packages will get overwritten!"
1089
.if !defined(X_SYSROOT)
1090
X_SYSROOT=	${DESTDIR}
1086
.if !exists(/usr/${X_BUILD_FOR}/usr/bin/cc)
1091
.if !exists(/usr/${X_BUILD_FOR}/usr/bin/cc)
1087
X_SYSROOT=	${LOCALBASE}/${X_BUILD_FOR}
1092
X_SYSROOT=	${LOCALBASE}/${X_BUILD_FOR}
1088
.else
1093
.else
1089
X_SYSROOT=	/usr/${X_BUILD_FOR}
1094
#X_SYSROOT=	/usr/${X_BUILD_FOR}
1095
.endif
1090
.endif
1096
.endif
1091
CC=		${X_SYSROOT}/usr/bin/cc
1097
CC=             /usr/${X_BUILD_FOR}/usr/bin/cc
1092
CXX=	${X_SYSROOT}/usr/bin/c++
1098
CXX=            /usr/${X_BUILD_FOR}/usr/bin/c++
1099
1100
#LD=		${X_BUILD_FOR}-ld
1093
NM=		${X_BUILD_FOR}-nm
1101
NM=		${X_BUILD_FOR}-nm
1094
STRIP_CMD=	${X_BUILD_FOR}-strip
1102
STRIP_CMD=	${X_BUILD_FOR}-strip
1095
# only bmake support the below
1103
# only bmake support the below
Lines 1521-1528 Link Here
1521
				"STRIP=${STRIP}" \
1529
				"STRIP=${STRIP}" \
1522
				TMPPLIST=${TMPPLIST} \
1530
				TMPPLIST=${TMPPLIST} \
1523
				LDCONFIG_DIR="${LDCONFIG_DIR}" \
1531
				LDCONFIG_DIR="${LDCONFIG_DIR}" \
1524
				PKGORIGIN=${PKGORIGIN} \
1525
				LIB_RUN_DEPENDS='${_LIB_RUN_DEPENDS:C,[^:]*:([^:]*):?.*,\1,}' \
1526
				PKGBASE=${PKGBASE}
1532
				PKGBASE=${PKGBASE}
1527
.if !empty(USES:Mdesktop-file-utils)
1533
.if !empty(USES:Mdesktop-file-utils)
1528
QA_ENV+=		USESDESKTOPFILEUTILS=yes
1534
QA_ENV+=		USESDESKTOPFILEUTILS=yes
Lines 1550-1561 Link Here
1550
				PORTSDIR="${PORTSDIR}"
1556
				PORTSDIR="${PORTSDIR}"
1551
1557
1552
.if defined(X_BUILD_FOR)
1558
.if defined(X_BUILD_FOR)
1553
BUILD_DEPENDS+=	${X_BUILD_FOR}-cc:devel/${X_BUILD_FOR}-xdev
1559
#BUILD_DEPENDS+=	${X_BUILD_FOR}-gcc:devel/${X_BUILD_FOR}-binutils
1554
PKG_ENV+=		ABI_FILE=${X_SYSROOT}/usr/lib/crt1.o
1560
PKG_ENV+=		ABI_FILE=${X_SYSROOT}/usr/lib/crt1.o
1555
MAKE_ENV+=		NM=${NM} \
1561
MAKE_ENV+=		INCLUDE=/usr/src/10.3.0/include \
1562
			NM=${NM} \
1556
				STRIPBIN=${X_BUILD_FOR}-strip \
1563
				STRIPBIN=${X_BUILD_FOR}-strip \
1557
				PKG_CONFIG_SYSROOT_DIR="${X_SYSROOT}"
1564
				PKG_CONFIG_SYSROOT_DIR="${X_SYSROOT}"
1558
CONFIGURE_ENV+=	PKG_CONFIG_SYSROOT_DIR="${X_SYSROOT}"
1565
CONFIGURE_ENV+=	PKG_CONFIG_SYSROOT_DIR="${X_SYSROOT}"
1566
PKG_DBDIR=		${X_SYSROOT}/var/db/pkg
1567
PORT_DBDIR=		${X_SYSROOT}/var/db/ports
1568
1569
1559
.endif
1570
.endif
1560
1571
1561
WRKDIR?=		${WRKDIRPREFIX}${.CURDIR}/work
1572
WRKDIR?=		${WRKDIRPREFIX}${.CURDIR}/work
Lines 1640-1659 Link Here
1640
1651
1641
# XXX PIE support to be added here
1652
# XXX PIE support to be added here
1642
MAKE_ENV+=	NO_PIE=yes
1653
MAKE_ENV+=	NO_PIE=yes
1643
# We prefer to pass MK_*=no but it was only supported after a certain
1644
# revision.  Passing WITHOUT_* may conflict with a make.conf or src.conf's
1645
# WITH_* value.  Note that ports *do* pull in src.conf.
1646
.if (${OSVERSION} >= 903510 && ${OSVERSION} < 1000000) || \
1647
    (${OSVERSION} >= 1003503 && ${OSVERSION} < 1100000) || \
1648
    ${OSVERSION} >= 1100000
1649
# We will control debug files.  Don't let builds that use /usr/share/mk
1654
# We will control debug files.  Don't let builds that use /usr/share/mk
1650
# split out debug symbols since the plist won't know to expect it.
1655
# split out debug symbols since the plist won't know to expect it.
1651
MAKE_ENV+=	MK_DEBUG_FILES=no
1652
MAKE_ENV+=	MK_KERNEL_SYMBOLS=no
1653
.else
1654
MAKE_ENV+=	WITHOUT_DEBUG_FILES=yes
1656
MAKE_ENV+=	WITHOUT_DEBUG_FILES=yes
1655
MAKE_ENV+=	WITHOUT_KERNEL_SYMBOLS=yes
1657
MAKE_ENV+=	WITHOUT_KERNEL_SYMBOLS=yes
1656
.endif
1657
1658
1658
.if defined(NOPORTDOCS)
1659
.if defined(NOPORTDOCS)
1659
PLIST_SUB+=		PORTDOCS="@comment "
1660
PLIST_SUB+=		PORTDOCS="@comment "
Lines 2013-2019 Link Here
2013
.if !defined(WITHOUT_NO_STRICT_ALIASING)
2014
.if !defined(WITHOUT_NO_STRICT_ALIASING)
2014
.if ${CC} != "icc"
2015
.if ${CC} != "icc"
2015
.if empty(CFLAGS:M-fno-strict-aliasing)
2016
.if empty(CFLAGS:M-fno-strict-aliasing)
2016
CFLAGS+=       -fno-strict-aliasing
2017
CFLAGS+=       "-fno-strict-aliasing"
2017
.endif
2018
.endif
2018
.endif
2019
.endif
2019
.endif
2020
.endif
Lines 2065-2072 Link Here
2065
.if defined(RANDOMIZE_MASTER_SITES)
2066
.if defined(RANDOMIZE_MASTER_SITES)
2066
.if exists(/usr/games/random)
2067
.if exists(/usr/games/random)
2067
RANDOM_CMD?=	/usr/games/random
2068
RANDOM_CMD?=	/usr/games/random
2068
RANDOM_ARGS?=	-w -f -
2069
RANDOM_ARGS?=	"-w -f -"
2069
_RANDOMIZE_SITES=	 |${RANDOM_CMD} ${RANDOM_ARGS}
2070
_RANDOMIZE_SITES=	" |${RANDOM_CMD} ${RANDOM_ARGS}"
2070
.endif
2071
.endif
2071
.endif
2072
.endif
2072
2073
Lines 3062-3176 Link Here
3062
AUDITFILE?=		${PKG_DBDIR}/vuln.xml
3063
AUDITFILE?=		${PKG_DBDIR}/vuln.xml
3063
3064
3064
check-vulnerable:
3065
check-vulnerable:
3065
.if !defined(DISABLE_VULNERABILITIES) && !defined(PACKAGE_BUILDING) \
3066
.if !defined(DISABLE_VULNERABILITIES) && !defined(PACKAGE_BUILDING)
3066
		&& exists(${AUDITFILE})
3067
	@if [ -f "${AUDITFILE}" ]; then \
3067
	@${SETENV} \
3068
		if [ -x "${PKG_BIN}" ]; then \
3068
			dp_ECHO_MSG="${ECHO_MSG}" \
3069
			vlist=`${PKG_BIN} audit "${PKGNAME}" || :`; \
3069
			dp_PKG_BIN="${PKG_BIN}" \
3070
			if [ "$${vlist}" = "0 problem(s) in the installed packages found." ]; then \
3070
			dp_PORTNAME="${PORTNAME}" \
3071
				vlist=""; \
3071
			dp_PKGNAME="${PKGNAME}" \
3072
			fi; \
3072
			dp_SCRIPTSDIR="${SCRIPTSDIR}" \
3073
		elif [ "${PORTNAME}" = "pkg" ]; then \
3073
			${SH} ${SCRIPTSDIR}/check-vulnerable.sh
3074
			vlist=""; \
3075
		fi; \
3076
		if [ -n "$$vlist" ]; then \
3077
			${ECHO_MSG} "===>  ${PKGNAME} has known vulnerabilities:"; \
3078
			${ECHO_MSG} "$$vlist"; \
3079
			${ECHO_MSG} "=> Please update your ports tree and try again."; \
3080
			${ECHO_MSG} "=> Note: Vulnerable ports are marked as such even if there is no update available."; \
3081
			${ECHO_MSG} "=> If you wish to ignore this vulnerability rebuild with 'make DISABLE_VULNERABILITIES=yes'"; \
3082
			exit 1; \
3083
		fi; \
3084
	fi
3074
.endif
3085
.endif
3075
3086
3076
# Quote simply quote all variables, except FETCH_ENV, some ports are creative
3087
# set alg to any of SIZE, SHA256 (or any other checksum algorithm):
3077
# with it, and it needs to be quoted twice to pass through the echo/eval in
3088
DISTINFO_DATA?=	if [ \( -n "${DISABLE_SIZE}" -a -n "${NO_CHECKSUM}" \) -o ! -f "${DISTINFO_FILE}" ]; then exit; fi; \
3078
# do-fetch.
3089
	DIR=${DIST_SUBDIR}; ${AWK} -v alg=$$alg -v file=$${DIR:+$$DIR/}$${file}	\
3079
_DO_FETCH_ENV= \
3090
		'$$1 == alg && $$2 == "(" file ")" {print $$4}' ${DISTINFO_FILE}
3080
			dp_DISABLE_SIZE='${DISABLE_SIZE}' \
3081
			dp_DISTDIR='${_DISTDIR}' \
3082
			dp_DISTINFO_FILE='${DISTINFO_FILE}' \
3083
			dp_DIST_SUBDIR='${DIST_SUBDIR}' \
3084
			dp_ECHO_MSG='${ECHO_MSG}' \
3085
			dp_FETCH_AFTER_ARGS='${FETCH_AFTER_ARGS}' \
3086
			dp_FETCH_BEFORE_ARGS='${FETCH_BEFORE_ARGS}' \
3087
			dp_FETCH_CMD='${FETCH_CMD}' \
3088
			dp_FETCH_ENV=${FETCH_ENV:Q:Q} \
3089
			dp_FORCE_FETCH_ALL='${FORCE_FETCH_ALL}' \
3090
			dp_FORCE_FETCH_LIST='${FORCE_FETCH_LIST}' \
3091
			dp_MASTER_SITE_BACKUP='${_MASTER_SITE_BACKUP}' \
3092
			dp_MASTER_SITE_OVERRIDE='${_MASTER_SITE_OVERRIDE}' \
3093
			dp_MASTER_SORT_AWK='${MASTER_SORT_AWK}' \
3094
			dp_NO_CHECKSUM='${NO_CHECKSUM}' \
3095
			dp_RANDOMIZE_SITES='${_RANDOMIZE_SITES}' \
3096
			dp_SCRIPTSDIR='${SCRIPTSDIR}' \
3097
			dp_SORTED_MASTER_SITES_DEFAULT_CMD='${SORTED_MASTER_SITES_DEFAULT_CMD}' \
3098
			dp_SORTED_PATCH_SITES_DEFAULT_CMD='${SORTED_PATCH_SITES_DEFAULT_CMD}' \
3099
			dp_TARGET='${.TARGET}'
3100
.if defined(DEVELOPER)
3101
_DO_FETCH_ENV+= dp_DEVELOPER=yes
3102
.else
3103
_DO_FETCH_ENV+= dp_DEVELOPER=
3104
.endif
3105
3091
3106
# Fetch
3092
# Fetch
3107
3093
3108
.if !target(do-fetch)
3094
.if !target(do-fetch)
3109
do-fetch:
3095
do-fetch:
3110
.if !empty(DISTFILES)
3096
	@${MKDIR} ${_DISTDIR}
3111
	@${SETENV} \
3097
	@cd ${_DISTDIR};\
3112
			${_DO_FETCH_ENV} ${_MASTER_SITES_ENV} \
3098
	${_MASTER_SITES_ENV} ; \
3113
			dp_SITE_FLAVOR=MASTER \
3099
	for _file in ${DISTFILES}; do \
3114
			${SH} ${SCRIPTSDIR}/do-fetch.sh ${DISTFILES:C/.*/'&'/}
3100
		file=$${_file%%:*}; \
3115
.endif
3101
		if [ $$_file = $$file ]; then	\
3116
.if defined(PATCHFILES) && !empty(PATCHFILES)
3102
			select='';	\
3117
	@${SETENV} \
3103
		else	\
3118
			${_DO_FETCH_ENV} ${_PATCH_SITES_ENV} \
3104
			select=`${ECHO_CMD} $${_file##*:} | ${SED} -e 's/,/ /g'` ;	\
3119
			dp_SITE_FLAVOR=PATCH \
3105
		fi;	\
3120
			${SH} ${SCRIPTSDIR}/do-fetch.sh ${PATCHFILES:C/:-p[0-9]//:C/.*/'&'/}
3106
		force_fetch=false; \
3121
.endif
3107
		filebasename=$${file##*/}; \
3122
.endif
3108
		for afile in ${FORCE_FETCH}; do \
3123
#
3109
			afile=$${afile##*/}; \
3124
# Prints out a list of files to fetch (useful to do a batch fetch)
3110
			if [ "x$$afile" = "x$$filebasename" ]; then \
3125
3111
				force_fetch=true; \
3126
.if !target(fetch-list)
3112
			fi; \
3127
fetch-list:
3113
		done; \
3128
.if !empty(DISTFILES)
3114
		if [ ! -f $$file -a ! -f $$filebasename -o "$$force_fetch" = "true" ]; then \
3129
	@${SETENV} \
3115
			if [ -L $$file -o -L $$filebasename ]; then \
3130
			${_DO_FETCH_ENV} ${_MASTER_SITES_ENV} \
3116
				${ECHO_MSG} "=> ${_DISTDIR}/$$file is a broken symlink."; \
3131
			dp_SITE_FLAVOR=MASTER \
3117
				${ECHO_MSG} "=> Perhaps a filesystem (most likely a CD) isn't mounted?"; \
3132
			${SH} ${SCRIPTSDIR}/do-fetch.sh ${DISTFILES:C/.*/'&'/}
3118
				${ECHO_MSG} "=> Please correct this problem and try again."; \
3133
.endif
3119
				exit 1; \
3134
.if defined(PATCHFILES) && !empty(PATCHFILES)
3120
			fi; \
3135
	@${SETENV} \
3121
			if [ -f ${DISTINFO_FILE} -a "x${NO_CHECKSUM}" = "x" ]; then \
3136
			${_DO_FETCH_ENV} ${_PATCH_SITES_ENV} \
3122
				_sha256sum=`alg=SHA256; ${DISTINFO_DATA}`; \
3137
			dp_SITE_FLAVOR=PATCH \
3123
				if [ -z "$$_sha256sum" ]; then \
3138
			${SH} ${SCRIPTSDIR}/do-fetch.sh ${PATCHFILES:C/:-p[0-9]//:C/.*/'&'/}
3124
					${ECHO_MSG} "=> $${DIR:+$$DIR/}$$file is not in ${DISTINFO_FILE}."; \
3139
.endif
3125
					${ECHO_MSG} "=> Either ${DISTINFO_FILE} is out of date, or"; \
3140
.endif
3126
					${ECHO_MSG} "=> $${DIR:+$$DIR/}$$file is spelled incorrectly."; \
3141
3127
					exit 1; \
3142
# Used by fetch-urlall-list and fetch-url-list
3128
				fi; \
3143
3129
			fi; \
3144
.if !target(fetch-url-list-int)
3130
			${ECHO_MSG} "=> $$file doesn't seem to exist in ${_DISTDIR}."; \
3145
fetch-url-list-int:
3131
			if [ ! -w ${_DISTDIR} ]; then \
3146
.if !empty(DISTFILES)
3132
			   ${ECHO_MSG} "=> ${_DISTDIR} is not writable by you; cannot fetch."; \
3147
	@${SETENV} \
3133
			   exit 1; \
3148
			${_DO_FETCH_ENV} ${_MASTER_SITES_ENV} \
3134
			fi; \
3149
			dp_SITE_FLAVOR=MASTER \
3135
			if [ ! -z "$$select" ] ; then \
3150
			${SH} ${SCRIPTSDIR}/do-fetch.sh ${DISTFILES:C/.*/'&'/}
3136
				__MASTER_SITES_TMP= ; \
3151
.endif
3137
				for group in $$select; do \
3152
.if defined(PATCHFILES) && !empty(PATCHFILES)
3138
					if [ ! -z \$${_MASTER_SITES_$${group}} ] ; then \
3153
	@${SETENV} \
3139
						eval ___MASTER_SITES_TMP="\$${_MASTER_SITES_$${group}}" ; \
3154
			${_DO_FETCH_ENV} ${_PATCH_SITES_ENV} \
3140
						__MASTER_SITES_TMP="$${__MASTER_SITES_TMP} $${___MASTER_SITES_TMP}" ; \
3155
			dp_SITE_FLAVOR=PATCH \
3141
					fi; \
3156
			${SH} ${SCRIPTSDIR}/do-fetch.sh ${PATCHFILES:C/:-p[0-9]//:C/.*/'&'/}
3142
				done; \
3157
.endif
3143
				___MASTER_SITES_TMP= ; \
3144
				SORTED_MASTER_SITES_CMD_TMP="${ECHO_CMD} ${_MASTER_SITE_OVERRIDE} `${ECHO_CMD} $${__MASTER_SITES_TMP} | ${AWK} '${MASTER_SORT_AWK:S|\\|\\\\|g}'` ${_MASTER_SITE_BACKUP}" ; \
3145
			else \
3146
				SORTED_MASTER_SITES_CMD_TMP="${SORTED_MASTER_SITES_DEFAULT_CMD}" ; \
3147
			fi; \
3148
			sites_remaining=0; \
3149
			sites="`eval $$SORTED_MASTER_SITES_CMD_TMP ${_RANDOMIZE_SITES}`"; \
3150
			for site in $${sites}; do \
3151
				sites_remaining=$$(($${sites_remaining} + 1)); \
3152
			done; \
3153
			for site in $${sites}; do \
3154
				sites_remaining=$$(($${sites_remaining} - 1)); \
3155
			    ${ECHO_MSG} "=> Attempting to fetch $${site}$${file}"; \
3156
				CKSIZE=`alg=SIZE; ${DISTINFO_DATA}`; \
3157
				case $${file} in \
3158
				*/*)	${MKDIR} $${file%/*}; \
3159
						args="-o $${file} $${site}$${file}";; \
3160
				*)		args=$${site}$${file};; \
3161
				esac; \
3162
				if ${SETENV} ${FETCH_ENV} ${FETCH_CMD} ${FETCH_BEFORE_ARGS} $${args} ${FETCH_AFTER_ARGS}; then \
3163
					actual_size=`stat -f %z "$${file}"`; \
3164
					if [ -n "${DISABLE_SIZE}" ] || [ -z "$${CKSIZE}" ] || [ $${actual_size} -eq $${CKSIZE} ]; then \
3165
						continue 2; \
3166
					else \
3167
						${ECHO_MSG} "=> Fetched file size mismatch (expected $${CKSIZE}, actual $${actual_size})"; \
3168
						if [ $${sites_remaining} -gt 0 ]; then \
3169
							${ECHO_MSG} "=> Trying next site"; \
3170
							${RM} -f $${file}; \
3171
						fi; \
3172
					fi; \
3173
				fi; \
3174
			done; \
3175
			${ECHO_MSG} "=> Couldn't fetch it - please try to retrieve this";\
3176
			${ECHO_MSG} "=> port manually into ${_DISTDIR} and try again."; \
3177
			exit 1; \
3178
	    fi; \
3179
	 done
3180
.if defined(PATCHFILES)
3181
	@cd ${_DISTDIR};\
3182
	${_PATCH_SITES_ENV} ; \
3183
	for _file in ${PATCHFILES}; do \
3184
		file=`${ECHO_CMD} $$_file | ${SED} -E -e 's/:[^-:][^:]*$$//'` ; \
3185
		if [ $$_file = $$file ]; then	\
3186
			select='';	\
3187
		else	\
3188
			select=`${ECHO_CMD} $${_file##*:} | ${SED} -e 's/,/ /g'` ;	\
3189
		fi;	\
3190
		file=`${ECHO_CMD} $$file | ${SED} -E -e 's/:-[^:]+$$//'` ; \
3191
		force_fetch=false; \
3192
		filebasename=$${file##*/}; \
3193
		for afile in ${FORCE_FETCH}; do \
3194
			afile=$${afile##*/}; \
3195
			if [ "x$$afile" = "x$$filebasename" ]; then \
3196
				force_fetch=true; \
3197
			fi; \
3198
		done; \
3199
		if [ ! -f $$file -a ! -f $$filebasename -o "$$force_fetch" = "true" ]; then \
3200
			if [ -L $$file -o -L $${file##*/} ]; then \
3201
				${ECHO_MSG} "=> ${_DISTDIR}/$$file is a broken symlink."; \
3202
				${ECHO_MSG} "=> Perhaps a filesystem (most likely a CD) isn't mounted?"; \
3203
				${ECHO_MSG} "=> Please correct this problem and try again."; \
3204
				exit 1; \
3205
			fi; \
3206
			${ECHO_MSG} "=> $$file doesn't seem to exist in ${_DISTDIR}."; \
3207
			if [ ! -z "$$select" ] ; then \
3208
				__PATCH_SITES_TMP= ; \
3209
				for group in $$select; do \
3210
					if [ ! -z \$${_PATCH_SITES_$${group}} ] ; then \
3211
						eval ___PATCH_SITES_TMP="\$${_PATCH_SITES_$${group}}" ; \
3212
						__PATCH_SITES_TMP="$${__PATCH_SITES_TMP} $${___PATCH_SITES_TMP}" ; \
3213
					fi; \
3214
				done; \
3215
				___PATCH_SITES_TMP= ; \
3216
				SORTED_PATCH_SITES_CMD_TMP="${ECHO_CMD} ${_MASTER_SITE_OVERRIDE} `${ECHO_CMD} $${__PATCH_SITES_TMP} | ${AWK} '${MASTER_SORT_AWK:S|\\|\\\\|g}'` ${_MASTER_SITE_BACKUP}" ; \
3217
			else \
3218
				SORTED_PATCH_SITES_CMD_TMP="${SORTED_PATCH_SITES_DEFAULT_CMD}" ; \
3219
			fi; \
3220
			sites_remaining=0; \
3221
			sites="`eval $$SORTED_PATCH_SITES_CMD_TMP`"; \
3222
			for site in $${sites}; do \
3223
				sites_remaining=$$(($${sites_remaining} + 1)); \
3224
			done; \
3225
			for site in $${sites}; do \
3226
				sites_remaining=$$(($${sites_remaining} - 1)); \
3227
			    ${ECHO_MSG} "=> Attempting to fetch $${site}$${file}"; \
3228
				CKSIZE=`alg=SIZE; ${DISTINFO_DATA}`; \
3229
				case $${file} in \
3230
				*/*)	${MKDIR} $${file%/*}; \
3231
						args="-o $${file} $${site}$${file}";; \
3232
				*)		args=$${site}$${file};; \
3233
				esac; \
3234
				if ${SETENV} ${FETCH_ENV} ${FETCH_CMD} ${FETCH_BEFORE_ARGS} $${args} ${FETCH_AFTER_ARGS}; then \
3235
					actual_size=`stat -f %z "$${file}"`; \
3236
					if [ -n "${DISABLE_SIZE}" ] || [ -z "$${CKSIZE}" ] || [ $${actual_size} -eq $${CKSIZE} ]; then \
3237
						continue 2; \
3238
					else \
3239
						${ECHO_MSG} "=> Fetched file size mismatch (expected $${CKSIZE}, actual $${actual_size})"; \
3240
						if [ $${sites_remaining} -gt 1 ]; then \
3241
							${ECHO_MSG} "=> Trying next site"; \
3242
							${RM} -f $${file}; \
3243
						fi; \
3244
					fi; \
3245
				fi; \
3246
			done; \
3247
			${ECHO_MSG} "=> Couldn't fetch it - please try to retrieve this";\
3248
			${ECHO_MSG} "=> port manually into ${_DISTDIR} and try again."; \
3249
			exit 1; \
3250
		fi; \
3251
	 done
3158
.endif
3252
.endif
3159
3160
# Prints out all the URL for all the DISTFILES and PATCHFILES.
3161
3162
.if !target(fetch-urlall-list)
3163
fetch-urlall-list:
3164
	@cd ${.CURDIR} && ${SETENV} FORCE_FETCH_ALL=yes ${MAKE} fetch-url-list-int
3165
.endif
3253
.endif
3166
3254
3167
# Prints the URL for all the DISTFILES and PATCHFILES that are not here
3168
3169
.if !target(fetch-url-list)
3170
fetch-url-list: fetch-url-list-int
3171
.endif
3172
3173
3174
# Extract
3255
# Extract
3175
3256
3176
clean-wrkdir:
3257
clean-wrkdir:
Lines 3888-3893 Link Here
3888
.endif
3969
.endif
3889
.endif
3970
.endif
3890
3971
3972
# Prints out a list of files to fetch (useful to do a batch fetch)
3973
3974
.if !target(fetch-list)
3975
fetch-list:
3976
	@${MKDIR} ${_DISTDIR}
3977
	@(cd ${_DISTDIR}; \
3978
	 ${_MASTER_SITES_ENV} ; \
3979
	 for _file in ${DISTFILES}; do \
3980
		file=`${ECHO_CMD} $$_file | ${SED} -E -e 's/:[^:]+$$//'` ; \
3981
		if [ $$_file = $$file ]; then	\
3982
			select='';	\
3983
		else	\
3984
			select=`${ECHO_CMD} $${_file##*:} | ${SED} -e 's/,/ /g'` ;	\
3985
		fi;	\
3986
		if [ ! -f $$file -a ! -f $${file##*/} ]; then \
3987
			if [ ! -z "$$select" ] ; then \
3988
				__MASTER_SITES_TMP= ; \
3989
				for group in $$select; do \
3990
					if [ ! -z \$${_MASTER_SITES_$${group}} ] ; then \
3991
						eval ___MASTER_SITES_TMP=\$${_MASTER_SITES_$${group}} ; \
3992
						__MASTER_SITES_TMP="$${__MASTER_SITES_TMP} $${___MASTER_SITES_TMP}" ; \
3993
					fi; \
3994
				done; \
3995
				___MASTER_SITES_TMP= ; \
3996
				SORTED_MASTER_SITES_CMD_TMP="${ECHO_CMD} ${_MASTER_SITE_OVERRIDE} `${ECHO_CMD} $${__MASTER_SITES_TMP} | ${AWK} '${MASTER_SORT_AWK:S|\\|\\\\|g}'` ${_MASTER_SITE_BACKUP}" ; \
3997
			else \
3998
				SORTED_MASTER_SITES_CMD_TMP="${SORTED_MASTER_SITES_DEFAULT_CMD}" ; \
3999
			fi; \
4000
			${ECHO_CMD} -n ${MKDIR} ${_DISTDIR} '&& ' ; \
4001
			${ECHO_CMD} -n cd ${_DISTDIR} '&& { ' ; \
4002
			for site in `eval $$SORTED_MASTER_SITES_CMD_TMP ${_RANDOMIZE_SITES}`; do \
4003
				if [ ! -z "`${ECHO_CMD} ${NOFETCHFILES} | ${GREP} -w $${file}`" ]; then \
4004
					if [ -z "`${ECHO_CMD} ${MASTER_SITE_OVERRIDE} | ${GREP} -w $${site}`" ]; then \
4005
						continue; \
4006
					fi; \
4007
				fi; \
4008
				CKSIZE=`alg=SIZE; ${DISTINFO_DATA}`; \
4009
				case $${file} in \
4010
				*/*)	args="-o $${file} $${site}$${file}";; \
4011
				*)		args=$${site}$${file};; \
4012
				esac; \
4013
				${ECHO_CMD} -n ${SETENV} ${FETCH_ENV} ${FETCH_CMD} ${FETCH_BEFORE_ARGS} $${args} "${FETCH_AFTER_ARGS}" '|| ' ; \
4014
			done; \
4015
			${ECHO_CMD} "${ECHO_CMD} $${file} not fetched; }" ; \
4016
		fi; \
4017
	done)
4018
.if defined(PATCHFILES)
4019
	@(cd ${_DISTDIR}; \
4020
	 ${_PATCH_SITES_ENV} ; \
4021
	 for _file in ${PATCHFILES}; do \
4022
		file=`${ECHO_CMD} $$_file | ${SED} -E -e 's/:[^-:][^:]*$$//'` ; \
4023
		if [ $$_file = $$file ]; then	\
4024
			select='';	\
4025
		else	\
4026
			select=`${ECHO_CMD} $${_file##*:} | ${SED} -e 's/,/ /g'` ;	\
4027
		fi;	\
4028
		file=`${ECHO_CMD} $$file | ${SED} -E -e 's/:-[^:]+$$//'` ; \
4029
		if [ ! -f $$file -a ! -f $${file##*/} ]; then \
4030
			if [ ! -z "$$select" ] ; then \
4031
				__PATCH_SITES_TMP= ; \
4032
				for group in $$select; do \
4033
					if [ ! -z \$${_PATCH_SITES_$${group}} ] ; then \
4034
						eval ___PATCH_SITES_TMP=\$${_PATCH_SITES_$${group}} ; \
4035
						__PATCH_SITES_TMP="$${__PATCH_SITES_TMP} $${___PATCH_SITES_TMP}" ; \
4036
				fi; \
4037
				done; \
4038
				___PATCH_SITES_TMP= ; \
4039
				SORTED_PATCH_SITES_CMD_TMP="${ECHO_CMD} ${_MASTER_SITE_OVERRIDE} `${ECHO_CMD} $${__PATCH_SITES_TMP} | ${AWK} '${MASTER_SORT_AWK:S|\\|\\\\|g}'` ${_MASTER_SITE_BACKUP}" ; \
4040
			else \
4041
				SORTED_PATCH_SITES_CMD_TMP="${SORTED_PATCH_SITES_DEFAULT_CMD}" ; \
4042
			fi; \
4043
			${ECHO_CMD} -n ${MKDIR} ${_DISTDIR} '&& ' ; \
4044
			${ECHO_CMD} -n cd ${_DISTDIR} '&& { ' ; \
4045
			for site in `eval $$SORTED_PATCH_SITES_CMD_TMP ${_RANDOMIZE_SITES}`; do \
4046
				CKSIZE=`alg=SIZE; ${DISTINFO_DATA}`; \
4047
				case $${file} in \
4048
				*/*)	args="-o $${file} $${site}$${file}";; \
4049
				*)		args=$${site}$${file};; \
4050
				esac; \
4051
				${ECHO_CMD} -n ${SETENV} ${FETCH_ENV} ${FETCH_CMD} ${FETCH_BEFORE_ARGS} $${args} "${FETCH_AFTER_ARGS}" '|| ' ; \
4052
			done; \
4053
			${ECHO_CMD} "${ECHO_CMD} $${file} not fetched; }" ; \
4054
		fi; \
4055
	 done)
4056
.endif
4057
.endif
4058
4059
.if !target(fetch-url-list-int)
4060
fetch-url-list-int:
4061
	@${MKDIR} ${_DISTDIR}
4062
	@(cd ${_DISTDIR}; \
4063
	${_MASTER_SITES_ENV}; \
4064
	for _file in ${DISTFILES}; do \
4065
		file=`${ECHO_CMD} $$_file | ${SED} -E -e 's/:[^:]+$$//'` ; \
4066
			fileptn=`${ECHO_CMD} $$file | ${SED} 's|/|\\\\/|g;s/\./\\\\./g;s/\+/\\\\+/g;s/\?/\\\\?/g'` ; \
4067
		if [ $$_file = $$file ]; then	\
4068
			select='';	\
4069
		else	\
4070
			select=`${ECHO_CMD} $${_file##*:} | ${SED} -e 's/,/ /g'` ;	\
4071
		fi;	\
4072
		if [ ! -z "${LISTALL}" -o ! -f $$file -a ! -f $${file##*/} ]; then \
4073
			if [ ! -z "$$select" ] ; then \
4074
				__MASTER_SITES_TMP= ; \
4075
				for group in $$select; do \
4076
					if [ ! -z \$${_MASTER_SITES_$${group}} ] ; then \
4077
						eval ___MASTER_SITES_TMP=\$${_MASTER_SITES_$${group}} ; \
4078
						__MASTER_SITES_TMP="$${__MASTER_SITES_TMP} $${___MASTER_SITES_TMP}" ; \
4079
					fi \
4080
				done; \
4081
				___MASTER_SITES_TMP= ; \
4082
				SORTED_MASTER_SITES_CMD_TMP="${ECHO_CMD} ${_MASTER_SITE_OVERRIDE} `${ECHO_CMD} $${__MASTER_SITES_TMP} | ${AWK} '${MASTER_SORT_AWK:S|\\|\\\\|g}'` ${_MASTER_SITE_BACKUP}" ; \
4083
			else \
4084
				SORTED_MASTER_SITES_CMD_TMP="${SORTED_MASTER_SITES_DEFAULT_CMD}" ; \
4085
			fi ; \
4086
			for site in `eval $$SORTED_MASTER_SITES_CMD_TMP ${_RANDOMIZE_SITES}`; do \
4087
				case $${file} in \
4088
				*/*)	args="-o $${file} $${site}$${file}";; \
4089
				*)		args=$${site}$${file};; \
4090
				esac; \
4091
				${ECHO_CMD} $${args} ; \
4092
			done; \
4093
		fi \
4094
	done)
4095
.if defined(PATCHFILES)
4096
	@(cd ${_DISTDIR}; \
4097
	${_PATCH_SITES_ENV} ; \
4098
	for _file in ${PATCHFILES}; do \
4099
		file=`${ECHO_CMD} $$_file | ${SED} -E -e 's/:[^-:][^:]*$$//'` ; \
4100
		if [ $$_file = $$file ]; then	\
4101
			select='';	\
4102
		else	\
4103
			select=`${ECHO_CMD} $${_file##*:} | ${SED} -e 's/,/ /g'` ;	\
4104
		fi;	\
4105
		file=`${ECHO_CMD} $$file | ${SED} -E -e 's/:-[^:]+$$//'` ; \
4106
		fileptn=`${ECHO_CMD} $$file | ${SED} 's|/|\\\\/|g;s/\./\\\\./g;s/\+/\\\\+/g;s/\?/\\\\?/g'` ; \
4107
		if [ ! -z "${LISTALL}" -o ! -f $$file -a ! -f $${file##*/} ]; then \
4108
			if [ ! -z "$$select" ] ; then \
4109
				__PATCH_SITES_TMP= ; \
4110
				for group in $$select; do \
4111
					if [ ! -z \$${_PATCH_SITES_$${group}} ] ; then \
4112
						eval ___PATCH_SITES_TMP=\$${_PATCH_SITES_$${group}} ; \
4113
						__PATCH_SITES_TMP="$${__PATCH_SITES_TMP} $${___PATCH_SITES_TMP}" ; \
4114
					fi \
4115
				done; \
4116
				___PATCH_SITES_TMP= ; \
4117
				SORTED_PATCH_SITES_CMD_TMP="${ECHO_CMD} ${_MASTER_SITE_OVERRIDE} `${ECHO_CMD} $${__PATCH_SITES_TMP} | ${AWK} '${MASTER_SORT_AWK:S|\\|\\\\|g}'` ${_MASTER_SITE_BACKUP}" ; \
4118
			else \
4119
				SORTED_PATCH_SITES_CMD_TMP="${SORTED_PATCH_SITES_DEFAULT_CMD}" ; \
4120
			fi ; \
4121
			for site in `eval $$SORTED_PATCH_SITES_CMD_TMP ${_RANDOMIZE_SITES}`; do \
4122
				case $${file} in \
4123
				*/*)	args="-o $${file} $${site}$${file}";; \
4124
				*)		args=$${site}$${file};; \
4125
				esac; \
4126
				${ECHO_CMD} $${args} ; \
4127
			done; \
4128
		fi \
4129
	 done)
4130
.endif
4131
.endif
4132
4133
.if !target(fetch-urlall-list)
4134
fetch-urlall-list:
4135
	@cd ${.CURDIR} && LISTALL=yes ${MAKE} fetch-url-list-int
4136
.endif
4137
4138
.if !target(fetch-url-list)
4139
fetch-url-list: fetch-url-list-int
4140
.endif
4141
3891
# Generates patches.
4142
# Generates patches.
3892
4143
3893
update-patches:
4144
update-patches:
Lines 3903-3964 Link Here
3903
4154
3904
# Checksumming utilities
4155
# Checksumming utilities
3905
4156
3906
# List all algorithms here, all the variables name must begin with dp_
4157
check-checksum-algorithms:
3907
_CHECKSUM_INIT_ENV= \
4158
	@ \
3908
	dp_SHA256=${SHA256}
4159
	${checksum_init} \
4160
	\
4161
	for alg in ${CHECKSUM_ALGORITHMS:tu}; do \
4162
		eval alg_executable=\$$$$alg; \
4163
		if [ -z "$$alg_executable" ]; then \
4164
			${ECHO_MSG} "Checksum algorithm $$alg: Couldn't find the executable."; \
4165
			${ECHO_MSG} "Set $$alg=/path/to/$$alg in /etc/make.conf and try again."; \
4166
			exit 1; \
4167
		fi; \
4168
	done; \
4169
4170
checksum_init=\
4171
	SHA256=${SHA256};
3909
4172
3910
.if !target(makesum)
4173
.if !target(makesum)
3911
# Some port change the options with OPTIONS_*_FORCE when make(makesum) to be
4174
makesum: check-checksum-algorithms
3912
# able to add all distfiles in one go.
4175
	@cd ${.CURDIR} && ${MAKE} fetch NO_CHECKSUM=yes \
3913
# For this to work, we need to call the do-fetch script directly here so that
4176
		DISABLE_SIZE=yes
3914
# the options consistent when fetching and when makesum'ing.
4177
	@if [ -f ${DISTINFO_FILE} ]; then ${CAT} /dev/null > ${DISTINFO_FILE}; fi
3915
# As we're fetching new distfiles, that are not in the distinfo file, disable
4178
	@( \
3916
# checksum and sizes checks.
4179
		cd ${DISTDIR}; \
3917
makesum:
4180
		\
3918
.if !empty(DISTFILES)
4181
		${checksum_init} \
3919
	@${SETENV} \
4182
		\
3920
			${_DO_FETCH_ENV} ${_MASTER_SITES_ENV} \
4183
		for file in ${_CKSUMFILES}; do \
3921
			dp_NO_CHECKSUM=yes dp_DISABLE_SIZE=yes \
4184
			for alg in ${CHECKSUM_ALGORITHMS:tu}; do \
3922
			dp_SITE_FLAVOR=MASTER \
4185
				eval alg_executable=\$$$$alg; \
3923
			${SH} ${SCRIPTSDIR}/do-fetch.sh ${DISTFILES:C/.*/'&'/}
4186
				\
3924
.endif
4187
				if [ $$alg_executable != "NO" ]; then \
3925
.if defined(PATCHFILES) && !empty(PATCHFILES)
4188
					$$alg_executable $$file >> ${DISTINFO_FILE}; \
3926
	@${SETENV} \
4189
				fi; \
3927
			${_DO_FETCH_ENV} ${_PATCH_SITES_ENV} \
4190
			done; \
3928
			dp_NO_CHECKSUM=yes dp_DISABLE_SIZE=yes \
4191
			${ECHO_CMD} "SIZE ($$file) = `${STAT} -f \"%z\" $$file`" >> ${DISTINFO_FILE}; \
3929
			dp_SITE_FLAVOR=PATCH \
4192
		done \
3930
			${SH} ${SCRIPTSDIR}/do-fetch.sh ${PATCHFILES:C/:-p[0-9]//:C/.*/'&'/}
4193
	)
3931
.endif
3932
	@${SETENV} \
3933
			${_CHECKSUM_INIT_ENV} \
3934
			dp_CHECKSUM_ALGORITHMS='${CHECKSUM_ALGORITHMS:tu}' \
3935
			dp_CKSUMFILES='${_CKSUMFILES}' \
3936
			dp_DISTDIR='${DISTDIR}' \
3937
			dp_DISTINFO_FILE='${DISTINFO_FILE}' \
3938
			dp_ECHO_MSG='${ECHO_MSG}' \
3939
			dp_SCRIPTSDIR='${SCRIPTSDIR}' \
3940
			${SH} ${SCRIPTSDIR}/makesum.sh ${DISTFILES:C/.*/'&'/}
3941
.endif
4194
.endif
3942
4195
3943
.if !target(checksum)
4196
.if !target(checksum)
3944
checksum: fetch
4197
checksum: fetch check-checksum-algorithms
3945
.if !empty(_CKSUMFILES)
4198
	@set -e ; \
3946
	@${SETENV} \
4199
	${checksum_init} \
3947
			${_CHECKSUM_INIT_ENV} \
4200
	if [ -f ${DISTINFO_FILE} ]; then \
3948
			dp_CHECKSUM_ALGORITHMS='${CHECKSUM_ALGORITHMS:tu}' \
4201
		cd ${DISTDIR}; OK="";\
3949
			dp_CURDIR='${.CURDIR}' \
4202
		for file in ${_CKSUMFILES}; do \
3950
			dp_DISTDIR='${DISTDIR}' \
4203
			ignored="true"; \
3951
			dp_DISTINFO_FILE='${DISTINFO_FILE}' \
4204
			_file=$${file#${DIST_SUBDIR}/*};	\
3952
			dp_DIST_SUBDIR='${DIST_SUBDIR}' \
4205
			for alg in ${CHECKSUM_ALGORITHMS:tu}; do \
3953
			dp_ECHO_MSG='${ECHO_MSG}' \
4206
				ignore="false"; \
3954
			dp_FETCH_REGET='${FETCH_REGET}' \
4207
				eval alg_executable=\$$$$alg; \
3955
			dp_MAKE='${MAKE}' \
4208
				\
3956
			dp_MAKEFLAGS='${.MAKEFLAGS}' \
4209
				if [ $$alg_executable != "NO" ]; then \
3957
			dp_SCRIPTSDIR='${SCRIPTSDIR}' \
4210
					MKSUM=`$$alg_executable < $$file`; \
3958
			dp_DISABLE_SIZE='${DISABLE_SIZE}' \
4211
					CKSUM=`file=$$_file; ${DISTINFO_DATA}`; \
3959
			dp_NO_CHECKSUM='${NO_CHECKSUM}' \
4212
				else \
3960
			${SH} ${SCRIPTSDIR}/checksum.sh ${_CKSUMFILES:C/.*/'&'/}
4213
					ignore="true"; \
3961
.endif
4214
				fi; \
4215
				\
4216
				if [ $$ignore = "false" -a -z "$$CKSUM" ]; then \
4217
					${ECHO_MSG} "=> No $$alg checksum recorded for $$file."; \
4218
					ignore="true"; \
4219
				fi; \
4220
				\
4221
				if [ $$ignore = "false" ]; then \
4222
					match="false"; \
4223
					for chksum in $$CKSUM; do \
4224
						if [ "$$chksum" = "$$MKSUM" ]; then \
4225
							match="true"; \
4226
							break; \
4227
						fi; \
4228
					done; \
4229
					if [ $$match = "true" ]; then \
4230
						${ECHO_MSG} "=> $$alg Checksum OK for $$file."; \
4231
						ignored="false"; \
4232
					else \
4233
						${ECHO_MSG} "=> $$alg Checksum mismatch for $$file."; \
4234
						refetchlist="$$refetchlist$$file "; \
4235
						OK="$${OK:-retry}"; \
4236
						[ "$${OK}" = "retry" -a ${FETCH_REGET} -gt 0 ] && ${RM} -f $${file}; \
4237
						ignored="false"; \
4238
					fi; \
4239
				fi; \
4240
			done; \
4241
			\
4242
			if [ $$ignored = "true" ]; then \
4243
				${ECHO_MSG} "=> No suitable checksum found for $$file."; \
4244
				OK="${FALSE}"; \
4245
			fi; \
4246
			\
4247
		done; \
4248
		\
4249
		if [ "$${OK:=true}" = "retry" ] && [ ${FETCH_REGET} -gt 0 ]; then \
4250
			${ECHO_MSG} "===>  Refetch for ${FETCH_REGET} more times files: $$refetchlist"; \
4251
			if ( cd ${.CURDIR} && \
4252
			    ${MAKE} ${.MAKEFLAGS} FORCE_FETCH="$$refetchlist" FETCH_REGET="`${EXPR} ${FETCH_REGET} - 1`" fetch); then \
4253
				  if ( cd ${.CURDIR} && \
4254
			        ${MAKE} ${.MAKEFLAGS} FETCH_REGET="`${EXPR} ${FETCH_REGET} - 1`" checksum ); then \
4255
				      OK="true"; \
4256
				  fi; \
4257
			fi; \
4258
		fi; \
4259
		\
4260
		if [ "$$OK" != "true" -a ${FETCH_REGET} -eq 0 ]; then \
4261
			${ECHO_MSG} "===>  Giving up on fetching files: $$refetchlist"; \
4262
			${ECHO_MSG} "Make sure the Makefile and distinfo file (${DISTINFO_FILE})"; \
4263
			${ECHO_MSG} "are up to date.  If you are absolutely sure you want to override this"; \
4264
			${ECHO_MSG} "check, type \"make NO_CHECKSUM=yes [other args]\"."; \
4265
			exit 1; \
4266
		fi; \
4267
		if [ "$$OK" != "true" ]; then \
4268
			exit 1; \
4269
		fi; \
4270
	elif [ -n "${_CKSUMFILES:M*}" ]; then \
4271
		${ECHO_MSG} "=> No checksum file (${DISTINFO_FILE})."; \
4272
		exit 1; \
4273
	fi
3962
.endif
4274
.endif
3963
4275
3964
################################################################
4276
################################################################
Lines 4938-4945 Link Here
4938
	@${ECHO_MSG} "===> No options to configure"
5250
	@${ECHO_MSG} "===> No options to configure"
4939
.else
5251
.else
4940
	@optionsdir=${OPTIONS_FILE:H}; \
5252
	@optionsdir=${OPTIONS_FILE:H}; \
4941
	if [ ! -w "${PORT_DBDIR}" -a "`stat -f %u ${PORT_DBDIR:H}`" = 0 ]; \
5253
	if [ ${UID} != 0 -a -z "${INSTALL_AS_USER}" -a ! -w "${PORT_DBDIR}" ] ; then \
4942
	then \
4943
		${ECHO_MSG} "===>  Switching to root credentials to create $${optionsdir}"; \
5254
		${ECHO_MSG} "===>  Switching to root credentials to create $${optionsdir}"; \
4944
		(${SU_CMD} "${SH} -c \"${MKDIR} $${optionsdir} 2> /dev/null\"") || \
5255
		(${SU_CMD} "${SH} -c \"${MKDIR} $${optionsdir} 2> /dev/null\"") || \
4945
			(${ECHO_MSG} "===> Cannot create $${optionsdir}, check permissions"; exit 1); \
5256
			(${ECHO_MSG} "===> Cannot create $${optionsdir}, check permissions"; exit 1); \
Lines 4975-4982 Link Here
4975
			${ECHO_CMD} "OPTIONS_FILE_UNSET+=$${i}" >> $${TMPOPTIONSFILE}; \
5286
			${ECHO_CMD} "OPTIONS_FILE_UNSET+=$${i}" >> $${TMPOPTIONSFILE}; \
4976
		fi; \
5287
		fi; \
4977
	done; \
5288
	done; \
4978
	if [ ! -w "${OPTIONS_FILE:H}" -a "`stat -f %u ${OPTIONS_FILE:H}`" != ${UID} ]; \
5289
	if [ ${UID} != 0 -a -z "${INSTALL_AS_USER}" -a ! -w "${OPTIONS_FILE:H}" ]; then \
4979
	then \
4980
		${ECHO_MSG} "===>  Switching to root credentials to write ${OPTIONS_FILE}"; \
5290
		${ECHO_MSG} "===>  Switching to root credentials to write ${OPTIONS_FILE}"; \
4981
		${SU_CMD} "${CAT} $${TMPOPTIONSFILE} > ${OPTIONS_FILE}"; \
5291
		${SU_CMD} "${CAT} $${TMPOPTIONSFILE} > ${OPTIONS_FILE}"; \
4982
		${ECHO_MSG} "===>  Returning to user credentials"; \
5292
		${ECHO_MSG} "===>  Returning to user credentials"; \

Return to bug 209803