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 2022年1月16日 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 2022年1月16日 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

AltStyle によって変換されたページ (->オリジナル) /