From 8c2bff53f64fff59de20644ae94e7110f9e13a6a Mon Sep 17 00:00:00 2001 From: Gregory Hellings Date: Mon, 14 Dec 2020 14:45:27 -0600 Subject: [PATCH] Restore PERL bindings --- cmake-perl-bindings.diff | 105 +++++++++++++++++++++++++++++++++++++++ sword.spec | 30 ++++++----- 2 files changed, 122 insertions(+), 13 deletions(-) create mode 100644 cmake-perl-bindings.diff diff --git a/cmake-perl-bindings.diff b/cmake-perl-bindings.diff new file mode 100644 index 0000000..ea6710a --- /dev/null +++ b/cmake-perl-bindings.diff @@ -0,0 +1,105 @@ +diff -bru a/bindings/swig/perl/CMakeLists.txt b/bindings/swig/perl/CMakeLists.txt +--- a/bindings/swig/perl/CMakeLists.txt 2020-07-29 18:59:48.000000000 +0200 ++++ b/bindings/swig/perl/CMakeLists.txt 2020-11-01 19:56:20.825016280 +0100 +@@ -1,68 +1,35 @@ +-# This method works but there is no good way to install the results of it +-#FIND_PACKAGE(PerlLibs REQUIRED) +-#INCLUDE_DIRECTORIES(${PERL_INCLUDE_PATH}) +-# +-#SET_SOURCE_FILES_PROPERTIES(../sword.i PROPERTIES CPLUSPLUS ON) +-#SET_SOURCE_FILES_PROPERTIES(../sword.i PROPERTIES SWIG_FLAGS "") +-# +-#SWIG_ADD_MODULE(Sword perl +-# "../sword.i" +-#) +-# +-#SWIG_LINK_LIBRARIES(Sword ${PERL_LIBRARY} ${SWORD_LINK_NAME}) +- +-FIND_PACKAGE(Perl REQUIRED) +- +-SET(PERL_MAKEFILE "#!${PERL_EXECUTABLE} +- +-use ExtUtils::MakeMaker; +- +-# See lib/ExtUtils/MakeMaker.pm for details of how to influence +-# the contents of the Makefile that is written +-WriteMakefile( +- 'NAME' => 'Sword', +- 'VERSION' => '${SWORD_VERSION}', +- 'INC' => '-I\"${CMAKE_SOURCE_DIR}/include\" -I\"${CMAKE_CURRENT_SOURCE_DIR}/..\"', +- 'DEFINE' => '-DSWIG', +- 'LIBS' => '-L\"${CMAKE_BINARY_DIR}\" -lsword -lz', +- 'FIRST_MAKEFILE' => 'Makefile.perlswig', +- 'PREREQ_PM' => {}, +- ($] >= 5.005 ? ## Add these new keywords supported since 5.005 +- (ABSTRACT => 'Sword Project perl bindings', # retrieve abstract from module +- AUTHOR => 'Sword Project ') : ()), +-); +- +-rename 'Makefile.perlswig', 'Makefile.perlswig.old' or die \"Can't rename Makefile\"; +-open(INPUT, 'Makefile.perlswig') or die \"Can't open output Makefile\"; +-while () { +- s/\\-lsword/\\-lsword \\-lstdc\\+\\+/; +- print OUTPUT \"$_\"; +-} +- +-close INPUT; +-close OUTPUT;") +-FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/Makefile.PL "${PERL_MAKEFILE}") +- +-SET(SKIP_MAKEFILE "\\.old +-~$ +-\\.bak +-^CVS +-Makefile$") +-FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/Makefile.SKIP "${SKIP_MAKEFILE}") +- +-SWORD_SWIG_GENERATE(perl) +- +-ADD_CUSTOM_COMMAND(OUTPUT MANIFEST Makefile.perlswig +- COMMAND ${PERL_EXECUTABLE} Makefile.PL && make -f Makefile.perlswig clean +- COMMAND ${PERL_EXECUTABLE} Makefile.PL && make -f Makefile.perlswig manifest +- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) +- +-ADD_CUSTOM_TARGET(perlswig ALL +- COMMAND make -f Makefile.perlswig +- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Sword.cxx ${CMAKE_CURRENT_BINARY_DIR}/Makefile.perlswig ${SWORD_LINK_NAME} +- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) ++# Perl Swig bindings + +-INSTALL(SCRIPT install.cmake) ++cmake_minimum_required(VERSION 3.14.7) ++cmake_policy(SET CMP0078 NEW) ++cmake_policy(SET CMP0086 NEW) ++set(UseSWIG_MODULE_VERSION 2) + +-MESSAGE(STATUS "Perl: yes") ++find_package(SWIG REQUIRED) ++include(${SWIG_USE_FILE}) ++ ++find_package(PerlLibs REQUIRED) ++include_directories(${PERL_INCLUDE_PATH}) ++include_directories(${CMAKE_CURRENT_SOURCE_DIR}/..) ++ ++ ++set_source_files_properties(../sword.i PROPERTIES CPLUSPLUS ON) ++ ++SWIG_ADD_LIBRARY(Sword ++ TYPE SHARED ++ LANGUAGE perl SOURCES ../sword.i ++ ) ++TARGET_LINK_LIBRARIES(Sword ${PERL_LIBRARIES} ${SWORD_LINK_NAME}) ++ ++ ++install( ++ TARGETS Sword ++ LIBRARY DESTINATION "${LIB_INSTALL_DIR}/perl5/vendor_perl/auto/Sword" ++) ++get_target_property(SWIG_BUILDIR Sword SWIG_SUPPORT_FILES_DIRECTORY) ++ ++message(STATUS "SWIG_BUILDIR=${SWIG_BUILDIR}") ++install( ++ FILES ${SWIG_BUILDIR}/Sword.pm ++ DESTINATION "${LIB_INSTALL_DIR}/perl5/vendor_perl" ++) diff --git a/sword.spec b/sword.spec index b580719..36daaec 100644 --- a/sword.spec +++ b/sword.spec @@ -20,9 +20,12 @@ BuildRequires: cppunit-devel BuildRequires: swig BuildRequires: python3-devel BuildRequires: perl-devel +BuildRequires: perl-macros BuildRequires: gcc BuildRequires: gcc-c++ +Patch0: cmake-perl-bindings.diff + %description The SWORD Project is the CrossWire Bible Society's free Bible software project. Its purpose is to create cross-platform open-source tools-- @@ -64,20 +67,22 @@ Requires: python3 %description -n python3-sword Python bindings for The SWORD Library. -#%package -n perl-sword -#%{?perl_provide:%perl_provide perl-sword} -#Summary: Perl bindings for Sword -#Requires: %{name}%{?_isa} = %{version}-%{release} -#Requires: perl -#Requires: perl-XML-LibXML -#Requires: perl-HTML-Strip +%package -n perl-sword +%{?perl_provide:%perl_provide perl-sword} +Summary: Perl bindings for Sword +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: perl +Requires: perl-XML-LibXML +Requires: perl-HTML-Strip -#%description -n perl-sword -#Perl bindings for The SWORD Library. +%description -n perl-sword +Perl bindings for The SWORD Library. %prep %setup -q +%patch0 -p1 -b .perl + %build %cmake -DLIBSWORD_LIBRARY_TYPE=Shared \ -DSWORD_PYTHON_3:BOOL=TRUE \ @@ -138,10 +143,9 @@ make tests %{python3_sitearch}/__pycache__/* %{python3_sitearch}/sword-%{pkg_version}-py%{python3_version}.egg-info -#%files -n perl-sword -#%{perl_vendorarch}/* -#%exclude %dir %{perl_vendorarch}/auto/ -#%exclude %{_libdir}/perl5/perllocal.pod +%files -n perl-sword +%{perl_vendorarch}/* +%exclude %dir %{perl_vendorarch}/auto/ %changelog