pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc gcc{48, 49, 5, 6, 7, 8}: In the case of a "system GCC", det...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/a9e5c561ce71
branches:  trunk
changeset: 339205:a9e5c561ce71
user:      maya <maya%pkgsrc.org@localhost>
date:      Sun Sep 08 14:47:52 2019 +0000

description:
gcc{48,49,5,6,7,8}: In the case of a "system GCC", detect if the system
libgcc is newer than the one about to be installed. If so, don't install
the libgcc.

Having an older libgcc appear in the lookup may result in binaries not
running, as they need symbols from the newer libgcc.
Such a case is PR pkg/54506.

Leaves SunOS unchanged, by request from jperkin.

diffstat:

 lang/gcc48/options.mk                |  37 +++++++++++++++-
 lang/gcc49/options.mk                |  37 +++++++++++++++-
 lang/gcc5/options.mk                 |  39 ++++++++++++++++-
 lang/gcc6/options.mk                 |  38 +++++++++++++++-
 lang/gcc7/options.mk                 |  38 ++++++++++++++++-
 lang/gcc8/options.mk                 |  38 +++++++++++++++-
 mk/scripts/larger_symbol_version.awk |  81 ++++++++++++++++++++++++++++++++++++
 7 files changed, 291 insertions(+), 17 deletions(-)

diffs (truncated from 463 to 300 lines):

diff -r b2d57e49895a -r a9e5c561ce71 lang/gcc48/options.mk
--- a/lang/gcc48/options.mk     Sun Sep 08 14:29:25 2019 +0000
+++ b/lang/gcc48/options.mk     Sun Sep 08 14:47:52 2019 +0000
@@ -1,17 +1,22 @@
-# $NetBSD: options.mk,v 1.11 2016/09/30 13:16:59 sevan Exp $
+# $NetBSD: options.mk,v 1.12 2019/09/08 14:47:53 maya Exp $
 
 PKG_OPTIONS_VAR=       PKG_OPTIONS.${GCC_PKGNAME}
 PKG_SUPPORTED_OPTIONS= nls gcc-inplace-math gcc-c++ gcc-fortran gcc-java \
-                       gcc-go gcc-objc gcc-objc++ gcc-graphite
+                       gcc-go gcc-objc gcc-objc++ gcc-graphite always-libgcc
 PKG_SUGGESTED_OPTIONS= gcc-c++ gcc-fortran gcc-objc gcc-objc++ gcc-graphite
 
 PKG_SUGGESTED_OPTIONS.DragonFly+=      nls
 PKG_SUGGESTED_OPTIONS.Linux+=          nls
 PKG_SUGGESTED_OPTIONS.NetBSD+=         nls
-PKG_SUGGESTED_OPTIONS.SunOS+=          gcc-inplace-math
+PKG_SUGGESTED_OPTIONS.SunOS+=          gcc-inplace-math always-libgcc
 # gcc-java was dropped from PKG_SUGGESTED_OPTIONS to spare legacy systems attempting bulkbuilds
 # For example on Darwin/PowerPC this option adds another 24 hours to build time on a G4.
 
+.include "../../mk/compiler.mk"
+.if empty(PKGSRC_COMPILER:Mgcc)
+PKG_SUGGESTED_OPTIONS+=                        always-libgcc
+.endif
+
 ###
 ### Determine if multilib is avalible.
 ###
@@ -55,6 +60,32 @@
 .endif
 
 ###
+### Don't install libgcc if it's older than the system one
+###
+.if empty(PKG_OPTIONS:Malways-libgcc)
+
+.for _libdir_ in ${_OPSYS_LIB_DIRS}
+.  if exists(${_libdir_})
+BASE_LIBGCC!=                  find ${_libdir_} -name libgcc_s.so
+BASE_LIBGCC_MATCH_STRING!=     ${ECHO} ${BASE_LIBGCC} ${GCC48_DIST_VERSION} | \
+                               ${AWK} -f ../../mk/scripts/larger_symbol_version.awk
+.    if ${BASE_LIBGCC_MATCH_STRING:Mnewer}
+DELETE_INSTALLED_LIBGCC=       yes
+.    endif
+.  endif
+.endfor
+
+.if ${DELETE_INSTALLED_LIBGCC:Uno}
+post-install:  delete-installed-libgcc
+
+delete-installed-libgcc:
+       ${FIND} ${DESTDIR} -name 'libgcc_s.so*' -delete
+
+.endif
+
+.endif
+
+###
 ### Build math libraries in place
 ###
 .if !empty(PKG_OPTIONS:Mgcc-inplace-math)
