Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 8 Mar 2013 15:06:47 +0000 (UTC)
From:      Bruce M Simpson <bms@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r313653 - in head/sysutils: . pc-sysinstall pc-sysinstall/files
Message-ID:  <201303081506.r28F6l3N052037@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: bms (src committer)
Date: Fri Mar  8 15:06:47 2013
New Revision: 313653
URL: http://svnweb.freebsd.org/changeset/ports/313653

Log:
  Add port of the PC-BSD installer, pc-sysinstall.
  
  pc-sysinstall is a new installer for FreeBSD, with a number of advantages
  over the legacy sysinstall installer.
  
  The port makes pc-sysinstall more widely available. It can be used with older
  FreeBSD releases, with an appropriate conversion script. It has been used
  to perform network installs of FreeBSD 8.3 in a university protocol testbed.
  
  Josh Paetzel will be maintainer.
  
  Submitted by:	bms
  Reviewed by:	eadler

Added:
  head/sysutils/pc-sysinstall/
  head/sysutils/pc-sysinstall/Makefile   (contents, props changed)
  head/sysutils/pc-sysinstall/distinfo   (contents, props changed)
  head/sysutils/pc-sysinstall/files/
  head/sysutils/pc-sysinstall/files/patch-pc-sysinstall-distfiles   (contents, props changed)
  head/sysutils/pc-sysinstall/files/pc-sysinstall.mtree   (contents, props changed)
  head/sysutils/pc-sysinstall/pkg-descr   (contents, props changed)
  head/sysutils/pc-sysinstall/pkg-plist   (contents, props changed)
Modified:
  head/sysutils/Makefile

Modified: head/sysutils/Makefile
==============================================================================
--- head/sysutils/Makefile	Fri Mar  8 15:04:18 2013	(r313652)
+++ head/sysutils/Makefile	Fri Mar  8 15:06:47 2013	(r313653)
@@ -655,6 +655,7 @@
     SUBDIR += pax-utils
     SUBDIR += pbimaker
     SUBDIR += pbreg
+    SUBDIR += pc-sysinstall
     SUBDIR += pcfclock
     SUBDIR += pciutils
     SUBDIR += pcpustat

Added: head/sysutils/pc-sysinstall/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/pc-sysinstall/Makefile	Fri Mar  8 15:06:47 2013	(r313653)
@@ -0,0 +1,60 @@
+# Created by: bms
+# $FreeBSD$
+
+PORTNAME=	pc-sysinstall
+PORTVERSION=	9.1r${PSVN_REV}
+CATEGORIES=	sysutils
+MASTER_SITES=	LOCAL/bms
+
+MAINTAINER=	josh@ixsystems.com
+COMMENT=	PC-BSD system install utility
+
+LICENSE=	BSD
+
+PATCH_STRIP=	-p2
+USE_BZIP2=	yes
+
+MAN8=		${PORTNAME}.8
+MANCOMPRESSED=	yes
+
+ONLY_FOR_ARCH=	i386 amd64
+
+FSVN_REV=	243808
+PSVN_REV=	21630
+
+post-patch:
+	${RM} -f ${WRKSRC}/Makefile.inc
+	@${REINPLACE_CMD} -e 's|/usr|${LOCALBASE}|g' \
+	    ${WRKSRC}/pc-sysinstall/pc-sysinstall.sh
+
+do-build:
+	cd ${WRKSRC} && ${MAKE} DESTDIR=${PREFIX} SHAREDIR=/share BINDIR=/sbin MANDIR=/man/man
+
+do-install:
+	${MKDIR} ${DATADIR}
+	${MKDIR} ${EXAMPLESDIR}
+	${MTREE_CMD} -U -d -p ${DATADIR} -f ${FILESDIR}/pc-sysinstall.mtree
+	cd ${WRKSRC} && make install DESTDIR=${PREFIX} SHAREDIR=/share BINDIR=/sbin MANDIR=/man/man
+
+.if defined(BOOTSTRAP) || defined(SVN_FETCH)
+FETCH_DEPENDS+=		svn:${PORTSDIR}/devel/subversion
+
+FSVNPATH?=	http://svn.freebsd.org/base/release/9.1.0
+FSVNDIR=	usr.sbin/pc-sysinstall
+
+PSVNPATH?=	svn://trac.pcbsd.org/pcbsd/branches/9.1
+PSVNDIR=	build-files/src-patches
+PSVNFILE=	patch-pc-sysinstall-distfiles
+
+do-fetch:
+	${MKDIR} ${WRKDIR}
+	svn export -r ${FSVN_REV} ${FSVNPATH}/${FSVNDIR} ${WRKDIR}/${DISTNAME}
+	#svn export -r ${PSVN_REV} ${PSVNPATH}/${PSVNDIR}/${PSVNFILE} ${WRKDIR}/${PORTNAME}
+	cd ${WRKDIR}; tar cvfy ${DISTDIR}/${DISTNAME}.tar.bz2 ${DISTNAME}
+.if ${USER} == bmsNOTYET
+	scp ${DISTDIR}/${DISTNAME}.tar.bz2 \
+	    bms@freefall.freebsd.org:public_distfiles/
+.endif
+.endif
+
+.include <bsd.port.mk>

Added: head/sysutils/pc-sysinstall/distinfo
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/pc-sysinstall/distinfo	Fri Mar  8 15:06:47 2013	(r313653)
@@ -0,0 +1,2 @@
+SHA256 (pc-sysinstall-9.1r21630.tar.bz2) = 3f11727d9fdfb07be99ec138fec7221ba8ca7172dce336a4fb74c7e2145ac95e
+SIZE (pc-sysinstall-9.1r21630.tar.bz2) = 56061

Added: head/sysutils/pc-sysinstall/files/patch-pc-sysinstall-distfiles
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/pc-sysinstall/files/patch-pc-sysinstall-distfiles	Fri Mar  8 15:06:47 2013	(r313653)
@@ -0,0 +1,273 @@
+Index: usr.sbin/pc-sysinstall/backend/functions-extractimage.sh
+===================================================================
+--- usr.sbin/pc-sysinstall/backend/functions-extractimage.sh	(revision 241789)
++++ usr.sbin/pc-sysinstall/backend/functions-extractimage.sh	(working copy)
+@@ -29,23 +29,60 @@
+ 
+ . ${BACKEND}/functions-mountoptical.sh
+ 
++# Performs the extraction of data to disk from FreeBSD dist files
++start_extract_dist()
++{
++  if [ -z "$1" ] ; then exit_err "Called dist extraction with no directory set!"; fi
++  if [ -z "$INSFILE" ]; then exit_err "Called extraction with no install file set!"; fi
++  local DDIR="$1"
++
++  # Check if we are doing an upgrade, and if so use our exclude list
++  if [ "${INSTALLMODE}" = "upgrade" ]; then
++   TAROPTS="-X ${PROGDIR}/conf/exclude-from-upgrade"
++  else
++   TAROPTS=""
++  fi
++
++  # Loop though and extract dist files
++  for di in $INSFILE
++  do
++      # Check the MANIFEST see if we have an archive size / count
++      if [ -e "${DDIR}/MANIFEST" ]; then 
++         count=`grep "^${di}.txz" ${DDIR}/MANIFEST | awk '{print $3}'`
++	 if [ ! -z "$count" ] ; then
++            echo "INSTALLCOUNT: $count"
++	 fi
++      fi
++      echo_log "pc-sysinstall: Starting Extraction (${di})"
++      tar -xpv -C ${FSMNT} -f ${DDIR}/${di}.txz ${TAROPTS} >&1 2>&1
++      if [ $? -ne 0 ]; then
++        exit_err "ERROR: Failed extracting the dist file: $di"
++      fi
++  done
++
++  # Check if this was a FTP download and clean it up now
++  if [ "${INSTALLMEDIUM}" = "ftp" ]; then
++    echo_log "Cleaning up downloaded archives"
++    rm -rf ${DDIR}
++  fi
++
++  echo_log "pc-sysinstall: Extraction Finished"
++}
++
+ # Performs the extraction of data to disk from a uzip or tar archive
+ start_extract_uzip_tar()
+ {
+-  if [ -z "$INSFILE" ]
+-  then
++  if [ -z "$INSFILE" ]; then
+     exit_err "ERROR: Called extraction with no install file set!"
+   fi
+ 
+   # Check if we have a .count file, and echo it out for a front-end to use in progress bars
+-  if [ -e "${INSFILE}.count" ]
+-  then
++  if [ -e "${INSFILE}.count" ]; then
+     echo "INSTALLCOUNT: `cat ${INSFILE}.count`"
+   fi
+ 
+   # Check if we are doing an upgrade, and if so use our exclude list
+-  if [ "${INSTALLMODE}" = "upgrade" ]
+-  then
++  if [ "${INSTALLMODE}" = "upgrade" ]; then
+    TAROPTS="-X ${PROGDIR}/conf/exclude-from-upgrade"
+   else
+    TAROPTS=""
+@@ -87,9 +124,8 @@
+       mdconfig -d -u ${MDDEVICE}
+        ;;
+     tar)
+-	  tar -xpv -C ${FSMNT} -f ${INSFILE} ${TAROPTS} >&1 2>&1
+-      if [ $? -ne 0 ]
+-      then
++      tar -xpv -C ${FSMNT} -f ${INSFILE} ${TAROPTS} >&1 2>&1
++      if [ $? -ne 0 ]; then
+         exit_err "ERROR: Failed extracting the tar image"
+       fi
+       ;;
+@@ -176,6 +212,38 @@
+   echo_log "pc-sysinstall: Extraction Finished"
+ };
+ 
++# Function which will attempt to fetch the dist file(s) before we start
++fetch_dist_file()
++{
++  get_value_from_cfg ftpPath
++  if [ -z "$VAL" ]
++  then
++    exit_err "ERROR: Install medium was set to ftp, but no ftpPath was provided!" 
++  fi
++
++  FTPPATH="${VAL}"
++  
++  # Check if we have a /usr partition to save the download
++  if [ -d "${FSMNT}/usr" ]
++  then
++    DLDIR="${FSMNT}/usr/.fetch.$$"
++  else
++    DLDIR="${FSMNT}/.fetch.$$"
++  fi
++  mkdir -p ${DLDIR}
++
++  # Do the fetch of the dist archive(s) now
++  for di in $INSFILE
++  do
++    fetch_file "${FTPPATH}/${di}.txz" "${DLDIR}/${di}.txz" "1"
++  done
++
++  # Check to see if there is a MANIFEST file for this install
++  fetch_file "${FTPPATH}/MANIFEST" "${DLDIR}/MANIFEST" "0"
++
++  export DLDIR
++};
++
+ # Function which will attempt to fetch the install file before we start
+ # the install
+ fetch_install_file()
+@@ -390,6 +458,13 @@
+       case $PACKAGETYPE in
+         uzip) INSFILE="${FBSD_UZIP_FILE}" ;;
+         tar) INSFILE="${FBSD_TAR_FILE}" ;;
++        dist) 
++	  get_value_from_cfg_with_spaces distFiles
++	  if [ -z "$VAL" ] ; then
++	     exit_err "No dist files specified!"
++	  fi
++	  INSFILE="${VAL}" 
++  	  ;;
+         split)
+           INSDIR="${FBSD_BRANCH_DIR}"
+ 
+@@ -401,6 +476,13 @@
+       case $PACKAGETYPE in
+         uzip) INSFILE="${UZIP_FILE}" ;;
+         tar) INSFILE="${TAR_FILE}" ;;
++        dist) 
++	  get_value_from_cfg_with_spaces distFiles
++	  if [ -z "$VAL" ] ; then
++	     exit_err "No dist files specified!"
++	  fi
++	  INSFILE="${VAL}" 
++  	  ;;
+       esac
+     fi
+     export INSFILE
+@@ -417,22 +499,32 @@
+ 	    start_extract_split
+ 
+       else
+-        INSFILE="${CDMNT}/${INSFILE}" ; export INSFILE
+-        start_extract_uzip_tar
++	if [ "$PACKAGETYPE" = "dist" ] ; then
++          start_extract_dist "${CDMNT}/usr/freebsd-dist"
++	else
++          INSFILE="${CDMNT}/${INSFILE}" ; export INSFILE
++          start_extract_uzip_tar
++	fi
+       fi
+       ;;
+ 
+     ftp)
+-      if [ "$PACKAGETYPE" = "split" ]
+-      then
+-        fetch_split_files
++      case $PACKAGETYPE in
++	 split)
++           fetch_split_files
+ 
+-        INSDIR="${INSFILE}" ; export INSDIR
+-        start_extract_split
+-      else
+-        fetch_install_file
+-        start_extract_uzip_tar 
+-      fi
++           INSDIR="${INSFILE}" ; export INSDIR
++           start_extract_split
++	   ;;
++	  dist)
++           fetch_dist_file
++           start_extract_dist "$DLDIR"
++	   ;;
++	     *)
++           fetch_install_file
++           start_extract_uzip_tar 
++	   ;;
++       esac
+       ;;
+ 
+     sftp) ;;
+@@ -446,8 +538,13 @@
+         exit_err "Install medium was set to local, but no localPath was provided!"
+       fi
+       LOCALPATH=$VAL
+-      INSFILE="${LOCALPATH}/${INSFILE}" ; export INSFILE
+-      start_extract_uzip_tar
++      if [ "$PACKAGETYPE" = "dist" ] ; then
++        INSFILE="${LOCALPATH}/${INSFILE}" ; export INSFILE
++        start_extract_dist "$LOCALPATH"
++      else
++        INSFILE="${LOCALPATH}/${INSFILE}" ; export INSFILE
++        start_extract_uzip_tar
++      fi
+       ;;
+     *) exit_err "ERROR: Unknown install medium" ;;
+   esac
+Index: usr.sbin/pc-sysinstall/backend/functions-parse.sh
+===================================================================
+--- usr.sbin/pc-sysinstall/backend/functions-parse.sh	(revision 241789)
++++ usr.sbin/pc-sysinstall/backend/functions-parse.sh	(working copy)
+@@ -45,7 +45,7 @@
+ {
+   if [ -n "${1}" ]
+   then
+-    export VAL=`grep "^${1}=" ${CFGF} | head -n 1 | cut -d '=' -f 2-`
++    export VAL="`grep ^${1}= ${CFGF} | head -n 1 | cut -d '=' -f 2-`"
+   else
+     exit_err "Error: Did we forgot to supply a setting to grab?"
+   fi
+Index: usr.sbin/pc-sysinstall/backend/parseconfig.sh
+===================================================================
+--- usr.sbin/pc-sysinstall/backend/parseconfig.sh	(revision 241789)
++++ usr.sbin/pc-sysinstall/backend/parseconfig.sh	(working copy)
+@@ -69,7 +69,7 @@
+ check_value installMode "fresh upgrade extract"
+ check_value installType "PCBSD FreeBSD"
+ check_value installMedium "dvd usb ftp rsync image local"
+-check_value packageType "uzip tar rsync split"
++check_value packageType "uzip tar rsync split dist"
+ if_check_value_exists mirrorbal "load prefer round-robin split"
+ 
+ # We passed all sanity checks! Yay, lets start the install
+Index: usr.sbin/pc-sysinstall/examples/README
+===================================================================
+--- usr.sbin/pc-sysinstall/examples/README	(revision 241789)
++++ usr.sbin/pc-sysinstall/examples/README	(working copy)
+@@ -243,11 +243,16 @@
+ 
+ Available Types:
+   dvd - Search for and mount the DVD which contains the install archive
++local - Pull files directly from a local directory
+   usb - Search for and mount the USB drive which contains the install archive
+   ftp - The install archive will be fetched from a FTP / HTTP server before install
+ rsync - Pull the system data from a ssh + rsync server, specified with variables below
+ image - Install system from an image
+ 
++# localPath=/usr/freebsd-dist
++
++Location of the directory we will be pulling installation files from
++
+ # installType=(PCBSD, FreeBSD)
+ 
+ Set the type of system we are installing, PCBSD or FreeBSD
+@@ -256,10 +261,14 @@
+ 
+ The installer archive, if not using the defaults specified in conf/pc-sysinstall.conf
+ 
+-# packageType=(tar, uzip, split)
++# packageType=(tar, uzip, split, dist)
+ 
+ The archive type we are extracting from when using dvd, usb or ftp
+ 
++# distFiles=base src kernel
++
++List of dist files to install when packageType=dist
++
+ # ftpPath=ftp://ftp.pcbsd.org/pub/8.0/netinstall
+ 
+ Location of the installer archive when using a installMedium=ftp

Added: head/sysutils/pc-sysinstall/files/pc-sysinstall.mtree
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/pc-sysinstall/files/pc-sysinstall.mtree	Fri Mar  8 15:06:47 2013	(r313653)
@@ -0,0 +1,15 @@
+# pc-sysinstall hierarchy
+.
+/set type=dir uname=root gname=wheel mode=0755
+            backend
+            ..
+	    backend-partmanager
+            ..
+	    backend-query
+            ..
+	    conf
+                license
+		..
+            ..
+	    doc
+            ..

Added: head/sysutils/pc-sysinstall/pkg-descr
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/pc-sysinstall/pkg-descr	Fri Mar  8 15:06:47 2013	(r313653)
@@ -0,0 +1,2 @@
+This port produces a package of the pc-sysinstall utility, intended
+for use on older FreeBSD installations.

Added: head/sysutils/pc-sysinstall/pkg-plist
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/pc-sysinstall/pkg-plist	Fri Mar  8 15:06:47 2013	(r313653)
@@ -0,0 +1,78 @@
+sbin/pc-sysinstall
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/README
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/pc-autoinstall.conf
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/pcinstall.cfg.fbsd-netinstall
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/pcinstall.cfg.geli
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/pcinstall.cfg.gmirror
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/pcinstall.cfg.netinstall
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/pcinstall.cfg.restore
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/pcinstall.cfg.rsync
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/pcinstall.cfg.upgrade
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/pcinstall.cfg.zfs
+%%DATADIR%%/backend-partmanager/create-part.sh
+%%DATADIR%%/backend-partmanager/delete-part.sh
+%%DATADIR%%/backend-query/detect-emulation.sh
+%%DATADIR%%/backend-query/detect-laptop.sh
+%%DATADIR%%/backend-query/detect-nics.sh
+%%DATADIR%%/backend-query/disk-info.sh
+%%DATADIR%%/backend-query/disk-list.sh
+%%DATADIR%%/backend-query/disk-part.sh
+%%DATADIR%%/backend-query/enable-net.sh
+%%DATADIR%%/backend-query/get-packages.sh
+%%DATADIR%%/backend-query/list-components.sh
+%%DATADIR%%/backend-query/list-config.sh
+%%DATADIR%%/backend-query/list-mirrors.sh
+%%DATADIR%%/backend-query/list-packages.sh
+%%DATADIR%%/backend-query/list-rsync-backups.sh
+%%DATADIR%%/backend-query/list-tzones.sh
+%%DATADIR%%/backend-query/query-langs.sh
+%%DATADIR%%/backend-query/send-logs.sh
+%%DATADIR%%/backend-query/set-mirror.sh
+%%DATADIR%%/backend-query/setup-ssh-keys.sh
+%%DATADIR%%/backend-query/sys-mem.sh
+%%DATADIR%%/backend-query/test-live.sh
+%%DATADIR%%/backend-query/test-netup.sh
+%%DATADIR%%/backend-query/update-part-list.sh
+%%DATADIR%%/backend-query/xkeyboard-layouts.sh
+%%DATADIR%%/backend-query/xkeyboard-models.sh
+%%DATADIR%%/backend-query/xkeyboard-variants.sh
+%%DATADIR%%/backend/functions-bsdlabel.sh
+%%DATADIR%%/backend/functions-cleanup.sh
+%%DATADIR%%/backend/functions-disk.sh
+%%DATADIR%%/backend/functions-extractimage.sh
+%%DATADIR%%/backend/functions-ftp.sh
+%%DATADIR%%/backend/functions-installcomponents.sh
+%%DATADIR%%/backend/functions-installpackages.sh
+%%DATADIR%%/backend/functions-localize.sh
+%%DATADIR%%/backend/functions-mountdisk.sh
+%%DATADIR%%/backend/functions-mountoptical.sh
+%%DATADIR%%/backend/functions-networking.sh
+%%DATADIR%%/backend/functions-newfs.sh
+%%DATADIR%%/backend/functions-packages.sh
+%%DATADIR%%/backend/functions-parse.sh
+%%DATADIR%%/backend/functions-runcommands.sh
+%%DATADIR%%/backend/functions-unmount.sh
+%%DATADIR%%/backend/functions-upgrade.sh
+%%DATADIR%%/backend/functions-users.sh
+%%DATADIR%%/backend/functions.sh
+%%DATADIR%%/backend/installimage.sh
+%%DATADIR%%/backend/parseconfig.sh
+%%DATADIR%%/backend/startautoinstall.sh
+%%DATADIR%%/conf/avail-langs
+%%DATADIR%%/conf/exclude-from-upgrade
+%%DATADIR%%/conf/license/bsd-en.txt
+%%DATADIR%%/conf/license/intel-en.txt
+%%DATADIR%%/conf/license/nvidia-en.txt
+%%DATADIR%%/conf/pc-sysinstall.conf
+%%DATADIR%%/doc/help-disk-list
+%%DATADIR%%/doc/help-disk-size
+%%DATADIR%%/doc/help-index
+%%DATADIR%%/doc/help-start-autoinstall
+@dirrm %%DATADIR%%/doc
+@dirrm %%DATADIR%%/conf/license
+@dirrm %%DATADIR%%/conf
+@dirrm %%DATADIR%%/backend-query
+@dirrm %%DATADIR%%/backend-partmanager
+@dirrm %%DATADIR%%/backend
+@dirrm %%DATADIR%%
+%%PORTEXAMPLES%%@dirrm %%EXAMPLESDIR%%



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201303081506.r28F6l3N052037>