-
Notifications
You must be signed in to change notification settings - Fork 38
gcc 12 to 14 updates with libsanitizer and Distribution=13.0, 14.0, 15.0 variants #1080
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
dhomeier
wants to merge
9
commits into
master
Choose a base branch
from
dhomeier-gcc123-13
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 4 commits
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
d3fa0ac
gcc-12.3.0 update with experimental libsanitizer build, disabled on V…
dhomeier 82a79dd
gcc-13.2.0 package with untested libsanitizer build, disabled on Ventura
dhomeier 4417407
Sonoma Dist-packages for gcc 12, 13 (libsanitizer disabled)
dhomeier 26b61ad
Make xcode>=14 requirement arm64-only
dhomeier 2d734cb
Update to gcc 12.4; rm 14.0+ Dists
dhomeier 06d9b0a
Update to gcc 13.3; backport lse.S from 14.2 for clang 16
dhomeier d2cabb3
Add gcc14 packages at 14.2 with arm64 patches
dhomeier 994d145
Update gcc 14.2 with r2 patches from Homebrew
dhomeier cf99a0f
Backport 14.2.0-r2 and other Homebrew patches to gcc 13.3
dhomeier File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
315 changes: 315 additions & 0 deletions
315
10.9-libcxx/stable/main/finkinfo/languages/gcc12-13.0.info
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,315 @@ | ||
| Info2: << | ||
| Package: gcc12 | ||
| Version: 12.3.0 | ||
| Revision: 1 | ||
| Type: gccver (12) | ||
| Distribution: 13.0 | ||
| Source: mirror:gnu:gcc/gcc-%v/gcc-%v.tar.xz | ||
| Source-Checksum: SHA256(949a5d4f99e786421a93b532b22ffab5578de7321369975b91aec97adfda8c3b) | ||
| PatchFile: %n.patch | ||
| PatchFile-MD5: e245cee9fa6aa2fd5298d7712358e8e1 | ||
| PatchScript: << | ||
| #!/bin/sh -ev | ||
| patch -p1 < %{PatchFile} | ||
| # don't update live infodoc dir | ||
| find . -name Makefile.in | xargs perl -pi -e 's/install-info --version/false/g' | ||
| << | ||
| NoSetCPPFLAGS: True | ||
| NoSetLDFLAGS: True | ||
| UseMaxBuildJobs: True | ||
| Conflicts: << | ||
| gcc5, gcc6, gcc7, gcc8, | ||
| gcc9, | ||
| gcc10, | ||
| gcc11, | ||
| gcc12, | ||
| gcc13, | ||
| gcc14 | ||
| << | ||
| Replaces: << | ||
| gcc5, gcc6, gcc7, gcc8, | ||
| gcc9, | ||
| gcc10, | ||
| gcc11, | ||
| gcc12, | ||
| gcc13, | ||
| gcc14 | ||
| << | ||
| Depends: << | ||
| %N-compiler (= %v-%r) | ||
| << | ||
| BuildDepends: << | ||
| fink (>= 0.32), | ||
| fink-package-precedence, | ||
| gettext-tools, | ||
| gmp5 (>= 6.1.2-1), | ||
| install-info, | ||
| isl22, | ||
| libgettext8-dev, | ||
| libiconv-dev, | ||
| libmpc3 (>= 1.0.3-1), | ||
| libmpfr6, | ||
| x11-dev | ||
| << | ||
| ConfigureParams: << | ||
| --prefix=%p/lib/gcc%type_num[gccver] \ | ||
| --mandir=%p/share/man \ | ||
| --infodir=%p/lib/gcc%type_num[gccver]/info \ | ||
| --enable-languages=c,c++,fortran,lto,objc,obj-c++ \ | ||
| --with-gmp=%p \ | ||
| --with-libiconv-prefix=%p \ | ||
| --with-isl=%p \ | ||
| --with-mpc=%p \ | ||
| --with-system-zlib \ | ||
| --program-suffix=-fsf-%type_num[gccver] \ | ||
| --disable-multilib \ | ||
| --enable-stage1-checking \ | ||
| ${USE_SYSROOT} \ | ||
| --with-pkgversion="Fink %n %v-%r" \ | ||
| --with-bugurl="https://github.com/fink/fink-distributions/issues" | ||
| << | ||
| InfoTest: << | ||
| TestDepends: << | ||
| autogen, | ||
| dejagnu, | ||
| ( "%m" != "arm64" ) apple-gdb | ||
| << | ||
| TestScript: << | ||
| #!/bin/bash -ev | ||
| if [ "%m" = "arm64" ]; then | ||
| echo "The gcc testsuite requires Apple's gdb, which is not available on this architecture." | ||
| exit 0 | ||
| elif [ $UID = 0 ]; then | ||
| if [ -e /usr/bin/csrutil && `csrutil status | grep -c disabled` ]; then | ||
| cd ../darwin_objdir; make -k check RUNTESTFLAGS="--target_board=unix'{-m64}'" || : | ||
| else | ||
| echo "The gcc testsuite must be run with SIP disabled or package installed." | ||
| exit 0 | ||
| fi | ||
| else | ||
| echo "The gcc testsuite must be run as root due to its use of gdb." | ||
| exit 0 | ||
| fi | ||
| << | ||
| << | ||
| InfoDocs: gcc.info gfortran.info cpp.info gccinstall.info libgomp.info cppinternals.info gccint.info | ||
| CompileScript: << | ||
| #!/bin/bash -ev | ||
| set +x | ||
| if [ -e /usr/local/lib/libgmp.a ] || [ -e /usr/local/lib/libgmp.dylib ]; then | ||
| echo "-----WARNING-----WARNING-----WARNING-----" | ||
| echo "You seem to have GMP installed in /usr/local." | ||
| echo "This is known to cause %N to fail to build." | ||
| echo "Please move aside /usr/local and try again." | ||
| echo "-----WARNING-----WARNING-----WARNING-----" | ||
| exit 1 | ||
| else | ||
| echo "Good, /usr/local/lib/libgmp* not present." | ||
| fi | ||
| set -x | ||
| ulimit -s `ulimit -s` | ||
| mkdir ../darwin_objdir | ||
| cd ../darwin_objdir | ||
| # build doesn't play well with GNU-make | ||
| # unsupported option '-static-libgcc' | ||
| export MAKE=/usr/bin/make | ||
| # Only need sysroot on 10.14+ because /usr/include has been removed | ||
| OSX_MAJOR_VERSION=`sw_vers -productVersion | cut -d. -f1-2` | ||
| if dpkg --compare-versions "$OSX_MAJOR_VERSION" ge "10.14"; then | ||
| # Get the unversioned SDK path | ||
| SDK_PATH=`dirname $(xcrun --sdk macosx --show-sdk-path)`/MacOSX.sdk | ||
| # This should really be --with-build-sysroot but that's not getting propagated through the entire build process. | ||
| # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79885 | ||
| export USE_SYSROOT="--with-sysroot=${SDK_PATH}" | ||
| fi | ||
| # check for incompatible clang ( 6.0 << bad-clang << 7.2) | ||
| clangvers=`clang --version | cut -d\ -f4` | ||
| $(`dpkg --compare-versions $clangvers '>>' 6.0`) && $(`dpkg --compare-versions $clangvers '<<' 7.2`) && clangcheck='y' | ||
| if [ "$clangcheck" = "y" ]; then | ||
| ../gcc-%v/configure %c --with-build-config=bootstrap-debug | ||
| else | ||
| ../gcc-%v/configure %c | ||
| fi | ||
| # Use bootstrap-lean to reduce disk usage. | ||
| # Note that this causes plugin testsuite failures | ||
| # since the plugin headers must come from prev-gcc. | ||
| # make bootstrap-lean | ||
| make bootstrap | ||
| fink-package-precedence --prohibit-bdep=%n . | ||
| << | ||
| InstallScript: << | ||
| #!/bin/sh -ev | ||
| darwinvers=`uname -r` | ||
| cd ../darwin_objdir | ||
| make -j 1 install DESTDIR=%d | ||
| mkdir -p %i/bin | ||
|
|
||
| # Add symlinks to recreate previous naming of executables in %p/bin | ||
| # as well as %p/lib/gcc%type_num[gccver]/bin and new -fsf-%type_num[gccver] naming in %p/bin. | ||
| binfiles="gcc g++ c++ cpp gcov" | ||
| for binfile in $binfiles ; do | ||
| ln -s %p/lib/gcc%type_num[gccver]/bin/$binfile-fsf-%type_num[gccver] %i/lib/gcc%type_num[gccver]/bin/$binfile-%type_num[gccver] | ||
| ln -s %p/lib/gcc%type_num[gccver]/bin/$binfile-fsf-%type_num[gccver] %i/bin/$binfile-%type_num[gccver] | ||
| ln -s %p/lib/gcc%type_num[gccver]/bin/$binfile-fsf-%type_num[gccver] %i/bin/$binfile-fsf-%type_num[gccver] | ||
| done | ||
| binfiles="gfortran" | ||
| for binfile in $binfiles ; do | ||
| ln -s %p/lib/gcc%type_num[gccver]/bin/$binfile-fsf-%type_num[gccver] %i/lib/gcc%type_num[gccver]/bin/$binfile | ||
| ln -s %p/lib/gcc%type_num[gccver]/bin/$binfile-fsf-%type_num[gccver] %i/bin/$binfile | ||
| ln -s %p/lib/gcc%type_num[gccver]/bin/$binfile-fsf-%type_num[gccver] %i/bin/$binfile-fsf-%type_num[gccver] | ||
| done | ||
|
|
||
| # Remove unsupported executables | ||
| binfiles="gcc-ar gcc-nm gcc-ranlib" | ||
| for binfile in $binfiles ; do | ||
| rm -f %i/lib/gcc%type_num[gccver]/bin/$binfile-fsf-%type_num[gccver] %i/lib/gcc%type_num[gccver]/bin/*-apple-darwin${darwinvers}-$binfile-fsf-%type_num[gccver] | ||
| done | ||
|
|
||
| # Add symlinks for manpages under old names. | ||
| man1files="cpp g++ gcc gcov" | ||
| for man1file in $man1files ; do | ||
| ln -s $man1file-fsf-%type_num[gccver].1 %i/share/man/man1/$man1file-%type_num[gccver].1 | ||
| done | ||
| man1files="gfortran" | ||
| for man1file in $man1files ; do | ||
| ln -s $man1file-fsf-%type_num[gccver].1 %i/share/man/man1/$man1file.1 | ||
| done | ||
|
|
||
| # Rename manpages with -fsf-%type_num[gccver] suffix and create symlinks to old names. | ||
| man7files="fsf-funding gfdl gpl" | ||
| for man7file in $man7files ; do | ||
| mv %i/share/man/man7/$man7file.7 %i/share/man/man7/$man7file-fsf-%type_num[gccver].7 | ||
| ln -s $man7file-fsf-%type_num[gccver].7 %i/share/man/man7/$man7file.7 | ||
| done | ||
|
|
||
| # Add dir for installed info files, and link them to %i/share/info. | ||
| # the %i/lib/gcc%type_num[gccver]/info/* files will go into the -compiler package | ||
| # and the files in %i/share/info go into the main package, this allows | ||
| # the info files for specific compiler versions to be accessed with | ||
| # e.g. `info -d /fink_install_dir/lib/gcc%type_num[gccver]/info gcc', but the "main" info files will | ||
| # be available for the install gccXX package in %p/share/info, as usual | ||
| install -d -m 755 %i/share/info | ||
| for infofile in $(find %i/lib/gcc%type_num[gccver]/info -name '*.info*'); do | ||
| infobase=$(basename $infofile) | ||
| case $infofile in | ||
| *info) %p/bin/install-info --infodir=%i/lib/gcc%type_num[gccver]/info ${infofile} ;; | ||
| esac | ||
| ln -s %p/lib/gcc%type_num[gccver]/info/$infobase %i/share/info/$infobase | ||
| done | ||
|
|
||
| # remove build path from .la files | ||
| perl -pi -e "s, \-L[^ ']*/%n-%v-%r/darwin_objdir/[^ ']*,,g" `find %i/lib/gcc%type_num[gccver]/lib -name '*.la'` | ||
| if [ "%m" = "arm64" -o "%m" = "arm" ]; then | ||
| arch=aarch64 | ||
| else | ||
| arch=%m | ||
| fi | ||
|
|
||
| # @rpath install_names are required for aarch64 build, but break some linked binaries | ||
| # - enforce actual install paths here; take care to update the cross-referenced dylibs. | ||
| cd %d | ||
| for dylib in .%p/lib/gcc%type_num[gccver]/lib/lib*.[0-9].dylib; do | ||
| install_name_tool -id ${dylib#.} $dylib | ||
| install_name_tool -change @rpath/libgcc_s.1.1.dylib %p/lib/gcc%type_num[gccver]/lib/libgcc_s.1.1.dylib \ | ||
| -change @rpath/libstdc++.6.dylib %p/lib/gcc%type_num[gccver]/lib/libstdc++.6.dylib \ | ||
| -change @rpath/libquadmath.0.dylib %p/lib/gcc%type_num[gccver]/lib/libquadmath.0.dylib $dylib | ||
| done | ||
| otool -L .%p/lib/gcc%type_num[gccver]/lib/lib*.[0-9].dylib | grep '@rpath' && exit 2 | ||
|
|
||
| cp %b/gcc/config/darwin-sections.def %i/lib/gcc%type_num[gccver]/lib/gcc/${arch}-apple-darwin${darwinvers}/%v/plugin/include/config | ||
| << | ||
| SplitOff: << | ||
| Package: %N-shlibs | ||
| Replaces: << | ||
| gcc4 (<= 20050130-4), | ||
| gfortran-shlibs | ||
| << | ||
| Provides: << | ||
| gfortran-shlibs | ||
| << | ||
| Description: Shared libraries for %N | ||
| DocFiles: gcc/COPYING gcc/COPYING.LIB | ||
| Files: << | ||
| lib/gcc%type_num[gccver]/lib/libgfortran.5*.dylib | ||
| lib/gcc%type_num[gccver]/lib/libstdc++.6*.dylib | ||
| lib/gcc%type_num[gccver]/lib/libgcc_s.1*.dylib | ||
| lib/gcc%type_num[gccver]/lib/libitm.1*.dylib | ||
| lib/gcc%type_num[gccver]/lib/libssp.0*.dylib | ||
| lib/gcc%type_num[gccver]/lib/libobjc-gnu.4*.dylib | ||
| lib/gcc%type_num[gccver]/lib/libgomp.1*.dylib | ||
| lib/gcc%type_num[gccver]/lib/libquadmath.0*.dylib | ||
| lib/gcc%type_num[gccver]/lib/libatomic.1*.dylib | ||
| << | ||
| Shlibs: << | ||
| %p/lib/gcc%type_num[gccver]/lib/libgfortran.5.dylib 6.0.0 %n (>= 12.0.0-1) | ||
| %p/lib/gcc%type_num[gccver]/lib/libstdc++.6.dylib 7.0.0 %n (>= 12.0.0-1) | ||
| ( "%m" = "arm64" ) %p/lib/gcc%type_num[gccver]/lib/libgcc_s.1.1.dylib 1.0.0 %n (>= 12.0.0-1) | ||
| ( "%m" != "arm64" ) %p/lib/gcc%type_num[gccver]/lib/libgcc_s.1.dylib 1.0.0 %n (>= 12.0.0-1) | ||
| ( "%m" != "arm64" ) !%p/lib/gcc%type_num[gccver]/lib/libgcc_s.1.1.dylib | ||
| %p/lib/gcc%type_num[gccver]/lib/libitm.1.dylib 2.0.0 %n (>= 12.0.0-1) | ||
| %p/lib/gcc%type_num[gccver]/lib/libssp.0.dylib 1.0.0 %n (>= 12.0.0-1) | ||
| %p/lib/gcc%type_num[gccver]/lib/libobjc-gnu.4.dylib 5.0.0 %n (>= 12.0.0-1) | ||
| %p/lib/gcc%type_num[gccver]/lib/libgomp.1.dylib 2.0.0 %n (>= 12.0.0-1) | ||
| %p/lib/gcc%type_num[gccver]/lib/libquadmath.0.dylib 1.0.0 %n (>= 12.0.0-1) | ||
| %p/lib/gcc%type_num[gccver]/lib/libatomic.1.dylib 4.0.0 %n (>= 12.0.0-1) | ||
| << | ||
| << | ||
| SplitOff2: << | ||
| Package: %N-compiler | ||
| Depends: << | ||
| gmp5-shlibs (>= 6.1.2-1), | ||
| isl22-shlibs, | ||
| libgettext8-shlibs, | ||
| libgmpxx5-shlibs (>= 6.1.2-1), | ||
| libiconv, | ||
| libmpc3-shlibs (>= 1.0.3-1), | ||
| libmpfr6-shlibs, | ||
| %N-shlibs (= %v-%r) | ||
| << | ||
| BuildDependsOnly: False | ||
| Description: Compiler Binaries for gcc%type_num[gccver] | ||
| DocFiles: gcc/COPYING gcc/COPYING.LIB gcc/ChangeLog gcc/ABOUT-GCC-NLS gcc/README.Portability | ||
| Files: << | ||
| bin/*-fsf-%type_num[gccver] | ||
| lib/gcc%type_num[gccver] | ||
| share/man/man1/*-fsf-%type_num[gccver].1 | ||
| share/man/man7/*-fsf-%type_num[gccver].7 | ||
| << | ||
| << | ||
| License: GPL | ||
| Description: GNU Compiler Collection Version %type_num[gccver] | ||
| DescDetail: << | ||
| GCC, the GNU Compiler Collection, includes front ends for | ||
| C, C++, Objective-C, Objective-C++, Fortran and Ada. | ||
| . | ||
| C, C++, Objective C and Fortran are included in this package. | ||
| . | ||
| The C and C++ compilers are named gcc-12 and g++-12 to avoid | ||
| conflicts with gcc and g++ installed by the Apple Developer Tools. | ||
| << | ||
| DescPackaging: << | ||
| Build with -fsf-%type_num[gccver] suffix and place non-overlapping files into new gcc%type_num[gccver]-compiler | ||
| package which can co-exist with other gccXX-compiler packages. Overlapping files | ||
| are left in main gcc%type_num[gccver] package which still conflicts with other gccXX packages. | ||
|
|
||
| macOS10.14 no longer supports building 32bit libraries, so must disable multilib. | ||
| https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87030 | ||
|
|
||
| We use --with-sysroot to find the hidden system-headers in case /usr/include is not | ||
| populated. Ideally want --with-build-sysroot because we only need the headers to build | ||
| gcc and that should not impact the end product, but then anything using gccX will | ||
| need to add it's own -isysroot flag. | ||
| https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79885 | ||
|
|
||
| Homebrew patches for arm64/aarch64 build and macOS 13 from | ||
| https://github.com/Homebrew/formula-patches/blob/master/gcc/gcc-%v.diff | ||
| - libasan.* and libsubsan.* currently not built on darwin22+ - see | ||
| https://github.com/iains/gcc-darwin-arm64/commit/e722a1f4 | ||
| and missing from the 13.0 package until resolved. | ||
| There are both "1" and "1.1" versions of libgcc_s.dylib now, but only "1.1" on arm64. | ||
| Manual fixes of @rpath install_names required for aarch64 build to maintain downstream | ||
| package compatibility. | ||
| << | ||
| Homepage: http://gcc.gnu.org/ | ||
| Maintainer: None <fink-devel@lists.sourceforge.net> | ||
| << | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Perhaps also add 14.0 here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fink's naming scheme only allows for a single Distribution in a %v-Dist.info named file afaict, so this needs additional info files (added in next commit) – but a less prolific solution would be much preferred!