-
-
Notifications
You must be signed in to change notification settings - Fork 12.6k
/
Copy pathcurl.rb
126 lines (108 loc) · 4.16 KB
/
curl.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
class Curl < Formula
desc "Get a file from an HTTP, HTTPS or FTP server"
homepage "https://curl.se"
# Don't forget to update both instances of the version in the GitHub mirror URL.
# `url` goes below this comment when the `stable` block is removed.
url "https://curl.se/download/curl-8.11.1.tar.bz2"
mirror "https://github.com/curl/curl/releases/download/curl-8_11_1/curl-8.11.1.tar.bz2"
mirror "http://fresh-center.net/linux/www/curl-8.11.1.tar.bz2"
mirror "http://fresh-center.net/linux/www/legacy/curl-8.11.1.tar.bz2"
sha256 "e9773ad1dfa21aedbfe8e1ef24c9478fa780b1b3d4f763c98dd04629b5e43485"
license "curl"
livecheck do
url "https://curl.se/download/"
regex(/href=.*?curl[._-]v?(.*?)\.t/i)
end
bottle do
sha256 cellar: :any, arm64_sequoia: "9becff07bed074d7ccf57b6875c54e0f81313faf5304d0a83c3b4a5f030fb7d5"
sha256 cellar: :any, arm64_sonoma: "abe90ee3f273e4101cc2a6d597341de4f0fcff5add2ac70664bf6abd045cc204"
sha256 cellar: :any, arm64_ventura: "a2a7f0e1b2ec4b1444c6fb74e747801da3b2cc17fa2defab8e8766ca66fa2317"
sha256 cellar: :any, sonoma: "d3f0ef75ee89823890173bae4caf3eff9cf552361dc400ea576e439b69045a5b"
sha256 cellar: :any, ventura: "af443263f1ce0d8330fc4a8863b5bcd094686cf5e7c7352b5670f3137008fe0e"
sha256 cellar: :any_skip_relocation, x86_64_linux: "76e0a5154b41a48c92434df18bc22727f50e1c5d85dbda724c7353ce0bbe385a"
end
head do
url "https://github.com/curl/curl.git", branch: "master"
depends_on "autoconf" => :build
depends_on "automake" => :build
depends_on "libtool" => :build
end
keg_only :provided_by_macos
depends_on "pkgconf" => [:build, :test]
depends_on "brotli"
depends_on "libnghttp2"
depends_on "libssh2"
depends_on "openssl@3"
depends_on "rtmpdump"
depends_on "zstd"
uses_from_macos "krb5"
uses_from_macos "openldap"
uses_from_macos "zlib"
on_system :linux, macos: :monterey_or_older do
depends_on "libidn2"
end
def install
tag_name = "curl-#{version.to_s.tr(".", "_")}"
if build.stable? && stable.mirrors.grep(/github\.com/).first.exclude?(tag_name)
odie "Tag name #{tag_name} is not found in the GitHub mirror URL! " \
"Please make sure the URL is correct."
end
system "./buildconf" if build.head?
args = %W[
--disable-silent-rules
--with-ssl=#{Formula["openssl@3"].opt_prefix}
--without-ca-bundle
--without-ca-path
--with-ca-fallback
--with-secure-transport
--with-default-ssl-backend=openssl
--with-librtmp
--with-libssh2
--without-libpsl
--with-zsh-functions-dir=#{zsh_completion}
--with-fish-functions-dir=#{fish_completion}
]
args << if OS.mac?
"--with-gssapi"
else
"--with-gssapi=#{Formula["krb5"].opt_prefix}"
end
args += if OS.mac? && MacOS.version >= :ventura
%w[
--with-apple-idn
--without-libidn2
]
else
%w[
--without-apple-idn
--with-libidn2
]
end
system "./configure", *args, *std_configure_args
system "make", "install"
system "make", "install", "-C", "scripts"
libexec.install "scripts/mk-ca-bundle.pl"
end
test do
# Fetch the curl tarball and see that the checksum matches.
# This requires a network connection, but so does Homebrew in general.
filename = testpath/"test.tar.gz"
system bin/"curl", "-L", stable.url, "-o", filename
filename.verify_checksum stable.checksum
# Check dependencies linked correctly
curl_features = shell_output("#{bin}/curl-config --features").split("\n")
%w[brotli GSS-API HTTP2 IDN libz SSL zstd].each do |feature|
assert_includes curl_features, feature
end
curl_protocols = shell_output("#{bin}/curl-config --protocols").split("\n")
%w[LDAPS RTMP SCP SFTP].each do |protocol|
assert_includes curl_protocols, protocol
end
system libexec/"mk-ca-bundle.pl", "test.pem"
assert_path_exists testpath/"test.pem"
assert_path_exists testpath/"certdata.txt"
with_env(PKG_CONFIG_PATH: lib/"pkgconfig") do
system "pkgconf", "--cflags", "libcurl"
end
end
end