PERFORCE change 124062 for review

Andrew Pantyukhin sat at FreeBSD.org
Tue Jul 24 23:14:42 UTC 2007


http://perforce.freebsd.org/chv.cgi?CH=124062

Change 124062 by sat at sat_amilo on 2007/07/24 23:14:33

	- Finally back in a seemingly working shape

Affected files ...

.. //depot/projects/soc2006/gabor_destdir/Mk/bsd.destdir.mk#26 edit

Differences ...

==== //depot/projects/soc2006/gabor_destdir/Mk/bsd.destdir.mk#26 (text+ko) ====

@@ -52,7 +52,7 @@
 _DESTDIRMKINCLUDED=	yes
 
 DESTDIR_ENV_LIST?=
-DESTDIR_ENV=	DESTDIR= CHROOTED=YES
+DESTDIR_ENV=	CHROOTED=yes
 .for _var in ${DESTDIR_ENV_LIST:NDESTDIR:NCHROOTED:NPORTSDIR}
 DESTDIR_ENV+=	${_var}="${${_var}}"
 .endfor
@@ -63,7 +63,7 @@
 # VAR:HOST_PATH:DEST_PATH
 # VAR -> VAR:${VAR}:TMP
 # VAR:HOST_PATH -> VAR:HOST_PATH:TMP
-DESTDIR_MOUNT_LIST?=	
+DESTDIR_MOUNT_LIST?=	PORTSDIR DISTDIR
 #DESTDIR_MOUNT_LIST?=	PORTSDIR WRKDIR:/123 WRKSRC:/567:/789 ABC
 _DESTDIR_MOUNT_LIST=
 .for _entry in ${DESTDIR_MOUNT_LIST}
@@ -103,15 +103,20 @@
 		exit 1; \
 	fi; \
 	_destdir=`realpath ${DESTDIR}`; \
-	if [ ! -d $${_destdir}/tmp ]; then \
-		${ECHO_MSG} "===>  Directory ${DESTDIR}/tmp does not exist"; \
-		if mkdir $${_destdir}/tmp; then \
-			${ECHO_MSG} "=> /tmp subdirectory has been successfully created"; \
-		else \
-			${ECHO_MSG} "=> /tmp subdirectory could not be created"; \
-			exit 2; \
-		fi; \
-	fi; \
+	_mounted_entries_list=""; \
+	_created_mountpoints_list=""; \
+	_var_path_list=""; \
+	${ECHO_MSG} "===> Creating some important subdirectories"; \
+	for _dir in tmp dev; do \
+		[ -d $${_destdir}/$${_dir} ] || \
+			if ${MKDIR} $${_destdir}/$${_dir}; then \
+				${ECHO_MSG} "=> /$${_dir} subdirectory has been successfully created"; \
+				_created_mountpoints_list="$${_destdir}/$${_dir} $${_created_mountpoints_list}"; \
+			else \
+				${ECHO_MSG} "=> /$${_dir} subdirectory could not be created"; \
+				exit 2; \
+			fi; \
+	done; \
 	${ECHO_MSG} "_DESTDIR_MOUNT_LIST=${_DESTDIR_MOUNT_LIST}"; \
 	for _entry in ${_DESTDIR_MOUNT_LIST}; do \
 		${ECHO_MSG} "==> Processing $${_entry}"; \
