commit:     d63c5a3a1240352d4200582d7fd68ae3afb8a5d7
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 29 18:48:37 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Jan 29 18:49:03 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d63c5a3a

media-gfx/graphite2: drop -nodefaultlibs

Breaks build on at least x86/musl. See patch for details.

Closes: https://bugs.gentoo.org/829690
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../files/graphite2-1.3.14-fix-nodefaultlibs.patch |  45 ++++++++
 .../graphite2/graphite2-1.3.14_p20210810-r1.ebuild | 124 +++++++++++++++++++++
 2 files changed, 169 insertions(+)

diff --git a/media-gfx/graphite2/files/graphite2-1.3.14-fix-nodefaultlibs.patch 
b/media-gfx/graphite2/files/graphite2-1.3.14-fix-nodefaultlibs.patch
new file mode 100644
index 000000000000..a7e5804319d7
--- /dev/null
+++ b/media-gfx/graphite2/files/graphite2-1.3.14-fix-nodefaultlibs.patch
@@ -0,0 +1,45 @@
+https://bugs.gentoo.org/829690
+
+See https://github.com/silnrsi/graphite/pull/44.
+
+Drop -nodefaultlibs:
+- graphite is written in C++ which makes avoiding libstdc++ (or libc++) a 
dubious
+  goal;
+- this ends up breaking e.g. x86/musl because we need to inject 
-lssp_nonshared,
+  but it wouldn't be surprising if it broke other exotic targets too.
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -105,7 +105,7 @@ set_target_properties(graphite2 PROPERTIES  PUBLIC_HEADER 
"${GRAPHITE_HEADERS}"
+ if  (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
+     set_target_properties(graphite2 PROPERTIES
+         COMPILE_FLAGS   "-Wall -Wextra -Wno-unknown-pragmas -Wendif-labels 
-Wshadow -Wctor-dtor-privacy -Wnon-virtual-dtor -fno-rtti -fno-exceptions 
-fvisibility=hidden -fvisibility-inlines-hidden"
+-        LINK_FLAGS      "-nodefaultlibs ${GRAPHITE_LINK_FLAGS}"
++        LINK_FLAGS      "${GRAPHITE_LINK_FLAGS}"
+         LINKER_LANGUAGE C)
+     if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86|i.86")
+         add_definitions(-mfpmath=sse -msse2)
+@@ -135,7 +135,6 @@ endif()
+ if  (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
+     set_target_properties(graphite2 PROPERTIES
+         COMPILE_FLAGS   "-Wall -Wextra -Wno-unknown-pragmas 
-Wimplicit-fallthrough -Wendif-labels -Wshadow -Wno-ctor-dtor-privacy 
-Wno-non-virtual-dtor -fno-rtti -fno-exceptions -fvisibility=hidden 
-fvisibility-inlines-hidden"
+-        LINK_FLAGS      "-nodefaultlibs"
+         LINKER_LANGUAGE C)
+     if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86|i.86")
+         add_definitions(-mfpmath=sse -msse2)
+--- a/tests/CMakeLists.txt
++++ b/tests/CMakeLists.txt
+@@ -47,12 +47,12 @@ else (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
+     set_target_properties(graphite2-base PROPERTIES
+         COMPILE_FLAGS       "-Wall -Wextra -Wno-class-memaccess -fno-rtti 
-fno-exceptions"
+         COMPILE_DEFINITIONS "GRAPHITE2_NTRACING"
+-        LINK_FLAGS          "-nodefaultlibs ${GRAPHITE_LINK_FLAGS}"
++        LINK_FLAGS          "${GRAPHITE_LINK_FLAGS}"
+         LINKER_LANGUAGE     C)
+     set_target_properties(graphite2-file PROPERTIES
+         COMPILE_FLAGS       "-Wall -Wextra  -Wno-class-memaccess -fno-rtti 
-fno-exceptions"
+         COMPILE_DEFINITIONS "GRAPHITE2_NTRACING${TELEMETRY}"
+-        LINK_FLAGS          "-nodefaultlibs ${GRAPHITE_LINK_FLAGS}"
++        LINK_FLAGS          "${GRAPHITE_LINK_FLAGS}"
+         LINKER_LANGUAGE     C)
+ endif()
+ 

diff --git a/media-gfx/graphite2/graphite2-1.3.14_p20210810-r1.ebuild 
b/media-gfx/graphite2/graphite2-1.3.14_p20210810-r1.ebuild
new file mode 100644
index 000000000000..cdccddf64039
--- /dev/null
+++ b/media-gfx/graphite2/graphite2-1.3.14_p20210810-r1.ebuild
@@ -0,0 +1,124 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+COMMIT=80c52493ef42e6fe605a69dcddd2a691cd8a1380
+GENTOO_DEPEND_ON_PERL="no"
+PYTHON_COMPAT=( python3_{8..10} )
+inherit perl-module python-any-r1 cmake-multilib
+
+DESCRIPTION="Library providing rendering capabilities for complex non-Roman 
writing systems"
+HOMEPAGE="https://scripts.sil.org/cms/scripts/page.php?site_id=projects&item_id=graphite_home";
+SRC_URI="https://github.com/silnrsi/graphite/archive/${COMMIT}.tar.gz -> 
${P}.tar.gz"
+S="${WORKDIR}/graphite-${COMMIT}"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~s390 
~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris 
~sparc64-solaris ~x64-solaris ~x86-solaris"
+IUSE="perl test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="perl? ( dev-lang/perl:= )"
+DEPEND="${RDEPEND}
+       test? ( dev-libs/glib:2 )
+"
+BDEPEND="
+       perl? (
+               dev-lang/perl
+               dev-perl/Locale-Maketext-Lexicon
+               dev-perl/Module-Build
+       )
+       test? (
+               ${PYTHON_DEPS}
+               $(python_gen_any_dep 'dev-python/fonttools[${PYTHON_USEDEP}]')
+               media-libs/fontconfig
+               perl? ( virtual/perl-Test-Simple )
+       )
+"
+
+PATCHES=(
+       "${FILESDIR}/${PN}-1.3.5-includes-libs-perl.patch"
+       "${FILESDIR}/${PN}-1.35-fix-gcc-linking.patch"
+       "${FILESDIR}/${PN}-1.3.14-fix-cmake-files-libdir.patch"
+       "${FILESDIR}/${PN}-1.3.14-no-libtool-file.patch"
+       "${FILESDIR}/${PN}-1.3.14-fix-nodefaultlibs.patch"
+)
+
+pkg_setup() {
+       use perl && perl_set_version
+       use test && python-any-r1_pkg_setup
+}
+
+python_check_deps() {
+       has_version -b "dev-python/fonttools[${PYTHON_USEDEP}]"
+}
+
+src_prepare() {
+       cmake_src_prepare
+       use test || cmake_comment_add_subdirectory tests
+}
+
+multilib_src_configure() {
+       local mycmakeargs=(
+               # Renamed VM_MACHINE_TYPE to GRAPHITE2_VM_TYPE
+               -DGRAPHITE2_VM_TYPE=direct
+       )
+       # https://sourceforge.net/p/silgraphite/bugs/49/
+       [[ ${CHOST} == powerpc*-apple* ]] && mycmakeargs+=(
+               -DGRAPHITE2_NSEGCACHE:BOOL=ON
+       )
+
+       if use elibc_musl ; then
+               # bug #829690
+               if use ppc || use x86 ; then
+                       sed -e 's:${GRAPHITE_LINK_FLAGS}:-lssp_nonshared &:' \
+                               -i "${S}"/src/CMakeLists.txt || die
+               fi
+       fi
+
+       cmake_src_configure
+
+       # fix perl linking
+       if multilib_is_native_abi && use perl; then
+               # we rely on the fact that cmake_src_configure sets BUILD_DIR
+               sed -e "s:@BUILD_DIR@:\"${BUILD_DIR}/src\":" \
+                       -i "${S}"/contrib/perl/Build.PL || die
+       fi
+}
+
+src_compile() {
+       cmake-multilib_src_compile
+       if use perl; then
+               cd contrib/perl || die
+               perl-module_src_configure
+               perl-module_src_compile
+       fi
+}
+
+multilib_src_test() {
+       if multilib_is_native_abi; then
+               cmake_src_test
+       else
+               einfo "Cannot test since python is not multilib."
+       fi
+}
+
+src_test() {
+       cmake-multilib_src_test
+       if use perl; then
+               # Perl tests fail due to missing POD coverage...
+               perl_rm_files "contrib/perl/t/pod.t" 
"contrib/perl/t/pod-coverage.t"
+               cd contrib/perl || die
+               perl-module_src_test
+       fi
+}
+
+src_install() {
+       cmake-multilib_src_install
+       if use perl; then
+               cd contrib/perl || die
+               perl-module_src_install
+               perl_delete_localpod
+       fi
+}

Reply via email to