diff options
author | 2023-08-23 22:48:51 +0100 | |
---|---|---|
committer | 2023-08-23 23:17:11 +0100 | |
commit | 48fad51b53b9aa4dacb87dabbd99c4772f680f0c (patch) | |
tree | b3f9fb7fc0b548fe3b5202682e5acfcf587323a9 /app-misc/gramps | |
parent | dev-lang/eisl: bump to 3.45 (diff) | |
download | gentoo-48fad51b53b9aa4dacb87dabbd99c4772f680f0c.tar.gz gentoo-48fad51b53b9aa4dacb87dabbd99c4772f680f0c.tar.bz2 gentoo-48fad51b53b9aa4dacb87dabbd99c4772f680f0c.zip |
app-misc/gramps: switch to PEP-517 build mode
Uses backported upstream refactoring of setup.py from distutils to
setuptools.
Bug: https://bugs.gentoo.org/909880
Signed-off-by: Marek Szuba <marecki@gentoo.org>
Diffstat (limited to 'app-misc/gramps')
-rw-r--r-- | app-misc/gramps/files/gramps-5.1.6-pep517_setup.patch | 163 | ||||
-rw-r--r-- | app-misc/gramps/gramps-5.1.6-r2.ebuild | 82 |
2 files changed, 245 insertions, 0 deletions
diff --git a/app-misc/gramps/files/gramps-5.1.6-pep517_setup.patch b/app-misc/gramps/files/gramps-5.1.6-pep517_setup.patch new file mode 100644 index 000000000000..7853b23ba1b8 --- /dev/null +++ b/app-misc/gramps/files/gramps-5.1.6-pep517_setup.patch @@ -0,0 +1,163 @@ +--- a/setup.py ++++ b/setup.py +@@ -23,7 +23,7 @@ + # + + ''' +-Gramps distutils module. ++Gramps setuptools module. + ''' + + #check python version first +@@ -32,11 +32,11 @@ + if sys.version_info < (3, 2): + raise SystemExit("Gramps requires Python 3.2 or later.") + +-from distutils import log +-from distutils.core import setup, Command +-from distutils.util import convert_path, newer +-from distutils.command.build import build as _build +-from distutils.command.install import install as _install ++from setuptools import setup, Command ++try: ++ from setuptools.command.build import build as _build ++except ImportError: ++ from distutils.command.build import build as _build + import os + import glob + import codecs +@@ -45,6 +45,9 @@ + from gramps.version import VERSION + import unittest + import argparse ++import logging ++ ++_LOG = logging.getLogger(".setup") + + # this list MUST be a subset of _LOCALE_NAMES in gen/utils/grampslocale.py + # (that is, if you add a new language here, be sure it's in _LOCALE_NAMES too) +@@ -75,6 +78,17 @@ + packaging = True + sys.argv = [sys.argv[0]] + passthrough + ++def newer(source, target): ++ ''' ++ Determines if a target file needs to be rebuilt. ++ ++ Returns True if the target file doesn't exist or if the source file is ++ newer than the target file. ++ ''' ++ if not os.path.exists(target): ++ return True ++ return os.path.getmtime(source) > os.path.getmtime(target) ++ + def intltool_version(): + ''' + Return the version of intltool as a tuple. +@@ -140,7 +154,7 @@ + reply = input(ask) + if reply in ['n', 'N']: + raise SystemExit(msg) +- log.info('Compiling %s >> %s', po_file, mo_file) ++ _LOG.info('Compiling %s >> %s', po_file, mo_file) + + #linux specific piece: + target = 'share/locale/' + lang + '/LC_MESSAGES' +@@ -179,7 +193,7 @@ + with open(newfile, 'rb') as f_in,\ + gzip.open(man_file_gz, 'wb') as f_out: + f_out.writelines(f_in) +- log.info('Compiling %s >> %s', filename, man_file_gz) ++ _LOG.info('Compiling %s >> %s', filename, man_file_gz) + + os.remove(newfile) + filename = False +@@ -193,30 +207,26 @@ + ''' + Merge translation files into desktop and mime files + ''' +- for filename in _FILES: +- filename = convert_path(filename) +- strip_files(filename + '.in', filename, ['_tip', '_name']) +- + i_v = intltool_version() + if i_v is None or i_v < (0, 25, 0): +- log.info('No intltool or version < 0.25.0, build_intl is aborting') ++ _LOG.info('No intltool or version < 0.25.0, build_intl is aborting') + return + data_files = build_cmd.distribution.data_files + base = build_cmd.build_base + +- merge_files = (('data/gramps.desktop', 'share/applications', '-d'), +- ('data/gramps.keys', 'share/mime-info', '-k'), +- ('data/gramps.xml', 'share/mime/packages', '-x'), +- ('data/gramps.appdata.xml', 'share/metainfo', '-x')) ++ merge_files = (('gramps.desktop', 'share/applications', '-d'), ++ ('gramps.keys', 'share/mime-info', '-k'), ++ ('gramps.xml', 'share/mime/packages', '-x'), ++ ('gramps.appdata.xml', 'share/metainfo', '-x')) + + for filename, target, option in merge_files: +- filenamelocal = convert_path(filename) ++ filenamelocal = os.path.join('data', filename) + newfile = os.path.join(base, filenamelocal) + newdir = os.path.dirname(newfile) + if not(os.path.isdir(newdir) or os.path.islink(newdir)): + os.makedirs(newdir) + merge(filenamelocal + '.in', newfile, option) +- data_files.append((target, [base + '/' + filename])) ++ data_files.append((target, [base + '/data/' + filename])) + + def strip_files(in_file, out_file, mark): + ''' +@@ -232,7 +242,7 @@ + line = line.replace(marker, marker[1:]) + fb.write(line) + old.close() +- log.info('Compiling %s >> %s', in_file, out_file) ++ _LOG.info('Compiling %s >> %s', in_file, out_file) + + def merge(in_file, out_file, option, po_dir='po', cache=True): + ''' +@@ -262,7 +272,7 @@ + msg = ('ERROR: %s was not merged into the translation files!\n' % + out_file) + raise SystemExit(msg) +- log.info('Compiling %s >> %s', in_file, out_file) ++ _LOG.info('Compiling %s >> %s', in_file, out_file) + + class build(_build): + """Custom build command.""" +@@ -273,22 +283,6 @@ + build_intl(self) + _build.run(self) + +-class install(_install): +- """Custom install command.""" +- def run(self): +- resource_file = os.path.join(os.path.dirname(__file__), 'gramps', 'gen', +- 'utils', 'resource-path') +- with open(resource_file, 'w', encoding='utf-8', errors='strict') as fp: +- if packaging: +- path = resource_path +- else: +- path = os.path.abspath(os.path.join(self.install_data, 'share')) +- fp.write(path) +- +- _install.run(self) +- +- os.remove(resource_file) +- + class test(Command): + """Command to run Gramps unit tests""" + description = "run all unit tests" +@@ -503,7 +497,7 @@ + url = 'http://gramps-project.org', + license = 'GPL v2 or greater', + platforms = ['FreeBSD', 'Linux', 'MacOS', 'Windows'], +- cmdclass = {'build': build, 'install': install, 'test': test}, ++ cmdclass = {'build': build, 'test': test}, + packages = packages, + package_data = {'gramps': package_data}, + data_files = data_files, +Binary files a/.setup.py.swp and b/.setup.py.swp differ diff --git a/app-misc/gramps/gramps-5.1.6-r2.ebuild b/app-misc/gramps/gramps-5.1.6-r2.ebuild new file mode 100644 index 000000000000..21e33b40891f --- /dev/null +++ b/app-misc/gramps/gramps-5.1.6-r2.ebuild @@ -0,0 +1,82 @@ +# Copyright 2001-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_SINGLE_IMPL=1 +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{10..11} ) +PYTHON_REQ_USE="sqlite" + +inherit distutils-r1 xdg-utils + +DESCRIPTION="Community genealogy program aiming to be both intuitive and feature-complete" +HOMEPAGE="https://gramps-project.org/" +SRC_URI="https://github.com/gramps-project/${PN}/archive/v${PV}.tar.gz + -> ${P}.tar.gz" + +LICENSE="GPL-2+" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="exif geo postscript +rcs +reports spell test" + +# Many tests fail unless the deprecated BerkeleyDB back-end is enabled. +RESTRICT="test" + +RDEPEND=" + $(python_gen_cond_dep ' + dev-python/pycairo[${PYTHON_USEDEP}] + >=dev-python/pygobject-3.12:3[cairo,${PYTHON_USEDEP}] + dev-python/pyicu[${PYTHON_USEDEP}] + exif? ( >=media-libs/gexiv2-0.5[${PYTHON_USEDEP},introspection] ) + ') + gnome-base/librsvg:2 + >x11-libs/gtk+-3.14.8:3[introspection] + x11-libs/pango[introspection] + x11-misc/xdg-utils + geo? ( >=sci-geosciences/osm-gps-map-1.1.0 ) + spell? ( app-text/gtkspell:3[introspection] ) + rcs? ( dev-vcs/rcs ) + reports? ( media-gfx/graphviz[postscript?] ) +" +BDEPEND="test? ( + $(python_gen_cond_dep ' + dev-python/jsonschema[${PYTHON_USEDEP}] + dev-python/lxml[${PYTHON_USEDEP}] + ') +)" + +PATCHES=( + "${FILESDIR}"/${PN}-5.1.3-test_locale.patch + "${FILESDIR}"/${PN}-5.1.6-pep517_setup.patch +) + +DISTUTILS_ARGS="--no-compress-manpages" + +distutils_enable_tests pytest + +src_prepare() { + # Install documentation to the proper location. This can't be done + # easily with a patch because we substitute in the ${PF} variable, + # and that changes with every revision. + sed -i -e "s:share/doc/gramps:share/doc/${PF}:g" setup.py || die + + # The final part of PEP-517 support, handled with sed in order to avoid + # making the patch file too large + sed -e "s:_name:name:g" data/holidays.xml.in > data/holidays.xml || die + sed -e "s:_tip:tip:g" data/tips.xml.in > data/tips.xml || die + + default +} + +pkg_postinst() { + xdg_desktop_database_update + xdg_icon_cache_update + xdg_mimeinfo_database_update +} + +pkg_postrm() { + xdg_desktop_database_update + xdg_icon_cache_update + xdg_mimeinfo_database_update +} |