[Bug 263880] make clean, cleandir doesn't clean /usr/obj
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 263880] make clean, cleandir doesn't clean /usr/obj"
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 263880] make clean, cleandir doesn't clean /usr/obj"
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 263880] make clean, cleandir doesn't clean /usr/obj"
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 263880] make clean, cleandir doesn't clean /usr/obj"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 09 May 2022 13:48:54 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=263880 Bug ID: 263880 Summary: make clean, cleandir doesn't clean /usr/obj Product: Base System Version: CURRENT Hardware: Any OS: Any Status: New Severity: Affects Only Me Priority: --- Component: kern Assignee: bugs@FreeBSD.org Reporter: jon@xyinn.org Hello, Apologies if this is not a bug and just a lack of understanding on my part, but looking at build(7), the description for 'clean' says: "Remove any files created during the build process." and the description for 'cleandir' mentions removing the 'canonical object directory if it exists or perform actions equivalent to 'make clean cleandepend'. In my testing, I noticed that if I do a 'make clean' or 'make cleandir' (even if I run cleandir twice), it doesn't actually clean up my /usr/obj directory. Only a 'make cleanworld' cleans it: root@leslie:/usr/src # find /usr/obj /usr/obj /usr/obj/usr /usr/obj/usr/src /usr/obj/usr/src/amd64.amd64 A quick test I did was the following: -- I originally did the touch on /usr/obj but I noticed that the cleanworld command only cleans up stuff under the particular architecture rather than a flat out nuking of /usr/obj. I'm guessing this is possibly to support a cross building workflow. root@leslie:/usr/src # touch /usr/obj/usr/src/amd64.amd64/lol root@leslie:/usr/src # ls -l /usr/obj/usr/src/amd64.amd64/ total 1 -rw-r--r-- 1 root wheel 0 May 9 09:43 lol root@leslie:/usr/src # make cleanworld (cd /usr/obj/usr/src/amd64.amd64/ && rm -rf *) chflags -R 0 /usr/obj/usr/src/amd64.amd64/ (cd /usr/obj/usr/src/amd64.amd64/ && rm -rf *) root@leslie:/usr/src # ls -l /usr/obj/usr/src/amd64.amd64/ total 0 ---- My expectation for a 'make clean' in /usr/src would be that all of the build files created are cleaned up (including /usr/obj). root@leslie:/usr/src # touch /usr/obj/usr/src/amd64.amd64/lol root@leslie:/usr/src # ls -l /usr/obj/usr/src/amd64.amd64/ total 1 -rw-r--r-- 1 root wheel 0 May 9 09:44 lol root@leslie:/usr/src # make cleandir ... root@leslie:/usr/src # ls -l /usr/obj/usr/src/amd64.amd64/ total 1 -rw-r--r-- 1 root wheel 0 May 9 09:44 lol --- Another related note (which I'll need confirmation for) is if /usr/obj is even re-used during subsequent builds. The handbook mentions that /usr/obj can speed up subsequent builds, but I've noticed that the first thing a build does is pretty much to cleanworld before rebuilding. That kinda defeats the purpose of re-using those objects. There's this old link (seems forked by someone) where in the past it mentioned /usr/obj is not used afterwards so it could be deleted, but I'm not sure if behavior in FreeBSD changed from that time of that post: https://people.freebsd.org/~rodrigc/doc/handbook/makeworld.html -- You are receiving this mail because: You are the assignee for the bug.