Skip to contentSkip to conversation

Makefile: unexport TARGET env variable

PATCH In review James Hilliard 3 participants 6 messages Sep 5, 2022 – Sep 9, 2022 Kbuild

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Makefile: unexport TARGET env variable

If set this can may break package builds in some cases such as the host-icu build.

---
 Makefile | 1 +
 1 file changed, 1 insertion(+)
Makefile +1 -0
index bd0b906cde..a82a22a276 100644
@@ -427,6 +427,7 @@ unexport GCC_COLORS
 unexport PLATFORM
 unexport OS
 unexport DEVICE_TREE
+unexport TARGET
 
 GNU_HOST_NAME := $(shell support/gnuconfig/config.guess)
 
Signature · 6 lines
2.34.1

_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
#1 lore raw

James, All,

On 2022-09-05 14:20 -0600, James Hilliard spake thusly:

Quoted 1 line

If set this can may break package builds in some cases such as the

So, this is very probabilistic: 'can' and 'may'! ;-)

Quoted 1 line

host-icu build.

Can you provide an actual error message and an explanation on how that actually fails?

I've looked at the icu source code, and all I could see are plain assignments and references to TARGET. Variables assigned in a Makefile are supposed to take precedence to variables from the environment, so I am not sure I can see how that can actually fail...

See for example commits which describes the actual reasons it fails:
20ca008d0266 unexport TERMINFO to correct ncurses behavior 2e32330c4a49 Makefile: unexport O
d3910057c6ae Makefile: unexport 'DEVICE_TREE' environment variable 6cff741ebaf7 package/ccache: do not force colored diagnostics

Regards,
Yann E. MORIN.

Quoted 24 lines
---
 Makefile | 1 +
 1 file changed, 1 insertion(+)
Makefile +1 -0
index bd0b906cde..a82a22a276 100644
@@ -427,6 +427,7 @@ unexport GCC_COLORS
 unexport PLATFORM
 unexport OS
 unexport DEVICE_TREE
+unexport TARGET
 
 GNU_HOST_NAME := $(shell support/gnuconfig/config.guess)
 
Signature · 6 lines
2.34.1

_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
Signature · 10 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
#2 lore raw
Quoted 7 lines · Yann E. MORIN

James, All,

On 2022-09-05 14:20 -0600, James Hilliard spake thusly:

Quoted 1 line

If set this can may break package builds in some cases such as the

So, this is very probabilistic: 'can' and 'may'! ;-)

Well I think the breaking behavior depends on what TARGET is set to.

Quoted 5 lines
Quoted 2 lines

host-icu build.

Can you provide an actual error message and an explanation on how that actually fails?

I had set this in my env(for some non-buildroot compiler testing), and noticed it broke buildroot builds unless cleared:
export TARGET=bpf

Quoted 1 line
Quoted 1 line
Quoted 1 line

host-icu 70-1 Building

PATH="/home/buildroot/buildroot/output/per-package/host-icu/host/bin:/home/buildroot/buildroot/output/per-package/host-icu/host/sbin:/home/buildroot/bin:/home/buildroot/.local/bin:/home/buildroot/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" PKG_CONFIG="/home/buildroot/buildroot/output/per-package/host-icu/host/bin/pkg-config"
PKG_CONFIG_SYSROOT_DIR="/" PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1
PKG_CONFIG_ALLOW_SYSTEM_LIBS=1
PKG_CONFIG_LIBDIR="/home/buildroot/buildroot/output/per-package/host-icu/host/lib/pkgconfig:/home/buildroot/buildroot/output/per-package/host-icu/host/share/pkgconfig"
/usr/bin/make -j33 -C
/home/buildroot/buildroot/output/build/host-icu-70-1/source
cd ./config; \
/usr/bin/make -f pkgdataMakefile
rm -rf config/icu-config
rebuilding config/icucross.mk
rebuilding config/icucross.inc
/bin/bash ./mkinstalldirs lib
/bin/bash ./mkinstalldirs bin
/usr/bin/install -c ./config/icu-config-top config/icu-config
rm -rf pkgdata.inc
chmod u+w config/icu-config
mkdir lib
mkdir bin
LC_ALL=C /usr/bin/sed -f ./config/make2sh.sed < ./config/Makefile.inc
| grep -v '#M#' | uniq >> config/icu-config
config/icu-uc.pc updated.
config/icu-i18n.pc updated.
/usr/bin/make[2]: Making all' in stubdata'
LC_ALL=C /usr/bin/sed -f ./config/make2sh.sed < ./config/mh-linux |
grep -v '#M#' | uniq >> config/icu-config
cat ./config/icu-config-bottom >> config/icu-config
(deps) stubdata.cpp
chmod u-w config/icu-config
Note: rebuild with "/usr/bin/make VERBOSE=1 " to show all compiler parameters.
make[3]: *** No rule to make target 'bpf', needed by 'all-local'. Stop.

