FreshPorts / freshports

The website part of FreshPorts
http://www.freshports.org/
BSD 2-Clause "Simplified" License
68 stars 24 forks source link

Dependent ports reported incorrectly for lang/gcc12 #596

Open lsalvadore opened 2 weeks ago

lsalvadore commented 2 weeks ago

As maintainer of the GCC ports, I am fairly sure that the information reported under "This port is required by:" is wrong for lang/gcc12: there is a huge amount of ports listed in there, which is very weird for the non default GCC version (default is GCC 13 at the moment). Indeed running git grep -P "USE_GCC[ \t]*=[ \t]*12" in the ports tree returns only 4 ports.

dlangille commented 1 week ago

A port does not need to contain USE_GCC12 to be dependent up on lang/gcc12 - sometimes the dependency comes in through another mechanism.

For example, archivers/R-cran-zip:

[13:58 mydev dvl /usr/ports/archivers/R-cran-zip] % make -V BUILD_DEPENDS
/usr/local/bin/R:math/R gfortran13:lang/gcc13 /usr/local/bin/as:devel/binutils
[14:00 mydev dvl /usr/ports/archivers/R-cran-zip] % grep -i gcc *
[14:00 mydev dvl /usr/ports/archivers/R-cran-zip] % 

It comes from USES= cran:auto-plist,compiles

Looking in Mk/Uses/cran.mk we see it invokes fortran.mk which in turn sets RUN_DEPENDS and TEST_DEPENDS for gcc.

lsalvadore commented 1 week ago

Of course I am well aware that USE_GCC is not the only mechanism. However please note that:

dlangille commented 1 week ago

The next problem though is why does gcc13 show up in the output above yet archivers/R-cran-zip shows up on lang/gcc12 but not on lang/gcc13?

The dependencies for a port are extracted when a commit to that port is processed by FreshPorts. I will guess that when the last commit to archivers/R-cran-zip occurs, the default gcc was 12, not 13.

This situation, (dependencies for a port change without a commit to the port), is a harder problem to solve. For every change to a Mk/Uses file we'd have to reevaluate dependencies for all ports using that particular USES.

This problem is similar to: