Date: Wed, 04 Mar 2015 17:00:26 +0100 From: "Julian H. Stacey" <jhs@berklix.com> To: freebsd-hackers@freebsd.org Cc: "Julian H. Stacey" <jhs@berklix.com>, np@bsn.com Subject: Patch to stop world killing jails via failing install -fschg libc.so.7 Message-ID: <201503041600.t24G0QV1048766@fire.js.berklix.net>
next in thread | raw e-mail | index | archive | help
Hi Hackers, I have filed this patch https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=198279 via https://bugs.freebsd.org/bugzilla/enter_bug.cgi Chflags lovers (not me!) might want to write an enhanced patch. ----- 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"). *** 10.1-RELEASE-p6/src/share/mk/bsd.lib.mk Wed Mar 4 14:27:16 2015 --- new-generic/src/share/mk/bsd.lib.mk Wed Mar 4 14:33:48 2015 *************** *** 284,291 **** .if defined(PRECIOUSLIB) .if !defined(NO_FSCHG) ! SHLINSTALLFLAGS+= -fschg .endif SHLINSTALLFLAGS+= -S .endif --- 284,290 ---- .if defined(PRECIOUSLIB) .if !defined(NO_FSCHG) ! # SHLINSTALLFLAGS+= -fschg ! # Explanation: http://berklix.com/~jhs/src/bsd/fixes/freebsd/src/gen/share/mk/bsd.lib.mk.chflags.REL=ALL.diff .endif SHLINSTALLFLAGS+= -S .endif *************** *** 356,362 **** ${INSTALL_SYMLINK} ${_SHLIBDIRPREFIX}${_SHLIBDIR}/${SHLIB_NAME} \ ${DESTDIR}${_LIBDIR}/${SHLIB_LINK} .if exists(${DESTDIR}${_LIBDIR}/${SHLIB_NAME}) ! -chflags noschg ${DESTDIR}${_LIBDIR}/${SHLIB_NAME} rm -f ${DESTDIR}${_LIBDIR}/${SHLIB_NAME} .endif .endif --- 356,364 ---- ${INSTALL_SYMLINK} ${_SHLIBDIRPREFIX}${_SHLIBDIR}/${SHLIB_NAME} \ ${DESTDIR}${_LIBDIR}/${SHLIB_LINK} .if exists(${DESTDIR}${_LIBDIR}/${SHLIB_NAME}) ! # -chflags noschg ${DESTDIR}${_LIBDIR}/${SHLIB_NAME} ! # Chflags wont actually kill the system here, but chflags is dirty. ! @echo "Skipping -chflags noschg ${DESTDIR}${_LIBDIR}/${SHLIB_NAME}" rm -f ${DESTDIR}${_LIBDIR}/${SHLIB_NAME} .endif .endif *** 10.1-RELEASE-p6/src/share/mk/bsd.prog.mk Wed Mar 4 14:27:16 2015 --- new-generic/src/share/mk/bsd.prog.mk Wed Mar 4 14:34:50 2015 *************** *** 185,192 **** .if defined(PRECIOUSPROG) .if !defined(NO_FSCHG) ! INSTALLFLAGS+= -fschg ! # Explanation: http://berklix.com/~jhs/src/bsd/fixes/freebsd/src/gen/share/mk/bsd.lib.mk.chflags.REL=ALL.diff .endif INSTALLFLAGS+= -S .endif --- 185,192 ---- .if defined(PRECIOUSPROG) .if !defined(NO_FSCHG) ! # INSTALLFLAGS+= -fschg ! # See similar change in bsd.lib.mk .endif INSTALLFLAGS+= -S .endif Cheers, Julian -- Julian Stacey, BSD Linux Unix C Sys Eng Consultant Munich http://berklix.com Indent previous with "> ". Reply Below as a play script. Send plain text, Not quoted-printable, HTML, or base64.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201503041600.t24G0QV1048766>