Quoted 5 lines

I've looked at the icu source code, and all I could see are plain assignments and references to TARGET. Variables assigned in a Makefile are supposed to take precedence to variables from the environment, so I am not sure I can see how that can actually fail...

I assume it's not actually assigned in the makefile then?

Quoted 37 lines

See for example commits which describes the actual reasons it fails:
20ca008d0266 unexport TERMINFO to correct ncurses behavior 2e32330c4a49 Makefile: unexport O
d3910057c6ae Makefile: unexport 'DEVICE_TREE' environment variable 6cff741ebaf7 package/ccache: do not force colored diagnostics

Regards,
Yann E. MORIN.

Quoted 20 lines
---
 Makefile | 1 +
 1 file changed, 1 insertion(+)
Makefile +1 -1
index bd0b906cde..a82a22a276 100644
@@ -427,6 +427,7 @@ unexport GCC_COLORS
 unexport PLATFORM
 unexport OS
 unexport DEVICE_TREE
+unexport TARGET
 
 GNU_HOST_NAME := $(shell support/gnuconfig/config.guess)
 
--

2.34.1

Quoted 4 lines

_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot

--
.-----------------.--------------------.------------------.--------------------.

Quoted 5 lines
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |

'------------------------------^-------^------------------^--------------------'

_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot

#3 lore raw
Quoted 55 lines · James Hilliard
Quoted 7 lines · Yann E. MORIN

James, All,

On 2022-09-05 14:20 -0600, James Hilliard spake thusly:

Quoted 1 line

If set this can may break package builds in some cases such as the

So, this is very probabilistic: 'can' and 'may'! ;-)

Well I think the breaking behavior depends on what TARGET is set to.

Quoted 5 lines
Quoted 2 lines

host-icu build.

Can you provide an actual error message and an explanation on how that actually fails?

I had set this in my env(for some non-buildroot compiler testing), and noticed it broke buildroot builds unless cleared:
export TARGET=bpf

Quoted 1 line
Quoted 1 line
Quoted 1 line

host-icu 70-1 Building

PATH="/home/buildroot/buildroot/output/per-package/host-icu/host/bin:/home/buildroot/buildroot/output/per-package/host-icu/host/sbin:/home/buildroot/bin:/home/buildroot/.local/bin:/home/buildroot/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" PKG_CONFIG="/home/buildroot/buildroot/output/per-package/host-icu/host/bin/pkg-config"
PKG_CONFIG_SYSROOT_DIR="/" PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1
PKG_CONFIG_ALLOW_SYSTEM_LIBS=1
PKG_CONFIG_LIBDIR="/home/buildroot/buildroot/output/per-package/host-icu/host/lib/pkgconfig:/home/buildroot/buildroot/output/per-package/host-icu/host/share/pkgconfig"
/usr/bin/make -j33 -C
/home/buildroot/buildroot/output/build/host-icu-70-1/source
cd ./config; \
/usr/bin/make -f pkgdataMakefile
rm -rf config/icu-config
rebuilding config/icucross.mk
rebuilding config/icucross.inc
/bin/bash ./mkinstalldirs lib
/bin/bash ./mkinstalldirs bin
/usr/bin/install -c ./config/icu-config-top config/icu-config
rm -rf pkgdata.inc
chmod u+w config/icu-config
mkdir lib
mkdir bin
LC_ALL=C /usr/bin/sed -f ./config/make2sh.sed < ./config/Makefile.inc
| grep -v '#M#' | uniq >> config/icu-config
config/icu-uc.pc updated.
config/icu-i18n.pc updated.
/usr/bin/make[2]: Making all' in stubdata'
LC_ALL=C /usr/bin/sed -f ./config/make2sh.sed < ./config/mh-linux |
grep -v '#M#' | uniq >> config/icu-config
cat ./config/icu-config-bottom >> config/icu-config
(deps) stubdata.cpp
chmod u-w config/icu-config
Note: rebuild with "/usr/bin/make VERBOSE=1 " to show all compiler parameters.
make[3]: *** No rule to make target 'bpf', needed by 'all-local'. Stop.

