Files
Sevan Janiyan dce70802d5 git: fix build on 10.7
git-credential-osxkeychain missing header.
While here, move patch section up.
2025-02-09 23:38:24 +00:00

306 lines
10 KiB
Ruby

class Git < Formula
desc "Distributed revision control system"
homepage "https://git-scm.com"
url "https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.48.1.tar.xz"
sha256 "1c5d545f5dc1eb51e95d2c50d98fdf88b1a36ba1fa30e9ae5d5385c6024f82ad"
license "GPL-2.0-only"
head "https://github.com/git/git.git", :shallow => false
bottle do
revision 1
sha256 "8804eb059f29303fd334eb4b1432e5c1ebf41d932a5c7e962e89ac97b0ffcfa1" => :tiger_altivec
end
resource "html" do
url "https://mirrors.edge.kernel.org/pub/software/scm/git/git-htmldocs-2.48.1.tar.xz"
sha256 "5450321b7de6702f9ec0a41108dfac3626afeb8fdd575b3d9a78febfaa96315c"
end
resource "man" do
url "https://mirrors.edge.kernel.org/pub/software/scm/git/git-manpages-2.48.1.tar.xz"
sha256 "4c0ede7afa4d6dbf602d2f2fd151c36ab57d3224e6b9fd17342e85f05d386886"
end
# Fix PowerPC build and support for OS X Tiger & Leopard
# e.g supplied regex(3) is too old, lacks some file system monitoring functionality
# Needs arc4random_buf(3) which is missing on Leopard and prior so just use openssl
# since newer implementations were based on AES cipher.
# copyfile.h didn't show up until Leopard.
# error: use of undeclared identifier 'O_RDONLY' & 'O_EXLOCK'
patch :p0, :DATA
option "with-blk-sha1", "Compile with the block-optimized SHA1 implementation"
option "without-completions", "Disable bash/zsh completions from 'contrib' directory"
option "with-brewed-svn", "Use Homebrew's version of SVN"
option "with-persistent-https", "Build git-remote-persistent-https from 'contrib' directory"
if MacOS.version == :tiger
# system tar has odd permissions errors
depends_on "gnu-tar" => :build
end
depends_on :expat
depends_on "pcre2" => :optional
depends_on "gettext"
depends_on "openssl3"
depends_on "openssh" => :run
depends_on "curl"
depends_on "make" => :build
depends_on "libiconv"
depends_on "zlib"
depends_on "go" => :build if build.with? "persistent-https"
# Trigger an install of swig before subversion, as the "swig" doesn't get pulled in otherwise
# See https://github.com/Homebrew/homebrew/issues/34554
if build.with? "brewed-svn"
depends_on "swig"
depends_on "subversion" => "with-perl"
end
# https://github.com/mistydemeo/tigerbrew/issues/1250
fails_with :gcc do
build 5553
cause "Misoptimization, fails to fetch certain repos"
end
def install
# GCC is invoked with -w
ENV.enable_warnings if ENV.compiler == :gcc_4_0
if MacOS.version == :tiger
tar = Formula['gnu-tar']
tab = Tab.for_keg tar.installed_prefix
tar_name = tab.used_options.include?('--default-names') ? tar.bin/'tar' : tar.bin/'gtar'
inreplace 'Makefile' do |s|
s.change_make_var! 'TAR', tar_name.to_s
end
end
# If these things are installed, tell Git build system to not use them
ENV["NO_FINK"] = "1"
ENV["NO_DARWIN_PORTS"] = "1"
ENV["V"] = "1" # build verbosely
ENV["NO_R_TO_GCC_LINKER"] = "1" # pass arguments to LD correctly
ENV["PYTHON_PATH"] = which "python"
ENV["PERL_PATH"] = which "perl"
ENV["CURLDIR"] = Formula["curl"].opt_prefix
ENV["NO_APPLE_COMMON_CRYPTO"] = "1" if MacOS.version < :leopard
ENV.append "CFLAGS", "-std=gnu99"
perl_version = /\d\.\d+/.match(`perl --version`)
if build.with? "brewed-svn"
ENV["PERLLIB_EXTRA"] = %W[
#{Formula["subversion"].opt_lib}/perl5/site_perl
#{Formula["subversion"].opt_prefix}/Library/Perl/#{perl_version}/darwin-thread-multi-2level
].join(":")
elsif MacOS.version >= :mavericks
ENV["PERLLIB_EXTRA"] = %W[
#{MacOS.active_developer_dir}
/Library/Developer/CommandLineTools
/Applications/Xcode.app/Contents/Developer
].uniq.map do |p|
"#{p}/Library/Perl/#{perl_version}/darwin-thread-multi-2level"
end.join(":")
end
unless quiet_system ENV["PERL_PATH"], "-e", "use ExtUtils::MakeMaker"
ENV["NO_PERL_MAKEMAKER"] = "1"
end
ENV["BLK_SHA1"] = "1" if build.with? "blk-sha1"
if build.with? "pcre2"
ENV["USE_LIBPCRE"] = "1"
ENV["LIBPCREDIR"] = Formula["pcre2"].opt_prefix
end
ENV["NO_GETTEXT"] = "1" if build.without? "gettext"
args = %W[
prefix=#{prefix}
sysconfdir=#{etc}
CC=#{ENV.cc}
CFLAGS=#{ENV.cflags}
LDFLAGS=#{ENV.ldflags}
]
system "gmake", "install", *args
if MacOS.version >= :lion
# Install the OS X keychain credential helper
# Needs Security.framework from 10.7 or newer
cd "contrib/credential/osxkeychain" do
system "gmake", "CC=#{ENV.cc}",
"CFLAGS=#{ENV.cflags}",
"LDFLAGS=#{ENV.ldflags}"
bin.install "git-credential-osxkeychain"
system "gmake", "clean"
end
end
# Install git-subtree
cd "contrib/subtree" do
system "gmake", "CC=#{ENV.cc}",
"CFLAGS=#{ENV.cflags}",
"LDFLAGS=#{ENV.ldflags}"
bin.install "git-subtree"
end
if build.with? "persistent-https"
cd "contrib/persistent-https" do
system "gmake"
bin.install "git-remote-persistent-http",
"git-remote-persistent-https",
"git-remote-persistent-https--proxy"
end
end
if build.with? "completions"
# install the completion script first because it is inside "contrib"
bash_completion.install "contrib/completion/git-completion.bash"
bash_completion.install "contrib/completion/git-prompt.sh"
zsh_completion.install "contrib/completion/git-completion.zsh" => "_git"
cp "#{bash_completion}/git-completion.bash", zsh_completion
end
(share+"git-core").install "contrib"
# We could build the manpages ourselves, but the build process depends
# on many other packages, and is somewhat crazy, this way is easier.
man.install resource("man")
(share+"doc/git-doc").install resource("html")
# Make html docs world-readable
chmod 0644, Dir["#{share}/doc/git-doc/**/*.{html,txt}"]
chmod 0755, Dir["#{share}/doc/git-doc/{RelNotes,howto,technical}"]
# To avoid this feature hooking into the system OpenSSL, remove it.
# If you need it, install git --with-brewed-openssl.
rm "#{libexec}/git-core/git-imap-send" if build.without? "brewed-openssl"
if MacOS.version >= :lion
# Set the macOS keychain credential helper by default
# (as Apple's CLT's git also does this).
(buildpath/"gitconfig").write <<-EOS.undent
[credential]
\thelper = osxkeychain
EOS
etc.install "gitconfig"
end
end
def caveats
osxkeychain_text = <<-EOS.undent
The OS X keychain credential helper has been installed to:
#{HOMEBREW_PREFIX}/bin/git-credential-osxkeychain
EOS
text = <<-EOS.undent
The "contrib" directory has been installed to:
#{HOMEBREW_PREFIX}/share/git-core/contrib
EOS
text += osxkeychain_text if MacOS.version >= :lion
text
end
test do
system bin/"git", "init"
%w[haunted house].each { |f| touch testpath/f }
system bin/"git", "add", "haunted", "house"
system bin/"git", "commit", "-a", "-m", "Initial Commit"
assert_equal "haunted\nhouse", shell_output("#{bin}/git ls-files").strip
end
end
__END__
--- sha1dc/sha1.c.orig 2023-04-08 03:00:31.000000000 +0000
+++ sha1dc/sha1.c
@@ -102,6 +102,10 @@
*/
#define SHA1DC_BIGENDIAN
+#elif (defined(__APPLE__) && defined(__BIG_ENDIAN__) && !defined(SHA1DC_BIGENDIAN))
+/* older gcc compilers which are the default on Apple PPC do not define __BYTE_ORDER__ */
+#define SHA1DC_BIGENDIAN
+
/* Not under GCC-alike or glibc or *BSD or newlib or <processor whitelist> or <os whitelist> */
#elif defined(SHA1DC_ON_INTEL_LIKE_PROCESSOR)
/*
--- config.mak.uname.orig 2024-04-30 21:58:33.000000000 +0100
+++ config.mak.uname 2024-04-30 22:01:59.000000000 +0100
@@ -128,6 +128,11 @@
OLD_ICONV = UnfortunatelyYes
NO_APPLE_COMMON_CRYPTO = YesPlease
endif
+ ifeq ($(shell test "`expr "$(uname_R)" : '\([0-9][0-9]*\)\.'`" -lt 12 && echo 1),1)
+ NO_REGEX=YesPlease
+ else
+ USE_ENHANCED_BASIC_REGULAR_EXPRESSIONS = YesPlease
+ endif
ifeq ($(shell expr "$(uname_R)" : '[15]\.'),2)
NO_STRLCPY = YesPlease
endif
@@ -146,8 +151,7 @@
HAVE_BSD_SYSCTL = YesPlease
FREAD_READS_DIRECTORIES = UnfortunatelyYes
HAVE_NS_GET_EXECUTABLE_PATH = YesPlease
- CSPRNG_METHOD = arc4random
- USE_ENHANCED_BASIC_REGULAR_EXPRESSIONS = YesPlease
+ CSPRNG_METHOD = openssl
# Workaround for `gettext` being keg-only and not even being linked via
# `brew link --force gettext`, should be obsolete as of
@@ -173,6 +177,7 @@
endif
endif
+ ifeq ($(shell test "`expr "$(uname_R)" : '\([0-9][0-9]*\)\.'`" -gt 13 && echo 1), 1)
# The builtin FSMonitor on MacOS builds upon Simple-IPC. Both require
# Unix domain sockets and PThreads.
ifndef NO_PTHREADS
@@ -181,6 +186,7 @@
FSMONITOR_OS_SETTINGS = darwin
endif
endif
+ endif
BASIC_LDFLAGS += -framework CoreServices
endif
--- Makefile.orig 2023-05-19 19:22:10.000000000 +0100
+++ Makefile 2023-05-19 19:22:53.000000000 +0100
@@ -1351,7 +1351,7 @@
# Older versions of GCC may require adding "-std=gnu99" at the end.
CFLAGS = -g -O2 -Wall
LDFLAGS =
-CC_LD_DYNPATH = -Wl,-rpath,
+CC_LD_DYNPATH = -L
BASIC_CFLAGS = -I.
BASIC_LDFLAGS =
--- t/unit-tests/clar/clar/fs.h.orig 2024-10-23 18:35:26.000000000 +0100
+++ t/unit-tests/clar/clar/fs.h 2024-10-23 18:37:45.000000000 +0100
@@ -318,7 +318,10 @@
#endif
#if defined(__APPLE__)
+# include <AvailabilityMacros.h>
+# if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050
# include <copyfile.h>
+# endif
#endif
static void basename_r(const char **out, int *out_len, const char *in)
--- contrib/credential/osxkeychain/git-credential-osxkeychain.c.orig 2025-02-09 23:11:13.000000000 +0000
+++ contrib/credential/osxkeychain/git-credential-osxkeychain.c 2025-02-09 23:11:36.000000000 +0000
@@ -1,6 +1,7 @@
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
+#include <sys/fcntl.h>
#include <Security/Security.h>
#define ENCODING kCFStringEncodingUTF8