svn commit: r246694 - in projects/portbuild: admin/scripts scripts

Mark Linimon linimon at FreeBSD.org
Mon Feb 11 22:59:11 UTC 2013


Author: linimon (doc,ports committer)
Date: Mon Feb 11 22:59:10 2013
New Revision: 246694
URL: http://svnweb.freebsd.org/changeset/base/246694

Log:
  makeworld and mkbindist need to belong to SRCBUILD_USER, not PORTBUILD_USER,
  in the new privilege separation world.

Added:
  projects/portbuild/admin/scripts/makeworld
     - copied unchanged from r246683, projects/portbuild/scripts/makeworld
  projects/portbuild/admin/scripts/mkbindist
     - copied unchanged from r246683, projects/portbuild/scripts/mkbindist
Deleted:
  projects/portbuild/scripts/makeworld
  projects/portbuild/scripts/mkbindist

Copied: projects/portbuild/admin/scripts/makeworld (from r246683, projects/portbuild/scripts/makeworld)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/portbuild/admin/scripts/makeworld	Mon Feb 11 22:59:10 2013	(r246694, copy of r246683, projects/portbuild/scripts/makeworld)
@@ -0,0 +1,122 @@
+#!/bin/sh
+
+#
+# XXX lockfile and interlock with mkbindist to avoid overlapping
+# builds
+
+if [ $# -lt 2 ]; then
+  echo "usage: makeworld <arch> <branch> [<buildid>] [args]"
+  exit 1
+fi
+
+arch=$1
+branch=$2
+shift 2
+
+buildid="latest"
+if [ $# -gt 0 ]; then
+  case "$1" in
+    -client)
+      ;;
+    -nocvs|-novcs)
+      ;;
+    *)
+      buildid="$1"
+      shift
+      ;;
+  esac
+fi
+
+pbc=${PORTBUILD_CHECKOUT:-/var/portbuild}
+pbd=${PORTBUILD_DATA:-/var/portbuild}
+
+builddir=${pbd}/${arch}/${branch}/builds/${buildid}
+if [ ! -d ${builddir} ]; then
+    echo "build directory ${builddir} does not exist!"
+    exit 1
+fi
+
+. ${pbc}/conf/server.conf
+. ${pbc}/conf/common.conf
+. ${pbd}/${arch}/portbuild.conf
+if [ -f ${builddir}/portbuild.conf ]; then
+    . ${builddir}/portbuild.conf
+fi
+# NB: we can't use buildenv because it sets ARCH and MACHINE_ARCH that
+# confuses cross-builds
+
+export TARGET_ARCH=${arch}
+# Workaround needed for zfs - 20090321 erwin
+export NO_FSCHG=1
+
+client=0
+novcs=0
+
+# optional arguments
+while [ $# -gt 0 ]; do
+  case "$1" in
+    -client)
+      client=1
+      ;;
+    -nocvs|-novcs)
+      novcs=1
+      ;;
+    *)
+      args="$1 ${args}"
+      ;;
+  esac
+  shift
+done
+
+# XXX MCL I don't know what -client is supposed to do.
+if [ "$client" = "1" ]; then
+	SRC_BASE=${pbd}/${arch}/src-client
+	shift 1
+else
+	SRC_BASE=${builddir}/src
+
+	# allow for per-build make.conf
+	if [ -f ${builddir}/make.conf.server ]; then
+	    export __MAKE_CONF=${builddir}/make.conf.server
+	else
+	    export __MAKE_CONF=/dev/null
+	fi
+
+	# allow for per-build src.conf
+	if [ -f ${builddir}/src.conf.server ]; then
+	    export SRCCONF=${builddir}/src.conf.server
+	else
+	    export SRCCONF=/dev/null
+	fi
+fi
+
+cd ${SRC_BASE} || exit $?
+
+if [ "$novcs" = "0" ]; then
+	echo "==> Updating source tree"
+	# XXX MCL 20121120 not yet tested.
+	${VCS_UPDATE_COMMAND} ${SRC_BASE} || exit $?
+fi
+
+echo "==> Starting make buildworld"
+make buildworld ${args} || exit $?
+
+echo "==> Cleaning up destdir"
+destdir=${WORLDDIR}/${arch}/${branch}
+rm -rf ${destdir}/
+chflags -R noschg ${destdir}/
+rm -rf ${destdir}/
+mkdir -p ${destdir} || exit $?
+
+echo "==> Starting make installworld"
+if [ "$client" = "0" ]; then
+	export NEWSPARC_TIMETYPE=__int64_t
+	make installworld DESTDIR=${destdir} || exit $?
+
+	echo "==> Starting make distribute"
+	make DESTDIR=${destdir} distrib-dirs && \
+	    make DESTDIR=${destdir} distribution || exit $?
+
+else
+	echo "==> Not doing installworld of client source tree"
+fi

