Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 20 Jul 2013 13:10:24 +0000 (UTC)
From:      Nathan Whitehorn <nwhitehorn@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r253490 - user/nwhitehorn
Message-ID:  <201307201310.r6KDAOqH075558@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: nwhitehorn
Date: Sat Jul 20 13:10:23 2013
New Revision: 253490
URL: http://svnweb.freebsd.org/changeset/base/253490

Log:
  Experimental scripts for building packages using a cluster set up with
  sysutils/condor. Core package building should be integrated with poudriere
  eventually.

Added:
  user/nwhitehorn/buildport.sh   (contents, props changed)
  user/nwhitehorn/buildportsdag.sh   (contents, props changed)
  user/nwhitehorn/fetchandlinks.sh   (contents, props changed)
  user/nwhitehorn/package.sub
  user/nwhitehorn/prepbuildjail   (contents, props changed)
  user/nwhitehorn/reapbuildjail   (contents, props changed)
  user/nwhitehorn/sudoers

Added: user/nwhitehorn/buildport.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/nwhitehorn/buildport.sh	Sat Jul 20 13:10:23 2013	(r253490)
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin
+
+port=$1
+pkg=$2
+release=$3
+
+scratchdir=$(pwd)
+
+# Some settings must go in make.conf:
+#  USE_PACKAGE_DEPENDS=true
+
+set -e
+sudo /pkgscripts/prepbuildjail $_CONDOR_SLOT $release
+sudo jexec $_CONDOR_SLOT make -C $port install USE_PACKAGE_DEPENDS=true BATCH=true WRKDIRPREFIX=/obj DISABLE_MAKE_JOBS=true
+sudo jexec $_CONDOR_SLOT make -C $port package PKGREPOSITORY=/packages BATCH=true WRKDIRPREFIX=/obj NO_LATEST_LINK=true PKGFILE=/packages/$pkg
+cp /scratch/$_CONDOR_SLOT/packages/$pkg $scratchdir/$pkg
+sudo /pkgscripts/reapbuildjail $_CONDOR_SLOT
+set +e
+

Added: user/nwhitehorn/buildportsdag.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/nwhitehorn/buildportsdag.sh	Sat Jul 20 13:10:23 2013	(r253490)
@@ -0,0 +1,26 @@
+#!/bin/sh
+PORTSDIR=/usr/ports
+PKGSDIR=/usr/ports/packages
+#(cd $PORTSDIR && make index)
+ports="$(cut -f 2 -d '|' $PORTSDIR/INDEX-`uname -r | cut -f 1 -d .`)"
+ports="/usr/ports/games/sl /usr/ports/ports-mgmt/pkg /usr/ports/japanese/nkf"
+dagjobs=$(pwd)/ports.dagjobs
+dagdeps=$(pwd)/ports.dagdeps
+dag=$(pwd)/ports.dag
+rm -f $dagjobs $dagdeps
+for job in $ports; do
+	cd $job
+	echo JOB $job package.sub >> $dagjobs
+	# One fetch for all archs with dummy fetch job? UNAME_p etc.
+	echo SCRIPT PRE $job fetchandlinks.sh $job $PKGSDIR >> $dagjobs
+	echo VARS $job port=\"$job\" >> $dagjobs
+	echo VARS $job pkg=\"`make package-name`.txz\" >> $dagjobs
+	echo VARS $job pkgdir=\"$PKGSDIR/All\" >> $dagjobs
+	deps=$(make all-depends-list)
+	if [ ! -z "$deps" ]; then
+		echo PARENT $deps CHILD $job >> $dagdeps
+	fi
+done
+
+cat $dagjobs $dagdeps > $dag
+rm -f $dagjobs $dagdeps

Added: user/nwhitehorn/fetchandlinks.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/nwhitehorn/fetchandlinks.sh	Sat Jul 20 13:10:23 2013	(r253490)
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+cd $1
+make fetch
+make package-links PACKAGES=$2
+mkdir -p $2/All
+set +e
+

Added: user/nwhitehorn/package.sub
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/nwhitehorn/package.sub	Sat Jul 20 13:10:23 2013	(r253490)
@@ -0,0 +1,18 @@
+executable = buildport.sh
+universe = vanilla
+notification = never # failure?
+
+requirements = Arch == "X86_64" && OpSys == "FREEBSD"
+#requirements = Arch == "powerpc" && OpSys == "FREEBSD"
+
+log=/tmp/condorlog
+output=logs/$(pkg).out
+error=logs/$(pkg).err
+
+should_transfer_files=YES
+when_to_transfer_output=ON_EXIT
+#transfer_output_files=$(pkg)
+transfer_output_remaps="$(pkg)=$(pkgdir)/$(pkg)"
+
+arguments= $(port) $(pkg) release
+queue

Added: user/nwhitehorn/prepbuildjail
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/nwhitehorn/prepbuildjail	Sat Jul 20 13:10:23 2013	(r253490)
@@ -0,0 +1,41 @@
+#!/bin/sh
+slot=$1
+release=$2
+
+#Audit slot and release names
+case $slot in
+	*[^a-zA-Z0-9]* ) echo "Non-alphanumeric slot $slot"; exit 1
+esac
+case $release in
+	*[^a-zA-Z0-9]* ) echo "Non-alphanumeric release $release"; exit 1
+esac
+if [ -z "$slot" -o -z "$release" ]; then
+	echo "Zero-length slot or release"
+	exit 1
+fi
+
+if [ -d /scratch/$slot ]; then
+	echo "Pre-existing file system for this slot!"
+	/pkgscripts/reapbuildjail $slot
+fi
+
+cleanup() {
+	/pkgscripts/reapbuildjail $slot
+}
+
+set -e
+trap cleanup EXIT
+
+. /etc/rc.subr
+
+mkdir -p /scratch/$slot
+#mount_unionfs -o below /releases/$release /scratch/$slot
+#mount_nullfs -o ro /ports /scratch/$slot/ports
+mount_unionfs -o below /scratch/$release /scratch/$slot
+mount_nullfs -o ro /usr/ports /scratch/$slot/usr/ports
+ls /scratch/$slot/usr/ports > /dev/null # Hack around bug in nullfs
+devfs_mount_jail /scratch/$slot/dev 4 && mounts="/scratch/$slot/dev $mounts"
+
+jail -c name=$slot path=/scratch/$slot host.hostname=$slot.`hostname` persist=true
+trap true EXIT
+

Added: user/nwhitehorn/reapbuildjail
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/nwhitehorn/reapbuildjail	Sat Jul 20 13:10:23 2013	(r253490)
@@ -0,0 +1,27 @@
+#!/bin/sh
+slot=$1
+
+#Audit slot and release names
+case $slot in
+	*[^a-zA-Z0-9]* ) echo "Non-alphanumeric slot $slot"; exit 1
+esac
+if [ -z "$slot" ]; then
+	echo "Zero-length slot or release"
+	exit 1
+fi
+
+if [ ! -d /scratch/$slot ]; then
+	echo "No file system for slot!"
+	exit 1
+fi
+
+set +e
+jail -r $slot
+umount -f /scratch/$slot/dev
+#umount -f /scratch/$slot/ports
+umount -f /scratch/$slot/usr/ports
+umount -f /scratch/$slot
+chflags -R noschg /scratch/$slot
+rm -rf /scratch/$slot
+set +e
+

Added: user/nwhitehorn/sudoers
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/nwhitehorn/sudoers	Sat Jul 20 13:10:23 2013	(r253490)
@@ -0,0 +1,4 @@
+# User privilege specification
+root	ALL=(ALL) ALL
+
+pkgbuild  ALL=NOPASSWD: /pkgscripts/prepbuildjail,/pkgscripts/reapbuildjail,/usr/sbin/jexec



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