diff -r b2d57e49895a -r a9e5c561ce71 lang/gcc49/options.mk
--- a/lang/gcc49/options.mk     Sun Sep 08 14:29:25 2019 +0000
+++ b/lang/gcc49/options.mk     Sun Sep 08 14:47:52 2019 +0000
@@ -1,17 +1,22 @@
-# $NetBSD: options.mk,v 1.3 2016/09/30 13:17:00 sevan Exp $
+# $NetBSD: options.mk,v 1.4 2019/09/08 14:47:53 maya Exp $
 
 PKG_OPTIONS_VAR=       PKG_OPTIONS.${GCC_PKGNAME}
 PKG_SUPPORTED_OPTIONS= nls gcc-inplace-math gcc-c++ gcc-fortran gcc-java \
-                       gcc-go gcc-objc gcc-objc++
+                       gcc-go gcc-objc gcc-objc++ always-libgcc
 PKG_SUGGESTED_OPTIONS= gcc-c++ gcc-fortran gcc-objc gcc-objc++
 
 PKG_SUGGESTED_OPTIONS.DragonFly+=      nls
 PKG_SUGGESTED_OPTIONS.Linux+=          nls
 PKG_SUGGESTED_OPTIONS.NetBSD+= nls
-PKG_SUGGESTED_OPTIONS.SunOS+=          gcc-go gcc-inplace-math
+PKG_SUGGESTED_OPTIONS.SunOS+=          gcc-go gcc-inplace-math always-libgcc
 # gcc-java was dropped from PKG_SUGGESTED_OPTIONS to spare legacy systems attempting bulkbuilds
 # For example on Darwin/PowerPC this option adds another 24 hours to build time on a G4.
 
+.include "../../mk/compiler.mk"
+.if empty(PKGSRC_COMPILER:Mgcc)
+PKG_SUGGESTED_OPTIONS+=                always-libgcc
+.endif
+
 ###
 ### Determine if multilib is avalible.
 ###
@@ -55,6 +60,32 @@
 .endif
 
 ###
+### Don't install libgcc if it's older than the system one
+###
+.if empty(PKG_OPTIONS:Malways-libgcc)
+
+.for _libdir_ in ${_OPSYS_LIB_DIRS}
+.  if exists(${_libdir_})
+BASE_LIBGCC!=                  find ${_libdir_} -name libgcc_s.so
+BASE_LIBGCC_MATCH_STRING!=     ${ECHO} ${BASE_LIBGCC} ${GCC49_DIST_VERSION} | \
+                               ${AWK} -f ../../mk/scripts/larger_symbol_version.awk
+.    if ${BASE_LIBGCC_MATCH_STRING:Mnewer}
+DELETE_INSTALLED_LIBGCC=       yes
+.    endif
+.  endif
+.endfor
+
+.if ${DELETE_INSTALLED_LIBGCC:Uno}
+post-install:  delete-installed-libgcc
+
+delete-installed-libgcc:
+       ${FIND} ${DESTDIR} -name 'libgcc_s.so*' -delete
+
+.endif
+
+.endif
+
+###
 ### Build math libraries in place
 ###
 .if !empty(PKG_OPTIONS:Mgcc-inplace-math)
diff -r b2d57e49895a -r a9e5c561ce71 lang/gcc5/options.mk
--- a/lang/gcc5/options.mk      Sun Sep 08 14:29:25 2019 +0000
+++ b/lang/gcc5/options.mk      Sun Sep 08 14:47:52 2019 +0000
@@ -1,15 +1,21 @@
-# $NetBSD: options.mk,v 1.2 2016/02/25 14:42:56 jperkin Exp $
+# $NetBSD: options.mk,v 1.3 2019/09/08 14:47:52 maya Exp $
 
 PKG_OPTIONS_VAR=       PKG_OPTIONS.${GCC_PKGNAME}
 PKG_SUPPORTED_OPTIONS= nls gcc-inplace-math gcc-c++ gcc-fortran \
