Re: [PATCH] Migrate setup.py files from using distutils to using setuptools
Aaron Rainbolt <[email protected]>
| Newsgroups | gmane.comp.literature.sword.devel |
|---|---|
| Message-ID | <[email protected]> |
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 >> <[email protected]> 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 <[email protected]> >> 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: [email protected] >> http://crosswire.org/mailman/listinfo/sword-devel >> Instructions to unsubscribe/change your settings at above page >> >> >> _______________________________________________ >> sword-devel mailing list: [email protected] >> http://crosswire.org/mailman/listinfo/sword-devel >> Instructions to unsubscribe/change your settings at above page _______________________________________________ sword-devel mailing list: [email protected] http://crosswire.org/mailman/listinfo/sword-devel Instructions to unsubscribe/change your settings at above page