summaryrefslogtreecommitdiff
path: root/app-pda/libimobiledevice
diff options
context:
space:
mode:
Diffstat (limited to 'app-pda/libimobiledevice')
-rw-r--r--app-pda/libimobiledevice/Manifest2
-rw-r--r--app-pda/libimobiledevice/files/libimobiledevice-1.3.0-python.patch223
-rw-r--r--app-pda/libimobiledevice/libimobiledevice-1.3.0-r2.ebuild114
3 files changed, 339 insertions, 0 deletions
diff --git a/app-pda/libimobiledevice/Manifest b/app-pda/libimobiledevice/Manifest
index a9104b1e92d7..b194d64ab17d 100644
--- a/app-pda/libimobiledevice/Manifest
+++ b/app-pda/libimobiledevice/Manifest
@@ -1,5 +1,7 @@
AUX libimobiledevice-1.3.0-missing_libflags.patch 796 BLAKE2B 2887ea67b4eaaca48d4fb63e8a7e46d7f66a8a255256a702b186426dc522ad4fc2727810cec9712b36ab78fd12dd4995110d945b0ff4f21ade0cc38a6211fc64 SHA512 25a0257260d85bb0722185251a430a5cc75fb7fd3b3eeeac8e2378fde0a223836c0d827473208663ee2cad9dbe8eabd7f15eb542509e3a2dba30067f21d52dd4
+AUX libimobiledevice-1.3.0-python.patch 9419 BLAKE2B 63cde286cc51ef7448084abc0efab98a593caf6e039aff5bf97b3ff5def8c8904e935dc27cb552c7b7e601db3b29136341ec3a37978a66906d0e122c3ffe2c36 SHA512 ed6f18d41a55c616f0ed1625753ffc717facc970d4dfa0f8912559f1b8b7e22e09e0972a32ab1632fe948d370c56e77b6a125db3e241dfed679b89e57121d589
AUX libimobiledevice-1.3.0-slibtool.patch 5477 BLAKE2B 963072a0e577c52a2434d011bf684c5955a473154ad9726e77ba6e818071c9955bdc72e510721b6161031e96db49069e84948dff8458fc510526b9f21f8d78e1 SHA512 5064091b7bf858f78df9aec94f39fad98ac4969aa5c8889891840d07b8a404a0ba46949a22688805610cfcf287695c08dc11912494d7fbb9de75e6867d8a1b4f
DIST libimobiledevice-1.3.0.tar.bz2 733949 BLAKE2B 40717280bb3424c7431aa93d06d10de817e6761acf2b19948d80b691cfb4dd4ef0e31b81c8458eed29a43c8c8aa256da7baa3648fb785cfbdb7316daaba119a3 SHA512 7b22040552a6561729c79c0846f571b0e608abb7c297567d2ecfdd1718ce86df08a5e34ba51f209bdee96a1917da15e7ba3aaef1d289a951d1d3470b1f89e6a8
EBUILD libimobiledevice-1.3.0-r1.ebuild 2556 BLAKE2B f20c5dea5ff98888f62e7300749952048a3c403a245f6cc1521ea608506f0519b8bdc4b2154af3ac4b8f8e51d0b7fb37d2ed26789cab7a9c442ea3c11cf63ffa SHA512 620db4158de009912d59cc34cd2e6cea61ac22795afaa835d2cdb343ae38403f3ab6a97fb4468d2308053ba44a9b1dc4e8139bf3ff39ff22ef57d9ee5228304d
+EBUILD libimobiledevice-1.3.0-r2.ebuild 2593 BLAKE2B 723030a0818b39cab34276b4e86d434ebbd1ebe913dadef674d2f851ea1d6976db06934de3fb026d8e8ec25bf73a3d19a16536d40a851f819b7734c512eb0dfa SHA512 711cd32bff146eb3d660923aa0905e5f83f3c701fe4efaebb040431ae7e30243956c2ceb760308eaf12be10a37596e61f5ccbc8ecc81a1947ece0888949d95ae
MISC metadata.xml 346 BLAKE2B 5979763c0edb5ba8ea839769460571c50fff06027fa402e66b8f6927179e8898bde50732d847e775683b065eae274afa900b7a9ca6643ad98b4362fb9ec1385f SHA512 6252917ccb0280baea04596905530e2a37e364dfab87281987d9e8369e3fadc7eedded779d50bce6c0f2a39a9d224641c69bbc668f41765ff6f453bee4ea050b
diff --git a/app-pda/libimobiledevice/files/libimobiledevice-1.3.0-python.patch b/app-pda/libimobiledevice/files/libimobiledevice-1.3.0-python.patch
new file mode 100644
index 000000000000..28ca6da51ebd
--- /dev/null
+++ b/app-pda/libimobiledevice/files/libimobiledevice-1.3.0-python.patch
@@ -0,0 +1,223 @@
+https://github.com/libimobiledevice/libimobiledevice/pull/685
+
+From fb337f26c8e58ed0ce0750f7899ccbd5da203dee Mon Sep 17 00:00:00 2001
+From: wendyisgr33n <wendyisgr33n@gmail.com>
+Date: Mon, 30 Jul 2018 10:43:57 -0700
+Subject: [PATCH 1/5] Fixed AFC afc.pxi definitions for Python2/3
+ compatibility. Added missing public method 'remove_path_and_contents'
+
+--- a/cython/afc.pxi
++++ b/cython/afc.pxi
+@@ -52,6 +52,7 @@ cdef extern from "libimobiledevice/afc.h":
+ afc_error_t afc_read_directory(afc_client_t client, char *dir, char ***list)
+ afc_error_t afc_get_file_info(afc_client_t client, char *filename, char ***infolist)
+ afc_error_t afc_remove_path(afc_client_t client, char *path)
++ afc_error_t afc_remove_path_and_contents(afc_client_t client, char *path)
+ afc_error_t afc_rename_path(afc_client_t client, char *f, char *to)
+ afc_error_t afc_make_directory(afc_client_t client, char *dir)
+ afc_error_t afc_truncate(afc_client_t client, char *path, uint64_t newsize)
+@@ -235,17 +236,17 @@ cdef class AfcClient(BaseService):
+ afc_file_mode_t c_mode
+ uint64_t handle
+ AfcFile f
+- if mode == <bytes>'r':
++ if mode == b'r':
+ c_mode = AFC_FOPEN_RDONLY
+- elif mode == <bytes>'r+':
++ elif mode == b'r+':
+ c_mode = AFC_FOPEN_RW
+- elif mode == <bytes>'w':
++ elif mode == b'w':
+ c_mode = AFC_FOPEN_WRONLY
+- elif mode == <bytes>'w+':
++ elif mode == b'w+':
+ c_mode = AFC_FOPEN_WR
+- elif mode == <bytes>'a':
++ elif mode == b'a':
+ c_mode = AFC_FOPEN_APPEND
+- elif mode == <bytes>'a+':
++ elif mode == b'a+':
+ c_mode = AFC_FOPEN_RDAPPEND
+ else:
+ raise ValueError("mode string must be 'r', 'r+', 'w', 'w+', 'a', or 'a+'")
+@@ -282,6 +283,9 @@ cdef class AfcClient(BaseService):
+ cpdef remove_path(self, bytes path):
+ self.handle_error(afc_remove_path(self._c_client, path))
+
++ cpdef remove_path_and_contents(self, bytes path):
++ self.handle_error(afc_remove_path_and_contents(self._c_client, path))
++
+ cpdef rename_path(self, bytes f, bytes t):
+ self.handle_error(afc_rename_path(self._c_client, f, t))
+
+@@ -308,17 +312,17 @@ cdef class Afc2Client(AfcClient):
+ afc_file_mode_t c_mode
+ uint64_t handle
+ AfcFile f
+- if mode == <bytes>'r':
++ if mode == b'r':
+ c_mode = AFC_FOPEN_RDONLY
+- elif mode == <bytes>'r+':
++ elif mode == b'r+':
+ c_mode = AFC_FOPEN_RW
+- elif mode == <bytes>'w':
++ elif mode == b'w':
+ c_mode = AFC_FOPEN_WRONLY
+- elif mode == <bytes>'w+':
++ elif mode == b'w+':
+ c_mode = AFC_FOPEN_WR
+- elif mode == <bytes>'a':
++ elif mode == b'a':
+ c_mode = AFC_FOPEN_APPEND
+- elif mode == <bytes>'a+':
++ elif mode == b'a+':
+ c_mode = AFC_FOPEN_RDAPPEND
+ else:
+ raise ValueError("mode string must be 'r', 'r+', 'w', 'w+', 'a', or 'a+'")
+
+From b71e8935949a1d6f419a3f783d804809fb4c309b Mon Sep 17 00:00:00 2001
+From: wendyisgr33n <wendyisgr33n@gmail.com>
+Date: Mon, 30 Jul 2018 10:44:40 -0700
+Subject: [PATCH 2/5] Fixed debugserver.pxi PyString_AsString compatibility
+ with Python3
+
+--- a/cython/debugserver.pxi
++++ b/cython/debugserver.pxi
+@@ -44,7 +44,12 @@ cdef class DebugServerError(BaseError):
+
+
+ # from http://stackoverflow.com/a/17511714
+-from cpython.string cimport PyString_AsString
++# https://github.com/libimobiledevice/libimobiledevice/pull/198
++from cpython cimport PY_MAJOR_VERSION
++if PY_MAJOR_VERSION <= 2:
++ from cpython.string cimport PyString_AsString
++else:
++ from cpython.bytes cimport PyBytes_AsString as PyString_AsString
+ cdef char ** to_cstring_array(list_str):
+ if not list_str:
+ return NULL
+
+From 44f54cdc0ebb052e4a642023bbf96504e6139ec9 Mon Sep 17 00:00:00 2001
+From: wendyisgr33n <wendyisgr33n@gmail.com>
+Date: Mon, 30 Jul 2018 10:45:22 -0700
+Subject: [PATCH 3/5] Fixed bytes/strings check in imobiledevice.pyx for
+ compatibility with Python2/3
+
+--- a/cython/imobiledevice.pyx
++++ b/cython/imobiledevice.pyx
+@@ -171,7 +171,7 @@ from libc.stdlib cimport *
+ cdef class iDevice(Base):
+ def __cinit__(self, object udid=None, *args, **kwargs):
+ cdef char* c_udid = NULL
+- if isinstance(udid, basestring):
++ if isinstance(udid, (str, bytes)):
+ c_udid = <bytes>udid
+ elif udid is not None:
+ raise TypeError("iDevice's constructor takes a string or None as the udid argument")
+
+From 8908619973e751b778d3fb73dc309cd5cb7f4122 Mon Sep 17 00:00:00 2001
+From: wendyisgr33n <wendyisgr33n@gmail.com>
+Date: Mon, 30 Jul 2018 10:45:55 -0700
+Subject: [PATCH 4/5] Fixed bytes/strings checks in lockdown.pxi for
+ compatibility with Python2/3
+
+--- a/cython/lockdown.pxi
++++ b/cython/lockdown.pxi
+@@ -230,9 +230,9 @@ cdef class LockdownClient(PropertyListService):
+
+ if issubclass(service, BaseService) and \
+ service.__service_name__ is not None \
+- and isinstance(service.__service_name__, basestring):
++ and isinstance(service.__service_name__, (str, bytes)):
+ c_service_name = <bytes>service.__service_name__
+- elif isinstance(service, basestring):
++ elif isinstance(service, (str, bytes)):
+ c_service_name = <bytes>service
+ else:
+ raise TypeError("LockdownClient.start_service() takes a BaseService or string as its first argument")
+@@ -253,7 +253,7 @@ cdef class LockdownClient(PropertyListService):
+
+ if not hasattr(service_class, '__service_name__') and \
+ not service_class.__service_name__ is not None \
+- and not isinstance(service_class.__service_name__, basestring):
++ and not isinstance(service_class.__service_name__, (str, bytes)):
+ raise TypeError("LockdownClient.get_service_client() takes a BaseService as its first argument")
+
+ descriptor = self.start_service(service_class)
+
+From e59cbdbf4e7dba98ef57a54e314a89edfea0a3dc Mon Sep 17 00:00:00 2001
+From: wendyisgr33n <wendyisgr33n@gmail.com>
+Date: Mon, 30 Jul 2018 10:47:48 -0700
+Subject: [PATCH 5/5] Fixed method visibility in mobilebackup2.pxi API
+
+--- a/cython/mobilebackup2.pxi
++++ b/cython/mobilebackup2.pxi
+@@ -54,10 +54,10 @@ cdef class MobileBackup2Client(PropertyListService):
+ cdef inline BaseError _error(self, int16_t ret):
+ return MobileBackup2Error(ret)
+
+- cdef send_message(self, bytes message, plist.Node options):
++ cpdef send_message(self, bytes message, plist.Node options):
+ self.handle_error(mobilebackup2_send_message(self._c_client, message, options._c_node))
+
+- cdef tuple receive_message(self):
++ cpdef tuple receive_message(self):
+ cdef:
+ char* dlmessage = NULL
+ plist.plist_t c_node = NULL
+@@ -73,29 +73,34 @@ cdef class MobileBackup2Client(PropertyListService):
+ free(dlmessage)
+ raise
+
+- cdef int send_raw(self, bytes data, int length):
++ cpdef int send_raw(self, bytes data, int length):
+ cdef:
+- uint32_t bytes = 0
++ uint32_t bytes_recvd = 0
+ mobilebackup2_error_t err
+- err = mobilebackup2_send_raw(self._c_client, data, length, &bytes)
++ err = mobilebackup2_send_raw(self._c_client, data, length, &bytes_recvd)
+ try:
+ self.handle_error(err)
+- return <bint>bytes
++ return <bint>bytes_recvd
+ except BaseError, e:
+ raise
+
+- cdef int receive_raw(self, bytes data, int length):
++ cpdef int receive_raw(self, bytearray data, int length):
+ cdef:
+- uint32_t bytes = 0
++ uint32_t bytes_recvd = 0
+ mobilebackup2_error_t err
+- err = mobilebackup2_receive_raw(self._c_client, data, length, &bytes)
++ err = mobilebackup2_receive_raw(self._c_client, data, length, &bytes_recvd)
++
++ # Throwing an exception when we test if theres more data to read is excessive
++ if err == -1 and bytes_recvd == 0:
++ return 0
++
+ try:
+ self.handle_error(err)
+- return <bint>bytes
++ return <bint>bytes_recvd
+ except BaseError, e:
+ raise
+
+- cdef float version_exchange(self, double[::1] local_versions):
++ cpdef float version_exchange(self, double[::1] local_versions):
+ cdef:
+ double[::1] temp = None
+ double remote_version = 0.0
+@@ -107,8 +112,8 @@ cdef class MobileBackup2Client(PropertyListService):
+ except BaseError, e:
+ raise
+
+- cdef send_request(self, bytes request, bytes target_identifier, bytes source_identifier, plist.Node options):
++ cpdef send_request(self, bytes request, bytes target_identifier, bytes source_identifier, plist.Node options):
+ self.handle_error(mobilebackup2_send_request(self._c_client, request, target_identifier, source_identifier, options._c_node))
+
+- cdef send_status_response(self, int status_code, bytes status1, plist.Node status2):
++ cpdef send_status_response(self, int status_code, bytes status1, plist.Node status2):
+ self.handle_error(mobilebackup2_send_status_response(self._c_client, status_code, status1, status2._c_node))
diff --git a/app-pda/libimobiledevice/libimobiledevice-1.3.0-r2.ebuild b/app-pda/libimobiledevice/libimobiledevice-1.3.0-r2.ebuild
new file mode 100644
index 000000000000..9705c73f1fc2
--- /dev/null
+++ b/app-pda/libimobiledevice/libimobiledevice-1.3.0-r2.ebuild
@@ -0,0 +1,114 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{9..11} )
+
+inherit autotools python-r1
+
+DESCRIPTION="Support library to communicate with Apple iPhone/iPod Touch devices"
+HOMEPAGE="https://www.libimobiledevice.org/"
+SRC_URI="https://github.com/libimobiledevice/libimobiledevice/releases/download/${PV}/${P}.tar.bz2"
+
+# While COPYING* doesn't mention 'or any later version', all the headers do, hence use +
+LICENSE="GPL-2+ LGPL-2.1+"
+SLOT="0/1.0-6" # based on SONAME of libimobiledevice-1.0.so
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+IUSE="doc gnutls python static-libs"
+REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
+
+RDEPEND="
+ >=app-pda/libplist-2.2.0:=
+ >=app-pda/libusbmuxd-2.0.2:=
+ gnutls? (
+ dev-libs/libgcrypt:0
+ >=dev-libs/libtasn1-1.1
+ >=net-libs/gnutls-2.2.0
+ )
+ !gnutls? (
+ dev-libs/openssl:0=
+ )
+ python? (
+ ${PYTHON_DEPS}
+ app-pda/libplist[python(-),${PYTHON_USEDEP}]
+ )
+"
+DEPEND="
+ ${RDEPEND}
+"
+BDEPEND="
+ virtual/pkgconfig
+ doc? ( app-doc/doxygen )
+ python? ( >=dev-python/cython-0.17[${PYTHON_USEDEP}] )
+"
+
+BUILD_DIR="${S}_build"
+
+PATCHES=(
+ "${FILESDIR}/${P}-slibtool.patch"
+ "${FILESDIR}/${P}-missing_libflags.patch" #787962
+ "${FILESDIR}/${P}-python.patch"
+)
+
+src_prepare() {
+ default
+ eautoreconf
+}
+
+src_configure() {
+ local ECONF_SOURCE=${S}
+
+ local myeconfargs=( $(use_enable static-libs static) )
+ use gnutls && myeconfargs+=( --disable-openssl )
+
+ do_configure() {
+ mkdir -p "${BUILD_DIR}" || die
+ pushd "${BUILD_DIR}" >/dev/null || die
+ econf "${myeconfargs[@]}" "${@}"
+ popd >/dev/null || die
+ }
+
+ do_configure_python() {
+ # Bug 567916
+ local -x PYTHON_LDFLAGS="$(python_get_LIBS)"
+ do_configure "$@"
+ }
+
+ do_configure --without-cython
+ use python && python_foreach_impl do_configure_python
+}
+
+src_compile() {
+ python_compile() {
+ emake -C "${BUILD_DIR}"/cython \
+ VPATH="${S}/cython:$1/cython" \
+ imobiledevice_la_LIBADD="$1/src/libimobiledevice-1.0.la"
+ }
+
+ emake -C "${BUILD_DIR}"
+ use python && python_foreach_impl python_compile "${BUILD_DIR}"
+
+ if use doc; then
+ doxygen "${BUILD_DIR}"/doxygen.cfg || die
+ fi
+}
+
+src_install() {
+ python_install() {
+ emake -C "${BUILD_DIR}/cython" install \
+ DESTDIR="${D}" \
+ VPATH="${S}/cython:$1/cython"
+ }
+
+ emake -C "${BUILD_DIR}" install DESTDIR="${D}"
+ use python && python_foreach_impl python_install "${BUILD_DIR}"
+ use doc && dodoc docs/html/*
+
+ if use python; then
+ insinto /usr/include/${PN}/cython
+ doins cython/imobiledevice.pxd
+ fi
+
+ find "${D}" -name '*.la' -delete || die
+}