summaryrefslogtreecommitdiffstats
path: root/usr.sbin
diff options
context:
space:
mode:
authordteske <dteske@FreeBSD.org>2013-11-17 17:53:55 +0000
committerdteske <dteske@FreeBSD.org>2013-11-17 17:53:55 +0000
commit04077d5c5db2aaf29d12295622bab5a3c09f22b0 (patch)
tree8486d37339c8beccbab0eacae0c2f7d60f51977d /usr.sbin
parent358285463c565493afc8a42a72a8e0f93ad0e1fe (diff)
downloadFreeBSD-src-04077d5c5db2aaf29d12295622bab5a3c09f22b0.zip
FreeBSD-src-04077d5c5db2aaf29d12295622bab5a3c09f22b0.tar.gz
Fix package installation from physical media such as DVD.
Discussed with: re (gjb) MFC after: 3 days
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/bsdconfig/share/media/http.subr1
-rwxr-xr-xusr.sbin/bsdconfig/share/packages/index.subr25
-rwxr-xr-xusr.sbin/bsdconfig/share/packages/packages.subr22
3 files changed, 34 insertions, 14 deletions
diff --git a/usr.sbin/bsdconfig/share/media/http.subr b/usr.sbin/bsdconfig/share/media/http.subr
index 30648a1..23c146c 100644
--- a/usr.sbin/bsdconfig/share/media/http.subr
+++ b/usr.sbin/bsdconfig/share/media/http.subr
@@ -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"
diff --git a/usr.sbin/bsdconfig/share/packages/index.subr b/usr.sbin/bsdconfig/share/packages/index.subr
index 61a2464..6e14e4c 100755
--- a/usr.sbin/bsdconfig/share/packages/index.subr
+++ b/usr.sbin/bsdconfig/share/packages/index.subr
@@ -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"
diff --git a/usr.sbin/bsdconfig/share/packages/packages.subr b/usr.sbin/bsdconfig/share/packages/packages.subr
index f4d1934..a4ecdb9 100755
--- a/usr.sbin/bsdconfig/share/packages/packages.subr
+++ b/usr.sbin/bsdconfig/share/packages/packages.subr
@@ -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
OpenPOWER on IntegriCloud