svn commit: r504198 - head/Mk

Mark Linimon linimon at lonesome.com
Thu Jul 4 20:31:16 UTC 2019


On Sat, Jun 15, 2019 at 11:14:08AM +0200, Gerald Pfeifer wrote:
> True, it's only 58 for USE_GCC=any versus 112 for USE_GCC=yes [...]
> Still 58 ports that won't be tested with the compiler they are
> (trying to be) built with on powerpc64.

But ... what I understand is that "any" means "it's ok to use base
gcc".  That was always the intended difference to "yes" which means
"you *must* use a recent gcc" [e.g. from ports].

I don't really see why we need to add the dependency on a newer gcc
if the version in base suffices.  What am I missing here?  I don't see
this as the "trying to be" case.  (Also see note at end.)

(Granted, this distinction becomes meaningless in FreeBSD e.g. 13 when
base gcc is deleted -- but we will still be supporting 11/12 for quite
some time to come.)

> > Most ports just need USES=compiler:*.
> 
> Yes, and that's where we should take action as well.

And by default we have been doing that -- unless it is *known* that
the port simply won't build with clang and thus requires USE_GCC.  OTOH
there has been recently pushback that "you could have done the same
thing more minimally by" (specifying c99, etc.)

The problem is, we've tried to take the fastest route to getting as
large a set of packages built as possible.  Thus:

  Mon Nov 19 13:48:26 UTC 2018          11304
  Sun Jun 16 06:10:04 UTC 2019          27953

but again, a) we're getting pushback; b) in any case, work has to be
done on ~120 ports to fix the "powerpc means gcc" assumption, which
will soon be smashed in -CURRENT (per above).

(Frankly, except for the latter I would leave the whole issue alone.
Even if we spend ~1hr/port to prove that c99 is "more minimal", that's
still ~100 hours.)

tl:dr: we've favored getting things building over getting things perfect.
But now we have to backtrack a bit for the new assumption.

Different topic.  Here's a special case:

> For example, Mk/Uses/compiler.mk has
> 
>   .if ${_COMPILER_ARGS:Mopenmp}
>   .if ${COMPILER_TYPE} == clang
>   USE_GCC=        yes
>   CHOSEN_COMPILER_TYPE=   gcc
>   .endif
>   .endif
> 
> which means that anyone asking for compiler:openmp gets GCC 4.2,
> unless I'm missing something.

Yes, openmp is a special case IIUC.

fwiw, there are a number of other special cases (around 50 in all) that
are mostly disjoint with the "=any" cases.  All of these are going to
have to be examined carefully, and have test-runs in multiple environments.

Finally, w/rt using gcc4.2 being a disservice ... remember, that's what
we *already do* by default on powerpc64 (et. al).  Of the above number
of packages, only 5916 depend on llvm*.  While I don't have an easy number
to show me the ones that have "c11 or more" in in USES:compiler, I can
say that even so, we are still building the majority of powerpc64 packages,
by far, with base gcc.

mcl


More information about the svn-ports-all mailing list