svn commit: r258267 - in head/usr.sbin/bsdconfig/share: media packages

Devin Teske dteske at FreeBSD.org
Sun Nov 17 17:53:56 UTC 2013


Author: dteske
Date: Sun Nov 17 17:53:55 2013
New Revision: 258267
URL: http://svnweb.freebsd.org/changeset/base/258267

Log:
  Fix package installation from physical media such as DVD.
  
  Discussed with:	re (gjb)
  MFC after:	3 days

Modified:
  head/usr.sbin/bsdconfig/share/media/http.subr
  head/usr.sbin/bsdconfig/share/packages/index.subr
  head/usr.sbin/bsdconfig/share/packages/packages.subr

Modified: head/usr.sbin/bsdconfig/share/media/http.subr
==============================================================================
--- head/usr.sbin/bsdconfig/share/media/http.subr	Sun Nov 17 17:48:55 2013	(r258266)
+++ head/usr.sbin/bsdconfig/share/media/http.subr	Sun Nov 17 17:53:55 2013	(r258267)
@@ -502,6 +502,7 @@ f_media_init_http()
 			setvar $VAR_HTTP_PATH "$hp/$PKG_ABI/latest"
 			if [ "$PKG_ABI" ] && f_http_check_access; then
 				http_found=$SUCCESS
+				setvar $VAR_HTTP_PATH "$hp"
 			else
 				for fdir in $HTTP_DIRS; do
 					setvar $VAR_HTTP_PATH "$hp/$fdir/$rel"

Modified: head/usr.sbin/bsdconfig/share/packages/index.subr
==============================================================================
--- head/usr.sbin/bsdconfig/share/packages/index.subr	Sun Nov 17 17:48:55 2013	(r258266)
+++ head/usr.sbin/bsdconfig/share/packages/index.subr	Sun Nov 17 17:53:55 2013	(r258267)
@@ -106,16 +106,21 @@ f_index_initialize()
 	device_media get type __type
 	device_media get private __data
 	case "$__type" in
-	$DEVICE_TYPE_UFS|$DEVICE_TYPE_DISK) __site="file://$MOUNTPOINT" ;;
-	$DEVICE_TYPE_DIRECTORY)  __site="file://$__data" ;;
-	$DEVICE_TYPE_FLOPPY)     __site="file://${__data:-$MOUNTPOINT}" ;;
-	$DEVICE_TYPE_FTP)        f_getvar $VAR_FTP_PATH __site ;;
-	$DEVICE_TYPE_HTTP_PROXY) f_getvar $VAR_HTTP_PROXY_PATH __site ;;
-	$DEVICE_TYPE_HTTP)       f_getvar $VAR_HTTP_PATH __site ;;
-	$DEVICE_TYPE_CDROM)      __site="file://$MOUNTPOINT" ;;
-	$DEVICE_TYPE_USB)        __site="file://$MOUNTPOINT" ;;
-	$DEVICE_TYPE_DOS)        __site="file://$MOUNTPOINT" ;;
-	$DEVICE_TYPE_NFS)        __site="file://$MOUNTPOINT" ;;
+	$DEVICE_TYPE_DIRECTORY)
+		__site="file://$__data/packages/$PKG_ABI" ;;
+	$DEVICE_TYPE_FLOPPY)
+		__site="file://${__data:-$MOUNTPOINT}/packages/$PKG_ABI" ;;
+	$DEVICE_TYPE_FTP)
+		f_getvar $VAR_FTP_PATH __site
+		__site="$__site/packages/$PKG_ABI" ;;
+	$DEVICE_TYPE_HTTP)
+		f_getvar $VAR_HTTP_PATH __site
+		__site="$__site/$PKG_ABI/latest" ;;
+	$DEVICE_TYPE_HTTP_PROXY)
+		f_getvar $VAR_HTTP_PROXY_PATH __site
+		__site="$__site/packages/$PKG_ABI" ;;
+	*) # UFS, DISK, CDROM, USB, DOS, NFS, etc.
+		__site="file://$MOUNTPOINT/packages/$PKG_ABI"
 	esac
 
 	export PACKAGESITE="$__site"

Modified: head/usr.sbin/bsdconfig/share/packages/packages.subr
==============================================================================
--- head/usr.sbin/bsdconfig/share/packages/packages.subr	Sun Nov 17 17:48:55 2013	(r258266)
+++ head/usr.sbin/bsdconfig/share/packages/packages.subr	Sun Nov 17 17:53:55 2013	(r258267)
@@ -971,10 +971,16 @@ f_package_extract()
 	f_getvar $VAR_PKG_TMPDIR:-/var/tmp tmpdir
 	f_quietly mkdir -p -m 1777 "$tmpdir"
 
-	local path
+	local path device_type
+	device_$device get type device_type
 	case "$name" in
 	*/*) path="$name" ;;
-	*) path="All/$name" ;;
+	*)
+		if [ "$device_type" = "$DEVICE_TYPE_HTTP" ]; then
+			path="$PKG_ABI/latest/All/$name"
+		else
+			path="packages/$PKG_ABI/All/$name"
+		fi
 	esac
 
 	# We have a path, call the device strategy routine to check the file
@@ -982,12 +988,20 @@ f_package_extract()
 	for pkg_ext in "" $PACKAGE_EXTENSIONS; do
 		if f_device_get $device "$path$pkg_ext" $PROBE_EXIST; then
 			path="$path$pkg_ext"
-			f_dprintf "$funcname: found path=[%s] dev=[%s]" \
-			          "$path" "$device"
+			found=1
+			break
+		elif [ "$device_type" = "$DEVICE_TYPE_HTTP" ] &&
+		     f_device_get $device \
+			"packages/$PKG_ABI/All/$name$pkg_ext" $PROBE_EXIST
+		then
+			# Mirroring physical media over HTTP
+			path="packages/$PKG_ABI/All/$name$pkg_ext"
 			found=1
 			break
 		fi
 	done
+	[ "$found" ] && f_dprintf "$funcname: found path=[%s] dev=[%s]" \
+	                          "$path" "$device"
 
 	local alert=f_show_msg no_confirm=
 	f_getvar $VAR_NO_CONFIRM no_confirm


More information about the svn-src-head mailing list