gcc -> 12.2 (#7302)

* gcc -> 12.2

* manually adjust indentation
This commit is contained in:
Satadru Pramanik
2022-08-19 17:04:37 -04:00
committed by GitHub
parent 15bc2851db
commit be94de49a1

View File

@@ -3,23 +3,23 @@ require 'package'
class Gcc < Package
description 'The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, and Go.'
homepage 'https://www.gnu.org/software/gcc/'
version '12.1-1'
version '12.2'
license 'GPL-3, LGPL-3, libgcc, FDL-1.2'
compatibility 'all'
source_url 'https://gcc.gnu.org/pub/gcc/releases/gcc-12.1.0/gcc-12.1.0.tar.xz'
source_sha256 '62fd634889f31c02b64af2c468f064b47ad1ca78411c45abe6ac4b5f8dd19c7b'
source_url 'https://gcc.gnu.org/pub/gcc/releases/gcc-12.2.0/gcc-12.2.0.tar.xz'
source_sha256 'e549cf9cf3594a00e27b6589d4322d70e0720cdd213f39beb4181e06926230ff'
binary_url({
aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/gcc12/12.1_armv7l/gcc12-12.1-chromeos-armv7l.tar.zst',
armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/gcc12/12.1_armv7l/gcc12-12.1-chromeos-armv7l.tar.zst',
i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/gcc12/12.1_i686/gcc12-12.1-chromeos-i686.tar.zst',
x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/gcc12/12.1_x86_64/gcc12-12.1-chromeos-x86_64.tar.zst'
aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/gcc/12.2_armv7l/gcc-12.2-chromeos-armv7l.tar.zst',
armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/gcc/12.2_armv7l/gcc-12.2-chromeos-armv7l.tar.zst',
i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/gcc/12.2_i686/gcc-12.2-chromeos-i686.tar.zst',
x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/gcc/12.2_x86_64/gcc-12.2-chromeos-x86_64.tar.zst'
})
binary_sha256({
aarch64: 'c3507c61d1f9e245ca66ea11f3091785287697eed1a0deba9c769ac443426494',
armv7l: 'c3507c61d1f9e245ca66ea11f3091785287697eed1a0deba9c769ac443426494',
i686: 'bd0a415636e7602320b0daca9ef545fac326396ddf52baa2fe385af752f47452',
x86_64: 'e48ecf0106f6a6a01cb3d80327e14ca302f96d7b5c79f44c781a483d2f5ad066'
aarch64: '0b6ba2549556fdcfe489253ee99362bf4d5278411f695433121ac82665a5521e',
armv7l: '0b6ba2549556fdcfe489253ee99362bf4d5278411f695433121ac82665a5521e',
i686: 'b0aa419d91b7088400c7a365e3c416cbba5081413a624acf4f2e0c962cda7359',
x86_64: '01efdcdab6bebc32fd5608f6a061c7ceebd69e9f96084293a903f5af9c3576f3'
})
depends_on 'ccache' => :build
@@ -137,14 +137,14 @@ class Gcc < Package
Dir.chdir('objdir') do
configure_env = {
NM: 'gcc-nm',
AR: 'gcc-ar',
RANLIB: 'gcc-ranlib',
CFLAGS: @cflags,
CXXFLAGS: @cxxflags,
LDFLAGS: "-L#{CREW_LIB_PREFIX}/lib -Wl,-rpath=#{CREW_LIB_PREFIX}",
LIBRARY_PATH: CREW_LIB_PREFIX,
PATH: @path
NM: 'gcc-nm',
AR: 'gcc-ar',
RANLIB: 'gcc-ranlib',
CFLAGS: @cflags,
CXXFLAGS: @cxxflags,
LDFLAGS: "-L#{CREW_LIB_PREFIX}/lib -Wl,-rpath=#{CREW_LIB_PREFIX}",
LIBRARY_PATH: CREW_LIB_PREFIX,
PATH: @path
}.transform_keys(&:to_s)
system configure_env, <<~BUILD.chomp
@@ -177,9 +177,9 @@ class Gcc < Package
gcc_libdir = "#{CREW_DEST_LIB_PREFIX}/#{gcc_dir}"
make_env = {
LIBRARY_PATH: CREW_LIB_PREFIX,
PATH: @path,
DESTDIR: CREW_DEST_DIR
LIBRARY_PATH: CREW_LIB_PREFIX,
PATH: @path,
DESTDIR: CREW_DEST_DIR
}.transform_keys(&:to_s)
Dir.chdir('objdir') do
@@ -214,7 +214,7 @@ class Gcc < Package
end
FileUtils.mkdir_p gcc_libdir
%w[cc1 cc1plus collect2 lto1].each do |lib|
FileUtils.install "gcc/#{lib}", "#{gcc_libdir}/", mode: 0o755
end
@@ -239,17 +239,26 @@ class Gcc < Package
system make_env, "make -C lto-plugin DESTDIR=#{CREW_DEST_DIR} install"
system make_env, "make -C #{CREW_TGT}/libgomp DESTDIR=#{CREW_DEST_DIR} install-nodist_libsubincludeHEADERS", exception: false
system make_env, "make -C #{CREW_TGT}/libgomp DESTDIR=#{CREW_DEST_DIR} install-nodist_toolexeclibHEADERS", exception: false
system make_env, "make -C #{CREW_TGT}/libitm DESTDIR=#{CREW_DEST_DIR} install-nodist_toolexeclibHEADERS", exception: false
system make_env, "make -C #{CREW_TGT}/libquadmath DESTDIR=#{CREW_DEST_DIR} install-nodist_libsubincludeHEADERS", exception: false
system make_env, "make -C #{CREW_TGT}/libsanitizer DESTDIR=#{CREW_DEST_DIR} install-nodist_sanincludeHEADERS", exception: false
system make_env, "make -C #{CREW_TGT}/libsanitizer DESTDIR=#{CREW_DEST_DIR} install-nodist_toolexeclibHEADERS", exception: false
system make_env, "make -C #{CREW_TGT}/libsanitizer/asan DESTDIR=#{CREW_DEST_DIR} install-nodist_toolexeclibHEADERS", exception: false
system make_env, "make -C #{CREW_TGT}/libgomp DESTDIR=#{CREW_DEST_DIR} install-nodist_libsubincludeHEADERS",
exception: false
system make_env, "make -C #{CREW_TGT}/libgomp DESTDIR=#{CREW_DEST_DIR} install-nodist_toolexeclibHEADERS",
exception: false
system make_env, "make -C #{CREW_TGT}/libitm DESTDIR=#{CREW_DEST_DIR} install-nodist_toolexeclibHEADERS",
exception: false
system make_env, "make -C #{CREW_TGT}/libquadmath DESTDIR=#{CREW_DEST_DIR} install-nodist_libsubincludeHEADERS",
exception: false
system make_env, "make -C #{CREW_TGT}/libsanitizer DESTDIR=#{CREW_DEST_DIR} install-nodist_sanincludeHEADERS",
exception: false
system make_env, "make -C #{CREW_TGT}/libsanitizer DESTDIR=#{CREW_DEST_DIR} install-nodist_toolexeclibHEADERS",
exception: false
system make_env,
"make -C #{CREW_TGT}/libsanitizer/asan DESTDIR=#{CREW_DEST_DIR} install-nodist_toolexeclibHEADERS", exception: false
# This failed on i686
system make_env, "make -C #{CREW_TGT}/libsanitizer/tsan DESTDIR=#{CREW_DEST_DIR} install-nodist_toolexeclibHEADERS", exception: false
system make_env,
"make -C #{CREW_TGT}/libsanitizer/tsan DESTDIR=#{CREW_DEST_DIR} install-nodist_toolexeclibHEADERS", exception: false
# This might fail on i686
system make_env, "make -C #{CREW_TGT}/libsanitizer/lsan DESTDIR=#{CREW_DEST_DIR} install-nodist_toolexeclibHEADERS", exception: false
system make_env,
"make -C #{CREW_TGT}/libsanitizer/lsan DESTDIR=#{CREW_DEST_DIR} install-nodist_toolexeclibHEADERS", exception: false
# libiberty is installed from binutils
# system "env LD_LIBRARY_PATH=#{CREW_LIB_PREFIX} \
@@ -282,12 +291,12 @@ class Gcc < Package
basefile_nover = f.delete_suffix("-#{@gcc_version}")
basefile_noarch = f.delete_prefix("#{gcc_arch}-")
FileUtils.ln_sf f, basefile_noarch, verbose: true
FileUtils.ln_sf f, basefile_noarch, verbose: true
basefile_noarch_nover = basefile_nover.delete_prefix("#{gcc_arch}-")
FileUtils.ln_sf f, basefile_noarch_nover, verbose: true
FileUtils.ln_sf f, basefile_noarch_nover, verbose: true
basefile_noarch_nover_nogcc = basefile_noarch_nover.delete_prefix("gcc-")
basefile_noarch_nover_nogcc = basefile_noarch_nover.delete_prefix('gcc-')
FileUtils.ln_sf f, "#{gcc_arch}-#{basefile_noarch_nover_nogcc}", verbose: true
end
@@ -297,17 +306,19 @@ class Gcc < Package
end
# many packages expect this symlink
FileUtils.ln_sf "gcc-#{@gcc_version}", 'cc', verbose: true
FileUtils.ln_sf "gcc-#{@gcc_version}", 'cc', verbose: true
end
# make sure current version of gcc LTO plugin for Gold linker is installed.
FileUtils.mkdir_p "#{CREW_DEST_LIB_PREFIX}/bfd-plugins/"
FileUtils.ln_sf "#{CREW_PREFIX}/libexec/#{gcc_dir}/liblto_plugin.so", "#{CREW_DEST_LIB_PREFIX}/bfd-plugins/", verbose: true
FileUtils.ln_sf "#{CREW_PREFIX}/libexec/#{gcc_dir}/liblto_plugin.so", "#{CREW_DEST_LIB_PREFIX}/bfd-plugins/",
verbose: true
# binutils makes a symlink here, but just in case it isn't there.
if ARCH_LIB == 'lib64'
FileUtils.mkdir_p "#{CREW_DEST_PREFIX}/lib/bfd-plugins/"
FileUtils.ln_sf "#{CREW_PREFIX}/libexec/#{gcc_dir}/liblto_plugin.so", "#{CREW_DEST_PREFIX}/lib/bfd-plugins/", verbose: true
FileUtils.ln_sf "#{CREW_PREFIX}/libexec/#{gcc_dir}/liblto_plugin.so", "#{CREW_DEST_PREFIX}/lib/bfd-plugins/",
verbose: true
end
File.write "#{CREW_DEST_PREFIX}/bin/c99", @C99, perm: 0o755
@@ -318,19 +329,20 @@ class Gcc < Package
# remove any previous gcc packages
@device = JSON.load_file("#{CREW_CONFIG_PATH}/device.json", symbolize_names: true)
installed_gcc = @device[:installed_packages].select {|pkg| pkg[:name] =~ /^gcc\d+$/ }
installed_gcc = @device[:installed_packages].select { |pkg| pkg[:name] =~ /^gcc\d+$/ }
installed_gcc.each do |gcc_pkg|
puts "Removing previous version of gcc (#{gcc_pkg[:name]})...".yellow
# remove filelist and directorylist
FileUtils.rm_f([ "#{CREW_META_PATH}/#{gcc_pkg[:name]}.filelist", "#{CREW_META_PATH}/#{gcc_pkg[:name]}.directorylist" ])
FileUtils.rm_f(["#{CREW_META_PATH}/#{gcc_pkg[:name]}.filelist",
"#{CREW_META_PATH}/#{gcc_pkg[:name]}.directorylist"])
# delete gcc#{ver} from device.json
@device[:installed_packages].delete_if {|pkg| pkg[:name] == gcc_pkg[:name] }
@device[:installed_packages].delete_if { |pkg| pkg[:name] == gcc_pkg[:name] }
end
# update device.json
File.write( "#{CREW_CONFIG_PATH}/device.json", JSON.pretty_generate(@device) )
File.write("#{CREW_CONFIG_PATH}/device.json", JSON.pretty_generate(@device))
end
end