From nobody@FreeBSD.org  Fri Jul 16 01:44:25 2010
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id A4577106566B
	for <freebsd-gnats-submit@FreeBSD.org>; Fri, 16 Jul 2010 01:44:25 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (www.freebsd.org [IPv6:2001:4f8:fff6::21])
	by mx1.freebsd.org (Postfix) with ESMTP id 9411C8FC0C
	for <freebsd-gnats-submit@FreeBSD.org>; Fri, 16 Jul 2010 01:44:25 +0000 (UTC)
Received: from www.freebsd.org (localhost [127.0.0.1])
	by www.freebsd.org (8.14.3/8.14.3) with ESMTP id o6G1iPXA011782
	for <freebsd-gnats-submit@FreeBSD.org>; Fri, 16 Jul 2010 01:44:25 GMT
	(envelope-from nobody@www.freebsd.org)
Received: (from nobody@localhost)
	by www.freebsd.org (8.14.3/8.14.3/Submit) id o6G1iPLQ011781;
	Fri, 16 Jul 2010 01:44:25 GMT
	(envelope-from nobody)
Message-Id: <201007160144.o6G1iPLQ011781@www.freebsd.org>
Date: Fri, 16 Jul 2010 01:44:25 GMT
From: John Hixson <john@ixsystems.com>
To: freebsd-gnats-submit@FreeBSD.org
Subject: pc-sysinstall updates to support ftp install of FreeBSD
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         148661
>Category:       bin
>Synopsis:       [patch] pc-sysinstall(8) updates to support ftp install of FreeBSD
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    imp
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Fri Jul 16 01:50:02 UTC 2010
>Closed-Date:    Thu Aug 19 00:05:26 MDT 2010
>Last-Modified:  Thu Aug 19 06:10:01 UTC 2010
>Originator:     John Hixson
>Release:        9.0-CURRENT
>Organization:
iXsystems, Inc
>Environment:
FreeBSD thinkbsd 9.0-CURRENT FreeBSD 9.0-CURRENT #0: Tue Jul 13 09:31:39 PDT 2010     john@thinkbsd:/usr/src/sys/amd64/compile/THINKBSD  amd64

>Description:
Updates to pc-sysinstall that allow FTP installation of FreeBSD.
>How-To-Repeat:

>Fix:


Patch attached with submission follows:

diff -urN usr.sbin/pc-sysinstall.orig/backend/functions-extractimage.sh usr.sbin/pc-sysinstall/backend/functions-extractimage.sh
--- usr.sbin/pc-sysinstall.orig/backend/functions-extractimage.sh	2010-07-13 17:28:45.000000000 -0700
+++ usr.sbin/pc-sysinstall/backend/functions-extractimage.sh	2010-07-15 18:40:46.000000000 -0700
@@ -203,6 +203,69 @@
 
 };
 
+# Function which will download freebsd install files
+fetch_split_files()
+{
+  get_value_from_cfg ftpHost
+  if [ -z "$VAL" ]
+  then
+    exit_err "ERROR: Install medium was set to ftp, but no ftpHost was provided!" 
+  fi
+  FTPHOST="${VAL}"
+
+  get_value_from_cfg ftpDir
+  if [ -z "$VAL" ]
+  then
+    exit_err "ERROR: Install medium was set to ftp, but no ftpDir was provided!" 
+  fi
+  FTPDIR="${VAL}"
+
+  # Check if we have a /usr partition to save the download
+  if [ -d "${FSMNT}/usr" ]
+  then
+    OUTFILE="${FSMNT}/usr/.fetch-${INSFILE}"
+  else
+    OUTFILE="${FSMNT}/.fetch-${INSFILE}"
+  fi
+
+  NETRC="${OUTFILE}/.netrc"
+  cat<<EOF>"${NETRC}"
+machine ${FTPHOST}
+login anonymous
+password anonymous
+macdef INSTALL
+bin
+prompt
+EOF
+
+  DIRS="base catpages dict doc games info manpages proflibs kernels src"
+  if [ "${FBSD_ARCH}" = "amd64" ]
+  then
+	DIRS="${DIRS} lib32"
+  fi
+
+  for d in ${DIRS}
+  do
+	cat<<EOF>>"${NETRC}"
+cd ${FTPDIR}/${d}
+lcd ${OUTFILE}/${d}
+mreget *
+EOF
+  done
+
+	cat<<EOF>>"${NETRC}"
+bye
+
+
+EOF
+
+   # Fetch the files via ftp
+   echo "$ INSTALL" | ftp -N "${NETRC}" "${FTPHOST}"
+
+  # Done fetching, now reset the INSFILE to our downloaded archived
+  INSFILE="${OUTFILE}" ; export INSFILE
+}
+
 # Function which does the rsync download from the server specifed in cfg
 start_rsync_copy()
 {
@@ -304,8 +367,17 @@
           	start_extract_uzip_tar
 		  fi
           ;;
-     ftp) fetch_install_file
-          start_extract_uzip_tar 
+     ftp)
+		  if [ "$PACKAGETYPE" = "split" ]
+		  then
+			fetch_split_files
+
+			INSDIR="${INSFILE}" ; export INSDIR
+			start_extract_split
+		  else
+          	fetch_install_file
+          	start_extract_uzip_tar 
+		  fi
           ;;
      rsync) start_rsync_copy
             ;;