@@ -120,66 +125,81 @@
 		_host_path=`realpath $${_tp%:*}`; \
 		_dest_path=$${_entry##*:}; \
 		_full_dest_path=`realpath $${_destdir}/$${_dest_path}`; \
-		_mounted_entries_list=""; \
-		_created_mountpoints_list=""; \
-		_var_path_list=""; \
 		_entry_was_created=0; \
 		_entry_should_mount=0; \
-		echo "$${_mount_var}:$${_host_path}:$${_full_dest_path}"; \
+		${ECHO_CMD} "$${_mount_var}:$${_host_path}:$${_full_dest_path}"; \
 		if [ "$${_dest_path}" = "___temp___" ]; then \
-			echo "Creating temporary mount point"; \
+			${ECHO_CMD} "Creating temporary mount point"; \
 			if _full_dest_path=`${MKTEMP} -d $${_destdir}/tmp/mountpoint.XXXXXX`; then \
-				echo "Temporary mount point $${_full_dest_path} created successfully"; \
+				${ECHO_CMD} "Temporary mount point $${_full_dest_path} created successfully"; \
 				_entry_was_created=1; \
 				_entry_should_mount=1; \
-				_dest_path=$${_full_dest_path#$${_destdir}/}; \
-				_created_mountpoints_list="$${_created_mountpoints_list} ${_full_dest_path}"; \
+				_dest_path=$${_full_dest_path#$${_destdir}}; \
+				_created_mountpoints_list="$${_full_dest_path} $${_created_mountpoints_list}"; \
 			else \
-				echo "Failed to create temporary mount point"; \
+				${ECHO_CMD} "Failed to create temporary mount point"; \
 				exit 9; \
 			fi; \
 		else \
-			echo "Checking if already mounted"; \
-			if ${MOUNT}|grep -qs "^$${_host_path} on $${_full_dest_path} ("; then \
-				echo "$${_host_path} is already mounted on $${_full_dest_path}"; \
+			${ECHO_CMD} "Checking if already mounted"; \
+			if ${MOUNT}|${GREP} -qs "^$${_host_path} on $${_full_dest_path} ("; then \
+				${ECHO_CMD} "$${_host_path} is already mounted on $${_full_dest_path}"; \
 				_var_path_list="$${_var_path_list} $${_mount_var}=$${_dest_path}"; \
 			else \
-				echo "$${_host_path} is not mounted on $${_full_dest_path}"; \
+				${ECHO_CMD} "$${_host_path} is not mounted on $${_full_dest_path}"; \
 				_entry_should_mount=1; \
 			fi; \
 		fi; \
 		[ -d $${_full_dest_path} ] || \
-			if mkdir $${_full_dest_path}; then \
-				echo "Mount point $${_full_dest_path} created"; \
+			if ${MKDIR} $${_full_dest_path}; then \
+				${ECHO_CMD} "Mount point $${_full_dest_path} created"; \
 				_entry_was_created=1; \
 				_created_mountpoints_list="$${_created_mountpoints_list} ${_full_dest_path}"; \
 			else \
-				echo "Mount point $${_full_dest_path} could not be created"; \
+				${ECHO_CMD} "Mount point $${_full_dest_path} could not be created"; \
 				exit 7; \
 			fi; \
 		[ "$${_entry_should_mount}" = "0" ] || \
 			if ${MOUNT_NULLFS} $${_host_path} $${_full_dest_path}; then \
-				echo "Dir $${_host_path} mounted"; \
-				_mounted_entries_list="$${_mounted_entries_list} $${_full_dest_path}"; \
+				${ECHO_CMD} "Dir $${_host_path} mounted"; \
+				_mounted_entries_list="$${_full_dest_path} $${_mounted_entries_list}"; \
+				_var_path_list="$${_var_path_list} $${_mount_var}=$${_dest_path}"; \
 			else \
-				echo "Dir $${_host_path} could not be mounted"; \
-				[ "$${_entry_was_created}" = "0" ]||rmdir $${_full_dest_path}; \
+				${ECHO_CMD} "Dir $${_host_path} could not be mounted"; \
+				[ "$${_entry_was_created}" = "0" ] || \
+					${RMDIR} $${_full_dest_path} || ${TRUE}; \
 				exit 8; \
 			fi; \
 	done; \
-	echo "$${_destdir_env}"; \
-	${ECHO_CMD} "Things we mounted: $${_mounted_entries_list};" \
-	${ECHO_CMD} "Things we created: $${_created_mountpoints_list};" \
-	${ECHO_CMD} "_var_path_list: $${_var_path_list};" \
+	${ECHO_CMD} "Handling devfs separately"; \
+	_full_dest_path=$${_destdir}/dev; \
+	${MOUNT}|${GREP} -qs "^devfs on $${_full_dest_path} (" || \
+		if ${MOUNT_DEVFS} $${_full_dest_path}; then \
+			${ECHO_CMD} "devfs mounted"; \
+			_mounted_entries_list="$${_full_dest_path} $${_mounted_entries_list}"; \
+		else \
+			${ECHO_CMD} "devfs could not be mounted"; \
+			[ -n "$${_created_mountpoints_list%%* $${_destdir}/dev *}" ] || \
+				${RMDIR} $${_destdir}/dev || ${TRUE}; \
+			exit 9; \
+		fi; \
+	_var_path_list="$${_var_path_list} DEVFS=/dev"; \
+	${ECHO_CMD} "Things we mounted: $${_mounted_entries_list}"; \
+	${ECHO_CMD} "Things we created: $${_created_mountpoints_list}"; \
+	${ECHO_CMD} "_var_path_list: $${_var_path_list}"; \
 	${ECHO_CMD} "===>  Starting chrooted make in ${DESTDIR}..."; \
-	${CHROOT} $${_destdir} ${SH} -c "(cd $${_builddir}; \
-		${SETENV} -i ${DESTDIR_ENV} $${_destdir_env} ${MAKE} ${.TARGETS})"; \
-	${ECHO_CMD} "===>  Chrooted make in ${DESTDIR} finished. Cleaning up..."; \
+	export $${_var_path_list}; \
+	${CHROOT} $${_destdir} ${SH} -c "\
+		cd $${PORTSDIR}${.CURDIR:S|^${PORTSDIR}||}; \
+		${SETENV} -i ${DESTDIR_ENV} $${_var_path_list} ${MAKE} ${.TARGETS}" && \
+		${ECHO_CMD} "===>  Chrooted make in ${DESTDIR} succeeded" || \
+		${ECHO_CMD} "===>  Chrooted make in ${DESTDIR} failed"; \
+	${ECHO_CMD} "===>  Cleaning up..."; \
 	for _entry in $${_mounted_entries_list}; do \
-		umount -f $${_entry}; \
+		${UMOUNT} -f $${_entry} || ${TRUE}; \
 	done; \
 	for _entry in $${_created_mountpoints_list}; do \
-		rmdir $${_entry}; \
+		${RMDIR} $${_entry} || ${TRUE}; \
 	done; \
 	${ECHO_CMD} "===> Congratulations!"; \
 	exit 0


More information about the p4-projects mailing list