diff options
author | dteske <dteske@FreeBSD.org> | 2013-11-17 17:53:55 +0000 |
---|---|---|
committer | dteske <dteske@FreeBSD.org> | 2013-11-17 17:53:55 +0000 |
commit | 04077d5c5db2aaf29d12295622bab5a3c09f22b0 (patch) | |
tree | 8486d37339c8beccbab0eacae0c2f7d60f51977d /usr.sbin | |
parent | 358285463c565493afc8a42a72a8e0f93ad0e1fe (diff) | |
download | FreeBSD-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.subr | 1 | ||||
-rwxr-xr-x | usr.sbin/bsdconfig/share/packages/index.subr | 25 | ||||
-rwxr-xr-x | usr.sbin/bsdconfig/share/packages/packages.subr | 22 |
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 |