Bug 236103

Summary: WITHOUT_DEBUG not fully honored in src build
Product: Base System Reporter: Helge Oldach <freebsd>
Component: kernAssignee: freebsd-bugs (Nobody) <bugs>
Status: New ---    
Severity: Affects Many People CC: emaste, freebsd
Priority: ---    
Version: 12.0-STABLE   
Hardware: Any   
OS: Any   

Description Helge Oldach 2019-02-28 10:13:54 UTC
/usr/lib/debug/boot is populated with empty directories despite WITHOUT_DEBUG_FILES, WITHOUT_KERNEL_SYMBOLS and INSTALL_NODEBUG being defined, and it cannot be cleaned up through "make delete-old":

# make -C/usr/src RM_I=-v delete-old
>>> Removing old files (only deletes safe to delete libs)
>>> Old files removed
>>> Removing old directories
rmdir: /var/run/named: Directory not empty
rmdir: /usr/lib/debug/boot: Directory not empty
>>> Old directories removed
To remove old libraries run 'make delete-old-libs'.
# ls -la /usr/lib/debug/boot
total 16
drwxr-xr-x  4 root  wheel  512 Feb 28 10:07 .
drwxr-xr-x  3 root  wheel  512 Feb 28 10:50 ..
drwxr-xr-x  2 root  wheel  512 Feb 28 10:02 kernel.old
drwxr-xr-x  2 root  wheel  512 Feb 28 10:02 modules

I believe we need to mangle the mkdir login in sys/conf/kern.post.mk and sys/conf/kmod.mk (look for INSTALL_NODEBUG)
Comment 1 Ed Maste freebsd_committer 2019-03-04 15:13:27 UTC
kernel.old/ and modules/ are both empty directories, yes?
Comment 2 Helge Oldach 2019-03-04 15:27:40 UTC
(In reply to Ed Maste from comment #1)
That is indeed correct. And both have not been in place before "make installworld".
Comment 3 Ed Maste freebsd_committer 2019-03-04 15:38:32 UTC
Ah, there is logic in OptionalObsoleteFiles.inc to handle ${MK_DEBUG_FILES}, but it explicitly excludes /usr/lib/debug/boot/* (since those are not controlled by DEBUG_FILES).

It looks like we need a similar one controlled by MK_KERNEL_SYMBOLS.