public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-dev] [PATCH] gcc-config: Add option to not install cc/f77 wrappers.
@ 2020-02-27 19:22 Manoj Gupta
  2020-02-27 19:40 ` [gentoo-dev] " Manoj Gupta
  0 siblings, 1 reply; 9+ messages in thread
From: Manoj Gupta @ 2020-02-27 19:22 UTC (permalink / raw
  To: gentoo-dev, slyfox, vapier; +Cc: Manoj Gupta

gcc-config installs cc/f77 by default. This may be undesired on
systems that want to set their own versions of cc/f77.

Add option "-n"/"--no-default-vars" to not install the cc/f77
wrappers.

Signed-off-by: Manoj Gupta <manojgupta@google.com>
---
 gcc-config | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/gcc-config b/gcc-config
index f03a46a..6f306db 100755
--- a/gcc-config
+++ b/gcc-config
@@ -262,7 +262,7 @@ update_wrappers() {
 	# For all toolchains, we want to create the fully qualified
 	# `tuple-foo`.  Only native ones do we want the simple `foo`.
 	local all_wrappers=( ${new_wrappers[@]/#/${CTARGET}-} )
-	if ! is_cross_compiler ; then
+	if ! is_cross_compiler && [[ "${DEFAULT_PROGS}" == "yes" ]]; then
 		all_wrappers+=( "${new_wrappers[@]}" )
 		# There are a few fun extra progs which we have to handle #412319
 		all_wrappers+=( cc:gcc f77:g77 )
@@ -951,6 +951,7 @@ FORCE="no"
 CC_COMP=
 ENV_D="${EROOT}etc/env.d"
 GCC_ENV_D="${ENV_D}/gcc"
+DEFAULT_PROGS="yes"
 
 for x in "$@" ; do
 	case "${x}" in
@@ -972,6 +973,9 @@ for x in "$@" ; do
 		-l|--list-profiles)
 			set_doit list_profiles
 			;;
+		-n|--no-default-vars)
+			DEFAULT_PROGS="no"
+			;;
 		-S|--split-profile)
 			if [[ ( $1 != "-S" && $1 != "--split-profile" ) || $# -eq 1 ]] ; then
 				usage 1
-- 
2.25.1.481.gfbce0eb801-goog



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [gentoo-dev] Re: [PATCH] gcc-config: Add option to not install cc/f77 wrappers.
  2020-02-27 19:22 [gentoo-dev] [PATCH] gcc-config: Add option to not install cc/f77 wrappers Manoj Gupta
@ 2020-02-27 19:40 ` Manoj Gupta
       [not found]   ` <CAHvdr7P-fYebVxuYU1Pdho7f7yMgE987pSjkp+wzzCxJhPxZzA@mail.gmail.com>
  0 siblings, 1 reply; 9+ messages in thread
From: Manoj Gupta @ 2020-02-27 19:40 UTC (permalink / raw
  To: gentoo-dev, Sergei Trofimovich, vapier, toolchain

[-- Attachment #1: Type: text/plain, Size: 1814 bytes --]

On Thu, Feb 27, 2020 at 11:22 AM Manoj Gupta <manojgupta@google.com> wrote:

> gcc-config installs cc/f77 by default. This may be undesired on
> systems that want to set their own versions of cc/f77.
>
> Add option "-n"/"--no-default-vars" to not install the cc/f77
> wrappers.
>
> Signed-off-by: Manoj Gupta <manojgupta@google.com>
> ---
>  gcc-config | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/gcc-config b/gcc-config
> index f03a46a..6f306db 100755
> --- a/gcc-config
> +++ b/gcc-config
> @@ -262,7 +262,7 @@ update_wrappers() {
>         # For all toolchains, we want to create the fully qualified
>         # `tuple-foo`.  Only native ones do we want the simple `foo`.
>         local all_wrappers=( ${new_wrappers[@]/#/${CTARGET}-} )
> -       if ! is_cross_compiler ; then
> +       if ! is_cross_compiler && [[ "${DEFAULT_PROGS}" == "yes" ]]; then
>                 all_wrappers+=( "${new_wrappers[@]}" )
>                 # There are a few fun extra progs which we have to handle
> #412319
>                 all_wrappers+=( cc:gcc f77:g77 )
> @@ -951,6 +951,7 @@ FORCE="no"
>  CC_COMP=
>  ENV_D="${EROOT}etc/env.d"
>  GCC_ENV_D="${ENV_D}/gcc"
> +DEFAULT_PROGS="yes"
>
>  for x in "$@" ; do
>         case "${x}" in
> @@ -972,6 +973,9 @@ for x in "$@" ; do
>                 -l|--list-profiles)
>                         set_doit list_profiles
>                         ;;
> +               -n|--no-default-vars)
> +                       DEFAULT_PROGS="no"
> +                       ;;
>                 -S|--split-profile)
>                         if [[ ( $1 != "-S" && $1 != "--split-profile" ) ||
> $# -eq 1 ]] ; then
>                                 usage 1
> --
>
>
Not sure of the correct mailing list for patches to gcc-config so also
adding toolchain@gentoo .

[-- Attachment #2: Type: text/html, Size: 2676 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [gentoo-dev] Re: [PATCH] gcc-config: Add option to not install cc/f77 wrappers.
       [not found]   ` <CAHvdr7P-fYebVxuYU1Pdho7f7yMgE987pSjkp+wzzCxJhPxZzA@mail.gmail.com>
@ 2020-03-03  3:03     ` Manoj Gupta
  2020-03-03  9:16       ` Sergei Trofimovich
  0 siblings, 1 reply; 9+ messages in thread
