From a975e3a41460666466b73eeb71932d8a0c8df002 Mon Sep 17 00:00:00 2001 From: Ed Reel Date: Tue, 29 Jan 2019 10:32:39 -0600 Subject: [PATCH] Add gcc8 package (#3127) Remove gcc package Update gcc7 from 7.3.0-3 to 7.4.0 Change dependency to gcc8 in buildessential Update install.sh to use gcc8 Replace xz package with xzutils Update postinstall message in install.sh Add pre-built binaries for gcc7 and gcc8 --- install.sh | 44 +++++----- packages/buildessential.rb | 4 +- packages/gcc.rb | 27 ------- packages/gcc7.rb | 31 ++++--- packages/gcc8.rb | 160 +++++++++++++++++++++++++++++++++++++ 5 files changed, 202 insertions(+), 64 deletions(-) delete mode 100644 packages/gcc.rb create mode 100644 packages/gcc8.rb diff --git a/install.sh b/install.sh index bbbfea00a..3782b397b 100755 --- a/install.sh +++ b/install.sh @@ -43,13 +43,13 @@ for dir in "${CREW_CONFIG_PATH}/meta" "${CREW_DEST_DIR}" "${CREW_PACKAGES_PATH}" done # prepare url and sha256 -# install only gcc7, ruby, libiconv, git and libssh2 (order matters) +# install only gcc8, ruby, libiconv, git and libssh2 (order matters) urls=() sha256s=() case "${ARCH}" in "aarch64") - urls+=('https://dl.bintray.com/chromebrew/chromebrew/gcc7-7.3.0-3-chromeos-armv7l.tar.xz') - sha256s+=('c9dd2a2b2d195f0f2021dc673d6317e46b5dfaef582f496b4cea1f3c5c2c17ad') + urls+=('https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.2.0-chromeos-armv7l.tar.xz') + sha256s+=('536323fc5dd35e53665a19e65c636f288153efe4cdf31617c32103c64593b285') urls+=('https://dl.bintray.com/chromebrew/chromebrew/ruby-2.5.3-chromeos-armv7l.tar.xz') sha256s+=('5e485a0320b298e1f5c4ff50d98c6fe6d06ad9a38d9119d580a8b469418e1e6a') urls+=('https://dl.bintray.com/chromebrew/chromebrew/libiconv-1.15-chromeos-armv7l.tar.xz') @@ -61,11 +61,11 @@ case "${ARCH}" in ;; "armv7l") if ! type "xz" > /dev/null; then - urls+=('https://github.com/snailium/chrome-cross/releases/download/v1.8.1/xz-5.2.3-chromeos-armv7l.tar.gz') - sha256s+=('4dc9f086ee7613ab0145ec0ed5ac804c80c620c92f515cb62bae8d3c508cbfe7') + urls+=('https://dl.bintray.com/chromebrew/chromebrew/xzutils-5.2.3-2-chromeos-armv7l.tar.xz') + sha256s+=('839ead7097adee016986a9992d8cf8f4c91554ade2b6e111f7d0379c595be366') fi - urls+=('https://dl.bintray.com/chromebrew/chromebrew/gcc7-7.3.0-3-chromeos-armv7l.tar.xz') - sha256s+=('c9dd2a2b2d195f0f2021dc673d6317e46b5dfaef582f496b4cea1f3c5c2c17ad') + urls+=('https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.2.0-chromeos-armv7l.tar.xz') + sha256s+=('536323fc5dd35e53665a19e65c636f288153efe4cdf31617c32103c64593b285') urls+=('https://dl.bintray.com/chromebrew/chromebrew/ruby-2.5.3-chromeos-armv7l.tar.xz') sha256s+=('5e485a0320b298e1f5c4ff50d98c6fe6d06ad9a38d9119d580a8b469418e1e6a') urls+=('https://dl.bintray.com/chromebrew/chromebrew/libiconv-1.15-chromeos-armv7l.tar.xz') @@ -76,8 +76,8 @@ case "${ARCH}" in sha256s+=('6fa84296583273dd9e749a2c54cb1cf688a7dab032e2528de5944a4d9777f037') ;; "i686") - urls+=('https://dl.bintray.com/chromebrew/chromebrew/gcc7-7.3.0-3-chromeos-i686.tar.xz') - sha256s+=('4202ea5e9d703d39c522e5f1d7145b8d682a0380baf53b98309b94816408e0b6') + urls+=('https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.2.0-chromeos-i686.tar.xz') + sha256s+=('e37ca8d49198beaa9ba582fc25fa598ab3cd5ed7e46f96a03176fb9002cc6f7b') urls+=('https://dl.bintray.com/chromebrew/chromebrew/ruby-2.5.3-chromeos-i686.tar.xz') sha256s+=('6f4a5b96c31ef5ee4f09ac15da4c7a4a9d838ed5233038136ead1e155d17f342') urls+=('https://dl.bintray.com/chromebrew/chromebrew/libiconv-1.15-chromeos-i686.tar.xz') @@ -88,8 +88,8 @@ case "${ARCH}" in sha256s+=('771b2d30a49dd691db8456f773da404753d368f3c31d03c682c552ea0b5eb65e') ;; "x86_64") - urls+=('https://dl.bintray.com/chromebrew/chromebrew/gcc7-7.3.0-3-chromeos-x86_64.tar.xz') - sha256s+=('992fa6556e3c4b45ae548b0ce64e1c5cafaffd109fe9aba5d857c6c569e5b33e') + urls+=('https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.2.0-chromeos-x86_64.tar.xz') + sha256s+=('6d982f3c35acd3a738e176a3f3b8c4ea093c7be86882153a7711841cf0c80737') urls+=('https://dl.bintray.com/chromebrew/chromebrew/ruby-2.5.3-chromeos-x86_64.tar.xz') sha256s+=('352b78fc883cf8936136991fda9ca5d49e90b2951626158d6af8ef4b58d67f97') urls+=('https://dl.bintray.com/chromebrew/chromebrew/libiconv-1.15-chromeos-x86_64.tar.xz') @@ -213,18 +213,26 @@ if [[ "${CREW_PREFIX}" != "/usr/local" ]]; then echo 'source ~/.bashrc' echo fi -echo "To set the default PAGER environment variable to be able to use less:" +echo "To set the default PAGER environment variable to use less:" echo "echo \"export PAGER='less'\" >> ~/.bashrc && . ~/.bashrc" echo echo "Alternatively, you could use most. Why settle for less, right?" echo "echo \"export PAGER='most'\" >> ~/.bashrc && . ~/.bashrc" echo -echo "You may wish to set the EDITOR environment variable." -echo "For example, to set 'vim' as the default editor, execute the following:" +echo "Below are some text editor suggestions." +echo +echo "To install 'nano', execute:" +echo "crew install nano" +echo +echo "Or, to get an updated version of 'vim', execute:" +echo "crew install vim" +echo +echo "You may wish to set the EDITOR environment variable for an editor default." +echo +echo "For example, to set 'nano' as the default editor, execute:" +echo "echo \"export EDITOR='nano'\" >> ~/.bashrc && . ~/.bashrc" +echo +echo "To set 'vim' as the default editor, execute:" echo "echo \"export EDITOR='vim'\" >> ~/.bashrc && . ~/.bashrc" -echo "Nano is a simple text editor that is the default on Chrome OS," -echo " and is recommended." -echo "To install 'nano', run 'crew install nano'." -echo "Or, to get an updated version of 'vim', run 'crew install vim'." echo echo "Chromebrew installed successfully and package lists updated." diff --git a/packages/buildessential.rb b/packages/buildessential.rb index 06dcd2d47..c8c999058 100644 --- a/packages/buildessential.rb +++ b/packages/buildessential.rb @@ -3,11 +3,11 @@ require 'package' class Buildessential < Package description 'A collection of tools essential to compile and build software.' homepage '' - version '1.3' + version '1.4' is_fake - depends_on 'gcc7' + depends_on 'gcc8' depends_on 'linuxheaders' depends_on 'make' depends_on 'pkgconfig' diff --git a/packages/gcc.rb b/packages/gcc.rb deleted file mode 100644 index 9b7560cb6..000000000 --- a/packages/gcc.rb +++ /dev/null @@ -1,27 +0,0 @@ -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 '4.9.4-1' - - binary_url ({ - aarch64: 'https://dl.bintray.com/chromebrew/chromebrew-cross/gcc-4.9.4-1-chromeos-armv7l.tar.xz', - armv7l: 'https://dl.bintray.com/chromebrew/chromebrew-cross/gcc-4.9.4-1-chromeos-armv7l.tar.xz', - i686: 'https://dl.bintray.com/chromebrew/chromebrew-cross/gcc-4.9.4-1-chromeos-i686.tar.xz', - x86_64: 'https://dl.bintray.com/chromebrew/chromebrew-cross/gcc-4.9.4-1-chromeos-x86_64.tar.xz', - }) - binary_sha256 ({ - aarch64: 'ecb047a9f52ea6b24313d4329b00236b6880e12df684e52e34e9664127d447c6', - armv7l: 'ecb047a9f52ea6b24313d4329b00236b6880e12df684e52e34e9664127d447c6', - i686: '9a8b20b58a564c9557c74b2b2769ddc68c110211588356b71c533aac6d54431b', - x86_64: '1ae1f58ca4b9fee3b0f68856e5d49b2feeb90e259e8d885f339c9aa8091f27c8', - }) - - depends_on 'binutils' - depends_on 'gmp' - depends_on 'mpfr' - depends_on 'mpc' - depends_on 'isl' - depends_on 'glibc' -end diff --git a/packages/gcc7.rb b/packages/gcc7.rb index f3f55cc96..b2e297364 100644 --- a/packages/gcc7.rb +++ b/packages/gcc7.rb @@ -3,27 +3,27 @@ require 'package' class Gcc7 < 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 '7.3.0-3' - source_url 'https://github.com/gcc-mirror/gcc/archive/gcc-7_3_0-release.tar.gz' - source_sha256 'af11c397296cab69996723b9d828c98a9bb749447ac8f7ed67458bcdb60311ed' + version '7.4.0' + source_url 'https://ftpmirror.gnu.org/gcc/gcc-7.4.0/gcc-7.4.0.tar.xz' + source_sha256 'eddde28d04f334aec1604456e536416549e9b1aa137fc69204e65eb0c009fe51' binary_url ({ - aarch64: 'https://dl.bintray.com/chromebrew/chromebrew/gcc7-7.3.0-3-chromeos-armv7l.tar.xz', - armv7l: 'https://dl.bintray.com/chromebrew/chromebrew/gcc7-7.3.0-3-chromeos-armv7l.tar.xz', - i686: 'https://dl.bintray.com/chromebrew/chromebrew/gcc7-7.3.0-3-chromeos-i686.tar.xz', - x86_64: 'https://dl.bintray.com/chromebrew/chromebrew/gcc7-7.3.0-3-chromeos-x86_64.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', + i686: 'https://dl.bintray.com/chromebrew/chromebrew/gcc7-7.4.0-chromeos-i686.tar.xz', + x86_64: 'https://dl.bintray.com/chromebrew/chromebrew/gcc7-7.4.0-chromeos-x86_64.tar.xz', }) binary_sha256 ({ - aarch64: 'c9dd2a2b2d195f0f2021dc673d6317e46b5dfaef582f496b4cea1f3c5c2c17ad', - armv7l: 'c9dd2a2b2d195f0f2021dc673d6317e46b5dfaef582f496b4cea1f3c5c2c17ad', - i686: '4202ea5e9d703d39c522e5f1d7145b8d682a0380baf53b98309b94816408e0b6', - x86_64: '992fa6556e3c4b45ae548b0ce64e1c5cafaffd109fe9aba5d857c6c569e5b33e', + aarch64: '07126320a193d947aeac51f1827ff954c322a8f43014f3cff146715b72f9d7f8', + armv7l: '07126320a193d947aeac51f1827ff954c322a8f43014f3cff146715b72f9d7f8', + i686: '72cd956d055ad418b052dab407ec3a2b16663b09c396073a23bd12828fcf03c3', + x86_64: '6cce57e98836ccc3c6773df1627bca2102b4f89c7abf64dc47f7b97120b0e01b', }) depends_on 'unzip' => :build depends_on 'gawk' => :build depends_on 'dejagnu' => :build # for test - #depends_on 'gcc' => :build # gcc version 4.9.4 + depends_on 'gcc8' => :build # gcc version 8.2.0 depends_on 'icu4c' => :build # icu version 62.1 depends_on 'python27' => :build depends_on 'python3' => :build @@ -51,7 +51,6 @@ class Gcc7 < Package "--host=armv7l-cros-linux-gnueabihf", "--target=armv7l-cros-linux-gnueabihf", "--enable-checking=release", - "--enable-languages=c,c++,fortran", "--disable-multilib", "--enable-threads=posix", "--disable-bootstrap", @@ -65,7 +64,7 @@ class Gcc7 < Package "--with-fpu=neon", "--with-float=hard", "--with-default-libstdcxx-abi=gcc4-compatible" - when "x86_64" + when 'x86_64' system "../configure", "--prefix=#{CREW_PREFIX}", "--libdir=#{CREW_LIB_PREFIX}", @@ -73,7 +72,6 @@ class Gcc7 < Package "--host=#{ARCH}-cros-linux-gnu", "--target=#{ARCH}-cros-linux-gnu", "--enable-checking=release", - "--enable-languages=c,c++,fortran", "--disable-multilib", "--enable-threads=posix", "--disable-bootstrap", @@ -84,7 +82,7 @@ class Gcc7 < Package "--program-suffix=-7.3", "--with-arch-64=x86-64", "--with-default-libstdcxx-abi=gcc4-compatible" - when "i686" + when 'i686' system "../configure", "--prefix=#{CREW_PREFIX}", "--libdir=#{CREW_LIB_PREFIX}", @@ -92,7 +90,6 @@ class Gcc7 < Package "--host=#{ARCH}-cros-linux-gnu", "--target=#{ARCH}-cros-linux-gnu", "--enable-checking=release", - "--enable-languages=c,c++,fortran", "--disable-multilib", "--enable-threads=posix", "--disable-bootstrap", diff --git a/packages/gcc8.rb b/packages/gcc8.rb new file mode 100644 index 000000000..2d6f3f6b9 --- /dev/null +++ b/packages/gcc8.rb @@ -0,0 +1,160 @@ +require 'package' + +class Gcc8 < 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 '8.2.0' + source_url 'https://ftpmirror.gnu.org/gcc/gcc-8.2.0/gcc-8.2.0.tar.xz' + source_sha256 '196c3c04ba2613f893283977e6011b2345d1cd1af9abeac58e916b1aab3e0080' + + binary_url ({ + aarch64: 'https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.2.0-chromeos-armv7l.tar.xz', + armv7l: 'https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.2.0-chromeos-armv7l.tar.xz', + i686: 'https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.2.0-chromeos-i686.tar.xz', + x86_64: 'https://dl.bintray.com/chromebrew/chromebrew/gcc8-8.2.0-chromeos-x86_64.tar.xz', + }) + binary_sha256 ({ + aarch64: '536323fc5dd35e53665a19e65c636f288153efe4cdf31617c32103c64593b285', + armv7l: '536323fc5dd35e53665a19e65c636f288153efe4cdf31617c32103c64593b285', + i686: 'e37ca8d49198beaa9ba582fc25fa598ab3cd5ed7e46f96a03176fb9002cc6f7b', + x86_64: '6d982f3c35acd3a738e176a3f3b8c4ea093c7be86882153a7711841cf0c80737', + }) + + depends_on 'unzip' => :build + depends_on 'gawk' => :build + depends_on 'dejagnu' => :build # for test + depends_on 'gcc7' => :build # gcc version 7.4.0 + depends_on 'icu4c' => :build # icu version 62.1 + depends_on 'python27' => :build + depends_on 'python3' => :build + + depends_on 'binutils' + depends_on 'gmp' + depends_on 'mpfr' + depends_on 'mpc' + depends_on 'isl' + depends_on 'cloog' + depends_on 'glibc' + + def self.patch + # See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86724#c4. + system "sed -i '40i#include ' gcc/graphite.h" + system "sed -i '41i#include ' gcc/graphite.h" + end + + def self.build + # previous compile issue + # /usr/local/bin/ld: cannot find crti.o: No such file or directory + # /usr/local/bin/ld: cannot find /usr/lib64/libc_nonshared.a + ENV["LIBRARY_PATH"] = "#{CREW_LIB_PREFIX}" # fix x86_64 issues + system "mkdir -p objdir" + Dir.chdir("objdir") do + case ARCH + when 'armv7l', 'aarch64' + system "../configure", + "--prefix=#{CREW_PREFIX}", + "--libdir=#{CREW_LIB_PREFIX}", + "--build=armv7l-cros-linux-gnueabihf", + "--host=armv7l-cros-linux-gnueabihf", + "--target=armv7l-cros-linux-gnueabihf", + "--enable-checking=release", + "--disable-multilib", + "--enable-threads=posix", + "--disable-bootstrap", + "--disable-werror", + "--disable-libmpx", + "--enable-static", + "--enable-shared", + "--program-suffix=-8.2", + "--with-arch=armv7-a", + "--with-tune=cortex-a15", + "--with-fpu=neon", + "--with-float=hard" + when 'x86_64' + system "../configure", + "--prefix=#{CREW_PREFIX}", + "--libdir=#{CREW_LIB_PREFIX}", + "--build=#{ARCH}-cros-linux-gnu", + "--host=#{ARCH}-cros-linux-gnu", + "--target=#{ARCH}-cros-linux-gnu", + "--enable-checking=release", + "--disable-multilib", + "--enable-threads=posix", + "--disable-bootstrap", + "--disable-werror", + "--disable-libmpx", + "--enable-static", + "--enable-shared", + "--program-suffix=-8.2", + "--with-arch-64=x86-64" + when 'i686' + system "../configure", + "--prefix=#{CREW_PREFIX}", + "--libdir=#{CREW_LIB_PREFIX}", + "--build=#{ARCH}-cros-linux-gnu", + "--host=#{ARCH}-cros-linux-gnu", + "--target=#{ARCH}-cros-linux-gnu", + "--enable-checking=release", + "--disable-multilib", + "--enable-threads=posix", + "--disable-bootstrap", + "--disable-werror", + "--disable-libmpx", + "--enable-static", + "--enable-shared", + "--program-suffix=-8.2", + "--with-arch-32=i686" + end + system 'make' + end + end + + # preserve for check, skip check for current version + def self.check + Dir.chdir("objdir") do + #system "ulimit -s 32768" + #system "make -k check -j8" + #system "../contrib/test_summary" + end + end + + def self.install + Dir.chdir("objdir") do + system "make", "DESTDIR=#{CREW_DEST_DIR}", "install-strip" + + # http://www.linuxfromscratch.org/lfs/view/development/chapter06/gcc.html#contents-gcc + # 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. + system "mkdir -pv #{CREW_DEST_PREFIX}/share/gdb/auto-load/usr/lib" + system "mv -v #{CREW_DEST_LIB_PREFIX}/*gdb.py #{CREW_DEST_PREFIX}/share/gdb/auto-load/usr/lib" + + # Install Binary File Descriptor library (BFD) + system "install -v -dm755 #{CREW_DEST_LIB_PREFIX}/bfd-plugins" + + # 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/" + + # Make symbolic links + system "ln -sv #{CREW_PREFIX}/bin/gcc-8.2 #{CREW_DEST_PREFIX}/bin/cc" + system "ln -sv #{CREW_PREFIX}/bin/gcc-8.2 #{CREW_DEST_PREFIX}/bin/gcc" + system "ln -sv #{CREW_PREFIX}/bin/c++-8.2 #{CREW_DEST_PREFIX}/bin/c++" + 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-ar-8.2 #{CREW_DEST_PREFIX}/bin/gcc-ar" + system "ln -sv #{CREW_PREFIX}/bin/gcc-nm-8.2 #{CREW_DEST_PREFIX}/bin/gcc-nm" + system "ln -sv #{CREW_PREFIX}/bin/gcc-ranlib-8.2 #{CREW_DEST_PREFIX}/bin/gcc-ranlib" + system "ln -sv #{CREW_PREFIX}/bin/gcov-8.2 #{CREW_DEST_PREFIX}/bin/gcov" + system "ln -sv #{CREW_PREFIX}/bin/gcov-dump-8.2 #{CREW_DEST_PREFIX}/bin/gcov-dump" + system "ln -sv #{CREW_PREFIX}/bin/gcov-tool-8.2 #{CREW_DEST_PREFIX}/bin/gcov-tool" + system "ln -sv #{CREW_PREFIX}/bin/gfortran-8.2 #{CREW_DEST_PREFIX}/bin/gfortran" + + system "ln -sv #{CREW_PREFIX}/bin/$(gcc -dumpmachine)-c++-8.2 #{CREW_DEST_PREFIX}/bin/$(gcc -dumpmachine)-c++" + system "ln -sv #{CREW_PREFIX}/bin/$(gcc -dumpmachine)-g++-8.2 #{CREW_DEST_PREFIX}/bin/$(gcc -dumpmachine)-g++" + system "ln -sv #{CREW_PREFIX}/bin/$(gcc -dumpmachine)-gcc-8.2 #{CREW_DEST_PREFIX}/bin/$(gcc -dumpmachine)-gcc" + 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 -dumpmachine)-gcc-ranlib-8.2 #{CREW_DEST_PREFIX}/bin/$(gcc -dumpmachine)-gcc-ranlib" + system "ln -sv #{CREW_PREFIX}/bin/$(gcc -dumpmachine)-gfortran-8.2 #{CREW_DEST_PREFIX}/bin/$(gcc -dumpmachine)-gfortran" + end + end +end