-                       gcc-go gcc-objc gcc-objc++ gcc-graphite gcc-java
+                       gcc-go gcc-objc gcc-objc++ gcc-graphite gcc-java \
+                       always-libgcc
 PKG_SUGGESTED_OPTIONS= gcc-c++ gcc-fortran gcc-objc gcc-objc++ \
                        gcc-graphite gcc-inplace-math
 
 PKG_SUGGESTED_OPTIONS.DragonFly+=      nls
 PKG_SUGGESTED_OPTIONS.Linux+=          nls
 PKG_SUGGESTED_OPTIONS.NetBSD+=         nls
-PKG_SUGGESTED_OPTIONS.SunOS+=          gcc-inplace-math
+PKG_SUGGESTED_OPTIONS.SunOS+=          gcc-inplace-math always-libgcc
+
+.include "../../mk/compiler.mk"
+.if empty(PKGSRC_COMPILER:Mgcc)
+PKG_SUGGESTED_OPTIONS+=                        always-libgcc
+.endif
 
 ###
 ### Determine if multilib is avalible.
@@ -54,6 +60,33 @@
 .endif
 
 ###
+### Don't install libgcc if it's older than the system one
+###
+.include "../../mk/bsd.prefs.mk"
+.if empty(PKG_OPTIONS:Malways-libgcc)
+
+.for _libdir_ in ${_OPSYS_LIB_DIRS}
+.  if exists(${_libdir_})
+BASE_LIBGCC!=                  find ${_libdir_} -name libgcc_s.so
+BASE_LIBGCC_MATCH_STRING!=     ${ECHO} ${BASE_LIBGCC} ${GCC5_DIST_VERSION} | \
+                               ${AWK} -f ../../mk/scripts/larger_symbol_version.awk
+.    if ${BASE_LIBGCC_MATCH_STRING:Mnewer}
+DELETE_INSTALLED_LIBGCC=       yes
+.    endif
+.  endif
+.endfor
+
+.if ${DELETE_INSTALLED_LIBGCC:Uno}
+post-install:  delete-installed-libgcc
+
+delete-installed-libgcc:
+       ${FIND} ${DESTDIR} -name 'libgcc_s.so*' -delete
+
+.endif
+
+.endif
+
+###
 ### Build math libraries in place
 ###
 .if !empty(PKG_OPTIONS:Mgcc-inplace-math)
diff -r b2d57e49895a -r a9e5c561ce71 lang/gcc6/options.mk
--- a/lang/gcc6/options.mk      Sun Sep 08 14:29:25 2019 +0000
+++ b/lang/gcc6/options.mk      Sun Sep 08 14:47:52 2019 +0000
@@ -1,8 +1,9 @@
-# $NetBSD: options.mk,v 1.1 2016/09/12 22:13:54 maya Exp $
+# $NetBSD: options.mk,v 1.2 2019/09/08 14:47:52 maya Exp $
 
 PKG_OPTIONS_VAR=       PKG_OPTIONS.${GCC_PKGNAME}
 PKG_SUPPORTED_OPTIONS= nls gcc-inplace-math gcc-c++ gcc-fortran \
-                       gcc-go gcc-objc gcc-objc++ gcc-graphite gcc-java
+                       gcc-go gcc-objc gcc-objc++ gcc-graphite gcc-java \
+                       always-libgcc
 PKG_SUGGESTED_OPTIONS= gcc-c++ gcc-fortran gcc-objc gcc-objc++ \
                        gcc-graphite gcc-inplace-math
 
@@ -13,10 +14,15 @@
 .elif ${OPSYS} == "DragonFly"
 PKG_SUGGESTED_OPTIONS+= nls
 .elif ${OPSYS} == "SunOS"
-PKG_SUGGESTED_OPTIONS+=        gcc-inplace-math
+PKG_SUGGESTED_OPTIONS+=        gcc-inplace-math always-libgcc
 .else
 .endif
 