From: Manoj Gupta @ 2020-03-03  3:03 UTC (permalink / raw
  To: Sergei Trofimovich
  Cc: gentoo-dev, Sergei Trofimovich, Mike Frysinger, toolchain

[-- Attachment #1: Type: text/plain, Size: 3584 bytes --]

On Thu, Feb 27, 2020 at 11:20 PM Sergei Trofimovich <slyich@gmail.com>
wrote:

> On Thu, 27 Feb 2020 at 22:41, Manoj Gupta <manojgupta@google.com> wrote:
> >
> >
> >
> > On Thu, Feb 27, 2020 at 11:22 AM Manoj Gupta <manojgupta@google.com>
> wrote:
> >>
> >> gcc-config installs cc/f77 by default. This may be undesired on
> >> systems that want to set their own versions of cc/f77.
> >>
> >> Add option "-n"/"--no-default-vars" to not install the cc/f77
> >> wrappers.
> >>
> >> Signed-off-by: Manoj Gupta <manojgupta@google.com>
> >> ---
> >>  gcc-config | 6 +++++-
> >>  1 file changed, 5 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/gcc-config b/gcc-config
> >> index f03a46a..6f306db 100755
> >> --- a/gcc-config
> >> +++ b/gcc-config
> >> @@ -262,7 +262,7 @@ update_wrappers() {
> >>         # For all toolchains, we want to create the fully qualified
> >>         # `tuple-foo`.  Only native ones do we want the simple `foo`.
> >>         local all_wrappers=( ${new_wrappers[@]/#/${CTARGET}-} )
> >> -       if ! is_cross_compiler ; then
> >> +       if ! is_cross_compiler && [[ "${DEFAULT_PROGS}" == "yes" ]];
> then
> >>                 all_wrappers+=( "${new_wrappers[@]}" )
> >>                 # There are a few fun extra progs which we have to
> handle #412319
> >>                 all_wrappers+=( cc:gcc f77:g77 )
> >> @@ -951,6 +951,7 @@ FORCE="no"
> >>  CC_COMP=
> >>  ENV_D="${EROOT}etc/env.d"
> >>  GCC_ENV_D="${ENV_D}/gcc"
> >> +DEFAULT_PROGS="yes"
> >>
> >>  for x in "$@" ; do
> >>         case "${x}" in
> >> @@ -972,6 +973,9 @@ for x in "$@" ; do
> >>                 -l|--list-profiles)
> >>                         set_doit list_profiles
> >>                         ;;
> >> +               -n|--no-default-vars)
> >> +                       DEFAULT_PROGS="no"
> >> +                       ;;
> >>                 -S|--split-profile)
> >>                         if [[ ( $1 != "-S" && $1 != "--split-profile" )
> || $# -eq 1 ]] ; then
> >>                                 usage 1
> >> --
> >>
> >
> > Not sure of the correct mailing list for patches to gcc-config so also
> adding toolchain@gentoo .
> >
>
> toolchain@gentoo.org should generally be fine.
>
> Today cc->gcc and gcc->${CHOST}-gcc symlinks are effectively owned by
> a single sys-devel/gcc-config package.
> gcc-config is calld to update symlinks every time sys-devel/gcc is
> installed/updated. That way we never get cc/gcc
> out of sync.
>
> Your change makes /usr/bin/cc an orphan symlink. I think we need to
> still keep a 'cc'/'f77' ownership somewhere
> (say, a separate package).
>
> I suggest making a decision to handle or not handle 'cc'/'f77' and
> gcc-config build-time, not gcc-config call-time.
> That way sys-devel/gcc updates will behave the same as manual
> 'gcc-config-' calls.
>
> Mechanically that could be a Makefile variable that switches the
> behaviour on/off at
> https://gitweb.gentoo.org/proj/gcc-config.git/tree/Makefile
> and exposed as an USE flag on sys-devel/gcc-config ebuild.
>
> Later we can create a separate ebuild to manage /usr/bin/cc. For gcc
> it's not hard, as gcc-config always provides /usr/bin/gcc and
> /usr/bin/${CHOST}-gcc.
> These can be static symlinks that don't require maintenance updates.
>
> Thanks for the suggestion. I will look into adding a Makefile variable
exposed via an USE flag.
Regarding the separate ebuild, I hope someone more knowledgeable
than me regarding ebuilds can handle that.

Thanks,
Manoj


> For clang it's less straightforward as gentoo's clang does not provide
> stable path to symlink to.
>
> --
> Sergei
>

[-- Attachment #2: Type: text/html, Size: 5408 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [gentoo-dev] Re: [PATCH] gcc-config: Add option to not install cc/f77 wrappers.
  2020-03-03  3:03     ` Manoj Gupta
@ 2020-03-03  9:16       ` Sergei Trofimovich
  2020-03-11  3:54         ` Manoj Gupta
  0 siblings, 1 reply; 9+ messages in thread
From: Sergei Trofimovich @ 2020-03-03  9:16 UTC (permalink / raw
  To: Manoj Gupta; +Cc: gentoo-dev, Sergei Trofimovich, Mike Frysinger, toolchain

On Mon, 2 Mar 2020 19:03:48 -0800
Manoj Gupta <manojgupta@google.com> wrote:

> On Thu, Feb 27, 2020 at 11:20 PM Sergei Trofimovich <slyich@gmail.com>
> wrote:
> 
> > On Thu, 27 Feb 2020 at 22:41, Manoj Gupta <manojgupta@google.com> wrote:  
> > >
> > >
> > >
> > > On Thu, Feb 27, 2020 at 11:22 AM Manoj Gupta <manojgupta@google.com>  
> > wrote:  
> > >>
> > >> gcc-config installs cc/f77 by default. This may be undesired on
> > >> systems that want to set their own versions of cc/f77.
> > >>
> > >> Add option "-n"/"--no-default-vars" to not install the cc/f77
> > >> wrappers.
> > >>
> > >> Signed-off-by: Manoj Gupta <manojgupta@google.com>
> > >> ---
> > >>  gcc-config | 6 +++++-
> > >>  1 file changed, 5 insertions(+), 1 deletion(-)
> > >>
> > >> diff --git a/gcc-config b/gcc-config
> > >> index f03a46a..6f306db 100755
> > >> --- a/gcc-config
> > >> +++ b/gcc-config
> > >> @@ -262,7 +262,7 @@ update_wrappers() {
> > >>         # For all toolchains, we want to create the fully qualified
> > >>         # `tuple-foo`.  Only native ones do we want the simple `foo`.
> > >>         local all_wrappers=( ${new_wrappers[@]/#/${CTARGET}-} )
> > >> -       if ! is_cross_compiler ; then
> > >> +       if ! is_cross_compiler && [[ "${DEFAULT_PROGS}" == "yes" ]];  
> > then  
> > >>                 all_wrappers+=( "${new_wrappers[@]}" )
> > >>                 # There are a few fun extra progs which we have to  
> > handle #412319  
> > >>                 all_wrappers+=( cc:gcc f77:g77 )
> > >> @@ -951,6 +951,7 @@ FORCE="no"
> > >>  CC_COMP=
> > >>  ENV_D="${EROOT}etc/env.d"
> > >>  GCC_ENV_D="${ENV_D}/gcc"
> > >> +DEFAULT_PROGS="yes"
> > >>
> > >>  for x in "$@" ; do
> > >>         case "${x}" in
> > >> @@ -972,6 +973,9 @@ for x in "$@" ; do
> > >>                 -l|--list-profiles)
> > >>                         set_doit list_profiles
> > >>                         ;;
> > >> +               -n|--no-default-vars)
> > >> +                       DEFAULT_PROGS="no"
> > >> +                       ;;
> > >>                 -S|--split-profile)
> > >>                         if [[ ( $1 != "-S" && $1 != "--split-profile" )  
> > || $# -eq 1 ]] ; then  
> > >>                                 usage 1
> > >> --
> > >>  
> > >
> > > Not sure of the correct mailing list for patches to gcc-config so also  
> > adding toolchain@gentoo .  
> > >  
> >
> > toolchain@gentoo.org should generally be fine.
> >
> > Today cc->gcc and gcc->${CHOST}-gcc symlinks are effectively owned by
> > a single sys-devel/gcc-config package.
> > gcc-config is calld to update symlinks every time sys-devel/gcc is
> > installed/updated. That way we never get cc/gcc
> > out of sync.
> >
> > Your change makes /usr/bin/cc an orphan symlink. I think we need to
> > still keep a 'cc'/'f77' ownership somewhere
> > (say, a separate package).
> >
> > I suggest making a decision to handle or not handle 'cc'/'f77' and
> > gcc-config build-time, not gcc-config call-time.
> > That way sys-devel/gcc updates will behave the same as manual
> > 'gcc-config-' calls.
> >
> > Mechanically that could be a Makefile variable that switches the
> > behaviour on/off at
> > https://gitweb.gentoo.org/proj/gcc-config.git/tree/Makefile
> > and exposed as an USE flag on sys-devel/gcc-config ebuild.
> >
> > Later we can create a separate ebuild to manage /usr/bin/cc. For gcc
> > it's not hard, as gcc-config always provides /usr/bin/gcc and
> > /usr/bin/${CHOST}-gcc.
> > These can be static symlinks that don't require maintenance updates.
> >
> > Thanks for the suggestion. I will look into adding a Makefile variable  
> exposed via an USE flag.

You might also need to look in the detail at 'c++', 'cpp' and ${CHOST}-* equivalents
as those also get linked by gcc-config:

$ LANG=C ls -l /usr/bin/ | fgrep 10.0.1 | fgrep -v -- '-10.0.1 ->'
lrwxrwxrwx   1 root root           43 Feb  4 10:45 c++ -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/c++
lrwxrwxrwx   1 root root           43 Feb  4 10:45 cc -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc
lrwxrwxrwx   1 root root           43 Feb  4 10:45 cpp -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/cpp
lrwxrwxrwx   1 root root           43 Feb  4 10:45 g++ -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/g++
lrwxrwxrwx   1 root root           43 Feb  4 10:45 gcc -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc
lrwxrwxrwx   1 root root           46 Feb  4 10:45 gcc-ar -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc-ar
lrwxrwxrwx   1 root root           46 Feb  4 10:45 gcc-nm -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc-nm
lrwxrwxrwx   1 root root           50 Feb  4 10:45 gcc-ranlib -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc-ranlib
lrwxrwxrwx   1 root root           45 Feb  4 10:45 gccgo -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gccgo
lrwxrwxrwx   1 root root           44 Feb  4 10:45 gcov -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov
lrwxrwxrwx   1 root root           49 Feb  4 10:45 gcov-dump -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov-dump
lrwxrwxrwx   1 root root           49 Feb  4 10:45 gcov-tool -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov-tool
lrwxrwxrwx   1 root root           48 Feb  4 10:45 gfortran -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gfortran
lrwxrwxrwx   1 root root           45 Feb  4 10:45 go-10 -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/go-10
lrwxrwxrwx   1 root root           48 Feb  4 10:45 gofmt-10 -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gofmt-10
lrwxrwxrwx   1 root root           48 Feb  4 10:45 lto-dump -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/lto-dump
lrwxrwxrwx   1 root root           63 Feb  4 10:45 x86_64-pc-linux-gnu-c++ -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-c++
lrwxrwxrwx   1 root root           63 Feb  4 10:45 x86_64-pc-linux-gnu-cpp -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-cpp
lrwxrwxrwx   1 root root           63 Feb  4 10:45 x86_64-pc-linux-gnu-g++ -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-g++
lrwxrwxrwx   1 root root           63 Feb  4 10:45 x86_64-pc-linux-gnu-gcc -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcc
lrwxrwxrwx   1 root root           66 Feb  4 10:45 x86_64-pc-linux-gnu-gcc-ar -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcc-ar
lrwxrwxrwx   1 root root           66 Feb  4 10:45 x86_64-pc-linux-gnu-gcc-nm -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcc-nm
lrwxrwxrwx   1 root root           70 Feb  4 10:45 x86_64-pc-linux-gnu-gcc-ranlib -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcc-ranlib
lrwxrwxrwx   1 root root           65 Feb  4 10:45 x86_64-pc-linux-gnu-gccgo -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gccgo
lrwxrwxrwx   1 root root           64 Feb  4 10:45 x86_64-pc-linux-gnu-gcov -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcov
lrwxrwxrwx   1 root root           49 Feb  4 10:45 x86_64-pc-linux-gnu-gcov-dump -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov-dump
lrwxrwxrwx   1 root root           49 Feb  4 10:45 x86_64-pc-linux-gnu-gcov-tool -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov-tool
lrwxrwxrwx   1 root root           68 Feb  4 10:45 x86_64-pc-linux-gnu-gfortran -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gfortran
lrwxrwxrwx   1 root root           45 Feb  4 10:45 x86_64-pc-linux-gnu-go-10 -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/go-10
lrwxrwxrwx   1 root root           48 Feb  4 10:45 x86_64-pc-linux-gnu-gofmt-10 -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gofmt-10
lrwxrwxrwx   1 root root           48 Feb  4 10:45 x86_64-pc-linux-gnu-lto-dump -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/lto-dump

> Regarding the separate ebuild, I hope someone more knowledgeable
> than me regarding ebuilds can handle that.

How do you plan to manage those symlinks meanwhile?

-- 

  Sergei


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [gentoo-dev] Re: [PATCH] gcc-config: Add option to not install cc/f77 wrappers.
  2020-03-03  9:16       ` Sergei Trofimovich
@ 2020-03-11  3:54         ` Manoj Gupta
  2020-03-11  7:49           ` Sergei Trofimovich
  0 siblings, 1 reply; 9+ messages in thread
From: Manoj Gupta @ 2020-03-11  3:54 UTC (permalink / raw
  To: Sergei Trofimovich; +Cc: gentoo-dev, Mike Frysinger, toolchain

[-- Attachment #1: Type: text/plain, Size: 8841 bytes --]

On Tue, Mar 3, 2020 at 1:17 AM Sergei Trofimovich <slyfox@gentoo.org> wrote:

> On Mon, 2 Mar 2020 19:03:48 -0800
> Manoj Gupta <manojgupta@google.com> wrote:
>
> > On Thu, Feb 27, 2020 at 11:20 PM Sergei Trofimovich <slyich@gmail.com>
> > wrote:
> >
> > > On Thu, 27 Feb 2020 at 22:41, Manoj Gupta <manojgupta@google.com>
> wrote:
> > > >
> > > >
> > > >
> > > > On Thu, Feb 27, 2020 at 11:22 AM Manoj Gupta <manojgupta@google.com>
>
> > > wrote:
> > > >>
> > > >> gcc-config installs cc/f77 by default. This may be undesired on
> > > >> systems that want to set their own versions of cc/f77.
> > > >>
> > > >> Add option "-n"/"--no-default-vars" to not install the cc/f77
> > > >> wrappers.
> > > >>
> > > >> Signed-off-by: Manoj Gupta <manojgupta@google.com>
> > > >> ---
> > > >>  gcc-config | 6 +++++-
> > > >>  1 file changed, 5 insertions(+), 1 deletion(-)
> > > >>
> > > >> diff --git a/gcc-config b/gcc-config
> > > >> index f03a46a..6f306db 100755
> > > >> --- a/gcc-config
> > > >> +++ b/gcc-config
> > > >> @@ -262,7 +262,7 @@ update_wrappers() {
> > > >>         # For all toolchains, we want to create the fully qualified
> > > >>         # `tuple-foo`.  Only native ones do we want the simple
> `foo`.
> > > >>         local all_wrappers=( ${new_wrappers[@]/#/${CTARGET}-} )
> > > >> -       if ! is_cross_compiler ; then
> > > >> +       if ! is_cross_compiler && [[ "${DEFAULT_PROGS}" == "yes"
> ]];
> > > then
> > > >>                 all_wrappers+=( "${new_wrappers[@]}" )
> > > >>                 # There are a few fun extra progs which we have to
> > > handle #412319
> > > >>                 all_wrappers+=( cc:gcc f77:g77 )
> > > >> @@ -951,6 +951,7 @@ FORCE="no"
> > > >>  CC_COMP=
> > > >>  ENV_D="${EROOT}etc/env.d"
> > > >>  GCC_ENV_D="${ENV_D}/gcc"
> > > >> +DEFAULT_PROGS="yes"
> > > >>
> > > >>  for x in "$@" ; do
> > > >>         case "${x}" in
> > > >> @@ -972,6 +973,9 @@ for x in "$@" ; do
> > > >>                 -l|--list-profiles)
> > > >>                         set_doit list_profiles
> > > >>                         ;;
> > > >> +               -n|--no-default-vars)
> > > >> +                       DEFAULT_PROGS="no"
> > > >> +                       ;;
> > > >>                 -S|--split-profile)
> > > >>                         if [[ ( $1 != "-S" && $1 !=
> "--split-profile" )
> > > || $# -eq 1 ]] ; then
> > > >>                                 usage 1
> > > >> --
> > > >>
> > > >
> > > > Not sure of the correct mailing list for patches to gcc-config so
> also
> > > adding toolchain@gentoo .
> > > >
> > >
> > > toolchain@gentoo.org should generally be fine.
> > >
> > > Today cc->gcc and gcc->${CHOST}-gcc symlinks are effectively owned by
> > > a single sys-devel/gcc-config package.
> > > gcc-config is calld to update symlinks every time sys-devel/gcc is
> > > installed/updated. That way we never get cc/gcc
> > > out of sync.
> > >
> > > Your change makes /usr/bin/cc an orphan symlink. I think we need to
> > > still keep a 'cc'/'f77' ownership somewhere
> > > (say, a separate package).
> > >
> > > I suggest making a decision to handle or not handle 'cc'/'f77' and
> > > gcc-config build-time, not gcc-config call-time.
> > > That way sys-devel/gcc updates will behave the same as manual
> > > 'gcc-config-' calls.
> > >
> > > Mechanically that could be a Makefile variable that switches the
> > > behaviour on/off at
> > > https://gitweb.gentoo.org/proj/gcc-config.git/tree/Makefile
> > > and exposed as an USE flag on sys-devel/gcc-config ebuild.
> > >
> > > Later we can create a separate ebuild to manage /usr/bin/cc. For gcc
> > > it's not hard, as gcc-config always provides /usr/bin/gcc and
> > > /usr/bin/${CHOST}-gcc.
> > > These can be static symlinks that don't require maintenance updates.
> > >
> > > Thanks for the suggestion. I will look into adding a Makefile
> variable
> > exposed via an USE flag.
>
> You might also need to look in the detail at 'c++', 'cpp' and ${CHOST}-*
> equivalents
> as those also get linked by gcc-config:
>
> $ LANG=C ls -l /usr/bin/ | fgrep 10.0.1 | fgrep -v -- '-10.0.1 ->'
> lrwxrwxrwx   1 root root           43 Feb  4 10:45 c++ ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/c++
> lrwxrwxrwx   1 root root           43 Feb  4 10:45 cc ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc
> lrwxrwxrwx   1 root root           43 Feb  4 10:45 cpp ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/cpp
> lrwxrwxrwx   1 root root           43 Feb  4 10:45 g++ ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/g++
> lrwxrwxrwx   1 root root           43 Feb  4 10:45 gcc ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc
> lrwxrwxrwx   1 root root           46 Feb  4 10:45 gcc-ar ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc-ar
> lrwxrwxrwx   1 root root           46 Feb  4 10:45 gcc-nm ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc-nm
> lrwxrwxrwx   1 root root           50 Feb  4 10:45 gcc-ranlib ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc-ranlib
> lrwxrwxrwx   1 root root           45 Feb  4 10:45 gccgo ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gccgo
> lrwxrwxrwx   1 root root           44 Feb  4 10:45 gcov ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov
> lrwxrwxrwx   1 root root           49 Feb  4 10:45 gcov-dump ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov-dump
> lrwxrwxrwx   1 root root           49 Feb  4 10:45 gcov-tool ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov-tool
> lrwxrwxrwx   1 root root           48 Feb  4 10:45 gfortran ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gfortran
> lrwxrwxrwx   1 root root           45 Feb  4 10:45 go-10 ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/go-10
> lrwxrwxrwx   1 root root           48 Feb  4 10:45 gofmt-10 ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gofmt-10
> lrwxrwxrwx   1 root root           48 Feb  4 10:45 lto-dump ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/lto-dump
> lrwxrwxrwx   1 root root           63 Feb  4 10:45 x86_64-pc-linux-gnu-c++
> -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-c++
> lrwxrwxrwx   1 root root           63 Feb  4 10:45 x86_64-pc-linux-gnu-cpp
> -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-cpp
> lrwxrwxrwx   1 root root           63 Feb  4 10:45 x86_64-pc-linux-gnu-g++
> -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-g++
> lrwxrwxrwx   1 root root           63 Feb  4 10:45 x86_64-pc-linux-gnu-gcc
> -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcc
> lrwxrwxrwx   1 root root           66 Feb  4 10:45
> x86_64-pc-linux-gnu-gcc-ar ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcc-ar
> lrwxrwxrwx   1 root root           66 Feb  4 10:45
> x86_64-pc-linux-gnu-gcc-nm ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcc-nm
> lrwxrwxrwx   1 root root           70 Feb  4 10:45
> x86_64-pc-linux-gnu-gcc-ranlib ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcc-ranlib
> lrwxrwxrwx   1 root root           65 Feb  4 10:45
> x86_64-pc-linux-gnu-gccgo ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gccgo
> lrwxrwxrwx   1 root root           64 Feb  4 10:45
> x86_64-pc-linux-gnu-gcov ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcov
> lrwxrwxrwx   1 root root           49 Feb  4 10:45
> x86_64-pc-linux-gnu-gcov-dump ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov-dump
> lrwxrwxrwx   1 root root           49 Feb  4 10:45
> x86_64-pc-linux-gnu-gcov-tool ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov-tool
> lrwxrwxrwx   1 root root           68 Feb  4 10:45
> x86_64-pc-linux-gnu-gfortran ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gfortran
> lrwxrwxrwx   1 root root           45 Feb  4 10:45
> x86_64-pc-linux-gnu-go-10 -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/go-10
> lrwxrwxrwx   1 root root           48 Feb  4 10:45
> x86_64-pc-linux-gnu-gofmt-10 ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gofmt-10
> lrwxrwxrwx   1 root root           48 Feb  4 10:45
> x86_64-pc-linux-gnu-lto-dump ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/lto-dump
>
> > Regarding the separate ebuild, I hope someone more knowledgeable
> > than me regarding ebuilds can handle that.
>
> How do you plan to manage those symlinks meanwhile?
>
> I guess there is a confusion in the scope of change I want to do.

GCC package does not provide cc and f77 binaries or symlinks. These are
provided by the gcc-config
which adds /usr/bin/cc and /usr/bin/f77.
These are not needed for building packages via portage but were added
in https://bugs.gentoo.org/412319 just because it is nice to ensure that
invocations like
$ make
work as is without setting CC explicitly e.g.
 $ CC=gcc make

I only want to change gcc-config to NOT create /usr/bin/cc and /usr/bin/f77
via an option.
Everything else stays unchanged.

Thanks,
manoj


> --
>
>   Sergei
>

[-- Attachment #2: Type: text/html, Size: 11975 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [gentoo-dev] Re: [PATCH] gcc-config: Add option to not install cc/f77 wrappers.
  2020-03-11  3:54         ` Manoj Gupta
@ 2020-03-11  7:49           ` Sergei Trofimovich
  2020-03-11 16:07             ` Manoj Gupta
  0 siblings, 1 reply; 9+ messages in thread
From: Sergei Trofimovich @ 2020-03-11  7:49 UTC (permalink / raw
  To: Manoj Gupta; +Cc: gentoo-dev, Mike Frysinger, toolchain

On Tue, 10 Mar 2020 20:54:12 -0700
Manoj Gupta <manojgupta@google.com> wrote:

> On Tue, Mar 3, 2020 at 1:17 AM Sergei Trofimovich <slyfox@gentoo.org> wrote:
> 
> > On Mon, 2 Mar 2020 19:03:48 -0800
> > Manoj Gupta <manojgupta@google.com> wrote:
> >  
> > > On Thu, Feb 27, 2020 at 11:20 PM Sergei Trofimovich <slyich@gmail.com>
> > > wrote:
> > >  
> > > > On Thu, 27 Feb 2020 at 22:41, Manoj Gupta <manojgupta@google.com>  
> > wrote:  
> > > > >
> > > > >
> > > > >
> > > > > On Thu, Feb 27, 2020 at 11:22 AM Manoj Gupta <manojgupta@google.com>  
> >  
> > > > wrote:  
> > > > >>
> > > > >> gcc-config installs cc/f77 by default. This may be undesired on
> > > > >> systems that want to set their own versions of cc/f77.
> > > > >>
> > > > >> Add option "-n"/"--no-default-vars" to not install the cc/f77
> > > > >> wrappers.
> > > > >>
> > > > >> Signed-off-by: Manoj Gupta <manojgupta@google.com>
> > > > >> ---
> > > > >>  gcc-config | 6 +++++-
> > > > >>  1 file changed, 5 insertions(+), 1 deletion(-)
> > > > >>
> > > > >> diff --git a/gcc-config b/gcc-config
> > > > >> index f03a46a..6f306db 100755
> > > > >> --- a/gcc-config
> > > > >> +++ b/gcc-config
> > > > >> @@ -262,7 +262,7 @@ update_wrappers() {
> > > > >>         # For all toolchains, we want to create the fully qualified
> > > > >>         # `tuple-foo`.  Only native ones do we want the simple  
> > `foo`.  
> > > > >>         local all_wrappers=( ${new_wrappers[@]/#/${CTARGET}-} )
> > > > >> -       if ! is_cross_compiler ; then
> > > > >> +       if ! is_cross_compiler && [[ "${DEFAULT_PROGS}" == "yes"  
> > ]];  
> > > > then  
> > > > >>                 all_wrappers+=( "${new_wrappers[@]}" )
> > > > >>                 # There are a few fun extra progs which we have to  
> > > > handle #412319  
> > > > >>                 all_wrappers+=( cc:gcc f77:g77 )
> > > > >> @@ -951,6 +951,7 @@ FORCE="no"
> > > > >>  CC_COMP=
> > > > >>  ENV_D="${EROOT}etc/env.d"
> > > > >>  GCC_ENV_D="${ENV_D}/gcc"
> > > > >> +DEFAULT_PROGS="yes"
> > > > >>
> > > > >>  for x in "$@" ; do
> > > > >>         case "${x}" in
> > > > >> @@ -972,6 +973,9 @@ for x in "$@" ; do
> > > > >>                 -l|--list-profiles)
> > > > >>                         set_doit list_profiles
> > > > >>                         ;;
> > > > >> +               -n|--no-default-vars)
> > > > >> +                       DEFAULT_PROGS="no"
> > > > >> +                       ;;
> > > > >>                 -S|--split-profile)
> > > > >>                         if [[ ( $1 != "-S" && $1 !=  
> > "--split-profile" )  
> > > > || $# -eq 1 ]] ; then  
> > > > >>                                 usage 1
> > > > >> --
> > > > >>  
> > > > >
> > > > > Not sure of the correct mailing list for patches to gcc-config so  
> > also  
> > > > adding toolchain@gentoo .  
> > > > >  
> > > >
> > > > toolchain@gentoo.org should generally be fine.
> > > >
> > > > Today cc->gcc and gcc->${CHOST}-gcc symlinks are effectively owned by
> > > > a single sys-devel/gcc-config package.
> > > > gcc-config is calld to update symlinks every time sys-devel/gcc is
> > > > installed/updated. That way we never get cc/gcc
> > > > out of sync.
> > > >
> > > > Your change makes /usr/bin/cc an orphan symlink. I think we need to
> > > > still keep a 'cc'/'f77' ownership somewhere
> > > > (say, a separate package).
> > > >
> > > > I suggest making a decision to handle or not handle 'cc'/'f77' and
> > > > gcc-config build-time, not gcc-config call-time.
> > > > That way sys-devel/gcc updates will behave the same as manual
> > > > 'gcc-config-' calls.
> > > >
> > > > Mechanically that could be a Makefile variable that switches the
> > > > behaviour on/off at
> > > > https://gitweb.gentoo.org/proj/gcc-config.git/tree/Makefile
> > > > and exposed as an USE flag on sys-devel/gcc-config ebuild.
> > > >
> > > > Later we can create a separate ebuild to manage /usr/bin/cc. For gcc
> > > > it's not hard, as gcc-config always provides /usr/bin/gcc and
> > > > /usr/bin/${CHOST}-gcc.
> > > > These can be static symlinks that don't require maintenance updates.
> > > >
> > > > Thanks for the suggestion. I will look into adding a Makefile  
> > variable  
> > > exposed via an USE flag.  
> >
> > You might also need to look in the detail at 'c++', 'cpp' and ${CHOST}-*
> > equivalents
> > as those also get linked by gcc-config:
> >
> > $ LANG=C ls -l /usr/bin/ | fgrep 10.0.1 | fgrep -v -- '-10.0.1 ->'
> > lrwxrwxrwx   1 root root           43 Feb  4 10:45 c++ ->
> > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/c++
> > lrwxrwxrwx   1 root root           43 Feb  4 10:45 cc ->
> > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc
> > lrwxrwxrwx   1 root root           43 Feb  4 10:45 cpp ->
> > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/cpp
> > lrwxrwxrwx   1 root root           43 Feb  4 10:45 g++ ->
> > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/g++
> > lrwxrwxrwx   1 root root           43 Feb  4 10:45 gcc ->
> > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc
> > lrwxrwxrwx   1 root root           46 Feb  4 10:45 gcc-ar ->
> > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc-ar
> > lrwxrwxrwx   1 root root           46 Feb  4 10:45 gcc-nm ->
> > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc-nm
> > lrwxrwxrwx   1 root root           50 Feb  4 10:45 gcc-ranlib ->
> > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc-ranlib
> > lrwxrwxrwx   1 root root           45 Feb  4 10:45 gccgo ->
> > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gccgo
> > lrwxrwxrwx   1 root root           44 Feb  4 10:45 gcov ->
> > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov
> > lrwxrwxrwx   1 root root           49 Feb  4 10:45 gcov-dump ->
> > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov-dump
> > lrwxrwxrwx   1 root root           49 Feb  4 10:45 gcov-tool ->
> > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov-tool
> > lrwxrwxrwx   1 root root           48 Feb  4 10:45 gfortran ->
> > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gfortran
> > lrwxrwxrwx   1 root root           45 Feb  4 10:45 go-10 ->
> > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/go-10
> > lrwxrwxrwx   1 root root           48 Feb  4 10:45 gofmt-10 ->
> > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gofmt-10
> > lrwxrwxrwx   1 root root           48 Feb  4 10:45 lto-dump ->
> > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/lto-dump
> > lrwxrwxrwx   1 root root           63 Feb  4 10:45 x86_64-pc-linux-gnu-c++  
> > -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-c++  
> > lrwxrwxrwx   1 root root           63 Feb  4 10:45 x86_64-pc-linux-gnu-cpp  
> > -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-cpp  
> > lrwxrwxrwx   1 root root           63 Feb  4 10:45 x86_64-pc-linux-gnu-g++  
> > -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-g++  
> > lrwxrwxrwx   1 root root           63 Feb  4 10:45 x86_64-pc-linux-gnu-gcc  
> > -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcc  
> > lrwxrwxrwx   1 root root           66 Feb  4 10:45
> > x86_64-pc-linux-gnu-gcc-ar ->
> > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcc-ar
> > lrwxrwxrwx   1 root root           66 Feb  4 10:45
> > x86_64-pc-linux-gnu-gcc-nm ->
> > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcc-nm
> > lrwxrwxrwx   1 root root           70 Feb  4 10:45
> > x86_64-pc-linux-gnu-gcc-ranlib ->
> > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcc-ranlib
> > lrwxrwxrwx   1 root root           65 Feb  4 10:45
> > x86_64-pc-linux-gnu-gccgo ->
> > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gccgo
> > lrwxrwxrwx   1 root root           64 Feb  4 10:45
> > x86_64-pc-linux-gnu-gcov ->
> > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcov
> > lrwxrwxrwx   1 root root           49 Feb  4 10:45
> > x86_64-pc-linux-gnu-gcov-dump ->
> > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov-dump
> > lrwxrwxrwx   1 root root           49 Feb  4 10:45
> > x86_64-pc-linux-gnu-gcov-tool ->
> > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov-tool
> > lrwxrwxrwx   1 root root           68 Feb  4 10:45
> > x86_64-pc-linux-gnu-gfortran ->
> > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gfortran
> > lrwxrwxrwx   1 root root           45 Feb  4 10:45
> > x86_64-pc-linux-gnu-go-10 -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/go-10
> > lrwxrwxrwx   1 root root           48 Feb  4 10:45
> > x86_64-pc-linux-gnu-gofmt-10 ->
> > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gofmt-10
> > lrwxrwxrwx   1 root root           48 Feb  4 10:45
> > x86_64-pc-linux-gnu-lto-dump ->
> > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/lto-dump
> >  
> > > Regarding the separate ebuild, I hope someone more knowledgeable
> > > than me regarding ebuilds can handle that.  
> >
> > How do you plan to manage those symlinks meanwhile?
> >
> > I guess there is a confusion in the scope of change I want to do.  
> 
> GCC package does not provide cc and f77 binaries or symlinks. These are
> provided by the gcc-config
> which adds /usr/bin/cc and /usr/bin/f77.
> These are not needed for building packages via portage but were added
> in https://bugs.gentoo.org/412319 just because it is nice to ensure that
> invocations like
> $ make
> work as is without setting CC explicitly e.g.
>  $ CC=gcc make

I'm afraid "not needed" is desired but not strictly true. I keep seeing
packages that use 'cc' accidentally (dev-util/radare2) or explicitly.
Don't know if most of them can safely fall back to 'gcc' at ./configure
time. I suspect many don't.

> I only want to change gcc-config to NOT create /usr/bin/cc and /usr/bin/f77
> via an option.
> Everything else stays unchanged.

I see.  Initially you said you want to set your own 'cc' and 'f77' wrapper.
Can you clarify what is the motivation to change only a subset of programs?
Maybe describe whole intended setup?

It feels very dangerous to have 'cc' point to one compiler (manually set)
and 'c99' to another ('gcc').
We will start producing more inconsistent environments than we do today.

Not installing 'cc'/'f77' at all might be less bad.

-- 

  Sergei


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [gentoo-dev] Re: [PATCH] gcc-config: Add option to not install cc/f77 wrappers.
  2020-03-11  7:49           ` Sergei Trofimovich
@ 2020-03-11 16:07             ` Manoj Gupta
  2020-05-26 22:13               ` Manoj Gupta
  0 siblings, 1 reply; 9+ messages in thread
From: Manoj Gupta @ 2020-03-11 16:07 UTC (permalink / raw
  To: Sergei Trofimovich; +Cc: gentoo-dev, Mike Frysinger, toolchain

[-- Attachment #1: Type: text/plain, Size: 11088 bytes --]

On Wed, Mar 11, 2020 at 12:49 AM Sergei Trofimovich <slyfox@gentoo.org>
wrote:

> On Tue, 10 Mar 2020 20:54:12 -0700
> Manoj Gupta <manojgupta@google.com> wrote:
>
> > On Tue, Mar 3, 2020 at 1:17 AM Sergei Trofimovich <slyfox@gentoo.org>
> wrote:
> >
> > > On Mon, 2 Mar 2020 19:03:48 -0800
> > > Manoj Gupta <manojgupta@google.com> wrote:
> > >
> > > > On Thu, Feb 27, 2020 at 11:20 PM Sergei Trofimovich <
> slyich@gmail.com>
> > > > wrote:
> > > >
> > > > > On Thu, 27 Feb 2020 at 22:41, Manoj Gupta <manojgupta@google.com>
>
> > > wrote:
> > > > > >
> > > > > >
> > > > > >
> > > > > > On Thu, Feb 27, 2020 at 11:22 AM Manoj Gupta <
> manojgupta@google.com>
> > >
> > > > > wrote:
> > > > > >>
> > > > > >> gcc-config installs cc/f77 by default. This may be undesired on
> > > > > >> systems that want to set their own versions of cc/f77.
> > > > > >>
> > > > > >> Add option "-n"/"--no-default-vars" to not install the cc/f77
> > > > > >> wrappers.
> > > > > >>
> > > > > >> Signed-off-by: Manoj Gupta <manojgupta@google.com>
> > > > > >> ---
> > > > > >>  gcc-config | 6 +++++-
> > > > > >>  1 file changed, 5 insertions(+), 1 deletion(-)
> > > > > >>
> > > > > >> diff --git a/gcc-config b/gcc-config
> > > > > >> index f03a46a..6f306db 100755
> > > > > >> --- a/gcc-config
> > > > > >> +++ b/gcc-config
> > > > > >> @@ -262,7 +262,7 @@ update_wrappers() {
> > > > > >>         # For all toolchains, we want to create the fully
> qualified
> > > > > >>         # `tuple-foo`.  Only native ones do we want the simple
> > > `foo`.
> > > > > >>         local all_wrappers=( ${new_wrappers[@]/#/${CTARGET}-} )
> > > > > >> -       if ! is_cross_compiler ; then
> > > > > >> +       if ! is_cross_compiler && [[ "${DEFAULT_PROGS}" ==
> "yes"
> > > ]];
> > > > > then
> > > > > >>                 all_wrappers+=( "${new_wrappers[@]}" )
> > > > > >>                 # There are a few fun extra progs which we have
> to
> > > > > handle #412319
> > > > > >>                 all_wrappers+=( cc:gcc f77:g77 )
> > > > > >> @@ -951,6 +951,7 @@ FORCE="no"
> > > > > >>  CC_COMP=
> > > > > >>  ENV_D="${EROOT}etc/env.d"
> > > > > >>  GCC_ENV_D="${ENV_D}/gcc"
> > > > > >> +DEFAULT_PROGS="yes"
> > > > > >>
> > > > > >>  for x in "$@" ; do
> > > > > >>         case "${x}" in
> > > > > >> @@ -972,6 +973,9 @@ for x in "$@" ; do
> > > > > >>                 -l|--list-profiles)
> > > > > >>                         set_doit list_profiles
> > > > > >>                         ;;
> > > > > >> +               -n|--no-default-vars)
> > > > > >> +                       DEFAULT_PROGS="no"
> > > > > >> +                       ;;
> > > > > >>                 -S|--split-profile)
> > > > > >>                         if [[ ( $1 != "-S" && $1 !=
> > > "--split-profile" )
> > > > > || $# -eq 1 ]] ; then
> > > > > >>                                 usage 1
> > > > > >> --
> > > > > >>
> > > > > >
> > > > > > Not sure of the correct mailing list for patches to gcc-config
> so
> > > also
> > > > > adding toolchain@gentoo .
> > > > > >
> > > > >
> > > > > toolchain@gentoo.org should generally be fine.
> > > > >
> > > > > Today cc->gcc and gcc->${CHOST}-gcc symlinks are effectively owned
> by
> > > > > a single sys-devel/gcc-config package.
> > > > > gcc-config is calld to update symlinks every time sys-devel/gcc is
> > > > > installed/updated. That way we never get cc/gcc
> > > > > out of sync.
> > > > >
> > > > > Your change makes /usr/bin/cc an orphan symlink. I think we need to
> > > > > still keep a 'cc'/'f77' ownership somewhere
> > > > > (say, a separate package).
> > > > >
> > > > > I suggest making a decision to handle or not handle 'cc'/'f77' and
> > > > > gcc-config build-time, not gcc-config call-time.
> > > > > That way sys-devel/gcc updates will behave the same as manual
> > > > > 'gcc-config-' calls.
> > > > >
> > > > > Mechanically that could be a Makefile variable that switches the
> > > > > behaviour on/off at
> > > > > https://gitweb.gentoo.org/proj/gcc-config.git/tree/Makefile
> > > > > and exposed as an USE flag on sys-devel/gcc-config ebuild.
> > > > >
> > > > > Later we can create a separate ebuild to manage /usr/bin/cc. For
> gcc
> > > > > it's not hard, as gcc-config always provides /usr/bin/gcc and
> > > > > /usr/bin/${CHOST}-gcc.
> > > > > These can be static symlinks that don't require maintenance
> updates.
> > > > >
> > > > > Thanks for the suggestion. I will look into adding a Makefile
> > > variable
> > > > exposed via an USE flag.
> > >
> > > You might also need to look in the detail at 'c++', 'cpp' and
> ${CHOST}-*
> > > equivalents
> > > as those also get linked by gcc-config:
> > >
> > > $ LANG=C ls -l /usr/bin/ | fgrep 10.0.1 | fgrep -v -- '-10.0.1 ->'
> > > lrwxrwxrwx   1 root root           43 Feb  4 10:45 c++ ->
> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/c++
> > > lrwxrwxrwx   1 root root           43 Feb  4 10:45 cc ->
> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc
> > > lrwxrwxrwx   1 root root           43 Feb  4 10:45 cpp ->
> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/cpp
> > > lrwxrwxrwx   1 root root           43 Feb  4 10:45 g++ ->
> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/g++
> > > lrwxrwxrwx   1 root root           43 Feb  4 10:45 gcc ->
> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc
> > > lrwxrwxrwx   1 root root           46 Feb  4 10:45 gcc-ar ->
> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc-ar
> > > lrwxrwxrwx   1 root root           46 Feb  4 10:45 gcc-nm ->
> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc-nm
> > > lrwxrwxrwx   1 root root           50 Feb  4 10:45 gcc-ranlib ->
> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc-ranlib
> > > lrwxrwxrwx   1 root root           45 Feb  4 10:45 gccgo ->
> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gccgo
> > > lrwxrwxrwx   1 root root           44 Feb  4 10:45 gcov ->
> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov
> > > lrwxrwxrwx   1 root root           49 Feb  4 10:45 gcov-dump ->
> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov-dump
> > > lrwxrwxrwx   1 root root           49 Feb  4 10:45 gcov-tool ->
> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov-tool
> > > lrwxrwxrwx   1 root root           48 Feb  4 10:45 gfortran ->
> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gfortran
> > > lrwxrwxrwx   1 root root           45 Feb  4 10:45 go-10 ->
> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/go-10
> > > lrwxrwxrwx   1 root root           48 Feb  4 10:45 gofmt-10 ->
> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gofmt-10
> > > lrwxrwxrwx   1 root root           48 Feb  4 10:45 lto-dump ->
> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/lto-dump
> > > lrwxrwxrwx   1 root root           63 Feb  4 10:45
> x86_64-pc-linux-gnu-c++
> > > -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-c++
> > > lrwxrwxrwx   1 root root           63 Feb  4 10:45
> x86_64-pc-linux-gnu-cpp
> > > -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-cpp
> > > lrwxrwxrwx   1 root root           63 Feb  4 10:45
> x86_64-pc-linux-gnu-g++
> > > -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-g++
> > > lrwxrwxrwx   1 root root           63 Feb  4 10:45
> x86_64-pc-linux-gnu-gcc
> > > -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcc
> > > lrwxrwxrwx   1 root root           66 Feb  4 10:45
> > > x86_64-pc-linux-gnu-gcc-ar ->
> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcc-ar
> > > lrwxrwxrwx   1 root root           66 Feb  4 10:45
> > > x86_64-pc-linux-gnu-gcc-nm ->
> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcc-nm
> > > lrwxrwxrwx   1 root root           70 Feb  4 10:45
> > > x86_64-pc-linux-gnu-gcc-ranlib ->
> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcc-ranlib
> > > lrwxrwxrwx   1 root root           65 Feb  4 10:45
> > > x86_64-pc-linux-gnu-gccgo ->
> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gccgo
> > > lrwxrwxrwx   1 root root           64 Feb  4 10:45
> > > x86_64-pc-linux-gnu-gcov ->
> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcov
> > > lrwxrwxrwx   1 root root           49 Feb  4 10:45
> > > x86_64-pc-linux-gnu-gcov-dump ->
> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov-dump
> > > lrwxrwxrwx   1 root root           49 Feb  4 10:45
> > > x86_64-pc-linux-gnu-gcov-tool ->
> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov-tool
> > > lrwxrwxrwx   1 root root           68 Feb  4 10:45
> > > x86_64-pc-linux-gnu-gfortran ->
> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gfortran
> > > lrwxrwxrwx   1 root root           45 Feb  4 10:45
> > > x86_64-pc-linux-gnu-go-10 ->
> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/go-10
> > > lrwxrwxrwx   1 root root           48 Feb  4 10:45
> > > x86_64-pc-linux-gnu-gofmt-10 ->
> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gofmt-10
> > > lrwxrwxrwx   1 root root           48 Feb  4 10:45
> > > x86_64-pc-linux-gnu-lto-dump ->
> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/lto-dump
> > >
> > > > Regarding the separate ebuild, I hope someone more knowledgeable
> > > > than me regarding ebuilds can handle that.
> > >
> > > How do you plan to manage those symlinks meanwhile?
> > >
> > > I guess there is a confusion in the scope of change I want to do.
> >
> > GCC package does not provide cc and f77 binaries or symlinks. These are
> > provided by the gcc-config
> > which adds /usr/bin/cc and /usr/bin/f77.
> > These are not needed for building packages via portage but were added
> > in https://bugs.gentoo.org/412319 just because it is nice to ensure that
> > invocations like
> > $ make
> > work as is without setting CC explicitly e.g.
> >  $ CC=gcc make
>
> I'm afraid "not needed" is desired but not strictly true. I keep seeing
> packages that use 'cc' accidentally (dev-util/radare2) or explicitly.
> Don't know if most of them can safely fall back to 'gcc' at ./configure
> time. I suspect many don't.
>
> > I only want to change gcc-config to NOT create /usr/bin/cc and
> /usr/bin/f77
> > via an option.
> > Everything else stays unchanged.
>
> I see.  Initially you said you want to set your own 'cc' and 'f77' wrapper.
> Can you clarify what is the motivation to change only a subset of programs?
> Maybe describe whole intended setup?
>
> This is only for Chrome OS setup where I want to  switch "cc" to point to
clang or a different compiler (Switching will be done using a
different ebuild not used in Gentoo).
I do not want to disturb Gentoo's current setup in any way other than
adding an option to "gcc-config"
that will serve our needs.

It feels very dangerous to have 'cc' point to one compiler (manually set)
> and 'c99' to another ('gcc').
> We will start producing more inconsistent environments than we do today.
>
> Not installing 'cc'/'f77' at all might be less bad.
>

Yes, this is exactly what I'd like but some internal teams want '$ make' to
work
as is. This option to "not install" these links will be a good first step
to find out
if there are any packages relying on 'cc' being present in Chrome OS builds.

Thanks,
Manoj


> --
>
>   Sergei
>

[-- Attachment #2: Type: text/html, Size: 16176 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [gentoo-dev] Re: [PATCH] gcc-config: Add option to not install cc/f77 wrappers.
  2020-03-11 16:07             ` Manoj Gupta
@ 2020-05-26 22:13               ` Manoj Gupta
  2020-05-26 22:38                 ` Sergei Trofimovich
  0 siblings, 1 reply; 9+ messages in thread
From: Manoj Gupta @ 2020-05-26 22:13 UTC (permalink / raw
  To: Sergei Trofimovich; +Cc: gentoo-dev, Mike Frysinger, toolchain

[-- Attachment #1: Type: text/plain, Size: 11695 bytes --]

I noticed that gcc-config recently gained --enable-native-links /
--disable-native-links knobs that are . Will this patch with a renamed
option name
e.g. --disable-default-cc-vars and support for a USE flag work?

Thanks,
Manoj

On Wed, Mar 11, 2020 at 9:07 AM Manoj Gupta <manojgupta@google.com> wrote:

>
>
> On Wed, Mar 11, 2020 at 12:49 AM Sergei Trofimovich <slyfox@gentoo.org>
> wrote:
>
>> On Tue, 10 Mar 2020 20:54:12 -0700
>> Manoj Gupta <manojgupta@google.com> wrote:
>>
>> > On Tue, Mar 3, 2020 at 1:17 AM Sergei Trofimovich <slyfox@gentoo.org>
>> wrote:
>> >
>> > > On Mon, 2 Mar 2020 19:03:48 -0800
>> > > Manoj Gupta <manojgupta@google.com> wrote:
>> > >
>> > > > On Thu, Feb 27, 2020 at 11:20 PM Sergei Trofimovich <
>> slyich@gmail.com>
>> > > > wrote:
>> > > >
>> > > > > On Thu, 27 Feb 2020 at 22:41, Manoj Gupta <manojgupta@google.com>
>>
>> > > wrote:
>> > > > > >
>> > > > > >
>> > > > > >
>> > > > > > On Thu, Feb 27, 2020 at 11:22 AM Manoj Gupta <
>> manojgupta@google.com>
>> > >
>> > > > > wrote:
>> > > > > >>
>> > > > > >> gcc-config installs cc/f77 by default. This may be undesired on
>> > > > > >> systems that want to set their own versions of cc/f77.
>> > > > > >>
>> > > > > >> Add option "-n"/"--no-default-vars" to not install the cc/f77
>> > > > > >> wrappers.
>> > > > > >>
>> > > > > >> Signed-off-by: Manoj Gupta <manojgupta@google.com>
>> > > > > >> ---
>> > > > > >>  gcc-config | 6 +++++-
>> > > > > >>  1 file changed, 5 insertions(+), 1 deletion(-)
>> > > > > >>
>> > > > > >> diff --git a/gcc-config b/gcc-config
>> > > > > >> index f03a46a..6f306db 100755
>> > > > > >> --- a/gcc-config
>> > > > > >> +++ b/gcc-config
>> > > > > >> @@ -262,7 +262,7 @@ update_wrappers() {
>> > > > > >>         # For all toolchains, we want to create the fully
>> qualified
>> > > > > >>         # `tuple-foo`.  Only native ones do we want the
>> simple
>> > > `foo`.
>> > > > > >>         local all_wrappers=( ${new_wrappers[@]/#/${CTARGET}-} )
>> > > > > >> -       if ! is_cross_compiler ; then
>> > > > > >> +       if ! is_cross_compiler && [[ "${DEFAULT_PROGS}" ==
>> "yes"
>> > > ]];
>> > > > > then
>> > > > > >>                 all_wrappers+=( "${new_wrappers[@]}" )
>> > > > > >>                 # There are a few fun extra progs which we
>> have to
>> > > > > handle #412319
>> > > > > >>                 all_wrappers+=( cc:gcc f77:g77 )
>> > > > > >> @@ -951,6 +951,7 @@ FORCE="no"
>> > > > > >>  CC_COMP=
>> > > > > >>  ENV_D="${EROOT}etc/env.d"
>> > > > > >>  GCC_ENV_D="${ENV_D}/gcc"
>> > > > > >> +DEFAULT_PROGS="yes"
>> > > > > >>
>> > > > > >>  for x in "$@" ; do
>> > > > > >>         case "${x}" in
>> > > > > >> @@ -972,6 +973,9 @@ for x in "$@" ; do
>> > > > > >>                 -l|--list-profiles)
>> > > > > >>                         set_doit list_profiles
>> > > > > >>                         ;;
>> > > > > >> +               -n|--no-default-vars)
>> > > > > >> +                       DEFAULT_PROGS="no"
>> > > > > >> +                       ;;
>> > > > > >>                 -S|--split-profile)
>> > > > > >>                         if [[ ( $1 != "-S" && $1 !=
>> > > "--split-profile" )
>> > > > > || $# -eq 1 ]] ; then
>> > > > > >>                                 usage 1
>> > > > > >> --
>> > > > > >>
>> > > > > >
>> > > > > > Not sure of the correct mailing list for patches to gcc-config
>> so
>> > > also
>> > > > > adding toolchain@gentoo .
>> > > > > >
>> > > > >
>> > > > > toolchain@gentoo.org should generally be fine.
>> > > > >
>> > > > > Today cc->gcc and gcc->${CHOST}-gcc symlinks are effectively
>> owned by
>> > > > > a single sys-devel/gcc-config package.
>> > > > > gcc-config is calld to update symlinks every time sys-devel/gcc is
>> > > > > installed/updated. That way we never get cc/gcc
>> > > > > out of sync.
>> > > > >
>> > > > > Your change makes /usr/bin/cc an orphan symlink. I think we need
>> to
>> > > > > still keep a 'cc'/'f77' ownership somewhere
>> > > > > (say, a separate package).
>> > > > >
>> > > > > I suggest making a decision to handle or not handle 'cc'/'f77' and
>> > > > > gcc-config build-time, not gcc-config call-time.
>> > > > > That way sys-devel/gcc updates will behave the same as manual
>> > > > > 'gcc-config-' calls.
>> > > > >
>> > > > > Mechanically that could be a Makefile variable that switches the
>> > > > > behaviour on/off at
>> > > > > https://gitweb.gentoo.org/proj/gcc-config.git/tree/Makefile
>> > > > > and exposed as an USE flag on sys-devel/gcc-config ebuild.
>> > > > >
>> > > > > Later we can create a separate ebuild to manage /usr/bin/cc. For
>> gcc
>> > > > > it's not hard, as gcc-config always provides /usr/bin/gcc and
>> > > > > /usr/bin/${CHOST}-gcc.
>> > > > > These can be static symlinks that don't require maintenance
>> updates.
>> > > > >
>> > > > > Thanks for the suggestion. I will look into adding a Makefile
>> > > variable
>> > > > exposed via an USE flag.
>> > >
>> > > You might also need to look in the detail at 'c++', 'cpp' and
>> ${CHOST}-*
>> > > equivalents
>> > > as those also get linked by gcc-config:
>> > >
>> > > $ LANG=C ls -l /usr/bin/ | fgrep 10.0.1 | fgrep -v -- '-10.0.1 ->'
>> > > lrwxrwxrwx   1 root root           43 Feb  4 10:45 c++ ->
>> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/c++
>> > > lrwxrwxrwx   1 root root           43 Feb  4 10:45 cc ->
>> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc
>> > > lrwxrwxrwx   1 root root           43 Feb  4 10:45 cpp ->
>> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/cpp
>> > > lrwxrwxrwx   1 root root           43 Feb  4 10:45 g++ ->
>> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/g++
>> > > lrwxrwxrwx   1 root root           43 Feb  4 10:45 gcc ->
>> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc
>> > > lrwxrwxrwx   1 root root           46 Feb  4 10:45 gcc-ar ->
>> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc-ar
>> > > lrwxrwxrwx   1 root root           46 Feb  4 10:45 gcc-nm ->
>> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc-nm
>> > > lrwxrwxrwx   1 root root           50 Feb  4 10:45 gcc-ranlib ->
>> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc-ranlib
>> > > lrwxrwxrwx   1 root root           45 Feb  4 10:45 gccgo ->
>> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gccgo
>> > > lrwxrwxrwx   1 root root           44 Feb  4 10:45 gcov ->
>> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov
>> > > lrwxrwxrwx   1 root root           49 Feb  4 10:45 gcov-dump ->
>> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov-dump
>> > > lrwxrwxrwx   1 root root           49 Feb  4 10:45 gcov-tool ->
>> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov-tool
>> > > lrwxrwxrwx   1 root root           48 Feb  4 10:45 gfortran ->
>> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gfortran
>> > > lrwxrwxrwx   1 root root           45 Feb  4 10:45 go-10 ->
>> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/go-10
>> > > lrwxrwxrwx   1 root root           48 Feb  4 10:45 gofmt-10 ->
>> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gofmt-10
>> > > lrwxrwxrwx   1 root root           48 Feb  4 10:45 lto-dump ->
>> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/lto-dump
>> > > lrwxrwxrwx   1 root root           63 Feb  4 10:45
>> x86_64-pc-linux-gnu-c++
>> > > -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-c++
>> > > lrwxrwxrwx   1 root root           63 Feb  4 10:45
>> x86_64-pc-linux-gnu-cpp
>> > > -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-cpp
>> > > lrwxrwxrwx   1 root root           63 Feb  4 10:45
>> x86_64-pc-linux-gnu-g++
>> > > -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-g++
>> > > lrwxrwxrwx   1 root root           63 Feb  4 10:45
>> x86_64-pc-linux-gnu-gcc
>> > > -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcc
>> > > lrwxrwxrwx   1 root root           66 Feb  4 10:45
>> > > x86_64-pc-linux-gnu-gcc-ar ->
>> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcc-ar
>> > > lrwxrwxrwx   1 root root           66 Feb  4 10:45
>> > > x86_64-pc-linux-gnu-gcc-nm ->
>> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcc-nm
>> > > lrwxrwxrwx   1 root root           70 Feb  4 10:45
>> > > x86_64-pc-linux-gnu-gcc-ranlib ->
>> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcc-ranlib
>> > > lrwxrwxrwx   1 root root           65 Feb  4 10:45
>> > > x86_64-pc-linux-gnu-gccgo ->
>> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gccgo
>> > > lrwxrwxrwx   1 root root           64 Feb  4 10:45
>> > > x86_64-pc-linux-gnu-gcov ->
>> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcov
>> > > lrwxrwxrwx   1 root root           49 Feb  4 10:45
>> > > x86_64-pc-linux-gnu-gcov-dump ->
>> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov-dump
>> > > lrwxrwxrwx   1 root root           49 Feb  4 10:45
>> > > x86_64-pc-linux-gnu-gcov-tool ->
>> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov-tool
>> > > lrwxrwxrwx   1 root root           68 Feb  4 10:45
>> > > x86_64-pc-linux-gnu-gfortran ->
>> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gfortran
>> > > lrwxrwxrwx   1 root root           45 Feb  4 10:45
>> > > x86_64-pc-linux-gnu-go-10 ->
>> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/go-10
>> > > lrwxrwxrwx   1 root root           48 Feb  4 10:45
>> > > x86_64-pc-linux-gnu-gofmt-10 ->
>> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gofmt-10
>> > > lrwxrwxrwx   1 root root           48 Feb  4 10:45
>> > > x86_64-pc-linux-gnu-lto-dump ->
>> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/lto-dump
>> > >
>> > > > Regarding the separate ebuild, I hope someone more knowledgeable
>> > > > than me regarding ebuilds can handle that.
>> > >
>> > > How do you plan to manage those symlinks meanwhile?
>> > >
>> > > I guess there is a confusion in the scope of change I want to do.
>> >
>> > GCC package does not provide cc and f77 binaries or symlinks. These are
>> > provided by the gcc-config
>> > which adds /usr/bin/cc and /usr/bin/f77.
>> > These are not needed for building packages via portage but were added
>> > in https://bugs.gentoo.org/412319 just because it is nice to ensure
>> that
>> > invocations like
>> > $ make
>> > work as is without setting CC explicitly e.g.
>> >  $ CC=gcc make
>>
>> I'm afraid "not needed" is desired but not strictly true. I keep seeing
>> packages that use 'cc' accidentally (dev-util/radare2) or explicitly.
>> Don't know if most of them can safely fall back to 'gcc' at ./configure
>> time. I suspect many don't.
>>
>> > I only want to change gcc-config to NOT create /usr/bin/cc and
>> /usr/bin/f77
>> > via an option.
>> > Everything else stays unchanged.
>>
>> I see.  Initially you said you want to set your own 'cc' and 'f77'
>> wrapper.
>> Can you clarify what is the motivation to change only a subset of
>> programs?
>> Maybe describe whole intended setup?
>>
>> This is only for Chrome OS setup where I want to  switch "cc" to point to
> clang or a different compiler (Switching will be done using a
> different ebuild not used in Gentoo).
> I do not want to disturb Gentoo's current setup in any way other than
> adding an option to "gcc-config"
> that will serve our needs.
>
> It feels very dangerous to have 'cc' point to one compiler (manually set)
>> and 'c99' to another ('gcc').
>> We will start producing more inconsistent environments than we do today.
>>
>> Not installing 'cc'/'f77' at all might be less bad.
>>
>
> Yes, this is exactly what I'd like but some internal teams want '$ make'
> to work
> as is. This option to "not install" these links will be a good first step
> to find out
> if there are any packages relying on 'cc' being present in Chrome OS
> builds.
>
> Thanks,
> Manoj
>
>
>> --
>>
>>   Sergei
>>
>

[-- Attachment #2: Type: text/html, Size: 16826 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [gentoo-dev] Re: [PATCH] gcc-config: Add option to not install cc/f77 wrappers.
  2020-05-26 22:13               ` Manoj Gupta
@ 2020-05-26 22:38                 ` Sergei Trofimovich
  0 siblings, 0 replies; 9+ messages in thread
From: Sergei Trofimovich @ 2020-05-26 22:38 UTC (permalink / raw
  To: Manoj Gupta; +Cc: gentoo-dev, Mike Frysinger, toolchain

On Tue, 26 May 2020 15:13:47 -0700
Manoj Gupta <manojgupta@google.com> wrote:

> I noticed that gcc-config recently gained --enable-native-links /
> --disable-native-links knobs that are . Will this patch with a renamed
> option name
> e.g. --disable-default-cc-vars and support for a USE flag work?

That can work. Let's try and see how the end result looks like.

> Thanks,
> Manoj
> 
> On Wed, Mar 11, 2020 at 9:07 AM Manoj Gupta <manojgupta@google.com> wrote:
> 
> >
> >
> > On Wed, Mar 11, 2020 at 12:49 AM Sergei Trofimovich <slyfox@gentoo.org>
> > wrote:
> >  
> >> On Tue, 10 Mar 2020 20:54:12 -0700
> >> Manoj Gupta <manojgupta@google.com> wrote:
> >>  
> >> > On Tue, Mar 3, 2020 at 1:17 AM Sergei Trofimovich <slyfox@gentoo.org>  
> >> wrote:  
> >> >  
> >> > > On Mon, 2 Mar 2020 19:03:48 -0800
> >> > > Manoj Gupta <manojgupta@google.com> wrote:
> >> > >  
> >> > > > On Thu, Feb 27, 2020 at 11:20 PM Sergei Trofimovich <  
> >> slyich@gmail.com>  
> >> > > > wrote:
> >> > > >  
> >> > > > > On Thu, 27 Feb 2020 at 22:41, Manoj Gupta <manojgupta@google.com>  
> >>  
> >> > > wrote:  
> >> > > > > >
> >> > > > > >
> >> > > > > >
> >> > > > > > On Thu, Feb 27, 2020 at 11:22 AM Manoj Gupta <  
> >> manojgupta@google.com>  
> >> > >  
> >> > > > > wrote:  
> >> > > > > >>
> >> > > > > >> gcc-config installs cc/f77 by default. This may be undesired on
> >> > > > > >> systems that want to set their own versions of cc/f77.
> >> > > > > >>
> >> > > > > >> Add option "-n"/"--no-default-vars" to not install the cc/f77
> >> > > > > >> wrappers.
> >> > > > > >>
> >> > > > > >> Signed-off-by: Manoj Gupta <manojgupta@google.com>
> >> > > > > >> ---
> >> > > > > >>  gcc-config | 6 +++++-
> >> > > > > >>  1 file changed, 5 insertions(+), 1 deletion(-)
> >> > > > > >>
> >> > > > > >> diff --git a/gcc-config b/gcc-config
> >> > > > > >> index f03a46a..6f306db 100755
> >> > > > > >> --- a/gcc-config
> >> > > > > >> +++ b/gcc-config
> >> > > > > >> @@ -262,7 +262,7 @@ update_wrappers() {
> >> > > > > >>         # For all toolchains, we want to create the fully  
> >> qualified  
> >> > > > > >>         # `tuple-foo`.  Only native ones do we want the  
> >> simple  
> >> > > `foo`.  
> >> > > > > >>         local all_wrappers=( ${new_wrappers[@]/#/${CTARGET}-} )
> >> > > > > >> -       if ! is_cross_compiler ; then
> >> > > > > >> +       if ! is_cross_compiler && [[ "${DEFAULT_PROGS}" ==  
> >> "yes"  
> >> > > ]];  
> >> > > > > then  
> >> > > > > >>                 all_wrappers+=( "${new_wrappers[@]}" )
> >> > > > > >>                 # There are a few fun extra progs which we  
> >> have to  
> >> > > > > handle #412319  
> >> > > > > >>                 all_wrappers+=( cc:gcc f77:g77 )
> >> > > > > >> @@ -951,6 +951,7 @@ FORCE="no"
> >> > > > > >>  CC_COMP=
> >> > > > > >>  ENV_D="${EROOT}etc/env.d"
> >> > > > > >>  GCC_ENV_D="${ENV_D}/gcc"
> >> > > > > >> +DEFAULT_PROGS="yes"
> >> > > > > >>
> >> > > > > >>  for x in "$@" ; do
> >> > > > > >>         case "${x}" in
> >> > > > > >> @@ -972,6 +973,9 @@ for x in "$@" ; do
> >> > > > > >>                 -l|--list-profiles)
> >> > > > > >>                         set_doit list_profiles
> >> > > > > >>                         ;;
> >> > > > > >> +               -n|--no-default-vars)
> >> > > > > >> +                       DEFAULT_PROGS="no"
> >> > > > > >> +                       ;;
> >> > > > > >>                 -S|--split-profile)
> >> > > > > >>                         if [[ ( $1 != "-S" && $1 !=  
> >> > > "--split-profile" )  
> >> > > > > || $# -eq 1 ]] ; then  
> >> > > > > >>                                 usage 1
> >> > > > > >> --
> >> > > > > >>  
> >> > > > > >
> >> > > > > > Not sure of the correct mailing list for patches to gcc-config  
> >> so  
> >> > > also  
> >> > > > > adding toolchain@gentoo .  
> >> > > > > >  
> >> > > > >
> >> > > > > toolchain@gentoo.org should generally be fine.
> >> > > > >
> >> > > > > Today cc->gcc and gcc->${CHOST}-gcc symlinks are effectively  
> >> owned by  
> >> > > > > a single sys-devel/gcc-config package.
> >> > > > > gcc-config is calld to update symlinks every time sys-devel/gcc is
> >> > > > > installed/updated. That way we never get cc/gcc
> >> > > > > out of sync.
> >> > > > >
> >> > > > > Your change makes /usr/bin/cc an orphan symlink. I think we need  
> >> to  
> >> > > > > still keep a 'cc'/'f77' ownership somewhere
> >> > > > > (say, a separate package).
> >> > > > >
> >> > > > > I suggest making a decision to handle or not handle 'cc'/'f77' and
> >> > > > > gcc-config build-time, not gcc-config call-time.
> >> > > > > That way sys-devel/gcc updates will behave the same as manual
> >> > > > > 'gcc-config-' calls.
> >> > > > >
> >> > > > > Mechanically that could be a Makefile variable that switches the
> >> > > > > behaviour on/off at
> >> > > > > https://gitweb.gentoo.org/proj/gcc-config.git/tree/Makefile
> >> > > > > and exposed as an USE flag on sys-devel/gcc-config ebuild.
> >> > > > >
> >> > > > > Later we can create a separate ebuild to manage /usr/bin/cc. For  
> >> gcc  
> >> > > > > it's not hard, as gcc-config always provides /usr/bin/gcc and
> >> > > > > /usr/bin/${CHOST}-gcc.
> >> > > > > These can be static symlinks that don't require maintenance  
> >> updates.  
> >> > > > >
> >> > > > > Thanks for the suggestion. I will look into adding a Makefile  
> >> > > variable  
> >> > > > exposed via an USE flag.  
> >> > >
> >> > > You might also need to look in the detail at 'c++', 'cpp' and  
> >> ${CHOST}-*  
> >> > > equivalents
> >> > > as those also get linked by gcc-config:
> >> > >
> >> > > $ LANG=C ls -l /usr/bin/ | fgrep 10.0.1 | fgrep -v -- '-10.0.1 ->'
> >> > > lrwxrwxrwx   1 root root           43 Feb  4 10:45 c++ ->
> >> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/c++
> >> > > lrwxrwxrwx   1 root root           43 Feb  4 10:45 cc ->
> >> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc
> >> > > lrwxrwxrwx   1 root root           43 Feb  4 10:45 cpp ->
> >> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/cpp
> >> > > lrwxrwxrwx   1 root root           43 Feb  4 10:45 g++ ->
> >> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/g++
> >> > > lrwxrwxrwx   1 root root           43 Feb  4 10:45 gcc ->
> >> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc
> >> > > lrwxrwxrwx   1 root root           46 Feb  4 10:45 gcc-ar ->
> >> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc-ar
> >> > > lrwxrwxrwx   1 root root           46 Feb  4 10:45 gcc-nm ->
> >> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc-nm
> >> > > lrwxrwxrwx   1 root root           50 Feb  4 10:45 gcc-ranlib ->
> >> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcc-ranlib
> >> > > lrwxrwxrwx   1 root root           45 Feb  4 10:45 gccgo ->
> >> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gccgo
> >> > > lrwxrwxrwx   1 root root           44 Feb  4 10:45 gcov ->
> >> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov
> >> > > lrwxrwxrwx   1 root root           49 Feb  4 10:45 gcov-dump ->
> >> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov-dump
> >> > > lrwxrwxrwx   1 root root           49 Feb  4 10:45 gcov-tool ->
> >> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov-tool
> >> > > lrwxrwxrwx   1 root root           48 Feb  4 10:45 gfortran ->
> >> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gfortran
> >> > > lrwxrwxrwx   1 root root           45 Feb  4 10:45 go-10 ->
> >> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/go-10
> >> > > lrwxrwxrwx   1 root root           48 Feb  4 10:45 gofmt-10 ->
> >> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gofmt-10
> >> > > lrwxrwxrwx   1 root root           48 Feb  4 10:45 lto-dump ->
> >> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/lto-dump
> >> > > lrwxrwxrwx   1 root root           63 Feb  4 10:45  
> >> x86_64-pc-linux-gnu-c++  
> >> > > -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-c++  
> >> > > lrwxrwxrwx   1 root root           63 Feb  4 10:45  
> >> x86_64-pc-linux-gnu-cpp  
> >> > > -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-cpp  
> >> > > lrwxrwxrwx   1 root root           63 Feb  4 10:45  
> >> x86_64-pc-linux-gnu-g++  
> >> > > -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-g++  
> >> > > lrwxrwxrwx   1 root root           63 Feb  4 10:45  
> >> x86_64-pc-linux-gnu-gcc  
> >> > > -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcc  
> >> > > lrwxrwxrwx   1 root root           66 Feb  4 10:45
> >> > > x86_64-pc-linux-gnu-gcc-ar ->
> >> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcc-ar
> >> > > lrwxrwxrwx   1 root root           66 Feb  4 10:45
> >> > > x86_64-pc-linux-gnu-gcc-nm ->
> >> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcc-nm
> >> > > lrwxrwxrwx   1 root root           70 Feb  4 10:45
> >> > > x86_64-pc-linux-gnu-gcc-ranlib ->
> >> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcc-ranlib
> >> > > lrwxrwxrwx   1 root root           65 Feb  4 10:45
> >> > > x86_64-pc-linux-gnu-gccgo ->
> >> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gccgo
> >> > > lrwxrwxrwx   1 root root           64 Feb  4 10:45
> >> > > x86_64-pc-linux-gnu-gcov ->
> >> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gcov
> >> > > lrwxrwxrwx   1 root root           49 Feb  4 10:45
> >> > > x86_64-pc-linux-gnu-gcov-dump ->
> >> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov-dump
> >> > > lrwxrwxrwx   1 root root           49 Feb  4 10:45
> >> > > x86_64-pc-linux-gnu-gcov-tool ->
> >> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gcov-tool
> >> > > lrwxrwxrwx   1 root root           68 Feb  4 10:45
> >> > > x86_64-pc-linux-gnu-gfortran ->
> >> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/x86_64-pc-linux-gnu-gfortran
> >> > > lrwxrwxrwx   1 root root           45 Feb  4 10:45
> >> > > x86_64-pc-linux-gnu-go-10 ->  
> >> /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/go-10  
> >> > > lrwxrwxrwx   1 root root           48 Feb  4 10:45
> >> > > x86_64-pc-linux-gnu-gofmt-10 ->
> >> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/gofmt-10
> >> > > lrwxrwxrwx   1 root root           48 Feb  4 10:45
> >> > > x86_64-pc-linux-gnu-lto-dump ->
> >> > > /usr/x86_64-pc-linux-gnu/gcc-bin/10.0.1/lto-dump
> >> > >  
> >> > > > Regarding the separate ebuild, I hope someone more knowledgeable
> >> > > > than me regarding ebuilds can handle that.  
> >> > >
> >> > > How do you plan to manage those symlinks meanwhile?
> >> > >
> >> > > I guess there is a confusion in the scope of change I want to do.  
> >> >
> >> > GCC package does not provide cc and f77 binaries or symlinks. These are
> >> > provided by the gcc-config
> >> > which adds /usr/bin/cc and /usr/bin/f77.
> >> > These are not needed for building packages via portage but were added
> >> > in https://bugs.gentoo.org/412319 just because it is nice to ensure  
> >> that  
> >> > invocations like
> >> > $ make
> >> > work as is without setting CC explicitly e.g.
> >> >  $ CC=gcc make  
> >>
> >> I'm afraid "not needed" is desired but not strictly true. I keep seeing
> >> packages that use 'cc' accidentally (dev-util/radare2) or explicitly.
> >> Don't know if most of them can safely fall back to 'gcc' at ./configure
> >> time. I suspect many don't.
> >>  
> >> > I only want to change gcc-config to NOT create /usr/bin/cc and  
> >> /usr/bin/f77  
> >> > via an option.
> >> > Everything else stays unchanged.  
> >>
> >> I see.  Initially you said you want to set your own 'cc' and 'f77'
> >> wrapper.
> >> Can you clarify what is the motivation to change only a subset of
> >> programs?
> >> Maybe describe whole intended setup?
> >>
> >> This is only for Chrome OS setup where I want to  switch "cc" to point to  
> > clang or a different compiler (Switching will be done using a
> > different ebuild not used in Gentoo).
> > I do not want to disturb Gentoo's current setup in any way other than
> > adding an option to "gcc-config"
> > that will serve our needs.
> >
> > It feels very dangerous to have 'cc' point to one compiler (manually set)  
> >> and 'c99' to another ('gcc').
> >> We will start producing more inconsistent environments than we do today.
> >>
> >> Not installing 'cc'/'f77' at all might be less bad.
> >>  
> >
> > Yes, this is exactly what I'd like but some internal teams want '$ make'
> > to work
> > as is. This option to "not install" these links will be a good first step
> > to find out
> > if there are any packages relying on 'cc' being present in Chrome OS
> > builds.
> >
> > Thanks,
> > Manoj
> >
> >  
> >> --
> >>
> >>   Sergei
> >>  
> >  


-- 

  Sergei


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2020-05-26 22:38 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-02-27 19:22 [gentoo-dev] [PATCH] gcc-config: Add option to not install cc/f77 wrappers Manoj Gupta
2020-02-27 19:40 ` [gentoo-dev] " Manoj Gupta
     [not found]   ` <CAHvdr7P-fYebVxuYU1Pdho7f7yMgE987pSjkp+wzzCxJhPxZzA@mail.gmail.com>
2020-03-03  3:03     ` Manoj Gupta
2020-03-03  9:16       ` Sergei Trofimovich
2020-03-11  3:54         ` Manoj Gupta
2020-03-11  7:49           ` Sergei Trofimovich
2020-03-11 16:07             ` Manoj Gupta
2020-05-26 22:13               ` Manoj Gupta
2020-05-26 22:38                 ` Sergei Trofimovich

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox