diff --git a/app-emulation/virt-manager/Manifest b/app-emulation/virt-manager/Manifest new file mode 100644 index 000000000..455f05287 --- /dev/null +++ b/app-emulation/virt-manager/Manifest @@ -0,0 +1 @@ +DIST virt-manager-2.2.1.tar.gz 2623754 BLAKE2B c81e730f2d685152bd0ef0a0327a74a70c50bff91e80ed0e3de92d0b848183c4bc092be333f2f0785c6a0b39f0b6d6abbd1f38c902f52ba4af7c56d64ee9b026 SHA512 aa97af52b3552c087beab8701762c21e8e6d818c9787d5376ed4e1ae40a34d5e8870c4c00fda9cb17a2340d1dff5b17e853182df720cdd9ea4c91cf01502a33a diff --git a/app-emulation/virt-manager/metadata.xml b/app-emulation/virt-manager/metadata.xml new file mode 100644 index 000000000..024a5205e --- /dev/null +++ b/app-emulation/virt-manager/metadata.xml @@ -0,0 +1,19 @@ + + + + + virtualization@gentoo.org + Gentoo Virtualization Project + + + + Enables sys-auth/polkit authentication support, + required when using app-emulation/libvirt with + PolicyKit authentication + + + Depend on the proper libraries needed to connect to SASL-enabled + libvirtd instances (e.g. Kerberos-protected instances). + + + diff --git a/app-emulation/virt-manager/virt-manager-2.2.1-r3.ebuild b/app-emulation/virt-manager/virt-manager-2.2.1-r3.ebuild new file mode 100644 index 000000000..a53de179f --- /dev/null +++ b/app-emulation/virt-manager/virt-manager-2.2.1-r3.ebuild @@ -0,0 +1,179 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +PYTHON_COMPAT=( python3_{6,7} ) +DISTUTILS_SINGLE_IMPL=1 + +inherit gnome2 distutils-r1 + +DESCRIPTION="A graphical tool for administering virtual machines" +HOMEPAGE="http://virt-manager.org" + +if [[ ${PV} = *9999* ]]; then + inherit git-r3 + SRC_URI="" + KEYWORDS="amd64 x86" + EGIT_REPO_URI="https://github.com/virt-manager/virt-manager.git" +else + SRC_URI="http://virt-manager.org/download/sources/${PN}/${P}.tar.gz" + KEYWORDS="amd64 ~ppc64 x86" +fi + +LICENSE="GPL-2" +SLOT="0" +IUSE="gtk policykit sasl" + +RDEPEND="!app-emulation/virtinst + ${PYTHON_DEPS} + app-cdr/cdrtools + >=app-emulation/libvirt-glib-1.0.0[introspection] + $(python_gen_cond_dep ' + dev-libs/libxml2[python,${PYTHON_MULTI_USEDEP}] + dev-python/ipaddr[${PYTHON_MULTI_USEDEP}] + dev-python/libvirt-python[${PYTHON_MULTI_USEDEP}] + dev-python/pygobject:3[${PYTHON_MULTI_USEDEP}] + dev-python/requests[${PYTHON_MULTI_USEDEP}] + ') + >=sys-libs/libosinfo-0.2.10[introspection] + gtk? ( + gnome-base/dconf + >=net-libs/gtk-vnc-0.3.8[gtk3(+),introspection] + net-misc/spice-gtk[usbredir,gtk3,introspection,sasl?] + net-misc/x11-ssh-askpass + x11-libs/gtk+:3[introspection] + x11-libs/gtksourceview:4[introspection] + x11-libs/vte:2.91[introspection] + policykit? ( sys-auth/polkit[introspection] ) + ) +" +DEPEND="${RDEPEND} + dev-lang/perl + dev-util/intltool +" + +DOCS=( README.md NEWS.md ) + +src_prepare() { + distutils-r1_src_prepare +} + +distutils-r1_python_compile() { + local defgraphics= + + esetup.py configure \ + --default-graphics=spice +} + +virtmanager_python_install() { + debug-print-function ${FUNCNAME} "${@}" + + local args=( "${@}" ) + + # enable compilation for the install phase. + local -x PYTHONDONTWRITEBYTECODE= + + # python likes to compile any module it sees, which triggers sandbox + # failures if some packages haven't compiled their modules yet. + addpredict "${EPREFIX}/usr/lib/${EPYTHON}" + addpredict "${EPREFIX}/usr/$(get_libdir)/${EPYTHON}" + addpredict /usr/lib/pypy2.7 + addpredict /usr/lib/pypy3.6 + addpredict /usr/lib/portage/pym + addpredict /usr/local # bug 498232 + + if [[ ! ${DISTUTILS_SINGLE_IMPL} ]]; then + # user may override --install-scripts + # note: this is poor but distutils argv parsing is dumb + local mydistutilsargs=( "${mydistutilsargs[@]}" ) + local scriptdir=${EPREFIX}/usr/bin + + # construct a list of mydistutilsargs[0] args[0] args[1]... + local arg arg_vars + [[ ${mydistutilsargs[@]} ]] && eval arg_vars+=( + 'mydistutilsargs['{0..$(( ${#mydistutilsargs[@]} - 1 ))}']' + ) + [[ ${args[@]} ]] && eval arg_vars+=( + 'args['{0..$(( ${#args[@]} - 1 ))}']' + ) + + set -- "${arg_vars[@]}" + while [[ ${@} ]]; do + local arg_var=${1} + shift + local a=${!arg_var} + + case "${a}" in + --install-scripts=*) + scriptdir=${a#--install-scripts=} + unset "${arg_var}" + ;; + --install-scripts) + scriptdir=${!1} + unset "${arg_var}" "${1}" + shift + ;; + esac + done + fi + + local root=${D%/}/_${EPYTHON} + [[ ${DISTUTILS_SINGLE_IMPL} ]] && root=${D%/} + + esetup.py install --root="${root}" "${args[@]}" + + local forbidden_package_names=( examples test tests .pytest_cache ) + local p + for p in "${forbidden_package_names[@]}"; do + if [[ -d ${root}$(python_get_sitedir)/${p} ]]; then + die "Package installs '${p}' package which is forbidden and likely a bug in the build system." + fi + done + + local shopt_save=$(shopt -p nullglob) + shopt -s nullglob + local pypy_dirs=( + "${root}/usr/$(get_libdir)"/pypy*/share + "${root}/usr/lib"/pypy*/share + ) + ${shopt_save} + + if [[ -n ${pypy_dirs} ]]; then + die "Package installs 'share' in PyPy prefix, see bug #465546." + fi + + if [[ ! ${DISTUTILS_SINGLE_IMPL} ]]; then + _distutils-r1_wrap_scripts "${root}" "${scriptdir}" + multibuild_merge_root "${root}" "${D%/}" + fi +} + +src_install() { + local mydistutilsargs=( --no-update-icon-cache --no-compile-schemas ) + virtmanager_python_install + + python_fix_shebang "${ED}"/usr/share/virt-manager +} + +pkg_preinst() { + if use gtk; then + gnome2_pkg_preinst + + cd "${ED}" + export GNOME2_ECLASS_ICONS=$(find 'usr/share/virt-manager/icons' -maxdepth 1 -mindepth 1 -type d 2> /dev/null) + else + rm -rf "${ED}/usr/share/virt-manager/virtManager" + rm -f "${ED}/usr/share/virt-manager/virt-manager" + rm -rf "${ED}/usr/share/virt-manager/ui/" + rm -rf "${ED}/usr/share/virt-manager/icons/" + rm -rf "${ED}/usr/share/man/man1/virt-manager.1*" + rm -rf "${ED}/usr/share/icons/" + rm -rf "${ED}/usr/share/applications/virt-manager.desktop" + rm -rf "${ED}/usr/bin/virt-manager" + fi +} + +pkg_postinst() { + use gtk && gnome2_pkg_postinst +} diff --git a/dev-python/numpy/Manifest b/dev-python/numpy/Manifest new file mode 100644 index 000000000..5d6981015 --- /dev/null +++ b/dev-python/numpy/Manifest @@ -0,0 +1,4 @@ +DIST numpy-1.16.5.zip 5138208 BLAKE2B f5511650e66939a6ce21cfad7874aecdeb6c07a70b32419a808956e42c7819d82bb364f1632da91b4d8a5237001c8ae3cbdcac10651fa0acca9558bdeafb5437 SHA512 6dd790ff57fdb7e7b0bddb47ea2b70b2667edefe632548ec68934e12a16af4a51bed9726e495c4993aad4c448dc4a204d0a087577d43dcfc9fa0164eb1d4b898 +DIST numpy-html-1.16.4.zip 12097069 BLAKE2B db1f897342fbc80a761fbaee7b0eee3761dbfa04ef6c46a137bb2392caaec8256580467ce06498cceeada2639151a1ec75dafab484d64cb897c008727d6d32a5 SHA512 c44c5e1e0cb22f9dd46fe9e302030292d85e567456178fee296746a414271634e906509fb6665ac63fbfebdd13c5383574f0aa47b4fbc639063da31addc3316a +DIST numpy-ref-1.16.4.pdf 5176571 BLAKE2B 9a875ebd1473b241d463d810a6d191581aef961158f2f82959671b554ace3ad482795e4f3e1cb7dd4632cff926c1e864c675a7624fb0f4e4f297948bf50f0564 SHA512 983ba0f34a70c011886bdbc9fd8f3f75a3a967ca29217acc76fa46e7da391296a5628c9a557ac76efb393271abfb8ee4f376d401c1cc1e5c30622e54b9325d09 +DIST numpy-user-1.16.4.pdf 596203 BLAKE2B da3ad1f0ec1c965d20656f73a970911cbb58efa73a5df89e2e6485e0dd763f483e35eea1395ac919bf35d496fb216cee954fc5d31edebc1796a24a2a7a2d12b9 SHA512 3083008547213bfa98ffa5cd8e2cea13f6947f42d83aef61502a2a852b0d5f27d727c76b42d281d7a2f4f76c78e88b12ee3d9b164b39fe1f0213ace7097357d6 diff --git a/dev-python/numpy/files/numpy-1.15.4-no-hardcode-blas.patch b/dev-python/numpy/files/numpy-1.15.4-no-hardcode-blas.patch new file mode 100644 index 000000000..979b56bd6 --- /dev/null +++ b/dev-python/numpy/files/numpy-1.15.4-no-hardcode-blas.patch @@ -0,0 +1,76 @@ +diff --git a/numpy/distutils/system_info.py b/numpy/distutils/system_info.py +index 65d7de316..a85640d30 100644 +--- a/numpy/distutils/system_info.py ++++ b/numpy/distutils/system_info.py +@@ -364,29 +364,7 @@ def get_info(name, notfound_action=0): + 1 - display warning message + 2 - raise error + """ +- cl = {'atlas': atlas_info, # use lapack_opt or blas_opt instead +- 'atlas_threads': atlas_threads_info, # ditto +- 'atlas_blas': atlas_blas_info, +- 'atlas_blas_threads': atlas_blas_threads_info, +- 'lapack_atlas': lapack_atlas_info, # use lapack_opt instead +- 'lapack_atlas_threads': lapack_atlas_threads_info, # ditto +- 'atlas_3_10': atlas_3_10_info, # use lapack_opt or blas_opt instead +- 'atlas_3_10_threads': atlas_3_10_threads_info, # ditto +- 'atlas_3_10_blas': atlas_3_10_blas_info, +- 'atlas_3_10_blas_threads': atlas_3_10_blas_threads_info, +- 'lapack_atlas_3_10': lapack_atlas_3_10_info, # use lapack_opt instead +- 'lapack_atlas_3_10_threads': lapack_atlas_3_10_threads_info, # ditto +- 'mkl': mkl_info, +- # openblas which may or may not have embedded lapack +- 'openblas': openblas_info, # use blas_opt instead +- # openblas with embedded lapack +- 'openblas_lapack': openblas_lapack_info, # use blas_opt instead +- 'openblas_clapack': openblas_clapack_info, # use blas_opt instead +- 'blis': blis_info, # use blas_opt instead +- 'lapack_mkl': lapack_mkl_info, # use lapack_opt instead +- 'blas_mkl': blas_mkl_info, # use blas_opt instead +- 'accelerate': accelerate_info, # use blas_opt instead +- 'x11': x11_info, ++ cl = {'x11': x11_info, + 'fft_opt': fft_opt_info, + 'fftw': fftw_info, + 'fftw2': fftw2_info, +@@ -731,10 +709,7 @@ class system_info(object): + return [b for b in [a.strip() for a in libs.split(',')] if b] + + def get_libraries(self, key='libraries'): +- if hasattr(self, '_lib_names'): +- return self.get_libs(key, default=self._lib_names) +- else: +- return self.get_libs(key, '') ++ return self.get_libs(key, '') + + def library_extensions(self): + c = customized_ccompiler() +@@ -1685,7 +1660,7 @@ class blas_info(system_info): + lib = self.has_cblas(info) + if lib is not None: + info['language'] = 'c' +- info['libraries'] = [lib] ++ info['libraries'] = lib + info['define_macros'] = [('HAVE_CBLAS', None)] + self.set_info(**info) + +@@ -1717,16 +1692,16 @@ class blas_info(system_info): + # check for cblas lib, and if not present check for blas lib. + try: + c.link_executable(obj, os.path.join(tmpdir, "a.out"), +- libraries=["cblas"], ++ libraries=info["libraries"], + library_dirs=info['library_dirs'], + extra_postargs=info.get('extra_link_args', [])) +- res = "cblas" ++ res = info["libraries"] + except distutils.ccompiler.LinkError: + c.link_executable(obj, os.path.join(tmpdir, "a.out"), + libraries=["blas"], + library_dirs=info['library_dirs'], + extra_postargs=info.get('extra_link_args', [])) +- res = "blas" ++ res = ["blas"] + except distutils.ccompiler.CompileError: + res = None + finally: diff --git a/dev-python/numpy/metadata.xml b/dev-python/numpy/metadata.xml new file mode 100644 index 000000000..289026145 --- /dev/null +++ b/dev-python/numpy/metadata.xml @@ -0,0 +1,23 @@ + + + + + sci@gentoo.org + Gentoo Science Project + + + python@gentoo.org + Python + + + NumPy is a general-purpose array-processing Python package designed to + efficiently manipulate large multi-dimensional arrays of arbitrary + records without sacrificing too much speed for small multi-dimensional + arrays. There are also basic facilities for discrete fourier transform, + basic linear algebra and random number generation. + It is the successor of Numeric and numarray. + + + numpy + + diff --git a/dev-python/numpy/numpy-1.16.5-r1.ebuild b/dev-python/numpy/numpy-1.16.5-r1.ebuild new file mode 100644 index 000000000..8f24e3f6e --- /dev/null +++ b/dev-python/numpy/numpy-1.16.5-r1.ebuild @@ -0,0 +1,239 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="7" + +PYTHON_COMPAT=( python2_7 python3_{6,7} ) +PYTHON_REQ_USE="threads(+)" + +FORTRAN_NEEDED=lapack + +inherit distutils-r1 flag-o-matic fortran-2 multiprocessing toolchain-funcs + +DOC_PV="1.16.4" +DESCRIPTION="Fast array and numerical python library" +HOMEPAGE="https://www.numpy.org" +SRC_URI=" + mirror://pypi/${PN:0:1}/${PN}/${P}.zip + doc? ( + https://numpy.org/doc/$(ver_cut 1-2 ${DOC_PV})/numpy-html.zip -> numpy-html-${DOC_PV}.zip + https://numpy.org/doc/$(ver_cut 1-2 ${DOC_PV})/numpy-ref.pdf -> numpy-ref-${DOC_PV}.pdf + https://numpy.org/doc/$(ver_cut 1-2 ${DOC_PV})/numpy-user.pdf -> numpy-user-${DOC_PV}.pdf + )" +LICENSE="BSD" +SLOT="0" +KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~mips ppc ppc64 s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris" +IUSE="doc lapack test" +RESTRICT="!test? ( test )" + +RDEPEND=" + lapack? ( + virtual/cblas + virtual/lapack + )" +DEPEND="${RDEPEND}" +BDEPEND="app-arch/unzip + dev-python/setuptools[${PYTHON_USEDEP}] + lapack? ( virtual/pkgconfig ) + test? ( + dev-python/pytest[${PYTHON_USEDEP}] + )" + +PATCHES=( + "${FILESDIR}"/${PN}-1.15.4-no-hardcode-blas.patch +) + +src_unpack() { + default + if use doc; then + unzip -qo "${DISTDIR}"/numpy-html-${DOC_PV}.zip -d html || die + fi +} + +pc_incdir() { + $(tc-getPKG_CONFIG) --cflags-only-I $@ | \ + sed -e 's/^-I//' -e 's/[ ]*-I/:/g' -e 's/[ ]*$//' -e 's|^:||' +} + +pc_libdir() { + $(tc-getPKG_CONFIG) --libs-only-L $@ | \ + sed -e 's/^-L//' -e 's/[ ]*-L/:/g' -e 's/[ ]*$//' -e 's|^:||' +} + +pc_libs() { + $(tc-getPKG_CONFIG) --libs-only-l $@ | \ + sed -e 's/[ ]-l*\(pthread\|m\)\([ ]\|$\)//g' \ + -e 's/^-l//' -e 's/[ ]*-l/,/g' -e 's/[ ]*$//' \ + | tr ',' '\n' | sort -u | tr '\n' ',' | sed -e 's|,$||' +} + +python_prepare_all() { + if use lapack; then + append-ldflags "$($(tc-getPKG_CONFIG) --libs-only-other cblas lapack)" + local incdir="${EPREFIX}"/usr/include + local libdir="${EPREFIX}"/usr/$(get_libdir) + cat >> site.cfg <<-EOF || die + [blas] + include_dirs = $(pc_incdir cblas):${incdir} + library_dirs = $(pc_libdir cblas blas):${libdir} + blas_libs = $(pc_libs cblas blas) + [lapack] + library_dirs = $(pc_libdir lapack):${libdir} + lapack_libs = $(pc_libs lapack) + EOF + else + export {ATLAS,PTATLAS,BLAS,LAPACK,MKL}=None + fi + + export CC="$(tc-getCC) ${CFLAGS}" + + append-flags -fno-strict-aliasing + + # See progress in http://projects.scipy.org/scipy/numpy/ticket/573 + # with the subtle difference that we don't want to break Darwin where + # -shared is not a valid linker argument + if [[ ${CHOST} != *-darwin* ]]; then + append-ldflags -shared + fi + + # only one fortran to link with: + # linking with cblas and lapack library will force + # autodetecting and linking to all available fortran compilers + append-fflags -fPIC + if use lapack; then + NUMPY_FCONFIG="config_fc --noopt --noarch" + # workaround bug 335908 + [[ $(tc-getFC) == *gfortran* ]] && NUMPY_FCONFIG+=" --fcompiler=gnu95" + fi + + # don't version f2py, we will handle it. + sed -i -e '/f2py_exe/s: + os\.path.*$::' numpy/f2py/setup.py || die + + # disable fuzzed tests + find numpy/*/tests -name '*.py' -exec sed -i \ + -e 's:def \(.*_fuzz\):def _\1:' {} + || die + # very memory- and disk-hungry + sed -i -e 's:test_large_zip:_&:' numpy/lib/tests/test_io.py || die + + distutils-r1_python_prepare_all +} + +python_compile() { + export MAKEOPTS=-j1 #660754 + + local python_makeopts_jobs="" + python_is_python3 || python_makeopts_jobs="-j $(makeopts_jobs)" + distutils-r1_python_compile \ + ${python_makeopts_jobs} \ + ${NUMPY_FCONFIG} +} + +python_test() { + distutils_install_for_testing --single-version-externally-managed \ + --record "${TMPDIR}/record.txt" ${NUMPY_FCONFIG} + + cd "${TMPDIR}" || die + + "${EPYTHON}" -c " +import numpy, sys +r = numpy.test(label='full', verbose=3) +sys.exit(0 if r else 1)" || die "Tests fail with ${EPYTHON}" +} + +numpy_python_install() { + debug-print-function ${FUNCNAME} "${@}" + + local args=( "${@}" ) + + # enable compilation for the install phase. + local -x PYTHONDONTWRITEBYTECODE= + + # python likes to compile any module it sees, which triggers sandbox + # failures if some packages haven't compiled their modules yet. + addpredict "${EPREFIX}/usr/lib/${EPYTHON}" + addpredict "${EPREFIX}/usr/$(get_libdir)/${EPYTHON}" + addpredict /usr/lib/pypy2.7 + addpredict /usr/lib/pypy3.6 + addpredict /usr/lib/portage/pym + addpredict /usr/local # bug 498232 + + if [[ ! ${DISTUTILS_SINGLE_IMPL} ]]; then + # user may override --install-scripts + # note: this is poor but distutils argv parsing is dumb + local mydistutilsargs=( "${mydistutilsargs[@]}" ) + local scriptdir=${EPREFIX}/usr/bin + + # construct a list of mydistutilsargs[0] args[0] args[1]... + local arg arg_vars + [[ ${mydistutilsargs[@]} ]] && eval arg_vars+=( + 'mydistutilsargs['{0..$(( ${#mydistutilsargs[@]} - 1 ))}']' + ) + [[ ${args[@]} ]] && eval arg_vars+=( + 'args['{0..$(( ${#args[@]} - 1 ))}']' + ) + + set -- "${arg_vars[@]}" + while [[ ${@} ]]; do + local arg_var=${1} + shift + local a=${!arg_var} + + case "${a}" in + --install-scripts=*) + scriptdir=${a#--install-scripts=} + unset "${arg_var}" + ;; + --install-scripts) + scriptdir=${!1} + unset "${arg_var}" "${1}" + shift + ;; + esac + done + fi + + local root=${D%/}/_${EPYTHON} + [[ ${DISTUTILS_SINGLE_IMPL} ]] && root=${D%/} + + esetup.py install --root="${root}" "${args[@]}" + + local forbidden_package_names=( examples test tests .pytest_cache ) + local p + for p in "${forbidden_package_names[@]}"; do + if [[ -d ${root}$(python_get_sitedir)/${p} ]]; then + die "Package installs '${p}' package which is forbidden and likely a bug in the build system." + fi + done + + local shopt_save=$(shopt -p nullglob) + shopt -s nullglob + local pypy_dirs=( + "${root}/usr/$(get_libdir)"/pypy*/share + "${root}/usr/lib"/pypy*/share + ) + ${shopt_save} + + if [[ -n ${pypy_dirs} ]]; then + die "Package installs 'share' in PyPy prefix, see bug #465546." + fi + + if [[ ! ${DISTUTILS_SINGLE_IMPL} ]]; then + _distutils-r1_wrap_scripts "${root}" "${scriptdir}" + multibuild_merge_root "${root}" "${D%/}" + fi +} + +python_install() { + numpy_python_install ${NUMPY_FCONFIG} +} + +python_install_all() { + local DOCS=( THANKS.txt ) + + if use doc; then + local HTML_DOCS=( "${WORKDIR}"/html/. ) + DOCS+=( "${DISTDIR}"/${PN}-{user,ref}-${DOC_PV}.pdf ) + fi + + distutils-r1_python_install_all +} diff --git a/dev-util/catfish/Manifest b/dev-util/catfish/Manifest new file mode 100644 index 000000000..efdc9cb7b --- /dev/null +++ b/dev-util/catfish/Manifest @@ -0,0 +1 @@ +DIST catfish-1.4.13.tar.bz2 221999 BLAKE2B b487947954832c691a5a1b3bd2a49e7ae1aedecbe2084b86b9ae1c8bd7c95f6d3746f80723d351bed3abac0e2396fcce134072345a908f5ba9f0dfebdd95108f SHA512 a90c695e7c1a2172ea7a5f7f1a292e95aa290693a24f3988a68f2fb4597183ff7526c98925fb3ef8517fbca508a1c3853e0de87ec023be9424d994d63e29c886 diff --git a/dev-util/catfish/catfish-1.4.13-r1.ebuild b/dev-util/catfish/catfish-1.4.13-r1.ebuild new file mode 100644 index 000000000..9c24e51b7 --- /dev/null +++ b/dev-util/catfish/catfish-1.4.13-r1.ebuild @@ -0,0 +1,132 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +DISTUTILS_USE_SETUPTOOLS=no +PYTHON_COMPAT=( python3_{6,7,8} ) + +inherit distutils-r1 xdg-utils + +DESCRIPTION="A frontend for find, (s)locate, doodle, tracker, beagle, strigi and pinot" +HOMEPAGE="https://docs.xfce.org/apps/catfish/start" +SRC_URI="https://archive.xfce.org/src/apps/catfish/${PV%.*}/${P}.tar.bz2" + +# yep, GPL-2 only +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="amd64 ~ppc x86" + +RDEPEND=" + dev-libs/gobject-introspection + dev-python/dbus-python[${PYTHON_USEDEP}] + dev-python/pexpect[${PYTHON_USEDEP}] + dev-python/pygobject:3[${PYTHON_USEDEP}] + x11-libs/gdk-pixbuf[introspection] + x11-libs/gtk+:3[introspection] + x11-libs/pango[introspection] + virtual/freedesktop-icon-theme +" +BDEPEND=" + dev-python/python-distutils-extra[${PYTHON_USEDEP}] + sys-devel/gettext +" + +catfish_python_install() { + debug-print-function ${FUNCNAME} "${@}" + + local args=( "${@}" ) + + # enable compilation for the install phase. + local -x PYTHONDONTWRITEBYTECODE= + + # python likes to compile any module it sees, which triggers sandbox + # failures if some packages haven't compiled their modules yet. + addpredict "${EPREFIX}/usr/lib/${EPYTHON}" + addpredict "${EPREFIX}/usr/$(get_libdir)/${EPYTHON}" + addpredict /usr/lib/pypy2.7 + addpredict /usr/lib/pypy3.6 + addpredict /usr/lib/portage/pym + addpredict /usr/local # bug 498232 + + if [[ ! ${DISTUTILS_SINGLE_IMPL} ]]; then + # user may override --install-scripts + # note: this is poor but distutils argv parsing is dumb + local mydistutilsargs=( "${mydistutilsargs[@]}" ) + local scriptdir=${EPREFIX}/usr/bin + + # construct a list of mydistutilsargs[0] args[0] args[1]... + local arg arg_vars + [[ ${mydistutilsargs[@]} ]] && eval arg_vars+=( + 'mydistutilsargs['{0..$(( ${#mydistutilsargs[@]} - 1 ))}']' + ) + [[ ${args[@]} ]] && eval arg_vars+=( + 'args['{0..$(( ${#args[@]} - 1 ))}']' + ) + + set -- "${arg_vars[@]}" + while [[ ${@} ]]; do + local arg_var=${1} + shift + local a=${!arg_var} + + case "${a}" in + --install-scripts=*) + scriptdir=${a#--install-scripts=} + unset "${arg_var}" + ;; + --install-scripts) + scriptdir=${!1} + unset "${arg_var}" "${1}" + shift + ;; + esac + done + fi + + local root=${D%/}/_${EPYTHON} + [[ ${DISTUTILS_SINGLE_IMPL} ]] && root=${D%/} + + esetup.py install --root="${root}" "${args[@]}" + + local forbidden_package_names=( examples test tests .pytest_cache ) + local p + for p in "${forbidden_package_names[@]}"; do + if [[ -d ${root}$(python_get_sitedir)/${p} ]]; then + die "Package installs '${p}' package which is forbidden and likely a bug in the build system." + fi + done + + local shopt_save=$(shopt -p nullglob) + shopt -s nullglob + local pypy_dirs=( + "${root}/usr/$(get_libdir)"/pypy*/share + "${root}/usr/lib"/pypy*/share + ) + ${shopt_save} + + if [[ -n ${pypy_dirs} ]]; then + die "Package installs 'share' in PyPy prefix, see bug #465546." + fi + + if [[ ! ${DISTUTILS_SINGLE_IMPL} ]]; then + _distutils-r1_wrap_scripts "${root}" "${scriptdir}" + multibuild_merge_root "${root}" "${D%/}" + fi +} + +python_install() { + catfish_python_install + python_optimize + rm -r "${ED}"/usr/share/doc/catfish || die +} + +pkg_postinst() { + xdg_icon_cache_update + xdg_desktop_database_update +} + +pkg_postrm() { + xdg_icon_cache_update + xdg_desktop_database_update +} diff --git a/dev-util/catfish/metadata.xml b/dev-util/catfish/metadata.xml new file mode 100644 index 000000000..bbf3b7c24 --- /dev/null +++ b/dev-util/catfish/metadata.xml @@ -0,0 +1,7 @@ + + + + + xfce@gentoo.org + +