diff --git a/dev-vcs/git/git-2.6.4.recipe b/dev-vcs/git/git-2.6.4.recipe new file mode 100644 index 000000000..1e220861a --- /dev/null +++ b/dev-vcs/git/git-2.6.4.recipe @@ -0,0 +1,222 @@ +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-2015 Git Authors (see git web site for list)" + +SOURCE_URI="https://www.kernel.org/pub/software/scm/git/git-$portVersion.tar.gz" +CHECKSUM_SHA256="1a0290fcef03c7baae3e9661509421965187dc8f8f6e31672709b66c9c7686ca" +PATCHES="git-$portVersion.patchset" + +SOURCE_URI_2="https://www.kernel.org/pub/software/scm/git/git-manpages-$portVersion.tar.gz" +CHECKSUM_SHA256_2="c1bf13ca4b68be062b9043d9e82e25065a2a011f7ca584f5d02cf9a9ba6a516d" + +SOURCE_URI_3="https://www.kernel.org/pub/software/scm/git/git-htmldocs-$portVersion.tar.gz" +CHECKSUM_SHA256_3="c2f474bf9113190aa4bed0d301fb86e0bceb1a2c6d80601db58f16845a451a62" + +REVISION="1" + +ARCHITECTURES="x86_gcc2 x86 x86_64" + +PROVIDES=" + git = $portVersion compat >= 2.2 + cmd:git = $portVersion compat >= 2.2 + cmd:git_receive_pack = $portVersion compat >= 2.2 + cmd:git_shell = $portVersion compat >= 2.2 + cmd:git_upload_archive = $portVersion compat >= 2.2 + cmd:git_upload_pack = $portVersion compat >= 2.2 + " +PROVIDES_arch=" + git_arch = $portVersion compat >= 2.2 + cmd:git_archimport = $portVersion compat >= 2.2 + " +PROVIDES_cvs=" + git_cvs = $portVersion compat >= 2.2 + cmd:git_cvsimport = $portVersion compat >= 2.2 + cmd:git_cvsserver = $portVersion compat >= 2.2 + " +PROVIDES_daemon=" + git_daemon = $portVersion compat >= 2.2 + cmd:git_daemon = $portVersion compat >= 2.2 + " +PROVIDES_email=" + git_email = $portVersion compat >= 2.2 + cmd:git_send_email = $portVersion compat >= 2.2 + " +PROVIDES_source=" + git_source = $portVersion compat >= 2.2 + " +PROVIDES_svn=" + git_svn = $portVersion compat >= 2.2 + cmd:git_svn = $portVersion compat >= 2.2 + " + +REQUIRES=" + haiku + 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 + git == $portVersion base + " +REQUIRES_cvs=" + haiku + git == $portVersion base + cmd:cvsps + " +REQUIRES_daemon=" + haiku + git == $portVersion base + " +REQUIRES_email=" + haiku + git == $portVersion base + " +REQUIRES_svn=" + haiku + git == $portVersion base + " + +BUILD_REQUIRES=" + cmd:man + cmd:nano + cmd:perl + devel:libcurl + devel:libexpat + devel:libiconv + devel:libintl + devel:libpcre + devel:libssl + devel:libz + " + +BUILD_PREREQUIRES=" + haiku_devel + 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 \ + NO_PYTHON=YesPlease \ + 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 + + # 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 + + # replace copies of git binaries with symlinks + cd $binDir + for program in git*; do + ln -sfn "../lib/git-core/$program" "$program" + 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 + + packageEntries svn \ + documentation/packages/git/html/git-svn.html \ + documentation/man/man1/git-svn.1 \ + lib/git-core/git-svn +} diff --git a/dev-vcs/git/patches/git-2.6.4.patchset b/dev-vcs/git/patches/git-2.6.4.patchset new file mode 100644 index 000000000..b6805941e --- /dev/null +++ b/dev-vcs/git/patches/git-2.6.4.patchset @@ -0,0 +1,104 @@ +From 33b47b9b1b7ff02d3b04da8d6f763fe744aa39d8 Mon Sep 17 00:00:00 2001 +From: Ingo Weinhold +Date: Tue, 13 Aug 2013 08:07:25 +0200 +Subject: git-web--browse.sh: use "open" on Haiku + + +diff --git a/git-web--browse.sh b/git-web--browse.sh +index ae15253..1f6e306 100755 +--- a/git-web--browse.sh ++++ b/git-web--browse.sh +@@ -132,6 +132,10 @@ if test -z "$browser" ; then + if test -x /usr/bin/cygstart; then + browser_candidates="cygstart $browser_candidates" + fi ++ # /boot/system/haiku_loader indicates Haiku ++ if test -f /boot/system/haiku_loader; then ++ browser_candidates="open $browser_candidates" ++ fi + + for i in $browser_candidates; do + init_browser_path $i +-- +2.2.2 + + +From e3bdc3cfdf6d91d622e9f047bb727272ab8528f5 Mon Sep 17 00:00:00 2001 +From: Ingo Weinhold +Date: Mon, 19 Jan 2015 15:37:16 -0500 +Subject: On Haiku use the user settings directory instead of HOME + + +diff --git a/path.c b/path.c +index 38f2ebd..9c7cb48 100644 +--- a/path.c ++++ b/path.c +@@ -6,6 +6,11 @@ + #include "string-list.h" + #include "dir.h" + ++#ifdef __HAIKU__ ++#include ++#include ++#endif ++ + static int get_st_mode_bits(const char *path, int *mode) + { + struct stat st; +@@ -946,10 +951,18 @@ char *xdg_config_home(const char *filename) + { + const char *home, *config_home; + ++#ifdef __HAIKU__ ++ char settingsPath[B_PATH_NAME_LENGTH]; + assert(filename); ++ if (find_directory(B_USER_SETTINGS_DIRECTORY, -1, true, settingsPath, ++ sizeof(settingsPath)) == B_OK) ++ return mkpathdup("%s/git/%s", settingsPath, filename); ++#else + config_home = getenv("XDG_CONFIG_HOME"); ++ assert(filename); + if (config_home && *config_home) + return mkpathdup("%s/git/%s", config_home, filename); ++#endif + + home = getenv("HOME"); + if (home) +-- +2.2.2 + + +From 34967add7a2fefa52b1a2b005745e17d1712545b Mon Sep 17 00:00:00 2001 +From: Oliver Tappe +Date: Mon, 19 Jan 2015 15:50:09 -0500 +Subject: Ensure config-directory exists before using it. + + +diff --git a/config.c b/config.c +index 248a21a..a04d467 100644 +--- a/config.c ++++ b/config.c +@@ -1958,6 +1958,7 @@ int git_config_set_multivar_in_file(const char *config_filename, + int ret; + struct lock_file *lock = NULL; + char *filename_buf = NULL; ++ char *config_dir = NULL; + char *contents = NULL; + size_t contents_sz; + +@@ -1971,6 +1972,12 @@ int git_config_set_multivar_in_file(const char *config_filename, + if (!config_filename) + config_filename = filename_buf = git_pathdup("config"); + ++ config_dir = xstrdup(config_filename); ++ * find_last_dir_sep(config_dir) = '\0'; ++ if (access(config_dir, F_OK) != 0) ++ mkdir(config_dir, 0755); ++ free(config_dir); ++ + /* + * The lock serves a purpose in addition to locking: the new + * contents of .git/config will be written into it. +-- +2.2.2 +