ports/115994: remove the use of basename and dirname calls in bsd.port.mk

Alexander Leidinger netchild at FreeBSD.org
Sat Sep 1 12:40:01 UTC 2007


>Number:         115994
>Category:       ports
>Synopsis:       remove the use of basename and dirname calls in bsd.port.mk
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sat Sep 01 12:40:00 GMT 2007
>Closed-Date:
>Last-Modified:
>Originator:     Alexander Leidinger
>Release:        FreeBSD 7.0-CURRENT i386
>Organization:
FreeBSD 
>Environment:


System: FreeBSD 7.0-CURRENT #251: Wed Aug 15 21:58:34 CEST 2007
    root at Magellan.Leidinger.net:/usr/src/sys/i386/compile/WORK



>Description:


There are some uses of basename and dirname in bsd.port.mk. They can be replaced by makefile logic instead of exec()ing basename or dirname.

I haven't tested the performance impact/improvement.

Included are also 3 style fixes (whitespace).


>How-To-Repeat:





>Fix:


--- remove_basename_call.diff begins here ---
Index: bsd.port.mk
===================================================================
RCS file: /import/FreeBSD-CVS/ports/Mk/bsd.port.mk,v
retrieving revision 1.580
diff -u -r1.580 bsd.port.mk
--- bsd.port.mk	8 Aug 2007 03:46:04 -0000	1.580
+++ bsd.port.mk	1 Sep 2007 12:24:18 -0000
@@ -3376,15 +3437,15 @@
 	${_MASTER_SITES_ENV} ; \
 	for _file in ${DISTFILES}; do \
 		file=$${_file%%:*}; \
-		if [ $$_file = $$file ];	then	\
+		if [ $$_file = $$file ]; then	\
 			select='';	\
 		else	\
 			select=`${ECHO_CMD} $${_file##*:} | ${SED} -e 's/,/ /g'` ;	\
 		fi;	\
 		force_fetch=false; \
