USE_GCC usage

Gerald Pfeifer gerald at pfeifer.com
Fri Sep 22 12:23:22 UTC 2017


On Jun 25 2016 Richard Gallamore wrote:
> When using USE_GCC= 5+, errors occur because this USE only sets
> build and run time dependency, and not lib dependency.
>
> Error: /usr/local/bin/ann_in is linked to /usr/local/lib/gcc5/libgfortran.so.3 from lang/gcc but it is not declared as a dependency
> Error: /usr/local/bin/ann_in is linked to /usr/local/lib/gcc5/libquadmath.so.0 from lang/gcc but it is not declared as a dependency
> Error: /usr/local/bin/c81merge is linked to /usr/local/lib/gcc5/libstdc++.so.6 from lang/gcc but it is not declared as a dependency
> Error: /usr/local/bin/c81merge is linked to /usr/local/lib/gcc5/libgcc_s.so.1 from lang/gcc but it is not declared as a dependency
> 
> Should this be considered a false positive? or should USE_GCC
> also add a LIB_DEPEND to ports?

Thanks for reporting this, Richard.  I missed this back in June,
but a friendly soul pointed me towards this.

USE_GCC currently implies BUILD_DEPENDS (since GCC is used to build
such a port) and RUN_DEPENDS, where I am now thinking we should have
LIB_DEPENDS instead of RUN_DEPENDS, actually. 

And Mathieu Arnold responded:
> This is quite strange. lang/gcc does not provide any of those libraries.
> lang/gcc is a metapackage, the only thing it does is depend on the
> lang/gccXX you asked for, and it provide symlinks:
>
> # pkg info -l lang/gcc
> gcc-5.4.0_2:
>        /usr/local/bin/g++
>        /usr/local/bin/gcc
>         /usr/local/bin/gfortran
> # ls -l $(pkg info -ql lang/gcc)
> lrwxr-xr-x  1 root  wheel  4 29 mai   15:21 /usr/local/bin/g++@ -> g++5
> lrwxr-xr-x  1 root  wheel  4 29 mai   15:21 /usr/local/bin/gcc@ -> gcc5
> lrwxr-xr-x  1 root  wheel  9 29 mai   15:21 /usr/local/bin/gfortran@ -> gfortran5

Is it possible the reporter(s) had an older ports tree, predating
r441883 from 2017-05-27 which adjusted lang/gcc to appear like you
reported?

What do you think about replacing RUN_DEPENDS by LIB_DEPENDS via
the patch below?

My only challenge is that I don't know what to put in instead of
... there given that different lang/gcc* ports do carry the same
libraries (and usually with the same .so version).?

Gerald

Index: bsd.gcc.mk
===================================================================
--- bsd.gcc.mk	(revision 450347)
+++ bsd.gcc.mk	(working copy)
@@ -167,7 +167,7 @@
 
 .if defined(_GCC_PORT_DEPENDS)
 BUILD_DEPENDS+=	${_GCC_PORT_DEPENDS}:lang/${_GCC_PORT}
-RUN_DEPENDS+=	${_GCC_PORT_DEPENDS}:lang/${_GCC_PORT}
+LIB_DEPENDS+=	...:lang/${_GCC_PORT}
 # Later GCC ports already depend on binutils; make sure whatever we
 # build leverages this as well.
 USE_BINUTILS=	yes
@@ -199,5 +199,5 @@
 	@echo CC=${CC} - CXX=${CXX} - CPP=${CPP} - CFLAGS=\"${CFLAGS}\"
 	@echo LDFLAGS=\"${LDFLAGS}\"
 	@echo "BUILD_DEPENDS=${BUILD_DEPENDS}"
-	@echo "RUN_DEPENDS=${RUN_DEPENDS}"
+	@echo "LIB_DEPENDS=${LIB_DEPENDS}"
 .endif


More information about the freebsd-ports mailing list