Index: user/cperciva/portsnap-build/s/describes-run.sh =================================================================== --- user/cperciva/portsnap-build/s/describes-run.sh (revision 338229) +++ user/cperciva/portsnap-build/s/describes-run.sh (revision 338230) @@ -1,106 +1,108 @@ #!/bin/sh -e # No user-serviceable parts if [ -z "$PORTSNAP_BUILD_CONF_READ" ]; then echo "Do not run $0 manually" exit 1 fi -# usage: sh -e describes-run.sh PORTSDISK WORLDTAR JAILDIR OSVERSION DESCFILE +# usage: sh -e describes-run.sh PORTSDISK WORLDTAR JAILDIR OSVERSION DESCFILE UNAMER PORTSDISK="$1" WORLDTAR="$2" JAILDIR="$3" OSVERSION="$4" DESCFILE="$5" +UNAMER="$6" # helper function findruleset () { jot 0 | while read N; do if ! devfs rule -s ${N} show | grep -q .; then echo ${N} break fi done } # Create memory disks and format filesystems JAILMD=`mdconfig -a -t swap -s ${JAILMDSIZE} -n` TMPMD=`mdconfig -a -t swap -s ${TMPMDSIZE} -n` newfs -O 1 -n /dev/md${JAILMD} >/dev/null newfs -O 1 -n /dev/md${TMPMD} >/dev/null # Mount filesystems under jail mount point mount -o noatime,nosuid /dev/md${JAILMD} ${JAILDIR} mkdir ${JAILDIR}/tmp mount -o noatime,nosuid,noexec /dev/md${TMPMD} ${JAILDIR}/tmp chmod 1777 ${JAILDIR}/tmp mkdir ${JAILDIR}/usr ${JAILDIR}/usr/ports mount -o noatime,nosuid,noexec,ro ${PORTSDISK} ${JAILDIR}/usr/ports # Attach device filesystem with null, fd/*, and std* mkdir ${JAILDIR}/dev mount -t devfs devfs ${JAILDIR}/dev RULESET=`findruleset` devfs rule -s ${RULESET} add hide devfs rule -s ${RULESET} add path null unhide devfs rule -s ${RULESET} add path fd unhide devfs rule -s ${RULESET} add path 'fd/*' unhide devfs rule -s ${RULESET} add path 'std*' unhide devfs -m ${JAILDIR}/dev ruleset ${RULESET} devfs -m ${JAILDIR}/dev rule applyset # Extract world tarball tar -xf ${WORLDTAR} -C ${JAILDIR} # Protect against naughtiness mount -u -o noatime,nosuid,ro /dev/md${JAILMD} # Build the describes output if env - PATH=${PATH} jail -c path=${JAILDIR} host.hostname=localhost \ exec.jail_user=nobody exec.system_jail_user command=/bin/sh -e \ > ${DESCFILE} <<- EOF export __MAKE_CONF=/nonexistant export OSVERSION=${OSVERSION} + export UNAME_r=${UNAMER} export PORTOBJFORMAT=elf export INDEX_TMPDIR=/tmp export WRKDIRPREFIX=/tmp export BUILDING_INDEX=1 export LOCALBASE=/removeme/usr/local export ECHO_MSG="echo >/dev/null" cd /usr/ports && make describe -j ${JNUM} 1>&2 cd /tmp && cat INDEX* | sed -e 's/ */ /g' -e 's/| */|/g' \ -e 's/ *|/|/g' -e 's./removeme..g' | \ sed -E -e ':x' -e 's|/[^/]+/\.\.||' -e 'tx' | \ sort -k 1,1 -t '|' | tr -d '\r' EOF then R=0 else R=1 fi # Clean up while ! umount ${JAILDIR}/dev; do - sleep 1 + sleep 1; done while ! umount ${JAILDIR}/tmp; do - sleep 1 + sleep 1; done while ! umount ${JAILDIR}/usr/ports; do - sleep 1 + sleep 1; done while ! umount ${JAILDIR}; do - sleep 1 + sleep 1; done mdconfig -d -u ${JAILMD} mdconfig -d -u ${TMPMD} devfs rule -s ${RULESET} delset # Test if make_index works if [ ${R} = 0 ] && ! /usr/libexec/make_index ${DESCFILE} >/dev/null; then R=1 fi # Return success/failure exit ${R} Index: user/cperciva/portsnap-build/s/treesnap-build.sh =================================================================== --- user/cperciva/portsnap-build/s/treesnap-build.sh (revision 338229) +++ user/cperciva/portsnap-build/s/treesnap-build.sh (revision 338230) @@ -1,59 +1,60 @@ #!/bin/sh -e # No user-serviceable parts if [ -z "$PORTSNAP_BUILD_CONF_READ" ]; then echo "Do not run $0 manually" exit 1 fi # usage: sh -e treesnap-build.sh TREEREV DESCRIBES WORKDIR SNAPDIR TREEREV="$1" DESCRIBES="$2" WORKDIR="$3" SNAP="$4" # Temporary directories and mount points PORTSDIR=${WORKDIR}/ports TMP=${WORKDIR}/tmp JAILDIR=${WORKDIR}/jail # Create mount points mkdir ${PORTSDIR} ${TMP} ${JAILDIR} # Create and mount memory disk for holding exported ports tree PORTSMD=`mdconfig -a -t swap -s ${PORTSMDSIZE} -n` newfs -f 512 -i 2048 -O 1 -n /dev/md${PORTSMD} >/dev/null mount /dev/md${PORTSMD} ${PORTSDIR} # Export ports tree echo "`date`: Exporting \"${TREEREV}\" ports tree" svn export -q --force ${REPO}/${TREEREV} ${PORTSDIR} df -i ${PORTSDIR} # Create snapshot echo "`date`: Building snapshot tarballs" sh -e s/treesnap-mktars-all.sh ${PORTSDIR} ${SNAP} ${SNAP}/INDEX ${TMP} # Unmount the ports tree while ! umount /dev/md${PORTSMD}; do - sleep 1 + sleep 1; done # Perform index describes for N in ${DESCRIBES}; do echo "`date`: Starting describe run for ${N}.x" if ! sh -e s/describes-run.sh /dev/md${PORTSMD} $WORLDTAR $JAILDIR \ - ${N}99999 ${SNAP}/DESCRIBE.${N} 2>${SNAP}/DESCRIBE.${N}.err; then + ${N}99999 ${SNAP}/DESCRIBE.${N} ${N}.x-STABLE \ + 2>${SNAP}/DESCRIBE.${N}.err; then echo "`date`: ${N}.x describes failed" cat ${SNAP}/DESCRIBE.${N}.err rm ${SNAP}/DESCRIBE.${N} else rm ${SNAP}/DESCRIBE.${N}.err fi done # Delete the ports tree disk mdconfig -d -u ${PORTSMD} # Clean up rmdir ${PORTSDIR} ${TMP} ${JAILDIR}