[sword-devel] [PATCH] Migrate setup.py files from using distutils to using setuptools
Aaron Rainbolt
arraybolt3 at gmail.com
Mon Oct 2 21:40:25 EDT 2023
Actually, I realize now that I also am patching a CMake file with the
distutils -> setuptools transition. That's probably all that's needed
(though I patched everywhere I saw distutils for good measure and it
built). I'll resubmit and patch only just the CMake file.
On 10/2/23 20:38, Aaron Rainbolt wrote:
> I realize these are autotools files, but they are somehow getting
> pulled into the CMake build process. The spec file for the Fedora
> build is still using CMake, the build was failing because of an
> attempt to use distutils rather than setuptools, and the only places
> where distutils was mentioned was in Python scripts embedded into the
> Autotools files. Patching them fixed the problem, so I assume the
> CMake builds must be using those files to generate the Python scripts
> for installing the Python bindings.
>
> I realize now that my patch was against the 1.9.0 tarball, not against
> the latest SVN revision (why I didn't think to do it against the SVN
> repo, I don't know, but I didn't). The patch doesn't apply for me
> either so scrap this one and I'll submit a new one against the head of
> SVN. Sorry about that.
>
> On 10/2/23 20:27, Greg Hellings wrote:
>> Aaron,
>>
>> Your patch fails to apply against the head of SVN for me, with this
>> error:
>>
>> @ patch -p1 < ../aaron-rainbolt.patch
>> patching file bindings/swig/oldmake/Makefile.am
>> Hunk #1 FAILED at 76.
>> 1 out of 1 hunk FAILED -- saving rejects to file
>> bindings/swig/oldmake/Makefile.am.rej
>> patching file bindings/swig/package/Makefile.am
>> Hunk #1 FAILED at 84.
>> 1 out of 1 hunk FAILED -- saving rejects to file
>> bindings/swig/package/Makefile.am.rej
>> can't find file to patch at input line 35
>> Perhaps you used the wrong -p or --strip option?
>> The text leading up to this was:
>> --------------------------
>> |diff --git a/bindings/swig/package/Makefile.in
>> |b/bindings/swig/package/Makefile.in
>> |index b5f05c9..370a9e7 100644
>> |--- a/bindings/swig/package/Makefile.in
>> |+++ b/bindings/swig/package/Makefile.in
>> --------------------------
>> File to patch:
>>
>> Furthermore, it looks like you are patching the autotools build
>> system, which is not supported in the Python and Perl bindings. Those
>> are only supported building through the CMake files. At least, they
>> aren't supported by me as I don't go near autotools, and last I knew
>> I was the only one working in the Swig bindings.
>>
>> I don't know why your patch is failing to apply, as I don't believe
>> there should be any drift in those Makefiles. I'd be happy to try
>> again if you have any advice as to why the patch is not applying.
>>
>> --Greg
>>
>> On Thu, Sep 28, 2023 at 11:53 AM Aaron Rainbolt
>> <arraybolt3 at gmail.com> wrote:
>>
>> Good morning/evening, and thanks for your time.
>>
>> As distutils has been deprecated and finally removed in Python 3.12,
>> SWORD is unable to build in Fedora without the following patch.
>> The patch:
>>
>> * Replaces all references to distutils with their setuptools
>> equivalents.
>>
>> * Modifies the build system to allow specifying a new CMake
>> argument,
>> "SWORD_PYTHON_INSTALL_ROOT", which allows setting the installation
>> path
>> for the Python bindings without generating a Python egg. (This is
>> necessary since Python eggs have been deprecated as well and will
>> likely
>> be removed later. See
>> https://github.com/pypa/setuptools/issues/3143 -
>> specifying both a --root and a --prefix to the setup.py scripts
>> seems to
>> work around this issue.)
>>
>> All contributions in this patch are made available to the SWORD
>> Project
>> under the terms of the GNU General Public License version 2.
>>
>> Thanks for your consideration, and have a blessed day!
>>
>> Aaron
>>
>> (P.S. - the reason this appears to be a Git patch is because I
>> used Git
>> to let me generate a multi-file patch more easily. I realize SWORD
>> uses
>> SVN, sorry if this looks confusing.)
>>
>>
>>
>> From 07b31a74ea920077fa0d69cdab2ab188dd17b322 Mon Sep 17 00:00:00
>> 2001
>> From: Aaron Rainbolt <arraybolt3 at gmail.com>
>> Date: Wed, 27 Sep 2023 10:51:27 -0600
>> Subject: [PATCH] Migrate to setuptools
>>
>> ---
>> bindings/swig/oldmake/Makefile.am | 2 +-
>> bindings/swig/package/Makefile.am | 3 +--
>> bindings/swig/package/Makefile.in | 3 +--
>> bindings/swig/python/CMakeLists.txt | 7 +++++--
>> 4 files changed, 8 insertions(+), 7 deletions(-)
>>
>> diff --git a/bindings/swig/oldmake/Makefile.am
>> b/bindings/swig/oldmake/Makefile.am
>> index 45a37ef..789813b 100644
>> --- a/bindings/swig/oldmake/Makefile.am
>> +++ b/bindings/swig/oldmake/Makefile.am
>> @@ -76,7 +76,7 @@ python_makebuild: $(PYTHONSWIG)
>> echo "writing python/setup.py"
>> @echo "#! /usr/bin/python" > python/setup.py
>> @echo "" >> python/setup.py
>> - @echo "from distutils.core import setup, Extension" >>
>> python/setup.py
>> + @echo "from setuptools import setup, Extension" >>
>> python/setup.py
>> @echo "setup (name = \"sword\"," >> python/setup.py
>> @echo " version = \"$(VERSION)\"," >> python/setup.py
>> @echo " maintainer = \"Sword Developers\"," >>
>> python/setup.py
>> diff --git a/bindings/swig/package/Makefile.am
>> b/bindings/swig/package/Makefile.am
>> index 14500c3..f44974d 100644
>> --- a/bindings/swig/package/Makefile.am
>> +++ b/bindings/swig/package/Makefile.am
>> @@ -84,8 +84,7 @@ python_makebuild: $(PYTHONSWIG)
>> echo "writing python/setup.py"
>> @echo "#! /usr/bin/python" > python/setup.py
>> @echo "" >> python/setup.py
>> - @echo "from distutils.core import setup" >> python/setup.py
>> - @echo "from distutils.extension import Extension" >>
>> python/setup.py
>> + @echo "from setuptools import setup, Extension" >>
>> python/setup.py
>> @echo "import commands" >> python/setup.py
>> @echo "" >> python/setup.py
>> @echo "def pkgconfig(*packages, **kw):" >> python/setup.py
>> diff --git a/bindings/swig/package/Makefile.in
>> b/bindings/swig/package/Makefile.in
>> index b5f05c9..370a9e7 100644
>> --- a/bindings/swig/package/Makefile.in
>> +++ b/bindings/swig/package/Makefile.in
>> @@ -938,8 +938,7 @@ python_makebuild: $(PYTHONSWIG)
>> echo "writing python/setup.py"
>> @echo "#! /usr/bin/python" > python/setup.py
>> @echo "" >> python/setup.py
>> - @echo "from distutils.core import setup" >> python/setup.py
>> - @echo "from distutils.extension import Extension" >>
>> python/setup.py
>> + @echo "from setuptools import setup, Extension" >>
>> python/setup.py
>> @echo "import commands" >> python/setup.py
>> @echo "" >> python/setup.py
>> @echo "def pkgconfig(*packages, **kw):" >> python/setup.py
>> diff --git a/bindings/swig/python/CMakeLists.txt
>> b/bindings/swig/python/CMakeLists.txt
>> index cbb4058..247bc79 100644
>> --- a/bindings/swig/python/CMakeLists.txt
>> +++ b/bindings/swig/python/CMakeLists.txt
>> @@ -25,7 +25,7 @@ ENDIF(NOT PYTHONLIBS_FOUND)
>>
>> SET(PY_SCRIPT "#!${PYTHON_EXECUTABLE}
>>
>> -from distutils.core import setup, Extension
>> +from setuptools import setup, Extension
>> setup(
>> name='sword',
>> version='${SWORD_VERSION}',
>> @@ -51,8 +51,11 @@
>> ADD_CUSTOM_TARGET(swordswig_python${SWORD_PYTHON_VERSION} ALL
>> WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
>>
>> # Allow user installation to custom directory
>> +IF(NOT SWORD_PYTHON_INSTALL_ROOT STREQUAL "")
>> + SET(SETUP_ARGS "\"--root=${SWORD_PYTHON_INSTALL_ROOT}\"")
>> +ENDIF(NOT SWORD_PYTHON_INSTALL_ROOT STREQUAL "")
>> IF(NOT SWORD_PYTHON_INSTALL_DIR STREQUAL "")
>> - SET(SETUP_ARGS "\"--prefix=${SWORD_PYTHON_INSTALL_DIR}\"")
>> + SET(SETUP_ARGS
>> "${SETUP_ARGS}\"--prefix=${SWORD_PYTHON_INSTALL_DIR}\"")
>> ENDIF(NOT SWORD_PYTHON_INSTALL_DIR STREQUAL "")
>> CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/install.cmake.in
>> <http://install.cmake.in>"
>> "${CMAKE_CURRENT_BINARY_DIR}/install.cmake")
>> -- 2.41.0
>>
>> _______________________________________________
>> sword-devel mailing list: sword-devel at crosswire.org
>> http://crosswire.org/mailman/listinfo/sword-devel
>> Instructions to unsubscribe/change your settings at above page
>>
>>
>> _______________________________________________
>> sword-devel mailing list: sword-devel at crosswire.org
>> http://crosswire.org/mailman/listinfo/sword-devel
>> Instructions to unsubscribe/change your settings at above page
More information about the sword-devel
mailing list