diff -urN usr.sbin/pc-sysinstall.orig/backend/functions-installpackages.sh usr.sbin/pc-sysinstall/backend/functions-installpackages.sh
--- usr.sbin/pc-sysinstall.orig/backend/functions-installpackages.sh	2010-07-14 14:17:04.000000000 -0700
+++ usr.sbin/pc-sysinstall/backend/functions-installpackages.sh	2010-07-14 20:21:48.000000000 -0700
@@ -45,7 +45,7 @@
 
 		for d in ${DEPS}
 		do
-			get_all_package_dependencies "${d}" "${DEPFILE}"
+			determine_package_dependencies "${d}" "${DEPFILE}"
 		done
 	fi
 };
@@ -55,9 +55,11 @@
 {
 	local DEPFILE
 	local DEPS
+	local SAVEDIR
 
 	DEPFILE="${1}"
 	DEPS=`cat "${DEPFILE}"`
+	SAVEDIR="${2}"
 
 	for d in ${DEPS}
 	do
@@ -67,7 +69,7 @@
 		get_package_category "${SNAME}"
 		CATEGORY="${VAL}"
 
-		fetch_package "${CATEGORY}" "${d}"
+		fetch_package "${CATEGORY}" "${d}" "${SAVEDIR}"
 	done
 };
 
@@ -78,10 +80,19 @@
 	get_value_from_cfg installPackages
 	if [ ! -z "${VAL}" ]
 	then
-	  mkdir -p "${PKGTMPDIR}"
-
 	  HERE=`pwd`
-	  cd "${PKGTMPDIR}"
+	  rc_nohalt "mkdir -p ${FSMNT}/${PKGTMPDIR}"
+	  rc_nohalt "cd ${FSMNT}/${PKGTMPDIR}"
+
+	  if [ ! -f "${CONFDIR}/INDEX" ]
+	  then
+		get_package_index
+	  fi
+
+	  if [ ! -f "${CONFDIR}/INDEX.parsed" ]
+	  then
+		parse_package_index
+	  fi
 
       # Lets start by cleaning up the string and getting it ready to parse
       strip_white_space ${VAL}
@@ -91,28 +102,24 @@
 		if get_package_name "${i}"
 		then
 			PKGNAME="${VAL}"
-			DEPFILE="${PKGTMPDIR}/.${PKGNAME}.deps"
+			DEPFILE="${FSMNT}/${PKGTMPDIR}/.${PKGNAME}.deps"
 
-			touch "${DEPFILE}"
+			rc_nohalt "touch ${DEPFILE}"
 			determine_package_dependencies "${PKGNAME}" "${DEPFILE}"
-			fetch_package_dependencies "${DEPFILE}"
+			fetch_package_dependencies "${DEPFILE}" "${FSMNT}/${PKGTMPDIR}"
 
 			# If the package is not already installed, install it!
 			if ! run_chroot_cmd "pkg_info -e ${PKGNAME}"
 			then
