Commit d4f64280 authored by Ed Reel's avatar Ed Reel Committed by Chris Thurber

Update gcc packages (#3306)

Update 7.4.0 to 7.4.0-1

Update 8.2.0 to 8.3.0

Add gcc_tools package

Add gcc_tools dependency to buildessential

Add gcc_tools to core_packages.txt

Update gcc8 version in install.sh

Add pre-built binaries
parent 4f66a8b4
...@@ -48,8 +48,8 @@ urls=() ...@@ -48,8 +48,8 @@ urls=()
sha256s=() sha256s=()
case "${ARCH}" in case "${ARCH}" in
"aarch64") "aarch64")
urls+=('https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.2.0-chromeos-armv7l.tar.xz') urls+=('https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.3.0-chromeos-armv7l.tar.xz')
sha256s+=('536323fc5dd35e53665a19e65c636f288153efe4cdf31617c32103c64593b285') sha256s+=('fbd8a589befb3d10400af6e4975d02a6940bab4907628f8fc0d6913ea89f70ae')
urls+=('https://dl.bintray.com/chromebrew/chromebrew/ruby-2.5.3-chromeos-armv7l.tar.xz') urls+=('https://dl.bintray.com/chromebrew/chromebrew/ruby-2.5.3-chromeos-armv7l.tar.xz')
sha256s+=('5e485a0320b298e1f5c4ff50d98c6fe6d06ad9a38d9119d580a8b469418e1e6a') sha256s+=('5e485a0320b298e1f5c4ff50d98c6fe6d06ad9a38d9119d580a8b469418e1e6a')
urls+=('https://dl.bintray.com/chromebrew/chromebrew/libiconv-1.15-1-chromeos-armv7l.tar.xz') urls+=('https://dl.bintray.com/chromebrew/chromebrew/libiconv-1.15-1-chromeos-armv7l.tar.xz')
...@@ -64,8 +64,8 @@ case "${ARCH}" in ...@@ -64,8 +64,8 @@ case "${ARCH}" in
urls+=('https://github.com/snailium/chrome-cross/releases/download/v1.8.1/xz-5.2.3-chromeos-armv7l.tar.gz') urls+=('https://github.com/snailium/chrome-cross/releases/download/v1.8.1/xz-5.2.3-chromeos-armv7l.tar.gz')
sha256s+=('4dc9f086ee7613ab0145ec0ed5ac804c80c620c92f515cb62bae8d3c508cbfe7') sha256s+=('4dc9f086ee7613ab0145ec0ed5ac804c80c620c92f515cb62bae8d3c508cbfe7')
fi fi
urls+=('https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.2.0-chromeos-armv7l.tar.xz') urls+=('https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.3.0-chromeos-armv7l.tar.xz')
sha256s+=('536323fc5dd35e53665a19e65c636f288153efe4cdf31617c32103c64593b285') sha256s+=('fbd8a589befb3d10400af6e4975d02a6940bab4907628f8fc0d6913ea89f70ae')
urls+=('https://dl.bintray.com/chromebrew/chromebrew/ruby-2.5.3-chromeos-armv7l.tar.xz') urls+=('https://dl.bintray.com/chromebrew/chromebrew/ruby-2.5.3-chromeos-armv7l.tar.xz')
sha256s+=('5e485a0320b298e1f5c4ff50d98c6fe6d06ad9a38d9119d580a8b469418e1e6a') sha256s+=('5e485a0320b298e1f5c4ff50d98c6fe6d06ad9a38d9119d580a8b469418e1e6a')
urls+=('https://dl.bintray.com/chromebrew/chromebrew/libiconv-1.15-1-chromeos-armv7l.tar.xz') urls+=('https://dl.bintray.com/chromebrew/chromebrew/libiconv-1.15-1-chromeos-armv7l.tar.xz')
...@@ -76,8 +76,8 @@ case "${ARCH}" in ...@@ -76,8 +76,8 @@ case "${ARCH}" in
sha256s+=('d8fae766d77818ef95ae8a993bda0c03730d773cfb8392ceaaf6c8697206409c') sha256s+=('d8fae766d77818ef95ae8a993bda0c03730d773cfb8392ceaaf6c8697206409c')
;; ;;
"i686") "i686")
urls+=('https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.2.0-chromeos-i686.tar.xz') urls+=('https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.3.0-chromeos-i686.tar.xz')
sha256s+=('e37ca8d49198beaa9ba582fc25fa598ab3cd5ed7e46f96a03176fb9002cc6f7b') sha256s+=('4d625e92969fde16c1a92601740e22c07331f8056452edf7cf0bf2c1c88aa152')
urls+=('https://dl.bintray.com/chromebrew/chromebrew/ruby-2.5.3-chromeos-i686.tar.xz') urls+=('https://dl.bintray.com/chromebrew/chromebrew/ruby-2.5.3-chromeos-i686.tar.xz')
sha256s+=('6f4a5b96c31ef5ee4f09ac15da4c7a4a9d838ed5233038136ead1e155d17f342') sha256s+=('6f4a5b96c31ef5ee4f09ac15da4c7a4a9d838ed5233038136ead1e155d17f342')
urls+=('https://dl.bintray.com/chromebrew/chromebrew/libiconv-1.15-1-chromeos-i686.tar.xz') urls+=('https://dl.bintray.com/chromebrew/chromebrew/libiconv-1.15-1-chromeos-i686.tar.xz')
...@@ -88,8 +88,8 @@ case "${ARCH}" in ...@@ -88,8 +88,8 @@ case "${ARCH}" in
sha256s+=('ccdea94d6dcc0bdd27b364cd99f53e9aba6f90f0b8272a5f3856bf2a9a32beb6') sha256s+=('ccdea94d6dcc0bdd27b364cd99f53e9aba6f90f0b8272a5f3856bf2a9a32beb6')
;; ;;
"x86_64") "x86_64")
urls+=('https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.2.0-chromeos-x86_64.tar.xz') urls+=('https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.3.0-chromeos-x86_64.tar.xz')
sha256s+=('6d982f3c35acd3a738e176a3f3b8c4ea093c7be86882153a7711841cf0c80737') sha256s+=('ae8c8c33e4090f7fdbd39b2364754dcfc5f6bdd9a74062fde3eeb6272562f48b')
urls+=('https://dl.bintray.com/chromebrew/chromebrew/ruby-2.5.3-chromeos-x86_64.tar.xz') urls+=('https://dl.bintray.com/chromebrew/chromebrew/ruby-2.5.3-chromeos-x86_64.tar.xz')
sha256s+=('352b78fc883cf8936136991fda9ca5d49e90b2951626158d6af8ef4b58d67f97') sha256s+=('352b78fc883cf8936136991fda9ca5d49e90b2951626158d6af8ef4b58d67f97')
urls+=('https://dl.bintray.com/chromebrew/chromebrew/libiconv-1.15-1-chromeos-x86_64.tar.xz') urls+=('https://dl.bintray.com/chromebrew/chromebrew/libiconv-1.15-1-chromeos-x86_64.tar.xz')
......
...@@ -3,11 +3,12 @@ require 'package' ...@@ -3,11 +3,12 @@ require 'package'
class Buildessential < Package class Buildessential < Package
description 'A collection of tools essential to compile and build software.' description 'A collection of tools essential to compile and build software.'
homepage '' homepage ''
version '1.4' version '1.5'
is_fake is_fake
depends_on 'gcc8' depends_on 'gcc8'
depends_on 'gcc_tools'
depends_on 'linuxheaders' depends_on 'linuxheaders'
depends_on 'make' depends_on 'make'
depends_on 'pkgconfig' depends_on 'pkgconfig'
......
...@@ -3,10 +3,15 @@ require 'package' ...@@ -3,10 +3,15 @@ require 'package'
class Gcc7 < Package class Gcc7 < Package
description 'The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, and Go.' description 'The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, and Go.'
homepage 'https://www.gnu.org/software/gcc/' homepage 'https://www.gnu.org/software/gcc/'
version '7.4.0' version '7.4.0-1'
source_url 'https://ftpmirror.gnu.org/gcc/gcc-7.4.0/gcc-7.4.0.tar.xz' source_url 'https://ftpmirror.gnu.org/gcc/gcc-7.4.0/gcc-7.4.0.tar.xz'
source_sha256 'eddde28d04f334aec1604456e536416549e9b1aa137fc69204e65eb0c009fe51' source_sha256 'eddde28d04f334aec1604456e536416549e9b1aa137fc69204e65eb0c009fe51'
if ARGV[0] == 'install'
gccver = `gcc -v 2>&1 | tail -1 | cut -d' ' -f3`.chomp
abort "GCC version #{gccver} already installed.".lightgreen unless "#{gccver}" == "No" || "#{gccver}" == "gcc:"
end
binary_url ({ binary_url ({
aarch64: 'https://dl.bintray.com/chromebrew/chromebrew/gcc7-7.4.0-chromeos-armv7l.tar.xz', aarch64: 'https://dl.bintray.com/chromebrew/chromebrew/gcc7-7.4.0-chromeos-armv7l.tar.xz',
armv7l: 'https://dl.bintray.com/chromebrew/chromebrew/gcc7-7.4.0-chromeos-armv7l.tar.xz', armv7l: 'https://dl.bintray.com/chromebrew/chromebrew/gcc7-7.4.0-chromeos-armv7l.tar.xz',
...@@ -14,16 +19,16 @@ class Gcc7 < Package ...@@ -14,16 +19,16 @@ class Gcc7 < Package
x86_64: 'https://dl.bintray.com/chromebrew/chromebrew/gcc7-7.4.0-chromeos-x86_64.tar.xz', x86_64: 'https://dl.bintray.com/chromebrew/chromebrew/gcc7-7.4.0-chromeos-x86_64.tar.xz',
}) })
binary_sha256 ({ binary_sha256 ({
aarch64: '07126320a193d947aeac51f1827ff954c322a8f43014f3cff146715b72f9d7f8', aarch64: '864e1edf328aca17f4caa9dc1698cf8b1927c9231790b76e2d68bff16065466c',
armv7l: '07126320a193d947aeac51f1827ff954c322a8f43014f3cff146715b72f9d7f8', armv7l: '864e1edf328aca17f4caa9dc1698cf8b1927c9231790b76e2d68bff16065466c',
i686: '72cd956d055ad418b052dab407ec3a2b16663b09c396073a23bd12828fcf03c3', i686: '94dfbccb7ccefb5b7515549de2fe1a770cd0bf85293d37fc162986fcbbfcf6b5',
x86_64: '6cce57e98836ccc3c6773df1627bca2102b4f89c7abf64dc47f7b97120b0e01b', x86_64: '0374021c26ffc10b65547b7e86f729ec4e966ce66a429e23189ea6e20fb8fcd4',
}) })
depends_on 'unzip' => :build depends_on 'unzip' => :build
depends_on 'gawk' => :build depends_on 'gawk' => :build
depends_on 'dejagnu' => :build # for test depends_on 'dejagnu' => :build # for test
depends_on 'icu4c' => :build # icu version 62.1 depends_on 'icu4c' => :build
depends_on 'python27' => :build depends_on 'python27' => :build
depends_on 'python3' => :build depends_on 'python3' => :build
...@@ -57,7 +62,7 @@ class Gcc7 < Package ...@@ -57,7 +62,7 @@ class Gcc7 < Package
"--disable-libmpx", "--disable-libmpx",
"--enable-static", "--enable-static",
"--enable-shared", "--enable-shared",
"--program-suffix=-7.3", "--program-suffix=-#{version}",
"--with-arch=armv7-a", "--with-arch=armv7-a",
"--with-tune=cortex-a15", "--with-tune=cortex-a15",
"--with-fpu=neon", "--with-fpu=neon",
...@@ -78,7 +83,7 @@ class Gcc7 < Package ...@@ -78,7 +83,7 @@ class Gcc7 < Package
"--disable-libmpx", "--disable-libmpx",
"--enable-static", "--enable-static",
"--enable-shared", "--enable-shared",
"--program-suffix=-7.3", "--program-suffix=-#{version}",
"--with-arch-64=x86-64", "--with-arch-64=x86-64",
"--with-default-libstdcxx-abi=gcc4-compatible" "--with-default-libstdcxx-abi=gcc4-compatible"
when 'i686' when 'i686'
...@@ -96,7 +101,7 @@ class Gcc7 < Package ...@@ -96,7 +101,7 @@ class Gcc7 < Package
"--disable-libmpx", "--disable-libmpx",
"--enable-static", "--enable-static",
"--enable-shared", "--enable-shared",
"--program-suffix=-7.3", "--program-suffix=-#{version}",
"--with-arch-32=i686", "--with-arch-32=i686",
"--with-default-libstdcxx-abi=gcc4-compatible" "--with-default-libstdcxx-abi=gcc4-compatible"
end end
...@@ -111,8 +116,7 @@ class Gcc7 < Package ...@@ -111,8 +116,7 @@ class Gcc7 < Package
# preserve for check, skip check for current version # preserve for check, skip check for current version
def self.check def self.check
Dir.chdir("objdir") do Dir.chdir("objdir") do
#system "ulimit -s 32768" #system "make -k check -j#{CREW_NPROC}"
#system "make -k check -j8"
#system "../contrib/test_summary" #system "../contrib/test_summary"
end end
end end
...@@ -121,6 +125,10 @@ class Gcc7 < Package ...@@ -121,6 +125,10 @@ class Gcc7 < Package
Dir.chdir("objdir") do Dir.chdir("objdir") do
system "make", "DESTDIR=#{CREW_DEST_DIR}", "install-strip" system "make", "DESTDIR=#{CREW_DEST_DIR}", "install-strip"
gcc_arch = `gcc -dumpmachine`.chomp
gcc_dir = "gcc/#{gcc_arch}/#{version}"
gcc_libdir = "#{CREW_LIB_PREFIX}/#{gcc_dir}"
# http://www.linuxfromscratch.org/lfs/view/development/chapter06/gcc.html#contents-gcc # http://www.linuxfromscratch.org/lfs/view/development/chapter06/gcc.html#contents-gcc
# move a misplaced file # move a misplaced file
# The installation stage puts some files used by gdb under the #{CREW_LIB_PREFIX} directory. This generates spurious error messages when performing ldconfig. This command moves the files to another location. # The installation stage puts some files used by gdb under the #{CREW_LIB_PREFIX} directory. This generates spurious error messages when performing ldconfig. This command moves the files to another location.
...@@ -131,29 +139,42 @@ class Gcc7 < Package ...@@ -131,29 +139,42 @@ class Gcc7 < Package
system "install -v -dm755 #{CREW_DEST_LIB_PREFIX}/bfd-plugins" system "install -v -dm755 #{CREW_DEST_LIB_PREFIX}/bfd-plugins"
# Add a compatibility symlink to enable building programs with Link Time Optimization (LTO) # Add a compatibility symlink to enable building programs with Link Time Optimization (LTO)
system "ln -sfv #{CREW_PREFIX}/libexec/gcc/$(gcc -dumpmachine)/7.3.0/liblto_plugin.so #{CREW_DEST_LIB_PREFIX}/bfd-plugins/" system "ln -sfv #{CREW_PREFIX}/libexec/#{gcc_dir}/liblto_plugin.so #{CREW_DEST_LIB_PREFIX}/bfd-plugins/"
# Fix for clang
Dir.chdir "#{CREW_DEST_LIB_PREFIX}/#{gcc_dir}" do
system "find . -type f -maxdepth 1 -exec ln -sfv #{gcc_libdir}/{} #{CREW_DEST_LIB_PREFIX}/{} \\;"
end
# Make symbolic links # Make symbolic links
system "ln -sv #{CREW_PREFIX}/bin/gcc-7.3 #{CREW_DEST_PREFIX}/bin/cc" system "ln -sv #{CREW_PREFIX}/bin/gcc-#{version} #{CREW_DEST_PREFIX}/bin/cc"
system "ln -sv #{CREW_PREFIX}/bin/gcc-7.3 #{CREW_DEST_PREFIX}/bin/gcc" system "ln -sv #{CREW_PREFIX}/bin/gcc-#{version} #{CREW_DEST_PREFIX}/bin/gcc"
system "ln -sv #{CREW_PREFIX}/bin/c++-7.3 #{CREW_DEST_PREFIX}/bin/c++" system "ln -sv #{CREW_PREFIX}/bin/c++-#{version} #{CREW_DEST_PREFIX}/bin/c++"
system "ln -sv #{CREW_PREFIX}/bin/g++-7.3 #{CREW_DEST_PREFIX}/bin/g++" system "ln -sv #{CREW_PREFIX}/bin/g++-#{version} #{CREW_DEST_PREFIX}/bin/g++"
system "ln -sv #{CREW_PREFIX}/bin/cpp-7.3 #{CREW_DEST_PREFIX}/bin/cpp" system "ln -sv #{CREW_PREFIX}/bin/cpp-#{version} #{CREW_DEST_PREFIX}/bin/cpp"
system "ln -sv #{CREW_PREFIX}/bin/gcc-ar-7.3 #{CREW_DEST_PREFIX}/bin/gcc-ar" system "ln -sv #{CREW_PREFIX}/bin/gcc-ar-#{version} #{CREW_DEST_PREFIX}/bin/gcc-ar"
system "ln -sv #{CREW_PREFIX}/bin/gcc-nm-7.3 #{CREW_DEST_PREFIX}/bin/gcc-nm" system "ln -sv #{CREW_PREFIX}/bin/gcc-nm-#{version} #{CREW_DEST_PREFIX}/bin/gcc-nm"
system "ln -sv #{CREW_PREFIX}/bin/gcc-ranlib-7.3 #{CREW_DEST_PREFIX}/bin/gcc-ranlib" system "ln -sv #{CREW_PREFIX}/bin/gcc-ranlib-#{version} #{CREW_DEST_PREFIX}/bin/gcc-ranlib"
system "ln -sv #{CREW_PREFIX}/bin/gcov-7.3 #{CREW_DEST_PREFIX}/bin/gcov" system "ln -sv #{CREW_PREFIX}/bin/gcov-#{version} #{CREW_DEST_PREFIX}/bin/gcov"
system "ln -sv #{CREW_PREFIX}/bin/gcov-dump-7.3 #{CREW_DEST_PREFIX}/bin/gcov-dump" system "ln -sv #{CREW_PREFIX}/bin/gcov-dump-#{version} #{CREW_DEST_PREFIX}/bin/gcov-dump"
system "ln -sv #{CREW_PREFIX}/bin/gcov-tool-7.3 #{CREW_DEST_PREFIX}/bin/gcov-tool" system "ln -sv #{CREW_PREFIX}/bin/gcov-tool-#{version} #{CREW_DEST_PREFIX}/bin/gcov-tool"
system "ln -sv #{CREW_PREFIX}/bin/gfortran-7.3 #{CREW_DEST_PREFIX}/bin/gfortran" system "ln -sv #{CREW_PREFIX}/bin/gfortran-#{version} #{CREW_DEST_PREFIX}/bin/gfortran"
system "ln -sv #{CREW_PREFIX}/bin/$(gcc -dumpmachine)-c++-7.3 #{CREW_DEST_PREFIX}/bin/$(gcc -dumpmachine)-c++" system "ln -sv #{CREW_PREFIX}/bin/#{gcc_arch}-c++-#{version} #{CREW_DEST_PREFIX}/bin/#{gcc_arch}-c++"
system "ln -sv #{CREW_PREFIX}/bin/$(gcc -dumpmachine)-g++-7.3 #{CREW_DEST_PREFIX}/bin/$(gcc -dumpmachine)-g++" system "ln -sv #{CREW_PREFIX}/bin/#{gcc_arch}-g++-#{version} #{CREW_DEST_PREFIX}/bin/#{gcc_arch}-g++"
system "ln -sv #{CREW_PREFIX}/bin/$(gcc -dumpmachine)-gcc-7.3 #{CREW_DEST_PREFIX}/bin/$(gcc -dumpmachine)-gcc" system "ln -sv #{CREW_PREFIX}/bin/#{gcc_arch}-gcc-#{version} #{CREW_DEST_PREFIX}/bin/#{gcc_arch}-gcc"
system "ln -sv #{CREW_PREFIX}/bin/$(gcc -dumpmachine)-gcc-ar-7.3 #{CREW_DEST_PREFIX}/bin/$(gcc -dumpmachine)-gcc-ar" system "ln -sv #{CREW_PREFIX}/bin/#{gcc_arch}-gcc-ar-#{version} #{CREW_DEST_PREFIX}/bin/#{gcc_arch}-gcc-ar"
system "ln -sv #{CREW_PREFIX}/bin/$(gcc -dumpmachine)-gcc-nm-7.3 #{CREW_DEST_PREFIX}/bin/$(gcc -dumpmachine)-gcc-nm" system "ln -sv #{CREW_PREFIX}/bin/#{gcc_arch}-gcc-nm-#{version} #{CREW_DEST_PREFIX}/bin/#{gcc_arch}-gcc-nm"
system "ln -sv #{CREW_PREFIX}/bin/$(gcc -dumpmachine)-gcc-ranlib-7.3 #{CREW_DEST_PREFIX}/bin/$(gcc -dumpmachine)-gcc-ranlib" system "ln -sv #{CREW_PREFIX}/bin/#{gcc_arch}-gcc-ranlib-#{version} #{CREW_DEST_PREFIX}/bin/#{gcc_arch}-gcc-ranlib"
system "ln -sv #{CREW_PREFIX}/bin/$(gcc -dumpmachine)-gfortran-7.3 #{CREW_DEST_PREFIX}/bin/$(gcc -dumpmachine)-gfortran" system "ln -sv #{CREW_PREFIX}/bin/#{gcc_arch}-gfortran-#{version} #{CREW_DEST_PREFIX}/bin/#{gcc_arch}-gfortran"
system "ln -sv #{CREW_PREFIX}/share/man/man1/cpp-#{version}.1.gz #{CREW_DEST_PREFIX}/share/man/man1/cpp.1.gz"
system "ln -sv #{CREW_PREFIX}/share/man/man1/g++-#{version}.1.gz #{CREW_DEST_PREFIX}/share/man/man1/g++.1.gz"
system "ln -sv #{CREW_PREFIX}/share/man/man1/gcc-#{version}.1.gz #{CREW_DEST_PREFIX}/share/man/man1/gcc.1.gz"
system "ln -sv #{CREW_PREFIX}/share/man/man1/gcov-#{version}.1.gz #{CREW_DEST_PREFIX}/share/man/man1/gcov.1.gz"
system "ln -sv #{CREW_PREFIX}/share/man/man1/gcov-dump-#{version}.1.gz #{CREW_DEST_PREFIX}/share/man/man1/gcov-dump.1.gz"
system "ln -sv #{CREW_PREFIX}/share/man/man1/gcov-tool-#{version}.1.gz #{CREW_DEST_PREFIX}/share/man/man1/gcov-tool.1.gz"
system "ln -sv #{CREW_PREFIX}/share/man/man1/gfortran-#{version}.1.gz #{CREW_DEST_PREFIX}/share/man/man1/gfortran.1.gz"
end end
end end
end end
...@@ -3,27 +3,32 @@ require 'package' ...@@ -3,27 +3,32 @@ require 'package'
class Gcc8 < Package class Gcc8 < Package
description 'The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, and Go.' description 'The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, and Go.'
homepage 'https://www.gnu.org/software/gcc/' homepage 'https://www.gnu.org/software/gcc/'
version '8.2.0' version '8.3.0'
source_url 'https://ftpmirror.gnu.org/gcc/gcc-8.2.0/gcc-8.2.0.tar.xz' source_url 'https://ftpmirror.gnu.org/gcc/gcc-8.3.0/gcc-8.3.0.tar.xz'
source_sha256 '196c3c04ba2613f893283977e6011b2345d1cd1af9abeac58e916b1aab3e0080' source_sha256 '64baadfe6cc0f4947a84cb12d7f0dfaf45bb58b7e92461639596c21e02d97d2c'
if ARGV[0] == 'install'
gccver = `gcc -v 2>&1 | tail -1 | cut -d' ' -f3`.chomp
abort "GCC version #{gccver} already installed.".lightgreen unless "#{gccver}" == "No" || "#{gccver}" == "gcc:"
end
binary_url ({ binary_url ({
aarch64: 'https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.2.0-chromeos-armv7l.tar.xz', aarch64: 'https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.3.0-chromeos-armv7l.tar.xz',
armv7l: 'https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.2.0-chromeos-armv7l.tar.xz', armv7l: 'https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.3.0-chromeos-armv7l.tar.xz',
i686: 'https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.2.0-chromeos-i686.tar.xz', i686: 'https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.3.0-chromeos-i686.tar.xz',
x86_64: 'https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.2.0-chromeos-x86_64.tar.xz', x86_64: 'https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.3.0-chromeos-x86_64.tar.xz',
}) })
binary_sha256 ({ binary_sha256 ({
aarch64: '536323fc5dd35e53665a19e65c636f288153efe4cdf31617c32103c64593b285', aarch64: 'fbd8a589befb3d10400af6e4975d02a6940bab4907628f8fc0d6913ea89f70ae',
armv7l: '536323fc5dd35e53665a19e65c636f288153efe4cdf31617c32103c64593b285', armv7l: 'fbd8a589befb3d10400af6e4975d02a6940bab4907628f8fc0d6913ea89f70ae',
i686: 'e37ca8d49198beaa9ba582fc25fa598ab3cd5ed7e46f96a03176fb9002cc6f7b', i686: '4d625e92969fde16c1a92601740e22c07331f8056452edf7cf0bf2c1c88aa152',
x86_64: '6d982f3c35acd3a738e176a3f3b8c4ea093c7be86882153a7711841cf0c80737', x86_64: 'ae8c8c33e4090f7fdbd39b2364754dcfc5f6bdd9a74062fde3eeb6272562f48b',
}) })
depends_on 'unzip' => :build depends_on 'unzip' => :build
depends_on 'gawk' => :build depends_on 'gawk' => :build
depends_on 'dejagnu' => :build # for test depends_on 'dejagnu' => :build # for test
depends_on 'icu4c' => :build # icu version 62.1 depends_on 'icu4c' => :build
depends_on 'python27' => :build depends_on 'python27' => :build
depends_on 'python3' => :build depends_on 'python3' => :build
...@@ -64,7 +69,7 @@ class Gcc8 < Package ...@@ -64,7 +69,7 @@ class Gcc8 < Package
"--disable-libmpx", "--disable-libmpx",
"--enable-static", "--enable-static",
"--enable-shared", "--enable-shared",
"--program-suffix=-8.2", "--program-suffix=-#{version}",
"--with-arch=armv7-a", "--with-arch=armv7-a",
"--with-tune=cortex-a15", "--with-tune=cortex-a15",
"--with-fpu=neon", "--with-fpu=neon",
...@@ -84,7 +89,7 @@ class Gcc8 < Package ...@@ -84,7 +89,7 @@ class Gcc8 < Package
"--disable-libmpx", "--disable-libmpx",
"--enable-static", "--enable-static",
"--enable-shared", "--enable-shared",
"--program-suffix=-8.2", "--program-suffix=-#{version}",
"--with-arch-64=x86-64" "--with-arch-64=x86-64"
when 'i686' when 'i686'
system "../configure", system "../configure",
...@@ -101,7 +106,7 @@ class Gcc8 < Package ...@@ -101,7 +106,7 @@ class Gcc8 < Package
"--disable-libmpx", "--disable-libmpx",
"--enable-static", "--enable-static",
"--enable-shared", "--enable-shared",
"--program-suffix=-8.2", "--program-suffix=-#{version}",
"--with-arch-32=i686" "--with-arch-32=i686"
end end
system 'make' system 'make'
...@@ -111,8 +116,7 @@ class Gcc8 < Package ...@@ -111,8 +116,7 @@ class Gcc8 < Package
# preserve for check, skip check for current version # preserve for check, skip check for current version
def self.check def self.check
Dir.chdir("objdir") do Dir.chdir("objdir") do
#system "ulimit -s 32768" #system "make -k check -j#{CREW_NPROC}"
#system "make -k check -j8"
#system "../contrib/test_summary" #system "../contrib/test_summary"
end end
end end
...@@ -121,6 +125,10 @@ class Gcc8 < Package ...@@ -121,6 +125,10 @@ class Gcc8 < Package
Dir.chdir("objdir") do Dir.chdir("objdir") do
system "make", "DESTDIR=#{CREW_DEST_DIR}", "install-strip" system "make", "DESTDIR=#{CREW_DEST_DIR}", "install-strip"
gcc_arch = `gcc -dumpmachine`.chomp
gcc_dir = "gcc/#{gcc_arch}/#{version}"
gcc_libdir = "#{CREW_LIB_PREFIX}/#{gcc_dir}"
# http://www.linuxfromscratch.org/lfs/view/development/chapter06/gcc.html#contents-gcc # http://www.linuxfromscratch.org/lfs/view/development/chapter06/gcc.html#contents-gcc
# move a misplaced file # move a misplaced file
# The installation stage puts some files used by gdb under the /usr/local/lib(64) directory. This generates spurious error messages when performing ldconfig. This command moves the files to another location. # The installation stage puts some files used by gdb under the /usr/local/lib(64) directory. This generates spurious error messages when performing ldconfig. This command moves the files to another location.
...@@ -131,29 +139,41 @@ class Gcc8 < Package ...@@ -131,29 +139,41 @@ class Gcc8 < Package
system "install -v -dm755 #{CREW_DEST_LIB_PREFIX}/bfd-plugins" system "install -v -dm755 #{CREW_DEST_LIB_PREFIX}/bfd-plugins"
# Add a compatibility symlink to enable building programs with Link Time Optimization (LTO) # Add a compatibility symlink to enable building programs with Link Time Optimization (LTO)
system "ln -sfv #{CREW_PREFIX}/libexec/gcc/$(gcc -dumpmachine)/8.2.0/liblto_plugin.so #{CREW_DEST_LIB_PREFIX}/bfd-plugins/" system "ln -sfv #{CREW_PREFIX}/libexec/#{gcc_dir}/liblto_plugin.so #{CREW_DEST_LIB_PREFIX}/bfd-plugins/"
# Make symbolic links # Make symbolic links
system "ln -sv #{CREW_PREFIX}/bin/gcc-8.2 #{CREW_DEST_PREFIX}/bin/cc" Dir.chdir "#{CREW_DEST_LIB_PREFIX}/#{gcc_dir}" do
system "ln -sv #{CREW_PREFIX}/bin/gcc-8.2 #{CREW_DEST_PREFIX}/bin/gcc" system "find . -type f -maxdepth 1 -exec ln -sv #{gcc_libdir}/{} #{CREW_DEST_LIB_PREFIX}/{} \\;"
system "ln -sv #{CREW_PREFIX}/bin/c++-8.2 #{CREW_DEST_PREFIX}/bin/c++" end
system "ln -sv #{CREW_PREFIX}/bin/g++-8.2 #{CREW_DEST_PREFIX}/bin/g++"
system "ln -sv #{CREW_PREFIX}/bin/cpp-8.2 #{CREW_DEST_PREFIX}/bin/cpp" system "ln -sv #{CREW_PREFIX}/bin/gcc-#{version} #{CREW_DEST_PREFIX}/bin/cc"
system "ln -sv #{CREW_PREFIX}/bin/gcc-ar-8.2 #{CREW_DEST_PREFIX}/bin/gcc-ar" system "ln -sv #{CREW_PREFIX}/bin/gcc-#{version} #{CREW_DEST_PREFIX}/bin/gcc"
system "ln -sv #{CREW_PREFIX}/bin/gcc-nm-8.2 #{CREW_DEST_PREFIX}/bin/gcc-nm" system "ln -sv #{CREW_PREFIX}/bin/c++-#{version} #{CREW_DEST_PREFIX}/bin/c++"
system "ln -sv #{CREW_PREFIX}/bin/gcc-ranlib-8.2 #{CREW_DEST_PREFIX}/bin/gcc-ranlib" system "ln -sv #{CREW_PREFIX}/bin/g++-#{version} #{CREW_DEST_PREFIX}/bin/g++"
system "ln -sv #{CREW_PREFIX}/bin/gcov-8.2 #{CREW_DEST_PREFIX}/bin/gcov" system "ln -sv #{CREW_PREFIX}/bin/cpp-#{version} #{CREW_DEST_PREFIX}/bin/cpp"
system "ln -sv #{CREW_PREFIX}/bin/gcov-dump-8.2 #{CREW_DEST_PREFIX}/bin/gcov-dump" system "ln -sv #{CREW_PREFIX}/bin/gcc-ar-#{version} #{CREW_DEST_PREFIX}/bin/gcc-ar"
system "ln -sv #{CREW_PREFIX}/bin/gcov-tool-8.2 #{CREW_DEST_PREFIX}/bin/gcov-tool" system "ln -sv #{CREW_PREFIX}/bin/gcc-nm-#{version} #{CREW_DEST_PREFIX}/bin/gcc-nm"
system "ln -sv #{CREW_PREFIX}/bin/gfortran-8.2 #{CREW_DEST_PREFIX}/bin/gfortran" system "ln -sv #{CREW_PREFIX}/bin/gcc-ranlib-#{version} #{CREW_DEST_PREFIX}/bin/gcc-ranlib"
system "ln -sv #{CREW_PREFIX}/bin/gcov-#{version} #{CREW_DEST_PREFIX}/bin/gcov"
system "ln -sv #{CREW_PREFIX}/bin/$(gcc -dumpmachine)-c++-8.2 #{CREW_DEST_PREFIX}/bin/$(gcc -dumpmachine)-c++" system "ln -sv #{CREW_PREFIX}/bin/gcov-dump-#{version} #{CREW_DEST_PREFIX}/bin/gcov-dump"
system "ln -sv #{CREW_PREFIX}/bin/$(gcc -dumpmachine)-g++-8.2 #{CREW_DEST_PREFIX}/bin/$(gcc -dumpmachine)-g++" system "ln -sv #{CREW_PREFIX}/bin/gcov-tool-#{version} #{CREW_DEST_PREFIX}/bin/gcov-tool"
system "ln -sv #{CREW_PREFIX}/bin/$(gcc -dumpmachine)-gcc-8.2 #{CREW_DEST_PREFIX}/bin/$(gcc -dumpmachine)-gcc" system "ln -sv #{CREW_PREFIX}/bin/gfortran-#{version} #{CREW_DEST_PREFIX}/bin/gfortran"
system "ln -sv #{CREW_PREFIX}/bin/$(gcc -dumpmachine)-gcc-ar-8.2 #{CREW_DEST_PREFIX}/bin/$(gcc -dumpmachine)-gcc-ar"
system "ln -sv #{CREW_PREFIX}/bin/$(gcc -dumpmachine)-gcc-nm-8.2 #{CREW_DEST_PREFIX}/bin/$(gcc -dumpmachine)-gcc-nm" system "ln -sv #{CREW_PREFIX}/bin/#{gcc_arch}-c++-#{version} #{CREW_DEST_PREFIX}/bin/#{gcc_arch}-c++"
system "ln -sv #{CREW_PREFIX}/bin/$(gcc -dumpmachine)-gcc-ranlib-8.2 #{CREW_DEST_PREFIX}/bin/$(gcc -dumpmachine)-gcc-ranlib" system "ln -sv #{CREW_PREFIX}/bin/#{gcc_arch}-g++-#{version} #{CREW_DEST_PREFIX}/bin/#{gcc_arch}-g++"
system "ln -sv #{CREW_PREFIX}/bin/$(gcc -dumpmachine)-gfortran-8.2 #{CREW_DEST_PREFIX}/bin/$(gcc -dumpmachine)-gfortran" system "ln -sv #{CREW_PREFIX}/bin/#{gcc_arch}-gcc-#{version} #{CREW_DEST_PREFIX}/bin/#{gcc_arch}-gcc"
system "ln -sv #{CREW_PREFIX}/bin/#{gcc_arch}-gcc-ar-#{version} #{CREW_DEST_PREFIX}/bin/#{gcc_arch}-gcc-ar"
system "ln -sv #{CREW_PREFIX}/bin/#{gcc_arch}-gcc-nm-#{version} #{CREW_DEST_PREFIX}/bin/#{gcc_arch}-gcc-nm"
system "ln -sv #{CREW_PREFIX}/bin/#{gcc_arch}-gcc-ranlib-#{version} #{CREW_DEST_PREFIX}/bin/#{gcc_arch}-gcc-ranlib"
system "ln -sv #{CREW_PREFIX}/bin/#{gcc_arch}-gfortran-#{version} #{CREW_DEST_PREFIX}/bin/#{gcc_arch}-gfortran"
system "ln -sv #{CREW_PREFIX}/share/man/man1/cpp-#{version}.1.gz #{CREW_DEST_PREFIX}/share/man/man1/cpp.1.gz"
system "ln -sv #{CREW_PREFIX}/share/man/man1/g++-#{version}.1.gz #{CREW_DEST_PREFIX}/share/man/man1/g++.1.gz"
system "ln -sv #{CREW_PREFIX}/share/man/man1/gcc-#{version}.1.gz #{CREW_DEST_PREFIX}/share/man/man1/gcc.1.gz"
system "ln -sv #{CREW_PREFIX}/share/man/man1/gcov-#{version}.1.gz #{CREW_DEST_PREFIX}/share/man/man1/gcov.1.gz"
system "ln -sv #{CREW_PREFIX}/share/man/man1/gcov-dump-#{version}.1.gz #{CREW_DEST_PREFIX}/share/man/man1/gcov-dump.1.gz"
system "ln -sv #{CREW_PREFIX}/share/man/man1/gcov-tool-#{version}.1.gz #{CREW_DEST_PREFIX}/share/man/man1/gcov-tool.1.gz"
system "ln -sv #{CREW_PREFIX}/share/man/man1/gfortran-#{version}.1.gz #{CREW_DEST_PREFIX}/share/man/man1/gfortran.1.gz"
end end
end end
end end
require 'package'
class Gcc_tools < Package
description 'Tools for working with gcc packages'
homepage 'https://github.com/skycocker/chromebrew'
version '1.0'
source_url 'file:///dev/null'
source_sha256 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'
def self.build
system 'cat << "EOF" > crewfix
#!/bin/bash
# exit on fail
set -e
# define constants
CREW_PREFIX="${CREW_PREFIX:-/usr/local}"
ARCH="$(uname -m)"
LIB_SUFFIX=""
[ "${ARCH}" == "x86_64" ] && LIB_SUFFIX="64"
function download_check () {
cd /tmp
#download
echo "Downloading ${1}..."
curl --progress-bar -C - -L --ssl "${2}" -o "${3}"
#verify
echo "Verifying ${1}..."
echo "${4}" "${3}" | sha256sum -c -
case "${?}" in
0) ;;
*)
echo "Verification failed, something may be wrong with the download."
exit 1;;
esac
}
if [ ! -f "${CREW_PREFIX}/lib${LIB_SUFFIX}/libssp.so.0" ]; then
# prepare gcc8 url and sha256
case "${ARCH}" in
"aarch64"|"armv7l")
url="https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.3.0-chromeos-armv7l.tar.xz"
sha256="fbd8a589befb3d10400af6e4975d02a6940bab4907628f8fc0d6913ea89f70ae"
;;
"i686")
url="https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.3.0-chromeos-i686.tar.xz"
sha256="4d625e92969fde16c1a92601740e22c07331f8056452edf7cf0bf2c1c88aa152"
;;
"x86_64")
url="https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.3.0-chromeos-x86_64.tar.xz"
sha256="ae8c8c33e4090f7fdbd39b2364754dcfc5f6bdd9a74062fde3eeb6272562f48b"
;;
esac
tarfile="$(basename ${url})"
name="${tarfile%%-*}"
download_check "${name}" "${url}" "${tarfile}" "${sha256}"
cd / && tar --wildcards -xvf /tmp/${tarfile} "${CREW_PREFIX#/}/lib${LIB_SUFFIX}/libssp.so*"
rm -f /tmp/${tarfile}
fi
if [ ! -f "${CREW_PREFIX}/bin/ruby" ]; then
# prepare ruby url and sha256
case "${ARCH}" in
"aarch64"|"armv7l")
url="https://dl.bintray.com/chromebrew/chromebrew/ruby-2.5.3-chromeos-armv7l.tar.xz"
sha256="5e485a0320b298e1f5c4ff50d98c6fe6d06ad9a38d9119d580a8b469418e1e6a"
;;
"i686")
url="https://dl.bintray.com/chromebrew/chromebrew/ruby-2.5.3-chromeos-i686.tar.xz"
sha256="6f4a5b96c31ef5ee4f09ac15da4c7a4a9d838ed5233038136ead1e155d17f342"
;;
"x86_64")
url="https://dl.bintray.com/chromebrew/chromebrew/ruby-2.5.3-chromeos-x86_64.tar.xz"
sha256="352b78fc883cf8936136991fda9ca5d49e90b2951626158d6af8ef4b58d67f97"
;;
esac
tarfile="$(basename ${url})"
name="${tarfile%%-*}"
download_check "${name}" "${url}" "${tarfile}" "${sha256}"
cd / && tar -xvf /tmp/${tarfile}
rm -f /tmp/${tarfile}
fi
EOF'
system 'cat << "EOF" > gcc_switcher
#!/bin/bash
gccver=$(gcc -v 2>&1 | tail -1 | cut -d" " -f3)
if [[ "$gccver" == "No" || "$gccver" == "gcc:" ]]; then
echo "Enter the GCC version to install:"
echo "7 = GCC 7.4.0"
echo "8 = GCC 8.3.0"
else
echo "GCC version $gccver currently installed."
echo "Enter the GCC version to install:"
if [ "$gccver" == "8.3.0" ]; then
echo "7 = GCC 7.4.0"
fi
if [ "$gccver" == "7.4.0" ]; then
echo "8 = GCC 8.3.0"
fi
fi
echo "0 = Cancel"
read version
case $version in
7)
crew remove gcc8 && crewfix && crew install gcc7
;;
8)
crew remove gcc7 && crewfix && crew install gcc8
;;
*)
;;
esac
EOF'
end
def self.install
system "install -Dm755 crewfix #{CREW_DEST_PREFIX}/bin/crewfix"
system "install -Dm755 gcc_switcher #{CREW_DEST_PREFIX}/bin/gcc_switcher"
end
def self.postinstall
puts "This package contains two scripts:".lightblue
puts
puts "crewfix - Repairs the crew command if gcc is removed".lightblue
puts "gcc_switcher - Allows switching between gcc versions".lightblue
puts
puts "In most cases, you will only need to use the gcc_switcher command.".lightblue
puts "If the current gcc version is removed manually, however, and the".lightblue
puts "crew command no longer works, you can repair with crewfix.".lightblue
puts
end
end
...@@ -12,6 +12,7 @@ expat ...@@ -12,6 +12,7 @@ expat
filecmd filecmd
flex flex
gawk gawk
gcc_tools
gcc8 gcc8
gdbm gdbm
gettext gettext
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment