SUMMARY="Fast, scalable, distributed revision control system"
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.
Git is easy to learn and has a tiny footprint with lightning fast performance. \
It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with \
features like cheap local branching, convenient staging areas, and multiple \
workflows.
"
HOMEPAGE="http://git-scm.com/"
LICENSE="GNU GPL v2"
COPYRIGHT="2005-2012 Git Authors (see git web site for list)"

SRC_URI="http://git-core.googlecode.com/files/git-1.8.3.4.tar.gz"
CHECKSUM_SHA256="dfa2cdf2df92b4abe956b1e7586030381c4e39e89161ab789a660d8d1f24d9d9"
PATCHES="git-1.8.3.4.patchset"

SRC_URI_2="http://git-core.googlecode.com/files/git-manpages-1.8.3.4.tar.gz"
CHECKSUM_SHA256_2="6943c3b2362c107ab32d8ed81b8f4811c6e5a2eddd91b8e4188ccf6b4be2b740"

SRC_URI_3="http://git-core.googlecode.com/files/git-htmldocs-1.8.3.4.tar.gz"
CHECKSUM_SHA256_3="da13f9453489145d5aaefeb6535ce43621fdb7ff426c50304acf2c2e4430005c"


REVISION="4"

ARCHITECTURES="x86_gcc2 x86 x86_64"

PROVIDES="
	git = $portVersion compat >= 1.8
	cmd:git = $portVersion compat >= 1.8
	cmd:git_receive_pack = $portVersion compat >= 1.8
	cmd:git_shell = $portVersion compat >= 1.8
	cmd:git_upload_archive = $portVersion compat >= 1.8
	cmd:git_upload_pack = $portVersion compat >= 1.8
	"
PROVIDES_arch="
	git_arch = $portVersion compat >= 1.8
	cmd:git_archimport = $portVersion compat >= 1.8
	"
PROVIDES_cvs="
	git_cvs = $portVersion compat >= 1.8
	cmd:git_cvsserver = $portVersion compat >= 1.8
	"
PROVIDES_daemon="
	git_daemon = $portVersion compat >= 1.8
	cmd:git_daemon = $portVersion compat >= 1.8
	"
PROVIDES_email="
	git_email = $portVersion compat >= 1.8
	cmd:git_send_email = $portVersion compat >= 1.8
	"
PROVIDES_remote_helpers="
	git_remote_helpers = $portVersion compat >= 1.8
	"
PROVIDES_source="
	git_source = $portVersion compat >= 1.8
	"
PROVIDES_svn="
	git_svn = $portVersion compat >= 1.8
	cmd:git_svn = $portVersion compat >= 1.8
	"

REQUIRES="
	haiku >= $haikuVersion
	cmd:man
	cmd:nano
	cmd:perl >= 5
	cmd:python
	lib:libcurl
	lib:libexpat
	lib:libiconv
	lib:libintl
	lib:libpcre
	lib:libssl
	lib:libz
	vendor_perl
	"
REQUIRES_arch="
	haiku >= $haikuVersion
	git == $portVersion base
	"
REQUIRES_cvs="
	haiku >= $haikuVersion
	git == $portVersion base
	cmd:cvsps
	"
REQUIRES_daemon="
	haiku >= $haikuVersion
	git == $portVersion base
	"
REQUIRES_email="
	haiku >= $haikuVersion
	git == $portVersion base
	"
REQUIRES_remote_helpers="
	haiku >= $haikuVersion
	git == $portVersion base
	"
REQUIRES_svn="
	haiku >= $haikuVersion
	git == $portVersion base
	"

BUILD_REQUIRES="
	cmd:man
	cmd:nano
	cmd:perl
	cmd:python
	devel:libcurl
	devel:libexpat
	devel:libiconv
	devel:libintl
	devel:libpcre
	devel:libssl
	devel:libz
	"

BUILD_PREREQUIRES="
	haiku_devel >= $haikuVersion
	cmd:autoconf
	cmd:find
	cmd:gcc
	cmd:gettext
	cmd:ld
	cmd:make
	cmd:msgfmt
	cmd:sed
	cmd:tar
	"

USER_SETTINGS_FILES="
	settings/git directory
	"

makeGit()
{
	make prefix=$prefix \
		bindir_relative=$relativeBinDir \
		mandir=$manDir \
		infodir=$infoDir \
		gitexecdir=$libDir/git-core \
		sharedir=$dataDir \
		template_dir=$dataDir/git-core/templates \
		htmldir=$docDir \
		sysconfdir=$sysconfDir \
		PTHREAD_LIBS= \
		USE_LIBPCRE=YesPlease \
		NO_D_TYPE_IN_DIRENT=YesPlease \
		NO_MEMMEM=YesPlease \
		NO_MKSTEMPS=YesPlease \
		NEEDS_LIBICONV=YesPlease \
		NO_R_TO_GCC_LINKER=YesPlease \
		GNU_ROFF=YesPlease \
		PERL_PATH=$portPackageLinksDir/cmd~perl/bin/perl \
		PYTHON_PATH=$portPackageLinksDir/cmd~python/bin/python \
		NO_TCLTK=YesPlease \
		OBJECT_CREATION_USES_RENAMES=YesPlease \
		NO_CROSS_DIRECTORY_HARDLINKS=YesPlease \
		NO_INSTALL_HARDLINKS=YesPlease \
		HAVE_DEV_TTY=YesPlease \
		DEFAULT_EDITOR=nano \
		BASIC_LDFLAGS="-lnetwork -lbsd" \
		"$@"
}


BUILD()
{
	makeGit $jobArgs
	makeGit strip
}

INSTALL()
{
	makeGit install

	# replace copies of git binaries with symlinks
	cd $binDir
	for program in git*; do
		ln -sfn "../lib/git-core/$program" "$program"
	done

	# copy manpages
	mkdir -p $manDir
	cp -rd $sourceDir2/* $manDir/

	# copy html documentation
	htmlDir=$docDir/html
	mkdir -p $htmlDir
	cp -rd $sourceDir3/*.html $htmlDir/
	rm $htmlDir/git-gui.html

	# copy asciidoc documentation for which there isn't any corresponding html
	asciidocDir=$docDir/asciidoc
	mkdir -p $asciidocDir
	for f in $sourceDir3/*.txt; do
		html=$sourceDir3/$(basename $f .txt).html
		if ! [ -e $html ]; then
			cp -d $f $asciidocDir/
		fi
	done

	packageEntries arch \
		documentation/packages/git/html/git-archimport.html \
		documentation/man/man1/git-archimport.1 \
		lib/git-core/git-archimport

	packageEntries cvs \
		bin/git-cvsserver \
		documentation/packages/git/html/git-cvsexportcommit.html \
		documentation/packages/git/html/git-cvsimport.html \
		documentation/packages/git/html/git-cvsserver.html \
		documentation/man/man1/git-cvsexportcommit.1 \
		documentation/man/man1/git-cvsimport.1 \
		documentation/man/man1/git-cvsserver.1 \
		documentation/man/man7/gitcvs-migration.7 \
		lib/git-core/git-cvsexportcommit \
		lib/git-core/git-cvsimport \
		lib/git-core/git-cvsserver

	packageEntries daemon \
		documentation/packages/git/html/git-credential-cache--daemon.html \
		documentation/packages/git/html/git-credential-cache.html \
		documentation/packages/git/html/git-daemon.html \
		documentation/man/man1/git-credential-cache--daemon.1 \
		documentation/man/man1/git-credential-cache.1 \
		documentation/man/man1/git-daemon.1 \
		lib/git-core/git-credential-cache--daemon \
		lib/git-core/git-credential-cache \
		lib/git-core/git-daemon

	packageEntries email \
		documentation/packages/git/html/git-send-email.html \
		documentation/man/man1/git-send-email.1 \
		lib/git-core/git-send-email

	pythonDir=python$(python -c 'import sys; print("%i.%i" % sys.version_info[:2])')
	packageEntries remote_helpers \
		lib/$pythonDir

	packageEntries svn \
		documentation/packages/git/html/git-svn.html \
		documentation/man/man1/git-svn.1 \
		lib/git-core/git-svn
}