-		filebasename=`${BASENAME} $$file`; \
+		filebasename=$${file##*/}; \
 		for afile in ${FORCE_FETCH}; do \
-			afile=`${BASENAME} $$afile`; \
+			afile=$${afile##*/}; \
 			if [ "x$$afile" = "x$$filebasename" ]; then \
 				force_fetch=true; \
 			fi; \
@@ -3447,15 +3508,15 @@
 		file=`${ECHO_CMD} $$_file | ${SED} -E -e 's/:[^:]+$$//'` ; \
 		select=`${ECHO_CMD} $${_file#$${file}} | ${SED} -e 's/^://' -e 's/,/ /g'` ; \
 		force_fetch=false; \
-		filebasename=`${BASENAME} $$file`; \
+		filebasename=$${file##*/}; \
 		for afile in ${FORCE_FETCH}; do \
-			afile=`${BASENAME} $$afile`; \
+			afile=$${afile##*/}; \
 			if [ "x$$afile" = "x$$filebasename" ]; then \
 				force_fetch=true; \
 			fi; \
 		done; \
 		if [ ! -f $$file -a ! -f $$filebasename -o "$$force_fetch" = "true" ]; then \
-			if [ -L $$file -o -L `${BASENAME} $$file` ]; then \
+			if [ -L $$file -o -L $${file##*/} ]; then \
 				${ECHO_MSG} "=> ${_DISTDIR}/$$file is a broken symlink."; \
 				${ECHO_MSG} "=> Perhaps a filesystem (most likely a CD) isn't mounted?"; \
 				${ECHO_MSG} "=> Please correct this problem and try again."; \
@@ -4436,7 +4504,7 @@
 	 for _file in ${DISTFILES}; do \
 		file=`${ECHO_CMD} $$_file | ${SED} -E -e 's/:[^:]+$$//'` ; \
 		select=`${ECHO_CMD} $${_file#$${file}} | ${SED} -e 's/^://' -e 's/,/ /g'` ; \
-		if [ ! -f $$file -a ! -f `${BASENAME} $$file` ]; then \
+		if [ ! -f $$file -a ! -f $${file##*/} ]; then \
 			if [ ! -z "$$select" ] ; then \
 				__MASTER_SITES_TMP= ; \
 				for group in $$select; do \
@@ -4473,7 +4541,7 @@
 	 for _file in ${PATCHFILES}; do \
 		file=`${ECHO_CMD} $$_file | ${SED} -E -e 's/:[^:]+$$//'` ; \
 		select=`${ECHO_CMD} $${_file#$${file}} | ${SED} -e 's/^://' -e 's/,/ /g'` ; \
-		if [ ! -f $$file -a ! -f `${BASENAME} $$file` ]; then \
+		if [ ! -f $$file -a ! -f $${file##*/} ]; then \
 			if [ ! -z "$$select" ] ; then \
 				__PATCH_SITES_TMP= ; \
 				for group in $$select; do \
@@ -5025,7 +5093,7 @@
 			for child in $$children; do			\
 				case $$state in				\
 				0)					\
-					if [ -d $$child ]; then		\
+					if [ -d $$child ]; then 	\
 						${ECHO_CMD} $$d;	\
 					fi;				\
 					state=1;;			\
@@ -5064,7 +5132,7 @@
 			for child in $$children; do			\
 				case $$state in				\
 				0)					\
-					if [ ! -d $$child ]; then	\
+					if [ ! -d $$child ]; then 	\
 						break;		\
 					fi;				\
 					state=1;			\
@@ -5804,13 +5878,15 @@
 	@exit 1
 .endif
 .if ${UID} != 0 && !defined(INSTALL_AS_USER)
-	@${ECHO_MSG} "===>  Switching to root credentials to create `${DIRNAME} ${_OPTIONSFILE}`"
-	@(${SU_CMD} "${SH} -c \"${MKDIR} `${DIRNAME} ${_OPTIONSFILE}` 2> /dev/null\"") || \
-		(${ECHO_MSG} "===> Cannot create `${DIRNAME} ${_OPTIONSFILE}`, check permissions"; exit 1)
-	@${ECHO_MSG} "===>  Returning to user credentials"
-.else
-	@(${MKDIR} `${DIRNAME} ${_OPTIONSFILE}` 2> /dev/null) || \
-		(${ECHO_MSG} "===> Cannot create `${DIRNAME} ${_OPTIONSFILE}`, check permissions"; exit 1)
+	@optionsdir=${_OPTIONSFILE}; optionsdir=$${optionsdir%/*}; \
+	${ECHO_MSG} "===>  Switching to root credentials to create $${optionsdir}"; \
+	(${SU_CMD} "${SH} -c \"${MKDIR} $${optionsdir} 2> /dev/null\"") || \
+		(${ECHO_MSG} "===> Cannot create $${optionsdir}, check permissions"; exit 1); \
+	${ECHO_MSG} "===>  Returning to user credentials"
+.else
+	@(optionsdir=${_OPTIONSFILE}; optionsdir=$${optionsdir%/*}; \
+	${MKDIR} $${optionsdir} 2> /dev/null) || \
+		(${ECHO_MSG} "===> Cannot create $${optionsdir}, check permissions"; exit 1)
 .endif
 	- at if [ -e ${_OPTIONSFILE} ]; then \
 		. ${_OPTIONSFILE}; \
@@ -5946,14 +6022,15 @@
 rmconfig:
 .if defined(OPTIONS) && exists(${_OPTIONSFILE})
 	-@${ECHO_MSG} "===> Removing user-configured options for ${PKGNAME}"; \
+	optionsdir=${_OPTIONSFILE}; optionsdir=$${optionsdir%/*}; \
 	if [ `${ID} -u` != 0 -a "x${INSTALL_AS_USER}" = "x" ]; then \
-		${ECHO_MSG} "===> Switching to root credentials to remove ${_OPTIONSFILE} and `${DIRNAME} ${_OPTIONSFILE}`"; \
+		${ECHO_MSG} "===> Switching to root credentials to remove ${_OPTIONSFILE} and $${optionsdir}"; \
 		${SU_CMD} "${RM} -f ${_OPTIONSFILE} ; \
-			${RMDIR} `${DIRNAME} ${_OPTIONSFILE}`"; \
+			${RMDIR} $${optionsdir}"; \
 		${ECHO_MSG} "===> Returning to user credentials"; \
 	else \
 		${RM} -f ${_OPTIONSFILE}; \
-		${RMDIR} `${DIRNAME} ${_OPTIONSFILE}`; \
+		${RMDIR} $${optionsdir}; \
 	fi
 .else
 	@${ECHO_MSG} "===> No user-specified options configured for ${PKGNAME}"
--- remove_basename_call.diff ends here ---



>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list