Skip to contentSkip to conversation

glibc: ensure BR2_MAKE is also used for subdirs

PATCH New Peter Korsgaard 2 participants 9 messages Nov 19, 2018 – Nov 20, 2018

lore
Share & tools
lore
#0 lore raw

PATCH v3 1/3 glibc: ensure BR2_MAKE is also used for subdirs

The configure script contains logic to figure out what make program to invoke for subdirectories (trying gnumake, gmake, make). Explicitly force it to use our BR2_MAKE to ensure the right make version is used.

As GLIBC_CONF_ENV is only initialized below, move this section below it.

---
v3: No changes
v2:
- Fix CONV/CONF typo, move section below GLIBC_CONF_ENV initialization

 package/glibc/glibc.mk | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)
package/glibc/glibc.mk +5 -4
index 708c22f723..762c040688 100644
@@ -31,10 +31,6 @@ GLIBC_ADD_TOOLCHAIN_DEPENDENCY = NO
 GLIBC_DEPENDENCIES = host-gcc-initial linux-headers host-bison host-gawk \
 	$(BR2_MAKE_HOST_DEPENDENCY)
 
-# glibc requires make >= 4.0 since 2.28 release.
-# https://www.sourceware.org/ml/libc-alpha/2018-08/msg00003.html
-GLIBC_MAKE = $(BR2_MAKE)
-
 GLIBC_SUBDIR = build
 
 GLIBC_INSTALL_STAGING = YES
@@ -82,6 +78,11 @@ ifeq ($(BR2_riscv),y)
 GLIBC_CONF_ENV += libc_cv_slibdir=/lib64 libc_cv_rtlddir=/lib
 endif
 
+# glibc requires make >= 4.0 since 2.28 release.
+# https://www.sourceware.org/ml/libc-alpha/2018-08/msg00003.html
+GLIBC_MAKE = $(BR2_MAKE)
+GLIBC_CONF_ENV += ac_cv_prog_MAKE="$(BR2_MAKE)"
+
 # Even though we use the autotools-package infrastructure, we have to
 # override the default configure commands for several reasons:
 #
Signature · 1 line
2.11.0
#1 lore raw

PATCH v3 1/3 glibc: ensure BR2_MAKE is also used for subdirs

Quoted 6 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Peter" == Peter Korsgaard <[email protected]> writes:

The configure script contains logic to figure out what make program to invoke for subdirectories (trying gnumake, gmake, make). Explicitly force it to use our BR2_MAKE to ensure the right make version is used.

Quoted 7 lines

As GLIBC_CONF_ENV is only initialized below, move this section below it.

---
v3: No changes
v2:
- Fix CONV/CONF typo, move section below GLIBC_CONF_ENV initialization

Committed, thanks.

Signature · 1 line
Bye, Peter Korsgaard
#2 lore raw

PATCH v3 2/3 make: drop gnumake/gmake aliases for host-make

In reply to Peter Korsgaard

Now that glibc no longer checks for gnumake / gmake, these aliases can be removed.

---
v3: No changes
v2: No changes

 package/make/make.mk | 10 ----------
 1 file changed, 10 deletions(-)
package/make/make.mk +0 -10
index 790391c76e..1471576850 100644
@@ -23,15 +23,5 @@ endif
 HOST_MAKE_DEPENDENCIES = host-pkgconf
 HOST_MAKE_CONF_OPTS = --without-guile
 
-# Some packages, like glibc, are looking for gnumake or gmake before
-# make program.
-# Create these symlink to use make binary generated by Buildroot for
-# the host.
-define HOST_MAKE_INSTALL_GNUMAKE
-	ln -fs make $(HOST_DIR)/bin/gnumake
-	ln -fs make $(HOST_DIR)/bin/gmake
-endef
-HOST_MAKE_POST_INSTALL_HOOKS += HOST_MAKE_INSTALL_GNUMAKE
-
 $(eval $(autotools-package))
 $(eval $(host-autotools-package))
Signature · 1 line
2.11.0
#3 lore raw

PATCH v3 2/3 make: drop gnumake/gmake aliases for host-make

Quoted 9 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Peter" == Peter Korsgaard <[email protected]> writes:

Now that glibc no longer checks for gnumake / gmake, these aliases can be removed.

---
v3: No changes
v2: No changes

Committed, thanks.

Signature · 1 line
Bye, Peter Korsgaard
#4 lore raw

PATCH v3 2/3 make: drop gnumake/gmake aliases for host-make

In reply to Peter Korsgaard

Peter, All,

On 2018-11-19 17:25 +0100, Peter Korsgaard spake thusly:

Quoted 4 lines

Now that glibc no longer checks for gnumake / gmake, these aliases can be removed.

Note that, even if the system does have gmake or gnumake, they are no longer detected since we do force what make to use recursively in glibc, which was not the case previously (just saying for posterity, because I had to think twice before reviewing that).

Regards,
Yann E. MORIN.

Quoted 34 lines

---
v3: No changes
v2: No changes

 package/make/make.mk | 10 ----------
 1 file changed, 10 deletions(-)
package/make/make.mk +0 -10
index 790391c76e..1471576850 100644
@@ -23,15 +23,5 @@ endif
 HOST_MAKE_DEPENDENCIES = host-pkgconf
 HOST_MAKE_CONF_OPTS = --without-guile
 
-# Some packages, like glibc, are looking for gnumake or gmake before
-# make program.
-# Create these symlink to use make binary generated by Buildroot for
-# the host.
-define HOST_MAKE_INSTALL_GNUMAKE
-	ln -fs make $(HOST_DIR)/bin/gnumake
-	ln -fs make $(HOST_DIR)/bin/gmake
-endef
-HOST_MAKE_POST_INSTALL_HOOKS += HOST_MAKE_INSTALL_GNUMAKE
-
 $(eval $(autotools-package))
 $(eval $(host-autotools-package))
Signature · 6 lines
2.11.0

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 21 lines
                                        ____________
.-----------------.--------------------:       _    :------------------.
|  Yann E. MORIN  | Real-Time Embedded |    __/ )   | /"\ ASCII RIBBON |
| +33 534.541.179 | Software  Designer |  _/ - /'   | \ / CAMPAIGN     |
| +33 638.411.245 '--------------------: (_    `--, |  X  AGAINST      |
|      yann.morin (at) orange.com      |_="    ,--' | / \ HTML MAIL    |
'--------------------------------------:______/_____:------------------'


_________________________________________________________________________________________________________________________

Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc
pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler
a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,
Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.

This message and its attachments may contain confidential or privileged information that may be protected by law;
they should not be distributed, used or copied without authorisation.
If you have received this email in error, please notify the sender and delete this message and its attachments.
As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.
Thank you.
#5 lore raw

PATCH v3 3/3 make: configure host-make with host- prefix

In reply to Peter Korsgaard

Fixes:
http://autobuild.buildroot.net/results/e29/e293aadc692d2ed337881ef2172ddf66a60bc05c/

And many more.

Install as 'host-make' rather than just 'make', as that otherwise confuses a number of packages when they invoke recursive / sub-make. The internal job control logic of GNU make is version dependant, so mixing versions may lead to issues like:

make[1]: Entering directory `/home/peko/autobuild/instance-0/output/build/boa-0.94.14rc21' (cd src && make -w --jobserver-fds=5,6 -j)
make: unrecognized option '--jobserver-fds=5,6'

With this rename, only packages explicitly opting in for our host-make (using the BR2_MAKE / BR2_MAKE_HOST_DEPENDENCY logic) will use it.

---
v3: use --program-prefix instead of renaming post-install as suggested by Yann.
v2: No changes

 package/make/make.mk                    | 4 ++++
 support/dependencies/check-host-make.mk | 4 ++--
 2 files changed, 6 insertions(+), 2 deletions(-)
package/make/make.mk +4 -0
index 1471576850..10082353a2 100644
@@ -23,5 +23,9 @@ endif
 HOST_MAKE_DEPENDENCIES = host-pkgconf
 HOST_MAKE_CONF_OPTS = --without-guile
 
+# Configure host-make binary to be 'host-make' to ensure it isn't
+# accidently used by packages when they invoke recursive / sub-make.
+HOST_MAKE_CONF_OPTS += --program-prefix=host-
+
 $(eval $(autotools-package))
 $(eval $(host-autotools-package))
support/dependencies/check-host-make.mk +2 -2
index 4235a393fd..66560ee85c 100644
@@ -12,8 +12,8 @@ BR2_MAKE ?= $(call suitable-host-package,make,\
 	$(BR2_MAKE_VERSION_MIN) $(MAKE))
 
 ifeq ($(BR2_MAKE),)
-BR2_MAKE = $(HOST_DIR)/bin/make -j$(PARALLEL_JOBS)
-BR2_MAKE1 = $(HOST_DIR)/bin/make -j1
+BR2_MAKE = $(HOST_DIR)/bin/host-make -j$(PARALLEL_JOBS)
+BR2_MAKE1 = $(HOST_DIR)/bin/host-make -j1
 BR2_MAKE_HOST_DEPENDENCY = host-make
 else
 BR2_MAKE = $(MAKE)
Signature · 1 line
2.11.0
#6 lore raw

PATCH v3 3/3 make: configure host-make with host- prefix

Quoted 16 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Peter" == Peter Korsgaard <[email protected]> writes:

Fixes:
http://autobuild.buildroot.net/results/e29/e293aadc692d2ed337881ef2172ddf66a60bc05c/

And many more.

Install as 'host-make' rather than just 'make', as that otherwise confuses a number of packages when they invoke recursive / sub-make. The internal job control logic of GNU make is version dependant, so mixing versions may lead to issues like:

make[1]: Entering directory `/home/peko/autobuild/instance-0/output/build/boa-0.94.14rc21' (cd src && make -w --jobserver-fds=5,6 -j)
make: unrecognized option '--jobserver-fds=5,6'

