diff --git a/libtalloc.spec b/libtalloc.spec index a82eb61..2feaf5f 100644 --- a/libtalloc.spec +++ b/libtalloc.spec @@ -6,7 +6,7 @@ Name: libtalloc Version: 2.1.9 -Release: 1%{?dist} +Release: 2%{?dist} Group: System Environment/Daemons Summary: The talloc library License: LGPLv3+ @@ -24,6 +24,7 @@ BuildRequires: doxygen Provides: bundled(libreplace) # Patches +Patch0: talloc-2.1.10-use-the-system-pytalloc-util-for-python3-as-w.patch %description A library that implements a hierarchical allocator with destructors. @@ -81,7 +82,7 @@ Development libraries for python3-talloc %endif %prep -%setup -q -n talloc-%{version} +%autosetup -n talloc-%{version} -p1 %build @@ -136,6 +137,7 @@ cp -a doc/man/* $RPM_BUILD_ROOT/%{_mandir} %defattr(-,root,root,-) %{_includedir}/pytalloc.h %{_libdir}/pkgconfig/pytalloc-util.pc +%{_libdir}/pkgconfig/pytalloc-util.cpython-*.pc %{_libdir}/libpytalloc-util.so %if 0%{?with_python3} @@ -164,6 +166,9 @@ cp -a doc/man/* $RPM_BUILD_ROOT/%{_mandir} %endif %changelog +* Thu Jul 06 2017 Andreas Schneider - 2.1.9-2 +- Install pytalloc-util for python3 as well + * Tue Feb 28 2017 Lukas Slebodnik - 2.1.9-1 - rhbz#1427352 New upstream release - 2.1.9 - rhbz#1401225 - Rename python packages to match packaging guidelines diff --git a/talloc-2.1.10-use-the-system-pytalloc-util-for-python3-as-w.patch b/talloc-2.1.10-use-the-system-pytalloc-util-for-python3-as-w.patch new file mode 100644 index 0000000..0eff6d8 --- /dev/null +++ b/talloc-2.1.10-use-the-system-pytalloc-util-for-python3-as-w.patch @@ -0,0 +1,205 @@ +From f5cafee0c7a96396798d2b229ff3f9dced1d74f3 Mon Sep 17 00:00:00 2001 +From: Andrew Bartlett +Date: Mon, 6 Mar 2017 19:25:13 +1300 +Subject: [PATCH] talloc: use the system pytalloc-util for python3 as well + +This involves installing a .pc file for the python3 library as well + +To get the .pc file generated and installed is quite a mission, we +have to rework the talloc build system to ensure that the second 'env' +created for EXTRA_PYTHON has everything set up on it, the +TALLOC_VERSION in particular. + +Signed-off-by: Andrew Bartlett +Reviewed-by: Douglas Bagnall + +Incorportaing fixes by Petr Viktorin + +Signed-off-by: Petr Viktorin +--- + buildtools/wafsamba/pkgconfig.py | 12 ++++++---- + buildtools/wafsamba/samba_python.py | 2 ++ + buildtools/wafsamba/wafsamba.py | 9 +++++--- + lib/talloc/pytalloc-util.pc.in | 4 ++-- + lib/talloc/wscript | 44 +++++++++++++++++++++++++------------ + 5 files changed, 48 insertions(+), 23 deletions(-) + +diff --git a/buildtools/wafsamba/pkgconfig.py b/buildtools/wafsamba/pkgconfig.py +index 25cec78..999bad4 100644 +--- a/buildtools/wafsamba/pkgconfig.py ++++ b/buildtools/wafsamba/pkgconfig.py +@@ -38,16 +38,20 @@ def subst_at_vars(task): + return 0 + + +-def PKG_CONFIG_FILES(bld, pc_files, vnum=None): ++def PKG_CONFIG_FILES(bld, pc_files, vnum=None, extra_name=None): + '''install some pkg_config pc files''' + dest = '${PKGCONFIGDIR}' + dest = bld.EXPAND_VARIABLES(dest) + for f in TO_LIST(pc_files): +- base=os.path.basename(f) ++ if extra_name: ++ target = f.split('.pc')[0] + extra_name + ".pc" ++ else: ++ target = f ++ base=os.path.basename(target) + t = bld.SAMBA_GENERATOR('PKGCONFIG_%s' % base, + rule=subst_at_vars, + source=f+'.in', +- target=f) ++ target=target) + bld.add_manual_dependency(bld.path.find_or_declare(f), bld.env['PREFIX']) + t.vars = [] + if t.env.RPATH_ON_INSTALL: +@@ -58,7 +62,7 @@ def PKG_CONFIG_FILES(bld, pc_files, vnum=None): + t.env.PACKAGE_VERSION = vnum + for v in [ 'PREFIX', 'EXEC_PREFIX', 'LIB_RPATH' ]: + t.vars.append(t.env[v]) +- bld.INSTALL_FILES(dest, f, flat=True, destname=base) ++ bld.INSTALL_FILES(dest, target, flat=True, destname=base) + Build.BuildContext.PKG_CONFIG_FILES = PKG_CONFIG_FILES + + +diff --git a/buildtools/wafsamba/samba_python.py b/buildtools/wafsamba/samba_python.py +index 057a017..bba059e 100644 +--- a/buildtools/wafsamba/samba_python.py ++++ b/buildtools/wafsamba/samba_python.py +@@ -75,6 +75,8 @@ def _check_python_headers(conf, mandatory): + conf.env['PYTHON_SO_ABI_FLAG'] = abi_pattern % '' + else: + conf.env['PYTHON_SO_ABI_FLAG'] = '' ++ conf.env['PYTHON_LIBNAME_SO_ABI_FLAG'] = ( ++ conf.env['PYTHON_SO_ABI_FLAG'].replace('_', '-')) + + + def SAMBA_PYTHON(bld, name, +diff --git a/buildtools/wafsamba/wafsamba.py b/buildtools/wafsamba/wafsamba.py +index 4a47dbf..137cb0e 100644 +--- a/buildtools/wafsamba/wafsamba.py ++++ b/buildtools/wafsamba/wafsamba.py +@@ -144,7 +144,7 @@ def SAMBA_LIBRARY(bld, libname, source, + '''define a Samba library''' + + if pyembed and bld.env['IS_EXTRA_PYTHON']: +- public_headers = pc_files = None ++ public_headers = None + + if private_library and public_headers: + raise Utils.WafError("private library '%s' must not have public header files" % +@@ -225,7 +225,7 @@ def SAMBA_LIBRARY(bld, libname, source, + if vnum is None and soname is None: + raise Utils.WafError("public library '%s' must have a vnum" % + libname) +- if pc_files is None and not bld.env['IS_EXTRA_PYTHON']: ++ if pc_files is None: + raise Utils.WafError("public library '%s' must have pkg-config file" % + libname) + if public_headers is None and not bld.env['IS_EXTRA_PYTHON']: +@@ -328,7 +328,10 @@ def SAMBA_LIBRARY(bld, libname, source, + t.link_name = link_name + + if pc_files is not None and not private_library: +- bld.PKG_CONFIG_FILES(pc_files, vnum=vnum) ++ if pyembed and bld.env['IS_EXTRA_PYTHON']: ++ bld.PKG_CONFIG_FILES(pc_files, vnum=vnum, extra_name=bld.env['PYTHON_SO_ABI_FLAG']) ++ else: ++ bld.PKG_CONFIG_FILES(pc_files, vnum=vnum) + + if (manpages is not None and 'XSLTPROC_MANPAGES' in bld.env and + bld.env['XSLTPROC_MANPAGES']): +diff --git a/lib/talloc/pytalloc-util.pc.in b/lib/talloc/pytalloc-util.pc.in +index b87c94e..06f83e2 100644 +--- a/pytalloc-util.pc.in ++++ b/pytalloc-util.pc.in +@@ -3,9 +3,9 @@ exec_prefix=@exec_prefix@ + libdir=@libdir@ + includedir=@includedir@ + +-Name: pytalloc-util ++Name: pytalloc-util@PYTHON_SO_ABI_FLAG@ + Description: Utility functions for using talloc objects with Python + Version: @TALLOC_VERSION@ +-Libs: @LIB_RPATH@ -L${libdir} -lpytalloc-util@PYTHON_SO_ABI_FLAG@ ++Libs: @LIB_RPATH@ -L${libdir} -lpytalloc-util@PYTHON_LIBNAME_SO_ABI_FLAG@ + Cflags: -I${includedir} + URL: http://talloc.samba.org/ +diff --git a/lib/talloc/wscript b/lib/talloc/wscript +index 7f9bad7..af93910 100644 +--- a/wscript ++++ b/wscript +@@ -48,20 +48,24 @@ def configure(conf): + + conf.env.disable_python = getattr(Options.options, 'disable_python', False) + +- if not conf.env.standalone_talloc: +- if conf.CHECK_BUNDLED_SYSTEM_PKG('talloc', minversion=VERSION, +- implied_deps='replace'): +- conf.define('USING_SYSTEM_TALLOC', 1) +- if conf.CHECK_BUNDLED_SYSTEM_PKG('pytalloc-util', minversion=VERSION, +- implied_deps='talloc replace'): +- conf.define('USING_SYSTEM_PYTALLOC_UTIL', 1) +- + conf.env.TALLOC_COMPAT1 = False + if conf.env.standalone_talloc: + conf.env.TALLOC_COMPAT1 = Options.options.TALLOC_COMPAT1 ++ conf.env.PKGCONFIGDIR = '${LIBDIR}/pkgconfig' ++ conf.env.TALLOC_VERSION = VERSION + + conf.CHECK_XSLTPROC_MANPAGES() + ++ conf.CHECK_HEADERS('sys/auxv.h') ++ conf.CHECK_FUNCS('getauxval') ++ ++ conf.SAMBA_CONFIG_H() ++ ++ conf.SAMBA_CHECK_UNDEFINED_SYMBOL_FLAGS() ++ ++ # We need to set everything non-python up before here, because ++ # SAMBA_CHECK_PYTHON makes a copy of conf and we need it set up correctly ++ + if not conf.env.disable_python: + # also disable if we don't have the python libs installed + conf.SAMBA_CHECK_PYTHON(mandatory=False, version=(2,4,2)) +@@ -70,20 +74,32 @@ def configure(conf): + Logs.warn('Disabling pytalloc-util as python devel libs not found') + conf.env.disable_python = True + +- conf.CHECK_HEADERS('sys/auxv.h') +- conf.CHECK_FUNCS('getauxval') ++ if not conf.env.standalone_talloc: ++ if conf.CHECK_BUNDLED_SYSTEM_PKG('talloc', minversion=VERSION, ++ implied_deps='replace'): ++ conf.define('USING_SYSTEM_TALLOC', 1) + +- conf.SAMBA_CONFIG_H() ++ using_system_pytalloc_util = True ++ if not conf.CHECK_BUNDLED_SYSTEM_PKG('pytalloc-util', minversion=VERSION, ++ implied_deps='talloc replace'): ++ using_system_pytalloc_util = False + +- conf.SAMBA_CHECK_UNDEFINED_SYMBOL_FLAGS() ++ # We need to get a pytalloc-util for all the python versions ++ # we are building for ++ if conf.env['EXTRA_PYTHON']: ++ name = 'pytalloc-util' + conf.all_envs['extrapython']['PYTHON_SO_ABI_FLAG'] ++ if not conf.CHECK_BUNDLED_SYSTEM_PKG(name, minversion=VERSION, ++ implied_deps='talloc replace'): ++ using_system_pytalloc_util = False ++ ++ if using_system_pytalloc_util: ++ conf.define('USING_SYSTEM_PYTALLOC_UTIL', 1) + + + def build(bld): + bld.RECURSE('lib/replace') + + if bld.env.standalone_talloc: +- bld.env.PKGCONFIGDIR = '${LIBDIR}/pkgconfig' +- bld.env.TALLOC_VERSION = VERSION + private_library = False + + # should we also install the symlink to libtalloc1.so here? +-- +2.9.3 +