Bug 198279

Summary: [bsd.lib.mk] Patch to stop world killing jails via failing install -fschg libc.so.7
Product: Base System Reporter: jhs
Component: miscAssignee: freebsd-bugs (Nobody) <bugs>
Status: New ---    
Severity: Affects Many People Keywords: patch
Priority: ---    
Version: 10.1-STABLE   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
bsd.lib.mk.chflags.REL=ALL.diff to stop make world killing jails none

Description jhs 2015-03-04 15:59:01 UTC
Created attachment 153787 [details]
bsd.lib.mk.chflags.REL=ALL.diff to stop make world killing jails

Jails are lethaly killed by make world, unless /etc/make.conf contains this:
        NO_FSCHG="yes"
        #       Avoid bsd.lib.mk 'INSTALLFLAGS+= -fschg' killing FreeBSD jails,
        #       deleting /lib/libc.so.7 via 'cd /usr/src/lib/csu/amd64 ; make install'

Killing:
        uname -a
        FreeBSD land.berklix.org 10.1-RELEASE-p6 FreeBSD 10.1-RELEASE-p6 #0: Tue Feb 24 19:00:21 UTC 2015
   root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64

        cd /usr/src; make install
        ===> lib/libc (install)
        install -s -o root -g wheel -m 444   -fschg -S  libc.so.7 /lib
        install: /lib/libc.so.7: chflags: Operation not permitted
        *** Error code 71

Recovery:
        /rescue/cp /usr/obj/usr/src/lib/libc/libc.so.7 /lib/

man install falsely claims: -S Safe copy, But is broken by -fschg !

Solutions:
- Disable chflags in bsd.lib.mk & bsd.lib.mk.  Patches appended.
- Or Extend bsd.lib.mk & bsd.lib.mk to be conditional on jail detection. (**)
- Or Fix install to not break with chflags (**)
(**) Last 2 should be done by those who want to keep Chflags in FreeBSD,
     not me, I've used Unix since 1978, but find chflags a Wart best removed.

I discovered this on 8.2-RELEASE 18 Jun 2013, & just got bitten again on
10.1-RELEASE-p6, (as my jail's make.conf lost its NO_FSCHG="yes").