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
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to