ports/175252: [patch]bsd.gcc.mk, USE_GCC=any when no gcc in base and ...
Yamaya Takashi
yamayan at kbh.biglobe.ne.jp
Sun Jan 13 06:00:02 UTC 2013
>Number: 175252
>Category: ports
>Synopsis: [patch]bsd.gcc.mk, USE_GCC=any when no gcc in base and ...
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sun Jan 13 06:00:01 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator: Yamaya Takashi
>Release: 10-CURRENT
>Organization:
>Environment:
FreeBSD genius 10.0-CURRENT FreeBSD 10.0-CURRENT #0 r245356M: Sun Jan 13 12:51:15 JST 2013 root at genius:/usr/obj/usr/src/sys/NYANCO amd64
>Description:
When no gcc in base, some ports using USE_GCC=any can not build.
bsd.gcc.mk checks OSVERSION only, and sets CC=gcc CXX=g++.
For example:
#cd /usr/ports/graphics/evas-core
#make test-gcc
USE_GCC=any
USE_FORTRAN=
Port can use later versions.
GCC version: 3.4 - OSVERSION from 502126 to 700042
GCC version: 4.2 (base) - OSVERSION from 700042 to 9999999
GCC version: 4.4 - OSVERSION from 0 to 0
GCC version: 4.6 (port) - OSVERSION from 0 to 0
GCC version: 4.7 - OSVERSION from 0 to 0
GCC version: 4.8 - OSVERSION from 0 to 0
Using GCC version 4.2
CC=gcc - CXX=g++ - CPP=cpp - CFLAGS="-O2 -pipe -march=native -I/usr/local/include -fno-strict-aliasing"
F77= - FC=f77 - FFLAGS="-O"
LDFLAGS=" -L/usr/local/lib"
BUILD_DEPENDS= pkgconf:/usr/ports/devel/pkgconf
RUN_DEPENDS= pkgconf:/usr/ports/devel/pkgconf
#ls /usr/bin/gcc
ls: /usr/bin/gcc: No such file or directory
another problem:
_GCCVERSION_OKAY check logic is broken.
comparing _USE_GCC to OSVERSION is wrong.
>How-To-Repeat:
>Fix:
patch my patch.
First problem:
Add exists(/usr/bin/gcc) logic.
Second problem:
Compare _USE_GCC to only _GCCVERSION_${v}_V.
result:
#cd /usr/ports/graphics/evas-core
#make test-gcc
USE_GCC=any
USE_FORTRAN=
Port can use later versions.
GCC version: 3.4 - OSVERSION from 502126 to 700042
GCC version: 4.2 - OSVERSION from 700042 to 9999999
GCC version: 4.4 - OSVERSION from 0 to 0
GCC version: 4.6 (port) - OSVERSION from 0 to 0
GCC version: 4.7 - OSVERSION from 0 to 0
GCC version: 4.8 - OSVERSION from 0 to 0
Using GCC version 4.6
CC=gcc46 - CXX=g++46 - CPP=cpp46 - CFLAGS="-O2 -pipe -march=native -I/usr/local/include -Wl,-rpath=/usr/local/lib/gcc46 -fno-strict-aliasing"
F77= - FC=f77 - FFLAGS="-O"
LDFLAGS=" -L/usr/local/lib -Wl,-rpath=/usr/local/lib/gcc46"
BUILD_DEPENDS=gcc46:/usr/ports/lang/gcc /usr/local/bin/as:/usr/ports/devel/binutils pkgconf:/usr/ports/devel/pkgconf
RUN_DEPENDS=gcc46:/usr/ports/lang/gcc pkgconf:/usr/ports/devel/pkgconf
Patch attached with submission follows:
Index: bsd.gcc.mk
===================================================================
--- bsd.gcc.mk (revision 310139)
+++ bsd.gcc.mk (working copy)
@@ -131,11 +131,9 @@
# Check if USE_GCC points to a valid version.
.for v in ${GCCVERSIONS}
-. for j in ${GCCVERSION_${v}}
-. if ${_USE_GCC}==${j}
+. if ${_USE_GCC}==${_GCCVERSION_${v}_V}
_GCCVERSION_OKAY= true;
-. endif
-. endfor
+. endif
.endfor
.if !defined(_GCCVERSION_OKAY)
@@ -151,7 +149,9 @@
. endif
. if ${OSVERSION} >= ${_GCCVERSION_${v}_L} && ${OSVERSION} < ${_GCCVERSION_${v}_R}
_GCCVERSION:= ${v}
+. if exists(/usr/bin/gcc)
_GCC_FOUND${v}:= base
+. endif
. endif
.endfor
.if !defined(_GCCVERSION)
@@ -198,7 +198,7 @@
# dependencies, CC, CXX, CPP, and flags.
.for v in ${GCCVERSIONS}
. if ${_USE_GCC} == ${_GCCVERSION_${v}_V}
-. if ${OSVERSION} < ${_GCCVERSION_${v}_L} || ${OSVERSION} > ${_GCCVERSION_${v}_R}
+. if ${OSVERSION} < ${_GCCVERSION_${v}_L} || ${OSVERSION} > ${_GCCVERSION_${v}_R} || !exists(/usr/bin/gcc)
V:= ${_GCCVERSION_${v}_V:S/.//}
_GCC_PORT_DEPENDS:= gcc${V}
. if ${_USE_GCC} == ${GCC_DEFAULT_VERSION}
@@ -223,7 +223,7 @@
# ever telling us; to be fixed.
_GCC_BUILD_DEPENDS:= ${_GCC_PORT_DEPENDS}
. endif # ${_USE_GCC} != 3.4
-. else # ${OSVERSION} < ${_GCCVERSION_${v}_L} || ${OSVERSION} > ${_GCCVERSION_${v}_R}
+. else # ${OSVERSION} < ${_GCCVERSION_${v}_L} || ${OSVERSION} > ${_GCCVERSION_${v}_R} || !exists(/usr/bin/gcc)
CC:= gcc
CXX:= g++
. if exists(/usr/bin/gcpp)
@@ -231,7 +231,7 @@
. else
CPP:= cpp
. endif
-. endif # ${OSVERSION} < ${_GCCVERSION_${v}_L} || ${OSVERSION} > ${_GCCVERSION_${v}_R}
+. endif # ${OSVERSION} < ${_GCCVERSION_${v}_L} || ${OSVERSION} > ${_GCCVERSION_${v}_R} || !exists(/usr/bin/gcc)
. endif # ${_USE_GCC} == ${_GCCVERSION_${v}_V}
.endfor
.undef V
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list