poudriere jail -c -j JNAME -m null -M PREBUILT-WORLD-PATH -S /usr/src -v 12.0-CURRENT complains about "DIrectory not empty" for PREBUILT-WORLD-PATH
Bryan Drewery
bdrewery at FreeBSD.org
Mon Dec 4 21:59:45 UTC 2017
On 12/3/2017 8:29 PM, Mark Millard wrote:
> Note: /usr/ports/ (and so poudriere-devel) as of -r425204
> (poudriere-devel-3.2.99.20171129).
>
> I expect that the below is from ports-mgmt/poudriere-=devel
> -r454996 and its:
>
> - ports/jail -c NOZFS: Consider non-empty-already-existing-directory a failure
>
> where the change did not cover an explicit use of -m null also
> being involved to deliberately being using a pre-built
> world that is located via use of -M PATH .
>
> [There is one other side note about a potential
> issue later below.]
>
> # poudriere jail -c -j FBSDjailRPI2 -m null -M /usr/obj/DESTDIRs/clang-armv7-installworld-poud -S /usr/src -v 12.0-CURRENT
> [00:00:00] Creating FBSDjailRPI2 fs at /usr/obj/DESTDIRs/clang-armv7-installworld-poud... fail
> [00:00:00] Error: Directory not empty at /usr/obj/DESTDIRs/clang-armv7-installworld-poud
>
> # ls -lTdt /usr/obj/DESTDIRs/clang-armv7-installworld-poud/*
> drwxr-xr-x 26 root wheel 2048 Nov 27 00:33:01 2017 /usr/obj/DESTDIRs/clang-armv7-installworld-poud/etc
> drwxr-xr-x 2 root wheel 2560 Nov 27 00:29:51 2017 /usr/obj/DESTDIRs/clang-armv7-installworld-poud/rescue
> . . .
>
> (So: a pre-built world, created via a cross build and
> copied over beforehand.)
>
> # poudriere jail -c -j FBSDjailRPI2 -m null -M /usr/obj/DESTDIRs/clang-armv7-installworld-poud -S /usr/src -v 12.0-CURRENT
> [00:00:00] Creating FBSDjailRPI2 fs at /usr/obj/DESTDIRs/clang-armv7-installworld-poud... fail
> [00:00:00] Error: Directory not empty at /usr/obj/DESTDIRs/clang-armv7-installworld-poud
Yup will fix for 3.2.3 today.
>
>
> /usr/local/etc/poudriere.conf has:
>
> NO_ZFS=yes
>
>
> /usr/local/share/poudriere/include/fs.sh has:
>
> createfs() {
> [ $# -ne 3 ] && eargs createfs name mnt fs
> local name mnt fs
> name=$1
> mnt=$(echo $2 | sed -e "s,//,/,g")
> fs=$3
>
> [ -z "${NO_ZFS}" ] || fs=none
>
> if [ -n "${fs}" -a "${fs}" != "none" ]; then
> . . .
> else
> msg_n "Creating ${name} fs at ${mnt}..."
> if ! mkdir -p "${mnt}"; then
> echo " fail"
> err 1 "Failed to create directory ${mnt}"
> fi
> # If the directory is non-empty then we didn't create it.
> if ! dirempty "${mnt}"; then
> echo " fail"
> err 1 "Directory not empty at ${mnt}"
> fi
> echo " done"
> fi
> }
>
> For -m null here -M /usr/obj/DESTDIRs/clang-armv7-installworld-poud
> should point to a non-empty directory as far as I can tell. And
> it does. But that leads to the above code rejecting the -M
> path.
>
>
>
> [Note: I also question, if, with -S /usr/src
> in use, the SRC_BASE assignment below is
> correct.]
Yeah it's a bit off. I have a pending bug to fix here from earlier
reports from you as well that I haven't gotten to yet.
>
> /usr/local/share/poudriere/jail.sh has:
>
> create_jail() {
> [ "${JAILNAME#*.*}" = "${JAILNAME}" ] ||
> err 1 "The jailname cannot contain a period (.). See jail(8)"
>
> if [ "${METHOD}" = "null" ]; then
> [ -z "${JAILMNT}" ] && \
> err 1 "Must set -M to path of jail to use"
> [ "${JAILMNT}" = "/" ] && \
> err 1 "Cannot use / for -M"
> fi
> . . .
> SRC_BASE="${JAILMNT}/usr/src"
>
> case ${METHOD} in
> . . .
> null)
> JAILFS=none
> FCT=
> ;;
> esac
>
> if [ "${JAILFS}" != "none" ]; then
> [ -d "${JAILMNT}" ] && \
> err 1 "Directory ${JAILMNT} already exists"
> fi
>
> createfs ${JAILNAME} ${JAILMNT} ${JAILFS:-none}
> . . .
>
>
>
> ===
> Mark Millard
> markmi at dsl-only.net
>
--
Regards,
Bryan Drewery
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/freebsd-toolchain/attachments/20171204/d93da13c/attachment.sig>
More information about the freebsd-toolchain
mailing list