mercurial-5.0.ebuild (4042B)
1 # Copyright 1999-2019 Gentoo Authors 2 # Distributed under the terms of the GNU General Public License v2 3 4 EAPI=7 5 6 PYTHON_COMPAT=( python2_7 python3_{5,6,7} ) 7 PYTHON_REQ_USE="threads" 8 9 inherit bash-completion-r1 elisp-common eutils distutils-r1 flag-o-matic 10 11 DESCRIPTION="Scalable distributed SCM" 12 HOMEPAGE="https://www.mercurial-scm.org/" 13 SRC_URI="https://www.mercurial-scm.org/release/${P}.tar.gz" 14 15 LICENSE="GPL-2+" 16 SLOT="0" 17 KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~ppc-aix ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" 18 IUSE="+chg bugzilla emacs gpg test tk" 19 20 RDEPEND="app-misc/ca-certificates 21 dev-python/zstandard[${PYTHON_USEDEP}] 22 bugzilla? ( dev-python/mysqlclient[${PYTHON_USEDEP}] ) 23 gpg? ( app-crypt/gnupg ) 24 tk? ( dev-lang/tk )" 25 26 DEPEND="emacs? ( virtual/emacs ) 27 test? ( app-arch/unzip 28 dev-python/pygments[${PYTHON_USEDEP}] )" 29 30 SITEFILE="70${PN}-gentoo.el" 31 32 # Too many tests fail #608720 33 RESTRICT="test" 34 35 PATCHES=( 36 "${FILESDIR}/${PN}-3.0.1-po_fixes.patch" 37 "${FILESDIR}/${PN}-4.8.1-unbundle_zstd.patch" 38 ) 39 40 python_prepare_all() { 41 # fix up logic that won't work in Gentoo Prefix (also won't outside in 42 # certain cases), bug #362891 43 sed -i -e 's:xcodebuild:nocodebuild:' setup.py || die 44 45 # Don't use bundled zstandard (#666972) 46 rm -r contrib/python-zstandard || die 47 48 distutils-r1_python_prepare_all 49 50 export HGPYTHON3=1 # https://www.mercurial-scm.org/wiki/Python3 51 } 52 53 python_configure_all() { 54 strip-flags -ftracer -ftree-vectorize 55 # Note: make it impl-conditional if py3 is supported 56 append-flags -fno-strict-aliasing 57 58 "${PYTHON}" setup.py build_mo || die 59 } 60 61 python_compile_all() { 62 rm -r contrib/win32 || die 63 if use chg; then 64 emake -C contrib/chg 65 fi 66 if use emacs; then 67 cd contrib || die 68 elisp-compile mercurial.el || die "elisp-compile failed!" 69 fi 70 } 71 72 python_install_all() { 73 distutils-r1_python_install_all 74 75 newbashcomp contrib/bash_completion hg 76 77 insinto /usr/share/zsh/site-functions 78 newins contrib/zsh_completion _hg 79 80 rm -f doc/*.?.txt 81 dodoc CONTRIBUTORS 82 cp hgweb*.cgi "${ED}"/usr/share/doc/${PF}/ || die 83 84 dobin hgeditor 85 dobin contrib/hgk 86 python_foreach_impl python_doscript contrib/hg-ssh 87 88 if use emacs; then 89 elisp-install ${PN} contrib/mercurial.el* || die "elisp-install failed!" 90 elisp-site-file-install "${FILESDIR}"/${SITEFILE} 91 fi 92 93 local RM_CONTRIB=( hgk hg-ssh bash_completion zsh_completion plan9 *.el ) 94 95 if use chg; then 96 dobin contrib/chg/chg 97 doman contrib/chg/chg.1 98 RM_CONTRIB+=( chg ) 99 fi 100 101 for f in ${RM_CONTRIB[@]}; do 102 rm -r contrib/${f} || die 103 done 104 105 dodoc -r contrib 106 docompress -x /usr/share/doc/${PF}/contrib 107 doman doc/*.? 108 109 insinto /etc/mercurial/hgrc.d 110 doins "${FILESDIR}/cacerts.rc" 111 112 # symlink to system zstd 113 local sitedir=$(python_get_sitedir) 114 dosym ../zstd.so "${sitedir#${EPREFIX}}"/${PN}/zstd.so 115 } 116 117 src_test() { 118 pushd tests &>/dev/null || die 119 rm -rf *svn* # Subversion tests fail with 1.5 120 rm -f test-archive* # Fails due to verbose tar output changes 121 rm -f test-convert-baz* # GNU Arch baz 122 rm -f test-convert-cvs* # CVS 123 rm -f test-convert-darcs* # Darcs 124 rm -f test-convert-git* # git 125 rm -f test-convert-mtn* # monotone 126 rm -f test-convert-tla* # GNU Arch tla 127 #rm -f test-doctest* # doctest always fails with python 2.5.x 128 rm -f test-largefiles* # tends to time out 129 130 popd &>/dev/null || die 131 distutils-r1_src_test 132 } 133 134 python_test() { 135 local TEST_DIR 136 137 rm -rf "${TMPDIR}"/test 138 distutils_install_for_testing 139 cd tests || die 140 "${PYTHON}" run-tests.py --verbose \ 141 --tmpdir="${TMPDIR}"/test \ 142 --with-hg="${TEST_DIR}"/scripts/hg \ 143 || die "Tests fail with ${EPYTHON}" 144 } 145 146 pkg_postinst() { 147 use emacs && elisp-site-regen 148 149 elog "If you want to convert repositories from other tools using convert" 150 elog "extension please install correct tool:" 151 elog " dev-vcs/cvs" 152 elog " dev-vcs/darcs" 153 elog " dev-vcs/git" 154 elog " dev-vcs/monotone" 155 elog " dev-vcs/subversion" 156 } 157 158 pkg_postrm() { 159 use emacs && elisp-site-regen 160 }