forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
app-pda/libplist: fix strict aliasing violations
Apply a patch that was also sent upstream, and also: * Bump to EAPI-8. * Correct LICENSE variable. Closes: https://bugs.gentoo.org/854837 Signed-off-by: Matthew Smith <[email protected]>
- Loading branch information
1 parent
f1bb3ad
commit 75e60fe
Showing
2 changed files
with
146 additions
and
0 deletions.
There are no files selected for viewing
32 changes: 32 additions & 0 deletions
32
app-pda/libplist/files/libplist-2.2.0-strict-aliasing.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
https://bugs.gentoo.org/854837 | ||
https://github.com/libimobiledevice/libplist/pull/212 | ||
--- a/src/bplist.c | ||
+++ b/src/bplist.c | ||
@@ -998,18 +998,24 @@ static void write_real(bytearray_t * bplist, double val) | ||
buff[7] = BPLIST_REAL | Log2(size); | ||
if (size == sizeof(float)) { | ||
float floatval = (float)val; | ||
- *(uint32_t*)(buff+8) = float_bswap32(*(uint32_t*)&floatval); | ||
+ uint32_t intval; | ||
+ memcpy(&intval, &floatval, sizeof(float)); | ||
+ *(uint32_t*)(buff+8) = float_bswap32(intval); | ||
} else { | ||
- *(uint64_t*)(buff+8) = float_bswap64(*(uint64_t*)&val); | ||
+ uint64_t intval; | ||
+ memcpy(&intval, &val, sizeof(double)); | ||
+ *(uint64_t*)(buff+8) = float_bswap64(intval); | ||
} | ||
byte_array_append(bplist, buff+7, size+1); | ||
} | ||
|
||
static void write_date(bytearray_t * bplist, double val) | ||
{ | ||
+ uint64_t intval; | ||
+ memcpy(&intval, &val, sizeof(double)); | ||
uint8_t buff[16]; | ||
buff[7] = BPLIST_DATE | 3; | ||
- *(uint64_t*)(buff+8) = float_bswap64(*(uint64_t*)&val); | ||
+ *(uint64_t*)(buff+8) = float_bswap64(intval); | ||
byte_array_append(bplist, buff+7, 9); | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
# Copyright 1999-2022 Gentoo Authors | ||
# Distributed under the terms of the GNU General Public License v2 | ||
|
||
EAPI=8 | ||
|
||
PYTHON_COMPAT=( python3_{8,9,10} ) | ||
inherit autotools python-r1 toolchain-funcs | ||
|
||
DESCRIPTION="Support library to deal with Apple Property Lists (Binary & XML)" | ||
HOMEPAGE="https://www.libimobiledevice.org/" | ||
SRC_URI="https://cgit.libimobiledevice.org/${PN}.git/snapshot/${P}.tar.bz2" | ||
|
||
LICENSE="GPL-2+ LGPL-2.1+" | ||
SLOT="0/2.0-3" | ||
KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86" | ||
IUSE="python" | ||
|
||
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" | ||
|
||
RDEPEND="python? ( ${PYTHON_DEPS} )" | ||
DEPEND="${RDEPEND}" | ||
BDEPEND=" | ||
virtual/pkgconfig | ||
python? ( >=dev-python/cython-0.17[${PYTHON_USEDEP}] ) | ||
" | ||
|
||
DOCS=( AUTHORS NEWS README.md ) | ||
|
||
PATCHES=( | ||
"${FILESDIR}"/${PN}-2.2.0-fmin.patch | ||
"${FILESDIR}"/${PN}-2.2.0-pkgconfig-lib.patch | ||
"${FILESDIR}"/${PN}-2.2.0-strict-aliasing.patch # bug 854837 | ||
) | ||
|
||
BUILD_DIR="${S}_build" | ||
|
||
src_prepare() { | ||
default | ||
eautoreconf | ||
} | ||
|
||
src_configure() { | ||
local ECONF_SOURCE="${S}" | ||
|
||
do_configure() { | ||
mkdir -p "${BUILD_DIR}" || die | ||
pushd "${BUILD_DIR}" >/dev/null || die | ||
econf --disable-static "${@}" | ||
popd >/dev/null || die | ||
} | ||
|
||
do_configure_python() { | ||
local -x PYTHON_LDFLAGS="$(python_get_LIBS)" | ||
do_configure "$@" | ||
} | ||
|
||
# Don't prefer clang. | ||
tc-export CC CXX | ||
|
||
do_configure --without-cython | ||
use python && python_foreach_impl do_configure_python | ||
} | ||
|
||
src_compile() { | ||
local native_builddir=${BUILD_DIR} | ||
ln -s "${native_builddir}/src/libplist-2.0.la" \ | ||
"${native_builddir}/src/libplist.la" || die | ||
|
||
python_compile() { | ||
emake -C "${BUILD_DIR}"/cython \ | ||
VPATH="${S}/cython:${native_builddir}/cython" \ | ||
plist_la_LIBADD="${native_builddir}/src/libplist-2.0.la" | ||
} | ||
|
||
pushd "${BUILD_DIR}" >/dev/null || die | ||
emake | ||
use python && python_foreach_impl python_compile | ||
popd >/dev/null || die | ||
} | ||
|
||
src_test() { | ||
emake -C "${BUILD_DIR}" check | ||
} | ||
|
||
src_install() { | ||
python_install() { | ||
emake -C "${BUILD_DIR}/cython" \ | ||
VPATH="${S}/cython:${native_builddir}/cython" \ | ||
DESTDIR="${D}" install | ||
} | ||
|
||
local native_builddir=${BUILD_DIR} | ||
pushd "${BUILD_DIR}" >/dev/null || die | ||
emake DESTDIR="${D}" install | ||
use python && python_foreach_impl python_install | ||
popd >/dev/null || die | ||
|
||
einstalldocs | ||
|
||
if use python ; then | ||
insinto /usr/include/plist/cython | ||
doins cython/plist.pxd | ||
fi | ||
|
||
find "${ED}" -name '*.la' -delete || die | ||
|
||
# temporary fix for 2.2.0 release: | ||
# bug #733082, | ||
# https://github.com/libimobiledevice/libplist/issues/163 | ||
# upstream commit 137716df3f197a7184c1fba88fcb30480dafd6e0 | ||
dosym ./libplist-2.0.pc /usr/$(get_libdir)/pkgconfig/libplist.pc | ||
dosym ./libplist++-2.0.so.3.3.0 /usr/$(get_libdir)/libplist++.so | ||
dosym ./libplist-2.0.so.3.3.0 /usr/$(get_libdir)/libplist.so | ||
} |