Files
chromebrew/packages/musl_curl.rb
Satadru Pramanik, DO, MPH, MEng 0a5a9e7a1d Only add musl bin to path if musl is installed (#9345)
* Only add musl bin to path if musl is installed

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* Add print_source_bashrc to crew_profile_base

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

---------

Signed-off-by: Satadru Pramanik <satadru@gmail.com>
2024-02-16 14:57:51 -06:00

115 lines
4.5 KiB
Ruby

require 'package'
class Musl_curl < Package
description 'Command line tool and library for transferring data with URLs.'
homepage 'https://curl.se/'
version '7.84.0'
license 'curl'
compatibility 'all'
source_url "https://curl.se/download/curl-#{version}.tar.xz"
source_sha256 '2d118b43f547bfe5bae806d8d47b4e596ea5b25a6c1f080aef49fbcd817c5db8'
binary_compression 'tar.zst'
binary_sha256({
aarch64: '2c21d0bbc43fd965743a37b49bb53663e510df3940e00b83cd6fd0f91e0ae085',
armv7l: '2c21d0bbc43fd965743a37b49bb53663e510df3940e00b83cd6fd0f91e0ae085',
i686: '1e27afa774b53a5c0db25b7779f09997540870cb549ce01a57e44a4d5e93a8f1',
x86_64: '403fb26245e958681aef632dd859ce645ab2339cc72ad46e7ad983c789976448'
})
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_musl
is_static
patchelf
print_source_bashrc
def self.patch
# Fix arm build error
# easy_lock.h:56:7: error: implicit declaration of function 'sched_yield' [-Werror=implicit-function-declaration]
# via https://github.com/curl/curl/pull/9054 & https://github.com/curl/curl/pull/9056
downloader 'https://github.com/curl/curl/commit/e2e7f54b7bea521fa8373095d0f43261a720cda0.patch',
'9b011c957cedcc089b53399f31328b1ebb7ec87dd5eeefd1f83c7fc8741405a0'
system 'patch -p1 -i e2e7f54b7bea521fa8373095d0f43261a720cda0.patch'
downloader 'https://github.com/curl/curl/commit/5a1a892565443fa4145888c6150da65c9a33d15c.patch',
'9a83b1b8b7fa3f6951bf890d6af7bc37c830d0741849d8b1e98acfb5dbdaf563'
system 'patch -p1 -i 5a1a892565443fa4145888c6150da65c9a33d15c.patch'
end
def self.build
@curl_lib_deps = "#{CREW_MUSL_PREFIX}/lib/libunbound.a \
#{CREW_MUSL_PREFIX}/lib/libresolv.a \
#{CREW_MUSL_PREFIX}/lib/libm.a \
#{CREW_MUSL_PREFIX}/lib/libbrotlicommon-static.a \
#{CREW_MUSL_PREFIX}/lib/libbrotlidec-static.a \
#{CREW_MUSL_PREFIX}/lib/libzstd.a \
#{CREW_MUSL_PREFIX}/lib/libz.a \
#{CREW_MUSL_PREFIX}/lib/libssl.a \
#{CREW_MUSL_PREFIX}/lib/libcrypto.a \
#{CREW_MUSL_PREFIX}/lib/libpthread.a \
#{CREW_MUSL_PREFIX}/lib/libncursesw.a \
#{CREW_MUSL_PREFIX}/lib/libtinfow.a \
#{CREW_MUSL_PREFIX}/lib/libidn2.a \
#{CREW_MUSL_PREFIX}/lib/libunistring.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}"
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'"
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/chromebrew/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