Date: Sun, 28 May 2023 12:53:15 +0200 From: Dimitry Andric <dim@FreeBSD.org> To: Enji Cooper <yaneurabeya@gmail.com> Cc: FreeBSD Current <freebsd-current@freebsd.org> Subject: Re: "make hierarchy" from main tree breaks c++ headers on older branches with unclear errors if "make install world" is interrupted Message-ID: <0DA92266-62F8-439E-9C56-44106A6B0073@FreeBSD.org> In-Reply-To: <E94D1471-8CDC-4AC3-A46B-C22922864637@gmail.com> References: <E94D1471-8CDC-4AC3-A46B-C22922864637@gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--Apple-Mail=_F0A5DA72-7432-4EFC-B48C-F5618FB16633 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 On 28 May 2023, at 07:18, Enji Cooper <yaneurabeya@gmail.com> wrote: >=20 > I just tried to run =E2=80=9Cmake hierarchy=E2=80=9D from a main tree = on a 13.2-RELEASE system, and doing so completely broke my headers. > It took me about 30 minutes to figure out what happened=E2=80=A6 = /usr/include/c++/v1/__string was a header, whereas on :main it=E2=80=99s = a directory?! Yes, upstream libc++ has split up large headers into multiple = components, in particular __string and __type_traits. Since we had a file named __string, it had to be somehow replaced by a = directory. This is what the distrib-cleanup target in the top-level = Makefile does: https://github.com/DimitryAndric/freebsd-src/commit/6b13b4a095e3 Afterwards, the replacement directory named __string is created as part = of the regular mtree commands. ... > I reinstalled the headers by going to lib/libc++ in my releng/13.2 = tree, building, and installing all of the 13.2-RELEASE headers. > This change has been live for almost a year now on :main =E2=80=94 is = this a known caveat when doing a source-based upgrade from 13.2-RELEASE* = to 14.0-CURRENT, i.e., that the installworld (if interrupted) could = break the c++ compiler? I think it should already be quite clear that interrupting installworld = is risky. If you were just in the middle of replacing libc or rtld, and = those were half-written, your system will be completely hosed. (I am = speaking from experience. :) The same goes for any system headers or = libraries, not only the C++ ones. If you have a half-installed tree, it = should not be used for anything except attempting another installworld. -Dimitry --Apple-Mail=_F0A5DA72-7432-4EFC-B48C-F5618FB16633 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.2 iF0EARECAB0WIQR6tGLSzjX8bUI5T82wXqMKLiCWowUCZHMymwAKCRCwXqMKLiCW o3ObAKCWU9dC7rMvTRTOf28qefpoWbKdwwCfc6JlfgTotbzLVh+Ew6ztHRpY4RE= =UBb8 -----END PGP SIGNATURE----- --Apple-Mail=_F0A5DA72-7432-4EFC-B48C-F5618FB16633--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?0DA92266-62F8-439E-9C56-44106A6B0073>