Quoted 1 line
Quoted 6 lines
Quoted 4 lines

I've looked at the icu source code, and all I could see are plain assignments and references to TARGET. Variables assigned in a Makefile are supposed to take precedence to variables from the environment, so I am not sure I can see how that can actually fail...

I assume it's not actually assigned in the makefile then?

It's conditionally assigned:

ifneq ($(ENABLE_STATIC),)
TARGET = $(STUBDATA_LIBDIR)$(LIBSICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX).$(A) endif

There are a couple of Makefile.in where it's defined like that....

This does look like a very icu-specific thing though, so I think it should be
fixed in icu.mk itself, by setting TARGET= in the _ENV.

Regards,
Arnout

Quoted 43 lines
Quoted 38 lines

See for example commits which describes the actual reasons it fails:
20ca008d0266 unexport TERMINFO to correct ncurses behavior 2e32330c4a49 Makefile: unexport O
d3910057c6ae Makefile: unexport 'DEVICE_TREE' environment variable 6cff741ebaf7 package/ccache: do not force colored diagnostics

Regards,
Yann E. MORIN.

Quoted 20 lines
---
  Makefile | 1 +
  1 file changed, 1 insertion(+)
Makefile +1 -1
index bd0b906cde..a82a22a276 100644
@@ -427,6 +427,7 @@ unexport GCC_COLORS
  unexport PLATFORM
  unexport OS
  unexport DEVICE_TREE
+unexport TARGET
 
  GNU_HOST_NAME := $(shell support/gnuconfig/config.guess)
 
--

2.34.1

Quoted 4 lines

_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot

--
.-----------------.--------------------.------------------.--------------------.

Quoted 5 lines
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |

'------------------------------^-------^------------------^--------------------'

Quoted 4 lines

_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot

_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot

#4 lore raw
Quoted 68 lines · Arnout Vandecappelle
Quoted 55 lines · James Hilliard
Quoted 7 lines · Yann E. MORIN

James, All,

On 2022-09-05 14:20 -0600, James Hilliard spake thusly:

Quoted 1 line

If set this can may break package builds in some cases such as the

So, this is very probabilistic: 'can' and 'may'! ;-)

Well I think the breaking behavior depends on what TARGET is set to.

Quoted 5 lines
Quoted 2 lines

host-icu build.

Can you provide an actual error message and an explanation on how that actually fails?

I had set this in my env(for some non-buildroot compiler testing), and noticed it broke buildroot builds unless cleared:
export TARGET=bpf

Quoted 1 line
Quoted 1 line
Quoted 1 line

host-icu 70-1 Building

PATH="/home/buildroot/buildroot/output/per-package/host-icu/host/bin:/home/buildroot/buildroot/output/per-package/host-icu/host/sbin:/home/buildroot/bin:/home/buildroot/.local/bin:/home/buildroot/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" PKG_CONFIG="/home/buildroot/buildroot/output/per-package/host-icu/host/bin/pkg-config"
PKG_CONFIG_SYSROOT_DIR="/" PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1
PKG_CONFIG_ALLOW_SYSTEM_LIBS=1
PKG_CONFIG_LIBDIR="/home/buildroot/buildroot/output/per-package/host-icu/host/lib/pkgconfig:/home/buildroot/buildroot/output/per-package/host-icu/host/share/pkgconfig"
/usr/bin/make -j33 -C
/home/buildroot/buildroot/output/build/host-icu-70-1/source
cd ./config; \
/usr/bin/make -f pkgdataMakefile
rm -rf config/icu-config
rebuilding config/icucross.mk
rebuilding config/icucross.inc
/bin/bash ./mkinstalldirs lib
/bin/bash ./mkinstalldirs bin
/usr/bin/install -c ./config/icu-config-top config/icu-config
rm -rf pkgdata.inc
chmod u+w config/icu-config
mkdir lib
mkdir bin
LC_ALL=C /usr/bin/sed -f ./config/make2sh.sed < ./config/Makefile.inc
| grep -v '#M#' | uniq >> config/icu-config
config/icu-uc.pc updated.
config/icu-i18n.pc updated.
/usr/bin/make[2]: Making all' in stubdata'
LC_ALL=C /usr/bin/sed -f ./config/make2sh.sed < ./config/mh-linux |
grep -v '#M#' | uniq >> config/icu-config
cat ./config/icu-config-bottom >> config/icu-config
(deps) stubdata.cpp
chmod u-w config/icu-config
Note: rebuild with "/usr/bin/make VERBOSE=1 " to show all compiler parameters.
make[3]: *** No rule to make target 'bpf', needed by 'all-local'. Stop.

