Message ID | 20200320222359.88689-1-aduskett@gmail.com |
---|---|
State | Rejected |
Headers | show |
Series | [1/2] package/gobject-introspection/g-ir-scanner: do not set default compiler values | expand |
Adam, All, On 2020-03-20 15:23 -0700, aduskett@gmail.com spake thusly: > From: Adam Duskett <Aduskett@gmail.com> > > Commit 8b0aeafce2a22913e6a44818227f6a39e3225157 set 7 new variables in > g-ir-scanner.in: > > export CPP="${CPP:-${HOST_DIR}/bin/@BASENAME_TARGET_CPP@}" > export CC="${CC:-${HOST_DIR}/bin/@BASENAME_TARGET_CC@}" > export CXX="${CXX:-${HOST_DIR}/bin/@BASENAME_TARGET_CXX@}" > CPPFLAGS="${CPPFLAGS:-@TARGET_CPPFLAGS@}" > CFLAGS="${CFLAGS:-@TARGET_CFLAGS@}" > CXXFLAGS="${CXXFLAGS:-@TARGET_CXXFLAGS@}" > LDFLAGS="${LDFLAGS:-@TARGET_LDFLAGS@}" > > However, defaulting to CPP, CC, or CXX breaks some packages because they may > hard code CC to the system CC. > > One such package is libostree which has the line > "INTROSPECTION_SCANNER_ENV = CC=gcc" in the Makefile. But then, that's clearly a bug in libostree! They should not ever try to call a hard-coded compiler. If a user would even do a native build with an alternate compiler: CC=${HOME}/foo/bin/my-gcc-12.42 ./configure Then the above would also break anyway. It's not even just about cross-compilation. We should fix libostree and send them the fix. Probably they should do something like: INTROSPECTION_SCANNER_ENV = CC=${CC} With that commit log of yours, the problem is now obvious, while it did not look like it when we discussed on IRC, hence my comments now... Note that my comments above do not preclude us fixing our wrapper with this patch of yours, but if there is no need to do, I'd like to avoid it. Regards, Yann E. MORIN. > Because g-ir-scanner defaults CC to a predefined CC instead of explicitly > overwriting it, the CC passed from the makefile is used, and linking errors > occur as a result. > > Remove the defaults for the following and explicitly set the paths to the > proper cross-toolchain binaries: > CPP, CC, CXX > > Fixes > http://autobuild.buildroot.org/results/f8a14307e6feff61acd963d6cd2aac289e6d1647 > > Signed-off-by: Adam Duskett <Aduskett@gmail.com> > --- > package/gobject-introspection/g-ir-scanner.in | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/package/gobject-introspection/g-ir-scanner.in b/package/gobject-introspection/g-ir-scanner.in > index 22df7be309..6fc495389e 100644 > --- a/package/gobject-introspection/g-ir-scanner.in > +++ b/package/gobject-introspection/g-ir-scanner.in > @@ -5,9 +5,9 @@ > # the variables blank (LDFLAGS, CFLAGS, and CPPFLAGS.) > # Export these variables to ensure all build systems can generate .gir and > # .typelib files properly. > -export CPP="${CPP:-${HOST_DIR}/bin/@BASENAME_TARGET_CPP@}" > -export CC="${CC:-${HOST_DIR}/bin/@BASENAME_TARGET_CC@}" > -export CXX="${CXX:-${HOST_DIR}/bin/@BASENAME_TARGET_CXX@}" > +export CPP="${HOST_DIR}/bin/@BASENAME_TARGET_CPP@" > +export CC="${HOST_DIR}/bin/@BASENAME_TARGET_CC@" > +export CXX="${HOST_DIR}/bin/@BASENAME_TARGET_CXX@" > export CPPFLAGS="${CPPFLAGS:-@TARGET_CPPFLAGS@}" > export CFLAGS="${CFLAGS:-@TARGET_CFLAGS@}" > export CXXFLAGS="${CXXFLAGS:-@TARGET_CXXFLAGS@}" > -- > 2.25.1 > > _______________________________________________ > buildroot mailing list > buildroot@busybox.net > http://lists.busybox.net/mailman/listinfo/buildroot
Adam, All, On 2020-03-21 22:47 +0100, Yann E. MORIN spake thusly: > On 2020-03-20 15:23 -0700, aduskett@gmail.com spake thusly: > > From: Adam Duskett <Aduskett@gmail.com> > > Commit 8b0aeafce2a22913e6a44818227f6a39e3225157 set 7 new variables in > > g-ir-scanner.in: > > > > export CPP="${CPP:-${HOST_DIR}/bin/@BASENAME_TARGET_CPP@}" > > export CC="${CC:-${HOST_DIR}/bin/@BASENAME_TARGET_CC@}" > > export CXX="${CXX:-${HOST_DIR}/bin/@BASENAME_TARGET_CXX@}" > > CPPFLAGS="${CPPFLAGS:-@TARGET_CPPFLAGS@}" > > CFLAGS="${CFLAGS:-@TARGET_CFLAGS@}" > > CXXFLAGS="${CXXFLAGS:-@TARGET_CXXFLAGS@}" > > LDFLAGS="${LDFLAGS:-@TARGET_LDFLAGS@}" > > > > However, defaulting to CPP, CC, or CXX breaks some packages because they may > > hard code CC to the system CC. > > > > One such package is libostree which has the line > > "INTROSPECTION_SCANNER_ENV = CC=gcc" in the Makefile. > > But then, that's clearly a bug in libostree! They should not ever try to > call a hard-coded compiler. [--SNIP--] Mu alternate proposal was just merged, so I've marked this series as rejected. It anyway helped understand the actual problem, so it was definitely not in vain. Thanks! :-) Regards, Yann E. MORIN.
diff --git a/package/gobject-introspection/g-ir-scanner.in b/package/gobject-introspection/g-ir-scanner.in index 22df7be309..6fc495389e 100644 --- a/package/gobject-introspection/g-ir-scanner.in +++ b/package/gobject-introspection/g-ir-scanner.in @@ -5,9 +5,9 @@ # the variables blank (LDFLAGS, CFLAGS, and CPPFLAGS.) # Export these variables to ensure all build systems can generate .gir and # .typelib files properly. -export CPP="${CPP:-${HOST_DIR}/bin/@BASENAME_TARGET_CPP@}" -export CC="${CC:-${HOST_DIR}/bin/@BASENAME_TARGET_CC@}" -export CXX="${CXX:-${HOST_DIR}/bin/@BASENAME_TARGET_CXX@}" +export CPP="${HOST_DIR}/bin/@BASENAME_TARGET_CPP@" +export CC="${HOST_DIR}/bin/@BASENAME_TARGET_CC@" +export CXX="${HOST_DIR}/bin/@BASENAME_TARGET_CXX@" export CPPFLAGS="${CPPFLAGS:-@TARGET_CPPFLAGS@}" export CFLAGS="${CFLAGS:-@TARGET_CFLAGS@}" export CXXFLAGS="${CXXFLAGS:-@TARGET_CXXFLAGS@}"