-				echo_log "Adding package ${PKGNAME}"
-				pkg_add -C "${FSMNT}" "${PKGNAME}.tbz" >/dev/null 2>&1
-				if [ "$?" -eq "0" ]
-				then
-					echo_log "${PKGNAME} successfully installed!"
-				fi
+				rc_nohalt "pkg_add -C ${FSMNT} ${PKGTMPDIR}/${PKGNAME}.tbz"
 			fi
 
-			rm "${DEPFILE}"
+			rc_nohalt "rm ${DEPFILE}"
 		fi
+
+		rc_nohalt "cd ${HERE}"
 	  done
 
-	  #rm -rf "${PKGTMPDIR}"
-	  cd "${HERE}"
+	  #rm -rf "${FSMNT}/${PKGTMPDIR}"
 	fi
 };
diff -urN usr.sbin/pc-sysinstall.orig/backend/functions-packages.sh usr.sbin/pc-sysinstall/backend/functions-packages.sh
--- usr.sbin/pc-sysinstall.orig/backend/functions-packages.sh	2010-07-14 14:18:37.000000000 -0700
+++ usr.sbin/pc-sysinstall/backend/functions-packages.sh	2010-07-15 18:39:27.000000000 -0700
@@ -32,31 +32,80 @@
 . ${BACKEND}/functions-ftp.sh
 
 
-get_package_index()
+get_package_index_by_ftp()
 {
+	local INDEX_FILE
+	local FTP_SERVER
+
+	FTP_SERVER="${1}"
 	INDEX_FILE="INDEX"
 	USE_BZIP2=0
 
-	get_ftp_mirror
-	FTP_SERVER="${VAL}"
-
-	FTP_DIR="ftp://${FTP_SERVER}/pub/FreeBSD/releases/${FBSD_ARCH}/${FBSD_BRANCH}/packages"
-
 	if [ -f "/usr/bin/bzip2" ]
 	then
 		INDEX_FILE="${INDEX_FILE}.bz2"
 		USE_BZIP2=1
 	fi
 
-	fetch_file "${FTP_DIR}/${INDEX_FILE}" "${PKGDIR}/${INDEX_FILE}" "1"
+	INDEX_PATH="${CONFDIR}/${INDEX_FILE}"
+	fetch_file "${FTP_SERVER}/${INDEX_FILE}" "${INDEX_PATH}" "1"
+	if [ -f "${INDEX_PATH}" ] && [ "${USE_BZIP2}" -eq "1" ]
+	then
+		bzip2 -d "${INDEX_PATH}"
+	fi
+};
+
+get_package_index_by_fs()
+{
+	local INDEX_FILE
+
+	INDEX_FILE="${CDMNT}/packages/INDEX"
+	fetch_file "${INDEX_FILE}" "${CONFDIR}/" "0"
+};
 
-	HERE=`pwd`
-	cd "${PKGDIR}"
-	if [ -f "${INDEX_FILE}" ] && [ "${USE_BZIP2}" -eq "1" ]
+get_package_index()
+{
+	RES=0
+
+	if [ -z "${INSTALLMODE}" ]
 	then
-		bzip2 -d "${INDEX_FILE}"
+		get_ftp_mirror
+		FTPHOST="${VAL}"
+
+		FTPDIR="/pub/FreeBSD/releases/${FBSD_ARCH}/${FBSD_BRANCH}"
+		FTPPATH="ftp://${FTPHOST}${FTPDIR}/packages"
+
+		get_package_index_by_ftp "${FTPPATH}"
+
+	else
+		get_value_from_cfg ftpHost
+		if [ -z "$VAL" ]
+		then
+			exit_err "ERROR: Install medium was set to ftp, but no ftpHost was provided!" 
+		fi
+		FTPHOST="${VAL}"
+
+		get_value_from_cfg ftpDir
+		if [ -z "$VAL" ]
+		then
+			exit_err "ERROR: Install medium was set to ftp, but no ftpDir was provided!" 
+		fi
+		FTPDIR="${VAL}"
+
+		FTPPATH="ftp://${FTPHOST}${FTPDIR}"
+
+		case "${INSTALLMEDIUM}" in
+		usb|dvd) get_package_index_by_fs
+			;;
+		ftp) get_package_index_by_ftp "${FTPPATH}"
+			;;
+		*) RES=1
+			;;
+		esac
+
 	fi
