svn commit: r246683 - projects/portbuild/admin/tools

Mark Linimon linimon at FreeBSD.org
Mon Feb 11 15:42:49 UTC 2013


Author: linimon (doc,ports committer)
Date: Mon Feb 11 15:42:48 2013
New Revision: 246683
URL: http://svnweb.freebsd.org/changeset/base/246683

Log:
  Reorder operations so that all zfs creates are done before permission
  definitions.  Although PORTBUILD_USER has only one subdirectory of
  ZFS_VOLUME to administer, parameterize it.  Clean up some noise from
  the id(1) commands.
  
  Note: this is still not sufficient.

Modified:
  projects/portbuild/admin/tools/newmkportbuild

Modified: projects/portbuild/admin/tools/newmkportbuild
==============================================================================
--- projects/portbuild/admin/tools/newmkportbuild	Mon Feb 11 15:13:28 2013	(r246682)
+++ projects/portbuild/admin/tools/newmkportbuild	Mon Feb 11 15:42:48 2013	(r246683)
@@ -13,9 +13,10 @@ DEFAULT_VCS_REPOSITORY="svn://svn.FreeBS
 DEFAULT_ZFS_VOLUME="a"
 DEFAULT_ZFS_PERMISSIONSET="clone,create,destroy,mount,promote,rename,rollback,send,share,snapshot"
 DEFAULT_ZFS_PERMISSIONSET_SNAPS="clone,snapshot"
+SNAP_DIRECTORY=snap
 
 # ownership of direct subdirectories of DEFAULT_ZFS_VOLUME
-SRCBUILD_OWNED_SUBDIRS="chroot pxeroot snap"
+SRCBUILD_OWNED_SUBDIRS="chroot pxeroot ${SNAP_DIRECTORY}"
 PORTBUILD_OWNED_SUBDIRS="portbuild"
 
 if [ `id -u` != 0 ]; then
@@ -27,7 +28,7 @@ if [ -z "${PORTBUILD_USER}" ]; then
   echo "You must export PORTBUILD_USER, for example, export PORTBUILD_USER=${DEFAULT_PORTBUILD_USER}."
   exit 1
 fi
-if [ ! `id ${PORTBUILD_USER} 2> /dev/null` ]; then
+if [ ! `id -u ${PORTBUILD_USER} 2> /dev/null` ]; then
   echo "User ${PORTBUILD_USER} must exist."
   exit 1
 fi
@@ -35,7 +36,7 @@ if [ -z "${SRCBUILD_USER}" ]; then
   echo "You must export SRCBUILD_USER, for example, export SRCBUILD_USER=${DEFAULT_SRCBUILD_USER}."
   exit 1
 fi
-if [ ! `id ${SRCBUILD_USER} 2> /dev/null` ]; then
+if [ ! `id -u ${SRCBUILD_USER} 2> /dev/null` ]; then
   echo "User ${SRCBUILD_USER} must exist."
   exit 1
 fi
@@ -51,11 +52,13 @@ if [ -z "${VCS_PORTBUILD_REPOSITORY}" ];
   fi
   VCS_PORTBUILD_REPOSITORY="${VCS_REPOSITORY}/base/projects/portbuild"
 fi
+
 if [ -z "${ZFS_VOLUME}" ]; then
   echo "You must export ZFS_VOLUME, for example, export ZFS_VOLUME=${DEFAULT_ZFS_VOLUME}."
   exit 1
 fi
 ZFS_MOUNTPOINT="/${ZFS_VOLUME}"
+
 if [ -z "${ZFS_PERMISSIONSET}" ]; then
   echo "You have not set ZFS_PERMISSIONSET.  I will use the default: ${DEFAULT_ZFS_PERMISSIONSET}."
   ZFS_PERMISSIONSET="${DEFAULT_ZFS_PERMISSIONSET}"
@@ -81,13 +84,24 @@ if [ ! -z "${mounted}" -a "${mounted}" !
   zfs umount ${ZFS_VOLUME} 2> /dev/null
 fi
 
-# create a place to hold all portbuild-managed files.  All other ZFS_VOLUME
-# files are managed by srcbuild.
-name=`zfs list -H -t filesystem -o name ${ZFS_VOLUME}/portbuild`
-if [ -z "${name}" ]; then
-  echo "ZFS volume ${ZFS_VOLUME}/portbuild does not exist.  I'll create it for you."
-  zfs create ${ZFS_VOLUME}/portbuild || exit 1
-fi
+# create subdirectories for portbuild-managed files.  All other ZFS_VOLUME
+# subdirectories are managed by srcbuild.
+for subdir in ${PORTBUILD_OWNED_SUBDIRS}; do
+  name=`zfs list -H -t filesystem -o name ${ZFS_VOLUME}/${subdir}`
+  if [ -z "${name}" ]; then
+    echo "ZFS volume ${ZFS_VOLUME}/${subdir} does not exist.  I'll create it for you."
+    zfs create ${ZFS_VOLUME}/${subdir} || exit 1
+  fi
+done
+
+# create subdirectories for srcbuild-managed files.
+for subdir in ${SRCBUILD_OWNED_SUBDIRS}; do
+  name=`zfs list -H -t filesystem -o name ${ZFS_VOLUME}/${subdir}`
+  if [ -z "${name}" ]; then
+    echo "ZFS volume ${ZFS_VOLUME}/${subdir} does not exist.  I'll create it for you."
+    zfs create ${ZFS_VOLUME}/${subdir} || exit 1
+  fi
+done
 
 # reset the "zfsalladmin" permission set if it already exists. 
 zfs unallow -s @zfsalladmin ${ZFS_VOLUME} 2> /dev/null   
@@ -113,6 +127,7 @@ zfs allow -s @zfssnapadmin ${ZFS_PERMISS
 zfs allow -du ${SRCBUILD_USER} @zfsalladmin ${ZFS_VOLUME} || exit 1
 zfs allow -lu ${SRCBUILD_USER} @zfsalladmin ${ZFS_VOLUME} || exit 1
 
+# after (possibly) modifying permissions, now it's permissable to remount.
 mounted=`zfs list -H -t filesystem -o mounted ${ZFS_VOLUME}`
 if [ -z "${mounted}" -o "${mounted}" = "no" ]; then
   echo "ZFS volume ${ZFS_VOLUME} is not mounted.  I'll remount it for you."
@@ -120,12 +135,8 @@ if [ -z "${mounted}" -o "${mounted}" = "
 fi
 chown ${SRCBUILD_USER} ${ZFS_MOUNTPOINT} 2> /dev/null
 
-# create various subdirectories to be managed by srcbuild.
+# (re)mount various subdirectories to be managed by srcbuild.
 for subdir in ${SRCBUILD_OWNED_SUBDIRS}; do
-  if [ ! -d ${ZFS_MOUNTPOINT}/${subdir} ]; then
-    echo "ZFS volume ${ZFS_VOLUME}/${subdir} does not exist.  I'll create it for you."
-    zfs create ${ZFS_VOLUME}/${subdir} || exit 1
-  fi
   mounted=`zfs list -H -t filesystem -o mounted ${ZFS_VOLUME}/${subdir}`
   if [ -z "${mounted}" -o "${mounted}" = "no" ]; then
     echo "ZFS volume ${ZFS_VOLUME}/${subdir} is not mounted.  I'll (re)mount it for you."
@@ -144,12 +155,8 @@ echo "results of ZFS operations:"
 zfs list ${ZFS_VOLUME}
 zfs allow ${ZFS_VOLUME}
 
-# create various subdirectories to be managed by portbuild.
+# (re)mount various subdirectories to be managed by portbuild.
 for subdir in ${PORTBUILD_OWNED_SUBDIRS}; do
-  if [ ! -d ${ZFS_MOUNTPOINT}/${subdir} ]; then
-    echo "ZFS volume ${ZFS_VOLUME}/${subdir} does not exist.  I'll create it for you."
-    zfs create ${ZFS_VOLUME}/${subdir} || exit 1
-  fi
   mounted=`zfs list -H -t filesystem -o mounted ${ZFS_VOLUME}/${subdir}`
   if [ -z "${mounted}" -o "${mounted}" = "no" ]; then
     echo "ZFS volume ${ZFS_VOLUME}/${subdir} is not mounted.  I'll (re)mount it for you."
@@ -158,16 +165,17 @@ for subdir in ${PORTBUILD_OWNED_SUBDIRS}
   chown ${PORTBUILD_USER} ${ZFS_MOUNTPOINT}/${subdir} 2> /dev/null
 done
 
-
 echo "checking out the repository as user ${PORTBUILD_USER} ..."
 su -m ${PORTBUILD_USER} -c "${VCS_CHECKOUT_COMMAND} ${VCS_PORTBUILD_REPOSITORY} ${ZFS_MOUNTPOINT}/portbuild" || exit 1
 
 # XXX MCL now have to move some directories over, create different
 # XXX MCL ownerships, and so forth.
 
-echo "$0: you should now be able to edit files in ${ZFS_MOUNTPOINT}/portbuild/conf."
+echo -n "$0: you should now be able to edit files in ${ZFS_MOUNTPOINT}/portbuild/admin/conf"
+echo " and ${ZFS_MOUNTPOINT}/portbuild/conf."
 
-# create convenience directories.  failure is annoying but non-fatal.
+# create convenience directories for PORTBUILD_USER.  failure is annoying
+# but non-fatal.
 extra_dirs="lockfiles log"
 for extra_dir in ${extra_dirs}; do
   if [ ! -d ${ZFS_MOUNTPOINT}/portbuild/${extra_dir} ]; then


More information about the svn-src-projects mailing list