Quoted 7 lines

With this rename, only packages explicitly opting in for our host-make (using the BR2_MAKE / BR2_MAKE_HOST_DEPENDENCY logic) will use it.

---
v3: use --program-prefix instead of renaming post-install as suggested by Yann.
v2: No changes

Committed, thanks.

Signature · 1 line
Bye, Peter Korsgaard
#7 lore raw

PATCH v3 3/3 make: configure host-make with host- prefix

In reply to Peter Korsgaard

Peter, All,

On 2018-11-19 17:25 +0100, Peter Korsgaard spake thusly:

Quoted 10 lines

Fixes:
http://autobuild.buildroot.net/results/e29/e293aadc692d2ed337881ef2172ddf66a60bc05c/

And many more.

Install as 'host-make' rather than just 'make', as that otherwise confuses a number of packages when they invoke recursive / sub-make. The internal job control logic of GNU make is version dependant, so mixing versions may lead to issues like:

Quoted 8 lines

make[1]: Entering directory `/home/peko/autobuild/instance-0/output/build/boa-0.94.14rc21' (cd src && make -w --jobserver-fds=5,6 -j)
make: unrecognized option '--jobserver-fds=5,6'

With this rename, only packages explicitly opting in for our host-make (using the BR2_MAKE / BR2_MAKE_HOST_DEPENDENCY logic) will use it.

A comment below, probably interesting for Thomas...

Quoted 27 lines

---
v3: use --program-prefix instead of renaming post-install as suggested by Yann.
v2: No changes

 package/make/make.mk                    | 4 ++++
 support/dependencies/check-host-make.mk | 4 ++--
 2 files changed, 6 insertions(+), 2 deletions(-)
package/make/make.mk +4 -0
index 1471576850..10082353a2 100644
@@ -23,5 +23,9 @@ endif
 HOST_MAKE_DEPENDENCIES = host-pkgconf
 HOST_MAKE_CONF_OPTS = --without-guile
 
+# Configure host-make binary to be 'host-make' to ensure it isn't
+# accidently used by packages when they invoke recursive / sub-make.
+HOST_MAKE_CONF_OPTS += --program-prefix=host-
+
 $(eval $(autotools-package))
 $(eval $(host-autotools-package))
support/dependencies/check-host-make.mk +0 -0
index 4235a393fd..66560ee85c 100644

support/dependencies/check-host-make.mk BR2_MAKE ?= $(call suitable-host-package,make,\ · line 16

Quoted 7 lines
support/dependencies/check-host-make.mk +2 -2
@@ -12,8 +12,8 @@ BR2_MAKE ?= $(call suitable-host-package,make,\
 	$(BR2_MAKE_VERSION_MIN) $(MAKE))
 
 ifeq ($(BR2_MAKE),)
-BR2_MAKE = $(HOST_DIR)/bin/make -j$(PARALLEL_JOBS)
-BR2_MAKE1 = $(HOST_DIR)/bin/make -j1
+BR2_MAKE = $(HOST_DIR)/bin/host-make -j$(PARALLEL_JOBS)
+BR2_MAKE1 = $(HOST_DIR)/bin/host-make -j1

Here, for top-level parallel build, we might have to propagate the --jobserver-fds, by setting it from $(MAKEFLAGS).

Regards,
Yann E. MORIN.

Quoted 10 lines
support/dependencies/check-host-make.mk +0 -0
 BR2_MAKE_HOST_DEPENDENCY = host-make
 else
 BR2_MAKE = $(MAKE)
Signature · 6 lines
2.11.0

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 21 lines
                                        ____________
.-----------------.--------------------:       _    :------------------.
|  Yann E. MORIN  | Real-Time Embedded |    __/ )   | /"\ ASCII RIBBON |
| +33 534.541.179 | Software  Designer |  _/ - /'   | \ / CAMPAIGN     |
| +33 638.411.245 '--------------------: (_    `--, |  X  AGAINST      |
|      yann.morin (at) orange.com      |_="    ,--' | / \ HTML MAIL    |
'--------------------------------------:______/_____:------------------'