Quoted 1 line
Quoted 6 lines
Quoted 4 lines

I've looked at the icu source code, and all I could see are plain assignments and references to TARGET. Variables assigned in a Makefile are supposed to take precedence to variables from the environment, so I am not sure I can see how that can actually fail...

I assume it's not actually assigned in the makefile then?

It's conditionally assigned:

Quoted 8 lines

ifneq ($(ENABLE_STATIC),)
TARGET = $(STUBDATA_LIBDIR)$(LIBSICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX).$(A) endif

There are a couple of Makefile.in where it's defined like that....

This does look like a very icu-specific thing though, so I think it should be
fixed in icu.mk itself, by setting TARGET= in the _ENV.

Set to empty like this?
ICU_CONF_ENV += TARGET=""
ICU_MAKE_ENV += TARGET=""

Quoted 52 lines

Regards,
Arnout

Quoted 47 lines
Quoted 38 lines

See for example commits which describes the actual reasons it fails:
20ca008d0266 unexport TERMINFO to correct ncurses behavior 2e32330c4a49 Makefile: unexport O
d3910057c6ae Makefile: unexport 'DEVICE_TREE' environment variable 6cff741ebaf7 package/ccache: do not force colored diagnostics

Regards,
Yann E. MORIN.

Quoted 20 lines
---
  Makefile | 1 +
  1 file changed, 1 insertion(+)
Makefile +1 -1
index bd0b906cde..a82a22a276 100644
@@ -427,6 +427,7 @@ unexport GCC_COLORS
  unexport PLATFORM
  unexport OS
  unexport DEVICE_TREE
+unexport TARGET
 
  GNU_HOST_NAME := $(shell support/gnuconfig/config.guess)
 
--

2.34.1

Quoted 4 lines

_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot

--
.-----------------.--------------------.------------------.--------------------.

Quoted 5 lines
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |

'------------------------------^-------^------------------^--------------------'

_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot

_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot

#5 lore raw

James, All,

On 2022-09-07 16:51 -0600, James Hilliard spake thusly:

Quoted 1 line · Arnout Vandecappelle

[--SNIP--]

Quoted 8 lines
Quoted 8 lines
Quoted 8 lines
Quoted 2 lines

Can you provide an actual error message and an explanation on how that actually fails?

I had set this in my env(for some non-buildroot compiler testing), and noticed it broke buildroot builds unless cleared:
export TARGET=bpf

Quoted 1 line
Quoted 1 line
Quoted 1 line

host-icu 70-1 Building

[--SNIP--]

Quoted 2 lines
Quoted 2 lines
Quoted 2 lines

Note: rebuild with "/usr/bin/make VERBOSE=1 " to show all compiler parameters. make[3]: *** No rule to make target 'bpf', needed by 'all-local'. Stop.

OK, this (elided), should be part of the commit log.

[--SNIP--]

Quoted 6 lines
Quoted 6 lines

It's conditionally assigned:

ifneq ($(ENABLE_STATIC),)
TARGET = $(STUBDATA_LIBDIR)$(LIBSICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX).$(A) endif

Quoted 8 lines
Quoted 4 lines

There are a couple of Makefile.in where it's defined like that....

This does look like a very icu-specific thing though, so I think it should be
fixed in icu.mk itself, by setting TARGET= in the _ENV.

Set to empty like this?
ICU_CONF_ENV += TARGET=""
ICU_MAKE_ENV += TARGET=""

Ues, this should do the trick.

Regards,
Yann E. MORIN.

Signature · 10 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot