tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Supporting MKPIE but without -pie embedded in wrapper scripts



Committed. Thank you agc@ and wiz@ for taking a look.
http://mail-index.netbsd.org/pkgsrc-changes/2022/01/18/msg247122.html


On 1/18/22 3:18 AM, Alistair Crooks wrote:
Yes, that is correct.

On Sun, 16 Jan 2022 at 17:46, PHO <pho%cielonegro.org@localhost <mailto:pho%cielonegro.org@localhost>> wrote:

    Thanks for your feedback. Just to be clear, PKGSRC_OVERRIDE_MKPIE=no
    does what pkgsrc currently does, and PKGSRC_OVERRIDE_MKPIE=yes is a
    request for an exemption right?

    On 1/17/22 4:10 AM, Alistair Crooks wrote:
     > I like the idea - perhaps call it PKGSRC_OVERRIDE_MKPIE? (i.e.
    leading
     > "PKGSRC_" and the s/AUTOMATIC/OVERRIDE/) - might be useful for
    some of
     > the other packages that require handholding in this area.
     >
     > On Sun, 16 Jan 2022 at 05:18, PHO <pho%cielonegro.org@localhost
    <mailto:pho%cielonegro.org@localhost>
     > <mailto:pho%cielonegro.org@localhost <mailto:pho%cielonegro.org@localhost>>> wrote:
     >
     >     Hello,
     >
     >     While trying to update lang/ghc90 to 9.0.2 and also enabling
    support
     >     for
     >     PKGSRC_MKPIE, I found the way how the current infrastructure
    enforces
     >     MKPIE rather cumbersome for packages that need to bootstrap
    from a
     >     pre-built bootkit.
     >
     >     GHC bootkits consist of a compiler executable and the
    standard Haskell
     >     library in the form of a set of static archives (lib*.a),
    which may or
     >     may not be built with -fPIC. When lang/ghc90 is to be built, with
     >     MKPIE_SUPPORTED set to yes, one of these things will happen:
     >
     >     1. Bootkit is built without -fPIC, and PKGSRC_MKPIE is set to no.
     >
     >            This builds non-PIE GHC fine.
     >
     >     2. Bootkit is built with -fPIC, and PKGSRC_MKPIE is set to yes.
     >
     >            This builds PIE GHC fine (with some tweaks applied to
     >     lang/ghc90).
     >
     >     3. Bootkit is built without -fPIC but PKGSRC_MKPIE is set to yes.
     >
     >            This fails to build the stage-1 compiler, which is an
     >     intermediate
     >     compiler to build the final, stage-2 compiler that will be
    installed.
     >     This is because pkgsrc forces -pie to be passed to the linker
     >     regardless
     >     of compilation stages (because it doesn't know GHC does a 2-stage
     >     bootstrapping), but the stage-1 compiler needs to be linked
    against
     >     static libraries coming from the non-PIC bootkit.
     >
     >     4. Bootkit is built with -fPIC but PKGSRC_MKPIE is set to no.
     >
     >            This means we have no choice but to link a non-PIC stage-1
     >     compiler *.o against static libraries from the bootkit built with
     >     -fPIC.
     >     This apparently works, at least on NetBSD, but... you aren't
     >     supposed to
     >     do that right? I don't know if this works on all the platforms we
     >     currently support.
     >
     >     So, in order for packages like GHC to support MKPIE, we need
    a way to
     >     tell pkgsrc that we are going to build PIE on our own
    responsibility
     >     but
     >     not getting enforced by the infrastructure, such as injecting
    -pic in
     >     linker flags, on per-package basis. But this of course means
    packages
     >     that request an exemption from the enforcement can
    accidentally install
     >     non-PIE, so a post-build check is desired.
     >
     >     The attached patch introduces a new package-settable variable
     >     AUTOMATIC_MKPIE and a new check mentioned above. What do you
    think? Can
     >     I commit this?
     >



Home | Main Index | Thread Index | Old Index