Copied: projects/portbuild/admin/scripts/mkbindist (from r246683, projects/portbuild/scripts/mkbindist)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/portbuild/admin/scripts/mkbindist	Mon Feb 11 22:59:10 2013	(r246694, copy of r246683, projects/portbuild/scripts/mkbindist)
@@ -0,0 +1,93 @@
+#!/bin/sh
+
+# XXX merge with makeworld?
+
+usage () {
+  echo "usage: mkbindist <arch> <branch> [<buildid>]"
+  exit 1
+}
+
+cleandir() {
+    dir=$1
+    rm -rf ${dir} 2>/dev/null
+    if [ -d ${dir} ]; then
+	chflags -R noschg ${dir}
+	rm -rf ${dir}
+    fi
+}
+
+if [ $# -lt 2 ]; then
+  usage
+fi
+
+arch=$1
+branch=$2
+shift 2
+ 
+buildid="latest"
+if [ $# -gt 0 ]; then
+    buildid="$1"
+    shift
+fi
+
+pbc=${PORTBUILD_CHECKOUT:-/var/portbuild}
+pbd=${PORTBUILD_DATA:-/var/portbuild}
+
+builddir=${pbd}/${arch}/${branch}/builds/${buildid}
+if [ ! -d ${builddir} ]; then
+    echo "build directory ${builddir} does not exist!"
+    exit 1
+fi
+ 
+. ${pbc}/conf/server.conf
+. ${pbd}/${arch}/portbuild.conf
+if [ -f ${builddir}/portbuild.conf ]; then
+    . ${builddir}/portbuild.conf
+fi
+
+. ${pbc}/scripts/buildenv
+
+if ! validate_env ${arch} ${branch}; then
+    echo "Invalid build environment ${arch}/${branch}"
+    exit 1
+fi
+
+tmpdir=${builddir}/bindist/tmp
+
+# Clean up ${tmpdir}
+cleandir ${tmpdir}
+mkdir -p ${tmpdir}
+
+# Copy the files into the tmpdir from an existing built world
+destdir=${WORLDDIR}/${arch}/${branch}
+cd ${destdir}; find -dx . | \
+    grep -v -E '^./usr/(local|obj|opt|ports|src)' | \
+    grep -v '^./home' | \
+    grep -v '^./var/db/pkg' | \
+    cpio -dump ${tmpdir}
+
+cd ${tmpdir}
+
+# Customize the tmpdir
+if [ -s "${builddir}/bindist/delete" ]; then
+  sed -e "s,^,${tmpdir}," ${builddir}/bindist/delete | xargs rm -rf
+fi
+if [ -s "${builddir}/bindist/dirlist" ]; then
+  cat "${builddir}/bindist/dirlist" | xargs mkdir -p 
+fi
+# XXX MCL seems to be obsoleted by individual files in clients/?
+if [ -d ${builddir}/bindist/files ]; then
+  cd ${builddir}/bindist/files; find -dx . | cpio -dump ${tmpdir}
+fi
+
+# Post-processing of installed world
+date '+%Y%m%d' > ${tmpdir}/var/db/port.mkversion
+
+# Create the tarball
+tar cfCj ${builddir}/.bindist.tbz ${tmpdir} .
+mv -f ${builddir}/.bindist.tbz ${builddir}/bindist.tbz
+md5 ${builddir}/bindist.tbz > ${builddir}/bindist.tbz.md5
+
+# Clean up
+cd ${builddir}
+cleandir ${tmpdir}


More information about the svn-src-projects mailing list