_________________________________________________________________________________________________________________________

Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc
pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler
a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,
Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.

This message and its attachments may contain confidential or privileged information that may be protected by law;
they should not be distributed, used or copied without authorisation.
If you have received this email in error, please notify the sender and delete this message and its attachments.
As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.
Thank you.
#8 lore raw

PATCH v3 1/3 glibc: ensure BR2_MAKE is also used for subdirs

In reply to Peter Korsgaard

Peter, All,

[Notice that you CCed the wrong Yann E. MORIN.]

On 2018-11-19 17:25 +0100, Peter Korsgaard spake thusly:

Quoted 7 lines

The configure script contains logic to figure out what make program to invoke for subdirectories (trying gnumake, gmake, make). Explicitly force it to use our BR2_MAKE to ensure the right make version is used.

As GLIBC_CONF_ENV is only initialized below, move this section below it.

Quoted 24 lines

---
v3: No changes
v2:
- Fix CONV/CONF typo, move section below GLIBC_CONF_ENV initialization

 package/glibc/glibc.mk | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)
package/glibc/glibc.mk +0 -4
index 708c22f723..762c040688 100644
@@ -31,10 +31,6 @@ GLIBC_ADD_TOOLCHAIN_DEPENDENCY = NO
 GLIBC_DEPENDENCIES = host-gcc-initial linux-headers host-bison host-gawk \
 	$(BR2_MAKE_HOST_DEPENDENCY)
 
-# glibc requires make >= 4.0 since 2.28 release.
-# https://www.sourceware.org/ml/libc-alpha/2018-08/msg00003.html
-GLIBC_MAKE = $(BR2_MAKE)
-
 GLIBC_SUBDIR = build
 
 GLIBC_INSTALL_STAGING = YES

package/glibc/glibc.mk ifeq ($(BR2_riscv),y) · line 84

Quoted 7 lines
package/glibc/glibc.mk +4 -0
@@ -82,6 +78,11 @@ ifeq ($(BR2_riscv),y)
 GLIBC_CONF_ENV += libc_cv_slibdir=/lib64 libc_cv_rtlddir=/lib
 endif
 
+# glibc requires make >= 4.0 since 2.28 release.
+# https://www.sourceware.org/ml/libc-alpha/2018-08/msg00003.html
+GLIBC_MAKE = $(BR2_MAKE)
+GLIBC_CONF_ENV += ac_cv_prog_MAKE="$(BR2_MAKE)"

Given the importance of the comment, I think it would have been a good idea to also move the dependency here as well:

    # glibc requires make >= 4.0 since 2.28 release.
    # https://www.sourceware.org/ml/libc-alpha/2018-08/msg00003.html
    GLIBC_DEPENDENCIES += $(BR2_MAKE_HOST_DEPENDENCY)
    GLIBC_MAKE = $(BR2_MAKE)
    GLIBC_CONF_ENV += ac_cv_prog_MAKE="$(BR2_MAKE)"

Still, that was not done before, so my reviewed-by tag still stands.

Regards,
Yann E. MORIN.

Quoted 10 lines
package/glibc/glibc.mk +0 -0
 # Even though we use the autotools-package infrastructure, we have to
 # override the default configure commands for several reasons:
 #
Signature · 6 lines
2.11.0

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 21 lines
                                        ____________
.-----------------.--------------------:       _    :------------------.
|  Yann E. MORIN  | Real-Time Embedded |    __/ )   | /"\ ASCII RIBBON |
| +33 534.541.179 | Software  Designer |  _/ - /'   | \ / CAMPAIGN     |
| +33 638.411.245 '--------------------: (_    `--, |  X  AGAINST      |
|      yann.morin (at) orange.com      |_="    ,--' | / \ HTML MAIL    |
'--------------------------------------:______/_____:------------------'


_________________________________________________________________________________________________________________________

Ce message et ses pieces jointes peuvent contenir des informations confidentielles ou privilegiees et ne doivent donc
pas etre diffuses, exploites ou copies sans autorisation. Si vous avez recu ce message par erreur, veuillez le signaler
a l'expediteur et le detruire ainsi que les pieces jointes. Les messages electroniques etant susceptibles d'alteration,
Orange decline toute responsabilite si ce message a ete altere, deforme ou falsifie. Merci.

This message and its attachments may contain confidential or privileged information that may be protected by law;
they should not be distributed, used or copied without authorisation.
If you have received this email in error, please notify the sender and delete this message and its attachments.
As emails may be altered, Orange is not liable for messages that have been modified, changed or falsified.
Thank you.