-	cd "${HERE}"
+
+	return ${RES}
 };
 
 parse_package_index()
@@ -117,6 +166,8 @@
 {
 	PKGFILE="${1}"
 
+	echo "Available Packages:"
+
 	exec 3<&0
 	exec 0<"${PKGFILE}"
 
@@ -252,19 +303,62 @@
 	return ${RES}
 };
 
-fetch_package()
+fetch_package_by_ftp()
 {
 	CATEGORY="${1}"
 	PACKAGE="${2}"
+	SAVEDIR="${3}"
 
-	get_ftp_mirror
-	FTP_SERVER="${VAL}"
+	get_value_from_cfg ftpHost
+	if [ -z "$VAL" ]
+	then
+		exit_err "ERROR: Install medium was set to ftp, but no ftpHost was provided!" 
+	fi
+	FTPHOST="${VAL}"
+
+	get_value_from_cfg ftpDir
+	if [ -z "$VAL" ]
+	then
+		exit_err "ERROR: Install medium was set to ftp, but no ftpDir was provided!" 
+	fi
+	FTPDIR="${VAL}"
 
 	PACKAGE="${PACKAGE}.tbz"
-	if [ ! -f "${PKGTMPDIR}/${PACKAGE}" ]
+	FTP_SERVER="ftp://${FTPHOST}${FTPDIR}"
+
+	if [ ! -f "${SAVEDIR}/${PACKAGE}" ]
 	then
 		PKGPATH="${CATEGORY}/${PACKAGE}"
-		FTP_PATH="ftp://${FTP_SERVER}/pub/FreeBSD/releases/${FBSD_ARCH}/${FBSD_BRANCH}/packages/${PKGPATH}"
-		fetch_file "${FTP_PATH}" "${PKGTMPDIR}/" "0"
+		FTP_PATH="${FTP_HOST}/packages/${PKGPATH}"
+		fetch_file "${FTP_PATH}" "${SAVEDIR}/" "0"
+	fi
+};
+
+fetch_package_by_fs()
+{
+	CATEGORY="${1}"
+	PACKAGE="${2}"
+	SAVEDIR="${3}"
+
+	PACKAGE="${PACKAGE}.tbz"
+	if [ ! -f "${SAVEDIR}/${PACKAGE}" ]
+	then
+		fetch_file "${CDMNT}/packages/${CATEGORY}/${PACKAGE}" "${SAVEDIR}/" "0"
 	fi
 };
+
+fetch_package()
+{
+	CATEGORY="${1}"
+	PACKAGE="${2}"
+	SAVEDIR="${3}"
+
+	case "${INSTALLMEDIUM}" in
+	usb|dvd)
+		fetch_package_by_fs "${CATEGORY}" "${PACKAGE}" "${SAVEDIR}"
+		;;
+	ftp)
+		fetch_package_by_ftp "${CATEGORY}" "${PACKAGE}" "${SAVEDIR}"
+		;;
+	esac
+};
diff -urN usr.sbin/pc-sysinstall.orig/backend-query/list-packages.sh usr.sbin/pc-sysinstall/backend-query/list-packages.sh
--- usr.sbin/pc-sysinstall.orig/backend-query/list-packages.sh	2010-07-13 15:49:20.000000000 -0700
+++ usr.sbin/pc-sysinstall/backend-query/list-packages.sh	2010-07-14 18:05:53.000000000 -0700
@@ -56,14 +56,26 @@
 	NARGS=$((NARGS+1))
 fi
 
-echo "Available Packages:"
 if [ "${NARGS}" -eq "0" ]
 then
 	show_packages
 
 elif [ "${NARGS}" -eq "1" ]
 then
-	show_packages_by_category "${PACKAGE_CATEGORY}"
+	
+	if [ "${PACKAGE_CATEGORY}" = "@INDEX@" ]
+	then
+		if [ -f "${PKGDIR}/INDEX" ]
+		then
+			echo "${PKGDIR}/INDEX"
+			exit 0
+		else
+			exit 1
+		fi
+		
+	else
+		show_packages_by_category "${PACKAGE_CATEGORY}"
+	fi
 
 elif [ "${NARGS}" -eq "2" ]
 then


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->imp 
Responsible-Changed-By: linimon 
Responsible-Changed-When: Fri Jul 16 16:22:26 UTC 2010 
Responsible-Changed-Why:  
Sounds like imp territory. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=148661 
State-Changed-From-To: open->closed 
State-Changed-By: imp 
State-Changed-When: Thu Aug 19 00:05:17 MDT 2010 
State-Changed-Why:  
Committed 

http://www.freebsd.org/cgi/query-pr.cgi?pr=148661 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: bin/148661: commit references a PR
Date: Thu, 19 Aug 2010 06:01:39 +0000 (UTC)

 Author: imp
 Date: Thu Aug 19 06:01:25 2010
 New Revision: 211486
 URL: http://svn.freebsd.org/changeset/base/211486
 
 Log:
   Updates to pc-sysinstall that allow FTP installation of FreeBSD.
   
   PR:		148661
   Submitted by:	John Hixson
 
 Modified:
   head/usr.sbin/pc-sysinstall/backend-query/list-packages.sh
   head/usr.sbin/pc-sysinstall/backend/functions-extractimage.sh
   head/usr.sbin/pc-sysinstall/backend/functions-installpackages.sh
   head/usr.sbin/pc-sysinstall/backend/functions-packages.sh
 
 Modified: head/usr.sbin/pc-sysinstall/backend-query/list-packages.sh
 ==============================================================================
 --- head/usr.sbin/pc-sysinstall/backend-query/list-packages.sh	Thu Aug 19 05:59:27 2010	(r211485)
 +++ head/usr.sbin/pc-sysinstall/backend-query/list-packages.sh	Thu Aug 19 06:01:25 2010	(r211486)
 @@ -56,14 +56,26 @@ then
  	NARGS=$((NARGS+1))
  fi
  
 -echo "Available Packages:"
  if [ "${NARGS}" -eq "0" ]
  then
  	show_packages
  
  elif [ "${NARGS}" -eq "1" ]
  then
 -	show_packages_by_category "${PACKAGE_CATEGORY}"
 +	
 +	if [ "${PACKAGE_CATEGORY}" = "@INDEX@" ]
 +	then
 +		if [ -f "${PKGDIR}/INDEX" ]
 +		then
 +			echo "${PKGDIR}/INDEX"
 +			exit 0
 +		else
 +			exit 1
 +		fi
 +		
 +	else
 +		show_packages_by_category "${PACKAGE_CATEGORY}"
 +	fi
  
  elif [ "${NARGS}" -eq "2" ]
  then
 
 Modified: head/usr.sbin/pc-sysinstall/backend/functions-extractimage.sh
 ==============================================================================
 --- head/usr.sbin/pc-sysinstall/backend/functions-extractimage.sh	Thu Aug 19 05:59:27 2010	(r211485)
 +++ head/usr.sbin/pc-sysinstall/backend/functions-extractimage.sh	Thu Aug 19 06:01:25 2010	(r211486)
 @@ -203,6 +203,69 @@ fetch_install_file()
  
  };
  
 +# Function which will download freebsd install files
 +fetch_split_files()
 +{
 +  get_value_from_cfg ftpHost
 +  if [ -z "$VAL" ]
 +  then
 +    exit_err "ERROR: Install medium was set to ftp, but no ftpHost was provided!" 
 +  fi
 +  FTPHOST="${VAL}"
 +
 +  get_value_from_cfg ftpDir
 +  if [ -z "$VAL" ]
 +  then
 +    exit_err "ERROR: Install medium was set to ftp, but no ftpDir was provided!" 
 +  fi
 +  FTPDIR="${VAL}"
 +
 +  # Check if we have a /usr partition to save the download
 +  if [ -d "${FSMNT}/usr" ]
 +  then
 +    OUTFILE="${FSMNT}/usr/.fetch-${INSFILE}"
 +  else
 +    OUTFILE="${FSMNT}/.fetch-${INSFILE}"
 +  fi
 +
 +  NETRC="${OUTFILE}/.netrc"
 +  cat<<EOF>"${NETRC}"
 +machine ${FTPHOST}
 +login anonymous
 +password anonymous
 +macdef INSTALL
 +bin
 +prompt
 +EOF
 +
 +  DIRS="base catpages dict doc games info manpages proflibs kernels src"
 +  if [ "${FBSD_ARCH}" = "amd64" ]
 +  then
 +	DIRS="${DIRS} lib32"
 +  fi
 +
 +  for d in ${DIRS}
 +  do
 +	cat<<EOF>>"${NETRC}"
 +cd ${FTPDIR}/${d}
 +lcd ${OUTFILE}/${d}
 +mreget *
 +EOF
 +  done
 +
 +	cat<<EOF>>"${NETRC}"
 +bye
 +
 +
 +EOF
 +
 +   # Fetch the files via ftp
 +   echo "$ INSTALL" | ftp -N "${NETRC}" "${FTPHOST}"
 +
 +  # Done fetching, now reset the INSFILE to our downloaded archived
 +  INSFILE="${OUTFILE}" ; export INSFILE
 +}
 +
  # Function which does the rsync download from the server specifed in cfg
  start_rsync_copy()
  {
 @@ -304,8 +367,17 @@ init_extraction()
            	start_extract_uzip_tar
  		  fi
            ;;
 -     ftp) fetch_install_file
 -          start_extract_uzip_tar 
 +     ftp)
 +		  if [ "$PACKAGETYPE" = "split" ]
 +		  then
 +			fetch_split_files
 +
 +			INSDIR="${INSFILE}" ; export INSDIR
 +			start_extract_split
 +		  else
 +          	fetch_install_file
 +          	start_extract_uzip_tar 
 +		  fi
            ;;
       rsync) start_rsync_copy
              ;;
 
 Modified: head/usr.sbin/pc-sysinstall/backend/functions-installpackages.sh
 ==============================================================================
 --- head/usr.sbin/pc-sysinstall/backend/functions-installpackages.sh	Thu Aug 19 05:59:27 2010	(r211485)
 +++ head/usr.sbin/pc-sysinstall/backend/functions-installpackages.sh	Thu Aug 19 06:01:25 2010	(r211486)
 @@ -45,7 +45,7 @@ determine_package_dependencies()
  
  		for d in ${DEPS}
  		do
 -			get_all_package_dependencies "${d}" "${DEPFILE}"
 +			determine_package_dependencies "${d}" "${DEPFILE}"
  		done
  	fi
  };
 @@ -55,9 +55,11 @@ fetch_package_dependencies()
  {
  	local DEPFILE
  	local DEPS
 +	local SAVEDIR
  
  	DEPFILE="${1}"
  	DEPS=`cat "${DEPFILE}"`
 +	SAVEDIR="${2}"
  
  	for d in ${DEPS}
  	do
 @@ -67,7 +69,7 @@ fetch_package_dependencies()
  		get_package_category "${SNAME}"
  		CATEGORY="${VAL}"
  
 -		fetch_package "${CATEGORY}" "${d}"
 +		fetch_package "${CATEGORY}" "${d}" "${SAVEDIR}"
  	done
  };
  
 @@ -78,10 +80,19 @@ install_packages()
  	get_value_from_cfg installPackages
  	if [ ! -z "${VAL}" ]
  	then
 -	  mkdir -p "${PKGTMPDIR}"
 -
  	  HERE=`pwd`
 -	  cd "${PKGTMPDIR}"
 +	  rc_nohalt "mkdir -p ${FSMNT}/${PKGTMPDIR}"
 +	  rc_nohalt "cd ${FSMNT}/${PKGTMPDIR}"
 +
 +	  if [ ! -f "${CONFDIR}/INDEX" ]
 +	  then
 +		get_package_index
 +	  fi
 +
 +	  if [ ! -f "${CONFDIR}/INDEX.parsed" ]
 +	  then
 +		parse_package_index
 +	  fi
  
        # Lets start by cleaning up the string and getting it ready to parse
        strip_white_space ${VAL}
 @@ -91,28 +102,24 @@ install_packages()
  		if get_package_name "${i}"
  		then
  			PKGNAME="${VAL}"
 -			DEPFILE="${PKGTMPDIR}/.${PKGNAME}.deps"
 +			DEPFILE="${FSMNT}/${PKGTMPDIR}/.${PKGNAME}.deps"
  
 -			touch "${DEPFILE}"
 +			rc_nohalt "touch ${DEPFILE}"
  			determine_package_dependencies "${PKGNAME}" "${DEPFILE}"
 -			fetch_package_dependencies "${DEPFILE}"
 +			fetch_package_dependencies "${DEPFILE}" "${FSMNT}/${PKGTMPDIR}"
  
  			# If the package is not already installed, install it!
  			if ! run_chroot_cmd "pkg_info -e ${PKGNAME}"
  			then
 -				echo_log "Adding package ${PKGNAME}"
 -				pkg_add -C "${FSMNT}" "${PKGNAME}.tbz" >/dev/null 2>&1
 -				if [ "$?" -eq "0" ]
 -				then
 -					echo_log "${PKGNAME} successfully installed!"
 -				fi
 +				rc_nohalt "pkg_add -C ${FSMNT} ${PKGTMPDIR}/${PKGNAME}.tbz"
  			fi
  
 -			rm "${DEPFILE}"
 +			rc_nohalt "rm ${DEPFILE}"
  		fi
 +
 +		rc_nohalt "cd ${HERE}"
  	  done
  
 -	  #rm -rf "${PKGTMPDIR}"
 -	  cd "${HERE}"
 +	  #rm -rf "${FSMNT}/${PKGTMPDIR}"
  	fi
  };
 
 Modified: head/usr.sbin/pc-sysinstall/backend/functions-packages.sh
 ==============================================================================
 --- head/usr.sbin/pc-sysinstall/backend/functions-packages.sh	Thu Aug 19 05:59:27 2010	(r211485)
 +++ head/usr.sbin/pc-sysinstall/backend/functions-packages.sh	Thu Aug 19 06:01:25 2010	(r211486)
 @@ -32,31 +32,80 @@
  . ${BACKEND}/functions-ftp.sh
  
  
 -get_package_index()
 +get_package_index_by_ftp()
  {
 +	local INDEX_FILE
 +	local FTP_SERVER
 +
 +	FTP_SERVER="${1}"
  	INDEX_FILE="INDEX"
  	USE_BZIP2=0
  
 -	get_ftp_mirror
 -	FTP_SERVER="${VAL}"
 -
 -	FTP_DIR="ftp://${FTP_SERVER}/pub/FreeBSD/releases/${FBSD_ARCH}/${FBSD_BRANCH}/packages"
 -
  	if [ -f "/usr/bin/bzip2" ]
  	then
  		INDEX_FILE="${INDEX_FILE}.bz2"
  		USE_BZIP2=1
  	fi
  
 -	fetch_file "${FTP_DIR}/${INDEX_FILE}" "${PKGDIR}/${INDEX_FILE}" "1"
 +	INDEX_PATH="${CONFDIR}/${INDEX_FILE}"
 +	fetch_file "${FTP_SERVER}/${INDEX_FILE}" "${INDEX_PATH}" "1"
 +	if [ -f "${INDEX_PATH}" ] && [ "${USE_BZIP2}" -eq "1" ]
 +	then
 +		bzip2 -d "${INDEX_PATH}"
 +	fi
 +};
 +
 +get_package_index_by_fs()
 +{
 +	local INDEX_FILE
 +
 +	INDEX_FILE="${CDMNT}/packages/INDEX"
 +	fetch_file "${INDEX_FILE}" "${CONFDIR}/" "0"
 +};
  
 -	HERE=`pwd`
 -	cd "${PKGDIR}"
 -	if [ -f "${INDEX_FILE}" ] && [ "${USE_BZIP2}" -eq "1" ]
 +get_package_index()
 +{
 +	RES=0
 +
 +	if [ -z "${INSTALLMODE}" ]
  	then
 -		bzip2 -d "${INDEX_FILE}"
 +		get_ftp_mirror
 +		FTPHOST="${VAL}"
 +
 +		FTPDIR="/pub/FreeBSD/releases/${FBSD_ARCH}/${FBSD_BRANCH}"
 +		FTPPATH="ftp://${FTPHOST}${FTPDIR}/packages"
 +
 +		get_package_index_by_ftp "${FTPPATH}"
 +
 +	else
 +		get_value_from_cfg ftpHost
 +		if [ -z "$VAL" ]
 +		then
 +			exit_err "ERROR: Install medium was set to ftp, but no ftpHost was provided!" 
 +		fi
 +		FTPHOST="${VAL}"
 +
 +		get_value_from_cfg ftpDir
 +		if [ -z "$VAL" ]
 +		then
 +			exit_err "ERROR: Install medium was set to ftp, but no ftpDir was provided!" 
 +		fi
 +		FTPDIR="${VAL}"
 +
 +		FTPPATH="ftp://${FTPHOST}${FTPDIR}"
 +
 +		case "${INSTALLMEDIUM}" in
 +		usb|dvd) get_package_index_by_fs
 +			;;
 +		ftp) get_package_index_by_ftp "${FTPPATH}"
 +			;;
 +		*) RES=1
 +			;;
 +		esac
 +
  	fi
 -	cd "${HERE}"
 +
 +	return ${RES}
  };
  
  parse_package_index()
 @@ -117,6 +166,8 @@ show_package_file()
  {
  	PKGFILE="${1}"
  
 +	echo "Available Packages:"
 +
  	exec 3<&0
  	exec 0<"${PKGFILE}"
  
 @@ -252,19 +303,62 @@ get_package_category()
  	return ${RES}
  };
  
 -fetch_package()
 +fetch_package_by_ftp()
  {
  	CATEGORY="${1}"
  	PACKAGE="${2}"
 +	SAVEDIR="${3}"
  
 -	get_ftp_mirror
 -	FTP_SERVER="${VAL}"
 +	get_value_from_cfg ftpHost
 +	if [ -z "$VAL" ]
 +	then
 +		exit_err "ERROR: Install medium was set to ftp, but no ftpHost was provided!" 
 +	fi
 +	FTPHOST="${VAL}"
 +
 +	get_value_from_cfg ftpDir
 +	if [ -z "$VAL" ]
 +	then
 +		exit_err "ERROR: Install medium was set to ftp, but no ftpDir was provided!" 
 +	fi
 +	FTPDIR="${VAL}"
  
  	PACKAGE="${PACKAGE}.tbz"
 -	if [ ! -f "${PKGTMPDIR}/${PACKAGE}" ]
 +	FTP_SERVER="ftp://${FTPHOST}${FTPDIR}"
 +
 +	if [ ! -f "${SAVEDIR}/${PACKAGE}" ]
  	then
  		PKGPATH="${CATEGORY}/${PACKAGE}"
 -		FTP_PATH="ftp://${FTP_SERVER}/pub/FreeBSD/releases/${FBSD_ARCH}/${FBSD_BRANCH}/packages/${PKGPATH}"
 -		fetch_file "${FTP_PATH}" "${PKGTMPDIR}/" "0"
 +		FTP_PATH="${FTP_HOST}/packages/${PKGPATH}"
 +		fetch_file "${FTP_PATH}" "${SAVEDIR}/" "0"
 +	fi
 +};
 +
 +fetch_package_by_fs()
 +{
 +	CATEGORY="${1}"
 +	PACKAGE="${2}"
 +	SAVEDIR="${3}"
 +
 +	PACKAGE="${PACKAGE}.tbz"
 +	if [ ! -f "${SAVEDIR}/${PACKAGE}" ]
 +	then
 +		fetch_file "${CDMNT}/packages/${CATEGORY}/${PACKAGE}" "${SAVEDIR}/" "0"
  	fi
  };
 +
 +fetch_package()
 +{
 +	CATEGORY="${1}"
 +	PACKAGE="${2}"
 +	SAVEDIR="${3}"
 +
 +	case "${INSTALLMEDIUM}" in
 +	usb|dvd)
 +		fetch_package_by_fs "${CATEGORY}" "${PACKAGE}" "${SAVEDIR}"
 +		;;
 +	ftp)
 +		fetch_package_by_ftp "${CATEGORY}" "${PACKAGE}" "${SAVEDIR}"
 +		;;
 +	esac
 +};
 _______________________________________________
 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-unsubscribe@freebsd.org"
 
>Unformatted:
