#
|
# CDDL HEADER START
|
#
|
# The contents of this file are subject to the terms of the
|
# Common Development and Distribution License (the "License").
|
# You may not use this file except in compliance with the License.
|
#
|
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
|
# or http://www.opensolaris.org/os/licensing.
|
# See the License for the specific language governing permissions
|
# and limitations under the License.
|
#
|
# When distributing Covered Code, include this CDDL HEADER in each
|
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
|
# If applicable, add the following below this CDDL HEADER, with the
|
# fields enclosed by brackets "[]" replaced with your own identifying
|
# information: Portions Copyright [yyyy] [name of copyright owner]
|
#
|
# CDDL HEADER END
|
#
|
|
#
|
# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2020, Michal Nowak
|
# Copyright (c) 2021, Nona Hansel
|
#
|
|
OPENSSL_VERSION= 3.1
|
include ../../../make-rules/shared-macros.mk
|
|
COMPONENT_NAME= git
|
COMPONENT_VERSION= 2.44.0
|
COMPONENT_SUMMARY= git - Fast Version Control System
|
COMPONENT_DESCRIPTION= Git is a free & open source, distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
|
COMPONENT_PROJECT_URL= https://git-scm.com/
|
COMPONENT_SRC= $(COMPONENT_NAME)-$(COMPONENT_VERSION)
|
COMPONENT_ARCHIVE= $(COMPONENT_SRC).tar.xz
|
COMPONENT_ARCHIVE_HASH= sha256:e358738dcb5b5ea340ce900a0015c03ae86e804e7ff64e47aa4631ddee681de3
|
COMPONENT_ARCHIVE_URL= https://www.kernel.org/pub/software/scm/git/$(COMPONENT_ARCHIVE)
|
COMPONENT_FMRI= developer/versioning/git
|
COMPONENT_CLASSIFICATION= Development/Source Code Management
|
COMPONENT_LICENSE= GPLv2
|
|
#
|
# man pages are a separate archive
|
#
|
COMPONENT_ARCHIVE_1= $(COMPONENT_NAME)-manpages-$(COMPONENT_VERSION).tar.xz
|
COMPONENT_ARCHIVE_HASH_1= sha256:777be83bd54e301988fc49708cae3b5ce4b0971c2ca3b7a720be58e2f4633fcb
|
COMPONENT_ARCHIVE_URL_1= https://www.kernel.org/pub/software/scm/git/$(COMPONENT_ARCHIVE_1)
|
|
include $(WS_MAKE_RULES)/common.mk
|
|
# With PATH.gnu gmake test gives a slightly better success rate:
|
PATH= $(PATH.gnu)
|
|
LDFLAGS += -lnsl -lsocket
|
|
CONFIGURE_PREFIX= /usr
|
CONFIGURE_OPTIONS += --with-libpcre2
|
CONFIGURE_OPTIONS += --libexecdir=$(USRLIBEXECDIR)
|
CONFIGURE_OPTIONS += --with-perl=$(PERL)
|
CONFIGURE_OPTIONS += --with-python=$(PYTHON)
|
CONFIGURE_OPTIONS += LDFLAGS=-L$(OPENSSL_LIBDIR)
|
CONFIGURE_OPTIONS += CPPFLAGS="-I/usr/include/pcre -I$(OPENSSL_INCDIR)"
|
|
COMPONENT_BUILD_ENV += NO_PERL_MAKEMAKER=1
|
COMPONENT_BUILD_ENV += V=1
|
COMPONENT_INSTALL_ENV += NO_PERL_MAKEMAKER=1
|
|
PKG_MACROS += PERLVER=$(PERL_VERSION)
|
|
# This runs configure but configure doesn't generate a Makefile.
|
# Instead a Makefile comes with git.
|
# Anyways viewpathing doesn't work.
|
# Therefore we need cloney to copy a set of files to build.
|
# Overwrite symlinked tests, because they are relying on test assets being regular files.
|
COMPONENT_PRE_CONFIGURE_ACTION= \
|
(chmod u+x $(COMPONENT_SRC)/t/*.sh && $(CLONEY) $(SOURCE_DIR) $(@D) && \
|
$(RM) -r $(@D)/t && $(CP) -rp $(COMPONENT_SRC)/t $(@D))
|
|
PKG_HARDLINKS += usr/libexec/git-core/git
|
PKG_HARDLINKS += usr/libexec/git-core/git-cvsserver
|
PKG_HARDLINKS += usr/libexec/git-core/git-gui
|
PKG_HARDLINKS += usr/libexec/git-core/git-remote-ftps
|
PKG_HARDLINKS += usr/libexec/git-core/git-shell
|
PKG_HARDLINKS += usr/libexec/git-core/scalar
|
|
# We want the perl modules to install the vendor_perl directory, and their
|
# manpages to install in the normal perl manpage directory, but the default
|
# behavior is to put the modules in /usr/lib. Setting these four variables
|
# massages the perl to get files to go where we want.
|
COMPONENT_INSTALL_ARGS += INSTALL="$(INSTALL)"
|
COMPONENT_INSTALL_ARGS += perllibdir=$(shell $(PERL) -MConfig -e 'print "$$Config{installvendorarch}"')
|
COMPONENT_INSTALL_ARGS += VENDORPREFIX=$(shell $(PERL) -MConfig -e 'print "$$Config{installvendorlib}"')
|
COMPONENT_INSTALL_ARGS += PERLPREFIX=$(shell $(PERL) -MConfig -e 'print "$$Config{installvendorarch}"')
|
COMPONENT_INSTALL_ARGS += INSTALLVENDORLIB=$(shell $(PERL) -MConfig -e 'print "$$Config{installvendorlib}"')
|
|
COMPONENT_TEST_ENV += LC_ALL=C.UTF-8
|
|
# many failures; keep going; later versions of git are much cleaner
|
COMPONENT_TEST_ARGS += -k -i
|
# If GITTEST_JOBS is set, then run the jobs in parallel (to that number)
|
COMPONENT_TEST_ARGS += $(if $(GITTEST_JOBS),-j$(GITTEST_JOBS),)
|
COMPONENT_TEST_TARGETS = test
|
# Put each test result in a file; necessary if jobs run in parallel
|
COMPONENT_TEST_TARGETS += GIT_TEST_OPTS=--tee
|
COMPONENT_TEST_TARGETS += DEFAULT_TEST_TARGET=test-noclean
|
# Compile the test results and put that into the test output file instead
|
COMPONENT_POST_TEST_ACTION= \
|
(cd $(COMPONENT_TEST_DIR)/t/test-results; for i in *.out; do \
|
echo "*** $${i%.out}.sh ***"; \
|
cat $$i; \
|
done; \
|
cd ..; \
|
$(GMAKE) -s aggregate-results) &> $(COMPONENT_TEST_OUTPUT)
|
|
# These man pages come in a separate archive with no Makefile
|
# and Solaris likes some of them moved around hence we'll just
|
# do it manually here.
|
$(BUILD_DIR)/.manpages:
|
cd $(BUILD_DIR) ; $(UNPACK) $(UNPACK_ARGS) $(USERLAND_ARCHIVES)$(COMPONENT_ARCHIVE_1)
|
$(MKDIR) $(PROTOUSRSHAREMAN1DIR)
|
$(MKDIR) $(PROTOUSRSHAREMAN4DIR)
|
$(MKDIR) $(PROTOUSRSHAREMAN5DIR)
|
cd $(BUILD_DIR) ; for manfile in man*/* ; \
|
do \
|
filename=`basename $$manfile`; \
|
fname=$${filename%.*}; \
|
ext=$${filename##*.}; \
|
newext=1; \
|
if [ $$ext = 5 ]; then newext=4; fi; \
|
if [ $$ext = 7 ]; then newext=5; fi; \
|
$(GSED) -e 's/\\m\[blue\]//g' -e 's/\\m\[\]//g' \
|
-e 's/"5"/"4"/' -e 's/(5)/(4)/g' \
|
-e 's/"7"/"5"/' -e 's/(7)/(5)/g' $$manfile > \
|
$(PROTOUSRSHAREMANDIR)/man$$newext/$$fname.$$newext; \
|
done
|
$(TOUCH) $@
|
|
$(BUILD_DIR_64)/.contrib: $(BUILD_DIR_64)/.contrib-subtree
|
$(MKDIR) $(PROTOUSRSHAREDIR)/bash-completion/completions
|
PATH="$(PATH)" $(GMAKE) -C $(BUILD_DIR_64)/contrib/diff-highlight
|
$(CP) -RLp $(BUILD_DIR_64)/contrib/diff-highlight/diff-highlight $(PROTOUSRBINDIR)/diff-highlight
|
$(CP) -RLp $(BUILD_DIR_64)/contrib/completion/git-completion.bash $(PROTOUSRSHAREDIR)/bash-completion/completions/git
|
(cd $(PROTOUSRSHAREDIR)/bash-completion/completions; $(LN) -sf git gitk)
|
$(TOUCH) $@
|
|
# Install steps taken from contrib/subtree/INSTALL
|
$(BUILD_DIR_64)/.contrib-subtree:
|
PATH="$(PATH)" $(GMAKE) -C $(BUILD_DIR_64)/contrib/subtree DESTDIR=$(PROTO_DIR)
|
PATH="$(PATH)" $(GMAKE) -C $(BUILD_DIR_64)/contrib/subtree DESTDIR=$(PROTO_DIR) install
|
PATH="$(PATH)" $(GMAKE) -C $(BUILD_DIR_64)/contrib/subtree DESTDIR=$(PROTO_DIR) install-doc
|
$(TOUCH) $@
|
|
install: $(INSTALL_64) $(BUILD_DIR)/.manpages $(BUILD_DIR_64)/.contrib
|
|
# Test dependencies
|
TEST_REQUIRED_PACKAGES += developer/fakeroot
|
TEST_REQUIRED_PACKAGES += developer/versioning/cvs
|
TEST_REQUIRED_PACKAGES += system/library/iconv/extra
|
TEST_REQUIRED_PACKAGES += system/library/iconv/unicode
|
TEST_REQUIRED_PACKAGES += system/library/iconv/utf-8
|
TEST_REQUIRED_PACKAGES += library/perl-5/cgi
|
TEST_REQUIRED_PACKAGES += library/perl-5/dbi
|
TEST_REQUIRED_PACKAGES += library/perl-5/dbd-sqlite
|
TEST_REQUIRED_PACKAGES += library/perl-5/subversion
|
TEST_REQUIRED_PACKAGES += locale/is
|
TEST_REQUIRED_PACKAGES += locale/is-extra
|
|
# Needed to generate git-subtree documentation
|
REQUIRED_PACKAGES += text/asciidoc
|
REQUIRED_PACKAGES += text/xmlto
|
|
# As long as we disabled pkgdepend on git-p4 we need to add this manually:
|
PYTHON_REQUIRED_PACKAGES += runtime/python
|
|
# Auto-generated dependencies
|
PERL_REQUIRED_PACKAGES += runtime/perl
|
REQUIRED_PACKAGES += library/expat
|
REQUIRED_PACKAGES += library/pcre2
|
REQUIRED_PACKAGES += library/security/openssl-31
|
REQUIRED_PACKAGES += library/zlib
|
REQUIRED_PACKAGES += runtime/perl
|
REQUIRED_PACKAGES += shell/bash
|
REQUIRED_PACKAGES += shell/ksh93
|
REQUIRED_PACKAGES += system/library
|
REQUIRED_PACKAGES += web/curl
|