+.include "../../mk/compiler.mk"
+.if empty(PKGSRC_COMPILER:Mgcc)
+PKG_SUGGESTED_OPTIONS+=                        always-libgcc
+.endif
+
 ###
 ### Determine if multilib is avalible.
 ###
@@ -60,6 +66,32 @@
 .endif
 
 ###
+### Don't install libgcc if it's older than the system one
+###
+.if empty(PKG_OPTIONS:Malways-libgcc)
+
+.for _libdir_ in ${_OPSYS_LIB_DIRS}
+.  if exists(${_libdir_})
+BASE_LIBGCC!=                  find ${_libdir_} -name libgcc_s.so
+BASE_LIBGCC_MATCH_STRING!=     ${ECHO} ${BASE_LIBGCC} ${GCC6_DIST_VERSION} | \
+                               ${AWK} -f ../../mk/scripts/larger_symbol_version.awk
+.    if ${BASE_LIBGCC_MATCH_STRING:Mnewer}
+DELETE_INSTALLED_LIBGCC=       yes
+.    endif
+.  endif
+.endfor
+
+.if ${DELETE_INSTALLED_LIBGCC:Uno}
+post-install:  delete-installed-libgcc
+
+delete-installed-libgcc:
+       ${FIND} ${DESTDIR} -name 'libgcc_s.so*' -delete
+
+.endif
+
+.endif
+
+###
 ### Build math libraries in place
 ###
 .if !empty(PKG_OPTIONS:Mgcc-inplace-math)
diff -r b2d57e49895a -r a9e5c561ce71 lang/gcc7/options.mk
--- a/lang/gcc7/options.mk      Sun Sep 08 14:29:25 2019 +0000
+++ b/lang/gcc7/options.mk      Sun Sep 08 14:47:52 2019 +0000
@@ -1,8 +1,9 @@
-# $NetBSD: options.mk,v 1.4 2019/01/05 00:39:13 adam Exp $
+# $NetBSD: options.mk,v 1.5 2019/09/08 14:47:52 maya Exp $
 
 PKG_OPTIONS_VAR=       PKG_OPTIONS.${GCC_PKGNAME}
 PKG_SUPPORTED_OPTIONS= nls gcc-inplace-math gcc-c++ gcc-fortran \
-                       gcc-go gcc-objc gcc-objc++ gcc-graphite
+                       gcc-go gcc-objc gcc-objc++ gcc-graphite \
+                       always-libgcc
 PKG_SUGGESTED_OPTIONS= gcc-c++ gcc-fortran gcc-objc gcc-objc++ \
                        gcc-graphite gcc-inplace-math
 
@@ -10,6 +11,13 @@
 PKG_SUGGESTED_OPTIONS+=        nls
 .endif
 
+.include "../../mk/compiler.mk"
+.if empty(PKGSRC_COMPILER:Mgcc)
+PKG_SUGGESTED_OPTIONS+=                        always-libgcc
+.endif
+
+PKG_SUGGESTED_OPTIONS.SunOS+=          always-libgcc
+
 ###
 ### Determine if multilib is avalible.
 ###
@@ -58,6 +66,32 @@
 .endif
 
 ###
+### Don't install libgcc if it's older than the system one
+###
+.if empty(PKG_OPTIONS:Malways-libgcc)
+
+.for _libdir_ in ${_OPSYS_LIB_DIRS}
+.  if exists(${_libdir_})
+BASE_LIBGCC!=                  find ${_libdir_} -name libgcc_s.so
+BASE_LIBGCC_MATCH_STRING!=     ${ECHO} ${BASE_LIBGCC} ${GCC7_DIST_VERSION} | \
+                               ${AWK} -f ../../mk/scripts/larger_symbol_version.awk
+.    if ${BASE_LIBGCC_MATCH_STRING:Mnewer}
+DELETE_INSTALLED_LIBGCC=       yes
+.    endif
+.  endif
+.endfor
+
+.if ${DELETE_INSTALLED_LIBGCC:Uno}



Home | Main Index | Thread Index | Old Index