diff mbox series

[1/2] package/gobject-introspection/g-ir-scanner: do not set default compiler values

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

Commit Message

Adam Duskett March 20, 2020, 10:23 p.m. UTC
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.

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(-)

Comments

Yann E. MORIN March 21, 2020, 9:47 p.m. UTC | #1
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
Yann E. MORIN March 22, 2020, 9:53 p.m. UTC | #2
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 mbox series

Patch

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@}"