Created
September 6, 2022 17:06
-
-
Save id/809302663eb000a4505acf3b0525f495 to your computer and use it in GitHub Desktop.
brew formula for [email protected] with no-shared
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class OpensslAT11 < Formula | |
desc "Cryptography and SSL/TLS Toolkit" | |
homepage "https://openssl.org/" | |
url "https://www.openssl.org/source/openssl-1.1.1q.tar.gz" | |
mirror "https://www.mirrorservice.org/sites/ftp.openssl.org/source/openssl-1.1.1q.tar.gz" | |
mirror "http://www.mirrorservice.org/sites/ftp.openssl.org/source/openssl-1.1.1q.tar.gz" | |
mirror "https://www.openssl.org/source/old/1.1.1/openssl-1.1.1q.tar.gz" | |
mirror "https://www.mirrorservice.org/sites/ftp.openssl.org/source/old/1.1.1/openssl-1.1.1q.tar.gz" | |
mirror "http://www.mirrorservice.org/sites/ftp.openssl.org/source/old/1.1.1/openssl-1.1.1q.tar.gz" | |
sha256 "d7939ce614029cdff0b6c20f0e2e5703158a489a72b2507b8bd51bf8c8fd10ca" | |
license "OpenSSL" | |
version_scheme 1 | |
livecheck do | |
url "https://www.openssl.org/source/" | |
regex(/href=.*?openssl[._-]v?(1\.1(?:\.\d+)+[a-z]?)\.t/i) | |
end | |
bottle do | |
sha256 arm64_monterey: "4e7b6cb2252c554a8e25ecae960f2fcd9a7fa742aa3fc99e6b533bb4e5d32483" | |
sha256 arm64_big_sur: "f0b206023866473514bd5540dc8d2ba18967625d3befee6191bab8f1878f9b6c" | |
sha256 monterey: "b4dabe01061f98a870548cc1bb5a18b68bcbc9021dc87781ead6e3e29a9abadc" | |
sha256 big_sur: "9a130889462e43fdc473302fb7fa0ac871af0ad6a3e9df3de27c1ea2b211f2e0" | |
sha256 catalina: "497b7711e3dff815210fdb690b851ddc4c25cd46ab2b20642194b47aa018db66" | |
sha256 x86_64_linux: "abec715f01eb20edda202463ca91403e3fa767afcba0fe732ef8e072bb99d2fd" | |
end | |
keg_only :shadowed_by_macos, "macOS provides LibreSSL" | |
depends_on "ca-certificates" | |
on_linux do | |
resource "Test::Harness" do | |
url "https://cpan.metacpan.org/authors/id/L/LE/LEONT/Test-Harness-3.42.tar.gz" | |
mirror "http://cpan.metacpan.org/authors/id/L/LE/LEONT/Test-Harness-3.42.tar.gz" | |
sha256 "0fd90d4efea82d6e262e6933759e85d27cbcfa4091b14bf4042ae20bab528e53" | |
end | |
resource "Test::More" do | |
url "https://cpan.metacpan.org/authors/id/E/EX/EXODIST/Test-Simple-1.302175.tar.gz" | |
mirror "http://cpan.metacpan.org/authors/id/E/EX/EXODIST/Test-Simple-1.302175.tar.gz" | |
sha256 "c8c8f5c51ad6d7a858c3b61b8b658d8e789d3da5d300065df0633875b0075e49" | |
end | |
resource "ExtUtils::MakeMaker" do | |
url "https://cpan.metacpan.org/authors/id/B/BI/BINGOS/ExtUtils-MakeMaker-7.48.tar.gz" | |
mirror "http://cpan.metacpan.org/authors/id/B/BI/BINGOS/ExtUtils-MakeMaker-7.48.tar.gz" | |
sha256 "94e64a630fc37e80c0ca02480dccfa5f2f4ca4b0dd4eeecc1d65acd321c68289" | |
end | |
end | |
# SSLv2 died with 1.1.0, so no-ssl2 no longer required. | |
# SSLv3 & zlib are off by default with 1.1.0 but this may not | |
# be obvious to everyone, so explicitly state it for now to | |
# help debug inevitable breakage. | |
def configure_args | |
args = %W[ | |
--prefix=#{prefix} | |
--openssldir=#{openssldir} | |
no-ssl3 | |
no-ssl3-method | |
no-zlib | |
no-shared | |
] | |
on_linux do | |
args += (ENV.cflags || "").split | |
args += (ENV.cppflags || "").split | |
args += (ENV.ldflags || "").split | |
args << "enable-md2" | |
end | |
args | |
end | |
def install | |
if OS.linux? | |
ENV.prepend_create_path "PERL5LIB", libexec/"lib/perl5" | |
%w[ExtUtils::MakeMaker Test::Harness Test::More].each do |r| | |
resource(r).stage do | |
system "perl", "Makefile.PL", "INSTALL_BASE=#{libexec}" | |
system "make", "PERL5LIB=#{ENV["PERL5LIB"]}", "CC=#{ENV.cc}" | |
system "make", "install" | |
end | |
end | |
end | |
# This could interfere with how we expect OpenSSL to build. | |
ENV.delete("OPENSSL_LOCAL_CONFIG_DIR") | |
# This ensures where Homebrew's Perl is needed the Cellar path isn't | |
# hardcoded into OpenSSL's scripts, causing them to break every Perl update. | |
# Whilst our env points to opt_bin, by default OpenSSL resolves the symlink. | |
ENV["PERL"] = Formula["perl"].opt_bin/"perl" if which("perl") == Formula["perl"].opt_bin/"perl" | |
arch_args = [] | |
if OS.mac? | |
arch_args += %W[darwin64-#{Hardware::CPU.arch}-cc enable-ec_nistp_64_gcc_128] | |
elsif Hardware::CPU.intel? | |
arch_args << (Hardware::CPU.is_64_bit? ? "linux-x86_64" : "linux-elf") | |
elsif Hardware::CPU.arm? | |
arch_args << (Hardware::CPU.is_64_bit? ? "linux-aarch64" : "linux-armv4") | |
end | |
system "perl", "./Configure", *(configure_args + arch_args) | |
system "make" | |
system "make", "install", "MANDIR=#{man}", "MANSUFFIX=ssl" | |
system "make", "test" | |
end | |
def openssldir | |
etc/"[email protected]" | |
end | |
def post_install | |
rm_f openssldir/"cert.pem" | |
openssldir.install_symlink Formula["ca-certificates"].pkgetc/"cert.pem" | |
end | |
def caveats | |
<<~EOS | |
A CA file has been bootstrapped using certificates from the system | |
keychain. To add additional certificates, place .pem files in | |
#{openssldir}/certs | |
and run | |
#{opt_bin}/c_rehash | |
EOS | |
end | |
test do | |
# Make sure the necessary .cnf file exists, otherwise OpenSSL gets moody. | |
assert_predicate pkgetc/"openssl.cnf", :exist?, | |
"OpenSSL requires the .cnf file for some functionality" | |
# Check OpenSSL itself functions as expected. | |
(testpath/"testfile.txt").write("This is a test file") | |
expected_checksum = "e2d0fe1585a63ec6009c8016ff8dda8b17719a637405a4e23c0ff81339148249" | |
system bin/"openssl", "dgst", "-sha256", "-out", "checksum.txt", "testfile.txt" | |
open("checksum.txt") do |f| | |
checksum = f.read(100).split("=").last.strip | |
assert_equal checksum, expected_checksum | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment