summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app-text/podofo/files/podofo-0.9.6_p20190928-cmake_lua_version.patch15
-rw-r--r--app-text/podofo/podofo-0.9.6_p20190928-r100.ebuild159
-rw-r--r--profiles/package.mask1
3 files changed, 175 insertions, 0 deletions
diff --git a/app-text/podofo/files/podofo-0.9.6_p20190928-cmake_lua_version.patch b/app-text/podofo/files/podofo-0.9.6_p20190928-cmake_lua_version.patch
new file mode 100644
index 000000000000..f178ae2a6c0c
--- /dev/null
+++ b/app-text/podofo/files/podofo-0.9.6_p20190928-cmake_lua_version.patch
@@ -0,0 +1,15 @@
+Switch from the non-standard upstream CMake Lua module to the one bundled
+with CMake, use only the Lua version requested by the ebuild, and do not
+semi-quietly ignore the absence of Lua.
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -433,7 +433,7 @@
+ ENDIF(WANT_FONTCONFIG)
+
+ IF(NOT PODOFO_BUILD_LIB_ONLY)
+-FIND_PACKAGE(LUA)
++FIND_PACKAGE(Lua ${LUA_VERSION} EXACT REQUIRED)
+ IF(LUA_FOUND)
+ # If we have lua, we can build podofoimpose.
+ MESSAGE("Lua found - PoDoFoImpose and PoDoFoColor will be built with Lua support")
diff --git a/app-text/podofo/podofo-0.9.6_p20190928-r100.ebuild b/app-text/podofo/podofo-0.9.6_p20190928-r100.ebuild
new file mode 100644
index 000000000000..cf6bcc0de02b
--- /dev/null
+++ b/app-text/podofo/podofo-0.9.6_p20190928-r100.ebuild
@@ -0,0 +1,159 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+LUA_COMPAT=( lua5-{1..4} )
+
+inherit cmake flag-o-matic lua-single toolchain-funcs
+
+DESCRIPTION="PoDoFo is a C++ library to work with the PDF file format"
+HOMEPAGE="https://sourceforge.net/projects/podofo/"
+SRC_URI="https://dev.gentoo.org/~zmedico/dist/${P}.tar.xz"
+
+LICENSE="GPL-2 LGPL-2.1"
+SLOT="0/${PV%_*}"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~sparc ~x86"
+IUSE="+boost idn libressl debug test +tools"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="${LUA_REQUIRED_USE}
+ test? ( tools )"
+
+RDEPEND="${LUA_DEPS}
+ idn? ( net-dns/libidn:= )
+ !libressl? ( dev-libs/openssl:0= )
+ libressl? ( dev-libs/libressl:0= )
+ media-libs/fontconfig:=
+ media-libs/freetype:2=
+ virtual/jpeg:0=
+ media-libs/libpng:0=
+ media-libs/tiff:0=
+ sys-libs/zlib:="
+DEPEND="${RDEPEND}
+ virtual/pkgconfig
+ boost? ( dev-util/boost-build )
+ test? ( dev-util/cppunit )"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-0.9.6_p20190928-cmake_lua_version.patch
+)
+
+DOCS="AUTHORS ChangeLog TODO"
+
+src_prepare() {
+ cmake_src_prepare
+ local x sed_args
+
+ if use libressl; then
+ sed -e 's:^#ifdef PODOFO_HAVE_OPENSSL_1_1$:#ifndef PODOFO_HAVE_OPENSSL_1_1:' \
+ -i tools/podofosign/podofosign.cpp || die #663602
+ fi
+
+ # bug 620934 - Disable linking with cppunit when possible, since it
+ # triggers errors with some older compilers.
+ use test || sed -e 's:^FIND_PACKAGE(CppUnit):#\0:' -i CMakeLists.txt || die
+
+ # bug 556962
+ sed -i -e 's|Decrypt( pEncryptedBuffer, nOutputLen, pDecryptedBuffer, m_lLen );|Decrypt( pEncryptedBuffer, (pdf_long)nOutputLen, pDecryptedBuffer, (pdf_long\&)m_lLen );|' \
+ test/unit/EncryptTest.cpp || die
+
+ sed -i \
+ -e "s:LIBDIRNAME \"lib\":LIBDIRNAME \"$(get_libdir)\":" \
+ -e "s:LIBIDN_FOUND:HAVE_LIBIDN:g" \
+ CMakeLists.txt || die
+
+ # Use pkg-config to find headers for bug #459404.
+ sed_args=
+ for x in $($(tc-getPKG_CONFIG) --cflags freetype2) ; do
+ [[ ${x} == -I* ]] || continue
+ x=${x#-I}
+ if [[ -f ${x}/ft2build.h ]] ; then
+ sed_args+=" -e s:/usr/include/\\r\$:${x}:"
+ elif [[ -f ${x}/freetype/config/ftheader.h ]] ; then
+ sed_args+=" -e s:/usr/include/freetype2\\r\$:${x}:"
+ fi
+ done
+ [[ -n ${sed_args} ]] && \
+ { sed -i ${sed_args} cmake/modules/FindFREETYPE.cmake || die; }
+
+ # Bug #439784: Add missing unistd include for close() and unlink().
+ sed -i 's:^#include <stdio.h>$:#include <unistd.h>\n\0:' -i \
+ test/unit/TestUtils.cpp || die
+
+ # TODO: fix these test cases
+ # ColorTest.cpp:62:Assertion
+ # Test name: ColorTest::testDefaultConstructor
+ # expected exception not thrown
+ # - Expected: PdfError
+ sed -e 's:CPPUNIT_TEST( testDefaultConstructor ://\0:' \
+ -e 's:CPPUNIT_TEST( testGreyConstructor ://\0:' \
+ -e 's:CPPUNIT_TEST( testRGBConstructor ://\0:' \
+ -e 's:CPPUNIT_TEST( testCMYKConstructor ://\0:' \
+ -e 's:CPPUNIT_TEST( testColorSeparationAllConstructor ://\0:' \
+ -e 's:CPPUNIT_TEST( testColorSeparationNoneConstructor ://\0:' \
+ -e 's:CPPUNIT_TEST( testColorSeparationConstructor ://\0:' \
+ -e 's:CPPUNIT_TEST( testColorCieLabConstructor ://\0:' \
+ -i test/unit/ColorTest.h || die
+
+ # ColorTest.cpp:42:Assertion
+ # Test name: ColorTest::testHexNames
+ # assertion failed
+ # - Expression: static_cast<int>(rgb.GetGreen() * 255.0) == 0x0A
+ sed -e 's:CPPUNIT_TEST( testHexNames ://\0:' \
+ -i test/unit/ColorTest.h || die
+
+ # Bug #352125: test failure, depending on installed fonts
+ # ##Failure Location unknown## : Error
+ # Test name: FontTest::testFonts
+ # uncaught exception of type PoDoFo::PdfError
+ # - ePdfError_UnsupportedFontFormat
+ sed -e 's:CPPUNIT_TEST( testFonts ://\0:' \
+ -i test/unit/FontTest.h || die
+
+ # Test name: EncodingTest::testDifferencesEncoding
+ # equality assertion failed
+ # - Expected: 1
+ # - Actual : 0
+ sed -e 's:CPPUNIT_TEST( testDifferencesEncoding ://\0:' \
+ -i test/unit/EncodingTest.h || die
+
+ # Bug #407015: fix to compile with Lua 5.2+
+ case "${ELUA}" in
+ lua5-1|luajit)
+ ;;
+ *)
+ sed -e 's: lua_open(: luaL_newstate(:' \
+ -e 's: luaL_getn(: lua_rawlen(:' -i \
+ tools/podofocolor/luaconverter.cpp \
+ tools/podofoimpose/planreader_lua.cpp || die
+ ;;
+ esac
+}
+
+src_configure() {
+
+ # Bug #381359: undefined reference to `PoDoFo::PdfVariant::DelayedLoadImpl()'
+ filter-flags -fvisibility-inlines-hidden
+
+ mycmakeargs+=(
+ "-DPODOFO_BUILD_SHARED=1"
+ "-DPODOFO_HAVE_JPEG_LIB=1"
+ "-DPODOFO_HAVE_PNG_LIB=1"
+ "-DPODOFO_HAVE_TIFF_LIB=1"
+ "-DWANT_FONTCONFIG=1"
+ "-DUSE_STLPORT=0"
+ -DLUA_VERSION="$(lua_get_version)"
+ -DWANT_BOOST=$(usex boost ON OFF)
+ -DHAVE_LIBIDN=$(usex idn ON OFF)
+ -DPODOFO_HAVE_CPPUNIT=$(usex test ON OFF)
+ -DPODOFO_BUILD_LIB_ONLY=$(usex tools OFF ON)
+ )
+
+ cmake_src_configure
+ mkdir -p "${S}/test/TokenizerTest/objects" || die
+}
+
+src_test() {
+ cd "${BUILD_DIR}"/test/unit || die
+ ./podofo-test --selftest || die "self test failed"
+}
diff --git a/profiles/package.mask b/profiles/package.mask
index 75e5a55f428a..549f1b2c39dc 100644
--- a/profiles/package.mask
+++ b/profiles/package.mask
@@ -457,6 +457,7 @@ kde-apps/kdebase-meta:5
>=app-metrics/nginx-lua-prometheus-0.1_pre20170610-r100
>=app-misc/worker-3.8.3-r100
>=app-text/highlight-3.57-r100
+>=app-text/podofo-0.9.6_p20190928-r100
>=dev-db/redis-6.0.9-r100
>=dev-games/cegui-0.8.7-r100
>=dev-games/openscenegraph-3.6.5-r100