Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-fasttext for openSUSE:Factory checked in at 2024-10-12 13:24:38 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-fasttext (Old) and /work/SRC/openSUSE:Factory/.python-fasttext.new.19354 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-fasttext" Sat Oct 12 13:24:38 2024 rev:5 rq:1207017 version:0.9.2 Changes: -------- --- /work/SRC/openSUSE:Factory/python-fasttext/python-fasttext.changes 2023-04-22 22:01:58.817761650 +0200 +++ /work/SRC/openSUSE:Factory/.python-fasttext.new.19354/python-fasttext.changes 2024-10-12 13:24:41.225694312 +0200 @@ -1,0 +2,12 @@ +Thu Oct 10 05:20:36 UTC 2024 - Jiri Slaby <jsl...@suse.cz> + +- switch to cmake + ninja + * the former builds a proper lib +- package the shared library, fasttext binary and -devel properly + (create new %package's for those) +- add patches to fit our needs: + * no-static-lib.patch + * proper-lib-dir.patch + * py-link-against-shared.patch + +------------------------------------------------------------------- New: ---- no-static-lib.patch proper-lib-dir.patch py-link-against-shared.patch BETA DEBUG BEGIN: New:- add patches to fit our needs: * no-static-lib.patch * proper-lib-dir.patch New: * no-static-lib.patch * proper-lib-dir.patch * py-link-against-shared.patch New: * proper-lib-dir.patch * py-link-against-shared.patch BETA DEBUG END: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-fasttext.spec ++++++ --- /var/tmp/diff_new_pack.A8mQBQ/_old 2024-10-12 13:24:43.769799750 +0200 +++ /var/tmp/diff_new_pack.A8mQBQ/_new 2024-10-12 13:24:43.781800247 +0200 @@ -1,7 +1,7 @@ # # spec file for package python-fasttext # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,8 +16,8 @@ # -%{?!python_module:%define python_module() python-%{**} python3-%{**}} %define modname fastText +%define sover 0 # Using annotation futures and dataclasses %define skip_python36 1 %{?sle15_python_module_pythons} @@ -30,12 +30,17 @@ Source: https://github.com/facebookresearch/%{modname}/archive/refs/tags/v%{version}.tar.gz#/%{modname}-%{version}.tar.gz Patch0: reproducible.patch Patch1: gcc13-fix.patch +Patch2: no-static-lib.patch +Patch3: proper-lib-dir.patch +Patch4: py-link-against-shared.patch BuildRequires: %{python_module devel} BuildRequires: %{python_module pip} BuildRequires: %{python_module pybind11-devel} BuildRequires: %{python_module setuptools} BuildRequires: %{python_module wheel} +BuildRequires: cmake BuildRequires: gcc-c++ +BuildRequires: ninja BuildRequires: python-rpm-macros # SECTION test requirements BuildRequires: %{python_module numpy} @@ -43,17 +48,44 @@ BuildRequires: %{python_module setuptools >= 0.7.0} # /SECTION BuildRequires: fdupes +Requires: fasttext Requires: python-numpy Requires: python-pybind11 >= 2.2 Requires: python-setuptools >= 0.7.0 -Requires(post): update-alternatives -Requires(postun):update-alternatives %python_subpackages %description fastText is a library for efficient learning of word representations and sentence classification. +%package -n fasttext +Summary: Fast text representation and classification + +%description -n fasttext +fastText is a library for efficient learning of word +representations and sentence classification. + +This package provides the fasttext binary. + +%package -n fasttext-devel +Summary: Development files for fasttext +Requires: libfasttext%{sover} + +%description -n fasttext-devel +fastText is a library for efficient learning of word +representations and sentence classification. + +This package provides the fasttext library development files. + +%package -n libfasttext%{sover} +Summary: Library for fast text representation and classification + +%description -n libfasttext%{sover} +fastText is a library for efficient learning of word +representations and sentence classification. + +This package provides the fasttext library. + %prep %autosetup -p1 -n %{modname}-%{version} @@ -61,34 +93,45 @@ python/fasttext_module/fasttext/util/util.py %build -export CXXFLAGS="%{optflags}" CFLAGS="%{optflags}" -%make_build +pushd . +%define __builddir build-cmake +%define __builder ninja +%cmake +%cmake_build +popd +export LDFLAGS=-L%{__builddir} %pyproject_wheel %install +%cmake_install %pyproject_install %{python_expand : -install -Dpm 0755 fasttext %{buildroot}%{_bindir}/fasttext -%python_clone -a %{buildroot}%{_bindir}/fasttext %fdupes %{buildroot}%{$python_sitearch} } %check # Tests require 300+MB test data -%post -%python_install_alternative fasttext - -%postun -%python_uninstall_alternative fasttext +%ldconfig_scriptlets -n libfasttext%{sover} %files %{python_files} -%doc README.md docs/ %license LICENSE -# fasttext.pc.in -%python_alternative %{_bindir}/fasttext %{python_sitearch}/fasttext %{python_sitearch}/fasttext-%{version}*-info %{python_sitearch}/fasttext_pybind.*.so +%files -n fasttext +%doc README.md docs/ +%license LICENSE +%{_bindir}/fasttext + +%files -n fasttext-devel +%dir %{_includedir}/fasttext +%{_includedir}/fasttext/*.h +%{_libdir}/libfasttext.so +%{_libdir}/pkgconfig/fasttext.pc + +%files -n libfasttext%{sover} +%{_libdir}/libfasttext.so.%{sover} + ++++++ no-static-lib.patch ++++++ From: Jiri Slaby <jsl...@suse.cz> Subject: [PATCH] no static lib Patch-mainline: no We do not want those. Link against shared instead. --- CMakeLists.txt | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,22 +57,13 @@ if (NOT MSVC) endif() add_library(fasttext-shared SHARED ${SOURCE_FILES} ${HEADER_FILES}) -add_library(fasttext-static STATIC ${SOURCE_FILES} ${HEADER_FILES}) -add_library(fasttext-static_pic STATIC ${SOURCE_FILES} ${HEADER_FILES}) set_target_properties(fasttext-shared PROPERTIES OUTPUT_NAME fasttext SOVERSION "${fasttext_VERSION_MAJOR}") -set_target_properties(fasttext-static PROPERTIES OUTPUT_NAME fasttext) -set_target_properties(fasttext-static_pic PROPERTIES OUTPUT_NAME fasttext_pic - POSITION_INDEPENDENT_CODE True) add_executable(fasttext-bin src/main.cc) -target_link_libraries(fasttext-bin pthread fasttext-static) +target_link_libraries(fasttext-bin pthread fasttext-shared) set_target_properties(fasttext-bin PROPERTIES PUBLIC_HEADER "${HEADER_FILES}" OUTPUT_NAME fasttext) install (TARGETS fasttext-shared LIBRARY DESTINATION lib) -install (TARGETS fasttext-static - ARCHIVE DESTINATION lib) -install (TARGETS fasttext-static_pic - ARCHIVE DESTINATION lib) install (TARGETS fasttext-bin RUNTIME DESTINATION bin PUBLIC_HEADER DESTINATION include/fasttext) ++++++ proper-lib-dir.patch ++++++ From: Jiri Slaby <jsl...@suse.cz> Subject: [PATCH] proper lib dir Patch-mainline: no Do not install to /usr/lib. Use CMAKE_INSTALL_LIBDIR instead (lib64 on 64bit). Actually use CMAKE_INSTALL_* everywhere. --- CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -63,7 +63,7 @@ add_executable(fasttext-bin src/main.cc) target_link_libraries(fasttext-bin pthread fasttext-shared) set_target_properties(fasttext-bin PROPERTIES PUBLIC_HEADER "${HEADER_FILES}" OUTPUT_NAME fasttext) install (TARGETS fasttext-shared - LIBRARY DESTINATION lib) + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) install (TARGETS fasttext-bin - RUNTIME DESTINATION bin - PUBLIC_HEADER DESTINATION include/fasttext) + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/fasttext) ++++++ py-link-against-shared.patch ++++++ From: Jiri Slaby <jsl...@suse.cz> Subject: [PATCH] py: link against shared Patch-mainline: no Link the python bindings to the now present libfasttext.so. It reduces the duplication as well as the compilation time. --- setup.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) --- a/setup.py +++ b/setup.py @@ -54,19 +54,13 @@ else: del sys.argv[coverage_index] coverage = True -fasttext_src_files = map(str, os.listdir(FASTTEXT_SRC)) -fasttext_src_cc = list(filter(lambda x: x.endswith('.cc'), fasttext_src_files)) - -fasttext_src_cc = list( - map(lambda x: str(os.path.join(FASTTEXT_SRC, x)), fasttext_src_cc) -) - ext_modules = [ Extension( str('fasttext_pybind'), [ str('python/fasttext_module/fasttext/pybind/fasttext_pybind.cc'), - ] + fasttext_src_cc, + ], + libraries=[str('fasttext')], include_dirs=[ # Path to pybind11 headers get_pybind_include(),