From e9dbcfd10f8b7786f56125d0a13106484f299bca Mon Sep 17 00:00:00 2001 From: Andre Miras Date: Sat, 22 Mar 2025 21:39:19 +0100 Subject: [PATCH] :fire: Drop libmysqlclient recipe, closes #2808 The recipe was introduced in #587 but has multiple issues and doesn't build. Notable problems: - Never updated since initial commit (aside from formatting) - Uses `master` branch instead of pinning a version - Contains lots of commented-out code - Relies on https://github.com/0x-ff/libmysql-android, which: - Is not an official MySQL repository - Hasn't been updated since 2013 - Lacks English documentation (only available in Russian) --- ci/constants.py | 2 - .../recipes/libmysqlclient/Linux.cmake | 5 -- .../recipes/libmysqlclient/__init__.py | 67 ------------------- .../libmysqlclient/add-custom-platform.patch | 8 --- .../libmysqlclient/disable-soname.patch | 11 --- .../libmysqlclient/disable-soversion.patch | 12 ---- .../recipes/libmysqlclient/p4a.cmake | 3 - tests/recipes/test_libmysqlclient.py | 30 --------- 8 files changed, 138 deletions(-) delete mode 100644 pythonforandroid/recipes/libmysqlclient/Linux.cmake delete mode 100644 pythonforandroid/recipes/libmysqlclient/__init__.py delete mode 100644 pythonforandroid/recipes/libmysqlclient/add-custom-platform.patch delete mode 100644 pythonforandroid/recipes/libmysqlclient/disable-soname.patch delete mode 100644 pythonforandroid/recipes/libmysqlclient/disable-soversion.patch delete mode 100644 pythonforandroid/recipes/libmysqlclient/p4a.cmake delete mode 100644 tests/recipes/test_libmysqlclient.py diff --git a/ci/constants.py b/ci/constants.py index cc1d9ea70a..382a4a0bfe 100644 --- a/ci/constants.py +++ b/ci/constants.py @@ -33,8 +33,6 @@ class TargetPython(Enum): 'twisted', # genericndkbuild is incompatible with sdl2 (which is build by default when targeting sdl2 bootstrap) 'genericndkbuild', - # libmysqlclient gives a linker failure (See issue #2808) - 'libmysqlclient', # boost gives errors (requires numpy? syntax error in .jam?) 'boost', # libtorrent gives errors (requires boost. Also, see issue #2809, to start with) diff --git a/pythonforandroid/recipes/libmysqlclient/Linux.cmake b/pythonforandroid/recipes/libmysqlclient/Linux.cmake deleted file mode 100644 index 42cf0694fd..0000000000 --- a/pythonforandroid/recipes/libmysqlclient/Linux.cmake +++ /dev/null @@ -1,5 +0,0 @@ -asdgasdgasdg -asdg -asdg -include(${CMAKE_ROOT}/Modules/Platform/Linux.cmake) -set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "") diff --git a/pythonforandroid/recipes/libmysqlclient/__init__.py b/pythonforandroid/recipes/libmysqlclient/__init__.py deleted file mode 100644 index 84fd8d30ac..0000000000 --- a/pythonforandroid/recipes/libmysqlclient/__init__.py +++ /dev/null @@ -1,67 +0,0 @@ -from pythonforandroid.logger import shprint -from pythonforandroid.recipe import Recipe -from pythonforandroid.util import current_directory -import sh -from os.path import join - - -class LibmysqlclientRecipe(Recipe): - name = 'libmysqlclient' - version = 'master' - url = 'https://github.com/0x-ff/libmysql-android/archive/{version}.zip' - # version = '5.5.47' - # url = 'http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-{version}.tar.gz' - # - # depends = ['ncurses'] - # - - # patches = ['add-custom-platform.patch'] - - patches = ['disable-soversion.patch'] - - def should_build(self, arch): - return not self.has_libs(arch, 'libmysql.so') - - def build_arch(self, arch): - env = self.get_recipe_env(arch) - with current_directory(join(self.get_build_dir(arch.arch), 'libmysqlclient')): - shprint(sh.cp, '-t', '.', join(self.get_recipe_dir(), 'p4a.cmake')) - # ensure_dir('Platform') - # shprint(sh.cp, '-t', 'Platform', join(self.get_recipe_dir(), 'Linux.cmake')) - shprint(sh.rm, '-f', 'CMakeCache.txt') - shprint(sh.cmake, '-G', 'Unix Makefiles', - # '-DCMAKE_MODULE_PATH=' + join(self.get_build_dir(arch.arch), 'libmysqlclient'), - '-DCMAKE_INSTALL_PREFIX=./install', - '-DCMAKE_TOOLCHAIN_FILE=p4a.cmake', _env=env) - shprint(sh.make, _env=env) - - self.install_libs(arch, join('libmysql', 'libmysql.so')) - - # def get_recipe_env(self, arch=None): - # env = super().get_recipe_env(arch) - # env['WITHOUT_SERVER'] = 'ON' - # ncurses = self.get_recipe('ncurses', self) - # # env['CFLAGS'] += ' -I' + join(ncurses.get_build_dir(arch.arch), - # # 'include') - # env['CURSES_LIBRARY'] = join(self.ctx.get_libs_dir(arch.arch), 'libncurses.so') - # env['CURSES_INCLUDE_PATH'] = join(ncurses.get_build_dir(arch.arch), - # 'include') - # return env - # - # def build_arch(self, arch): - # env = self.get_recipe_env(arch) - # with current_directory(self.get_build_dir(arch.arch)): - # # configure = sh.Command('./configure') - # # TODO: should add openssl as an optional dep and compile support - # # shprint(configure, '--enable-shared', '--enable-assembler', - # # '--enable-thread-safe-client', '--with-innodb', - # # '--without-server', _env=env) - # # shprint(sh.make, _env=env) - # shprint(sh.cmake, '.', '-DCURSES_LIBRARY=' + env['CURSES_LIBRARY'], - # '-DCURSES_INCLUDE_PATH=' + env['CURSES_INCLUDE_PATH'], _env=env) - # shprint(sh.make, _env=env) - # - # self.install_libs(arch, 'libmysqlclient.so') - - -recipe = LibmysqlclientRecipe() diff --git a/pythonforandroid/recipes/libmysqlclient/add-custom-platform.patch b/pythonforandroid/recipes/libmysqlclient/add-custom-platform.patch deleted file mode 100644 index e76c69a723..0000000000 --- a/pythonforandroid/recipes/libmysqlclient/add-custom-platform.patch +++ /dev/null @@ -1,8 +0,0 @@ ---- libmysqlclient/libmysqlclient/libmysql/CMakeLists.txt 2013-02-27 00:25:45.000000000 -0600 -+++ b/libmysqlclient/libmysql/CMakeLists.txt 2016-01-11 13:28:51.142356988 -0600 -@@ -152,3 +152,5 @@ - ${CMAKE_SOURCE_DIR}/libmysql/libmysqlclient_r${CMAKE_SHARED_LIBRARY_SUFFIX} - DESTINATION "lib") - ENDIF(WIN32) -+ -+LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_PREFIX}") diff --git a/pythonforandroid/recipes/libmysqlclient/disable-soname.patch b/pythonforandroid/recipes/libmysqlclient/disable-soname.patch deleted file mode 100644 index 5a4dbf2639..0000000000 --- a/pythonforandroid/recipes/libmysqlclient/disable-soname.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- libmysqlclient/libmysqlclient/CMakeLists.txt 2013-02-27 00:25:45.000000000 -0600 -+++ b/libmysqlclient/CMakeLists.txt 2016-01-11 13:48:41.672323738 -0600 -@@ -24,6 +24,8 @@ - SET(CMAKE_BUILD_TYPE "Release") - ENDIF(NOT CMAKE_BUILD_TYPE) - -+SET(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "") -+ - # This reads user configuration, generated by configure.js. - IF(WIN32 AND EXISTS ${CMAKE_SOURCE_DIR}/win/configure.data) - INCLUDE(${CMAKE_SOURCE_DIR}/win/configure.data) diff --git a/pythonforandroid/recipes/libmysqlclient/disable-soversion.patch b/pythonforandroid/recipes/libmysqlclient/disable-soversion.patch deleted file mode 100644 index d6353de1cb..0000000000 --- a/pythonforandroid/recipes/libmysqlclient/disable-soversion.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- libmysqlclient/libmysqlclient/libmysql/CMakeLists.txt 2013-02-27 00:25:45.000000000 -0600 -+++ b/libmysqlclient/libmysql/CMakeLists.txt 2016-01-11 14:00:26.729332913 -0600 -@@ -97,9 +97,6 @@ - ADD_LIBRARY(libmysql SHARED ${CLIENT_SOURCES} libmysql.def) - TARGET_LINK_LIBRARIES(libmysql ${CMAKE_THREAD_LIBS_INIT}) - STRING(REGEX REPLACE "\\..+" "" LIBMYSQL_SOVERSION ${SHARED_LIB_VERSION}) --SET_TARGET_PROPERTIES(libmysql -- PROPERTIES VERSION ${SHARED_LIB_VERSION} -- SOVERSION ${LIBMYSQL_SOVERSION}) - IF(OPENSSL_LIBRARIES) - TARGET_LINK_LIBRARIES(libmysql ${OPENSSL_LIBRARIES} ${OPENSSL_LIBCRYPTO}) - ENDIF(OPENSSL_LIBRARIES) diff --git a/pythonforandroid/recipes/libmysqlclient/p4a.cmake b/pythonforandroid/recipes/libmysqlclient/p4a.cmake deleted file mode 100644 index 9e4c34339d..0000000000 --- a/pythonforandroid/recipes/libmysqlclient/p4a.cmake +++ /dev/null @@ -1,3 +0,0 @@ -SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH) -SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/tests/recipes/test_libmysqlclient.py b/tests/recipes/test_libmysqlclient.py deleted file mode 100644 index 4c85dc92e2..0000000000 --- a/tests/recipes/test_libmysqlclient.py +++ /dev/null @@ -1,30 +0,0 @@ -import unittest -from unittest import mock -from tests.recipes.recipe_lib_test import BaseTestForCmakeRecipe - - -class TestLibmysqlclientRecipe(BaseTestForCmakeRecipe, unittest.TestCase): - """ - An unittest for recipe :mod:`~pythonforandroid.recipes.libmysqlclient` - """ - recipe_name = "libmysqlclient" - - @mock.patch("pythonforandroid.recipes.libmysqlclient.sh.rm") - @mock.patch("pythonforandroid.recipes.libmysqlclient.sh.cp") - @mock.patch("pythonforandroid.util.chdir") - @mock.patch("pythonforandroid.build.ensure_dir") - @mock.patch("shutil.which") - def test_build_arch( - self, - mock_shutil_which, - mock_ensure_dir, - mock_current_directory, - mock_sh_cp, - mock_sh_rm, - ): - # We overwrite the base test method because we need - # to mock a little more (`sh.cp` and rmdir) - super().test_build_arch() - # make sure that the mocked methods are actually called - mock_sh_cp.assert_called() - mock_sh_rm.assert_called()