+++ This bug was initially created as a clone of Bug #1670191 +++ Description of problem: Libguestfs "make" fails with when building inside a docker with "supermin: error: rename: Directory not empty: supermin.d.ibactpan" Version-Release number of selected component (if applicable): libguestfs-1.38.6 supermin-5.1.20 How reproducible: Happens 100% on my MacOS setup Happens 10% on my Ubuntu setup Steps to Reproduce: 1. MacOS High Sierra 2. Docker version 18.09.0, build 4d60db4 Actual results: "supermin: error: rename: Directory not empty: supermin.d.ibactpan" Expected results: Build succeeds Additional info: After debugging supermin (building it from source and changing some lines) the actual problem is not here: if debug >= 1 then printf "supermin: renaming %s to %s\n%!" new_outputdir outputdir; rename new_outputdir outputdir; But actually in the previous rename: let old_outputdir = try let old_outputdir = outputdir ^ "." ^ string_random8 () in rename outputdir old_outputdir; Some old_outputdir with Unix_error _ -> None in It fails with Unix_error: supermin: error: rename: Invalid cross-device link: supermin.d But it is not propagated. According to docker with OverlayFS: https://docs.docker.com/storage/storagedriver/overlayfs-driver/ Renaming directories: Calling rename(2) for a directory is allowed only when both the source and the destination path are on the top layer. Otherwise, it returns EXDEV error (“cross-device link not permitted”). Your application needs to be designed to handle EXDEV and fall back to a “copy and unlink” strategy. Should we handle this to support building libguestfs inside a docker? --- Additional comment from Richard W.M. Jones on 2019-01-28 22:23 UTC --- Yes we should handle EXDEV as it suggests. Could you see if the attached patch fixes it? I only compile tested it, and I'm just guessing that 'mv' works on Docker. --- Additional comment from Sam on 2019-01-28 22:35:38 UTC --- That was fast. Yes, it works perfectly! --- Additional comment from Richard W.M. Jones on 2019-01-28 22:44:13 UTC --- Thanks for testing, it's upstream in git now and will appear in supermin >= 5.1.21.
Upstream fix is: https://github.com/libguestfs/supermin/commit/6579cf5f72d5de345ae1cc97d0344dfa1771460a
The patch has been tested in upstream Bug #1670191. It works fine. Because this issue cannot be reproduced in RHEL product and there is no MAC env from QE side, we just run the sanity testing.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2019:3723