From 1c7204fa8921fd10785760f07bcc36ad11fa9cef Mon Sep 17 00:00:00 2001 From: Satadru Pramanik Date: Thu, 20 Jan 2022 12:48:59 -0500 Subject: [PATCH] New musl toolchain w/ static git, curl, lzip (and gcc11 rebuilds to fix brokenness on i686) (#6431) * Musl revamp * Cleanup Musl Packages * fixup musl_libnghttp2 * fixup musl_libucontext --- lib/musl.rb | 98 ++++++ lib/package.rb | 12 +- packages/curl.rb | 218 +------------ packages/gcc11.rb | 70 ++--- packages/git.rb | 487 +++++------------------------- packages/libcurl.rb | 64 +++- packages/libssp.rb | 24 +- packages/lzip.rb | 60 +--- packages/musl_brotli.rb | 82 +---- packages/musl_bz2.rb | 78 +++++ packages/musl_c_ares.rb | 111 +++---- packages/musl_cc_toolchain.rb | 44 +++ packages/musl_curl.rb | 176 +++++++++++ packages/musl_cyrus_sasl.rb | 75 +---- packages/musl_expat.rb | 30 +- packages/musl_getaddrinfo_test.rb | 76 +++++ packages/musl_krb5.rb | 103 ++----- packages/musl_libbacktrace.rb | 42 +-- packages/musl_libidn2.rb | 81 +---- packages/musl_libnghttp2.rb | 83 +---- packages/musl_libssh.rb | 87 ++---- packages/musl_libucontext.rb | 62 ++-- packages/musl_libunbound.rb | 58 ++++ packages/musl_libunistring.rb | 79 +---- packages/musl_libunwind.rb | 56 +--- packages/musl_linuxheaders.rb | 57 ++++ packages/musl_lz4.rb | 71 +---- packages/musl_native_toolchain.rb | 130 +++++--- packages/musl_ncurses.rb | 84 ++---- packages/musl_obstack.rb | 40 +++ packages/musl_openssl.rb | 108 +++---- packages/musl_perl.rb | 100 ++++++ packages/musl_toolchain.rb | 14 + packages/musl_wolfssl.rb | 65 ++++ packages/musl_xz.rb | 71 +---- packages/musl_zlib.rb | 83 +---- packages/musl_zstd.rb | 84 +----- 37 files changed, 1428 insertions(+), 1835 deletions(-) create mode 100644 lib/musl.rb create mode 100644 packages/musl_bz2.rb create mode 100644 packages/musl_cc_toolchain.rb create mode 100644 packages/musl_curl.rb create mode 100644 packages/musl_getaddrinfo_test.rb create mode 100644 packages/musl_libunbound.rb create mode 100644 packages/musl_linuxheaders.rb create mode 100644 packages/musl_obstack.rb create mode 100644 packages/musl_perl.rb create mode 100644 packages/musl_toolchain.rb create mode 100644 packages/musl_wolfssl.rb diff --git a/lib/musl.rb b/lib/musl.rb new file mode 100644 index 0000000000..0d60969a9e --- /dev/null +++ b/lib/musl.rb @@ -0,0 +1,98 @@ +ENV['CREW_DISABLE_ENV_OPTIONS'] = '1' +warn_level = $VERBOSE +$VERBOSE = nil +load "#{CREW_LIB_PATH}lib/const.rb" +# Defines common musl build constants used in musl builds +MUSL_ABI = '' +MUSL_ARCH = ARCH +MUSL_ARCH_SSP_CFLAGS = '' +MUSL_ARCH_C_FLAGS = '' +MUSL_ARCH_CXX_FLAGS = '' +case ARCH +when 'aarch64', 'armv7l' + MUSL_ABI = 'eabihf' + MUSL_ARCH = 'armhf' +end + +MUSL_CFLAGS = "-isysroot=#{CREW_MUSL_PREFIX} -B#{CREW_MUSL_PREFIX}/include -flto -pipe -O2 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{MUSL_ARCH_C_FLAGS} #{MUSL_ARCH_SSP_CFLAGS} -fcommon -fPIC -ffunction-sections -fdata-sections" +MUSL_CXXFLAGS = "-isysroot=#{CREW_MUSL_PREFIX} -B#{CREW_MUSL_PREFIX}/include -flto -pipe -O2 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{MUSL_ARCH_CXX_FLAGS} #{MUSL_ARCH_SSP_CFLAGS} -fcommon -fPIC -ffunction-sections -fdata-sections" +# Setting -static & -flto in CMAKE LDFLAGS breaks builds +MUSL_CMAKE_LDFLAGS = "-flto" +unless @pkg.is_static? + MUSL_LDFLAGS = "-L#{CREW_MUSL_PREFIX}/lib -Wl,-rpath=#{CREW_MUSL_PREFIX}/lib -Wl,--enable-new-dtags -Wl,--dynamic-linker,#{CREW_MUSL_PREFIX}/lib/libc.so -Wl,--gc-sections -flto -isysroot=#{CREW_MUSL_PREFIX} " + MUSL_PKG_CONFIG = 'pkg-config' +else + MUSL_LDFLAGS = "-L#{CREW_MUSL_PREFIX}/lib -Wl,-rpath=#{CREW_MUSL_PREFIX}/lib -Wl,--enable-new-dtags -Wl,--gc-sections -flto -isysroot=#{CREW_MUSL_PREFIX} -static " + MUSL_PKG_CONFIG = 'pkg-config --static' +end +MUSL_ENV_OPTIONS = "PATH=#{CREW_MUSL_PREFIX}/bin:#{ENV['PATH']} \ + CC='#{CREW_MUSL_PREFIX}/bin/#{ARCH}-linux-musl#{MUSL_ABI}-gcc' \ + CXX='#{CREW_MUSL_PREFIX}/bin/#{ARCH}-linux-musl#{MUSL_ABI}-g++' \ + LD='#{CREW_MUSL_PREFIX}/bin/#{ARCH}-linux-musl#{MUSL_ABI}-ld.gold -L#{CREW_MUSL_PREFIX}/lib' \ + AR=#{CREW_MUSL_PREFIX}/bin/#{ARCH}-linux-musl#{MUSL_ABI}-ar \ + LIBRARY_PATH=#{CREW_MUSL_PREFIX}/lib \ + MUSL_PKG_CONFIG='#{MUSL_PKG_CONFIG}' \ + PKG_CONFIG_LIBDIR=#{CREW_MUSL_PREFIX}/lib/pkgconfig \ + CFLAGS='#{MUSL_CFLAGS}' \ + CXXFLAGS='#{MUSL_CXXFLAGS}' \ + CPPFLAGS='-I#{CREW_MUSL_PREFIX}/include -fcommon -idirafter#{CREW_PREFIX}/include' \ + LDFLAGS='#{MUSL_LDFLAGS}'" +MUSL_CMAKE_OPTIONS = "PATH=#{CREW_MUSL_PREFIX}/bin:#{CREW_MUSL_PREFIX}/#{ARCH}-linux-musl#{MUSL_ABI}/bin:#{ENV['PATH']} \ + CC='#{CREW_MUSL_PREFIX}/bin/#{ARCH}-linux-musl#{MUSL_ABI}-gcc' \ + CXX='#{CREW_MUSL_PREFIX}/bin/#{ARCH}-linux-musl#{MUSL_ABI}-g++' \ + LD=#{CREW_MUSL_PREFIX}/bin/#{ARCH}-linux-musl#{MUSL_ABI}-ld.gold \ + AR=#{CREW_MUSL_PREFIX}/bin/#{ARCH}-linux-musl#{MUSL_ABI}-ar \ + MUSL_PKG_CONFIG='#{MUSL_PKG_CONFIG}' \ + PKG_CONFIG_LIBDIR=#{CREW_MUSL_PREFIX}/lib/pkgconfig \ + CFLAGS='#{MUSL_CFLAGS}' \ + CXXFLAGS='#{MUSL_CXXFLAGS}' \ + CPPFLAGS='-I#{CREW_MUSL_PREFIX}/include -fcommon -idirafter#{CREW_PREFIX}/include' \ + LDFLAGS='#{MUSL_CMAKE_LDFLAGS}' \ + cmake \ + -DCMAKE_INSTALL_PREFIX='#{CREW_MUSL_PREFIX}' \ + -DCMAKE_INSTALL_LIBDIR='#{CREW_MUSL_PREFIX}/lib' \ + -DCMAKE_LIBRARY_PATH='#{CREW_MUSL_PREFIX}/lib' \ + -DCMAKE_C_COMPILER=#{CREW_MUSL_PREFIX}/bin/#{ARCH}-linux-musl#{MUSL_ABI}-gcc \ + -DCMAKE_CXX_COMPILER=#{CREW_MUSL_PREFIX}/bin/#{ARCH}-linux-musl#{MUSL_ABI}-g++ \ + -DCMAKE_INCLUDE_DIRECTORIES_BEFORE=ON \ + -DINCLUDE_DIRECTORIES=#{CREW_MUSL_PREFIX}/include \ + -DCMAKE_C_FLAGS='#{MUSL_CFLAGS}' \ + -DCMAKE_CXX_FLAGS='#{MUSL_CXXFLAGS}' \ + -DCMAKE_EXE_LINKER_FLAGS='#{MUSL_CMAKE_LDFLAGS}' \ + -DCMAKE_SHARED_LINKER_FLAGS='#{MUSL_CMAKE_LDFLAGS}' \ + -DCMAKE_STATIC_LINKER_FLAGS='#{MUSL_CMAKE_LDFLAGS}' \ + -DCMAKE_MODULE_LINKER_FLAGS='#{MUSL_CMAKE_LDFLAGS}' \ + -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=TRUE \ + -DCMAKE_BUILD_TYPE=Release" + +$VERBOSE = warn_level + +class Musl + class << self + def patchelf + puts 'Running Musl.patchelf'.lightblue + abort('No Patchelf found!').lightred unless File.exist?("#{CREW_PREFIX}/bin/patchelf") + + @execfiles = `find . -executable -type f ! \\( -name \"*.a\" \\) -exec sh -c \"file -i \'{}\' | grep -q \'executable; charset=binary\'\" \\; -exec ls -1i {} \\; | sort -u -n -s -k1,1 | awk '{print $2}'`.chomp + return if @execfiles.empty? || @execfiles.nil? + + puts 'Running patchelf to patch binaries for musl paths'.lightblue + @execfiles.each_line do |execfiletopatch| + execfiletopatch.slice! '.' + execfiletopatch = `pwd`.chomp + execfiletopatch.chomp + system "patchelf --set-interpreter #{CREW_MUSL_PREFIX}/lib/libc.so #{execfiletopatch}" + system "patchelf --set-rpath #{CREW_MUSL_PREFIX}/lib #{execfiletopatch}" + @neededlibs = `patchelf --print-needed #{execfiletopatch}`.chomp + next if @neededlibs.empty? || @neededlibs.nil? + + @neededlibs.each_line do |neededlibspatch| + next if neededlibspatch.include?("#{CREW_MUSL_PREFIX}/lib") + + @neededlibspatchednamepath = "#{CREW_MUSL_PREFIX}/lib/" + File.basename(neededlibspatch) + puts "patchelf --replace-needed #{neededlibspatch.chomp} #{@neededlibspatchednamepath.chomp} #{execfiletopatch}" + system "patchelf --replace-needed #{neededlibspatch.chomp} #{@neededlibspatchednamepath.chomp} #{execfiletopatch}" + end + end + end + end +end diff --git a/lib/package.rb b/lib/package.rb index 537b5dce05..a89ff7fc53 100644 --- a/lib/package.rb +++ b/lib/package.rb @@ -3,7 +3,7 @@ require 'package_helpers' class Package property :description, :homepage, :version, :license, :compatibility, :binary_url, :binary_sha256, :source_url, :source_sha256, - :git_branch, :git_hashtag, :is_fake + :git_branch, :git_hashtag, :is_fake, :is_static create_placeholder :preflight, # Function for checks to see if install should occur. :patch, # Function to perform patch operations prior to build from source. @@ -17,7 +17,7 @@ class Package :remove # Function to perform after package removal. class << self - attr_reader :is_fake + attr_reader :is_fake, :is_static attr_accessor :name, :is_dep, :in_build, :build_from_source attr_accessor :in_upgrade end @@ -110,6 +110,14 @@ class Package @is_fake end + def self.is_static + @is_static = true + end + + def self.is_static? + @is_static + end + def self.system(*args, **opt_args) # add "-j#" argument to "make" at compile-time, if necessary diff --git a/packages/curl.rb b/packages/curl.rb index da6425a7a6..f00d699ae9 100644 --- a/packages/curl.rb +++ b/packages/curl.rb @@ -3,224 +3,12 @@ require 'package' class Curl < Package description 'Command line tool and library for transferring data with URLs.' homepage 'https://curl.se/' - @_ver = '7.79.1' + @_ver = '7.81.0' version @_ver license 'curl' compatibility 'all' - source_url "https://github.com/curl/curl/releases/download/curl-#{@_ver.gsub('.', '_')}/curl-#{@_ver}.tar.xz" - source_sha256 '0606f74b1182ab732a17c11613cbbaf7084f2e6cca432642d0e3ad7c224c3689' + is_fake - binary_url({ - aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/curl/7.79.1_armv7l/curl-7.79.1-chromeos-armv7l.tpxz', - armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/curl/7.79.1_armv7l/curl-7.79.1-chromeos-armv7l.tpxz', - i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/curl/7.79.1_i686/curl-7.79.1-chromeos-i686.tpxz', - x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/curl/7.79.1_x86_64/curl-7.79.1-chromeos-x86_64.tpxz' - }) - binary_sha256({ - aarch64: '28c0602e433b079f2767f4cea9de66d5a20eb20b384c1575972911033241e630', - armv7l: '28c0602e433b079f2767f4cea9de66d5a20eb20b384c1575972911033241e630', - i686: '9594f4aa3265879bdaf6b301942bb093334459e642ef81a380a4d801e787a561', - x86_64: '16ec35a35eb37a81ce3c3775f23299ca2bed4af567ea546297a169af05cca327' - }) + depends_on 'libcurl' - depends_on 'ca_certificates' => :build - depends_on 'libunbound' => :build - depends_on 'musl_brotli' => :build - depends_on 'musl_c_ares' => :build - depends_on 'musl_cyrus_sasl' => :build - depends_on 'musl_krb5' => :build - depends_on 'musl_libidn2' => :build - depends_on 'musl_libnghttp2' => :build - depends_on 'musl_libssh' => :build - depends_on 'musl_libunistring' => :build - depends_on 'musl_native_toolchain' => :build - depends_on 'musl_ncurses' => :build - depends_on 'musl_openssl' => :build - depends_on 'musl_zlib' => :build - depends_on 'musl_zstd' => :build - depends_on 'rust' => :build - depends_on 'valgrind' => :build - depends_on 'libcurl' if ARCH == 'i686' - - def self.patch - # Curl 7.78.0 needs a patch to enable static builds. - # See https://github.com/moparisthebest/static-curl/commit/0ab82474d449b7f2ea0d43451fd3951ebd49ddc3 - @curl_778_static_patch = <<~CURL_HEREDOC - diff --git a/src/Makefile.am b/src/Makefile.am - index 734373187..37e3a1564 100644 - --- a/src/Makefile.am - +++ b/src/Makefile.am - @@ -66,6 +66,9 @@ else - curl_LDADD = \$(top_builddir)/lib/libcurl.la @NSS_LIBS@ @SSL_LIBS@ @ZLIB_LIBS@ @CURL_NETWORK_AND_TIME_LIBS@ - endif - #{' '} - +curl_LDFLAGS = \$(curl_LDFLAGS) - +curl_CPPFLAGS = \$(AM_CPPFLAGS) - + - # if unit tests are enabled, build a static library to link them with - if BUILD_UNITTESTS - noinst_LTLIBRARIES = libcurltool.la - CURL_HEREDOC - IO.write('curl_778_static.patch', @curl_778_static_patch) - system 'patch -Np1 -i curl_778_static.patch' - end - - def self.build - @abi = '' - @arch_ssp_cflags = '' - @arch_c_flags = '' - @arch_cxx_flags = '' - case ARCH - when 'aarch64', 'armv7l' - @abi = 'eabihf' - @openssl_configure_target = 'linux-generic32' - when 'i686' - @arch_ssp_cflags = '-fno-stack-protector' - @openssl_configure_target = 'linux-x86' - when 'x86_64' - @openssl_configure_target = 'linux-x86_64' - end - - @cflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_c_flags} #{@arch_ssp_cflags} -fcommon" - @cxxflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_cxx_flags} #{@arch_ssp_cflags} -fcommon" - @ldflags = "-L#{CREW_PREFIX}/musl/lib -flto -static" - @cmake_ldflags = '-flto' - @curldep_cmake_options = "PATH=#{CREW_PREFIX}/musl/bin:#{CREW_PREFIX}/musl/#{ARCH}-linux-musl#{@abi}/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - AR=#{CREW_PREFIX}/bin/ar \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@cmake_ldflags}' \ - cmake \ - -DCMAKE_INSTALL_PREFIX='#{CREW_PREFIX}/musl' \ - -DCMAKE_INSTALL_LIBDIR='#{CREW_PREFIX}/musl/lib' \ - -DCMAKE_LIBRARY_PATH='#{CREW_PREFIX}/musl/lib' \ - -DCMAKE_C_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc \ - -DCMAKE_CXX_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++ \ - -DCMAKE_INCLUDE_DIRECTORIES_BEFORE=ON \ - -DINCLUDE_DIRECTORIES=#{CREW_PREFIX}/musl/include \ - -DCMAKE_C_FLAGS='#{@cflags}' \ - -DCMAKE_CXX_FLAGS='#{@cxxflags}' \ - -DCMAKE_EXE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_SHARED_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_STATIC_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_MODULE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DPROPERTY_INTERPROCEDURAL_OPTIMIZATION=TRUE \ - -DCMAKE_BUILD_TYPE=Release" - - @curldep_env_options = "PATH=#{CREW_PREFIX}/musl/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - PKG_CONFIG_LIBDIR=#{CREW_PREFIX}/musl/lib \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -DCURL_STATICLIB -DNGHTTP2_STATICLIB -fcommon' \ - LDFLAGS='#{@ldflags}'" - - @krb5_env_options = "PATH=#{CREW_PREFIX}/musl/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - LIBS='-l:libncursesw.a -l:libtinfow.a' \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -DCURL_STATICLIB -DNGHTTP2_STATICLIB -fcommon' \ - LDFLAGS=' #{@ldflags} -l:libncursesw.a -l:libtinfow.a'" - - @krb5_static_libs = "#{CREW_PREFIX}/musl/lib/libkrb5support.a #{CREW_PREFIX}/musl/lib/libgssapi_krb5.a #{CREW_PREFIX}/musl/lib/libkrb5.a #{CREW_PREFIX}/musl/lib/libk5crypto.a #{CREW_PREFIX}/musl/lib/libcom_err.a" - - @curl_lib_deps = "#{@krb5_static_libs} \ - -l:libresolv.a \ - -l:libm.a \ - -l:libbrotlicommon-static.a \ - -l:libbrotlidec-static.a \ - -l:libzstd.a \ - -l:libz.a \ - -l:libssl.a \ - -l:libcrypto.a \ - -l:libsasl2.a \ - -l:libnghttp2.a \ - -l:libpthread.a \ - -l:libncursesw.a \ - -l:libtinfow.a \ - -l:libcares.a \ - -l:libunistring.a \ - -l:libidn2.a \ - -l:libssh.a" - - @curl_env_options = "PATH=#{CREW_PREFIX}/musl/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -DCURL_STATICLIB -DNGHTTP2_STATICLIB' \ - LDFLAGS='#{@ldflags}'" - - system 'autoreconf -fvi' - system 'filefix' - system "#{@curl_env_options} \ - LIBS='#{@curl_lib_deps} \ - -L#{CREW_PREFIX}/musl/lib' \ - CURL_LIBRARY_PATH=#{CREW_PREFIX}/musl/lib \ - ./configure --prefix=#{CREW_PREFIX}/musl \ - --libdir=#{CREW_PREFIX}/musl/lib \ - --disable-dependency-tracking \ - --disable-imap \ - --disable-ldap \ - --disable-ldaps \ - --disable-maintainer-mode \ - --disable-rtsp \ - --disable-shared \ - --enable-ares \ - --enable-ipv6 \ - --enable-static \ - --enable-unix-sockets \ - --with-brotli=#{CREW_PREFIX}/musl \ - --with-ca-bundle=#{CREW_PREFIX}/etc/ssl/certs/ca-certificates.crt \ - --with-ca-fallback \ - --with-ca-path=#{CREW_PREFIX}/etc/ssl/certs \ - --with-gssapi=#{CREW_PREFIX}/musl \ - --with-libidn2=#{CREW_PREFIX}/musl \ - --with-libssh=#{CREW_PREFIX}/musl \ - --with-nghttp2=#{CREW_PREFIX}/musl \ - --with-openssl=#{CREW_PREFIX}/musl \ - --without-librtmp \ - --with-zlib=#{CREW_PREFIX}/musl \ - " - system 'make curl_LDFLAGS=-all-static' - # FileUtils.cp 'src/curl', 'curl.static' - end - - def self.check - # Fail if curl is not statically built. - system 'ldd src/curl && exit 1 || true' - system 'src/curl -Lf https://github.com/skycocker/chromebrew/raw/master/install.sh -o /tmp/install.sh' - FileUtils.rm '/tmp/install.sh' - end - - def self.install - ENV['CREW_FHS_NONCOMPLIANCE_ONLY_ADVISORY'] = '1' - warn_level = $VERBOSE - $VERBOSE = nil - load "#{CREW_LIB_PATH}lib/const.rb" - $VERBOSE = warn_level - system 'make', "DESTDIR=#{CREW_DEST_DIR}", 'install', 'curl_LDFLAGS=-all-static' - # Curl already includes man pages via "curl -M" - FileUtils.rm_rf "#{CREW_DEST_PREFIX}/musl/share/man" - FileUtils.mkdir_p "#{CREW_DEST_PREFIX}/bin" - FileUtils.ln_s "#{CREW_DEST_PREFIX}/musl/bin/curl", "#{CREW_DEST_PREFIX}/bin/curl" - # FileUtils.install 'curl.static', "#{CREW_DEST_PREFIX}/bin/curl", mode: 0o755 - end - - def self.postinstall - if ARCH == 'i686' - puts 'Static curl is broken on i686, so using curl from the libcurl package.'.orange - FileUtils.cp_r "#{CREW_PREFIX}/bin/curl.nonstatic", "#{CREW_PREFIX}/bin/curl", remove_destination: true - end - end end diff --git a/packages/gcc11.rb b/packages/gcc11.rb index 4768b69a8f..a40f09a436 100644 --- a/packages/gcc11.rb +++ b/packages/gcc11.rb @@ -4,23 +4,23 @@ require 'open3' class Gcc11 < 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 '11.2.0-1' + version '11.2.1-20220108' license 'GPL-3, LGPL-3, libgcc, FDL-1.2' compatibility 'all' - source_url 'https://ftpmirror.gnu.org/gcc/gcc-11.2.0/gcc-11.2.0.tar.xz' - source_sha256 'd08edc536b54c372a1010ff6619dd274c0f1603aa49212ba20f7aa2cda36fa8b' + source_url 'https://gcc.gnu.org/pub/gcc/snapshots/11-20220108/gcc-11-20220108.tar.xz' + source_sha256 'a433837a85087c2357a456145ae140bd588e75d44a90031ed57c29de66e46468' - binary_url ({ - aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/gcc11/11.2.0-1_armv7l/gcc11-11.2.0-1-chromeos-armv7l.tpxz', - armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/gcc11/11.2.0-1_armv7l/gcc11-11.2.0-1-chromeos-armv7l.tpxz', - i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/gcc11/11.2.0-1_i686/gcc11-11.2.0-1-chromeos-i686.tpxz', - x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/gcc11/11.2.0-1_x86_64/gcc11-11.2.0-1-chromeos-x86_64.tpxz', + binary_url({ + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/gcc11/11.2.1-20220108_i686/gcc11-11.2.1-20220108-chromeos-i686.tar.xz', + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/gcc11/11.2.1-20220108_armv7l/gcc11-11.2.1-20220108-chromeos-armv7l.tpxz', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/gcc11/11.2.1-20220108_armv7l/gcc11-11.2.1-20220108-chromeos-armv7l.tpxz', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/gcc11/11.2.1-20220108_x86_64/gcc11-11.2.1-20220108-chromeos-x86_64.tpxz' }) - binary_sha256 ({ - aarch64: 'd0fcbe0b65b9c0e724b17e229bc85e441a9dabaaeec97d97e0e102a58d562e63', - armv7l: 'd0fcbe0b65b9c0e724b17e229bc85e441a9dabaaeec97d97e0e102a58d562e63', - i686: 'a81f10cac350d24b9a7a050a88288c5703a9f93916aa1018502eafec5daa71cc', - x86_64: '21bbe0bb282d7d12acbbe5e9440f009c26223316c708ddd17cd32207649c5b91', + binary_sha256({ + i686: '96cbdec476c3c75a41ae01e9b63060cca42f5ccb262253840c0083f8f7571a54', + aarch64: 'cc48b179ccb035a15042e8a7534366ed0358cb69c84521659f7592b4ce08307b', + armv7l: 'cc48b179ccb035a15042e8a7534366ed0358cb69c84521659f7592b4ce08307b', + x86_64: 'f54549bbae4b15e8360cb73c72a168e168ce603ab4c16470c1b400efe8ca69f4' }) depends_on 'ccache' => :build @@ -31,6 +31,7 @@ class Gcc11 < Package depends_on 'mpc' # R depends_on 'mpfr' # R depends_on 'libssp' # L + depends_on 'zstd' # R @gcc_version = version.split('-')[0].partition('.')[0] @@ -68,31 +69,31 @@ class Gcc11 < Package @languages = 'c,c++,jit,objc,fortran,go' case ARCH when 'armv7l', 'aarch64' - @archflags = '--with-arch=armv7-a --with-float=hard --with-fpu=neon --with-tune=cortex-a15' + @archflags = '--with-arch=armv7-a+fp --with-float=hard --with-fpu=neon --with-tune=cortex-a15' when 'x86_64' @archflags = '--with-arch-64=x86-64' when 'i686' @archflags = '--with-arch-32=i686' end - def self.preflight - # Use full gcc path to bypass ccache - stdout_and_stderr, status = Open3.capture2e('bash', '-c', - "#{CREW_PREFIX}/bin/gcc -dumpversion 2>&1 | tail -1 | cut -d' ' -f1") - if status.success? - installed_gccver = stdout_and_stderr.chomp - # One gets "-dumpversion" or "bash:" with no gcc installed. - unless installed_gccver.to_s == '-dumpversion' || - installed_gccver.to_s == 'bash:' || - installed_gccver.to_s == @gcc_version.to_s || - installed_gccver.partition('.')[0].to_s == @gcc_version.partition('.')[0].to_s - warn "GCC version #{installed_gccver} is currently installed.".lightred - warn "To use #{to_s.downcase} please run:".lightgreen - warn "crew remove gcc#{installed_gccver} && crew install #{to_s.downcase}".lightgreen - exit 1 - end - end - end + # def self.preflight + ## Use full gcc path to bypass ccache + # stdout_and_stderr, status = Open3.capture2e('bash', '-c', + # "#{CREW_PREFIX}/bin/gcc -dumpversion 2>&1 | tail -1 | cut -d' ' -f1") + # if status.success? + # installed_gccver = stdout_and_stderr.chomp + ## One gets "-dumpversion" or "bash:" with no gcc installed. + # unless installed_gccver.to_s == '-dumpversion' || + # installed_gccver.to_s == 'bash:' || + # installed_gccver.to_s == @gcc_version.to_s || + # installed_gccver.partition('.')[0].to_s == @gcc_version.partition('.')[0].to_s + # warn "GCC version #{installed_gccver} is currently installed.".lightred + # warn "To use #{to_s.downcase} please run:".lightgreen + # warn "crew remove gcc#{installed_gccver} && crew install #{to_s.downcase}".lightgreen + # exit 1 + # end + # end + # end def self.patch # This fixes a PATH_MAX undefined error which breaks libsanitizer @@ -131,8 +132,8 @@ class Gcc11 < Package done exec gcc $fl ${1+"$@"} EOF - IO.write 'c99', @C99 - IO.write 'c89', @C89 + File.write 'c99', @C99 + File.write 'c89', @C89 end def self.build @@ -179,6 +180,7 @@ class Gcc11 < Package Dir.chdir('objdir') do system "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} \ ../configure #{CREW_OPTIONS} \ #{@gcc_global_opts} \ diff --git a/packages/git.rb b/packages/git.rb index 4bae348bb1..eed676bbaa 100644 --- a/packages/git.rb +++ b/packages/git.rb @@ -3,436 +3,107 @@ require 'package' class Git < Package description 'Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.' homepage 'https://git-scm.com/' - @_ver = '2.32.0' - version "#{@_ver}-musl-1" + @_ver = '2.34.1' + version @_ver license 'GPL-2' compatibility 'all' - source_url "https://github.com/git/git/archive/v#{@_ver}.tar.gz" - source_sha256 '004697482b6e3b0ae9147580c32efd35869426227f1526f8eafa7950c31def94' + source_url 'https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.34.1.tar.gz' + source_sha256 'fc4eb5ecb9299db91cdd156c06cdeb41833f53adc5631ddf8c0cb13eaa2911c1' binary_url({ - aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/git/2.32.0-musl-1_armv7l/git-2.32.0-musl-1-chromeos-armv7l.tpxz', - armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/git/2.32.0-musl-1_armv7l/git-2.32.0-musl-1-chromeos-armv7l.tpxz', - i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/git/2.32.0-musl-1_i686/git-2.32.0-musl-1-chromeos-i686.tar.xz', - x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/git/2.32.0-musl-1_x86_64/git-2.32.0-musl-1-chromeos-x86_64.tpxz' + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/git/2.34.1_armv7l/git-2.34.1-chromeos-armv7l.tpxz', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/git/2.34.1_armv7l/git-2.34.1-chromeos-armv7l.tpxz', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/git/2.34.1_i686/git-2.34.1-chromeos-i686.tpxz', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/git/2.34.1_x86_64/git-2.34.1-chromeos-x86_64.tpxz' }) binary_sha256({ - aarch64: 'f9dce49267eab2dd52233ff8bfdc6899f482dd17dc67a50eebbd2e531a2aa6b4', - armv7l: 'f9dce49267eab2dd52233ff8bfdc6899f482dd17dc67a50eebbd2e531a2aa6b4', - i686: '4e7ea06987c4ccea0ec900bffaba2184b48d3ca0d4d33d08134f23e1dc590129', - x86_64: '17eac279771387b441bd0175cd30451e5ac6f5cb2cd21f73f99477fadba5d947' + aarch64: '62c32b857d959173de8b8981d3ffa6fb6c0e10a8732626ad6a64189e794203a4', + armv7l: '62c32b857d959173de8b8981d3ffa6fb6c0e10a8732626ad6a64189e794203a4', + i686: '5823cc34dfb018e731ec73f867c43e801608c1097353c17ceb6802ba8f4e0f74', + x86_64: '4e68335c044cae606598d503f31fba0c3516937003412c2df64dcc5202c64d10' }) depends_on 'ca_certificates' => :build - depends_on 'hashpipe' => :build - depends_on 'py3_pip' => :build + depends_on 'musl_curl' => :build depends_on 'rust' => :build - depends_on 'valgrind' => :build + depends_on 'musl_brotli' => :build + depends_on 'musl_libidn2' => :build + depends_on 'musl_libunistring' => :build + depends_on 'musl_native_toolchain' => :build + depends_on 'musl_ncurses' => :build + depends_on 'musl_openssl' => :build + depends_on 'musl_zlib' => :build + depends_on 'musl_zstd' => :build + depends_on 'musl_expat' => :build - @deppath = "#{`pwd`.chomp}/deproot" + is_static + + def self.patch + load "#{CREW_LIB_PATH}lib/musl.rb" + # Patch to prevent error function conflict with libidn2 + # By replacing all calls to error with git_error. + system "sed -i 's,^#undef error\$,#undef git_error,' usage.c" + sedcmd = 's/\([[:blank:]]\)error(/\1git_error(/'.dump + system "grep -rl '[[:space:]]error(' . | xargs sed -i #{sedcmd}" + sedcmd2 = 's/\([[:blank:]]\)error (/\1git_error (/'.dump + system "grep -rl '[[:space:]]error (' . | xargs sed -i #{sedcmd2}" + system "grep -rl ' !!error(' . | xargs sed -i 's/ \!\!error(/ \!\!git_error(/g'" + system "sed -i 's/#define git_error(...) (error(__VA_ARGS__), const_error())/#define git_error(...) (git_error(__VA_ARGS__), const_error())/' git-compat-util.h" + # CMake patches. + # Avoid undefined reference to `trace2_collect_process_info' & `obstack_free' + system "sed -i 's,compat_SOURCES unix-socket.c unix-stream-server.c,compat_SOURCES unix-socket.c unix-stream-server.c compat/linux/procinfo.c compat/obstack.c,g' contrib/buildsystems/CMakeLists.txt" + # The VCPKG optout in this CmakeLists.txt file is quite broken. + system "sed -i 's/set(USE_VCPKG/#set(USE_VCPKG/g' contrib/buildsystems/CMakeLists.txt" + system "sed -i 's,set(PERL_PATH /usr/bin/perl),set(PERL_PATH #{CREW_PREFIX}/bin/perl),g' contrib/buildsystems/CMakeLists.txt" + system "sed -i 's,#!/usr/bin,#!#{CREW_PREFIX}/bin,g' contrib/buildsystems/CMakeLists.txt" + # Without the following DESTDIR doesn't work. + system "sed -i 's,\${CMAKE_INSTALL_PREFIX}/bin/git,\${CMAKE_BINARY_DIR}/git,g' contrib/buildsystems/CMakeLists.txt" + system "sed -i 's,\${CMAKE_INSTALL_PREFIX}/bin/git,\\\\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/bin/git,g' contrib/buildsystems/CMakeLists.txt" + system "sed -i 's,\${CMAKE_INSTALL_PREFIX},\\\\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX},g' contrib/buildsystems/CMakeLists.txt" + end def self.build - - # Create a new buildroot just for musl. - FileUtils.mkdir_p 'build' - FileUtils.mkdir_p 'deproot/include' - FileUtils.mkdir_p 'deproot/lib' - Dir.chdir 'deproot' do - FileUtils.ln_s 'lib', 'lib64' - end - @deppath = "#{`pwd`.chomp}/deproot" - # some linux headers need to be symlinked in. - FileUtils.ln_s "#{CREW_PREFIX}/include/linux", "#{@deppath}/include/" - FileUtils.ln_s "#{CREW_PREFIX}/include/asm", "#{@deppath}/include/" - FileUtils.ln_s "#{CREW_PREFIX}/include/asm-generic", "#{@deppath}/include/" - - # Install musl-native compiler from musl.cc - # The existing musl package only offers a gcc wrapper, which doesn't - # work for c++ programs. We need a full musl runtime to be able to - # build with musl. Luckily, this is easy. - puts "Getting musl native compiler for #{ARCH}".lightblue - Dir.chdir 'deproot' do - case ARCH - when 'i686' - system 'curl -Ls https://musl.cc/i686-linux-musl-native.tgz | \ - hashpipe sha256 ae18b6d0fa58a638dba3b6efa1e660433fe9c0a0ef4283955dd934bc09a9898e | \ - tar --strip-components=1 -zxf -' - when 'armv7l' - system 'curl -Ls https://musl.cc/armv7l-linux-musleabihf-native.tgz | \ - hashpipe sha256 bf54a4762aed1a53be247bd5ead66569145c02d7ec78f405b184a7cda80149d1 | \ - tar --strip-components=1 -zxf -' - when 'aarch64' - system 'curl -Ls https://musl.cc/aarch64-linux-musl-native.tgz | \ - hashpipe sha256 dde5a762e59c7ef16680e7371b50734646eb4fcd7963f557ce0e65044e17e2e6 | \ - tar --strip-components=1 -zxf -' - when 'x86_64' - system 'curl -Ls https://musl.cc/x86_64-linux-musl-native.tgz | \ - hashpipe sha256 6bceb516e51d2eecc65e9670f605692fec419bb7ecca701bb021b720f71d6d86 | \ - tar --strip-components=1 -zxf -' - FileUtils.ln_sf 'lib/ld.so', 'lib/ld-musl-x86_64.so.1' - end - end - - @abi = '' - @arch_ssp_cflags = '' - @arch_c_flags = '' - @arch_cxx_flags = '' - case ARCH - when 'aarch64', 'armv7l' - @abi = 'eabihf' - @openssl_configure_target = 'linux-generic32' - when 'i686' - @arch_ssp_cflags = '-fno-stack-protector' - @openssl_configure_target = 'linux-x86' - when 'x86_64' - @openssl_configure_target = 'linux-x86_64' - end - - @cflags = "-B#{@deppath}/include -flto -pipe -O3 -fPIC -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_c_flags} #{@arch_ssp_cflags} -fcommon" - @cxxflags = "-B#{@deppath}/include -flto -pipe -O3 -fPIC -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_cxx_flags} #{@arch_ssp_cflags} -fcommon" - @ldflags = "-L#{@deppath}/#{ARCH_LIB} -flto -static" - @cmake_ldflags = '-flto' - @curldep_cmake_options = "PATH=#{@deppath}/bin:#{@deppath}/#{ARCH}-linux-musl#{@abi}/bin:#{ENV['PATH']} \ - CC='#{@deppath}/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{@deppath}/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{@deppath}/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - AR=#{CREW_PREFIX}/bin/ar \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{@deppath}/include -fcommon' \ - LDFLAGS='#{@cmake_ldflags}' \ - cmake \ - -DCMAKE_INSTALL_PREFIX='#{@deppath}' \ - -DCMAKE_LIBRARY_PATH='#{@deppath}/#{ARCH_LIB}' \ - -DCMAKE_C_COMPILER=#{@deppath}/bin/#{ARCH}-linux-musl#{@abi}-gcc \ - -DCMAKE_CXX_COMPILER=#{@deppath}/bin/#{ARCH}-linux-musl#{@abi}-g++ \ - -DCMAKE_INCLUDE_DIRECTORIES_BEFORE=ON \ - -DINCLUDE_DIRECTORIES=#{@deppath}/include \ - -DCMAKE_C_FLAGS='#{@cflags}' \ - -DCMAKE_CXX_FLAGS='#{@cxxflags}' \ - -DCMAKE_EXE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_SHARED_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_STATIC_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_MODULE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DPROPERTY_INTERPROCEDURAL_OPTIMIZATION=TRUE \ - -DCMAKE_BUILD_TYPE=Release" - - @curldep_env_options = "PATH=#{@deppath}/bin:#{ENV['PATH']} \ - CC='#{@deppath}/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{@deppath}/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{@deppath}/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - PKG_CONFIG_LIBDIR=#{@deppath}/#{ARCH_LIB} \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{@deppath}/include -DCURL_STATICLIB -DNGHTTP2_STATICLIB -fcommon' \ - LDFLAGS='#{@ldflags}'" - - @krb5_env_options = "PATH=#{@deppath}/bin:#{ENV['PATH']} \ - CC='#{@deppath}/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{@deppath}/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{@deppath}/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - LIBS='-l:libncursesw.a -l:libtinfow.a' \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{@deppath}/include -DCURL_STATICLIB -DNGHTTP2_STATICLIB -fcommon' \ - LDFLAGS=' #{@ldflags} -l:libncursesw.a -l:libtinfow.a'" - - FileUtils.mkdir_p 'build/zlib' - Dir.chdir 'build/zlib' do - puts 'Building Zlib.'.yellow - system 'curl -Ls http://zlib.net/zlib-1.2.11.tar.gz | \ - hashpipe sha256 c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1 | \ - tar --strip-components=1 -zxf -' - system "#{@curldep_env_options} ./configure --prefix=#{@deppath} \ - --static" - system 'make' - system 'make install' - end - - FileUtils.mkdir_p 'build/unistring' - Dir.chdir 'build/unistring' do - puts 'Building Unistring.'.yellow - system 'curl -Ls https://ftpmirror.gnu.org/libunistring/libunistring-0.9.10.tar.xz | \ - hashpipe sha256 eb8fb2c3e4b6e2d336608377050892b54c3c983b646c561836550863003c05d7 | \ - tar --strip-components=1 -Jxf -' - system "#{@curldep_env_options} \ - ./configure --prefix=#{@deppath} \ - --enable-static \ - --disable-shared" - system 'make' - system 'make install' - end - - FileUtils.mkdir_p 'build/ncurses' - Dir.chdir 'build/ncurses' do - puts 'Building Ncurses.'.yellow - system 'curl -Ls https://api.github.com/repos/mirror/ncurses/tarball/2a969388725aa1ee321acadf09a4ff8e00787036 | \ - hashpipe sha256 662836416ec72d4af1d023769d4212b0cc0eb1d9b2442ebdc8af3e08f2f463c2 | \ - tar --strip-components=1 -zxf -' - system "#{@curldep_env_options} \ - ./configure --prefix=#{@deppath} \ - --with-static \ - --with-cxx-static \ - --without-debug \ - --enable-pc-files \ - --enable-widec \ - --without-tests \ - --with-termlib" - system 'make' - system 'make install' - end - - FileUtils.mkdir_p 'build/krb5' - Dir.chdir 'build/krb5' do - puts 'Building krb5.'.yellow - @k5libs = %w[libgssapi_krb5.a libgssrpc.a libk5crypto.a - libkadm5clnt_mit.a libkadm5clnt.a libkadm5srv_mit.a libkadm5srv.a - libkdb5.a libkrad.a libkrb5.a libkrb5support.a libverto.a libcom_err.a] - system 'curl -Ls "https://web.mit.edu/kerberos/dist/krb5/1.19/krb5-1.19.1.tar.gz" | \ - hashpipe sha256 fa16f87eb7e3ec3586143c800d7eaff98b5e0dcdf0772af7d98612e49dbeb20b | \ - tar --strip-components=1 -zxf -' - Dir.chdir 'src' do - # krb5 built with gcc10 or newer needs -fcommon - # See https://github.com/ripple/rippled/pull/3813 - system "#{@krb5_env_options} \ - ./configure --prefix=#{@deppath} \ - --localstatedir=#{CREW_PREFIX}/var/krb5kdc \ - --disable-shared \ - --enable-static \ - --without-system-verto \ - --without-libedit \ - --disable-rpath \ - --without-keyutils" - system 'make' - system 'make install' - end - end - - FileUtils.mkdir_p 'build/cyrus' - Dir.chdir 'build/cyrus' do - puts 'Building cyrussasl.'.yellow - system 'curl -Ls https://github.com/cyrusimap/cyrus-sasl/releases/download/cyrus-sasl-2.1.27/cyrus-sasl-2.1.27.tar.gz | \ - hashpipe sha256 26866b1549b00ffd020f188a43c258017fa1c382b3ddadd8201536f72efb05d5 | \ - tar --strip-components=1 -zxf -' - system "#{@curldep_env_options} ./configure --prefix=#{@deppath} \ - --enable-static \ - --enable-shared \ - --with-cxx-static" - system 'make' - system 'make install' - end - - FileUtils.mkdir_p 'build/zstd' - Dir.chdir 'build/zstd' do - puts 'Building Zstd.'.yellow - system 'curl -Ls https://github.com/facebook/zstd/archive/v1.5.0.tar.gz | \ - hashpipe sha256 0d9ade222c64e912d6957b11c923e214e2e010a18f39bec102f572e693ba2867 | \ - tar --strip-components=1 -zxf -' - FileUtils.mkdir('build/cmake/builddir') - Dir.chdir('build/cmake/builddir') do - system "#{@curldep_cmake_options} \ - -DZSTD_BUILD_STATIC=ON \ - -DZSTD_BUILD_SHARED=OFF \ - ../ -G Ninja" - end - system "PATH=#{@deppath}/bin:#{@deppath}/#{ARCH}-linux-musl#{@abi}/bin:#{ENV['PATH']} ninja -C build/cmake/builddir -j#{CREW_NPROC}" - system 'ninja -C build/cmake/builddir install' - end - - FileUtils.mkdir_p 'build/brotli' - Dir.chdir 'build/brotli' do - puts 'Building Brotli.'.yellow - system 'curl -Ls https://github.com/google/brotli/archive/v1.0.9.tar.gz | \ - hashpipe sha256 f9e8d81d0405ba66d181529af42a3354f838c939095ff99930da6aa9cdf6fe46 | \ - tar --strip-components=1 -zxf -' - FileUtils.mkdir('builddir') - Dir.chdir('builddir') do - system "#{@curldep_cmake_options} \ - -DBUILD_SHARED_LIBS=OFF \ - -DWITH_STATIC_LIB=ON \ - ../ -G Ninja" - end - system "PATH=#{@deppath}/bin:#{@deppath}/#{ARCH}-linux-musl#{@abi}/bin:#{ENV['PATH']} ninja -C builddir -j#{CREW_NPROC}" - system 'ninja -C builddir install' - Dir.chdir "#{@deppath}/#{ARCH_LIB}" do - @brotlilibs = %w[libbrotlidec libbrotlienc libbrotlicommon] - @brotlilibs.each do |lib| - FileUtils.ln_s "#{lib}-static.a", "#{lib}.a" - end - end - end - - FileUtils.mkdir_p 'build/cares' - Dir.chdir 'build/cares' do - puts 'Building C-Ares.'.yellow - system 'curl -Ls https://c-ares.haxx.se/download/c-ares-1.17.1.tar.gz | \ - hashpipe sha256 d73dd0f6de824afd407ce10750ea081af47eba52b8a6cb307d220131ad93fc40 | \ - tar --strip-components=1 -zxf -' - system "#{@curldep_env_options} ./configure --prefix=#{@deppath}" - system 'make' - system 'make install' - end - - FileUtils.mkdir_p 'build/ssl' - Dir.chdir 'build/ssl' do - puts 'Building OpenSSL.'.yellow - system 'curl -Ls https://www.openssl.org/source/openssl-1.1.1k.tar.gz | \ - hashpipe sha256 892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5 | \ - tar --strip-components=1 -zxf -' - system "#{@curldep_env_options} \ - ./Configure \ - --prefix=#{@deppath} \ - no-tests zlib no-shared \ - #{@openssl_configure_target}" - system 'make' - system 'make install_sw' - end - - FileUtils.mkdir_p 'build/nghttp2' - Dir.chdir 'build/nghttp2' do - puts 'Building Nghttp2.'.yellow - system 'curl -Ls https://github.com/nghttp2/nghttp2/releases/download/v1.43.0/nghttp2-1.43.0.tar.gz | \ - hashpipe sha256 45cc3ed91966551f92b31958ceca9b3a9f23ce4faf5cbedb78aa3327cd4e5907 | \ - tar --strip-components=1 -zxf -' - system "#{@curldep_env_options} \ - LIBS='-l:libz.a \ - -l:libssl.a \ - -l:libcrypto.a \ - -l:libcares.a' \ - ./configure --prefix=#{@deppath} \ - --enable-lib-only \ - --disable-shared \ - --enable-static" - system 'make' - system 'make install' - end - - puts 'Done building static curl dependencies.'.lightblue - - @krb5_static_libs = "#{@deppath}/#{ARCH_LIB}/libkrb5support.a #{@deppath}/#{ARCH_LIB}/libgssapi_krb5.a #{@deppath}/#{ARCH_LIB}/libkrb5.a #{@deppath}/#{ARCH_LIB}/libk5crypto.a #{@deppath}/#{ARCH_LIB}/libcom_err.a" - - @curl_lib_deps = "#{@krb5_static_libs} \ - -l:libresolv.a \ - -l:libm.a \ - -l:libbrotlicommon-static.a \ - -l:libbrotlidec-static.a \ - -l:libzstd.a \ - -l:libz.a \ - -l:libssl.a \ - -l:libcrypto.a \ - -l:libsasl2.a \ - -l:libnghttp2.a \ - -l:libpthread.a \ - -l:libncursesw.a \ - -l:libtinfow.a \ - -l:libcares.a" - - @curl_env_options = "PATH=#{@deppath}/bin:#{ENV['PATH']} \ - CC='#{@deppath}/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{@deppath}/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{@deppath}/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{@deppath}/include -DCURL_STATICLIB -DNGHTTP2_STATICLIB' \ - LDFLAGS='#{@ldflags}'" - - FileUtils.mkdir_p 'build/curl' - Dir.chdir 'build/curl' do - puts 'Building libcurl.'.yellow - system 'curl -Ls https://curl.se/download/curl-7.77.0.tar.xz | \ - hashpipe sha256 0f64582c54282f31c0de9f0a1a596b182776bd4df9a4c4a2a41bbeb54f62594b | \ - tar --strip-components=1 -Jxf -' - system '[ -x configure ] || autoreconf -fvi' - system 'filefix' - system "#{@curl_env_options} \ - LIBS='#{@curl_lib_deps} \ - -L#{@deppath}/#{ARCH_LIB}' \ - CURL_LIBRARY_PATH=#{@deppath}/#{ARCH_LIB} \ - ./configure --prefix=#{@deppath} \ - --disable-imap \ - --disable-ldap \ - --disable-ldaps \ - --disable-maintainer-mode \ - --disable-dependency-tracking \ - --disable-rtsp \ - --disable-shared \ - --enable-ares \ - --enable-ipv6 \ - --enable-static \ - --enable-unix-sockets \ - --with-ca-bundle=#{CREW_PREFIX}/etc/ssl/certs/ca-certificates.crt \ - --with-ca-fallback \ - --with-ca-path=#{CREW_PREFIX}/etc/ssl/certs \ - --with-nghttp2=#{@deppath} \ - --with-openssl=#{@deppath} \ - --with-brotli=#{@deppath} \ - --without-librtmp \ - --with-openssl=#{@deppath} \ - --with-zlib=#{@deppath}" - system 'make curl_LDFLAGS=-all-static' - system 'make install curl_LDFLAGS=-all-static' - FileUtils.cp 'src/curl', "#{@deppath}/bin/curl_musl_static" - end - - @curl_static_libs = `#{@deppath}/bin/curl-config --static-libs`.chomp.gsub('=auto', '') - @git_libs = "#{@krb5_static_libs} \ + # This build is dependent upon the musl curl package + @curl_static_libs = `#{CREW_MUSL_PREFIX}/bin/curl-config --static-libs`.chomp.gsub('=auto', '') + @git_libs = "#{@curl_static_libs} \ -l:libresolv.a \ -l:libm.a \ -l:libbrotlidec-static.a \ -l:libbrotlicommon-static.a \ -l:libzstd.a \ + -l:libz.a \ -l:libssl.a \ -l:libcrypto.a \ - -l:libz.a \ - -l:libsasl2.a \ - -l:libnghttp2.a \ -l:libpthread.a \ -l:libncursesw.a \ -l:libtinfow.a \ -l:libcurl.a \ - -l:libcares.a" - @git_env_options = "PATH=#{@deppath}/bin:#{ENV['PATH']} \ - CC='#{@deppath}/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{@deppath}/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{@deppath}/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - LIBS='#{@git_libs}' \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{@deppath}/include -DCURL_STATICLIB -DNGHTTP2_STATICLIB -fcommon' \ - LDFLAGS='#{@ldflags} \ - #{@git_libs}'" + -l:libidn2.a \ + -l:libexpat.a" - FileUtils.mkdir 'curl' - FileUtils.ln_s "#{@deppath}/include/curl", 'curl/include' - FileUtils.ln_s "#{@deppath}/#{ARCH_LIB}", "curl/lib#{CREW_LIB_SUFFIX}" - system 'autoreconf -fiv' - system "#{@git_env_options} \ - ./configure \ - --prefix=#{CREW_PREFIX} \ - --libdir=#{CREW_LIB_PREFIX} \ - CURLDIR=`pwd`/curl \ - CURL_LDFLAGS='-L#{@deppath}/#{ARCH_LIB} #{@git_libs}' \ - --with-lib='lib#{CREW_LIB_SUFFIX}' \ - --with-openssl \ - --without-tcltk \ - --with-curl \ - --with-perl=#{CREW_PREFIX}/bin/perl \ - --with-python=#{CREW_PREFIX}/bin/python3 \ - --with-gitconfig=#{CREW_PREFIX}/etc/gitconfig \ - --with-gitattributes=#{CREW_PREFIX}/etc/gitattributes" - system 'cp config.log /tmp' - system 'make' + Dir.mkdir 'contrib/buildsystems/builddir' + Dir.chdir 'contrib/buildsystems/builddir' do + # This is needed for git's cmake compiler check, which assumes glibc sysctl.h + FileUtils.mkdir_p 'sys' + FileUtils.ln_s "#{CREW_MUSL_PREFIX}/#{ARCH}-linux-musl#{MUSL_ABI}/include/linux/sysctl.h", 'sys/sysctl.h' + + system "#{MUSL_CMAKE_OPTIONS.gsub('LDFLAGS=\'', + "LDFLAGS=\' #{@git_libs} -L#{CREW_MUSL_PREFIX}/lib \ + -Wl,-rpath=#{CREW_MUSL_PREFIX}/lib").gsub('-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=TRUE', + '-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF')} \ + -DCMAKE_C_STANDARD_LIBRARIES='#{@git_libs}' \ + -DCMAKE_CXX_STANDARD_LIBRARIES='#{@git_libs}' \ + -DNO_VCPKG=TRUE \ + -DUSE_VCPKG=FALSE \ + -Wdev \ + -G Ninja \ + .." + system 'samu' + end end def self.install - system 'make', "DESTDIR=#{CREW_DEST_DIR}", 'install' - # Save a copy of the built static curl. It's useful to have as a - # backup. This also gives insight into the libcurl which has been - # been compiled into git. - FileUtils.cp "#{@deppath}/bin/curl_musl_static", "#{CREW_DEST_PREFIX}/bin/" - Dir.chdir CREW_DEST_PREFIX do - system 'symlinks -cr .' - end + system "DESTDIR=#{CREW_DEST_DIR} samu -C contrib/buildsystems/builddir install" FileUtils.mkdir_p "#{CREW_DEST_PREFIX}/share/git-completion" FileUtils.cp_r Dir.glob('contrib/completion/.'), "#{CREW_DEST_PREFIX}/share/git-completion/" @@ -441,12 +112,20 @@ class Git < Package # git bash completion source #{CREW_PREFIX}/share/git-completion/git-completion.bash GIT_BASHD_EOF - IO.write("#{CREW_DEST_PREFIX}/etc/bash.d/git", @git_bashd_env) + File.write("#{CREW_DEST_PREFIX}/etc/bash.d/git", @git_bashd_env) + FileUtils.mkdir_p "#{CREW_DEST_PREFIX}/bin" + # Simplying the following block leads to the symlink not being created properly. + Dir.chdir "#{CREW_DEST_PREFIX}/bin" do + FileUtils.ln_s '../share/musl/bin/git', 'git' + end end def self.check # Check to see if linking libcurl worked, which means # git-remote-https should exist - system "ls #{CREW_DEST_PREFIX}/libexec/git-core/git-remote-https" + unless File.symlink?("#{CREW_DEST_MUSL_PREFIX}/libexec/git-core/git-remote-https") || + File.exist?("#{CREW_DEST_MUSL_PREFIX}/libexec/git-core/git-remote-https") + abort 'git-remote-https is broken'.lightred + end end end diff --git a/packages/libcurl.rb b/packages/libcurl.rb index 6d338571d5..3db03134c4 100644 --- a/packages/libcurl.rb +++ b/packages/libcurl.rb @@ -3,24 +3,24 @@ require 'package' class Libcurl < Package description 'Command line tool and library for transferring data with URLs.' homepage 'https://curl.se/' - @_ver = '7.80.0' + @_ver = '7.81.0' version @_ver license 'curl' compatibility 'all' source_url "https://curl.se/download/curl-#{@_ver}.tar.xz" - source_sha256 'a132bd93188b938771135ac7c1f3ac1d3ce507c1fcbef8c471397639214ae2ab' + source_sha256 'a067b688d1645183febc31309ec1f3cdce9213d02136b6a6de3d50f69c95a7d3' binary_url({ - aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/libcurl/7.80.0_armv7l/libcurl-7.80.0-chromeos-armv7l.tpxz', - armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/libcurl/7.80.0_armv7l/libcurl-7.80.0-chromeos-armv7l.tpxz', - i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/libcurl/7.80.0_i686/libcurl-7.80.0-chromeos-i686.tpxz', - x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/libcurl/7.80.0_x86_64/libcurl-7.80.0-chromeos-x86_64.tpxz' + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/libcurl/7.81.0_armv7l/libcurl-7.81.0-chromeos-armv7l.tpxz', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/libcurl/7.81.0_armv7l/libcurl-7.81.0-chromeos-armv7l.tpxz', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/libcurl/7.81.0_i686/libcurl-7.81.0-chromeos-i686.tpxz', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/libcurl/7.81.0_x86_64/libcurl-7.81.0-chromeos-x86_64.tpxz' }) binary_sha256({ - aarch64: '1bcd431029c1168a8e3ec742535f9b1740dbd264f06a0b97d3d46850113da095', - armv7l: '1bcd431029c1168a8e3ec742535f9b1740dbd264f06a0b97d3d46850113da095', - i686: 'af9cfd841fe69b8a65d4a28fb8c27e2a173dba44b932a50979e32d9c1827fee1', - x86_64: '1fa472107b1b670dffdf41f222d374fa599ee22cf6db2fdcc08659c8b2a75eb0' + aarch64: '92eef28a611d71bf61031dcc97266cb8ca297a77e3bd4736cd6a4cb9806eabba', + armv7l: '92eef28a611d71bf61031dcc97266cb8ca297a77e3bd4736cd6a4cb9806eabba', + i686: '2c1b600dd8e66ce7e561f7c8f08026158db9e2f63d88e534720da751719b40ff', + x86_64: 'fb1a71b10267c947a800114c7af2b3b9c8559ba489ab4dee0c08fc9e628343bb' }) depends_on 'brotli' => :build @@ -40,6 +40,49 @@ class Libcurl < Package depends_on 'zlibpkg' # R depends_on 'zstd' # R + def self.patch + # Configure is broken in curl 7.81.0 + # See https://github.com/curl/curl/pull/8230 + @curl_781_configure_patch = <<~'CURL_CONFIGURE_HEREDOC' + --- a/m4/curl-functions.m4 2022-01-03 16:36:46.000000000 +0000 + +++ b/m4/curl-functions.m4 2022-01-05 17:34:33.635107486 +0000 + @@ -6515,16 +6515,21 @@ dnl changes contained within this macro. + + AC_DEFUN([CURL_RUN_IFELSE], [ + case $host_os in + - darwin*) library_path_var=DYLD_LIBRARY_PATH ;; + - *) library_path_var=LD_LIBRARY_PATH ;; + + darwin*) + + old=$DYLD_LIBRARY_PATH + + DYLD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old + + export DYLD_LIBRARY_PATH + + AC_RUN_IFELSE([AC_LANG_SOURCE([$1])], $2, $3, $4) + + DYLD_LIBRARY_PATH=$old # restore + + ;; + + *) + + old=$LD_LIBRARY_PATH + + LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old + + export LD_LIBRARY_PATH + + AC_RUN_IFELSE([AC_LANG_SOURCE([$1])], $2, $3, $4) + + LD_LIBRARY_PATH=$old # restore + + ;; + esac + - + - eval "old=$$library_path_var" + - eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old" + - + - eval "export $library_path_var" + - AC_RUN_IFELSE([AC_LANG_SOURCE([$1])], $2, $3, $4) + - eval "$library_path_var=\$old" # restore + ]) + + dnl CURL_COVERAGE + CURL_CONFIGURE_HEREDOC + File.write('curl_781_configure.patch', @curl_781_configure_patch) + system 'patch -Np1 -i curl_781_configure.patch' + system 'autoreconf -fvi' + end + def self.build @libssh = '--with-libssh' case ARCH @@ -67,6 +110,5 @@ class Libcurl < Package def self.install system 'make', "DESTDIR=#{CREW_DEST_DIR}", 'install' - FileUtils.mv "#{CREW_DEST_PREFIX}/bin/curl", "#{CREW_DEST_PREFIX}/bin/curl.nonstatic" end end diff --git a/packages/libssp.rb b/packages/libssp.rb index 8b57af3f8d..23f583dcba 100644 --- a/packages/libssp.rb +++ b/packages/libssp.rb @@ -3,23 +3,23 @@ require 'package' class Libssp < Package description 'Libssp is a part of the GCC toolkit.' homepage 'https://gcc.gnu.org/' - version '11.2.0' + version '11.2.1-20220108' license 'GPL-3, LGPL-3, libgcc, FDL-1.2' compatibility 'all' - source_url 'https://ftpmirror.gnu.org/gcc/gcc-11.2.0/gcc-11.2.0.tar.xz' - source_sha256 'd08edc536b54c372a1010ff6619dd274c0f1603aa49212ba20f7aa2cda36fa8b' + source_url 'https://gcc.gnu.org/pub/gcc/snapshots/11-20220108/gcc-11-20220108.tar.xz' + source_sha256 'a433837a85087c2357a456145ae140bd588e75d44a90031ed57c29de66e46468' binary_url({ - aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/libssp/11.2.0_armv7l/libssp-11.2.0-chromeos-armv7l.tpxz', - armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/libssp/11.2.0_armv7l/libssp-11.2.0-chromeos-armv7l.tpxz', - i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/libssp/11.2.0_i686/libssp-11.2.0-chromeos-i686.tar.xz', - x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/libssp/11.2.0_x86_64/libssp-11.2.0-chromeos-x86_64.tpxz' + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/libssp/11.2.1-20220108_i686/libssp-11.2.1-20220108-chromeos-i686.tar.xz', + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/libssp/11.2.1-20220108_armv7l/libssp-11.2.1-20220108-chromeos-armv7l.tpxz', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/libssp/11.2.1-20220108_armv7l/libssp-11.2.1-20220108-chromeos-armv7l.tpxz', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/libssp/11.2.1-20220108_x86_64/libssp-11.2.1-20220108-chromeos-x86_64.tpxz' }) binary_sha256({ - aarch64: '5ff8842611c3cb8a2d72eb3fa591299354ae2021c2b1927259df407910645f19', - armv7l: '5ff8842611c3cb8a2d72eb3fa591299354ae2021c2b1927259df407910645f19', - i686: 'dcf1f3951a9f44e8a5aba0f4db7c675684b747a8cb66efdc2340e513913e79fe', - x86_64: 'c753248ee6996448fc14d02fe43f79f41974adff30101856a467be70b2b41b7d' + i686: 'a8459db3bf278ca9cd120d3d7b166def4816fc112a42869968a2801eb4ceca81', + aarch64: 'b7bdc82eca1ade26a484837a9b544852b9c3e5e5f4cbe571213e35e9c417398d', + armv7l: 'b7bdc82eca1ade26a484837a9b544852b9c3e5e5f4cbe571213e35e9c417398d', + x86_64: 'b443fabf868ac235e2b7e621c9eeec34389e469a87f180a9aaccaa01256b8038' }) depends_on 'ccache' => :build @@ -61,7 +61,7 @@ class Libssp < Package @languages = 'c,c++,jit,objc,fortran,go' case ARCH when 'armv7l', 'aarch64' - @archflags = '--with-arch=armv7-a --with-float=hard --with-fpu=neon' + @archflags = '--with-arch=armv7-a+fp --with-float=hard --with-fpu=neon --with-tune=cortex-a15' when 'x86_64' @archflags = '--with-arch-64=x86-64' when 'i686' diff --git a/packages/lzip.rb b/packages/lzip.rb index d4d2b2474b..cfaa294c50 100644 --- a/packages/lzip.rb +++ b/packages/lzip.rb @@ -3,72 +3,42 @@ require 'package' class Lzip < Package description 'Lzip is a lossless data compressor with a user interface similar to the one of gzip or bzip2.' homepage 'https://www.nongnu.org/lzip/lzip.html' - version '1.22-2' + version '1.22-3' license 'GPL-2+' compatibility 'all' source_url 'https://download.savannah.gnu.org/releases/lzip/lzip-1.22.tar.gz' source_sha256 'c3342d42e67139c165b8b128d033b5c96893a13ac5f25933190315214e87a948' binary_url({ - aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/lzip/1.22-2_armv7l/lzip-1.22-2-chromeos-armv7l.tpxz', - armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/lzip/1.22-2_armv7l/lzip-1.22-2-chromeos-armv7l.tpxz', - i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/lzip/1.22_i686/lzip-1.22-chromeos-i686.tar.xz', - x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/lzip/1.22-2_x86_64/lzip-1.22-2-chromeos-x86_64.tpxz' + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/lzip/1.22-3_armv7l/lzip-1.22-3-chromeos-armv7l.tpxz', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/lzip/1.22-3_armv7l/lzip-1.22-3-chromeos-armv7l.tpxz', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/lzip/1.22-3_i686/lzip-1.22-3-chromeos-i686.tpxz', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/lzip/1.22-3_x86_64/lzip-1.22-3-chromeos-x86_64.tpxz' }) binary_sha256({ - aarch64: 'c2845ab07bbaf3ece8c9fbe6ebc877b9ab2028d20f125d15dac95c6a805feab4', - armv7l: 'c2845ab07bbaf3ece8c9fbe6ebc877b9ab2028d20f125d15dac95c6a805feab4', - i686: 'c300c57d644cde5783a76dd125a2e4e80873a9c1f1f07dec84a594807423106a', - x86_64: '03d91cc0ed167a0e1cc6a294123b138542ee6a4689461813cd21d058ff590487' + aarch64: 'd9f7c85e23c7b2325ceb7d9b1de5f0ed978418214c49b6a2ac022fba638a16b5', + armv7l: 'd9f7c85e23c7b2325ceb7d9b1de5f0ed978418214c49b6a2ac022fba638a16b5', + i686: '4765d6b4470651f3d51a6200c83be04cf5d66918513d066a4de49e68b6b5814a', + x86_64: '0ae3146a01f2412c726f20a48c6eee208b4008bc5b122760d6b8eaf4d888a8be' }) depends_on 'musl_native_toolchain' => :build - depends_on 'musl_libunwind' => :build if ARCH == 'i686' - @abi = '' - @arch_c_flags = '' - @arch_cxx_flags = '' - @libunwind = '' - case ARCH - when 'aarch64', 'armv7l' - @abi = 'eabihf' - when 'i686' - @libunwind = '-lunwind' - end - - @cflags = "-B#{CREW_PREFIX}/musl/include -pipe -O2 -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_c_flags} -fcommon" - @cxxflags = "-B#{CREW_PREFIX}/musl/include -pipe -O2 -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_cxx_flags} -fcommon -static" - @ldflags = "-L#{CREW_PREFIX}/musl/lib -static #{@libunwind}" - @cmake_ldflags = '' - - @musldep_env_options = "PATH=#{CREW_PREFIX}/musl/bin:#{ENV['PATH']} \ - LIBRARY_PATH='#{CREW_PREFIX}/musl/lib:$LIBRARY_PATH' \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - PKG_CONFIG_LIBDIR=#{CREW_PREFIX}/musl/lib/pkgconfig \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@ldflags}'" + is_static def self.build - system "./configure --prefix=#{CREW_PREFIX}/musl \ + load "#{CREW_LIB_PATH}lib/musl.rb" + system "./configure --prefix=#{CREW_MUSL_PREFIX} \ --datarootdir=#{CREW_PREFIX}/share \ - #{@musldep_env_options}" - system 'make -j1' + #{MUSL_ENV_OPTIONS}" + system 'make' end def self.install - ENV['CREW_FHS_NONCOMPLIANCE_ONLY_ADVISORY'] = '1' - warn_level = $VERBOSE - $VERBOSE = nil - load "#{CREW_LIB_PATH}lib/const.rb" - $VERBOSE = warn_level system 'make', "DESTDIR=#{CREW_DEST_DIR}", 'install' FileUtils.mkdir_p "#{CREW_DEST_PREFIX}/bin" Dir.chdir "#{CREW_DEST_PREFIX}/bin" do - FileUtils.ln_s '../musl/bin/lzip', 'lzip' + FileUtils.ln_s '../share/musl/bin/lzip', 'lzip' end end diff --git a/packages/musl_brotli.rb b/packages/musl_brotli.rb index 3e1fa6ba1f..cba948b18f 100644 --- a/packages/musl_brotli.rb +++ b/packages/musl_brotli.rb @@ -3,99 +3,45 @@ require 'package' class Musl_brotli < Package description 'Brotli compression format' homepage 'https://github.com/google/brotli' - version '1.0.9' + version '1.0.9-1' license 'MIT' compatibility 'all' source_url 'https://github.com/google/brotli/archive/v1.0.9.tar.gz' source_sha256 'f9e8d81d0405ba66d181529af42a3354f838c939095ff99930da6aa9cdf6fe46' binary_url({ - aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_brotli/1.0.9_armv7l/musl_brotli-1.0.9-chromeos-armv7l.tpxz', - armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_brotli/1.0.9_armv7l/musl_brotli-1.0.9-chromeos-armv7l.tpxz', - i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_brotli/1.0.9_i686/musl_brotli-1.0.9-chromeos-i686.tpxz', - x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_brotli/1.0.9_x86_64/musl_brotli-1.0.9-chromeos-x86_64.tpxz' + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_brotli/1.0.9-1_armv7l/musl_brotli-1.0.9-1-chromeos-armv7l.tpxz', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_brotli/1.0.9-1_armv7l/musl_brotli-1.0.9-1-chromeos-armv7l.tpxz', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_brotli/1.0.9-1_i686/musl_brotli-1.0.9-1-chromeos-i686.tpxz', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_brotli/1.0.9-1_x86_64/musl_brotli-1.0.9-1-chromeos-x86_64.tpxz' }) binary_sha256({ - aarch64: 'be5c638964696502a16aa3518158875ef7f02dfb367b08d30945454d7126f536', - armv7l: 'be5c638964696502a16aa3518158875ef7f02dfb367b08d30945454d7126f536', - i686: '04bbca973fa726fe7c6530949d54f1dff2a61b1d953eaf1f48ddc804da871074', - x86_64: '326576ba9359c4d4a0c933dcc6a106f2094d4731267e182824fb3f6ff6d962f3' + aarch64: 'cc9db48c4b961fe608a7ce3e1992c13e2972dc8779127c0edc8b3a95dd76097c', + armv7l: 'cc9db48c4b961fe608a7ce3e1992c13e2972dc8779127c0edc8b3a95dd76097c', + i686: '57ee94d94b6e0ea798feaf49f002e3781c0e9ab6daf2795dcc9d938e9901744e', + x86_64: '4e85283bc1ee9747495df8c37662d4e4cb9a714718509492f2317b5c08f0ee76' }) depends_on 'musl_native_toolchain' => :build - @abi = '' - @arch_ssp_cflags = '' - @arch_c_flags = '' - @arch_cxx_flags = '' - case ARCH - when 'aarch64', 'armv7l' - @abi = 'eabihf' - when 'i686' - @arch_ssp_cflags = '-fno-stack-protector' - when 'x86_64' - end - - @cflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_c_flags} #{@arch_ssp_cflags} -fcommon" - @cxxflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_cxx_flags} #{@arch_ssp_cflags} -fcommon" - @ldflags = "-L#{CREW_PREFIX}/musl/lib -flto -static" - @cmake_ldflags = '-flto' - @musldep_cmake_options = "PATH=#{CREW_PREFIX}/musl/bin:#{CREW_PREFIX}/musl/#{ARCH}-linux-musl#{@abi}/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - AR=#{CREW_PREFIX}/musl/bin/ar \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@cmake_ldflags}' \ - cmake \ - -DCMAKE_INSTALL_PREFIX='#{CREW_PREFIX}/musl' \ - -DCMAKE_INSTALL_LIBDIR='#{CREW_PREFIX}/musl/lib' \ - -DCMAKE_LIBRARY_PATH='#{CREW_PREFIX}/musl/lib' \ - -DCMAKE_C_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc \ - -DCMAKE_CXX_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++ \ - -DCMAKE_INCLUDE_DIRECTORIES_BEFORE=ON \ - -DINCLUDE_DIRECTORIES=#{CREW_PREFIX}/musl/include \ - -DCMAKE_C_FLAGS='#{@cflags}' \ - -DCMAKE_CXX_FLAGS='#{@cxxflags}' \ - -DCMAKE_EXE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_SHARED_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_STATIC_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_MODULE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DPROPERTY_INTERPROCEDURAL_OPTIMIZATION=TRUE \ - -DCMAKE_BUILD_TYPE=Release" - - @musldep_env_options = "PATH=#{CREW_PREFIX}/musl/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - PKG_CONFIG_LIBDIR=#{CREW_PREFIX}/musl/lib/pkgconfig \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@ldflags}'" + is_static def self.build + load "#{CREW_LIB_PATH}lib/musl.rb" FileUtils.mkdir('builddir') Dir.chdir('builddir') do - system "#{@musldep_cmake_options} \ + system "#{MUSL_CMAKE_OPTIONS} \ -DBUILD_SHARED_LIBS=OFF \ -DWITH_STATIC_LIB=ON \ ../ -G Ninja" end - system "PATH=#{CREW_PREFIX}/musl/bin:#{CREW_PREFIX}/musl/#{ARCH}-linux-musl#{@abi}/bin:#{ENV['PATH']} \ + system "PATH=#{CREW_MUSL_PREFIX}/bin:#{CREW_MUSL_PREFIX}/#{ARCH}-linux-musl#{@abi}/bin:#{ENV['PATH']} \ samu -C builddir -j#{CREW_NPROC}" end def self.install - ENV['CREW_FHS_NONCOMPLIANCE_ONLY_ADVISORY'] = '1' - warn_level = $VERBOSE - $VERBOSE = nil - load "#{CREW_LIB_PATH}lib/const.rb" - $VERBOSE = warn_level system "DESTDIR=#{CREW_DEST_DIR} samu -C builddir install" - Dir.chdir "#{CREW_DEST_PREFIX}/musl/lib" do + Dir.chdir "#{CREW_DEST_MUSL_PREFIX}/lib" do @brotlilibs = %w[libbrotlidec libbrotlienc libbrotlicommon] @brotlilibs.each do |lib| FileUtils.ln_s "#{lib}-static.a", "#{lib}.a" diff --git a/packages/musl_bz2.rb b/packages/musl_bz2.rb new file mode 100644 index 0000000000..89d047fe68 --- /dev/null +++ b/packages/musl_bz2.rb @@ -0,0 +1,78 @@ +require 'package' + +class Musl_bz2 < Package + description 'bzip2 is a freely available, patent free, high-quality data compressor.' + homepage 'http://www.bzip.org/' + version '1.0.8' + license 'BZIP2' + compatibility 'all' + source_url 'https://fossies.org/linux/misc/bzip2-1.0.8.tar.gz' + source_sha256 'ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269' + + binary_url({ + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_bz2/1.0.8_armv7l/musl_bz2-1.0.8-chromeos-armv7l.tpxz', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_bz2/1.0.8_armv7l/musl_bz2-1.0.8-chromeos-armv7l.tpxz', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_bz2/1.0.8_i686/musl_bz2-1.0.8-chromeos-i686.tpxz', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_bz2/1.0.8_x86_64/musl_bz2-1.0.8-chromeos-x86_64.tpxz' + }) + binary_sha256({ + aarch64: '45641ed96b6d391c9835fba0a8e567da398c764b49b3ca2ad0acdffc81c18b5c', + armv7l: '45641ed96b6d391c9835fba0a8e567da398c764b49b3ca2ad0acdffc81c18b5c', + i686: 'abdce567d02a946581afc4ab6122fc3e21221c92e273841b83b988f0667f996e', + x86_64: '0491dda97107a65317cf6a6896d11654159623ed8f6107efdaafa710326723fe' + }) + + depends_on 'patchelf' => :build + + def self.patch + load "#{CREW_LIB_PATH}lib/musl.rb" + # Modify Makefile from "ln -s $(PREFIX)/bin/xxx $(PREFIX)/bin/yyy" to + # "ln -s xxx $(PREFIX)/bin/yyy" + system "sed -i Makefile -e '/ln -s/s:$(PREFIX)/bin/::'" + system "sed -i 's,gcc,#{CREW_MUSL_PREFIX}/bin/#{ARCH}-linux-musl#{MUSL_ABI}-gcc #{MUSL_CFLAGS},g' Makefile" + system "sed -i 's,CFLAGS=-fpic,CFLAGS=-fpic #{MUSL_CFLAGS},g' Makefile" + system "sed -i 's,gcc,#{CREW_MUSL_PREFIX}/bin/#{ARCH}-linux-musl#{MUSL_ABI}-gcc,g' Makefile-libbz2_so" + system "sed -i 's|CFLAGS=-fpic|CFLAGS=-fpic #{MUSL_CFLAGS}|g' Makefile-libbz2_so" + system "sed -i 's|LDFLAGS=|LDFLAGS=\"#{MUSL_LDFLAGS}\"|g' Makefile" + system "sed -i 's|LDFLAGS=|LDFLAGS=\"#{MUSL_LDFLAGS}\"|g' Makefile-libbz2_so" + # Test expects ./bzip2, which is created in install section. + FileUtils.cp 'Makefile', 'Makefile.test' + system "sed -i 's,./bzip2 ,./bzip2-shared ,g' Makefile.test" + end + + def self.build + system 'make -f Makefile-libbz2_so all' + end + + def self.check + system 'make -f Makefile.test test' + end + + def self.install + # bz2 Makefile doesn't have DESTDIR, so we need several tricks + # to make it install files correctly. + + # Use PREFIX instead of DESTDIR + system 'make', "PREFIX=#{CREW_DEST_MUSL_PREFIX}", 'install' + + # Install bzip2 using shared library by hand + system 'cp -p bzip2-shared bzip2' + # Set musl interpreter for binaries + %w[bzip2-shared].each do |f| + system "patchelf --set-interpreter #{CREW_MUSL_PREFIX}/lib/libc.so #{f}" + end + system "install -Dm755 bzip2 #{CREW_DEST_MUSL_PREFIX}/bin/bzip2" + system "ln -sf bzip2 #{CREW_DEST_MUSL_PREFIX}/bin/bunzip2" + system "ln -sf bzip2 #{CREW_DEST_MUSL_PREFIX}/bin/bzcat" + + # Install shared library by hand + system "install -Dm644 libbz2.so.1.0.8 #{CREW_DEST_MUSL_PREFIX}/libbz2.so.1.0.8" + system "ln -s libbz2.so.1.0.8 #{CREW_DEST_MUSL_PREFIX}/libbz2.so.1.0" + system "ln -s libbz2.so.1.0.8 #{CREW_DEST_MUSL_PREFIX}/libbz2.so.1" + system "ln -s libbz2.so.1.0.8 #{CREW_DEST_MUSL_PREFIX}/libbz2.so" + + # Move manpages + FileUtils.mkdir_p("#{CREW_DEST_MUSL_PREFIX}/share") + system "mv #{CREW_DEST_MUSL_PREFIX}/man #{CREW_DEST_MUSL_PREFIX}/share/" + end +end diff --git a/packages/musl_c_ares.rb b/packages/musl_c_ares.rb index 7fa5a542c7..a595f6821b 100644 --- a/packages/musl_c_ares.rb +++ b/packages/musl_c_ares.rb @@ -3,92 +3,59 @@ require 'package' class Musl_c_ares < Package description 'c-ares is a C library for asynchronous DNS requests (including name resolves).' homepage 'https://c-ares.haxx.se/' - version '1.17.2' + version '1.18.1' license 'MIT' compatibility 'all' - source_url 'https://c-ares.haxx.se/download/c-ares-1.17.2.tar.gz' - source_sha256 '4803c844ce20ce510ef0eb83f8ea41fa24ecaae9d280c468c582d2bb25b3913d' + source_url 'https://c-ares.haxx.se/download/c-ares-1.18.1.tar.gz' + source_sha256 '1a7d52a8a84a9fbffb1be9133c0f6e17217d91ea5a6fa61f6b4729cda78ebbcf' binary_url({ - aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_c_ares/1.17.2_armv7l/musl_c_ares-1.17.2-chromeos-armv7l.tpxz', - armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_c_ares/1.17.2_armv7l/musl_c_ares-1.17.2-chromeos-armv7l.tpxz', - i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_c_ares/1.17.2_i686/musl_c_ares-1.17.2-chromeos-i686.tpxz', - x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_c_ares/1.17.2_x86_64/musl_c_ares-1.17.2-chromeos-x86_64.tpxz' + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_c_ares/1.18.1_armv7l/musl_c_ares-1.18.1-chromeos-armv7l.tpxz', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_c_ares/1.18.1_armv7l/musl_c_ares-1.18.1-chromeos-armv7l.tpxz', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_c_ares/1.18.1_i686/musl_c_ares-1.18.1-chromeos-i686.tpxz', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_c_ares/1.18.1_x86_64/musl_c_ares-1.18.1-chromeos-x86_64.tpxz' }) binary_sha256({ - aarch64: '16da6f86c68d47b675f94cadd36635d1c743ea33a599588d5d2b80349e472db8', - armv7l: '16da6f86c68d47b675f94cadd36635d1c743ea33a599588d5d2b80349e472db8', - i686: '4ca8616b8c42e0b4741080969b90bb80cb75a4cea48b4b98252e9a6f44801647', - x86_64: 'b2994bf3c6ed793052492fca6a074ef0c0ad4d12f628bbbe42cc7e2000d2d68c' + aarch64: 'c93e3a4f64cd4e667369de02eddf7f524c2828a68ed3d8fe3cd695647527cddd', + armv7l: 'c93e3a4f64cd4e667369de02eddf7f524c2828a68ed3d8fe3cd695647527cddd', + i686: '87f32259ad3ce220d75b89e481102dcf376d8fc022fd3a577bbdc93c44d219f5', + x86_64: '9775556215c5a09423c36f61a902d0510ba8ad68865d26c48c3fbe02af62a23c' }) depends_on 'musl_native_toolchain' => :build + depends_on 'musl_libunistring' => :build + depends_on 'musl_libidn2' => :build + depends_on 'musl_zlib' => :build + depends_on 'musl_ncurses' => :build + depends_on 'musl_openssl' => :build + depends_on 'musl_krb5' => :build + depends_on 'patchelf' => :build - @abi = '' - @arch_ssp_cflags = '' - @arch_c_flags = '' - @arch_cxx_flags = '' - case ARCH - when 'aarch64', 'armv7l' - @abi = 'eabihf' - when 'i686' - @arch_ssp_cflags = '-fno-stack-protector' - when 'x86_64' - end - - @cflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_c_flags} #{@arch_ssp_cflags} -fcommon" - @cxxflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_cxx_flags} #{@arch_ssp_cflags} -fcommon" - @ldflags = "-L#{CREW_PREFIX}/musl/lib -flto -static" - @cmake_ldflags = '-flto' - @musldep_cmake_options = "PATH=#{CREW_PREFIX}/musl/bin:#{CREW_PREFIX}/musl/#{ARCH}-linux-musl#{@abi}/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - AR=#{CREW_PREFIX}/musl/bin/ar \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@cmake_ldflags}' \ - cmake \ - -DCMAKE_INSTALL_PREFIX='#{CREW_PREFIX}/musl' \ - -DCMAKE_LIBRARY_PATH='#{CREW_PREFIX}/musl/lib' \ - -DCMAKE_C_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc \ - -DCMAKE_CXX_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++ \ - -DCMAKE_INCLUDE_DIRECTORIES_BEFORE=ON \ - -DINCLUDE_DIRECTORIES=#{CREW_PREFIX}/musl/include \ - -DCMAKE_C_FLAGS='#{@cflags}' \ - -DCMAKE_CXX_FLAGS='#{@cxxflags}' \ - -DCMAKE_EXE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_SHARED_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_STATIC_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_MODULE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DPROPERTY_INTERPROCEDURAL_OPTIMIZATION=TRUE \ - -DCMAKE_BUILD_TYPE=Release" - - @musldep_env_options = "PATH=#{CREW_PREFIX}/musl/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - PKG_CONFIG_LIBDIR=#{CREW_PREFIX}/musl/lib/pkgconfig \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@ldflags}'" + is_static def self.build - system "#{@musldep_env_options} ./configure --prefix=#{CREW_PREFIX}/musl \ - --enable-shared=no \ - --enable-static=yes \ - --enable-nonblocking" - system 'make' + load "#{CREW_LIB_PATH}lib/musl.rb" + FileUtils.mkdir('builddir') + Dir.chdir('builddir') do + system "#{MUSL_CMAKE_OPTIONS} \ + -DOPENSSL_INCLUDE_DIR=#{CREW_MUSL_PREFIX}/include \ + -DCARES_STATIC=ON \ + -DCARES_STATIC_PIC=ON \ + -DCARES_BUILD_TESTS=ON \ + -DCARES_BUILD_CONTAINER_TESTS=ON \ + -DCARES_BUILD_TOOLS=ON \ + -DCARES_SHARED=OFF \ + ../ -G Ninja" + end + system 'samu -C builddir' end def self.install - ENV['CREW_FHS_NONCOMPLIANCE_ONLY_ADVISORY'] = '1' - warn_level = $VERBOSE - $VERBOSE = nil - load "#{CREW_LIB_PATH}lib/const.rb" - $VERBOSE = warn_level - system 'make', "DESTDIR=#{CREW_DEST_DIR}", 'install' + system "DESTDIR=#{CREW_DEST_DIR} samu -C builddir install" + Dir.chdir "#{CREW_DEST_MUSL_PREFIX}/bin/" do + Dir.glob('*').each do |f| + system "patchelf --set-interpreter #{CREW_MUSL_PREFIX}/lib/libc.so #{f}" + end + end end end diff --git a/packages/musl_cc_toolchain.rb b/packages/musl_cc_toolchain.rb new file mode 100644 index 0000000000..af07c28f99 --- /dev/null +++ b/packages/musl_cc_toolchain.rb @@ -0,0 +1,44 @@ +require 'package' + +class Musl_cc_toolchain < Package + description 'A modern, simple, and fast C library implementation that strives to be lightweight, fast, simple, free, and correct in the sense of standards-conformance and safety.' + homepage 'https://musl.cc/' + version '1.2.2-b76f37fd' + compatibility 'aarch64, armv7l, x86_64' + license 'MIT, LGPL-2 and GPL-2' + source_url({ + aarch64: 'https://musl.cc/armv7l-linux-musleabihf-native.tgz', + armv7l: 'https://musl.cc/armv7l-linux-musleabihf-native.tgz', + x86_64: 'https://musl.cc/x86_64-linux-musl-native.tgz' + }) + source_sha256({ + aarch64: '2b37466f716d28a9ef313a8916543f53f9c8c78509e1c8d57a18ca4b171f2205', + armv7l: '2b37466f716d28a9ef313a8916543f53f9c8c78509e1c8d57a18ca4b171f2205', + x86_64: 'eb1db6f0f3c2bdbdbfb993d7ef7e2eeef82ac1259f6a6e1757c33a97dbcef3ad' + }) + + binary_url({ + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_cc_toolchain/1.2.2-b76f37fd_armv7l/musl_cc_toolchain-1.2.2-b76f37fd-chromeos-armv7l.tpxz', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_cc_toolchain/1.2.2-b76f37fd_armv7l/musl_cc_toolchain-1.2.2-b76f37fd-chromeos-armv7l.tpxz', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_cc_toolchain/1.2.2-b76f37fd_x86_64/musl_cc_toolchain-1.2.2-b76f37fd-chromeos-x86_64.tpxz' + }) + binary_sha256({ + aarch64: '56b9685504b6ae0894b4c0e9e439c894fc3e9222124982e5c3321279c34de253', + armv7l: '56b9685504b6ae0894b4c0e9e439c894fc3e9222124982e5c3321279c34de253', + x86_64: 'ca388d227d187db9b60c53aa191803882a9ac21bcb6c0d1d2815ea2bb8725023' + }) + + def self.install + FileUtils.mkdir_p "#{CREW_DEST_MUSL_PREFIX}/lib" + FileUtils.cp_r '.', "#{CREW_DEST_MUSL_PREFIX}/", verbose: true + Dir.chdir("#{CREW_DEST_MUSL_PREFIX}/lib") do + FileUtils.ln_sf 'libc.so', 'ld-musl-x86_64.so.1' if ARCH == 'x86_64' + FileUtils.ln_sf 'libc.so', 'ld-musl-armhf.so.1' if ARCH == 'armv7l' + end + Dir.chdir(CREW_DEST_MUSL_PREFIX.to_s) do + FileUtils.ln_sf 'lib', 'lib64' if ARCH == 'x86_64' + end + end + + def self.postinstall; end +end diff --git a/packages/musl_curl.rb b/packages/musl_curl.rb new file mode 100644 index 0000000000..1cfcf5dbfd --- /dev/null +++ b/packages/musl_curl.rb @@ -0,0 +1,176 @@ +require 'package' + +class Musl_curl < Package + description 'Command line tool and library for transferring data with URLs.' + homepage 'https://curl.se/' + @_ver = '7.81.0' + version @_ver + license 'curl' + compatibility 'all' + source_url "https://curl.se/download/curl-#{@_ver}.tar.xz" + source_sha256 'a067b688d1645183febc31309ec1f3cdce9213d02136b6a6de3d50f69c95a7d3' + + binary_url({ + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_curl/7.81.0_armv7l/musl_curl-7.81.0-chromeos-armv7l.tpxz', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_curl/7.81.0_armv7l/musl_curl-7.81.0-chromeos-armv7l.tpxz', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_curl/7.81.0_i686/musl_curl-7.81.0-chromeos-i686.tpxz', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_curl/7.81.0_x86_64/musl_curl-7.81.0-chromeos-x86_64.tpxz' + }) + binary_sha256({ + aarch64: '9acb67514a0db896686eaa834f3cf5c8818627521725d8b71325872ea1507259', + armv7l: '9acb67514a0db896686eaa834f3cf5c8818627521725d8b71325872ea1507259', + i686: 'bbff7492ea406c7150a4ff38420530035183269c58b6f4a73a0852e94172ab58', + x86_64: 'a9d041801aa654b4086988f905f41628beaeefdc2e8df4f134c505202636877f' + }) + + depends_on 'ca_certificates' => :build + depends_on 'musl_libunbound' => :build + depends_on 'musl_brotli' => :build + depends_on 'musl_libidn2' => :build + depends_on 'musl_libunistring' => :build + depends_on 'musl_native_toolchain' => :build + depends_on 'musl_ncurses' => :build + depends_on 'musl_openssl' => :build + depends_on 'musl_zlib' => :build + depends_on 'musl_zstd' => :build + depends_on 'rust' => :build + depends_on 'valgrind' => :build + + is_static + + def self.patch + load "#{CREW_LIB_PATH}lib/musl.rb" + # Curl 7.78.0 needs a patch to enable static builds. + # See https://github.com/moparisthebest/static-curl/commit/0ab82474d449b7f2ea0d43451fd3951ebd49ddc3 + @curl_778_static_patch = <<~'CURL_HEREDOC' + diff --git a/src/Makefile.am b/src/Makefile.am + index 734373187..37e3a1564 100644 + --- a/src/Makefile.am + +++ b/src/Makefile.am + @@ -66,6 +66,9 @@ else + curl_LDADD = $(top_builddir)/lib/libcurl.la @NSS_LIBS@ @SSL_LIBS@ @ZLIB_LIBS@ @CURL_NETWORK_AND_TIME_LIBS@ + endif + + +curl_LDFLAGS = $(curl_LDFLAGS) + +curl_CPPFLAGS = $(AM_CPPFLAGS) + + + # if unit tests are enabled, build a static library to link them with + if BUILD_UNITTESTS + noinst_LTLIBRARIES = libcurltool.la + CURL_HEREDOC + File.write('curl_778_static.patch', @curl_778_static_patch) + system 'patch -Np1 -i curl_778_static.patch' + # Configure is broken in curl 7.81.0 + # See https://github.com/curl/curl/pull/8230 + @curl_781_configure_patch = <<~'CURL_CONFIGURE_HEREDOC' + --- a/m4/curl-functions.m4 2022-01-03 16:36:46.000000000 +0000 + +++ b/m4/curl-functions.m4 2022-01-05 17:34:33.635107486 +0000 + @@ -6515,16 +6515,21 @@ dnl changes contained within this macro. + + AC_DEFUN([CURL_RUN_IFELSE], [ + case $host_os in + - darwin*) library_path_var=DYLD_LIBRARY_PATH ;; + - *) library_path_var=LD_LIBRARY_PATH ;; + + darwin*) + + old=$DYLD_LIBRARY_PATH + + DYLD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old + + export DYLD_LIBRARY_PATH + + AC_RUN_IFELSE([AC_LANG_SOURCE([$1])], $2, $3, $4) + + DYLD_LIBRARY_PATH=$old # restore + + ;; + + *) + + old=$LD_LIBRARY_PATH + + LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old + + export LD_LIBRARY_PATH + + AC_RUN_IFELSE([AC_LANG_SOURCE([$1])], $2, $3, $4) + + LD_LIBRARY_PATH=$old # restore + + ;; + esac + - + - eval "old=$$library_path_var" + - eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old" + - + - eval "export $library_path_var" + - AC_RUN_IFELSE([AC_LANG_SOURCE([$1])], $2, $3, $4) + - eval "$library_path_var=\$old" # restore + ]) + + dnl CURL_COVERAGE + CURL_CONFIGURE_HEREDOC + File.write('curl_781_configure.patch', @curl_781_configure_patch) + system 'patch -Np1 -i curl_781_configure.patch' + end + + def self.build + # Not sure how to avoid this hack. + # FileUtils.mv "#{CREW_PREFIX}/include", "#{CREW_PREFIX}/include.disabled" + @curl_lib_deps = "-l:libunbound.a \ + -l:libresolv.a \ + -l:libm.a \ + -l:libbrotlicommon-static.a \ + -l:libbrotlidec-static.a \ + -l:libzstd.a \ + -l:libz.a \ + -l:libssl.a \ + -l:libcrypto.a \ + -l:libpthread.a \ + -l:libncursesw.a \ + -l:libtinfow.a \ + -l:libunistring.a \ + -l:libidn2.a" + + system 'autoreconf -fvi' + system 'filefix' + # ntlm disabled because requisite openssl des has issues building on i686 + system "#{MUSL_ENV_OPTIONS.gsub("CPPFLAGS='", "CPPFLAGS='-DCURL_STATICLIB ")} \ + LIBS='#{@curl_lib_deps} \ + -L#{CREW_MUSL_PREFIX}/lib' \ + CURL_LIBRARY_PATH=#{CREW_MUSL_PREFIX}/lib \ + ./configure --prefix=#{CREW_MUSL_PREFIX} \ + --libdir=#{CREW_MUSL_PREFIX}/lib \ + --disable-ares \ + --disable-debug \ + --disable-dependency-tracking \ + --disable-imap \ + --disable-ldap \ + --disable-ldaps \ + --disable-maintainer-mode \ + --disable-ntlm \ + --disable-rtsp \ + --disable-shared \ + --enable-ipv6 \ + --enable-static \ + --enable-unix-sockets \ + --with-brotli=#{CREW_MUSL_PREFIX} \ + --with-ca-bundle=#{CREW_PREFIX}/etc/ssl/certs/ca-certificates.crt \ + --with-ca-path=#{CREW_PREFIX}/etc/ssl/certs \ + --with-ca-fallback \ + --with-libidn2=#{CREW_MUSL_PREFIX} \ + --without-librtmp \ + --without-libpsl \ + --with-openssl=#{CREW_MUSL_PREFIX} \ + --with-zlib=#{CREW_MUSL_PREFIX}" + # begin + system "#{MUSL_ENV_OPTIONS.gsub("CPPFLAGS='", "CPPFLAGS='-DCURL_STATICLIB ")} \ + make curl_LDFLAGS='-static -all-static -L#{CREW_MUSL_PREFIX}/lib -Wl,-rpath=#{CREW_MUSL_PREFIX}/lib'" + # rescue StandardError + # undoing prior hack... + # FileUtils.mv "#{CREW_PREFIX}/include.disabled", "#{CREW_PREFIX}/include" + # end + # FileUtils.mv "#{CREW_PREFIX}/include.disabled", "#{CREW_PREFIX}/include" unless Dir.exist?("#{CREW_PREFIX}/include") + end + + def self.check + # Fail if built curl is not statically built. + system 'readelf -d src/curl | grep "Shared library" && exit 1 || true' + # Fail if built curl unable to download files + system 'src/curl -Lf https://github.com/skycocker/chromebrew/raw/master/install.sh -o /dev/null || exit 1' + end + + def self.install + system 'make', "DESTDIR=#{CREW_DEST_DIR}", 'install', 'curl_LDFLAGS=-all-static' + # Curl already includes man pages via "curl -M" + FileUtils.rm_rf "#{CREW_DEST_MUSL_PREFIX}/share/man" + FileUtils.mkdir_p "#{CREW_DEST_PREFIX}/bin" + end +end diff --git a/packages/musl_cyrus_sasl.rb b/packages/musl_cyrus_sasl.rb index b82a2c671a..2b279cc54c 100644 --- a/packages/musl_cyrus_sasl.rb +++ b/packages/musl_cyrus_sasl.rb @@ -4,8 +4,8 @@ class Musl_cyrus_sasl < Package description 'Simple Authentication and Security Layer (SASL) is a specification that describes how authentication mechanisms can be plugged into an application protocol on the wire. Cyrus SASL is an implementation of SASL that makes it easy for application developers to integrate authentication mechanisms into their application in a generic way.' homepage 'https://www.cyrusimap.org/sasl' version '2.1.27' - license 'custom' compatibility 'all' + license 'custom' source_url 'https://github.com/cyrusimap/cyrus-sasl/releases/download/cyrus-sasl-2.1.27/cyrus-sasl-2.1.27.tar.gz' source_sha256 '26866b1549b00ffd020f188a43c258017fa1c382b3ddadd8201536f72efb05d5' @@ -16,78 +16,31 @@ class Musl_cyrus_sasl < Package x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_cyrus_sasl/2.1.27_x86_64/musl_cyrus_sasl-2.1.27-chromeos-x86_64.tpxz' }) binary_sha256({ - aarch64: 'a1f6ff66ce747000afdec8006730e87506c3e3c2a8af317816ad84fd240e97b8', - armv7l: 'a1f6ff66ce747000afdec8006730e87506c3e3c2a8af317816ad84fd240e97b8', - i686: '420b9dfd517bd981837a7e26d379d5996635dfc66eae1a02eae1d9ed8e6886aa', - x86_64: 'c9c1e6ec2b43a3e3ad74dea27c310331ea6d209adb3bbf73429ff33d97950737' + aarch64: '2821b2a97fddab00c8cb159f5c4dc85595a6567c0b3ec83c37f4e7ff3afdfade', + armv7l: '2821b2a97fddab00c8cb159f5c4dc85595a6567c0b3ec83c37f4e7ff3afdfade', + i686: 'ef815038d7ebc675b8a7e4e0f89b35ee50ff7da31c6e11cd9142eaedd8ab9b12', + x86_64: '99ee11da56be7a4e82191b4875b1e5eda36956ba5c9765d41cc4d64e577412db' }) depends_on 'musl_native_toolchain' => :build + depends_on 'musl_libunistring' => :build + depends_on 'musl_libidn2' => :build + depends_on 'musl_zlib' => :build + depends_on 'musl_ncurses' => :build + depends_on 'musl_openssl' => :build + depends_on 'musl_krb5' => :build - @abi = '' - @arch_ssp_cflags = '' - @arch_c_flags = '' - @arch_cxx_flags = '' - case ARCH - when 'aarch64', 'armv7l' - @abi = 'eabihf' - when 'i686' - @arch_ssp_cflags = '-fno-stack-protector' - when 'x86_64' - end - - @cflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_c_flags} #{@arch_ssp_cflags} -fcommon" - @cxxflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_cxx_flags} #{@arch_ssp_cflags} -fcommon" - @ldflags = "-L#{CREW_PREFIX}/musl/lib -flto -static" - @cmake_ldflags = '-flto' - @musldep_cmake_options = "PATH=#{CREW_PREFIX}/musl/bin:#{CREW_PREFIX}/musl/#{ARCH}-linux-musl#{@abi}/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - AR=#{CREW_PREFIX}/musl/bin/ar \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@cmake_ldflags}' \ - cmake \ - -DCMAKE_INSTALL_PREFIX='#{CREW_PREFIX}/musl' \ - -DCMAKE_LIBRARY_PATH='#{CREW_PREFIX}/musl/lib' \ - -DCMAKE_C_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc \ - -DCMAKE_CXX_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++ \ - -DCMAKE_INCLUDE_DIRECTORIES_BEFORE=ON \ - -DINCLUDE_DIRECTORIES=#{CREW_PREFIX}/musl/include \ - -DCMAKE_C_FLAGS='#{@cflags}' \ - -DCMAKE_CXX_FLAGS='#{@cxxflags}' \ - -DCMAKE_EXE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_SHARED_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_STATIC_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_MODULE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DPROPERTY_INTERPROCEDURAL_OPTIMIZATION=TRUE \ - -DCMAKE_BUILD_TYPE=Release" - - @musldep_env_options = "PATH=#{CREW_PREFIX}/musl/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - PKG_CONFIG_LIBDIR=#{CREW_PREFIX}/musl/lib/pkgconfig \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@ldflags}'" + is_static def self.build - system "#{@musldep_env_options} ./configure --prefix=#{CREW_PREFIX}/musl \ + load "#{CREW_LIB_PATH}lib/musl.rb" + system "#{MUSL_ENV_OPTIONS} ./configure --prefix=#{CREW_MUSL_PREFIX} \ --enable-static \ --with-cxx-static" system 'make' end def self.install - ENV['CREW_FHS_NONCOMPLIANCE_ONLY_ADVISORY'] = '1' - warn_level = $VERBOSE - $VERBOSE = nil - load "#{CREW_LIB_PATH}lib/const.rb" - $VERBOSE = warn_level system 'make', "DESTDIR=#{CREW_DEST_DIR}", 'install' end end diff --git a/packages/musl_expat.rb b/packages/musl_expat.rb index 7ffec77592..bf1f7e52e9 100644 --- a/packages/musl_expat.rb +++ b/packages/musl_expat.rb @@ -3,31 +3,36 @@ require 'package' class Musl_expat < Package description 'James Clark\'s Expat XML parser library in C.' homepage 'https://sourceforge.net/projects/expat/' - version '2.4.1' + version '2.4.1-1' license 'MIT' compatibility 'all' source_url 'https://prdownloads.sourceforge.net/project/expat/expat/2.4.1/expat-2.4.1.tar.xz' source_sha256 'cf032d0dba9b928636548e32b327a2d66b1aab63c4f4a13dd132c2d1d2f2fb6a' binary_url({ - aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_expat/2.4.1_armv7l/musl_expat-2.4.1-chromeos-armv7l.tpxz', - armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_expat/2.4.1_armv7l/musl_expat-2.4.1-chromeos-armv7l.tpxz', - i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_expat/2.4.1_i686/musl_expat-2.4.1-chromeos-i686.tpxz', - x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_expat/2.4.1_x86_64/musl_expat-2.4.1-chromeos-x86_64.tpxz' + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_expat/2.4.1-1_armv7l/musl_expat-2.4.1-1-chromeos-armv7l.tpxz', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_expat/2.4.1-1_armv7l/musl_expat-2.4.1-1-chromeos-armv7l.tpxz', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_expat/2.4.1-1_i686/musl_expat-2.4.1-1-chromeos-i686.tpxz', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_expat/2.4.1-1_x86_64/musl_expat-2.4.1-1-chromeos-x86_64.tpxz' }) binary_sha256({ - aarch64: '7f5fe3311c73a4737cefdfe8553ee604c1e046376ca240711cc953186f35d590', - armv7l: '7f5fe3311c73a4737cefdfe8553ee604c1e046376ca240711cc953186f35d590', - i686: 'deb210dcd8e6db83798ff3e349669b726318ae4c99a8797b327e938c43e5e0c1', - x86_64: 'fe4d81b538419c1e27d8600c3bd87c1a4011289fb7eddd58ad75a9e8b623decc' + aarch64: '0d3de6837cb658a742d53ed9c6df190708dd0a454802bc42e15d448a8e9fbe46', + armv7l: '0d3de6837cb658a742d53ed9c6df190708dd0a454802bc42e15d448a8e9fbe46', + i686: 'c549a1c5c37d959f9c29dd9018c0e7621e3cff64af77e46c0ab16a43f43ccd85', + x86_64: 'dabf216e0c02afd4e7d98333c37de3f7aaba4fc0841d6079e6cb3be1db2811c3' }) + depends_on 'musl_native_toolchain' => :build + + is_static + def self.patch system 'filefix' end def self.build - system "#{@musldep_env_options} ./configure --prefix=#{CREW_PREFIX}/musl \ + load "#{CREW_LIB_PATH}lib/musl.rb" + system "#{MUSL_ENV_OPTIONS} ./configure --prefix=#{CREW_MUSL_PREFIX} \ --disable-shared \ --enable-static \ --with-pic" @@ -35,11 +40,6 @@ class Musl_expat < Package end def self.install - ENV['CREW_FHS_NONCOMPLIANCE_ONLY_ADVISORY'] = '1' - warn_level = $VERBOSE - $VERBOSE = nil - load "#{CREW_LIB_PATH}lib/const.rb" - $VERBOSE = warn_level system 'make', "DESTDIR=#{CREW_DEST_DIR}", 'install' end end diff --git a/packages/musl_getaddrinfo_test.rb b/packages/musl_getaddrinfo_test.rb new file mode 100644 index 0000000000..cde0dd2dee --- /dev/null +++ b/packages/musl_getaddrinfo_test.rb @@ -0,0 +1,76 @@ +require 'package' + +class Musl_getaddrinfo_test < Package + description 'musl getaddrinfo test.' + homepage 'https://www.openwall.com/lists/musl/2021/07/19/1' + version '1.0' + license 'custom' + compatibility 'all' + source_url 'SKIP' + + depends_on 'musl_native_toolchain' => :build + + def self.build + load "#{CREW_LIB_PATH}lib/musl.rb" + @a_c = <<~'SOURCEEOF' + #include + #include + #include + #include + #include + + int + main(int argc, char *argv[]) + { + struct addrinfo hints; + struct addrinfo *result, *rp; + int r; + char s[INET6_ADDRSTRLEN]; + + memset(&hints, 0, sizeof(hints)); + if (argc > 2) + hints.ai_family = AF_INET; + hints.ai_socktype = SOCK_DGRAM; + + r = getaddrinfo(argv[1], NULL, &hints, &result); + if (r != 0) { + fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(r)); + exit(EXIT_FAILURE); + } + + for (rp = result; rp != NULL; rp = rp->ai_next) { + switch (rp->ai_family) { + case AF_INET: + inet_ntop(AF_INET, &((struct sockaddr_in + *)rp->ai_addr)->sin_addr, s, INET6_ADDRSTRLEN); + printf("AF_INET: %s\n", s); + break; + case AF_INET6: + inet_ntop(AF_INET6, &((struct sockaddr_in6 + *)rp->ai_addr)->sin6_addr, s, INET6_ADDRSTRLEN); + printf("AF_INET6: %s\n", s); + break; + } + } + + freeaddrinfo(result); + } + SOURCEEOF + File.write('a.c', @a_c) + system "#{CREW_MUSL_PREFIX}/bin/#{ARCH}-linux-musl#{MUSL_ABI}-gcc \ + -isysroot=#{CREW_MUSL_PREFIX} -B#{CREW_MUSL_PREFIX}/include \ + -static --static \ + a.c -o musl_getaddrinfo_test" + end + + def self.install + FileUtils.mkdir_p "#{CREW_DEST_MUSL_PREFIX}/bin" + FileUtils.cp 'musl_getaddrinfo_test', "#{CREW_DEST_MUSL_PREFIX}/bin/" + end + + def self.check + puts 'Testing the musl resolver to see if it can resolve google.com:'.lightblue + system './musl_getaddrinfo_test google.com set_ai_family' + system './musl_getaddrinfo_test google.com' + end +end diff --git a/packages/musl_krb5.rb b/packages/musl_krb5.rb index f6fab72a83..ab305507ab 100644 --- a/packages/musl_krb5.rb +++ b/packages/musl_krb5.rb @@ -3,103 +3,54 @@ require 'package' class Musl_krb5 < Package description 'Kerberos is a network authentication protocol.' homepage 'https://web.mit.edu/kerberos' - version '1.20-4b17' - license 'openafs-krb5-a, BSD, MIT, OPENLDAP, BSD-2, HPND, BSD-4, ISC, RSA, CC-BY-SA-3.0 and BSD-2 or GPL-2+ )' + version '1.20-5c39' compatibility 'all' + license 'openafs-krb5-a, BSD, MIT, OPENLDAP, BSD-2, HPND, BSD-4, ISC, RSA, CC-BY-SA-3.0 and BSD-2 or GPL-2+ )' source_url 'https://github.com/krb5/krb5.git' - git_hashtag '4b170a1814413cbc515f9322483851a4ac5012b7' + git_hashtag '5c394dc54c9196c300bd99a66a3257692f520920' binary_url({ - aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_krb5/1.20-4b17_armv7l/musl_krb5-1.20-4b17-chromeos-armv7l.tpxz', - armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_krb5/1.20-4b17_armv7l/musl_krb5-1.20-4b17-chromeos-armv7l.tpxz', - i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_krb5/1.20-4b17_i686/musl_krb5-1.20-4b17-chromeos-i686.tpxz', - x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_krb5/1.20-4b17_x86_64/musl_krb5-1.20-4b17-chromeos-x86_64.tpxz' + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_krb5/1.20-149d_armv7l/musl_krb5-1.20-149d-chromeos-armv7l.tpxz', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_krb5/1.20-149d_armv7l/musl_krb5-1.20-149d-chromeos-armv7l.tpxz', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_krb5/1.20-5c39_i686/musl_krb5-1.20-5c39-chromeos-i686.tpxz', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_krb5/1.20-5c39_x86_64/musl_krb5-1.20-5c39-chromeos-x86_64.tpxz' }) binary_sha256({ - aarch64: 'dbc9ed703ae303b9a505681f65caef656a73778e7ab8de45d2e9bee7092417aa', - armv7l: 'dbc9ed703ae303b9a505681f65caef656a73778e7ab8de45d2e9bee7092417aa', - i686: '1008d3ed9cc1cd2c57c2cd573195475dfcea7e15240e0a3cd065acb016f8324b', - x86_64: '6db802be3a76a2ae409a459061b2cf6a16f10d831484b71c9307a78b85ead89f' + aarch64: 'ff862ef8c5c8711a2825f39a53b18ab39045424ed977f5a2ba6a431d3b706dd1', + armv7l: 'ff862ef8c5c8711a2825f39a53b18ab39045424ed977f5a2ba6a431d3b706dd1', + i686: '0e490d5c2ef27c23ddfc7f9247ad11d7d232f452c74ac45492a920d69e1640f1', + x86_64: '16b09030992177017079d74ce3bbf60f553ba42a0ce107f7c8ec86ae6278034d' }) depends_on 'musl_native_toolchain' => :build + depends_on 'musl_libunistring' => :build + depends_on 'musl_libidn2' => :build + depends_on 'musl_zlib' => :build depends_on 'musl_ncurses' => :build depends_on 'musl_openssl' => :build - @abi = '' - @arch_ssp_cflags = '' - @arch_c_flags = '' - @arch_cxx_flags = '' - case ARCH - when 'aarch64', 'armv7l' - @abi = 'eabihf' - when 'i686' - @arch_ssp_cflags = '-fno-stack-protector' - when 'x86_64' - end - - @cflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_c_flags} #{@arch_ssp_cflags} -fcommon" - @cxxflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_cxx_flags} #{@arch_ssp_cflags} -fcommon" - @ldflags = "-L#{CREW_PREFIX}/musl/lib -flto -static" - @cmake_ldflags = '-flto' - @musldep_cmake_options = "PATH=#{CREW_PREFIX}/musl/bin:#{CREW_PREFIX}/musl/#{ARCH}-linux-musl#{@abi}/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - AR=#{CREW_PREFIX}/musl/bin/ar \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@cmake_ldflags}' \ - cmake \ - -DCMAKE_INSTALL_PREFIX='#{CREW_PREFIX}/musl' \ - -DCMAKE_LIBRARY_PATH='#{CREW_PREFIX}/musl/lib' \ - -DCMAKE_C_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc \ - -DCMAKE_CXX_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++ \ - -DCMAKE_INCLUDE_DIRECTORIES_BEFORE=ON \ - -DINCLUDE_DIRECTORIES=#{CREW_PREFIX}/musl/include \ - -DCMAKE_C_FLAGS='#{@cflags}' \ - -DCMAKE_CXX_FLAGS='#{@cxxflags}' \ - -DCMAKE_EXE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_SHARED_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_STATIC_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_MODULE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DPROPERTY_INTERPROCEDURAL_OPTIMIZATION=TRUE \ - -DCMAKE_BUILD_TYPE=Release" - - @krb5_env_options = "PATH=#{CREW_PREFIX}/musl/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - PKG_CONFIG_LIBDIR=#{CREW_PREFIX}/musl/lib/pkgconfig \ - LIBS='-l:libncursesw.a -l:libtinfow.a' \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS=' #{@ldflags} -l:libncursesw.a -l:libtinfow.a'" + is_static def self.build + load "#{CREW_LIB_PATH}lib/musl.rb" Dir.chdir 'src' do system 'autoreconf -fiv' - system "#{@krb5_env_options} ./configure --prefix=#{CREW_PREFIX}/musl \ - --libdir=#{CREW_PREFIX}/musl/lib \ - --localstatedir=#{CREW_PREFIX}/var/krb5kdc \ - --disable-shared \ - --enable-static \ - --without-system-verto \ - --without-libedit \ - --disable-rpath \ - --without-keyutils" + system "#{MUSL_ENV_OPTIONS.gsub("LDFLAGS='", + "LDFLAGS='-l:libncursesw.a -l:libtinfow.a ").prepend("LIBS='-l:libncursesw.a -l:libtinfow.a' ")} \ + ./configure --prefix=#{CREW_MUSL_PREFIX} \ + --libdir=#{CREW_MUSL_PREFIX}/lib \ + --localstatedir=#{CREW_PREFIX}/var/krb5kdc \ + --disable-shared \ + --enable-static \ + --without-system-verto \ + --without-libedit \ + --disable-rpath \ + --without-keyutils" system 'make' end end def self.install - ENV['CREW_FHS_NONCOMPLIANCE_ONLY_ADVISORY'] = '1' - warn_level = $VERBOSE - $VERBOSE = nil - load "#{CREW_LIB_PATH}lib/const.rb" - $VERBOSE = warn_level Dir.chdir 'src' do system 'make', "DESTDIR=#{CREW_DEST_DIR}", 'install' end diff --git a/packages/musl_libbacktrace.rb b/packages/musl_libbacktrace.rb index 1b3dd98b02..704702b4db 100644 --- a/packages/musl_libbacktrace.rb +++ b/packages/musl_libbacktrace.rb @@ -18,52 +18,24 @@ class Musl_libbacktrace < Package x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libbacktrace/d0f5e95a87a4d3e0a1ed6c069b5dae7cbab3ed2a_x86_64/musl_libbacktrace-d0f5e95a87a4d3e0a1ed6c069b5dae7cbab3ed2a-chromeos-x86_64.tpxz' }) binary_sha256({ - aarch64: '19bc88daa2ee3de04167a159d2a52d1f35e3f54e531847de9b441517cfef7d4b', - armv7l: '19bc88daa2ee3de04167a159d2a52d1f35e3f54e531847de9b441517cfef7d4b', - i686: '1dc24f90bd5cb0c86518f6843906fa28647f8e3c4c4c44ce33e41707e22cf967', - x86_64: '24b85b73f26b55343485cca8938aebfcd09c586ffba6cef5a7430b4a0336c82b' + aarch64: '6bbc858bbdaad878e275581442c17cae435cf936fec7bf1d98da24b93f46c729', + armv7l: '6bbc858bbdaad878e275581442c17cae435cf936fec7bf1d98da24b93f46c729', + i686: 'b2a40ba11af574e0a39cb2f3ec7e3befcc6640d44b474c4b04a558f1303a225d', + x86_64: '675283778411fed85ce6890f2bdce2d6e4f8b0956f8c1c3d2eb93c80ecc7e381' }) depends_on 'musl_native_toolchain' => :build - @abi = '' - @arch_c_flags = '' - @arch_cxx_flags = '' - case ARCH - when 'aarch64', 'armv7l' - @abi = 'eabihf' - end - - @cflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_c_flags} -fcommon" - @cxxflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_cxx_flags} -fcommon -static" - @ldflags = "-L#{CREW_PREFIX}/musl/lib -flto -static" - @cmake_ldflags = '-flto' - - @musldep_env_options = "PATH=#{CREW_PREFIX}/musl/bin:#{ENV['PATH']} \ - LIBRARY_PATH='#{CREW_PREFIX}/musl/lib:$LIBRARY_PATH' \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - PKG_CONFIG_LIBDIR=#{CREW_PREFIX}/musl/lib/pkgconfig \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@ldflags}'" - def self.build - system "./configure --prefix=#{CREW_PREFIX}/musl \ - #{@musldep_env_options} \ + load "#{CREW_LIB_PATH}lib/musl.rb" + system "./configure --prefix=#{CREW_MUSL_PREFIX} \ + #{MUSL_ENV_OPTIONS} \ --enable-shared \ --enable-static" system 'make' end def self.install - ENV['CREW_FHS_NONCOMPLIANCE_ONLY_ADVISORY'] = '1' - warn_level = $VERBOSE - $VERBOSE = nil - load "#{CREW_LIB_PATH}lib/const.rb" - $VERBOSE = warn_level system "make DESTDIR=#{CREW_DEST_DIR} install" end end diff --git a/packages/musl_libidn2.rb b/packages/musl_libidn2.rb index 5e570543ae..b0d43c46a3 100644 --- a/packages/musl_libidn2.rb +++ b/packages/musl_libidn2.rb @@ -3,85 +3,39 @@ require 'package' class Musl_libidn2 < Package description 'GNU Libidn is a fully documented implementation of the Stringprep, Punycode and IDNA 2003 specifications.' homepage 'https://www.gnu.org/software/libidn/' - version '2.3.2' + @_ver = '2.3.2' + version "#{@_ver}-1" license 'GPL-2+ and LGPL-3+' compatibility 'all' - source_url "https://ftpmirror.gnu.org/libidn/libidn2-#{version}.tar.gz" + source_url "https://ftpmirror.gnu.org/libidn/libidn2-#{@_ver}.tar.gz" source_sha256 '76940cd4e778e8093579a9d195b25fff5e936e9dc6242068528b437a76764f91' binary_url({ - aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libidn2/2.3.2_armv7l/musl_libidn2-2.3.2-chromeos-armv7l.tpxz', - armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libidn2/2.3.2_armv7l/musl_libidn2-2.3.2-chromeos-armv7l.tpxz', - i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libidn2/2.3.2_i686/musl_libidn2-2.3.2-chromeos-i686.tpxz', - x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libidn2/2.3.2_x86_64/musl_libidn2-2.3.2-chromeos-x86_64.tpxz' + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libidn2/2.3.2-1_armv7l/musl_libidn2-2.3.2-1-chromeos-armv7l.tpxz', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libidn2/2.3.2-1_armv7l/musl_libidn2-2.3.2-1-chromeos-armv7l.tpxz', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libidn2/2.3.2-1_i686/musl_libidn2-2.3.2-1-chromeos-i686.tpxz', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libidn2/2.3.2-1_x86_64/musl_libidn2-2.3.2-1-chromeos-x86_64.tpxz' }) binary_sha256({ - aarch64: '05013c0c7e71e590b2b7d7c55519ff837a09f187330612c142f2bb7e2632b5a6', - armv7l: '05013c0c7e71e590b2b7d7c55519ff837a09f187330612c142f2bb7e2632b5a6', - i686: '5652db6b61a1b4245a8b72aa27da31cffcdb15de4a3b7bb724b07264f022b505', - x86_64: '0813b2ae14c7349e1112f4e93ca5cd76e5a0ba5bee4c51b1db2f74c8e86006c7' + aarch64: 'fd3f74482aebcf9897c618eb74c45e6512ff77524f3f6135029ad7e746e5ecbe', + armv7l: 'fd3f74482aebcf9897c618eb74c45e6512ff77524f3f6135029ad7e746e5ecbe', + i686: '45c0aa8e6cac6846789851ae08a06d0f7165fbfe0ef8c8c3a331befa2d00edb9', + x86_64: '9919fe30f0b8710388e874a7289664a4867dae54b3bf2bbd494eecf92ebb8ac4' }) depends_on 'musl_native_toolchain' => :build depends_on 'musl_libunistring' => :build + depends_on 'musl_zlib' => :build - @abi = '' - @arch_ssp_cflags = '' - @arch_c_flags = '' - @arch_cxx_flags = '' - case ARCH - when 'aarch64', 'armv7l' - @abi = 'eabihf' - when 'i686' - @arch_ssp_cflags = '-fno-stack-protector' - when 'x86_64' - end - - @cflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_c_flags} #{@arch_ssp_cflags} -fcommon" - @cxxflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_cxx_flags} #{@arch_ssp_cflags} -fcommon" - @ldflags = "-L#{CREW_PREFIX}/musl/lib -flto -static" - @cmake_ldflags = '-flto' - @musldep_cmake_options = "PATH=#{CREW_PREFIX}/musl/bin:#{CREW_PREFIX}/musl/#{ARCH}-linux-musl#{@abi}/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - AR=#{CREW_PREFIX}/musl/bin/ar \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@cmake_ldflags}' \ - cmake \ - -DCMAKE_INSTALL_PREFIX='#{CREW_PREFIX}/musl' \ - -DCMAKE_LIBRARY_PATH='#{CREW_PREFIX}/musl/lib' \ - -DCMAKE_C_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc \ - -DCMAKE_CXX_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++ \ - -DCMAKE_INCLUDE_DIRECTORIES_BEFORE=ON \ - -DINCLUDE_DIRECTORIES=#{CREW_PREFIX}/musl/include \ - -DCMAKE_C_FLAGS='#{@cflags}' \ - -DCMAKE_CXX_FLAGS='#{@cxxflags}' \ - -DCMAKE_EXE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_SHARED_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_STATIC_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_MODULE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DPROPERTY_INTERPROCEDURAL_OPTIMIZATION=TRUE \ - -DCMAKE_BUILD_TYPE=Release" - - @musldep_env_options = "PATH=#{CREW_PREFIX}/musl/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - PKG_CONFIG_LIBDIR=#{CREW_PREFIX}/musl/lib/pkgconfig \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@ldflags}'" + is_static def self.patch FileUtils.rm_f 'doc/idn2.1' end def self.build - system "#{@musldep_env_options} ./configure --prefix=#{CREW_PREFIX}/musl \ + load "#{CREW_LIB_PATH}lib/musl.rb" + system "#{MUSL_ENV_OPTIONS} ./configure --prefix=#{CREW_MUSL_PREFIX} \ --disable-shared \ --disable-doc \ --disable-rpath \ @@ -91,11 +45,6 @@ class Musl_libidn2 < Package end def self.install - ENV['CREW_FHS_NONCOMPLIANCE_ONLY_ADVISORY'] = '1' - warn_level = $VERBOSE - $VERBOSE = nil - load "#{CREW_LIB_PATH}lib/const.rb" - $VERBOSE = warn_level system 'make', "DESTDIR=#{CREW_DEST_DIR}", 'install' end end diff --git a/packages/musl_libnghttp2.rb b/packages/musl_libnghttp2.rb index e6cfa30ac9..2dc9588298 100644 --- a/packages/musl_libnghttp2.rb +++ b/packages/musl_libnghttp2.rb @@ -3,7 +3,7 @@ require 'package' class Musl_libnghttp2 < Package description 'library implementing HTTP/2 protocol' homepage 'https://nghttp2.org/' - @_ver = '1.45.1' + @_ver = '1.46.0' version @_ver license 'MIT' compatibility 'all' @@ -11,93 +11,42 @@ class Musl_libnghttp2 < Package git_hashtag "v#{@_ver}" binary_url({ - aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libnghttp2/1.45.1_armv7l/musl_libnghttp2-1.45.1-chromeos-armv7l.tpxz', - armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libnghttp2/1.45.1_armv7l/musl_libnghttp2-1.45.1-chromeos-armv7l.tpxz', - i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libnghttp2/1.45.1_i686/musl_libnghttp2-1.45.1-chromeos-i686.tpxz', - x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libnghttp2/1.45.1_x86_64/musl_libnghttp2-1.45.1-chromeos-x86_64.tpxz' + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libnghttp2/1.46.0_armv7l/musl_libnghttp2-1.46.0-chromeos-armv7l.tpxz', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libnghttp2/1.46.0_armv7l/musl_libnghttp2-1.46.0-chromeos-armv7l.tpxz', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libnghttp2/1.46.0_i686/musl_libnghttp2-1.46.0-chromeos-i686.tpxz', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libnghttp2/1.46.0_x86_64/musl_libnghttp2-1.46.0-chromeos-x86_64.tpxz' }) binary_sha256({ - aarch64: '11da4116f1a2053d66dffc6ba678add182ce4fd779164a98206ccb2dac9c882b', - armv7l: '11da4116f1a2053d66dffc6ba678add182ce4fd779164a98206ccb2dac9c882b', - i686: '6976dfd15fbb3fe701d5805dd5fe5c9e3e8451a1fc4e3a3ffedd552484232260', - x86_64: '89f12cc2a150334b932ecc58e235721d776e42dc44e9acd34fa4b0d5529dc8a3' + aarch64: '100bc140036d70a07ae3497da6b276b46acadbbe9f214f17c7eea4b2eedea6b7', + armv7l: '100bc140036d70a07ae3497da6b276b46acadbbe9f214f17c7eea4b2eedea6b7', + i686: '45ee0ea9e9fbb24681e9da2dabd2191d76b2374521cf9a4ee6bcc200edf9de73', + x86_64: '7f52972492d8445872028ee6a6c6ca899abd30e2b3fee4d0e2325a9c69300e4c' }) depends_on 'musl_native_toolchain' => :build + depends_on 'musl_libunistring' => :build + depends_on 'musl_libidn2' => :build depends_on 'musl_zlib' => :build + depends_on 'musl_ncurses' => :build depends_on 'musl_openssl' => :build - @abi = '' - @arch_ssp_cflags = '' - @arch_c_flags = '' - @arch_cxx_flags = '' - case ARCH - when 'aarch64', 'armv7l' - @abi = 'eabihf' - when 'i686' - @arch_ssp_cflags = '-fno-stack-protector' - when 'x86_64' - end - - @cflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_c_flags} #{@arch_ssp_cflags} -fcommon" - @cxxflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_cxx_flags} #{@arch_ssp_cflags} -fcommon" - @ldflags = "-L#{CREW_PREFIX}/musl/lib -flto -static" - @cmake_ldflags = '-flto' - @musldep_cmake_options = "PATH=#{CREW_PREFIX}/musl/bin:#{CREW_PREFIX}/musl/#{ARCH}-linux-musl#{@abi}/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - AR=#{CREW_PREFIX}/musl/bin/ar \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@cmake_ldflags}' \ - cmake \ - -DCMAKE_INSTALL_PREFIX='#{CREW_PREFIX}/musl' \ - -DCMAKE_INSTALL_LIBDIR='#{CREW_PREFIX}/musl/lib' \ - -DCMAKE_LIBRARY_PATH='#{CREW_PREFIX}/musl/lib' \ - -DCMAKE_C_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc \ - -DCMAKE_CXX_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++ \ - -DCMAKE_INCLUDE_DIRECTORIES_BEFORE=ON \ - -DINCLUDE_DIRECTORIES=#{CREW_PREFIX}/musl/include \ - -DCMAKE_C_FLAGS='#{@cflags}' \ - -DCMAKE_CXX_FLAGS='#{@cxxflags}' \ - -DCMAKE_EXE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_SHARED_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_STATIC_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_MODULE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DPROPERTY_INTERPROCEDURAL_OPTIMIZATION=TRUE \ - -DCMAKE_BUILD_TYPE=Release" - - @musldep_env_options = "PATH=#{CREW_PREFIX}/musl/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - PKG_CONFIG_LIBDIR=#{CREW_PREFIX}/musl/lib/pkgconfig \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@ldflags}'" + is_static def self.build + load "#{CREW_LIB_PATH}lib/musl.rb" FileUtils.mkdir('builddir') Dir.chdir('builddir') do - system "#{@musldep_cmake_options} \ + system "#{MUSL_CMAKE_OPTIONS} \ -DENABLE_SHARED_LIB=OFF \ -DENABLE_STATIC_LIB=ON \ -DENABLE_LIB_ONLY=ON \ ../ -G Ninja" end - system "PATH=#{CREW_PREFIX}/musl/bin:#{CREW_PREFIX}/musl/#{ARCH}-linux-musl#{@abi}/bin:#{ENV['PATH']} \ + system "PATH=#{CREW_MUSL_PREFIX}/bin:#{CREW_MUSL_PREFIX}/#{ARCH}-linux-musl#{MUSL_ABI}/bin:#{ENV['PATH']} \ samu -C builddir -j#{CREW_NPROC}" end def self.install - ENV['CREW_FHS_NONCOMPLIANCE_ONLY_ADVISORY'] = '1' - warn_level = $VERBOSE - $VERBOSE = nil - load "#{CREW_LIB_PATH}lib/const.rb" - $VERBOSE = warn_level system "DESTDIR=#{CREW_DEST_DIR} samu -C builddir install" end end diff --git a/packages/musl_libssh.rb b/packages/musl_libssh.rb index 27cce3115a..434d7ee6e6 100644 --- a/packages/musl_libssh.rb +++ b/packages/musl_libssh.rb @@ -5,11 +5,10 @@ class Musl_libssh < Package homepage 'https://www.libssh.org/' @_ver = '0.9.6' version @_ver - @_ver_prelastdot = @_ver.rpartition('.')[0] - license 'LGPL-2.1' compatibility 'all' - source_url "https://www.libssh.org/files/#{@_ver_prelastdot}/libssh-#{@_ver}.tar.xz" - source_sha256 '86bcf885bd9b80466fe0e05453c58b877df61afa8ba947a58c356d7f0fab829b' + license 'LGPL-2.1' + source_url 'https://git.libssh.org/projects/libssh.git' + git_hashtag "libssh-#{@_ver}" binary_url({ aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libssh/0.9.6_armv7l/musl_libssh-0.9.6-chromeos-armv7l.tpxz', @@ -18,93 +17,41 @@ class Musl_libssh < Package x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libssh/0.9.6_x86_64/musl_libssh-0.9.6-chromeos-x86_64.tpxz' }) binary_sha256({ - aarch64: 'c34d6dc7d52669c6587c7d1523ab526897332edc3a185b6295f4a338f1e5e6cb', - armv7l: 'c34d6dc7d52669c6587c7d1523ab526897332edc3a185b6295f4a338f1e5e6cb', - i686: '55180705914fcb13215be2fe52d798b37ce760c6cf504a25b0a0c3d857388e29', - x86_64: '1917dffdc56af43aea4ccd9472ea8d6d4002b3057ea1118907e20e6fdc383f50' + aarch64: '4174ea38f912fdc3de9f7100131b0bf826ad9412877bd33ff68835692aabe86f', + armv7l: '4174ea38f912fdc3de9f7100131b0bf826ad9412877bd33ff68835692aabe86f', + i686: 'ddb6ba2660d2118ce19a9b551668bf75b55a45fa202d1673186aa1ccb7a1a4db', + x86_64: '59e96f9b5902d6789dcb71d7ff864d533ed4522f419dd7178b2d1c86664a3264' }) - depends_on 'musl_krb5' => :build depends_on 'musl_native_toolchain' => :build + depends_on 'musl_libunistring' => :build + depends_on 'musl_libidn2' => :build depends_on 'musl_zlib' => :build + depends_on 'musl_ncurses' => :build depends_on 'musl_openssl' => :build + depends_on 'musl_libnghttp2' => :build + depends_on 'py3_abimap' => :build - @abi = '' - @arch_ssp_cflags = '' - @arch_c_flags = '' - @arch_cxx_flags = '' - case ARCH - when 'aarch64', 'armv7l' - @abi = 'eabihf' - when 'i686' - @arch_ssp_cflags = '-fno-stack-protector' - when 'x86_64' - end - - @cflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_c_flags} #{@arch_ssp_cflags} -fcommon" - @cxxflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_cxx_flags} #{@arch_ssp_cflags} -fcommon" - @ldflags = "-L#{CREW_PREFIX}/musl/lib -flto -static" - @cmake_ldflags = '-flto' - @musldep_cmake_options = "PATH=#{CREW_PREFIX}/musl/bin:#{CREW_PREFIX}/musl/#{ARCH}-linux-musl#{@abi}/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - AR=#{CREW_PREFIX}/musl/bin/ar \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@cmake_ldflags}' \ - cmake \ - -DCMAKE_INSTALL_PREFIX='#{CREW_PREFIX}/musl' \ - -DCMAKE_INSTALL_LIBDIR='#{CREW_PREFIX}/musl/lib' \ - -DCMAKE_LIBRARY_PATH='#{CREW_PREFIX}/musl/lib' \ - -DCMAKE_C_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc \ - -DCMAKE_CXX_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++ \ - -DCMAKE_INCLUDE_DIRECTORIES_BEFORE=ON \ - -DINCLUDE_DIRECTORIES=#{CREW_PREFIX}/musl/include \ - -DCMAKE_C_FLAGS='#{@cflags}' \ - -DCMAKE_CXX_FLAGS='#{@cxxflags}' \ - -DCMAKE_EXE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_SHARED_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_STATIC_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_MODULE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DPROPERTY_INTERPROCEDURAL_OPTIMIZATION=TRUE \ - -DCMAKE_BUILD_TYPE=Release" - - @musldep_env_options = "PATH=#{CREW_PREFIX}/musl/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - PKG_CONFIG_LIBDIR=#{CREW_PREFIX}/musl/lib/pkgconfig \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@ldflags}'" + is_static def self.build + load "#{CREW_LIB_PATH}lib/musl.rb" FileUtils.mkdir('builddir') Dir.chdir('builddir') do - system "#{@musldep_cmake_options} \ - -DOPENSSL_INCLUDE_DIR=#{CREW_PREFIX}/musl/include \ + system "#{MUSL_CMAKE_OPTIONS} \ + -DOPENSSL_INCLUDE_DIR=#{CREW_MUSL_PREFIX}/include \ -DBUILD_SHARED_LIBS=OFF \ -DGLOBAL_BIND_CONFIG=#{CREW_PREFIX}/etc/ssh/libssh_server_config \ -DGLOBAL_CLIENT_CONFIG=#{CREW_PREFIX}/etc/ssh/ssh_config \ -DHAVE_GLOB=0 \ -DUNIT_TESTING=OFF \ -DWITH_EXAMPLES=OFF \ - -DWITH_STATIC_LIB=ON \ ../ -G Ninja" end - system "PATH=#{CREW_PREFIX}/musl/bin:#{CREW_PREFIX}/musl/#{ARCH}-linux-musl#{@abi}/bin:#{ENV['PATH']} \ - samu -C builddir -j#{CREW_NPROC}" + system 'samu -C builddir' end def self.install - ENV['CREW_FHS_NONCOMPLIANCE_ONLY_ADVISORY'] = '1' - warn_level = $VERBOSE - $VERBOSE = nil - load "#{CREW_LIB_PATH}lib/const.rb" - $VERBOSE = warn_level system "DESTDIR=#{CREW_DEST_DIR} samu -C builddir install" end end diff --git a/packages/musl_libucontext.rb b/packages/musl_libucontext.rb index 7b31648f06..dffa99abe3 100644 --- a/packages/musl_libucontext.rb +++ b/packages/musl_libucontext.rb @@ -16,62 +16,36 @@ class Musl_libucontext < Package x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libucontext/1.1_x86_64/musl_libucontext-1.1-chromeos-x86_64.tpxz' }) binary_sha256({ - aarch64: 'ecb4f59b8669ea34f61cb5889e46f5de6be4241f8730c570d2f180d30782370f', - armv7l: 'ecb4f59b8669ea34f61cb5889e46f5de6be4241f8730c570d2f180d30782370f', - i686: '6bc511905bc917b2cd3ecf708760e18fd3b2c1f59560b1f5796bdeb2e3c4ffaf', - x86_64: 'cc3d984411b2353fe19cb3796cbe0d8a590b48d7e7998dc6a42d22703201c325' + aarch64: '5b44c0cfd1bdad11b17ff782784dd0ac1f21d5cbeed72a924826b038e1ca1476', + armv7l: '5b44c0cfd1bdad11b17ff782784dd0ac1f21d5cbeed72a924826b038e1ca1476', + i686: 'eb76db594fce4f7f5d087276c547489a9d5b3808827d417e5f023e1c034e4f64', + x86_64: 'ac3eb3428728c28d7daa10008d5b189f3223fc7957e5879e2a7f2cc63f5d7a07' }) depends_on 'musl_native_toolchain' => :build - @abi = '' - @arch_c_flags = '' - @arch_cxx_flags = '' - case ARCH - when 'aarch64', 'armv7l' - @abi = 'eabihf' - @arch = 'arm' - when 'i686' - @arch = 'X86' - when 'x86_64' - @arch = 'X86_64' - end - - @cflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_c_flags} -fcommon" - @cxxflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_cxx_flags} -fcommon -static" - @ldflags = "-L#{CREW_PREFIX}/musl/lib -flto -static" - @cmake_ldflags = '-flto' - - @musldep_env_options = "PATH=#{CREW_PREFIX}/musl/bin:#{ENV['PATH']} \ - LIBRARY_PATH='#{CREW_PREFIX}/musl/lib:$LIBRARY_PATH' \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - LIBDIR=#{CREW_PREFIX}/musl/lib \ - INCLUDEDIR=#{CREW_PREFIX}/musl/include \ - PKG_CONFIG_LIBDIR=#{CREW_PREFIX}/musl/lib/pkgconfig \ - PKGCONFIGDIR=#{CREW_PREFIX}/musl/lib/pkgconfig \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@ldflags}'" + is_static def self.patch - system "sed -i 's,LIBDIR := /lib,LIBDIR := #{CREW_PREFIX}/musl/lib,g' Makefile" - system "sed -i 's,INCLUDEDIR := /usr/include,INCLUDEDIR := #{CREW_PREFIX}/musl/include,g' Makefile" - system "sed -i 's,PKGCONFIGDIR := /usr/lib/pkgconfig,PKGCONFIGDIR := #{CREW_PREFIX}/musl/lib/pkgconfig,g' Makefile" + load "#{CREW_LIB_PATH}lib/musl.rb" + system "sed -i 's,LIBDIR := /lib,LIBDIR := #{CREW_MUSL_PREFIX}/lib,g' Makefile" + system "sed -i 's,INCLUDEDIR := /usr/include,INCLUDEDIR := #{CREW_MUSL_PREFIX}/include,g' Makefile" + system "sed -i 's,PKGCONFIGDIR := /usr/lib/pkgconfig,PKGCONFIGDIR := #{CREW_MUSL_PREFIX}/lib/pkgconfig,g' Makefile" end def self.build - system "#{@musldep_env_options} make ARCH=#{@arch}" + case ARCH + when 'aarch64', 'armv7l' + @arch = 'arm' + when 'i686' + @arch = 'X86' + when 'x86_64' + @arch = 'X86_64' + end + system "#{MUSL_ENV_OPTIONS} make ARCH=#{@arch}" end def self.install - ENV['CREW_FHS_NONCOMPLIANCE_ONLY_ADVISORY'] = '1' - warn_level = $VERBOSE - $VERBOSE = nil - load "#{CREW_LIB_PATH}lib/const.rb" - $VERBOSE = warn_level system "make ARCH=#{@arch} DESTDIR=#{CREW_DEST_DIR} install" end end diff --git a/packages/musl_libunbound.rb b/packages/musl_libunbound.rb new file mode 100644 index 0000000000..f37cd5f9bf --- /dev/null +++ b/packages/musl_libunbound.rb @@ -0,0 +1,58 @@ +require 'package' + +class Musl_libunbound < Package + description 'Unbound is a validating, recursive, and caching DNS resolver.' + homepage 'https://nlnetlabs.nl/projects/unbound/about/' + @_ver = '1.14.0' + version @_ver + license 'BSD and GPL-2' + compatibility 'all' + source_url "https://nlnetlabs.nl/downloads/unbound/unbound-#{@_ver}.tar.gz" + source_sha256 '6ef91cbf02d5299eab39328c0857393de7b4885a2fe7233ddfe3c124ff5a89c8' + + binary_url({ + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libunbound/1.14.0_armv7l/musl_libunbound-1.14.0-chromeos-armv7l.tpxz', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libunbound/1.14.0_armv7l/musl_libunbound-1.14.0-chromeos-armv7l.tpxz', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libunbound/1.14.0_i686/musl_libunbound-1.14.0-chromeos-i686.tpxz', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libunbound/1.14.0_x86_64/musl_libunbound-1.14.0-chromeos-x86_64.tpxz' + }) + binary_sha256({ + aarch64: '6a4fff3a80696455b624ae2ba0e1304148142390bfbf363e571d3deb927f67f3', + armv7l: '6a4fff3a80696455b624ae2ba0e1304148142390bfbf363e571d3deb927f67f3', + i686: 'f72c7bdb7092fc431f5b99c37b2350975410b268c8c92ef768503bca8c285692', + x86_64: 'f25952a3c365543c2404da2b0b14138d8dfa7caac01e1cadf6444fcaa37b5e4f' + }) + + depends_on 'musl_openssl' => :build + depends_on 'musl_expat' => :build + depends_on 'musl_native_toolchain' => :build + + is_static + + def self.patch + load "#{CREW_LIB_PATH}lib/musl.rb" + system 'filefix' + end + + def self.build + system './configure --help' + system "#{MUSL_ENV_OPTIONS} ./configure \ + --prefix=#{CREW_MUSL_PREFIX} \ + --disable-shared \ + --enable-static \ + --with-pic \ + --with-ssl=#{CREW_MUSL_PREFIX} \ + --with-libexpat=#{CREW_MUSL_PREFIX} \ + --with-libunbound-only" + system 'make' + end + + def self.check + # tests are broken on musl for this. + # system 'make', 'test' + end + + def self.install + system "make DESTDIR=#{CREW_DEST_DIR} install" + end +end diff --git a/packages/musl_libunistring.rb b/packages/musl_libunistring.rb index afd7af82f9..86c77c36bb 100644 --- a/packages/musl_libunistring.rb +++ b/packages/musl_libunistring.rb @@ -3,94 +3,41 @@ require 'package' class Musl_libunistring < Package description 'A library that provides functions for manipulating Unicode strings and for manipulating C strings according to the Unicode standard.' homepage 'https://www.gnu.org/software/libunistring/' - version '0.9.10' + version '0.9.10-1' license 'LGPL-3+ or GPL-2+ and FDL-1.2 or GPL-3+' compatibility 'all' source_url 'https://ftpmirror.gnu.org/libunistring/libunistring-0.9.10.tar.xz' source_sha256 'eb8fb2c3e4b6e2d336608377050892b54c3c983b646c561836550863003c05d7' binary_url({ - aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libunistring/0.9.10_armv7l/musl_libunistring-0.9.10-chromeos-armv7l.tpxz', - armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libunistring/0.9.10_armv7l/musl_libunistring-0.9.10-chromeos-armv7l.tpxz', - i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libunistring/0.9.10_i686/musl_libunistring-0.9.10-chromeos-i686.tpxz', - x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libunistring/0.9.10_x86_64/musl_libunistring-0.9.10-chromeos-x86_64.tpxz' + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libunistring/0.9.10-1_armv7l/musl_libunistring-0.9.10-1-chromeos-armv7l.tpxz', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libunistring/0.9.10-1_armv7l/musl_libunistring-0.9.10-1-chromeos-armv7l.tpxz', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libunistring/0.9.10-1_i686/musl_libunistring-0.9.10-1-chromeos-i686.tpxz', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libunistring/0.9.10-1_x86_64/musl_libunistring-0.9.10-1-chromeos-x86_64.tpxz' }) binary_sha256({ - aarch64: 'c1e10a31ed0f6a307f3988571e19d3b6e18a0e46c67f68a4dcaaac15f5bc754a', - armv7l: 'c1e10a31ed0f6a307f3988571e19d3b6e18a0e46c67f68a4dcaaac15f5bc754a', - i686: '6edaae97bfdf67dab38234a29cfc21b8c5bbae453bd3e71a777dce858f392a8d', - x86_64: '12aece78b0944c92022305c75365a48ab6adbb2c68ba8e36bbd01c142b48ae33' + aarch64: '7993833f0c924bbe1cc0886181287cf52a74252660ccdf7de9db2ca0f58fbf17', + armv7l: '7993833f0c924bbe1cc0886181287cf52a74252660ccdf7de9db2ca0f58fbf17', + i686: '460681fc32028b10be1365826a902e3f24e707a6d3fa45f038554af41d3494bc', + x86_64: '2ab6bc568ddd929c7cab3bf14fc2ad44746cbb943e3cbf896c10f28220a8a4e8' }) depends_on 'musl_native_toolchain' => :build depends_on 'musl_zlib' => :build - @abi = '' - @arch_ssp_cflags = '' - @arch_c_flags = '' - @arch_cxx_flags = '' - case ARCH - when 'aarch64', 'armv7l' - @abi = 'eabihf' - when 'i686' - @arch_ssp_cflags = '-fno-stack-protector' - when 'x86_64' - end - - @cflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_c_flags} #{@arch_ssp_cflags} -fcommon" - @cxxflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_cxx_flags} #{@arch_ssp_cflags} -fcommon" - @ldflags = "-L#{CREW_PREFIX}/musl/lib -flto -static" - @cmake_ldflags = '-flto' - @musldep_cmake_options = "PATH=#{CREW_PREFIX}/musl/bin:#{CREW_PREFIX}/musl/#{ARCH}-linux-musl#{@abi}/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - AR=#{CREW_PREFIX}/musl/bin/ar \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@cmake_ldflags}' \ - cmake \ - -DCMAKE_INSTALL_PREFIX='#{CREW_PREFIX}/musl' \ - -DCMAKE_LIBRARY_PATH='#{CREW_PREFIX}/musl/lib' \ - -DCMAKE_C_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc \ - -DCMAKE_CXX_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++ \ - -DCMAKE_INCLUDE_DIRECTORIES_BEFORE=ON \ - -DINCLUDE_DIRECTORIES=#{CREW_PREFIX}/musl/include \ - -DCMAKE_C_FLAGS='#{@cflags}' \ - -DCMAKE_CXX_FLAGS='#{@cxxflags}' \ - -DCMAKE_EXE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_SHARED_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_STATIC_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_MODULE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DPROPERTY_INTERPROCEDURAL_OPTIMIZATION=TRUE \ - -DCMAKE_BUILD_TYPE=Release" - - @musldep_env_options = "PATH=#{CREW_PREFIX}/musl/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - PKG_CONFIG_LIBDIR=#{CREW_PREFIX}/musl/lib/pkgconfig \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@ldflags}'" + is_static def self.build - system "#{@musldep_env_options} ./configure --prefix=#{CREW_PREFIX}/musl \ + load "#{CREW_LIB_PATH}lib/musl.rb" + system "#{MUSL_ENV_OPTIONS} ./configure --prefix=#{CREW_MUSL_PREFIX} \ --enable-static \ --disable-shared" system 'make' end def self.install - ENV['CREW_FHS_NONCOMPLIANCE_ONLY_ADVISORY'] = '1' - warn_level = $VERBOSE - $VERBOSE = nil - load "#{CREW_LIB_PATH}lib/const.rb" - $VERBOSE = warn_level system 'make', "DESTDIR=#{CREW_DEST_DIR}", 'install' # avoid conflict with musl_libidn2 - FileUtils.rm_f "#{CREW_DEST_PREFIX}/musl/share/info/dir" + FileUtils.rm_f "#{CREW_DEST_MUSL_PREFIX}/share/info/dir" end end diff --git a/packages/musl_libunwind.rb b/packages/musl_libunwind.rb index 0599bb24c6..c22f05235c 100644 --- a/packages/musl_libunwind.rb +++ b/packages/musl_libunwind.rb @@ -17,57 +17,34 @@ class Musl_libunwind < Package x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_libunwind/1.5.0_x86_64/musl_libunwind-1.5.0-chromeos-x86_64.tpxz' }) binary_sha256({ - aarch64: '8325ff524aa0259dfd76a96fe43a12d16f8cc7e7c0d1a69f2db5bd68eb0f5879', - armv7l: '8325ff524aa0259dfd76a96fe43a12d16f8cc7e7c0d1a69f2db5bd68eb0f5879', - i686: 'c87940a7e9ea4963fce675445c4276cf8baae2506fb4260adbb1b8baf78cc9d2', - x86_64: '77172a1ee1ee561db6c95c1dffd8553b094214afbd8860a5dcdf00b0d288ec23' + aarch64: '6c8cd877134f2b8b79ae166aff8d08fa782fecac5dbbb70a937d3a0f6cd65588', + armv7l: '6c8cd877134f2b8b79ae166aff8d08fa782fecac5dbbb70a937d3a0f6cd65588', + i686: 'b350166133b7d657c2316740f8a3e236ff4653c9ce7b9842b473f6bf153d8465', + x86_64: '52eb28cf1ae245e52084699cdc1bc18e604f3a9d2b1ac2c5a4fd82b2548a2d8c' }) depends_on 'musl_native_toolchain' => :build depends_on 'musl_libbacktrace' => :build depends_on 'musl_libucontext' => :build - @abi = '' - @arch_c_flags = '' - @arch_cxx_flags = '' - case ARCH - when 'aarch64', 'armv7l' - @abi = 'eabihf' - @arch = 'arm' - when 'i686' - @arch = 'x86' - when 'x86_64' - @arch = 'x86_64' - end - - @cflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_c_flags} -fcommon" - @cxxflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_cxx_flags} -fcommon -static" - @ldflags = "-L#{CREW_PREFIX}/musl/lib -flto -static" - @cmake_ldflags = '-flto' - - @musldep_env_options = "PATH=#{CREW_PREFIX}/musl/bin:#{ENV['PATH']} \ - LIBRARY_PATH='#{CREW_PREFIX}/musl/lib:$LIBRARY_PATH' \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - LIBDIR=#{CREW_PREFIX}/musl/lib \ - INCLUDEDIR=#{CREW_PREFIX}/musl/include \ - PKG_CONFIG_LIBDIR=#{CREW_PREFIX}/musl/lib/pkgconfig \ - PKGCONFIGDIR=#{CREW_PREFIX}/musl/lib/pkgconfig \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@ldflags}'" - def self.patch # As per https://www.linuxquestions.org/questions/linux-software-2/building-libunwind-on-x86-musl-libc-against-libucontext-4175692781/#post6235105 # https://archive.md/gaEbN + case ARCH + when 'aarch64', 'armv7l' + @arch = 'arm' + when 'i686' + @arch = 'x86' + when 'x86_64' + @arch = 'x86_64' + end system "sed -i '1i#include \' src/#{@arch}/Gos-linux.c" system 'filefix' end def self.build - system "#{@musldep_env_options} ./configure --prefix=#{CREW_PREFIX}/musl \ + load "#{CREW_LIB_PATH}lib/musl.rb" + system "#{MUSL_ENV_OPTIONS} ./configure --prefix=#{CREW_MUSL_PREFIX} \ --enable-shared \ --enable-static \ --enable-ptrace \ @@ -76,11 +53,6 @@ class Musl_libunwind < Package end def self.install - ENV['CREW_FHS_NONCOMPLIANCE_ONLY_ADVISORY'] = '1' - warn_level = $VERBOSE - $VERBOSE = nil - load "#{CREW_LIB_PATH}lib/const.rb" - $VERBOSE = warn_level system 'make', "DESTDIR=#{CREW_DEST_DIR}", 'install' end end diff --git a/packages/musl_linuxheaders.rb b/packages/musl_linuxheaders.rb new file mode 100644 index 0000000000..c588974339 --- /dev/null +++ b/packages/musl_linuxheaders.rb @@ -0,0 +1,57 @@ +require 'package' + +class Musl_linuxheaders < Package + description 'Linux headers for Chrome OS, installed into MUSL_PREFIX.' + homepage 'https://kernel.org/' + case ARCH + when 'aarch64', 'armv7l', 'x86_64' + @_ver = '4.14' + version @_ver + when 'i686' + @_ver = '3.8' + version @_ver + end + # Only check for kernel version if not in container. + unless File.exist?('/.dockerenv') + @KERNEL_VERSION = `uname -r`.chomp.reverse.split('.', 2).collect(&:reverse)[1] + @ver = @KERNEL_VERSION.between?(@KERNEL_VERSION, '5.15') ? @ver : @KERNEL_VERSION + version @ver + end + license 'GPL-2' + compatibility 'all' + source_url 'SKIP' + + binary_url({ + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_linuxheaders/3.8_i686/musl_linuxheaders-3.8-chromeos-i686.tpxz', + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_linuxheaders/4.14_armv7l/musl_linuxheaders-4.14-chromeos-armv7l.tpxz', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_linuxheaders/4.14_armv7l/musl_linuxheaders-4.14-chromeos-armv7l.tpxz', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_linuxheaders/4.14_x86_64/musl_linuxheaders-4.14-chromeos-x86_64.tpxz' + }) + binary_sha256({ + i686: '92c0794189e3631847293ae517b4e0a7bc41e9898433d514f46391b5807369cd', + aarch64: '0673fa9ca73c10b60d4109dacc349247f98b5ea616110650a9f2917a281d780a', + armv7l: '0673fa9ca73c10b60d4109dacc349247f98b5ea616110650a9f2917a281d780a', + x86_64: '8cb5a33d005cae9be24d2491d20b855c9561853f89f974159094bb66ef41b02f' + }) + + depends_on 'linux_sources' => :build + + def self.install + ENV['CREW_FHS_NONCOMPLIANCE_ONLY_ADVISORY'] = '1' + warn_level = $VERBOSE + $VERBOSE = nil + load "#{CREW_LIB_PATH}lib/const.rb" + $VERBOSE = warn_level + linux_src_dir = "#{CREW_PREFIX}/src/linux" + Dir.chdir(linux_src_dir) do + system 'make', + 'headers_install', + "INSTALL_HDR_PATH=#{CREW_DEST_MUSL_PREFIX}" + end + Dir.chdir("#{CREW_DEST_MUSL_PREFIX}/include") do + system "for file in \$(find . -not -type d -name '.*'); do + rm \${file}; + done" + end + end +end diff --git a/packages/musl_lz4.rb b/packages/musl_lz4.rb index 4e648d0cbc..192660f66b 100644 --- a/packages/musl_lz4.rb +++ b/packages/musl_lz4.rb @@ -12,80 +12,29 @@ class Musl_lz4 < Package binary_url({ aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_lz4/1.9.2_armv7l/musl_lz4-1.9.2-chromeos-armv7l.tpxz', armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_lz4/1.9.2_armv7l/musl_lz4-1.9.2-chromeos-armv7l.tpxz', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_lz4/1.9.2_i686/musl_lz4-1.9.2-chromeos-i686.tpxz', x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_lz4/1.9.2_x86_64/musl_lz4-1.9.2-chromeos-x86_64.tpxz' }) binary_sha256({ - aarch64: 'ffe7b999c45a2417dac278c1742d482938fee96db2f2a2213ed01153b20ac3a7', - armv7l: 'ffe7b999c45a2417dac278c1742d482938fee96db2f2a2213ed01153b20ac3a7', - x86_64: 'a0ef3300ac61b6c5c513fb2f8d4f99b155dfc2eabf1c0e93c9c224437ab32af0' + aarch64: 'a2f12adbb2413535fd05f3b8f9cccc02f8674a250d1ac3051f41f539845a4dd1', + armv7l: 'a2f12adbb2413535fd05f3b8f9cccc02f8674a250d1ac3051f41f539845a4dd1', + i686: 'cfae6b5d4f0df8b3f7b92a7f64179357629a5d4ca5c84474dc810ba8f71af9f2', + x86_64: '029d44c8b9c124c5be2d46a36901171a500c8c66e71caa6ffdd08668865b1f57' }) depends_on 'musl_native_toolchain' => :build - @abi = '' - @arch_ssp_cflags = '' - @arch_c_flags = '' - @arch_cxx_flags = '' - case ARCH - when 'aarch64', 'armv7l' - @abi = 'eabihf' - when 'i686' - @arch_ssp_cflags = '-fno-stack-protector' - when 'x86_64' - end - - @cflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_c_flags} #{@arch_ssp_cflags} -fcommon" - @cxxflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_cxx_flags} #{@arch_ssp_cflags} -fcommon" - @ldflags = "-L#{CREW_PREFIX}/musl/lib -flto -static" - @cmake_ldflags = '-flto' - @musldep_cmake_options = "PATH=#{CREW_PREFIX}/musl/bin:#{CREW_PREFIX}/musl/#{ARCH}-linux-musl#{@abi}/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - AR=#{CREW_PREFIX}/musl/bin/ar \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@cmake_ldflags}' \ - cmake \ - -DCMAKE_INSTALL_PREFIX='#{CREW_PREFIX}/musl' \ - -DCMAKE_LIBRARY_PATH='#{CREW_PREFIX}/musl/lib' \ - -DCMAKE_C_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc \ - -DCMAKE_CXX_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++ \ - -DCMAKE_INCLUDE_DIRECTORIES_BEFORE=ON \ - -DINCLUDE_DIRECTORIES=#{CREW_PREFIX}/musl/include \ - -DCMAKE_C_FLAGS='#{@cflags}' \ - -DCMAKE_CXX_FLAGS='#{@cxxflags}' \ - -DCMAKE_EXE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_SHARED_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_STATIC_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_MODULE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DPROPERTY_INTERPROCEDURAL_OPTIMIZATION=TRUE \ - -DCMAKE_BUILD_TYPE=Release" - - @musldep_env_options = "PATH=#{CREW_PREFIX}/musl/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - PKG_CONFIG_LIBDIR=#{CREW_PREFIX}/musl/lib/pkgconfig \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@ldflags}'" + is_static def self.build - system "#{@musldep_env_options} make PREFIX=#{CREW_PREFIX}/musl \ - LIBDIR=#{CREW_PREFIX}/musl/lib \ + load "#{CREW_LIB_PATH}lib/musl.rb" + system "#{MUSL_ENV_OPTIONS} make PREFIX=#{CREW_MUSL_PREFIX} \ + LIBDIR=#{CREW_MUSL_PREFIX}/lib \ BUILD_STATIC=yes \ BUILD_SHARED=no" end def self.install - ENV['CREW_FHS_NONCOMPLIANCE_ONLY_ADVISORY'] = '1' - warn_level = $VERBOSE - $VERBOSE = nil - load "#{CREW_LIB_PATH}lib/const.rb" - $VERBOSE = warn_level - system 'make', "DESTDIR=#{CREW_DEST_DIR}", "LIBDIR=#{CREW_PREFIX}/musl/lib", 'install' + system 'make', "DESTDIR=#{CREW_DEST_DIR}", "LIBDIR=#{CREW_MUSL_PREFIX}/lib", 'install' end end diff --git a/packages/musl_native_toolchain.rb b/packages/musl_native_toolchain.rb index 878e4ed45f..b311769deb 100644 --- a/packages/musl_native_toolchain.rb +++ b/packages/musl_native_toolchain.rb @@ -3,54 +3,110 @@ require 'package' class Musl_native_toolchain < Package description 'A modern, simple, and fast C library implementation that strives to be lightweight, fast, simple, free, and correct in the sense of standards-conformance and safety.' homepage 'https://musl.cc/' - version '1.2.2-b76f37fd' - compatibility 'all' + version 'd1395c' license 'MIT, LGPL-2 and GPL-2' - source_url({ - aarch64: 'https://musl.cc/armv7l-linux-musleabihf-native.tgz', - armv7l: 'https://musl.cc/armv7l-linux-musleabihf-native.tgz', - i686: 'https://musl.cc/i686-linux-musl-native.tgz', - x86_64: 'https://musl.cc/x86_64-linux-musl-native.tgz' - }) - source_sha256({ - aarch64: '2b37466f716d28a9ef313a8916543f53f9c8c78509e1c8d57a18ca4b171f2205', - armv7l: '2b37466f716d28a9ef313a8916543f53f9c8c78509e1c8d57a18ca4b171f2205', - i686: '978471bf7b8111dfd8c5559a23ef18b80bcd85936872f00424f1b7a5300580ee', - x86_64: 'eb1db6f0f3c2bdbdbfb993d7ef7e2eeef82ac1259f6a6e1757c33a97dbcef3ad' - }) + compatibility 'all' + source_url 'https://git.zv.io/toolchains/musl-cross-make.git' + git_hashtag '53280e53a32202a0ee874911fc52005874db344b' binary_url({ - aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_native_toolchain/1.2.2-b76f37fd_armv7l/musl_native_toolchain-1.2.2-b76f37fd-chromeos-armv7l.tpxz', - armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_native_toolchain/1.2.2-b76f37fd_armv7l/musl_native_toolchain-1.2.2-b76f37fd-chromeos-armv7l.tpxz', - i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_native_toolchain/1.2.2-b76f37fd_i686/musl_native_toolchain-1.2.2-b76f37fd-chromeos-i686.tpxz', - x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_native_toolchain/1.2.2-b76f37fd_x86_64/musl_native_toolchain-1.2.2-b76f37fd-chromeos-x86_64.tpxz' + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_native_toolchain/d1395c_armv7l/musl_native_toolchain-d1395c-chromeos-armv7l.tpxz', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_native_toolchain/d1395c_armv7l/musl_native_toolchain-d1395c-chromeos-armv7l.tpxz', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_native_toolchain/d1395c_i686/musl_native_toolchain-d1395c-chromeos-i686.tpxz', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_native_toolchain/d1395c_x86_64/musl_native_toolchain-d1395c-chromeos-x86_64.tpxz' }) binary_sha256({ - aarch64: '740430d7ac599b6ee678943599cf88b31195f695cc00e6c86336a8b687a27804', - armv7l: '740430d7ac599b6ee678943599cf88b31195f695cc00e6c86336a8b687a27804', - i686: 'eda5d0e5ec72fa553a75377ac27994e9bb3f5466076de60ff1ad503522288b7b', - x86_64: 'af4d4c2b4c451a0679c70b4ba39a5b701d6d0df112b89d080c201c6708e27d77' + aarch64: '67f4c90e9604f2f9faa1862389a72a7d4ed9a7d202ea52eeb6a4aaab1d0a1d07', + armv7l: '67f4c90e9604f2f9faa1862389a72a7d4ed9a7d202ea52eeb6a4aaab1d0a1d07', + i686: '77bb046c80ac1b48df0d38a6a55f603a1c6f83805f2b7c23b59303199618c9bc', + x86_64: 'a390c454918f3a3f4ada528f2f1f19e71ea276a293191b5ae9ecad2cb9b37bff' }) + @archflags = '' + @linux_ver = '4.14.261' + @target_tuple = "#{ARCH}-linux-musl" + @gcc_version = '11-20220108' + case ARCH + when 'aarch64', 'armv7l' + @archflags = '--with-arch=armv7-a+fp --with-float=hard --with-fpu=neon --with-tune=cortex-a15' + @target_tuple = 'armv7l-linux-musleabihf' + when 'i686' + @linux_ver = '3.8.12' + end + + def self.patch + load "#{CREW_LIB_PATH}lib/musl.rb" + @config_mak = <<~CONFIG_MAK_EOF + STAT = -static --static + FLAG = -g0 -O2 -pipe -fno-align-functions -fno-align-jumps -fno-align-loops -fno-align-labels -Wno-error -fPIC + + ifneq (\$(NATIVE),) + COMMON_CONFIG += CC="\$(HOST)-gcc \${STAT}" CXX="\$(HOST)-g++ \${STAT}" FC="\$(HOST)-gfortran \${STAT}" + else + COMMON_CONFIG += CC="gcc \${STAT}" CXX="g++ \${STAT}" FC="gfortran \${STAT}" + endif + + COMMON_CONFIG += CFLAGS="\${FLAG}" CXXFLAGS="\${FLAG}" FFLAGS="\${FLAG}" LDFLAGS="-s \${STAT}" + + BINUTILS_CONFIG += --enable-gold --enable-plugins --enable-64-bit-bfd + GCC_CONFIG += --enable-default-pie --enable-static-pie --disable-cet --without-zstd #{@archflags} + + CONFIG_SUB_REV = 888c8e3d5f7b + GCC_VER = #{@gcc_version} + BINUTILS_VER = 2.37 + MUSL_VER = git-d1395c43c019aec6b855cf3c656bf47c8a719e7f + GMP_VER = 6.2.1 + ISL_VER = 0.23 + MPC_VER = 1.2.1 + MPFR_VER = 4.1.0 + LINUX_VER = #{@linux_ver} + + TARGET = #{@target_tuple} + + OUTPUT = #{CREW_DEST_MUSL_PREFIX} + CONFIG_MAK_EOF + File.write('config.mak', @config_mak) + File.write('hashes/linux-3.8.12.tar.xz.sha1', + '13d4f4f8f447b721e4a18ca39ed60fb7055d1de1 linux-3.8.12.tar.xz') + File.write('hashes/linux-4.14.261.tar.xz.sha1', + '28247a5448ac33e4031afa2544f384a525547b20 linux-4.14.261.tar.xz') + File.write("hashes/gcc-#{@gcc_version}.tar.xz.sha1", + "f89942362a87cb9c49f53177e7fcc57c77238197 gcc-#{@gcc_version}.tar.xz") + FileUtils.mv 'patches/gcc-11-20211120', "patches/gcc-#{@gcc_version}" + end + + def self.build + load "#{CREW_LIB_PATH}lib/musl.rb" + system 'make' + end + def self.install - ENV['CREW_FHS_NONCOMPLIANCE_ONLY_ADVISORY'] = '1' - ENV['CREW_NOT_STRIP'] = '1' - ENV['CREW_NOT_SHRINK_ARCHIVE'] = '1' - warn_level = $VERBOSE - $VERBOSE = nil - load "#{CREW_LIB_PATH}lib/const.rb" - $VERBOSE = warn_level - FileUtils.mkdir_p "#{CREW_DEST_PREFIX}/musl/lib" - FileUtils.cp_r '.', "#{CREW_DEST_PREFIX}/musl/", verbose: true - Dir.chdir("#{CREW_DEST_PREFIX}/musl/lib") do - FileUtils.ln_sf 'libc.so', 'ld-musl-x86_64.so.1' if ARCH == 'x86_64' - FileUtils.ln_sf 'libc.so', 'ld-musl-armhf.so.1' if ARCH == 'armv7l' - FileUtils.ln_sf 'libc.so', 'ld-musl-i386.so.1' if ARCH == 'i686' + load "#{CREW_LIB_PATH}lib/musl.rb" + system "OUTPUT=#{CREW_DEST_MUSL_PREFIX} make install" + # Delete libc symlink made to syslibdir + FileUtils.rm_f "#{CREW_DEST_MUSL_PREFIX}/usr/local" + # copy everything to standard locations + Dir.chdir("#{CREW_DEST_MUSL_PREFIX}/#{@target_tuple}") do + system 'cp -r * ../' end - Dir.chdir("#{CREW_DEST_PREFIX}/musl") do + Dir.chdir("#{CREW_DEST_MUSL_PREFIX}/lib") do + # Delete broken symlink pointing to /lib/libc.so + FileUtils.rm_f "#{CREW_DEST_MUSL_PREFIX}/lib/ld-musl-#{MUSL_ARCH}.so.1" + FileUtils.ln "#{CREW_DEST_MUSL_PREFIX}/#{@target_tuple}/lib/libc.so", + "#{CREW_DEST_MUSL_PREFIX}/lib/ld-musl-#{MUSL_ARCH}.so.1", force: true + FileUtils.ln "#{CREW_DEST_MUSL_PREFIX}/#{@target_tuple}/lib/libc.so", "#{CREW_DEST_MUSL_PREFIX}/lib/libc.so", + force: true + end + Dir.chdir(CREW_DEST_MUSL_PREFIX) do FileUtils.ln_sf 'lib', 'lib64' if ARCH == 'x86_64' end end - def self.postinstall; end + def self.postinstall + return unless ARCH == 'i686' + + # perl needs this. + FileUtils.ln_s "#{CREW_MUSL_PREFIX}/#{@target_tuple}/include/locale.h", + "#{CREW_MUSL_PREFIX}/#{@target_tuple}/include/xlocale.h" + end end diff --git a/packages/musl_ncurses.rb b/packages/musl_ncurses.rb index 99a327a49e..a4c689e969 100644 --- a/packages/musl_ncurses.rb +++ b/packages/musl_ncurses.rb @@ -3,85 +3,40 @@ require 'package' class Musl_ncurses < Package description 'The ncurses (new curses) library is a free software emulation of curses in System V Release 4.0 (SVr4), and more. — Wide character' homepage 'https://www.gnu.org/software/ncurses/' - version '6.2-20210522' + version '6.3-20220115' license 'MIT' compatibility 'all' source_url 'https://github.com/mirror/ncurses.git' - git_hashtag '2a969388725aa1ee321acadf09a4ff8e00787036' + git_hashtag '91e462de27aeecd5b1c8965a6dba078f7a438003' binary_url({ - aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_ncurses/6.2-20210522_armv7l/musl_ncurses-6.2-20210522-chromeos-armv7l.tpxz', - armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_ncurses/6.2-20210522_armv7l/musl_ncurses-6.2-20210522-chromeos-armv7l.tpxz', - i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_ncurses/6.2-20210522_i686/musl_ncurses-6.2-20210522-chromeos-i686.tpxz', - x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_ncurses/6.2-20210522_x86_64/musl_ncurses-6.2-20210522-chromeos-x86_64.tpxz' + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_ncurses/6.3-20220115_armv7l/musl_ncurses-6.3-20220115-chromeos-armv7l.tpxz', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_ncurses/6.3-20220115_armv7l/musl_ncurses-6.3-20220115-chromeos-armv7l.tpxz', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_ncurses/6.3-20220115_i686/musl_ncurses-6.3-20220115-chromeos-i686.tpxz', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_ncurses/6.3-20220115_x86_64/musl_ncurses-6.3-20220115-chromeos-x86_64.tpxz' }) binary_sha256({ - aarch64: '1df7dbbdb34fd3df6307958721afc56ce70d2540cfcc16c084557636e0331a00', - armv7l: '1df7dbbdb34fd3df6307958721afc56ce70d2540cfcc16c084557636e0331a00', - i686: '4d9abcb8ce86f3f9a751c67d041caf77c7ddcfb5d56924322bf5d8332098946f', - x86_64: '8d1edb89b38fb4b48084f4197748e8c0ebc160b926c78c476db93cfbc4930e3f' + aarch64: '8cd01482d8cda2bd798ed3ac249cb2500bc25a17e1c0173400fe4f906582cec3', + armv7l: '8cd01482d8cda2bd798ed3ac249cb2500bc25a17e1c0173400fe4f906582cec3', + i686: '8cd18fb303321334f520c282e36aeaa33c31b4cd4d92ed19837ff99c7bedff35', + x86_64: '793300816d2290bd7519c6edd4d3196470d9dc210c7aec8ba1b4d45a6aa2cf5d' }) depends_on 'musl_native_toolchain' => :build + depends_on 'musl_libunistring' => :build + depends_on 'musl_libidn2' => :build + depends_on 'musl_zlib' => :build - @abi = '' - @arch_ssp_cflags = '' - @arch_c_flags = '' - @arch_cxx_flags = '' - case ARCH - when 'aarch64', 'armv7l' - @abi = 'eabihf' - when 'i686' - @arch_ssp_cflags = '-fno-stack-protector' - when 'x86_64' - end - - @cflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_c_flags} #{@arch_ssp_cflags} -fcommon" - @cxxflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_cxx_flags} #{@arch_ssp_cflags} -fcommon" - @ldflags = "-L#{CREW_PREFIX}/musl/lib -flto -static" - @cmake_ldflags = '-flto' - @musldep_cmake_options = "PATH=#{CREW_PREFIX}/musl/bin:#{CREW_PREFIX}/musl/#{ARCH}-linux-musl#{@abi}/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - AR=#{CREW_PREFIX}/musl/bin/ar \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@cmake_ldflags}' \ - cmake \ - -DCMAKE_INSTALL_PREFIX='#{CREW_PREFIX}/musl' \ - -DCMAKE_LIBRARY_PATH='#{CREW_PREFIX}/musl/lib' \ - -DCMAKE_C_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc \ - -DCMAKE_CXX_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++ \ - -DCMAKE_INCLUDE_DIRECTORIES_BEFORE=ON \ - -DINCLUDE_DIRECTORIES=#{CREW_PREFIX}/musl/include \ - -DCMAKE_C_FLAGS='#{@cflags}' \ - -DCMAKE_CXX_FLAGS='#{@cxxflags}' \ - -DCMAKE_EXE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_SHARED_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_STATIC_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_MODULE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DPROPERTY_INTERPROCEDURAL_OPTIMIZATION=TRUE \ - -DCMAKE_BUILD_TYPE=Release" - - @musldep_env_options = "PATH=#{CREW_PREFIX}/musl/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - PKG_CONFIG_LIBDIR=#{CREW_PREFIX}/musl/lib/pkgconfig \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@ldflags}'" + is_static def self.build - system "#{@musldep_env_options} ./configure --prefix=#{CREW_PREFIX}/musl \ + load "#{CREW_LIB_PATH}lib/musl.rb" + system "#{MUSL_ENV_OPTIONS} ./configure --prefix=#{CREW_MUSL_PREFIX} \ --with-static \ --with-cxx-static \ --without-debug \ --enable-pc-files \ - --with-pkg-config-libdir=#{CREW_PREFIX}/musl/lib/pkgconfig \ + --with-pkg-config-libdir=#{CREW_MUSL_PREFIX}/lib/pkgconfig \ --enable-widec \ --without-tests \ --with-termlib" @@ -89,11 +44,6 @@ class Musl_ncurses < Package end def self.install - ENV['CREW_FHS_NONCOMPLIANCE_ONLY_ADVISORY'] = '1' - warn_level = $VERBOSE - $VERBOSE = nil - load "#{CREW_LIB_PATH}lib/const.rb" - $VERBOSE = warn_level system 'make', "DESTDIR=#{CREW_DEST_DIR}", 'install' end end diff --git a/packages/musl_obstack.rb b/packages/musl_obstack.rb new file mode 100644 index 0000000000..3a9883f9b4 --- /dev/null +++ b/packages/musl_obstack.rb @@ -0,0 +1,40 @@ +require 'package' + +class Musl_obstack < Package + description 'Void Linux copy + paste of the obstack functions and macros found in GNU gcc libiberty library for use with musl libc' + homepage 'https://github.com/void-linux/musl-obstack' + @_ver = '1.2.2' + version @_ver + license 'zlib' + compatibility 'all' + source_url 'https://github.com/void-linux/musl-obstack.git' + git_hashtag "v#{@_ver}" + + binary_url({ + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_obstack/1.2.2_armv7l/musl_obstack-1.2.2-chromeos-armv7l.tpxz', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_obstack/1.2.2_armv7l/musl_obstack-1.2.2-chromeos-armv7l.tpxz', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_obstack/1.2.2_i686/musl_obstack-1.2.2-chromeos-i686.tpxz', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_obstack/1.2.2_x86_64/musl_obstack-1.2.2-chromeos-x86_64.tpxz' + }) + binary_sha256({ + aarch64: 'fcfd3b87dcb48cc7d4798e7af325a185a242e7c90d8776e833a1eb8cca1c3567', + armv7l: 'fcfd3b87dcb48cc7d4798e7af325a185a242e7c90d8776e833a1eb8cca1c3567', + i686: '1673a62c62cde7e1d8628fd181a0495521fc0b87c7545846927ed8ccef42256a', + x86_64: 'c3ceef174bdf36800ab62e187e11b9a5d37d51e9a0674eb9caf769f4cdbc74d3' + }) + + depends_on 'musl_native_toolchain' => :build + + is_static + + def self.build + load "#{CREW_LIB_PATH}lib/musl.rb" + system "#{MUSL_ENV_OPTIONS} ./bootstrap.sh" + system "#{MUSL_ENV_OPTIONS} ./configure --prefix=#{CREW_MUSL_PREFIX}" + system "#{MUSL_ENV_OPTIONS} make" + end + + def self.install + system 'make', "DESTDIR=#{CREW_DEST_DIR}", 'install' + end +end diff --git a/packages/musl_openssl.rb b/packages/musl_openssl.rb index cb95395980..166a139a80 100644 --- a/packages/musl_openssl.rb +++ b/packages/musl_openssl.rb @@ -3,99 +3,73 @@ require 'package' class Musl_openssl < Package description 'The Open Source toolkit for Secure Sockets Layer and Transport Layer Security' homepage 'https://www.openssl.org' - @_ver = '3.0.0' + @_ver = '3.0.1' version @_ver license 'openssl' compatibility 'all' source_url "https://www.openssl.org/source/openssl-#{@_ver}.tar.gz" - source_sha256 '59eedfcb46c25214c9bd37ed6078297b4df01d012267fe9e9eee31f61bc70536' + source_sha256 'c311ad853353bce796edad01a862c50a8a587f62e7e2100ef465ab53ec9b06d1' binary_url({ - aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_openssl/3.0.0_armv7l/musl_openssl-3.0.0-chromeos-armv7l.tpxz', - armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_openssl/3.0.0_armv7l/musl_openssl-3.0.0-chromeos-armv7l.tpxz', - i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_openssl/3.0.0_i686/musl_openssl-3.0.0-chromeos-i686.tpxz', - x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_openssl/3.0.0_x86_64/musl_openssl-3.0.0-chromeos-x86_64.tpxz' + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_openssl/3.0.1_armv7l/musl_openssl-3.0.1-chromeos-armv7l.tpxz', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_openssl/3.0.1_armv7l/musl_openssl-3.0.1-chromeos-armv7l.tpxz', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_openssl/3.0.1_i686/musl_openssl-3.0.1-chromeos-i686.tpxz', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_openssl/3.0.1_x86_64/musl_openssl-3.0.1-chromeos-x86_64.tpxz' }) binary_sha256({ - aarch64: 'a9b6e78fe11c73ec19c4698786a7d01d39d8bafbd35ff82243106cb2a40a3889', - armv7l: 'a9b6e78fe11c73ec19c4698786a7d01d39d8bafbd35ff82243106cb2a40a3889', - i686: 'dc3c37e2d1badaf4b192339d144a0e3a83c47182a5531e80a9fa91255694733e', - x86_64: 'a17f737f02bb9c15d288832a066795b532530d68623bd6d3568946a99894258e' + aarch64: 'b18e75dd8d59a179ec8e0c84ed50194253c3350494326059dcaadd0f1abb6d23', + armv7l: 'b18e75dd8d59a179ec8e0c84ed50194253c3350494326059dcaadd0f1abb6d23', + i686: '4e5f715a69c494f9d10b6a071a95771bdacde44253d692e4e9f84addad57de85', + x86_64: '745cc2cd4f4f861f4d7ac4be33f724ab7da1b1a1ec833fb9dbb5828d2dc5e6fd' }) depends_on 'musl_native_toolchain' => :build + depends_on 'musl_libunistring' => :build + depends_on 'musl_libidn2' => :build depends_on 'musl_zlib' => :build + depends_on 'musl_ncurses' => :build + + is_static - @abi = '' - @arch_ssp_cflags = '' - @arch_c_flags = '' - @arch_cxx_flags = '' case ARCH when 'aarch64', 'armv7l' - @abi = 'eabihf' @openssl_configure_target = 'linux-generic32' when 'i686' - @arch_ssp_cflags = '-fno-stack-protector' - @openssl_configure_target = 'linux-x86' + @openssl_configure_target = 'linux-elf' when 'x86_64' @openssl_configure_target = 'linux-x86_64' end - @cflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_c_flags} #{@arch_ssp_cflags} -fcommon" - @cxxflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_cxx_flags} #{@arch_ssp_cflags} -fcommon" - @ldflags = "-L#{CREW_PREFIX}/musl/lib -flto -static" - @cmake_ldflags = '-flto' - @musldep_cmake_options = "PATH=#{CREW_PREFIX}/musl/bin:#{CREW_PREFIX}/musl/#{ARCH}-linux-musl#{@abi}/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - AR=#{CREW_PREFIX}/musl/bin/ar \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@cmake_ldflags}' \ - cmake \ - -DCMAKE_INSTALL_PREFIX='#{CREW_PREFIX}/musl' \ - -DCMAKE_INSTALL_LIBDIR='#{CREW_PREFIX}/musl/lib' \ - -DCMAKE_LIBRARY_PATH='#{CREW_PREFIX}/musl/lib' \ - -DCMAKE_C_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc \ - -DCMAKE_CXX_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++ \ - -DCMAKE_INCLUDE_DIRECTORIES_BEFORE=ON \ - -DINCLUDE_DIRECTORIES=#{CREW_PREFIX}/musl/include \ - -DCMAKE_C_FLAGS='#{@cflags}' \ - -DCMAKE_CXX_FLAGS='#{@cxxflags}' \ - -DCMAKE_EXE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_SHARED_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_STATIC_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_MODULE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DPROPERTY_INTERPROCEDURAL_OPTIMIZATION=TRUE \ - -DCMAKE_BUILD_TYPE=Release" - - @musldep_env_options = "PATH=#{CREW_PREFIX}/musl/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - PKG_CONFIG_LIBDIR=#{CREW_PREFIX}/musl/lib/pkgconfig \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@ldflags}'" - def self.build - system "#{@musldep_env_options} ./Configure \ - --prefix=#{CREW_PREFIX}/musl \ - --libdir=#{CREW_PREFIX}/musl/lib \ - no-tests zlib no-shared \ + load "#{CREW_LIB_PATH}lib/musl.rb" + system "#{MUSL_ENV_OPTIONS} ./Configure \ + --prefix=#{CREW_MUSL_PREFIX} \ + --openssldir=#{CREW_MUSL_PREFIX} \ + --libdir=#{CREW_MUSL_PREFIX}/lib \ + no-tests \ + no-zlib \ + no-async \ + no-comp \ + no-idea \ + no-mdc2 \ + no-rc5 \ + no-ec2m \ + no-sm2 \ + no-sm4 \ + no-ssl2 \ + no-ssl3 \ + no-seed \ + no-weak-ssl-ciphers \ + no-des \ + no-cast \ + -static --static \ + -Wl,-rpath=#{CREW_MUSL_PREFIX}/lib -Wl,--enable-new-dtags \ + -Wl,-Bsymbolic \ #{@openssl_configure_target}" - system 'make' + system "#{MUSL_ENV_OPTIONS} make" end def self.install - ENV['CREW_FHS_NONCOMPLIANCE_ONLY_ADVISORY'] = '1' - warn_level = $VERBOSE - $VERBOSE = nil - load "#{CREW_LIB_PATH}lib/const.rb" - $VERBOSE = warn_level system 'make', "DESTDIR=#{CREW_DEST_DIR}", 'install_sw' end end diff --git a/packages/musl_perl.rb b/packages/musl_perl.rb new file mode 100644 index 0000000000..4559bafd8b --- /dev/null +++ b/packages/musl_perl.rb @@ -0,0 +1,100 @@ +require 'package' + +class Musl_perl < Package + description 'Perl 5 is a highly capable, feature-rich programming language with over 29 years of development.' + homepage 'https://www.perl.org/' + @_ver = '5.34.0' + version @_ver + license 'GPL-1+ or Artistic' + compatibility 'all' + source_url "http://www.cpan.org/src/5.0/perl-#{@_ver}.tar.gz" + source_sha256 '551efc818b968b05216024fb0b727ef2ad4c100f8cb6b43fab615fa78ae5be9a' + + binary_url({ + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_perl/5.34.0_armv7l/musl_perl-5.34.0-chromeos-armv7l.tpxz', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_perl/5.34.0_armv7l/musl_perl-5.34.0-chromeos-armv7l.tpxz', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_perl/5.34.0_i686/musl_perl-5.34.0-chromeos-i686.tpxz', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_perl/5.34.0_x86_64/musl_perl-5.34.0-chromeos-x86_64.tpxz' + }) + binary_sha256({ + aarch64: '6387be753a5b69e6665317a60493d9c8f823d19da026a3007a9c80b32d95e2a6', + armv7l: '6387be753a5b69e6665317a60493d9c8f823d19da026a3007a9c80b32d95e2a6', + i686: 'dbcb88ffa14b891eca8e9a230f24caa1d26f7e2e88f04a27bb2b8140d8b955b4', + x86_64: '3e9f12c893b92fef6c38b57a22be90ff1d80a10156631fbdc8587031516983e8' + }) + + depends_on 'patch' => :build + depends_on 'patchelf' => :build + depends_on 'musl_native_toolchain' + depends_on 'musl_zlib' => :build + depends_on 'musl_bz2' => :build + + @perl_fullversion = @_ver.split('-')[0] + + @perl_version = @_ver.rpartition('.')[0] + + def self.build + load "#{CREW_LIB_PATH}lib/musl.rb" + # Install manual files into #{CREW_MUSL_PREFIX}/share/man/man* even if groff is not installed. + system "#{MUSL_ENV_OPTIONS} \ + ./Configure \ + -Doptimize='-O2 -pipe -flto=auto' \ + -Dusethreads \ + -de -Duseshrplib \ + -Dprefix=#{CREW_MUSL_PREFIX} \ + -Dcc=#{CREW_MUSL_PREFIX}/bin/#{ARCH}-linux-musl#{MUSL_ABI}-gcc \ + -Dcxx=#{CREW_MUSL_PREFIX}/bin/#{ARCH}-linux-musl#{MUSL_ABI}-g++ \ + -Dccflags='#{MUSL_CFLAGS}' \ + -Dccxflags='#{MUSL_CXXFLAGS}' \ + -Dcppflags='-I#{CREW_MUSL_PREFIX}/include -fcommon -idirafter#{CREW_PREFIX}/include' \ + -Dldflags='#{MUSL_LDFLAGS}' \ + -Dlocincpth=#{CREW_MUSL_PREFIX}/include \ + -Dloclibpth=none \ + -A define:libpth=#{CREW_MUSL_PREFIX}/lib \ + -Dplibpth=#{CREW_MUSL_PREFIX}/lib \ + -A define:glibpth=#{CREW_MUSL_PREFIX}/lib \ + -U xlibpth='' \ + -Dlibswanted=none \ + -Dinstallusrbinperl=n" + system "sed -i \"s, #{CREW_LIB_PREFIX}',',g\" config.sh" + system "sed -i \"s, #{CREW_PREFIX}/include',',g\" config.sh" + system "sed -i \"s,:#{CREW_LIB_PREFIX},:#{CREW_MUSL_PREFIX}/lib,g\" Makefile" + system "#{MUSL_ENV_OPTIONS} make" + system 'curl -o cpanm https://cpanmin.us' + end + + def self.check + # having strange error as explained at https://patchwork.openembedded.org/patch/95795/ + # so, apply patch from https://github.com/habitat-sh/core-plans/blob/master/perl/skip-wide-character-test.patch + # to ignore this single test + system 'patch -p1 << EOF +diff -ur perl-5.22.1.orig/t/lib/warnings/regexec perl-5.22.1/t/lib/warnings/regexec +--- perl-5.22.1.orig/t/lib/warnings/regexec 2015-10-30 21:14:29.000000000 +0000 ++++ perl-5.22.1/t/lib/warnings/regexec 2016-01-19 05:05:50.218474114 +0000 +@@ -188,6 +188,7 @@ + ######## + # NAME \b{} in UTF-8 locale + require \'../loc_tools.pl\'; ++print("SKIPPED\n# This test causes a failure in the test suite\n"),exit; + unless (locales_enabled()) { + print("SKIPPED\n# locales not available\n"),exit; + } +EOF' + + # test + system "#{MUSL_ENV_OPTIONS} make test || true" + end + + def self.install + system 'make', "DESTDIR=#{CREW_DEST_DIR}", 'install' + FileUtils.mkdir_p "#{CREW_DEST_MUSL_PREFIX}/lib" + FileUtils.ln_sf "#{CREW_MUSL_PREFIX}/lib/perl5/#{@perl_fullversion}/#{ARCH}-linux-thread-multi/CORE/libperl.so", + "#{CREW_DEST_MUSL_PREFIX}/lib/libperl.so" + FileUtils.ln_sf "#{CREW_MUSL_PREFIX}/lib/libnsl.so.1", "#{CREW_DEST_MUSL_PREFIX}/lib/libnsl.so" + system "install -Dm755 cpanm #{CREW_DEST_MUSL_PREFIX}/bin/cpanm" + Dir.chdir(CREW_DEST_MUSL_PREFIX) do + load "#{CREW_LIB_PATH}lib/musl.rb" + Musl.patchelf + end + end +end diff --git a/packages/musl_toolchain.rb b/packages/musl_toolchain.rb new file mode 100644 index 0000000000..43104c238b --- /dev/null +++ b/packages/musl_toolchain.rb @@ -0,0 +1,14 @@ +require 'package' + +class Musl_toolchain < Package + description 'A modern, simple, and fast C library implementation that strives to be lightweight, fast, simple, free, and correct in the sense of standards-conformance and safety.' + homepage 'https://musl.cc/' + version '1.2.2-b76f37fd' + compatibility 'all' + license 'MIT, LGPL-2 and GPL-2' + + is_fake + + depends_on 'musl_cc_toolchain' unless ARCH == 'i686' + depends_on 'musl_native_toolchain' if ARCH == 'i686' +end diff --git a/packages/musl_wolfssl.rb b/packages/musl_wolfssl.rb new file mode 100644 index 0000000000..cce63c513a --- /dev/null +++ b/packages/musl_wolfssl.rb @@ -0,0 +1,65 @@ +# Adapted from Arch Linux wolfssl PKGBUILD at: +# https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=wolfssl + +require 'package' + +class Musl_wolfssl < Package + description 'small, fast, portable implementation of TLS/SSL for embedded devices to the cloud formerly CyaSSL' + homepage 'https://www.wolfssl.com/' + version '5.1.1' + compatibility 'all' + source_url 'https://github.com/wolfSSL/wolfssl/archive/v5.1.1-stable.tar.gz' + source_sha256 'd3e0544dbe7e9587c0f6538cdc671b6492663bb7a4281819538abe6c99cdbd92' + + binary_url({ + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_wolfssl/5.1.1_armv7l/musl_wolfssl-5.1.1-chromeos-armv7l.tpxz', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_wolfssl/5.1.1_armv7l/musl_wolfssl-5.1.1-chromeos-armv7l.tpxz', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_wolfssl/5.1.1_i686/musl_wolfssl-5.1.1-chromeos-i686.tpxz', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_wolfssl/5.1.1_x86_64/musl_wolfssl-5.1.1-chromeos-x86_64.tpxz' + }) + binary_sha256({ + aarch64: 'c47ed88e5ebbdd796a131bda2de60ddc8662ba489e22e949e4acc62df099ff82', + armv7l: 'c47ed88e5ebbdd796a131bda2de60ddc8662ba489e22e949e4acc62df099ff82', + i686: '0d18e3a80a7078974d752145c7204c07f0fff0a332cd96632adbdb28d5b00bdf', + x86_64: '714c1aabfc97632c2e10f3376b9a3b82ce3008a48a1f99a3f33d0b62ade61637' + }) + + depends_on 'musl_native_toolchain' + + is_static + + def self.build + load "#{CREW_LIB_PATH}lib/musl.rb" + system "#{MUSL_ENV_OPTIONS} ./autogen.sh" + system "#{MUSL_ENV_OPTIONS} ./configure \ + --prefix=#{CREW_MUSL_PREFIX} \ + --sysconfdir=#{CREW_MUSL_PREFIX}/etc \ + --disable-bump \ + --disable-debug \ + --disable-examples \ + --enable-all-crypto \ + --enable-fastmath \ + --enable-fasthugemath \ + --enable-certgen \ + --enable-curve25519 \ + --enable-curve448 \ + --enable-ed25519 \ + --enable-ed448 \ + --enable-sessioncerts \ + --enable-fortress \ + --enable-keygen \ + --enable-libssh2 \ + --enable-openssh \ + --enable-opensslall \ + --enable-opensslextra \ + --enable-reproducible-build \ + --enable-static \ + --enable-writedup" + + system "#{MUSL_ENV_OPTIONS} make" + end + + def self.install + system "make install DESTDIR=#{CREW_DEST_DIR}" + end +end diff --git a/packages/musl_xz.rb b/packages/musl_xz.rb index 9a8732db3b..31afabe6bd 100644 --- a/packages/musl_xz.rb +++ b/packages/musl_xz.rb @@ -16,70 +16,22 @@ class Musl_xz < Package x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_xz/5.2.5-e7da-1_x86_64/musl_xz-5.2.5-e7da-1-chromeos-x86_64.tpxz' }) binary_sha256({ - aarch64: '1bc30592c301adedf6ff176313128b3fd1ecec1cc526f64ff1bd5529dd195d6b', - armv7l: '1bc30592c301adedf6ff176313128b3fd1ecec1cc526f64ff1bd5529dd195d6b', - i686: '5b0b648fdf75c2e31b25f9b291d99f9d70d29260db9fb380f370a579c11c3afd', - x86_64: '23568c835384e2ca14b1054c2e11909ddd79dd0fb281db1e20d4bfa0c6cc9c40' + aarch64: '4920c40308b221b02c82704f699de5ab302ac0f51643cf1fc30cc62837ca493d', + armv7l: '4920c40308b221b02c82704f699de5ab302ac0f51643cf1fc30cc62837ca493d', + i686: '6004dac184942b97e97315dbbc0bebdb3691b0a4437de7d085f1fc2a54088d32', + x86_64: 'b88d42f2a8f3129c2b460257f539909d40205df41296b56d87cc6b3c96ba24f7' }) depends_on 'autoconf_archive' => :build depends_on 'musl_native_toolchain' => :build - @abi = '' - @arch_ssp_cflags = '' - @arch_c_flags = '' - @arch_cxx_flags = '' - case ARCH - when 'aarch64', 'armv7l' - @abi = 'eabihf' - when 'i686' - @arch_ssp_cflags = '-fno-stack-protector' - when 'x86_64' - end - - @cflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_c_flags} #{@arch_ssp_cflags} -fcommon" - @cxxflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_cxx_flags} #{@arch_ssp_cflags} -fcommon" - @ldflags = "-L#{CREW_PREFIX}/musl/lib -flto -static" - @cmake_ldflags = '-flto' - @musldep_cmake_options = "PATH=#{CREW_PREFIX}/musl/bin:#{CREW_PREFIX}/musl/#{ARCH}-linux-musl#{@abi}/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - AR=#{CREW_PREFIX}/musl/bin/ar \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@cmake_ldflags}' \ - cmake \ - -DCMAKE_INSTALL_PREFIX='#{CREW_PREFIX}/musl' \ - -DCMAKE_LIBRARY_PATH='#{CREW_PREFIX}/musl/lib' \ - -DCMAKE_C_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc \ - -DCMAKE_CXX_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++ \ - -DCMAKE_INCLUDE_DIRECTORIES_BEFORE=ON \ - -DINCLUDE_DIRECTORIES=#{CREW_PREFIX}/musl/include \ - -DCMAKE_C_FLAGS='#{@cflags}' \ - -DCMAKE_CXX_FLAGS='#{@cxxflags}' \ - -DCMAKE_EXE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_SHARED_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_STATIC_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_MODULE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DPROPERTY_INTERPROCEDURAL_OPTIMIZATION=TRUE \ - -DCMAKE_BUILD_TYPE=Release" - - @musldep_env_options = "PATH=#{CREW_PREFIX}/musl/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - PKG_CONFIG_LIBDIR=#{CREW_PREFIX}/musl/lib/pkgconfig \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@ldflags}'" + is_static def self.build + load "#{CREW_LIB_PATH}lib/musl.rb" system 'NOCONFIGURE=1 ./autogen.sh --no-po4a' - system "#{@musldep_env_options} ./configure --prefix=#{CREW_PREFIX}/musl \ - --libdir=#{CREW_PREFIX}/musl/lib \ + system "#{MUSL_ENV_OPTIONS} ./configure --prefix=#{CREW_MUSL_PREFIX} \ + --libdir=#{CREW_MUSL_PREFIX}/lib \ --disable-doc \ --disable-shared \ --enable-static \ @@ -89,11 +41,6 @@ class Musl_xz < Package end def self.install - ENV['CREW_FHS_NONCOMPLIANCE_ONLY_ADVISORY'] = '1' - warn_level = $VERBOSE - $VERBOSE = nil - load "#{CREW_LIB_PATH}lib/const.rb" - $VERBOSE = warn_level - system 'make', "DESTDIR=#{CREW_DEST_DIR}", "LIBDIR=#{CREW_PREFIX}/musl/lib", 'install' + system 'make', "DESTDIR=#{CREW_DEST_DIR}", "LIBDIR=#{CREW_MUSL_PREFIX}/lib", 'install' end end diff --git a/packages/musl_zlib.rb b/packages/musl_zlib.rb index 79ac912d73..6db92c9020 100644 --- a/packages/musl_zlib.rb +++ b/packages/musl_zlib.rb @@ -2,92 +2,39 @@ require 'package' class Musl_zlib < Package description 'zlib is a massively spiffy yet delicately unobtrusive compression library.' - homepage 'http://www.zlib.net/' + homepage 'https://www.zlib.net/' @_ver = '1.2.11' - version @_ver.to_s + version "#{@_ver}-1" license 'zlib' compatibility 'all' - source_url "http://www.zlib.net/zlib-#{@_ver}.tar.gz" + source_url "https://www.zlib.net/zlib-#{@_ver}.tar.gz" source_sha256 'c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1' binary_url({ - aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_zlib/1.2.11_armv7l/musl_zlib-1.2.11-chromeos-armv7l.tpxz', - armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_zlib/1.2.11_armv7l/musl_zlib-1.2.11-chromeos-armv7l.tpxz', - i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_zlib/1.2.11_i686/musl_zlib-1.2.11-chromeos-i686.tpxz', - x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_zlib/1.2.11_x86_64/musl_zlib-1.2.11-chromeos-x86_64.tpxz' + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_zlib/1.2.11-1_armv7l/musl_zlib-1.2.11-1-chromeos-armv7l.tpxz', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_zlib/1.2.11-1_armv7l/musl_zlib-1.2.11-1-chromeos-armv7l.tpxz', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_zlib/1.2.11-1_i686/musl_zlib-1.2.11-1-chromeos-i686.tpxz', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_zlib/1.2.11-1_x86_64/musl_zlib-1.2.11-1-chromeos-x86_64.tpxz' }) binary_sha256({ - aarch64: '00d2af88bd0b9ac504405379e470392a8c66d293046f4466899f493fec34c082', - armv7l: '00d2af88bd0b9ac504405379e470392a8c66d293046f4466899f493fec34c082', - i686: 'e30270a0ed70bd26ff96f2929f19f2e7dcba4dd6b5b458ccb299f618e2e72795', - x86_64: 'dbe2f1f798905e8577e9b1b2579554a22802fec93c803fd10857be7cfc999cc2' + aarch64: '2ef3cfd50efbcd094cba24b4a776fe95f655f1ab9e36c3186355c3c710b95235', + armv7l: '2ef3cfd50efbcd094cba24b4a776fe95f655f1ab9e36c3186355c3c710b95235', + i686: '5e36e9ad564e7323524be1bcc6ba1ea5a5d161b37c2dc3a0b05bcd1daa7c6783', + x86_64: '3258869aa53a18df34f79f150becf9d1e6d2e69ee2a2ab6c31aa131981ae54f3' }) depends_on 'musl_native_toolchain' => :build - @abi = '' - @arch_ssp_cflags = '' - @arch_c_flags = '' - @arch_cxx_flags = '' - case ARCH - when 'aarch64', 'armv7l' - @abi = 'eabihf' - when 'i686' - @arch_ssp_cflags = '-fno-stack-protector' - when 'x86_64' - end - - @cflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_c_flags} #{@arch_ssp_cflags} -fcommon" - @cxxflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_cxx_flags} #{@arch_ssp_cflags} -fcommon" - @ldflags = "-L#{CREW_PREFIX}/musl/lib -flto -static" - @cmake_ldflags = '-flto' - @musldep_cmake_options = "PATH=#{CREW_PREFIX}/musl/bin:#{CREW_PREFIX}/musl/#{ARCH}-linux-musl#{@abi}/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - AR=#{CREW_PREFIX}/musl/bin/ar \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@cmake_ldflags}' \ - cmake \ - -DCMAKE_INSTALL_PREFIX='#{CREW_PREFIX}/musl' \ - -DCMAKE_LIBRARY_PATH='#{CREW_PREFIX}/musl/lib' \ - -DCMAKE_C_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc \ - -DCMAKE_CXX_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++ \ - -DCMAKE_INCLUDE_DIRECTORIES_BEFORE=ON \ - -DINCLUDE_DIRECTORIES=#{CREW_PREFIX}/musl/include \ - -DCMAKE_C_FLAGS='#{@cflags}' \ - -DCMAKE_CXX_FLAGS='#{@cxxflags}' \ - -DCMAKE_EXE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_SHARED_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_STATIC_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_MODULE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DPROPERTY_INTERPROCEDURAL_OPTIMIZATION=TRUE \ - -DCMAKE_BUILD_TYPE=Release" - - @musldep_env_options = "PATH=#{CREW_PREFIX}/musl/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - PKG_CONFIG_LIBDIR=#{CREW_PREFIX}/musl/lib/pkgconfig \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@ldflags}'" + is_static def self.build - system "#{@musldep_env_options} ./configure --prefix=#{CREW_PREFIX}/musl \ + load "#{CREW_LIB_PATH}lib/musl.rb" + system "#{MUSL_ENV_OPTIONS} ./configure --prefix=#{CREW_MUSL_PREFIX} \ --static" - system 'make' + system "#{MUSL_ENV_OPTIONS} make" end def self.install - ENV['CREW_FHS_NONCOMPLIANCE_ONLY_ADVISORY'] = '1' - warn_level = $VERBOSE - $VERBOSE = nil - load "#{CREW_LIB_PATH}lib/const.rb" - $VERBOSE = warn_level system 'make', "DESTDIR=#{CREW_DEST_DIR}", 'install' end end diff --git a/packages/musl_zstd.rb b/packages/musl_zstd.rb index 14c89e95c7..8c02368c49 100644 --- a/packages/musl_zstd.rb +++ b/packages/musl_zstd.rb @@ -3,98 +3,46 @@ require 'package' class Musl_zstd < Package description 'Zstandard - Fast real-time compression algorithm' homepage 'http://www.zstd.net' - version '1.5.0' + @_ver = '1.5.1' + version @_ver license 'BSD or GPL-2' compatibility 'all' source_url 'https://github.com/facebook/zstd.git' - git_hashtag "v#{version}" + git_hashtag "v#{@_ver}" binary_url({ - aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_zstd/1.5.0_armv7l/musl_zstd-1.5.0-chromeos-armv7l.tpxz', - armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_zstd/1.5.0_armv7l/musl_zstd-1.5.0-chromeos-armv7l.tpxz', - i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_zstd/1.5.0_i686/musl_zstd-1.5.0-chromeos-i686.tpxz', - x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_zstd/1.5.0_x86_64/musl_zstd-1.5.0-chromeos-x86_64.tpxz' + aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_zstd/1.5.1_armv7l/musl_zstd-1.5.1-chromeos-armv7l.tpxz', + armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_zstd/1.5.1_armv7l/musl_zstd-1.5.1-chromeos-armv7l.tpxz', + i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_zstd/1.5.1_i686/musl_zstd-1.5.1-chromeos-i686.tpxz', + x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/musl_zstd/1.5.1_x86_64/musl_zstd-1.5.1-chromeos-x86_64.tpxz' }) binary_sha256({ - aarch64: 'd540242853af21262637b7dcfd5d25e01e97daaa5817a053e30204dcc0a2fe68', - armv7l: 'd540242853af21262637b7dcfd5d25e01e97daaa5817a053e30204dcc0a2fe68', - i686: '2d18e52937e5e40c4e54ee1d728eca8216b49906a84d37ae2c528ea20772f932', - x86_64: '85c337d209e779cc39f697ef754326aca8d13b00d69c25e2461f2b085e4d1a28' + aarch64: 'd87582aa6dbd85e81c90317acd30b30b6300e4c63c01fe5570b37b631338e26e', + armv7l: 'd87582aa6dbd85e81c90317acd30b30b6300e4c63c01fe5570b37b631338e26e', + i686: '88af0514d1a2a6d93df12c0566a675175012ed7906b8bb27e7bf50d4d1ec13ae', + x86_64: 'bd7ef06d006489657649d1e3a2d999dde9b4e2d7788ca9b6b967a7ccecc75b9c' }) depends_on 'musl_native_toolchain' => :build - @abi = '' - @arch_ssp_cflags = '' - @arch_c_flags = '' - @arch_cxx_flags = '' - case ARCH - when 'aarch64', 'armv7l' - @abi = 'eabihf' - when 'i686' - @arch_ssp_cflags = '-fno-stack-protector' - when 'x86_64' - end - - @cflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_c_flags} #{@arch_ssp_cflags} -fcommon" - @cxxflags = "-B#{CREW_PREFIX}/musl/include -flto -pipe -O3 -ffat-lto-objects -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans #{@arch_cxx_flags} #{@arch_ssp_cflags} -fcommon" - @ldflags = "-L#{CREW_PREFIX}/musl/lib -flto -static" - @cmake_ldflags = '-flto' - @musldep_cmake_options = "PATH=#{CREW_PREFIX}/musl/bin:#{CREW_PREFIX}/musl/#{ARCH}-linux-musl#{@abi}/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - AR=#{CREW_PREFIX}/musl/bin/ar \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@cmake_ldflags}' \ - cmake \ - -DCMAKE_INSTALL_PREFIX='#{CREW_PREFIX}/musl' \ - -DCMAKE_INSTALL_LIBDIR='#{CREW_PREFIX}/musl/lib' \ - -DCMAKE_LIBRARY_PATH='#{CREW_PREFIX}/musl/lib' \ - -DCMAKE_C_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc \ - -DCMAKE_CXX_COMPILER=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++ \ - -DCMAKE_INCLUDE_DIRECTORIES_BEFORE=ON \ - -DINCLUDE_DIRECTORIES=#{CREW_PREFIX}/musl/include \ - -DCMAKE_C_FLAGS='#{@cflags}' \ - -DCMAKE_CXX_FLAGS='#{@cxxflags}' \ - -DCMAKE_EXE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_SHARED_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_STATIC_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DCMAKE_MODULE_LINKER_FLAGS='#{@cmake_ldflags}' \ - -DPROPERTY_INTERPROCEDURAL_OPTIMIZATION=TRUE \ - -DCMAKE_BUILD_TYPE=Release" - - @musldep_env_options = "PATH=#{CREW_PREFIX}/musl/bin:#{ENV['PATH']} \ - CC='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-gcc' \ - CXX='#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-g++' \ - LD=#{CREW_PREFIX}/musl/bin/#{ARCH}-linux-musl#{@abi}-ld.gold \ - PKG_CONFIG_LIBDIR=#{CREW_PREFIX}/musl/lib/pkgconfig \ - CFLAGS='#{@cflags}' \ - CXXFLAGS='#{@cxxflags}' \ - CPPFLAGS='-I#{CREW_PREFIX}/musl/include -fcommon' \ - LDFLAGS='#{@ldflags}'" + is_static def self.build + load "#{CREW_LIB_PATH}lib/musl.rb" FileUtils.mkdir('build/cmake/builddir') Dir.chdir('build/cmake/builddir') do - system "#{@musldep_cmake_options} \ + system "#{MUSL_CMAKE_OPTIONS.gsub('-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=TRUE', + '-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF')} \ -DZSTD_BUILD_STATIC=ON \ -DZSTD_BUILD_SHARED=OFF \ -DZSTD_BUILD_PROGRAMS=OFF \ ../ -G Ninja" end - system "PATH=#{CREW_PREFIX}/musl/bin:#{CREW_PREFIX}/musl/#{ARCH}-linux-musl#{@abi}/bin:#{ENV['PATH']} \ + system "PATH=#{CREW_MUSL_PREFIX}/bin:#{CREW_MUSL_PREFIX}/#{ARCH}-linux-musl#{@abi}/bin:#{ENV['PATH']} \ samu -C build/cmake/builddir -j#{CREW_NPROC}" end def self.install - ENV['CREW_FHS_NONCOMPLIANCE_ONLY_ADVISORY'] = '1' - warn_level = $VERBOSE - $VERBOSE = nil - load "#{CREW_LIB_PATH}lib/const.rb" - $VERBOSE = warn_level system "DESTDIR=#{CREW_DEST_DIR} samu -C build/cmake/builddir install" end end